\documentclass{article}
\usepackage[fleqn]{amsmath}
\usepackage[
    web={centertitlepage,designv,forcolorpaper,usesf,tight,latextoc,pro},
    eforms,
%    linktoattachments,
    aebxmp
]{aeb_pro}
%\usepackage{aeb_mlink}
%\usepackage{myriadpro}
%\usepackage[usecmtt]{myriadpro}
\usepackage[altbullet]{lucidbry}
\usepackage{acroman}

%\usepackage{myriadpro}
%\usepackage{acaslonpro}
%\usepackage{ajensonpro}
%\usepackage{minionpro}
%\usepackage{newsgothicstd}
%\usepackage{lucidbry}

\university{\AcroTeX.Net\\The AeB Pro family}
\title{The AcroMemory Package\texorpdfstring{\\}{: }Manual of Usage}
\author{D. P. Story}
\email{dpstory@acrotex.net}
\subject{Documentation for AcroMemory, the memory game}
\keywords{Adobe Acrobat, JavaScript, AcroSlicing, game}
\copyrightStatus{True}
\copyrightNotice{Copyright (C) \the\year, D. P. Story}
\copyrightInfoURL{http://www.acrotex.net}

\def\nhfootnote#1{\begin{NoHyper}\footnote{#1}\end{NoHyper}}

\def\dps{$\hbox{$\mathfrak D$\kern-.3em\hbox{$\mathfrak P$}%
   \kern-.6em \hbox{$\mathcal S$}}$}


\definePath\bgPath{"C:/Users/Public/Documents/ManualBGs/Manual_BG_Print_AeB.pdf"}
\begin{docassembly}
\addWatermarkFromFile({
    bOnTop:false,
    cDIPath:\bgPath
});
\executeSave();
\end{docassembly}

\begin{document}

%\begingroup

%\linewidth=\fullscreenwidth
%\advance\linewidth\oddsidemargin
%\setlength{\oddsidemargin}{0pt}
\maketitle

%\endgroup

\changelinkcolorto{black}

\tableofcontents

\changelinkcolorto{webgreen}


\section{What is the AeB Pro Family?}

  Through the years, I have tried to make my AeB software
  ({Acro\negthinspace\TeX} eDucation Bundle) compatible with
  \textsf{pdftex} and \textsf{dvipdfm}; however, during that time,
  I've developed a number of techniques that require the use of
  Acrobat and distiller. Therefore, I have set off in a new
  direction and will be publishing a new line of {\LaTeX} packages,
  ones that require the use of Acrobat.\nhfootnote{I will, however,
  continue to develop the original AeB, never fear!}

\newtopic The current package, \textsf{AcroMemory}, requires the use
          of Acrobat Pro~7.0 or later.

\section{Introduction}

At the prompting and encouragement of my erstwhile friend,
J\"{u}rgen, I present to you \textsf{AcroMemory}, and for the life
of me, I can't remember why.

Oh, yes, \textsf{AcroMemory} is a memory game in which you find the
matching tiles. There are two versions---available as options of
this package---for your enjoyment, \texttt{acromemory1} and
\texttt{acromemory2} (the default).
\begin{itemize}
   \item \texttt{acromemory1}: Here you have a single game board, a
        rectangular region divided by rows and columns. The total number
        of tiles should be even, each tile should have a matching twin.
        The game begins with all the tiles hidden. The user clicks a
        tile, then another. If the tiles do not match, they become
        hidden again (you did remember the position of those tiles,
        didn't you?); otherwise, they remain visible and are now
        read-only. The game is complete when the user, with a lot of time
        on his/her hands, matches all tiles. There is a running
        tabulation kept on the number of tries.  There is also a button
        which resets the game and randomizes the tiles.

  \item \texttt{acromemory2}: For this game you have two identical
        rectangular images subdivided into tiles (or slices), which
        are arrayed in rows and columns. The tiles for one of the
        two images is randomly re-arranged. The object of the
        game is to find all the matching tiles by choosing a tile
        from one image and a tile from the other image. As in the
        first case, if the selected tiles do not match, they are
        hidden after a short interval of time (you did remember the
        position of those tiles, didn't you?); otherwise, they
        remain visible and are now read-only. The game is over when
        all tiles are matched; when this occurs, end-of-game special
        effects occur that will dazzle the senses. There is an
        option to view a small image to help you locate the matching
        tiles on the non-randomized; useful if the image is complex.
        There is no reset button at this time, to play again, the
        user must therefore close and open the document.
\end{itemize}
The demo files are \texttt{acromemory1\_1.tex},
\texttt{acromemory1\_2.tex}, \texttt{acromemory2\_1.tex} and
\texttt{acromemory2\_2.tex}. These files show how to lay out the
various elements of this package.

\newtopic\textbf{Requirements:} Acrobat~7 Professional.

\section{Distribution and Installation}\label{installation}

The distribution comes with the following files:
\begin{itemize}

    \item \texttt{acromemory.dtx}, \texttt{acromemory.sty} and \texttt{acromemory.ins}:
    These are the program files.  The file \texttt{acromemory.dtx} has additional documentation
    with more technical details than this manual.

    \item The files \texttt{acromemory1\_1.tex},
    \texttt{acromemory1\_2.tex}, \texttt{acromemory2\_1.tex} and
    \texttt{acromemory2\_2.tex}: The demo files for this package.

    \item \texttt{aeb\_pro.js}: A JavaScript file that contains
    security restricted methods.

    \item The \textsf{AeB Slicing} Batch Sequence: This is a batch
        sequence that slices a given image into a specified number of
        rows and columns. The documentation file name is
        \texttt{aebslicing\_sequ\_doc.pdf} and comes with the
        distribution. Installation details for \textsf{AeB Slicing}
        are contained in its documentation.

    \item Sample image files, \texttt{dinos} (for the
    \texttt{acromemory1} option) and \texttt{dpsweb} (this time
    for the \texttt{acromemory2} option), contained in their own folders.

\end{itemize}

\newtopic When you unzip \texttt{acromemory.zip}, the folder
\texttt{acromemory} will be created, the entire distribution will be
placed in this folder. This folder must be on your {\LaTeX} search
path and you need to refresh your file name database if you are
using a {\TeX} system, such as MIK\TeX, that has this database
scheme. At the top level will be the {\LaTeX} package and demo
files. The subfolders are
\begin{itemize}
    \item \texttt{aeb\_pro}: In this folder is \texttt{aeb\_pro.js}, a
        JavaScript file that needs to be installed on your hard drive.
        Copy this file to the User's
            \texttt{JavaScripts} folder. To find this folder, execute the
            script
\begin{Verbatim}[xleftmargin=20pt,fontsize=\fontsize{9}{11}\selectfont]
app.getPath("user", "javascript");
\end{Verbatim}
in the JavaScript Debugger Console window.\nhfootnote{Place the cursor
on the line containing this script and press the \texttt{Ctrl+Enter}
key.} The return value of this is the path to the
\texttt{JavaScripts} folder; for example, on my system it returns
\begin{Verbatim}[xleftmargin=20pt,fontsize=\fontsize{9}{11}\selectfont]
/C/Documents and Settings/dps/Application Data/
    Adobe/Acrobat/8.0/JavaScripts
\end{Verbatim}
For user's of Acrobat 10.1.1 (or later), the JavaScripts folder has moved,
see my blog article \textsl{\href{http://www.acrotex.net/blog/?p=737}{Acrobat Security Changes in 10.1.1 and
Acro\!\TeX}}.

After placing \texttt{aeb\_pro.js}, restart Acrobat so it will read this file.
    \item \texttt{dpsweb}: Image files used in \texttt{acromemory2\_1.tex} and \texttt{acromemory2\_2.tex}.
    \item \texttt{dinos}: Image files used in \texttt{acromemory1\_1.tex} and \texttt{acromemory1\_2.tex}.
\end{itemize}

\newtopic Follow the installation instructions for the \textsf{AcroSlicing} batch sequence.

\section{Package Options}

There are a few options of this package:
\begin{itemize}
    \item \texttt{acromemory1} and \texttt{acromemory2}: As described earlier. The \texttt{acromemory2} option
    is the default, so it need never be used, actually.
    \item \texttt{iconfile}: There are two methods of delivering the slices of the game board(s) to this package:
    \begin{enumerate}
        \item The default method is to have one file for each sliced
            image. There is a numbering system for the slices, the same system
            used by \textsf{Aeb Slicing} batch sequence, is to number them
            with a two digit number across rows:\smallskip

\begin{Verbatim}[xleftmargin=20pt,fontsize=\fontsize{9}{11}\selectfont]
\texttt{<basename>\_01}, \texttt{<basename>\_02}, ...
\end{Verbatim}

        \item[]The demo files \texttt{acromemory1\_2.tex} and
            \texttt{acromemory2\_2.tex} illustrate this method.

        \item All slices are placed in a single PDF in the same order just
            described, that is listed by rows. There is an option in the
            \textsf{AeB Slicing} batch sequence for ``packaging'' the
            slices in this way. The demo files \texttt{acromemory1\_1.tex}
            and \texttt{acromemory2\_1.tex} illustrate this method.
    \end{enumerate}
    The \textsf{AcroMemory} package expects, by default, the first method
    described. By specifying the \texttt{iconfile} option,
    \textsf{AcroMemory} will get the slices for the single PDF.

    \item \texttt{includehelp}: When building a file with the acromemory2
        option, you can also include a help image, a small picture of the game
        board to help the user to match the randomized slices with the ones on
        the non-randomized game board. Useful if the image is very complex.
        The demo files \texttt{acromemory2\_1.tex} and
        \texttt{acromemory2\_2.tex} both contain the necessary code for
        producing the help feature, the commands only create the help feature
        if the \texttt{includehelp} option is taken.
\end{itemize}

\noindent\textbf{\color{red}Important.} You need to set the preferences of Acrobat as follows:
\begin{enumerate}
    \item Start Acrobat, and select \texttt{Edit > Preferences}
    \item Choose Trust Manager from the Categories panel on the left
    \item Check the `Allow external content' check box
\end{enumerate}
\noindent The above settings allow the post-distillation assembly to take place.

\section{Commands of the Package}

This section describes the various commands available to you through
this package. This section can be skipped on first reading, most of
the commands are described less formally in subsequent sections.

\newtopic The following commands are suitable for placement in the
preamble of your document.

\begin{itemize}
   \item \cs{theTotalTiles}: The total number of tiles in the game board. This parameter is required.
   For example, \verb!\theTotalTiles{20}!.
   \item \cs{theNumRows}: The number of rows in the game board. This parameter is required.
   For example, \verb!\theNumRows{5}!.
   \item \cs{theNumCols}: The number of columns in the game board.
   This parameter is required. For example, \verb!\theNumCols{4}!.
   \item \cs{theImportPath}: The import path to the base name of the image. The path
   should use the path specification as defined in the \emph{PDF Reference}, and the file name should
   have no extension. Required. For example,\smallskip
\begin{Verbatim}[xleftmargin=20pt,fontsize=\fontsize{9}{11}\selectfont]
\theImportPath{myFig/myimages}
\end{Verbatim}

   There is an optional argument that is typically used when the \texttt{iconfile} is in effect
   with the \texttt{acromemory2} option,  and an image of the game board is different from the
   path given by the optional argument; for example,
\begin{verbatim}
   \theImportPath[dpsweb/dpsweb]{dpsweb/dpsweb_package}
\end{verbatim}
   The required argument points the packaged icons, the optional argument points to
   a file showing the entire image. See \texttt{acromemory2\_1.tex} for an
   example of this situation.
   \item \cs{theIconExt}: The extension of the image file(s). Required if different
   from \texttt{pdf}. (Acrobat can make the conversion to PDF.)
   \item \cs{theTeXImageWidth}: The scaled width of the rectangular game board. The
   game board will be rescaled so that its width is equal to the value specified
   by the argument of this command, e.g., \verb!\theTeXImageWidth{2in}!.
   \item\cs{provideDimensions}: If the dimension of the game board is known, the width
   and height can be entered with this command using the two parameters. For example,
   \verb!\provideDimensions{2in}{2.5in}! (width, height).
\item \cs{bDebug}: A debugging command. When executed in the
    preamble, more is written to the Acrobat console as the document is
    opened the first time, also, the icons are initially visible so you
    can see the layout, and quickly play the game. This was used in
    development extensively to help develop the JavaScript.

\end{itemize}

\newtopic The rest of the commands in this section are properly
placed in the body of the document. They are the elements of the
game board(s) and supporting elements.

\newtopic\textbf{Game Board(s)}
\begin{itemize}
\item \cs{ulCornerHere}: Used with the \texttt{acromemory1} option,
this command sets the upper left corner of the game board. It is
followed by either of the two commands \cs{reserveSpaceByDimension} or
\cs{reserveSpaceByFile}.

\item \cs{LulCornerHere}, \cs{RulCornerHere}: Used with the
\texttt{acromemory2} option, these commands set the upper left
corner of the two game boards, on the left and the other on the
right. Each of these two commands is immediately followed by one of
the two commands \cs{reserveSpaceByDimension} or
\cs{reserveSpaceByFile}.

\item \cs{reserveSpaceByDimension}: If the size of the image is
known, you can reserve space for it by using this command. It has
two arguments: the first argument is the width of the image, the
second is the height. This command is useful for
\texttt{acromemory1} where the game board is made up of some many
rows and columns of tiles whose dimensions you know.

\item \cs{reserveSpaceByFile}: This command does an
\cs{includegraphics} in draft mode to get the dimensions of the game
board. The required space is made for the rescaled image. The
optional argument can be used to insert a file that has the same
aspect ratio as the puzzle, the default is the one specified by the
optional argument of \cs{theImportPath}, which, if not specified, is
the same as the required argument of \cs{theImportPath}.
\end{itemize}

\goodbreak
\newtopic\textbf{Supporting fields}
\begin{itemize}

\item \cs{messageBox}: A message text field. As the user works the
puzzle, the progress is reported to this field.
\end{itemize}

\newtopic The following button is only appropriate when the \texttt{acromemory1}
option is taken.

\begin{itemize}
\item \cs{playItAgain}: For the \texttt{acromemory1} option, this
button can be placed to reset the game board, the icons are
rearranged and hidden again.
\end{itemize}

\newtopic When \texttt{acromemory2} and the \texttt{includehelp}
options are taken, these commands are available. See the
\texttt{acromemory.dtx} documentation for indications of modifying
these commands.

\begin{itemize}
\item \cs{helpImage}: The button that will contain an icon of the
puzzle. There is one optional argument used to modify the appearance
of the button.

\item \cs{setHelpImageWidth}: Used to set the width of the
\cs{helpImage} button. The default width is 1 inch. For example,
\verb!\setHelpImageWidth{1.5in}!.

\item \cs{theHelpCaption}: Use this command to set the caption of
the help image. For example, \verb!\theHelpCaption{I need help}!.

Captions with accents and such, you need to use Unicode escape
sequences, \verb!\uXXXX!, where \texttt{XXXX} are four hexadecimal
digits. For example, the caption specified by
\begin{Verbatim}[xleftmargin=20pt,fontsize=\fontsize{9}{11}\selectfont]
\theHelpCaption{J\string\\u00FCrgen needs help}
\end{Verbatim}
will appear in the PDF document as `J\"{u}rgen needs help'. Notice the
\verb!\string\\! sequence that is needed from the {\LaTeX} source.


\item\cs{rolloverHelpButton}: The image is normally hidden until the
user rolls over the \cs{rolloverHelpButton}. The icon appears with a
caption under it, the content of the caption can be entered using
\cs{theHelpCaption}. This command has three parameters, one of which
is optional. The first (optional) parameter is used to change the
appearance of the button; the next two required parameters are the
width and height of the button.
\end{itemize}


\section{The \texttt{acromemory1} Option}

In this game, there is only one game board with an even number of
tiles. Each tile has an identical twin, and all the tiles are
randomly rearranged. The object of the game is to find all the
matching pairs. See the demo files \texttt{acromemory1\_1.tex} and
\texttt{acromemory1\_2.tex} for examples of this game; the former
file uses the \texttt{iconfile} option, whereas the latter does not.
Both illustrate the \cs{reserveSpaceByDimension} and
\cs{provideDimensions}. See the comments in these files for more
details.

The tiles for this game were created by a font that I have called
`Mini Pics Lil Dinos'. The source file for the creation of the
\texttt{myDinos.pdf}, the icon file, is \texttt{myDinos.tex}. In
this \texttt{tex} file, the \textsf{web} package is used to create
pages 2~inches by 2~inches. The \texttt{multido} package from
\textsf{PSTricks} was used to produce the pages. See
\texttt{myDinos.tex} for additional comments.

To create your own icon file, you will need either a font set with
nice images on it, or you can be creative, perhaps using
\textsf{PSTricks} to create a series of figures.

Given that you have created your icons in a single file, should you
wish to save each page to a separate file, you can execute the
following JavaScript in the console, while the icons file is open in
Acrobat.\smallskip
\begin{Verbatim}[xleftmargin=20pt,fontsize=\fontsize{9}{11}\selectfont]
var thisPath = /.*\//i.exec(this.path)[0];
var filename = this.documentFileName.replace(/\.pdf$/i,"");
for (var i = 0; i < this.numPages; i++) {
    var j = i+1;
    var index = (j < 10 ) ? ("0"+j) : (""+j);
    this.extractPages({
        nStart: i,
        cPath: thisPath+filename+"_" + index +".pdf"
    });
}
\end{Verbatim}
The code is included in the file \texttt{myDinos.tex}.


\section{The \texttt{acromemory2} Option}

This option was the original concept, it was only after I completed
the two game board version did I decide to do the classic one game
board version. This is why \texttt{acromemory2} is the default. The
\texttt{acromemory2} version was much more interesting and
challenging to create.

For this option you don't have to have a fancy font, any
(interesting)  picture will do. The first step is to decide how many
rows and columns you want and then slice the image appropriately.
This is why I wrote the \textsf{AeB Slicing} batch sequence. Read
the documentation for \textsf{AeB Slicing} and slice your picture.

Not only do you need slices of your picture, you also need an \texttt{EPS}
of your picture. This is used by latex to leave room for the game board.
Acrobat can make the conversion for you, as follows:

\newtopic\textbf{To convert your image to EPS}
\begin{enumerate}
\item Bring your image into Acrobat
\item Click the \texttt{File > Save As} menu item
\item In the Save As dialog box, choose \texttt{Encapsulated PostScript (*.eps)} from the Save as type list
\item Navigate to the folder containing your tiles, and click the \texttt{Save} button
\end{enumerate}

\newtopic See the demo files \texttt{acromemory2\_1.tex} and
\texttt{acromemory2\_2.tex} for examples of this game; the former
file uses the \texttt{iconfile} option, whereas the latter does not.
Both illustrate the \cs{reserveSpaceByFile}. See the comments in
these files for more details.

Use either of these two demo files as a template to create your own
memory game. Don't forget that the \textsf{web} package has options
to apply a background color or a graphic---this will jazz up your
memory game.

\section{Assembly}

Try compiling one of the demo files. You must have the AeB already
installed on your system, of course.  Be sure to specify your dvi to
postscript converter, for most of you that will be dvips. For example,
the preamble of the demo docs, and later your own documents should
appear as follows:\smallskip
\begin{Verbatim}[xleftmargin=20pt,fontsize=\fontsize{9}{11}\selectfont]
\documentclass{article}
\usepackage[designv,nodirectory,dvips]{web} % <-- specify dvips or dvipsone
\usepackage[execJS]{eforms}
\usepackage{graphicx}
\usepackage{acromemory}
\end{Verbatim}

\newtopic LaTeX your source file, then invoke your dvi-to-ps
converter to obtain a postscript file.
Now open Acrobat Distiller and distill the new postscript document.
If all goes well, Acrobat will start, if not already, and the newly
created PDF document will open in it. Notice that the hour glass
cursor appears; this means that the post-assembly process is
ongoing: You note the one or two little dots on the page (where the
game boards should be), these are the fields creates by the commands
\cs{ulCornerHere}, \cs{LulCornerHere} or \cs{RulCornerHere}. They
are soon replaced by the game board(s). Amazing, simply amazing!

After the hour glass cursor changes, perhaps to the hand tool, be
sure to save your document, \emph{this is important}. By saving the
document, the game board does not have to be rebuilt every
time the file is opened. Once assembled and saved, the game can be
played on Adobe Reader 7.0 or later.

\newtopic\textbf{\color{red}Tip.} Use the \textsf{PDF Optimizer}, under the \textsf{Advance} menu, to
reduce the size of the file.\nhfootnote{For Acrobat 10, \textsf{PDF Optimizer} is called the
\textsf{Optimized PDF} under the \textsf{File \texttt{>} SaveAs}; also, you can use the \textsf{Reduced Size PDF}
menu function} For example, the file size of \texttt{acromemory2\_2.pdf}
after distillation was 462\,KB, but after running the
PDF Optimizer on it, the file size was reduced to 85\,KB!


\section{Final comments}

Use any of the demo files as a template to create your own memory
game. Don't forget (use your memory?) that the \textsf{web} package
has options to apply a background color or a graphic---this will
jazz up your memory game.

I do hope you find this game package fun, and that you will be
creative in its use. Perhaps you can apply the techniques of this
package to create your own game package, there are many
possibilities.

\newtopic Now, I simply must get back to my retirement! \dps



\end{document}
