diff options
author | Norbert Preining <norbert@preining.info> | 2020-07-10 03:02:35 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-07-10 03:02:35 +0000 |
commit | b3cf6973881fee79b4abb0be96dcfd5330bfeeea (patch) | |
tree | 43938d7ef0bdc8d688f2ed5fef9b92cde2da9607 /macros/latex/contrib/fitr/docs/fitr_man.tex | |
parent | 36846a866c020aa9369708b527a1297fcd5215f9 (diff) |
CTAN sync 202007100302
Diffstat (limited to 'macros/latex/contrib/fitr/docs/fitr_man.tex')
-rw-r--r-- | macros/latex/contrib/fitr/docs/fitr_man.tex | 721 |
1 files changed, 721 insertions, 0 deletions
diff --git a/macros/latex/contrib/fitr/docs/fitr_man.tex b/macros/latex/contrib/fitr/docs/fitr_man.tex new file mode 100644 index 0000000000..d0898ac60d --- /dev/null +++ b/macros/latex/contrib/fitr/docs/fitr_man.tex @@ -0,0 +1,721 @@ +\documentclass{article} +\usepackage[fleqn]{amsmath} +\usepackage[ + web={centertitlepage,designv,forcolorpaper, + latextoc,pro}, %tight, + eforms,aebxmp +]{aeb_pro} +\usepackage[fortextbook,usecustomdesign,nomarginwrite]{eqexam} +\usepackage{graphicx,array} +\usepackage[blink,!preview,!viewMagWin]{fitr} + +%\usepackage{myriadpro} +\usepackage[altbullet]{lucidbry} + + +\renewcommand\allowFXDefault{false} + +%\usepackage{makeidx} +%\makeindex +\usepackage{acroman} +\usepackage[active]{srcltx} + +\let\tops\texorpdfstring + +\makeatletter +\newcommand{\FmtMP}[2][0pt]{\mbox{}\marginpar{\raisebox{#1}{\parbox{\marginparwidth}{\slshape\raggedleft\small#2}}}} +\addtolength{\marginparwidth}{1in} +\def\eq@fititin#1{\noindent\unskip\nobreak\hfill\penalty50 + \hskip2em\hbox{}\nobreak\hfill#1} +\def\fitit{\eq@fititin{\exrtnlabelformat}} +\@mparswitchfalse\reversemarginpar +\def\meta#1{$\langle\textit{\texttt{#1}}\rangle$} +\let\maketitle\web@maketitle +\renewcommand{\paragraph} + {\@startsection{paragraph}{4}{0pt}{6pt}{-3pt} + {\normalfont\normalsize\bfseries}} +\renewcommand{\subparagraph} + {\@startsection{subparagraph}{5}{\parindent}{6pt}{-3pt}% + {\normalfont\normalsize\bfseries}} +\makeatother + + +\urlstyle{rm} +\def\fitrpkg{\textsf{f{i}tr}} +\let\texorpdfstring\tops + +\DeclareDocInfo +{ + university={\AcroTeX.Net}, + title={\tops{The}{The manual for the} \tops{\textsf{f{i}tr}}{fitr} Package\tops{\\ + Defining and Jumping to\\a Rectangular Destination}{}}, + author={D. P. Story}, + email={dpstory@acrotex.net}, + subject=Documentation for the fitr package, + talksite={\url{www.acrotex.net}}, + version={1.3.2, 2020/07/09}, + Keywords={LaTeX,PDF,fitr,JavaScript,Adobe Acrobat}, + copyrightStatus=True, + copyrightNotice={Copyright (C) \the\year, D. P. Story}, + copyrightInfoURL={http://www.acrotex.net} +} +\DeclareInitView{windowoptions={showtitle}} +\def\dps{$\hbox{$\mathfrak D$\kern-.3em\hbox{$\mathfrak P$}% + \kern-.6em \hbox{$\mathcal S$}}$} + +\universityLayout{fontsize=Large} +\titleLayout{fontsize=LARGE} +\authorLayout{fontsize=Large} +\tocLayout{fontsize=Large,color=aeb} +\sectionLayout{indent=-62.5pt,fontsize=large,color=aeb} +\subsectionLayout{indent=-31.25pt,color=aeb} +\subsubsectionLayout{indent=0pt,color=aeb} +\subsubDefaultDing{\tops{$\bullet$}{\textrm\textbullet}} + +%\pagestyle{empty} + + +%\definePath\bgPath{"C:/Users/Public/Documents/% +% ManualBGs/Manual_BG_Print_AeB.pdf"} +\chngDocObjectTo{\newDO}{doc} +\begin{docassembly} +var titleOfManual="The fitr Package"; +var manualfilename="Manual_BG_Print_fitr.pdf"; +var manualtemplate="Manual_BG_Green.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 + +\selectColors{linkColor=black} +\tableofcontents +\selectColors{linkColor=webgreen} + +\section{Introduction} + +This package is an implementation of the \textbf{FitR} view-type +destination. The \textsl{PDF Reference} describes \textbf{FitR} as, +\begin{quote} + Display the page designated by page, with its contents + magnified just enough to fit the rectangle specified by the + coordinates \textsl{left}, \textsl{bottom}, \textsl{right}, + and \textsl{top} entirely within the + window both horizontally and vertically. +\end{quote} +The package supports the \app{dvips}, \app{pdflatex}, \app{lualatex}, +\app{xelatex}, \textsf{dvipdfm}, and \textsf{dvipdfmx} applications. + +The only required packages are the \pkg{eforms} package (dated +2012/06/20 or later), which is part of the \pkg{AeB Bundle}, and +\pkg{collectbox} by Martin Scharrer, more on this package later, and +the ubiquitous \pkg{xcolor}.\footnote{The \textsf{eforms} package +itself brings in other packages, including \textsf{hyperref} and +\textsf{insdljs}.} + +\paragraph*{Motivation.} This package was developed in response to a user of the \pkg{AeB Bundle} who +was interested in developing documents for students with \emph{low vision}; +the idea is to magnify regions of the document so the student can read more +comfortably. + +\paragraph*{Demonstration files.} The demonstration files are \texttt{fitr\_demo.tex} which +illustrates the package and some special methods for people with low vision, +and \texttt{fitr\_minimal.tex}, which is the same demo file with any extra +packages stripped out. + +\paragraph*{What's New for Version 1.3.2 (2020/07/09)} The package is extended to support +the PDF creator \app{lualatex}. All common workflows are now automatically +detected: \app{pdflatex}, \app{lualatex}, and \app{xelatex}. If no driver is +specified and none is automatically detected, \app{dvips} is automatically +selected by default. The other drivers \app{dvipdfm} and \app{dvipdfmx} need +to be explicitly specified as the driver (\ameta{driver}). The \ameta{driver} +option is described in the next section. Also, there are several new options, +one of which is \opt{gonative}; when this option is selected, no field or +document JavaScript is used. For the \opt{gonative} option, the workflow +\app{dvips\,->\,ps2pdf} is also supported because there is no document +JavaScript required. + +\section{The Preamble and Package Options} + +The minimal preamble for this package is +\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()] +\usepackage[!meta(driver),!meta(options)]{fitr} +\end{Verbatim} +Permissible names for \ameta{driver} are \opt{dvips}, \opt{pdftex}, +\opt{luatex}, \opt{xetex}, \textsf{dvipdfm}, and \textsf{dvipdfmx}. The +\ameta{driver} option is only required for \app{dvipdfm} and \app{dvipdfmx}, +the others are either detected automatically, or is the default driver +(\opt{dvips}). The drivers and options are discussed in more detail below. + +\paragraph*{Package requirements.} The \pkg{hyperref} package is brought in through the \pkg{eforms} package. +Another package requirement is \textsf{collectbox} by Martin Scharrer. +The \cs{collectbox} command is used to collect the second argument of +\cs{jdRect}, see the discussion of \cs{jdRect} in \hyperref[jdRect]{Section~\ref*{jdRect}}. +As a result, the second argument may contain verbatim text in it. Very cool. + +\paragraph*{Package options.} The package has several options, broken down below by +category: Driver, View, and Other options. +\begin{description} +\item[Driver Options:] The major driver options are + \opt{dvips}\FmtMP{\opt{dvips}} (the default), + \opt{pdftex}\FmtMP{\opt{pdftex}}, \opt{luatex}\FmtMP{\opt{luatex}}, and + \opt{xetex}\FmtMP{\opt{xetex}}. Lesser driver options are + \opt{dvipdfm}\FmtMP{\opt{dvipdfm}} and + \opt{dvipdfmx}\FmtMP{\opt{dvipdfmx}}, but there seems to be a bug in + the \cs{includegraphics} command as the bounding box is not correctly + re-scaled. If you specify \opt{dvips}, it is assumed that you are using + \app{Adobe Distiller} as your PDF creator.\footnote{Unless you are also + using the \opt{gonative} option, see the description of this option.} + + The \pkg{fitr} package checks whether the \pkg{web} package is loaded, + if so, the driver of \pkg{web} is used; otherwise \pkg{fitr} + auto-detects for \app{pdftex}, \app{luatex}, and \app{xetex}. If no + driver is passed, and neither \app{pdftex}, \app{luatex}, nor + \app{xetex} are detected, the default driver, \app{dvips}, is used. + +\item[Viewing Options:] When you specify + \opt{preview}\FmtMP{\opt{preview}}, the bounding boxes of the buttons + are shown in the dvi-previewer (or the PDF viewer); you can turn off + this preview by specifying \opt{!preview} (or removing \opt{preview} + entirely from the option list). The other option type is + \opt{viewMagWin}\FmtMP{\opt{viewMagWin}}, when this option the viewing + window, a rectangular region, becomes visible in the dvi-previewer (or + in the PDF document); specifying \opt{!viewMagWin} turns off this type + of preview. + + The effects of the viewing options will be illustrated later in this + document, see \autoref{previewEx} on page~\pageref*{previewEx}. + +\item[Special Effects Options:] There are several options for bringing in + additional document JavaScript for special effects: (1) + \opt{blinkonjmp}\FmtMP{\opt{blinkonjmp}} blinks the border following the jump + to a focused destination; (2) + \opt{blinkonrestore}\FmtMP{\opt{blinkonrestore}} blinks the border following + the restore action; (3) \opt{blink}\FmtMP{\opt{blink}} is a convenience + option that combines the actions of \opt{blinkonjmp} and + \opt{blinkonrestore}. There are negative versions of these options as + well: \opt{!blinkonjmp}, \opt{!blinkonrestore}, and \opt{!blink}. The + default is to have no special effects, in effect \opt{!blink} is the + default. Refer to \hyperref[FX]{Section~\ref*{FX}} for more information + on special effects. + +\item[Other Options:] The \opt{gonative}\FmtMP{\opt{gonative}} option does + not use any field or document JavaScript; as a result, the + \app{dvips\,->\,ps2pdf} is then supported as no document JavaScripts + are employed. + +\end{description} + +\section{The \tops{\protect\cs{jdRect}}{\textbackslash{jdRect}} command}\label{jdRect} + +The {\fitrpkg} has only one command, \cs{jdRect}, which (optionally) +\textbf{j}umps to and/\allowbreak or sets a \textbf{d}estination of a +\textsf{Fit\textbf{Rect}}angle.\footnote{I had some problems +naming this command.} +There are two forms of usage. \cs{jdRect} optionally +creates a push button or link, and optionally creates a viewing window. The +term \emph{viewing window} refers to a rectangular region that is created by +the \textbf{FitR} destination viewing specification, see \textbf{Table~8.2 +Destination syntax} of the \textsl{PDF Reference}, version 1.7. A \emph{named +destination} is created and is associated with the viewing window. When we +jump to a viewing window, this window is magnified to the largest extent +possible. For example, click on the either of the two displayed forms of the +syntax for \cs{jdRect}; after jumping to the viewing window, click on the +same display to return to the previous view. + +%\previewtrue +\newtopic\noindent +There are two versions of \cs{jdRect}, the command itself, and a +\texttt{*} version, \cs{jdRect*}. The syntax follows, along with the +expected parameters. +\bVerb %\previewOn\viewMagWinOn +\takeMeasure{\string\jdRect[\ameta{key-values}]}% +\setlength{\dimen0}{\bxSize}% +\def\1{\rlap{\hspace*{\dimen0}\sffamily(Click on box to zoom in)}} +\jdRect[width=\bxSize,height=1.5\baselineskip,lift=\baselineskip,adddestw=10bp,adddesth=10bp]\relax +\begin{dCmd}[commandchars=!()]{\bxSize} +!1\jdRect[!ameta(key-values)] +\end{dCmd} +\eVerb +%\begin{quote} +% \jdRect*[adddestw=10bp,adddesth=10bp]{\cs{jdRect[\meta{key-values}]}} +%\end{quote} +The above version is used to overlay a region with a button and view +window. No content is specified, but is defined by specifying the +\texttt{width} and \texttt{height}; it can be positioned using +\texttt{shift} and \texttt{lift}. + +\newtopic\noindent +There is a \texttt{*}-version as well: +\bVerb %\previewOn\viewMagWinOn +\takeMeasure{\string\jdRect[\ameta{key-values}]\darg{\ameta{content}}}% +\setlength{\dimen0}{\bxSize}% +\def\1{\rlap{\hspace*{\dimen0}\sffamily(Click on box to zoom in)}} +\jdRect[width=\bxSize,height=1.5\baselineskip,lift=\baselineskip,adddestw=10bp,adddesth=10bp]\relax +\begin{dCmd}[commandchars=!()]{\bxSize} +!1\jdRect[!ameta(key-values)]{!ameta(content)} +\end{dCmd} +\eVerb +%\begin{quote} +% \jdRect*[adddestw=10bp,adddesth=10bp]{\cs{jdRect*[\meta{key-values}]}\verb!{!\meta{content}\verb!}!} +%\end{quote} +The second parameter \meta{content} is required when the \texttt{*} is +present. This version is meant to enclose \meta{content} within the button +and view window. The \texttt{width} and \texttt{height} keys are ignored, +but \texttt{shift} and \texttt{lift} are obeyed (though you may +\texttt{shift} or \texttt{lift} the button/view window away from the +content). + +\paragraph*{Description of \ameta{key-values}.} +Before illustrating the \cs{jdRect} command, we first discuss its +key-value pairs. +\begin{itemize} +\item \texttt{lift=\meta{length}}: This key-value lifts (raises) the + button/viewing window up (or down); for example, + \texttt{lift=15pt} (or \texttt{lift=-15pt}). The default is a lift + of \texttt{0pt}. See \autoref{displayEqEx} on page~\pageref*{displayEqEx}. + +\item \texttt{shift=\meta{length}}: The amount of horizontal shift; + positive to the right, negative to the left. For example, + \texttt{shift=-1in} shifts the button/viewing window 1 inch to the + left. The default is \texttt{0pt}. See + \autoref{displayEqEx} on page~\pageref*{displayEqEx}. + +\item \texttt{width=\meta{length}}: When using \cs{jdRect}---as + opposed to \cs{jdRect*}---, the width of the button and viewing + window is determined by the \texttt{width} key. For example + \texttt{width=1in} creates a button/viewing window that is 1 inch + wide. The value of this key is ignored when the \texttt{*} form of + the \cs{jdRect} is used. The default value is \texttt{0pt}. This + key is required when \texttt{*} is not present. See + \autoref{displayEqEx} on page~\pageref*{displayEqEx}. + +\item \texttt{height=\meta{length}}: Similar comments here as was made + for the \texttt{width} key. This key is used to set the height of + the button/viewing window. The default is 0pt. It is required when + \texttt{*} is not present. See \autoref{displayEqEx} on + page~\pageref*{displayEqEx}. + +\item \texttt{ref=t|c|b}: The \texttt{ref} key-value pair determines + the reference point of the button/viewing window. Permissible + values are \texttt{t} top (the default), \texttt{c} center, and + \texttt{b} bottom. This key is only obeyed with the \cs{jdRect*} + form of the command; otherwise, a reference point of \texttt{b} is + used. + +\item \texttt{adddestw=\meta{length}}: The default is for the viewing window to have +the same dimensions as the underlying button. The \texttt{adddestw} +key-value pair is used to widen the viewing window; \texttt{adddestw=.2in} +widens the window by \texttt{.2in} on the left and \texttt{.2in} on the +right. See \hyperref[bvw]{Figure~\ref*{bvw}}, page~\pageref*{bvw}. + +\item \texttt{adddesth=\meta{length}}: Similar to \texttt{adddestw} but for height. +The \texttt{adddesth} +key-value pair is used to increase the height the viewing window; \texttt{adddesth=.2in} +increases the height of the window by \texttt{.2in} on the top and \texttt{.2in} in the bottom. +See \hyperref[bvw]{Figure~\ref*{bvw}} below. +\begin{figure}[htb] +\begin{center}\setlength\fboxsep{0pt} + \fbox{\parbox[c][.9in]{2.4in} + {\vfill\hfil\fbox{\parbox[c][.5in]{2in}{\hfill\vfill}}\hfil\vfill}}\\[4pt] + \caption{Button and Viewing Window}\label{bvw} + {\small\texttt{width=2in,height=.5in,adddestw=.2in,adddesth=.2in}} +\end{center} +\end{figure} + +\item \texttt{button=true|false}: \texttt{button} is a Boolean switch. + If \texttt{true} (the default), \cs{jdRect} creates a push button. + When the user pushes the button, the viewer zooms in to the view + window. Clicking the same region again restores the previous view. + +\item[] When \texttt{button} is \texttt{false}, the button is not created, + but the viewing window is still created. You can then jump to the + viewing window with a separate link or button. When + \texttt{button=false}, use the \texttt{dest} key to assign a name + (\ameta{name}) to the viewing window. ({\fitrpkg} automatically creates + the destination names internally, they are used by the buttons. If no + button is created, name the destination so you know its name and can + reference it in link that jumps to that viewing area.) + + +\item \texttt{link=jmp|restore} If \texttt{link} has a value, then + {\fitrpkg} puts \texttt{button=false}. The \texttt{link} key is + used to create jumps or restore actions to or from a viewing + window. When \texttt{link=jmp} a jump action is created, the jump + will be to the value of the \texttt{dest} key. If this is a pure + link that jumps to another viewing window, then use the + \texttt{nodest} key as well; no viewing window will be created + around the link, as it is unlikely you'll want to jump to a link. + + +\def\RungePic{\kern0pt\includegraphics[width=1in]{runge}} +\def\jrOpts#1#2{link=#1,dest=#2} + +\item[] For example click on the link +\textbf{\jdRect*[nodest,\jrOpts{jmp}{rungePic},adddestw=10,adddesth=10]{Carl Runge}}% +\marginpar{\raggedleft\jdRect*[\jrOpts{restore}{rungePic},adddestw=\marginparsep, +adddesth=\marginparpush]{\parbox[t]{1in}{\RungePic\\ +\normalcolor\centering\footnotesize\textsf{Carl Runge}}}} and jump to +the picture of Runge in the margin. Click on the picture of Runge and +return to the previous view. + +The jump to the picture from the text ``Carl Runge'' is as follows: +\begin{Verbatim}[xleftmargin=\amtIndent] +\jdRect*[nodest,link=jmp,dest=rungePic, +adddestw=10bp,adddesth=10bp]{Carl Runge} +\end{Verbatim} +The important options are \texttt{nodest,link=jmp,dest=rungePic}; +no (named) viewing window is created, we want to create a jump link here, +the destination of the jump link is the destination \texttt{rungePic}. + +\item[] The color of the link is determined by \cs{@linkcolor}, a \textsf{hyperref} +command that holds a named color. This can be redefined at anytime, +directly using +\begin{Verbatim}[xleftmargin=\amtIndent] +\makeatletter +\def\@linkcolor{blue} +\makeatother +\end{Verbatim} +or, if you are using the \texttt{pro} option with the \textsf{web} +package, you can say, +\begin{Verbatim}[xleftmargin=\amtIndent] +\selectColors{linkColor=blue} +\end{Verbatim} +When using the \textsf{web} package, the default is \texttt{webgreen}. + +\item[] The action to restore the previous view is as follows: +\begin{Verbatim}[xleftmargin=\amtIndent] +\marginpar{\raggedleft\jdRect*[link=restore,dest=rungePic, + adddestw=\marginparsep,adddesth=\marginparpush + ]{\parbox[t]{1in}{\RungePic\\ + \normalcolor\centering\footnotesize\textsf{Carl Runge}}}} +\end{Verbatim} +The picture is placed in the margin using \cs{marginpar}; the command +\cs{RungePic} is a convenience macro that uses \cs{includegraphics} in +import the picture. The important options are +\texttt{link=restore,dest=rungePic}, this first key-value pair causes +\cs{jdRect} to create a restore link, the second one says to create a +viewing window with a name of \texttt{rungePic}, this is the +destination the Carl Runge link jumps to. + + +\item \texttt{nodest}: A Boolean switch whose default value is + \texttt{false}. When \texttt{nodest} is used (making the switch a + value of \texttt{true}), no viewing window is created. + +\item \texttt{dest=\meta{name}}: This key is a way of explicitly naming the + viewing window (the destination). The destination is normally + automatically generated when \texttt{button=true}, this key is + used with the \texttt{link} key, as illustrated above. +\item \texttt{allowFX}: A Boolean switch (of sorts). The \texttt{fitr} + allows for special effects (FX) when a viewing window is jumped to + and when the view is restored. The default value of + \texttt{allowFX} is \texttt{true} allow special effects if there + are any defined. By saying \texttt{allowFX=false}, no special + effects are used, even if some are defined. + +\item[] An example of special effects you say? Try clicking on the + Pythagorean Theorem + \jdRect*[allowFX,adddestw=10bp,adddesth=10bp]{$ a^2 + b^2 = c^2 $} +The default is to allow special effects, the default is set by the command, +\bVerb\takeMeasure{\string\renewcommand\darg{\string\allowFXDefault}\darg{true}}% +\begin{dCmd}[commandchars=!()]{\bxSize} +\renewcommand{\allowFXDefault}{true} +\end{dCmd} +\eVerb By declaring \verb~\renewcommand{\allowFXDefault}{false}~, the default +is now set to no special effects. +\end{itemize} + +\paragraph*{Passing KV-pairs to the push button of \cs{jdRect}.}\label{para:Presets} When \cs{jdRect} +produces a push button, you can pass \pkg{eforms} key-value pairs (KV-pairs) to +the underlying push button. +\bVerb\takeMeasure{\string\newcommand\darg{\string\overlayPresets}\darg{\string\H\darg{I}\string\BG\darg{}\string\BC\darg{}\string\S\darg{S}}}% +\begin{dCmd}[commandchars=!()]{\bxSize} +\newcommand{\overlayPresets}{\H{I}\BG{}\BC{}\S{S}} +\restoreOverlayPresets +\end{dCmd} +\eVerb See the \textsf{eforms} manual for the meaning of these cryptic symbols. +The initial value of \cs{overlayPresets} create transparent push +buttons. In subsequent examples, we will redefine \cs{overlayPresets} to +change the visibility of the overlay buttons. The command +\cs{restoreOverlayPresets} returns any re-definition of \cs{overlayPresets} +to its default definition, which is shown above. + +\section{Some Examples} + +\everymath{\displaystyle} + +In this section, several examples are presented that illustrate the options +of the \cs{jdRect} command. The examples in this section are created with +\begin{Verbatim}[xleftmargin=\amtIndent] +\renewcommand{\allowFXDefault}{false} +\end{Verbatim} +in force. There is one example +where we set \opt{allowFX=true}. Additional discussion on special effects +(FX) may be found in \hyperref[FX]{Section~\ref*{FX}}. + +\begin{example}\label{previewEx}\previewOn\viewMagWinOn +\textbf{Illustrate Preview Rectangles.} The \texttt{preview} and +\texttt{viewMagWin} options just set Boolean switches. In this example, we +manually give these switches a value of \texttt{true} +(\cs{previewtrue}\cs{viewMagWintrue}). Take a close look at the following +function \jdRect*{$ f(x) = \frac{1}{\sqrt{2\pi}}\int_{-\infty}^x +e^{-t^2/2}\,\text{d}t$}, or the more general form +\jdRect*[adddestw=20bp,adddesth=10bp]{$ f(x;\mu;\sigma) = +\frac{1}{\sigma\sqrt{2\pi}}\int_{-\infty}^x +e^{-\frac{(t-\mu)^2}{2\sigma^2}}\,\text{d}t$} The preview rectangles are +shown: For the one on the left, the dimensions of the push button and the +viewing rectangle are the same; for one on the right, the dimensions of the +viewing window have been increased by using +\texttt{adddestw=20bp,adddesth=10bp}. When you jump to each of these viewing +windows, the one on the left is magnified much more than the one on the +right, but the larger viewing window allows the user to see some of the +surrounding text.\fitit +\end{example} + +\begin{example}\label{displayEqEx} +\textbf{Display Math.} Displayed math presents a problem. We take the +following set of equations to illustrate. + +Suppose we want to classify third order \textsf{Runge-Kutta} type methods. +Start with +\begin{align*} +\jdRect[height=1.3in,width=2.6in,lift=16pt,shift=-15pt, + adddestw=10bp,adddesth=10bp] +K_1 &= hf(t_n, y_n)\\ +K_2 &= hf(t_n +r h, y_n+aK_1)\\ +K_3 &= hf(t_n +s h, y_n+bK_1+cK_2)\\ +K &= w_1 K_1+ w_2 K_2+ w_3 K_3\\ +y_{n+1} &= y_n+K +\end{align*} +Find the system of equations satisfied by +\jdRect*[adddestw=10,adddesth=10]{$r,s, a, b, c, w_1, w_2, w_3$} +that will make the above algorithm a third order method. + +The verbatim listing of this set of aligned equations is, +\begin{Verbatim}[xleftmargin=\amtIndent,numbers=left] +\begin{align*} +\jdRect[height=1.3in,width=2.6in,lift=16pt,shift=-15pt, + adddestw=10bp,adddesth=10bp] +K_1 &= hf(t_n, y_n)\\ +K_2 &= hf(t_n +r h, y_n+aK_1)\\ +K_3 &= hf(t_n +s h, y_n+bK_1+cK_2)\\ +K &= w_1 K_1+ w_2 K_2+ w_3 K_3\\ +y_{n+1} &= y_n+K +\end{align*} +\end{Verbatim} +This is an example of \cs{jdRect} (the non-\texttt{*} version), so there is +no second argument. In this case, we create our button dimensions using +\texttt{height=1.3in,width=2.6in}, line~(2). Note the positioning of the +\cs{jdRect} command, the upper-left point of the display. We then use +\texttt{lift=16pt,shift=-15pt} to move the button around to cover the +equations, line~(2); finally, we increase the dimensions of the viewing +window in line~(3) with \texttt{adddestw=10bp,adddesth=10bp}. Now, how were +the values of these keys determined? By trial and error, while the +\texttt{preview} and \texttt{viewMagWin} options were in effect. Below are +the same equations with \cs{previewtrue} and \cs{viewMagWintrue}, locally +invoked:\previewOn\viewMagWinOn\footnote{You can also use the commands +\cs{previewOn}, \cs{previewOff}, \cs{viewMagWinOn}, and \cs{viewMagWinOff} as +a convenient way of turning on or off these switches.} +\begin{align*} +\jdRect[height=1.3in,width=2.6in,lift=16pt,shift=-15pt, + adddestw=10bp,adddesth=10bp] +K_1 &= hf(t_n, y_n)\\ +K_2 &= hf(t_n +r h, y_n+aK_1)\\ +K_3 &= hf(t_n +s h, y_n+bK_1+cK_2)\\ +K &= w_1 K_1+ w_2 K_2+ w_3 K_3\\ +y_{n+1} &= y_n+K +\end{align*} +The preview rectangles do not take up any {\TeX} space, so they overlap +parts of the paragraph content. When you zoom in, you'll see part of the +part of the word ``invoked:'', as seen in the upper-left corner, at least +according to the viewing window preview. Is it so? + +After you've set the position of the rectangles, and after all changes +have been made to the underlying content, you don't need the preview +modes.\fitit +\end{example} + +\begin{example}\label{CustomAppr} +\textbf{Customizing the appearance.} The among the properties of the +underlying push button is to be visible, but does not print. The background +and the border are transparent. The default properties of the button overlay +are passed to the push button using \cs{overlayPresets}, introduced earlier +on \hyperref[para:Presets]{page~\pageref*{para:Presets}}. You can modify these +settings locally, within a group, or globally. In this example, we change the +border to red dashed line. We redefine \cs{overlayPresets} as follows: +\begin{Verbatim}[xleftmargin=\amtIndent] +\renewcommand{\overlayPresets}{\H{I}\BG{}\BC{red}\S{D}} +\end{Verbatim} +\renewcommand{\overlayPresets}{\H{I}\BG{}\BC{red}\S{D}}% +In the re-definition, \verb!\BC{red}! is declared (the \textsf{xcolor} package is +required here for named colors; otherwise, we would say \verb~\BC{1 0 0}~), +\verb!\S{S}! is changed to \verb~\S{D}~, which gives a dashed +(\texttt{D}) border as opposed to a solid (\texttt{S}) border. Now to +illustrate this. My name is \jdRect*{D. P. Story!}; lets increase the +viewing window, shall we? My name is \jdRect*[adddestw=10bp,adddesth=10bp]{D. P. +Story!}. Keep in mind that we are overlaying a push button; if you want +the underlying text to have a color, you need to color it yourself: +\jdRect*[allowFX,adddestw=10bp,adddesth=10bp]{\textcolor{blue}{D. P. Story}!} +This last button has code, +\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()] +\jdRect*[!textbf(allowFX),adddestw=10bp,adddesth=10bp]% + {\textcolor{blue}{D. P. Story}!} +\end{Verbatim} +As the changes to the preset appearance are inside a group, after this +example (environment)) \cs{overlayPresets} will revert to its definition +that was in effect outside the example.\fitit +\end{example} + +\section{Special Effects (FX)}\label{FX} + +\subsection{Built-in FX} + +There are two built-in JavaScript functions \texttt{pbJmpHook()} and +\texttt{pbRestoreHook()}; the first blinks the view window just after the +focused jump, and the latter blinks the view window after the previous view +is restored. These built-in functions are not available by default, they are +brought into the document with the options \opt{blinkonjmp} and +\opt{blinkonrestore}. The option \opt{blink} is equivalent to specifying both +\opt{blinkonjmp} and \opt{blinkonrestore}. This document was compiled by inputting +the \pkg{fitr} package as \verb~\usepackage[blink]{fitr}~. + +\subsubsection{FX examples} + +\begin{example} +\textbf{FX and Verbatim.} Zoom in on verbatim text +\jdRect*[allowFX,adddestw=10bp,adddesth=10bp] +{\verb!#$$%&$%^&$%^$!} which can be handled by \cs{jdRect*} command. The listing is, +\begin{Verbatim}[xleftmargin=\amtIndent,commandchars={~()}] +\jdRect*[~textbf(allowFX),adddestw=10bp,adddesth=10bp] +{\verb!#$$%&$%^&$%^$!} which can be handled by +\verb!\jdRect*! command. The listing is, +\end{Verbatim} +Notice that \texttt{allowFX} is specified. This key does not normally +appear in the option list, its default value is normally \texttt{true}; +however, for this document, the following definition was made in the preamble, +\begin{Verbatim}[xleftmargin=\amtIndent] +\renewcommand\allowFXDefault{false} +\end{Verbatim} +This (re)definition of \cs{allowFXDefault} sets the default value of +\texttt{allowFX} to \texttt{false}. This is that earlier, the special effects +would not be seen, by default. To see their effect, we have to explicitly put +\texttt{allowFX} to \texttt{true}, which is what the single key does. (Or, +you can say \texttt{allowFX=true}, but that is five more key presses.)\fitit +\end{example} + +\begin{example}\label{fx} +\textbf{FX.} Jump to the +{\renewcommand{\overlayPresets}{\H{I}\BG{}\BC{blue}\S{D}}% +\jdRect*[allowFX,adddestw=10bp,adddesth=10bp]{{\fitrpkg} Package!}} Click +on the verbatim region below to view the listing up close. +\bVerb\takeMeasure{Jump to the +\string\jdRect*[\textbf{allowFX},adddestw=10bp,adddesth=10bp]\%}% +\jdRect*[allowFX,adddestw=10bp,adddesth=10bp] +{\noindent\begin{minipage}{\bxSize} +\begin{Verbatim}[commandchars=!()] +\renewcommand{\overlayPresets}{\H{I}\BG{}\BC{blue}\S{D}}% +... +Jump to the \jdRect*[!textbf(allowFX),adddestw=10bp,adddesth=10bp]% + {{\fitrpkg} Package!} +\end{Verbatim} +\end{minipage}}\eVerb +We redefined the \cs{overlayPresets} command, choosing an initial border of +blue, in this way, the document consumer sees that s/he can zoom in on the +text. + +%\previewOn\viewMagWinOn +\jdRect[allowFX,height=4\baselineskip,width=340pt,adddestw=10,adddesth=10,lift=-\baselineskip]% +By the way, you can also zoom in on displayed verbatim text using \cs{jdRect} only. +% lift=16pt,shift=-15pt, +\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()] +\renewcommand{\overlayPresets}{\H{I}\BG{}\BC{blue}\S{D}}% +... +Jump to the \jdRect*[!textbf(allowFX),adddestw=10bp,adddesth=10bp]% + {{\fitrpkg} Package!} +\end{Verbatim} +This is done by explicitly enclosing the verbatim region as follows: +\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()] +\jdRect[!textbf(allowFX),height=4\baselineskip,width=340pt, + adddestw=10,adddesth=10,lift=-\baselineskip]% +By the way, ... +\end{Verbatim} +and, in this instance, is placed at the beginning of the sentence.\fitit +\end{example} + + +\subsection{Custom FX} + +For the standard set up, where there is a push button that overlays the +content along with the viewing window it jumps to, there are two JavaScript +``hooks'' that can be exploited. These are document author defined. +\begin{itemize} + \item \texttt{pbJmpHookCustom()} is an undefined JavaScript + function that is executed after the jump to the viewing + window. (It is enclosed in a \texttt{try/catch} construct that + catches the error thrown.) The document author can define + \texttt{pbJmpHookCustom()} to perform some action following the + jump. + \item \texttt{pbRestoreHookCustom()} is an undefined JavaScript + function that is executed following the restored view action. + The document author needs to make a custom definition if + special effects are desired. +\end{itemize} +The distribution comes with two skeleton custom JavaScript functions, defined +in the files \texttt{jmpHook.js} and \texttt{restoreHook.js}. Study the two +built-in functions, \texttt{pbJmpHook()} and \texttt{pbRestoreHook()}, which +are part of this package, as a guide for writing your own special effects. To +use your custom JavaScript functions, place +\begin{Verbatim}[xleftmargin=\amtIndent] +\usepackage[js=jmpHook,js=restoreHook]{lmacs} +\end{Verbatim} +in the preamble of your document.\footnote{The alternative is to copy and +paste the \env{indDLJS} environments directly into the preamble.} The +\textsf{lmacs} package is a new package I made available to CTAN, it's a +simple package that imports files with extensions of \texttt{.def}, +\texttt{.cfg}, and \texttt{.js}. We import \texttt{jmpHook.js} and +\texttt{restoreHook.js} using a key-value method, where the key is one of the +supported extensions; thus \texttt{js=jmpHook} will import the file +\texttt{jmpHook.js} if it exists. By the way, another nice feature of +\textsf{lmacs} is that you can prefix an exclamation point (!) to cancel out +that import, for example, if we wanted to use \texttt{jmpHook} but not +\texttt{restoreHook} specify, +\begin{Verbatim}[xleftmargin=\amtIndent] +\usepackage[js=jmpHook,!js=restoreHook]{lmacs} +\end{Verbatim} + +\newtopic\noindent +Now, I simply must get back to my retirement. \dps + +\end{document} |