From cfe306ba1b7ec40855a300580b7981845d56edeb Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 13 Jul 2017 10:25:48 +0900 Subject: add aeb-mlink aeb-pro aebxmp graphicxsp annot-pro --- .../doc/latex/aeb-pro/examples/aebpro_ex1.pdf | Bin 0 -> 70199 bytes .../doc/latex/aeb-pro/examples/aebpro_ex1.tex | 430 +++++++++++++++++++ .../doc/latex/aeb-pro/examples/aebpro_ex2.pdf | Bin 0 -> 50752 bytes .../doc/latex/aeb-pro/examples/aebpro_ex2.tex | 232 ++++++++++ .../doc/latex/aeb-pro/examples/aebpro_ex3.pdf | Bin 0 -> 718560 bytes .../doc/latex/aeb-pro/examples/aebpro_ex3.tex | 361 ++++++++++++++++ .../doc/latex/aeb-pro/examples/aebpro_ex4.pdf | Bin 0 -> 124605 bytes .../doc/latex/aeb-pro/examples/aebpro_ex4.tex | 346 +++++++++++++++ .../doc/latex/aeb-pro/examples/aebpro_ex5.pdf | Bin 0 -> 256437 bytes .../doc/latex/aeb-pro/examples/aebpro_ex5.tex | 469 +++++++++++++++++++++ .../doc/latex/aeb-pro/examples/aebpro_ex6.pdf | Bin 0 -> 255216 bytes .../doc/latex/aeb-pro/examples/aebpro_ex6.tex | 150 +++++++ .../doc/latex/aeb-pro/examples/aebpro_ex7.pdf | Bin 0 -> 55695 bytes .../doc/latex/aeb-pro/examples/aebpro_ex7.tex | 161 +++++++ .../doc/latex/aeb-pro/examples/aebpro_ex8.pdf | Bin 0 -> 681851 bytes .../doc/latex/aeb-pro/examples/aebpro_ex8.tex | 218 ++++++++++ .../doc/latex/aeb-pro/examples/aebpro_index_ex.tex | 44 ++ .../doc/latex/aeb-pro/examples/children/explog.pdf | Bin 0 -> 49193 bytes .../latex/aeb-pro/examples/children/target1.pdf | Bin 0 -> 29562 bytes .../latex/aeb-pro/examples/children/target1.tex | 72 ++++ .../latex/aeb-pro/examples/children/target2.pdf | Bin 0 -> 24149 bytes .../latex/aeb-pro/examples/children/target2.tex | 43 ++ .../latex/aeb-pro/examples/children/theeuro.pdf | Bin 0 -> 43410 bytes .../doc/latex/aeb-pro/examples/extras.zip.txt | Bin 0 -> 434162 bytes .../doc/latex/aeb-pro/examples/myCoverPage.pdf | Bin 0 -> 9068 bytes .../doc/latex/aeb-pro/examples/myCoverPage.tex | 16 + .../doc/latex/aeb-pro/examples/test_install.pdf | Bin 0 -> 17732 bytes .../doc/latex/aeb-pro/examples/test_install.tex | 27 ++ 28 files changed, 2569 insertions(+) create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.tex create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.tex create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.tex create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.tex create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex7.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex7.tex create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.tex create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/aebpro_index_ex.tex create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/children/explog.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/children/target1.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/children/target1.tex create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/children/target2.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/children/target2.tex create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/children/theeuro.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/extras.zip.txt create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/myCoverPage.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/myCoverPage.tex create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/test_install.pdf create mode 100644 texmf-dist/doc/latex/aeb-pro/examples/test_install.tex (limited to 'texmf-dist/doc/latex/aeb-pro/examples') diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.pdf new file mode 100644 index 00000000..4af04e42 Binary files /dev/null and b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.pdf 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 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} diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.pdf new file mode 100644 index 00000000..5efa8728 Binary files /dev/null and b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.pdf differ diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.tex new file mode 100644 index 00000000..03557696 --- /dev/null +++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.tex @@ -0,0 +1,232 @@ +% use useacrobat option with pdftex and xetex if you have acrobat +% use nopro if you don't have acrobat +\documentclass{article} +\usepackage +[% +% useacrobat, +% nopro, + web={ + pro, + designiv, +% navibar, + tight, +% forcolorpaper, + centertitlepage, + usesf + }, + aebxmp +]{aeb_pro} + +\begin{comment} +Experiment with various combinations of \noSectionNumber, \forceSubSubNumbers, Commenting +and uncommenting the \selectDings data structure (for the toc). Comment and uncomment +the dings key-value pair for the layout sections data structure. +\end{comment} +\noSectionNumbers +%\forceSubSubNumbers + +\begin{comment} +\selectDings +{ + dDingToc=\ding{082}, + ddDingToc=\ding{079}, + dddDingToc=\ding{254} +} +\end{comment} + +\definecolor{orange}{rgb}{0.97,0.65,0.00} +\definecolor{indianbrown}{rgb}{0.35,0.24,0.11} + +\sectionLayout +{% + ding=\ding{082}, % This ding will appear when \noSectionNumbers is in effect, comment out to get no ding + indent=\prtscr{-\oddsidemargin}{0pt}, % Use \prtscr to have different values depending on for print or screen + halign=l, % align left, the default + color=\prtscr{webbrown}{red}, % text color of red + special=\prtscr{default}{shadow}, % shadow special effects + shadowcolor=blue % shadow color blue +} +\subsectionLayout{% + ding=\ding{079}, + indent=\prtscr{-.5\oddsidemargin}{0pt}, + halign=\prtscr{l}{c}, + color=red, + special=\prtscr{default}{fcolorbox} +} +\subsubsectionLayout{% + ding=$\bullet$, + halign=\prtscr{l}{r}, + color=indianbrown, + special=\prtscr{default}{fcolorboxfit}, + framecolor=red, + bgcolor=orange +} +\tocLayout +{% + ding=\ding{082}, + indent=\prtscr{-\oddsidemargin}{0pt}, + halign=\prtscr{l}{c}, + color=red, + shadowcolor=blue +} + +\DeclareDocInfo +{ + title=The AeB Pro Package + \texorpdfstring{\\[1ex]} + {: }Highlighting the \texttt{pro} option of Web, + 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:} + +\selectColors +{ + universityColor = blue, + titleColor = red, + authorColor = blue, + urlColor = webbrown, + linkColor = webgreen, + fileColor = webbrown +} + +\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} + + +\begin{document} + +\maketitle + +\tableofcontents + +\section{AeB Control Central} + +The AeB family of software, {\LaTeX} packages all, are for the most +part stand alone; however, usually they are used in combination with +each other, at least that is the purpose for which they were +originally designed. When several members of family AeB are used, +they should be loaded in the optimal order. With AeB Pro, you can +now list the members of the AeB family you wish to use, along with +their optional parameters you wish to use. + +\newtopic For example, + +\begin{sverbatim} +\usepackage[% + driver=dvips, + web={pro,designv,tight,nodirectory,centertitlepage,usesf}, + exerquiz={}, + ..., + aebxmp, +]{aeb_pro} +\end{sverbatim} +Yes, yes, I know this is not necessary, you can always load the +packages earlier than AeB Pro, but please, humor me. + +By default, the code for supporting features that require the use of +Distiller and Acrobat~Pro are included; there is a \texttt{nopro} option that excludes +these features. Use the \texttt{nopro} if you wish to use the AeB Control Center +to load the various members of the Acro\negthinspace\TeX{} family. + +\newtopic See the AeB Pro documentation for the list of supported options. + +\section{Document Information: + \texorpdfstring{\protect\cs{DeclareDocInfo}} + {\textbackslash DeclareDocInfo}} + +The \texttt{web} package and the \texttt{hyperref} package both have +several data strings used in the Description tab of the Document +Properties of a PDF document. Below is the \cs{DeclareDocInfo} +``data structure'', the meanings of the keys are clear. Some of the +keys are used in the Description tab of the PDF document, others are +used in the title page, while others true play a dual role. + +\begin{sverbatim} +\DeclareDocInfo{ + title=The AeB Pro Package + \texorpdfstring{\\[1ex]} + {: }Highlighting the \texttt{pro} option of Web, + 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 +} +\end{sverbatim} +The last three keys are particular to the \textsf{aebxmp} package, +which has been input into this document. These three keys populate +the Advanced Metadata dialog box; Acrobat~8 Pro is required for +\textsf{aebxmp} package to work correctly. + +\newtopic See the AeB Pro documentation for a detailed description of \cs{DeclareDoc\-In\-fo} +and the \textsf{aebxmp} package documentation. + +\section{Control over Headings} + +The \texttt{pro} option of web introduces the use of the xkeyval package and with it comes a +complex choice for setting up your section headings and various elements of your title page. + +\subsection{Designing your Section Headings} + +When the \texttt{pro} option of the \textsf{web} package is used, the commands +\cs{section\-Layout}, \cs{sub\-section\-Layout} and \cs{subsubsectionLayout} become available. +Look in the preamble of this document, there, I've set the look of the format of each of these +three section levels. My design choices are meant to illustrate the variety of choices you have, +I myself have no sense of color, or design, for that matter. + +The normal setting is to show section numbers, when you execute \cs{no\-Section\-Numbers} in the preamble, +obviously, no section numbers will be shown. (Useful for presentations, with no cross-references.) If +you specify a value for the \texttt{ding} key, then a ding appears where the section number was. + +When showing section numbers, the default, one of the famous features of the \textsf{web} package was to have +a bullet for the subsubsection heading, rather than the subsubsection number. By executing +\cs{forceSubSubNumbers} in the preamble, you force the appearance of the subsubsection numbers. To get +the appearance of these numbers in the table of contents, use the \texttt{latextoc} option of \textsf{web}. + +The commands can be placed in the preamble or anywhere. They take +effect at the next encountered section that is applicable. + +\subsection{Designing your Initial Pages} + +The same mechanism used for the formatting of the section headings is also used for the +title page and the table of contents. + +\subsubsection{The Title Page} + +Certain components of the title page can be controlled using the same mechanism as the +section headings. Corresponding to the university, the title and the author are +\cs{universityLayout}, \cs{titleLayout} and \cs{authorLayout}. These three have the same key-value +pairs as the section layout commands, but they do now obey the \texttt{ding} key. + +\newtopic See \texttt{aebpro\_titlepg.tex} for an interesting illustration of the key-values +of the layout for the title page. + +\subsubsection{The Table of Contents} + +The \cs{tocLayout} command is like the layout commands on the title page, it does not obey the +\texttt{ding} key. With it you can adjust color of the text and horizontal positioning. Special +effects can also be specified. + +When \cs{noPageNumbers} is in effect, you can specify the values of the \cs{selectDings} structure +to have dings showing up in the table of contents listing. These dings may or may not match the dings +of the section labeling. Specifying no ding for a particular section level displays no ding for that +toc entry. + +\end{document} diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdf new file mode 100644 index 00000000..2787301a Binary files /dev/null and b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdf 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 new file mode 100644 index 00000000..c20a15e0 --- /dev/null +++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.tex @@ -0,0 +1,361 @@ +% Acrobat required +% use useacrobat option with pdftex and xetex if you have acrobat +\documentclass{article} +\usepackage{graphicx,fancyvrb} +\usepackage[% + web={ + pro, + designv, + tight, +% forcolorpaper, % uncomment to get doc for paper + centertitlepage, + usesf + }, + eforms, +% +% Attach source file, and the tex log (I've 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 + attachsource={tex,log,tex.log}, +% +% Just for laughs, let's include Robot Man. +% + attachments={extras.zip.txt, ../extras/robot_man.pdf}, + aebxmp, +]{aeb_pro} + +\DeclareDocInfo +{ + title=The AeB Pro Package\texorpdfstring{\\[1ex]}{: }Attachments and Doc Assembly, + 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=http://www.acrotex.net, + talkdate={January 12, 2007}, + version=1.0, + copyrightStatus=True, + copyrightNotice={Copyright (C) \the\year, D. P. Story}, + copyrightInfoURL=http://www.acrotex.net +} +\DeclareInitView{layoutmag={navitab=UseAttachments},windowoptions=fit} + +\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,"/"); +var myPath=this.path.substring(0,pos); +try { +\addWatermarkFromFile({ + bOnTop:false, + cDIPath:myPath+"../extras/Manual_BG_Print_AeB.pdf" +}); } catch(e) { console.println(e.toString()) }; +try { + \importSound({cName: "StarTrek", cDIPath: "../extras/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"}); + var f = this.getField("cheesySound"); + f.buttonPosition = position.iconOnly; + var oIcon = this.getIcon("logo"); + f.buttonSetIcon(oIcon,0); + oIcon = this.getIcon("logopush"); + f.buttonSetIcon(oIcon,1); + 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){} +\end{docassembly} +\end{forpaper} +\begin{forscreen} +\begin{docassembly} +var pos=this.path.indexOf(this.documentFileName); +var myPath=this.path.substring(0,pos); +try { + \addWatermarkFromFile({ + bOnTop:false, + cDIPath:myPath+"../extras/Manual_BG_DesignV_AeB.pdf" + }); +} catch(e) { console.println(e.toString()) }; +try { + \importSound({cName: "StarTrek", cDIPath: "../extras/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"}); + var f = this.getField("cheesySound"); + f.buttonPosition = position.iconOnly; + var oIcon = this.getIcon("logo"); + f.buttonSetIcon(oIcon,0); + oIcon = this.getIcon("logopush"); + f.buttonSetIcon(oIcon,1); + 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){} +\end{docassembly} +\end{forscreen} + +\begin{document} + +\maketitle + +\tableofcontents + +\section{Introduction} + +AeB Pro has two options for attaching files to the source PDF. The +approach is the \texttt{import\-Data\-Object} JavaScript method in +conjunction with the FDF techniques. + +Also in this sample file, doc assembly techniques are also +demonstrated.\footnote{The attachments feature uses doc assembly +methods, but simplified for user convenience.} + +\section{Attaching Files with AeB Pro} + +There are two options for attaching files +\begin{enumerate} + \item \texttt{attachsource} is a simplified option for attaching + any file of the form \cs{jobname.}\texttt{\textsl{ext}}. + + \item \texttt{attachments} is a general option for attaching a + file, as specified by its absolute or relative path. +\end{enumerate} + +\subsection{The \texttt{attachsource} option} + +Use this option to attach a file with the same base name as \cs{jobname}. + +\begin{Verbatim} + \usepackage[% + driver=dvips, + web={pro,usesf,...}, + attachsource={tex,dvi,log,tex.log}, + ... + ]{aeb_pro} +\end{Verbatim} +Simply list the extensions you wish to attach to the current +document. In the example above, we attach the original source file +\cs{jobname.tex}, \cs{jobname.dvi}, \cs{jobname.log} (the distiller +log) and \cs{jobname.tex.log} (the tex log). + + +\newtopic One problem with attaching the log file is that the distiller also +produces a log file with the same name \cs{jobname.log}. +Consequently, the log file for the tex file is overwritten by the +distiller log file. You'll see from the PDF document, that the log +file attached is the one for the distiller. + +A work around for this is to latex your file, rename the +log file to another extension, such as \cs{jobname.tex.log}, then +distill. + +\subsection{The \texttt{attachments} option} + +The \texttt{attachments} key is for attaching files other than ones +associated with the source file. The value of this key is a +comma-delimited list (enclosed in braces) of absolute paths and/or +relative paths to the file required to attach. For example, + +\begin{Verbatim} +\usepackage[% + driver=dvips, + web={pro,usesf,...}, + attachments={extras.zip.txt,../extras/robot_man.pdf, + /C/Documents and Settings/dps/My Documents/My Pictures/birthday17.jpg}, + ... +]{aeb_pro} +\end{Verbatim} +The first and second references are relative to the folder containing this +source file, and third one is an example of an absolute path +(picture not attached). + +\newtopic There are some files that Acrobat does not attach, but +there is no public list of these. One finds them by discovery, +\texttt{.exe} and \texttt{.zip} files, for example. + +A trick that I use to send \texttt{.zip} files through the email +(they are often stripped away by mail servers) is to \emph{hide} the +\texttt{.zip} file in a PDF as an attachment. But since Acrobat does +not attach \texttt{.zip}, I change the extension from \texttt{.zip} +to \texttt{zip.txt}, then inform the recipient to save the +\texttt{zip.txt} file and change the extension back to \texttt{.zip}. +Swave! + +\section{Doc Assembly} + +Ahhhh, document assembly. What can be said? This is a method that I +have used for many years and is incorporated into the +\textsf{insdljs} package under the name of \texttt{execJS}. Whereas +the \texttt{execJS} environment is still available to you, I've +simplified things. The term doc assembly refers to the use of the +\texttt{docassembly} environment (which is just an \texttt{execJS} +environment). + +The \texttt{execJS}/\texttt{docassembly} environments create an FDF +file with the various JavaScript commands that were contained in the +body of the environment. These environments also place in open page +action so that when the PDF is opened for the first time in Acrobat +Pro, the FDF file will be imported and the JS will be executed one +time and then discarded, see \cite{TUG:execJS} for an article on this topic. +This technique only works if you have Acrobat Pro. + +In addition to the \texttt{docassembly} environment, AeB Pro also +has several macros that expand to JavaScript methods that I find +useful. These are +\begin{enumerate} + \item \cs{addWatermarkFromFile}: inserts a background into the PDF + + \item \cs{importIcon}: imports icon files\footnote{The + AcroMemory package uses these environments and functions to + import icons.} + + \item \cs{importSound}: imports a sound file + + \item \cs{appopenDoc}: opens a document + + \item \cs{insertPages}: inserts pages into the PDF, useful for + inserting pages of difference sizes, such as tables or figures, + into a {\LaTeX} document which requires that all page be of a + fixed size. + + \item \cs{importDataObject}: Attaches a file to the PDF. This + function is used in the two attachments options of AeB Pro. +\end{enumerate} +See the AeB Pro documentation for details. Here, in this demo file, +I present the code in the preamble of this document: +\begin{Verbatim} +var pos=this.path.indexOf(this.documentFileName); +var myPath=this.path.substring(0,pos); +\begin{docassembly} +\addWatermarkFromFile({ + bOnTop:false, + cDIPath:myPath+"../extras/Manual_BG_Print_AeB.pdf" +}); +\end{docassembly} +\end{Verbatim} +It is \emph{very important} to note that the arguments for this +(pseudo-JS method) are enclosed in matching parentheses/braces +combination, i.e., \verb!({!\dots\verb!})!. The arguments are +key-value pairs separated by a colon, and the parameters themselves +are separated by commas. (The argument is actually an +object-literal). It is \emph{extremely important} to have the left +parenthesis/brace pair, \verb!({!, immediately follow the function +name. This is because the environment is a partial-verbatim +environment: \verb!\! is still the escape, but left and right braces +have been ``sanitized''. The commands, like +\cs{addWatermarkFromFile} first gobble up the next two tokens, and +re-inserts \verb!({! in a different location. (See the +\textsf{aeb\_pro.dtx} for the definitions.) + +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}} +\newtopic\pushButton[\S{S}\W{0}\A{\JS{% + var s = this.getSound("StarTrek");\r + s.play(); +}}]{cheesySound}{\the\wd0 }{\the\ht0 } +\end{center} + +\begin{Verbatim} +\begin{docassembly} +try { + \addWatermarkFromFile({ + bOnTop:false, + cDIPath:myPath+"../extras/Manual_BG_DesignV_AeB.pdf" + }); +} catch(e) { console.println(e.toString()) }; +try { + \importSound({cName: "StarTrek", cDIPath: "../extras/trek.wav" }); +} catch(e) { console.println(e.toString()) }; +\end{docassembly} +\end{Verbatim} +Above is the full verbatim listing of the \texttt{docassembly} +environment that will execute for the screen. You'll note the +\cs{importSound} command, which imports the sound file +\texttt{trek.wav}. I've also enclosed the individual commands in a +\texttt{try/catch} construct. Doing so is very useful for debugging +the script. + +One last little demonstration of the doc assembly methods. In the +preamble, I've imported a few AeB logos (forgive me) and placed them +as appearance faces for the button above. Below is a listing of the +code, with some comments added. + +\begin{Verbatim}[fontsize=\small] +\begin{docassembly} +... +... +// 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"}); +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 +f.buttonSetIcon(oIcon,0); // assign it as the default appearance +oIcon = this.getIcon("logopush"); // get the "logopush" icon +f.buttonSetIcon(oIcon,1); // assign it as the down appearance +oIcon = this.getIcon("logorollover"); // get the "logorollover" icon +f.buttonSetIcon(oIcon,2); // assign it as the rollover appearance +\end{docassembly} +\end{Verbatim} +The result is the button you see above. + +\newtopic As a final example of \texttt{docassembly} usage, rather +than using the attachments options of AeB Pro, you can also attach +your own files using the \texttt{docassembly} environment. +\begin{Verbatim}[fontsize=\small] +\begin{docassembly} +... +... +try { + \importDataObject({cName: "AeB Pro Example #2",cDIPath: "aebpro_ex2.pdf"}); +} catch(e){} +\end{docassembly} +\end{Verbatim} +The attachments options automatically assign names. These names appear in the Description column of the attachments +tab of Acrobat/Reader. For file attached using the \texttt{attachsource}, the base name plus extension is used, for +the files specified by the \texttt{attachments} key, the names are given sequentially, \texttt{"AeB Attachment 1"}, +\texttt{"AeB Attachment 2"} and so on. When you roll your own, the description can be more aptly chosen. + +\newtopic I have found many uses for the \texttt{execJS} +environment, or the simplified \texttt{docassembly} environment. +You are only limited by your imagination, and knowledge of +JavaScript for Acrobat. + + +\newpage +\markright{References} + +\begin{thebibliography}{[1]}\label{references} +\addcontentsline{toc}{section}{\protect\numberline{}References} + +\bibitem{TUG:execJS} ``\texttt{execJS}: A new technique for introducing discardable +JavaScript into a PDF from a \LaTeX{} source,'' TUG\textsc{boat}, The +Communications of the \TeX{} User Group, Vol.~22, No.~4, pp.\ +265-268 (2001). + +\end{thebibliography} + + + +\end{document} + +\importDataObject({cName: "\myEmbeddedFile",cDIPath: "aebpro_ex2.pdf"}); diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.pdf new file mode 100644 index 00000000..d43072a7 Binary files /dev/null and b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.pdf differ diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex new file mode 100644 index 00000000..81c83709 --- /dev/null +++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex @@ -0,0 +1,346 @@ +% dvips/Distiller workflow only +\documentclass{article} +\usepackage{amsmath} +\usepackage[% + web={ + pro, + designv, + tight, +% forcolorpaper, + centertitlepage, + dvipsnames, + usesf + }, + uselayers, + eforms, + aebxmp, +]{aeb_pro} +\usepackage{graphicx} +\usepackage[nomessages]{fp} +% +% The versions of pstricks-add and pstricks should be +% fairly recent. +% +\usepackage{pstricks-add} +\usepackage[absolute,overlay]{textpos} + +\DeclareDocInfo +{ + title=The AeB Pro Package\texorpdfstring{\\[1ex]}{: }Layers and Rollovers, + 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=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} +\def\AcroTeX{Acro\negthinspace\TeX} + +\begin{document} + +\maketitle + +\section{Layers} + +When the \texttt{uselayers} option is taken, the necessary code is +input to produce layers (Optional Content Groups). The +\textcolor{blue}{{\AcroTeX} Presentation Bundle} (APB), which has a +very sophisticated method of control over layers, by comparison, the +\textcolor{blue}{AeB Pro} layer support is very primitive indeed. As +a rule, after you create a layer, you will need a control of that +layer. This could be a button or a link that executes JavaScript. + +The basic command for creating a layer is \cs{xBld}. The content of +the layer is set off by the \cs{xBld}/\cs{eBld} pair. The command +\cs{xBld} takes two parameters: (1) the first is optional, +\texttt{true} if the layer is initially visible or \texttt{false}, +the default, if the layer is hidden initially; (2) the name of the +layer, this is used to reference the layer, to make it visible or +hidden. + +The creation and control of layers are illustrated in the two +subsequent sections. + +\newtopic When constructing a layer, there are two possible scenarios: +\begin{enumerate} + \item The layer takes up ``tex'' space + \item The layer does not take up ``tex'' space +\end{enumerate} +Let's look at each of these in turn. + +\subsection{Layer takes up space} + +A layer that takes up space in tex is the easiest case. For +example, guess what I'm thinking thinking about: I'm thinking about +my formerly favorite number, \xBld{mythoughts}the number is the +value of the integral $\int_0^4 4x + \frac14\,dx$. \eBld Want a +hint? \setLink[% +\A{\JS{% + var oLayer = getxBld("mythoughts"); + if ( oLayer != null ) + oLayer.state = !oLayer.state; + }} +]{\textcolor{red}{Click here}} I hope that hint worked for you. +Click on the link to hide the layer again. + +\newtopic For those viewing this document in PDF, the relevant code +code is seen below. + +First the layer is enclosed in a \cs{xBld}/\cs{eBld} pair, the +default state is hidden, so we don't supply the optional parameter. +The require (second) parameter is the name used to refer to the +layer. + +The link text has a JavaScript action. First we get the OCG object +for this layer by calling the \texttt{getxBld} function (this is +part of the AeB Pro JavaScript) then if non-null (you may not have +spelled the name correctly) we toggle the current state, +\texttt{oLayer.state = !oLayer.state}. +\begin{sverbatim} +\xBld{mythoughts}the number is the value of the integral +$\int_0^4 4x + \frac14\,dx$. \eBld Want a hint? +\setLink[\A{\JS{% + var oLayer = getxBld("mythoughts"); + if ( oLayer != null ) + oLayer.state = !oLayer.state; + }} +]{\textcolor{red}{Click here}} +\end{sverbatim} + +An advantage of the layers approach is that the content of the +layers are latexed as part of the content of the tex file; +consequently, you can include virtually anything in your layer that +tex can handle, math, figures, PSTricks, etc. Acrobat Pro 7.0 (and +distiller) or later is required to build the layers, but only Adobe +Reader 7.0 or later is needed to view the document, once +constructed. + +\NewPage +\subsection{Layer takes no space}\label{nospace} + +Perhaps the easiest way of creating layers that do not take up any tex space is to use a +package such as \textsf{textpos}. In the preamble of this document, I've placed the following +command: + +\begin{sverbatim} +\usepackage{pstricks-add,pstricks} +\usepackage[absolute,overlay]{textpos} +\end{sverbatim} + +\begin{textblock*}{.67\linewidth}[.5,.5](.5\paperwidth,.5\paperheight) +\xBld{crossinggraphcs}\psshadowbox[framesep=0pt]{\fcolorbox{red}{cornsilk}{% +\parbox{\linewidth} +{% +\begin{center} +\begin{pspicture}(-0.5,-1,0)(7,5) + \pscustom[linewidth=1pt,fillstyle=hlines,hatchcolor=red]{ + \psplot[linewidth=1pt]{2}{5}{% + x x mul neg x 6 mul add 5 sub} + \psplot[linewidth=1pt]{5}{2}{% + x x mul neg 3 div x 4 mul 3 div add 5 3 div add} + } + \pscustom[linewidth=1pt,fillstyle=vlines,hatchcolor=blue]{ + \psline(0,1.666667) + \psplot[linewidth=1pt]{0}{2}{% + x x mul neg 3 div x 4 mul 3 div add 5 3 div add} + \psplot[linewidth=1pt]{2}{1}{% + x x mul neg x 6 mul add 5 sub} + } + \psaxes{->}(0,0)(-0.5,-0.5)(7,5) + \uput[-90](7,0){$x$} + \uput[0](0,5){$y$} + \psplot[linewidth=1pt]{0.75}{5.25}{% + x x mul neg x 6 mul add 5 sub} + \psplot[linewidth=1pt]{0}{5.25}{% + x x mul neg 3 div x 4 mul 3 div add 5 3 div add} + \rput(5,2){$f$} + \rput(3,2){$g$} +\end{pspicture} +\end{center} +}}}\eBld +\end{textblock*} + +Now we can create a layer that takes up no space, but is overlaid on top of the tex content. +We use the \textsf{textpos} commands to place the layer. Once created and placed, we must +have a way of showing it and hiding it. This time, we'll use a button: +\pushButton[ + \CA{Push} +\A{\JS{% + toggleSetThisLayer("crossinggraphcs"); +}}]{crossinggraphcsBtn}{}{12bp} + +\newtopic As you can see from this example, you must be very careful in the placement of your +layers vis-\`{a}-vis the button. Form fields are laid on top of +content, and a layer is considered part of the content. This particular layer could be move to the +upper left corner, for example, Let's see how a link works, shall we? \setLink[% +\A{\JS{% + toggleSetThisLayer("crossinggraphcs"); +}}]{\textcolor{red}{Click here}}! The link is active even through the layer, you just have to find it! +I could have set this link to that it has a visible bounding box, in which case the border of the +bounding box shows through the layer, but hey, at least you can find the link! + +One thing you need to keep in mind is the placement of the code, +within the \texttt{textblock} environment. The overlaid material +will appear on whatever page the \texttt{textblock} ends up on. +Should you add more material before the \texttt{textblock}, the +controls may drop off to the next page. When the user presses the +control, nothing happens, actually, the layer is appearing on the previous page. +Sometimes it makes sense to insert a \cs{newpage} to ensure the proper placement +of the overlay relative to the placement of the controls. + +\NewPage % this is \newpage when for screen, does nothing when forpaper, defined in web + +\defineRC{help1} +{% +\psset{llx=-12pt, lly=-12pt,urx =12pt,ury =12pt,xAxisLabel=$x$,yAxisLabel=$y$} +\begin{psgraph*}[arrows=->,trigLabels=true,trigLabelBase=2,dx=\psPiH](0,0)(-.5,-1.5)(6.75,1.5){.75\linewidth}{.25\linewidth} + \psset{algebraic=true}% + \rput(4,1){$y=\sin(x)$}% + \psplot[linecolor=blue]{0}{TwoPi}{sin(x)} +\end{psgraph*} +} + +\begin{rollover} +\begin{textblock*}{.4\linewidth}[.5,.5](.5\paperwidth,.5\paperheight) +\xBld{help1}\psshadowbox[framesep=0pt]{\fcolorbox{red}{cornsilk}{% +\parbox{\linewidth}{\insertRC{help1}}}}\eBld +\end{textblock*} +\end{rollover} +\begin{printRollover} +\definePR{help1}{\parbox{.4\linewidth}{\insertRC{help1}}}\insertPR{help1} +\end{printRollover} + +\section{Rollovers} + +The AeB Pro package offers you two rollovers, which ostensibly provides +help to the document consumer. + +\subsection{\texorpdfstring{\protect\cs{texHelp}}{\textbackslash{texHelp}} uses Layers} + +The rollover is a special case of the techniques discussed in +\hyperref[nospace]{section~\ref*{nospace}}. For a rollover, you +create a form field, enclosing a word, when the user rolls across +the word, a help box opens. For example, recall the graph of the +\texHelp{help1}{$\sin(x)$,} isn't it pretty? Try rolling over the +word that is tagged with the `\texHelpIndicator{}' symbol. + +You will have to look at the source file to see what goes on here, +suffice it to say that the command \cs{texHelp} was used to create +the rollover, the symbol that appears is defined in the +\textsf{aeb\_pro} package by \cs{texHelpIndicator}, this command can +be re-defined to have a different symbol. + +\subsection{\texorpdfstring{\protect\cs{pdfHelp}}{\textbackslash pdfHelp} does not} + +There is another type of rollover, \cs{pdfHelp}. The command takes three arguments, +the first one is the name of the button field that is enclose around the third argument, +the second argument is the help text. The help text is not part of the {\LaTeX} content +of the document is is not compiled by the {\TeX} compiler, so it should be text. For example, +can you remember the inventor of \pdfHelp{knuth}{Donald Knuth}{\TeX?} + +As with \cs{texHelp}, the symbol that tags the word as a help word +is defined in \textsf{aeb\_pro.dtx} by the command +\cs{pdf\-Help\-Indicator}. This command can be re-defined as needed. + +\section{Layers and Animation} + +Let's see if we can conjure up a little animation, shall we? + +\noindent\begin{minipage}{.65\linewidth}\centering +\DeclareAnime{sinegraph}{10}{40} +\def\thisframe{\animeBld\psplot[linecolor=red]{0}{\xi}{sin(x)}\eBld} +\psset{llx =-12pt,lly=-12pt,urx =12pt,ury =12pt} % ,trigLabels=true,labelFontSize=\small +\begin{psgraph*}[arrows=->,trigLabels=true,trigLabelBase=2,dx=\psPiH](0,0)(-.5,-1.5)(6.75,1.5){164pt}{70pt} + \psset{algebraic=true}% + \rput(4,1){$y=\sin(x)$} + \FPdiv{\myDelta}{\psPiTwo}{\nFrames}% + \def\xi{0}% + \multido{\i=1+1}{\nFrames}{\FPadd{\xi}{\xi}{\myDelta}\thisframe} +\end{psgraph*} +\end{minipage}\hfill +\begin{minipage}{.3\linewidth}%\centering +\backAnimeBtn{24bp}{12bp}\kern1bp\clearAnimeBtn{24bp}{12bp}\kern1bp\forwardAnimeBtn{24bp}{12bp} +\end{minipage} + +\newtopic It is possible to combine the techniques of +\hyperref[nospace]{section~\ref*{nospace}} with those of animation, to create +an anime that pops up. We leave this as an exercise for the reader, that's you. + +\NewPage + +\newtopic\xBld{dialog1}This page illustrates how you can create a series of +steps, all controlled by a button. \eBld\xBld{dialog2}Let us begin by +drawing the $\sin(x)$ curve. \eBld\xBld{dialog3}Do you think that I can do it? +\eBld\xBld{dialog4} Well, here goes!\eBld + +\begin{center} +\DeclareAnime{graph}{10}{40} +\def\frame{\animeBld\psplot[linecolor=red]{0}{\xi}{sin(x)}\eBld} +\psset{llx=-12pt, lly=-12pt,urx =12pt,ury =12pt,xAxisLabel=$x$,yAxisLabel=$y$} +\begin{psgraph*}[arrows=->,trigLabels=true,trigLabelBase=2,dx=\psPiH](0,0)(-.5,-1.5)(6.75,1.5){.5\linewidth}{.25\linewidth} + \psset{algebraic=true}% + \rput(4,1){$y=\sin(x)$}% + \FPdiv{\myDelta}{\psPiTwo}{\nFrames}% + \def\xi{0}% + \multido{\i=1+1}{\nFrames}{\FPadd{\xi}{\xi}{\myDelta}\frame} + \xBld{step1}\psplot[linecolor=blue]{0}{Pi 2 div}{sin(x)}\eBld + \xBld{step2}\psplot[linecolor=webgreen]{Pi 2 div}{Pi}{sin(x)}\eBld + \xBld{step3}\psplot[linecolor=Plum]{Pi}{3 Pi mul 2 div}{sin(x)}\eBld + \xBld{step4}\psplot[linecolor=yellow]{3 Pi mul 2 div}{TwoPi}{sin(x)}\eBld +\end{psgraph*} +\end{center} + +\newtopic\xBld{step1}Notice that the function increases from $[\,0, \pi/2\,]$ +and attains it maximum value of $1$ at $ x = \pi/2$. \eBld\xBld{step2}The +sine function then decreases to zero over the interval $[\,\pi/2, \pi\,]$. +\eBld \xBld{step3}Continuing its sinusoidal path it decreases on the +interval $[\,\pi,3\pi/2\,]$ down to its minimum value of $-1$ at $ x = +3\pi/2$. \eBld \xBld{step4}Finally, it increases up to $0$ over the +interval $[\,3\pi/2, 2\pi\,]$ completing the first cycle of its +graph.\eBld + +\newtopic\xBld{wrapup}Try \texttt{shift-click} too. dps\eBld + +\begin{defineJS}[\catcode`*=0]{\stepwise} +if ( typeof stepcounter == "undefined" ) stepcounter = 0; +if ( !event.shift ) stepcounter++; +if ( stepcounter > 10 ) stepcounter = 11; +if ( stepcounter < 1 ) stepcounter = 0; +switch (stepcounter) +{ + case 1: toggleSetThisLayer("dialog1", !event.shift); break; + case 2: toggleSetThisLayer("dialog2", !event.shift); break; + case 3: toggleSetThisLayer("dialog3", !event.shift); break; + case 4: toggleSetThisLayer("dialog4", !event.shift); break; + case 5: if (event.shift) aebAnimeLayersBackward(*animSpeed,*nFrames,"*animBaseName"); + else aebAnimeLayersForward(*animSpeed,*nFrames,"*animBaseName"); + break; + case 6: toggleSetThisLayer("step1", !event.shift); break; + case 7: toggleSetThisLayer("step2", !event.shift); break; + case 8: toggleSetThisLayer("step3", !event.shift); break; + case 9: toggleSetThisLayer("step4", !event.shift); break; + case 10: toggleSetThisLayer("wrapup",!event.shift); break; + default: +} +if ( event.shift ) stepcounter--; +\end{defineJS} + +\medskip +\begin{center} + \pushButton[\CA{Step Through}\TU{Step Through}\A{\JS{\stepwise}}]% + {stepthru}{}{12bp} +\end{center} + + +\end{document} diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.pdf new file mode 100644 index 00000000..012a8932 Binary files /dev/null and b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.pdf differ diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.tex new file mode 100644 index 00000000..f155d89b --- /dev/null +++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.tex @@ -0,0 +1,469 @@ +% Acrobat required +% use useacrobat option with pdftex and xetex if you have acrobat +% ---------------- +% +% Instructions for compiling this file +% 1. Compile this file once, but do not make into a PDF yet. +% 2. Open the two files children/target1.tex and children/target2.tex +% and compile these two files several times to resolve the cross- +% references. Now, make into PDFs. +% 3. Return to this file and compile again to input cross-reference info +% and make into a PDF via distiller. +% +\documentclass{article} +\usepackage{xr-hyper} +\usepackage[% +% driver=dvips, + gopro, + web={designiv,usesf,tight}, + attachsource={tex,dvi}, + attachments={% + children/target1.pdf,% % AeB Attachment #1 + children/target2.pdf,% % AeB Attachment #2 + ../extras/aest.xls % AeB Attachment #3 + }, + linktoattachments, + eforms +]{aeb_pro} + +\externaldocument[target1-]{children/target1} + +\DeclareDocInfo +{ + title=The AeB Pro Package\texorpdfstring{\\[1ex]}{: }Linking to Attachments, + 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=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 +\par\vskip6pt\noindent} +\def\aftersverbskip{\noindent} +\newenvironment{sverbatim} +{\par\small\verbatim} +{\endverbatim\par\aftergroup\aftersverbskip} +\newenvironment{ssverbatim} +{\par\footnotesize\verbatim} +{\endverbatim\par\aftergroup\aftersverbskip} +\def\AcroTeX{Acro\negthinspace\TeX} + +%\autolabelNum{AeST}{3} +%\autolabelNum{cooltarget}{3} +%\autolabelNum{attach1}{1} +%\autolabelNum{attach2}{2} +% +% \autolabelNum[mytarget]{1} +% \autolabelNum*[mytarget]{1}{New Title} +% \autolabelNum*[AeST]{3}{\u0022$|e^\u007B\u005Cln(17)\u007D|$\u0022 beep} +% \labelName{cooltarget}{\u0022$|e^\u007B\u005Cln(17)\u007D|$\u0022} +\begin{attachmentNames} +\autolabelNum{1} +%\autolabelNum{2} +\autolabelNum*{2}{target2.pdf Attachment File} +\autolabelNum*[AeST]{3}{AeBST Components} +\labelName{cooltarget}{My (cool) $|x^3|$ ~ % ''} +\end{attachmentNames} +% The use of \importDataObject should occur after the \texttt{attachmentNames} environment. +%\def\u{\string\\u}% +\begin{docassembly} +var retn=\importDataObject({cName: "cooltarget",cDIPath: "aebpro_ex2.pdf"}); +if ( (app.viewerVersion>7) && retn ) + this.getDataObject("cooltarget").description="\aref(cooltarget)"; +\end{docassembly} + +\def\preseti{bordercolor={0 0 1},highlight=outline,border=visible,linestyle=dashed,open=new} + +\begin{document} + +\maketitle + +\tableofcontents + +\section{Introduction} + +As we saw briefly in \texttt{aebpro\_ex3.tex}, it is possible to +attach a document using the \texttt{docassembly} environment, as +illustrated below, +\begin{sverbatim} + \begin{docassembly} + \importDataObject({ + cName: "cooltarget", + cDIPath: "aebpro_ex2.pdf" + }); + \end{docassembly} +\end{sverbatim} +In the above, we use \cs{importDataObject}, set the path to be +\texttt{cDIPath: "aebpro\_ex2.pdf"} (this can be absolute or +relative), and give the attachment a name with \texttt{cName:} +\texttt{"\cs{aref(cooltarget)}"}. The special command \cs{aref}, is +used to reference the assigned name has as its argument the label +name, \emph{delimited by parentheses}. + +The parameter \texttt{cName} in the above \texttt{docassembly} code +is of particular importance. The value of \texttt{cName} is used in +the names tree for embedded files. It is used to reference the +attachment in the link code. After the file is imported, the value +of \texttt{cName} is converted by Acrobat to Unicode. When +referencing it, you must know the unicode of the value of the +\texttt{cName} key. + +First, we insert into the preamble, the \texttt{linktoattachments} option. +This brings in all the code and commands to be discussed in this document. +(See the preamble of this file.) + +\section{Naming Attachments} + +For documents attached by the \texttt{attachments} option, AeB Pro +assigns them ``names,'' which appear in the attachments tab of +Acrobat/Reader as the Description.\footnote{The Description is +important as it is the way embedded files are referenced +internally.} The names assigned are \texttt{AeB Attachment 1}, +\texttt{AeB Attachment 2}, \texttt{AeB Attachment 3}, and so on. +If you embedded the file using the \texttt{docassem\-bly} environment +and the \cs{importDataObject} method, then you are free to assign a +name of your preference. However it is done, the names must be +converted to unicode on the {\TeX} side of things to set up the +links, and there must be a \LaTeX-like way of referencing this +unicode name, hence the development of the \texttt{attachmentNames} +environment and the two commands \cs{autolabelNum} and +\cs{labelName}.\footnote{It is important to note that +these are not needed unless you are linking to the embedded +files.} + +We describe these by example. In the preamble you will find +\begin{sverbatim} + \begin{attachmentNames} + \autolabelNum{1} + \autolabelNum*{2}{target2.pdf Attachment File} + \autolabelNum*[AeST]{3}{AeBST Components} + \labelName{cooltarget}{My (cool) $|x^3|$ ~ % ''} + \end{attachmentNames} +\end{sverbatim} +\textbf{\color{red}Note:} The \texttt{attachmentNames} environment +and the commands \cs{autolabel\-Num} and \cs{labelName} should be +used only in the parent document; for child documents they are not +necessary. + +\begin{description} + +\item[\cs{autolabelNum}:] For PDFs (or other files) embedded using the +\texttt{attachments} option, use the \cs{autolabelNum} command. The +syntax is +\begin{verbatim} + \autolabelNum[