% \iffalse meta-comment
%
% HA-prosper package by Hendri Adriaens.
%
% Extract package files and create documentation:
%   `latex HA-prosper.dtx'
%   `latex HA-prosper.dtx'
%   `makeindex -s gind.ist HA-prosper.idx'
%   `latex HA-prosper.dtx'
%   `latex HA-prosper.dtx'
%
% To generate source code documentation as well,
% first comment line 57 of this file.
%
% To finish the installation you have to move the following
% files into a directory searched by TeX:
%    HA-prosper.sty
%    HA-prosper.cfg
%
%% ------------------------------------------
%% Copyright (C) 2003-2005 by Hendri Adriaens
%% ------------------------------------------
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.2
%% of this license or (at your option) any later version.
%% The latest version of this license is in:
%%
%%    http://www.latex-project.org/lppl.txt
%%
%% and version 1.2 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%%
% \fi
%
% \iffalse
%<*batchfile>
\begingroup
\input docstrip.tex
\keepsilent
\preamble
\endpreamble
\askforoverwritefalse
\IfFileExists{.///HA-prosper.sty}{}{
\generate{
\file{HA-prosper.sty}{\from{HA-prosper.dtx}{program}}
\file{HA-prosper.cfg}{\from{HA-prosper.dtx}{config}}
}}
\endgroup
%</batchfile>
%<*driver>
\documentclass[a4paper]{ltxdoc}
\input{HA-prosper.def}
\EnableCrossrefs
\CodelineIndex
% Comment the next line to generate source code documentation.
\OnlyDescription
\begin{document}
\DocInput{HA-prosper.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{2292}
%
% \DoNotIndex{\def,\xdef,\edef,\global,\gdef,\let,\if,\fi,\else}
% \DoNotIndex{\newcommand,\newenvironment,\renewcommand,\renewenvironment}
% \DoNotIndex{\begin,\end,\ifx,\ifnum}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
%\title{\vspace{-2em}\pf{HA-prosper} package\\\normalsize\emph{Documentation}\\
%\vspace{.5em}Version 4.21}
%\author{Hendri Adriaens\\
%\url{http://stuwww.uvt.nl/~hendri/downloads/haprosper.html}\\Center
%for Economic Research\\Tilburg University, the Netherlands}
%\maketitle\tableofcontents\listoftables\listoffigures
%
%\clearpage\section{General information} This manual provides
%information about working with the \pf{HA-prosper} package. This
%package is a patch for the \pf{prosper} class. Be sure to also study
%the documentation of the \pf{prosper} class and the \pf{hyperref}
%package. You can find this documentation for instance at the CTAN
%site for prosper \cite{prosperCTAN}, at the \pf{prosper} website
%\cite{prosper} or in your local \LaTeX\ distribution (for the MiKTeX
%distribution \cite{MiKTeX}, the documentation can be found in the
%|doc| directory in the MiKTeX root). Information about \pf{prosper}
%can also be found at the WikiProsper site \cite{WikiProsper}.
%
%If you want to start working with \pf{HA-prosper} immediately, have
%a look at the examples (see section~\ref{sec:examples}). If you are
%interested in how \pf{HA-prosper} actually works, have a look at the
%first lines of the source code available in the |Source| directory
%of the package or the |source| tree of your \LaTeX\ distribution
%which explains how to generate the source code documentation.
%
%Note that from version 4.1, \pf{HA-prosper} uses the \pf{xkeyval}
%package, which is available from CTAN \cite{xkeyvalCTAN} and is
%included in the MiKTeX distribution. Do not forget to install this
%package. See also section~\ref{sec:req}.
%
%Do not forget to check the \pf{HA-prosper} website
%\cite{HA-prosper} from time to time to see if there are updates
%for this package or new styles available. If, \emph{after reading
%this manual}, you have questions or comments about
%\pf{HA-prosper}, see section~\ref{sec:questions}.
%
%\subsection{The \pf{powerdot} class}\label{sec:newclass}
%This is the last release of the \pf{HA-prosper} package. We
%(Christopher Ellison and I) have created a new class called
%\pf{powerdot} \cite{powerdot} which has significant improvements
%over \pf{prosper} and \pf{HA-prosper} while keeping changes to
%presentation sources to a minimum. Over time, the support for
%\pf{HA-prosper} via the mailinglist will be minimized and users are
%advised to use \pf{powerdot} for new presentations.
%
%Further, information in this documentation was up to date in 2004,
%but might be outdated by now. The reason of not updating this is
%that since then all efforts have concentrated on the \pf{powerdot}
%class.
%
%\subsection{Compatibility}
%This section discusses compatibility issues between \pf{HA-prosper}
%and some other packages. The \pf{HA-prosper} package has been
%created and tested in an environment of MiKTeX 2.3 \cite{MiKTeX} and
%GhostScript 8.00 \cite{GhostScript} and newer versions of that
%software.
%
%\subsubsection{prosper}
%Since \pf{HA-prosper} is a patch for \pf{prosper}, it is important
%that you have the right version of \pf{prosper} which is 1.5
%(|prosper.cls| version 1.24)\footnote{This package is also
%compatible to the CVS version 1.25 of \pf{prosper}, but that
%version is still in beta stage and it is advisory not to use it.
%If you still want to use version 1.25 because of v\TeX\ support,
%delete or comment line 88 of |prosper.cls| then, namely were the
%\pf{pstcol} package is loaded, since that causes colors not to be
%defined properly.}. This is the CTAN version \cite{prosperCTAN}.
%
%\subsubsection{ppr-prv}
%A very nice package in combination with \pf{HA-prosper} is the
%`Prosper Preview' class, \pf{ppr-prv} \cite{ppr-prv}, created by
%Mathieu Goutelle \cite{Mathieu}. The aim of this class is to produce
%a printable version of the slides written with \pf{prosper} or
%\pf{HA-prosper} with two slides (or more at will) per page and a
%table of contents on the first page in case you are using
%\pf{HA-prosper}. Table~\ref{tab:pprpprvcompat} shows which versions
%of \pf{ppr-prv} and \pf{HA-prosper} are compatible. Each row of the
%table lists the compatible versions.
%\begin{table}[ht]
%\centering\caption{Compatible versions of \pf{HA-prosper} and
%\pf{ppr-prv}.}\label{tab:pprpprvcompat}
%\begin{tabular}{f}
%\pf{HA-prosper}&\pf{ppr-prv}&\pf{HA-prosper}&\pf{ppr-prv}\\\hline\hline
%3.7x&0.09&3.8&0.10\\\hline
%3.9&0.11&4.0&0.12\\\hline
%4.11&0.13&4.2&0.13\\\hline\hline
%\end{tabular}
%\end{table}
%
%\subsubsection{semcolor/pstcol/pstricks/color/xcolor}
%Recently, the incompatibilities of these packages have been solved
%and through a modification of \pf{semcolor}, the improved
%compatibility is also available to \pf{HA-prosper} users. Check the
%documentation of these packages to see whether or not your \LaTeX\
%distribution already includes the compatible versions. If so, then
%you can use both \pf{pstricks} color commands in your presentation
%or style as well as \pf{xcolor} commands.
%
%\subsubsection{babel}
%\pf{HA-prosper} redefines the |itemize| and the |enumerate|
%environments at the beginning of the document. This solves a bug
%that would otherwise occur when using the \pf{babel} package with
%the |french| option. The \pf{prosper} macro
%|\NoFrenchBabelItemize| is obsolete in \pf{HA-prosper} and has
%no function anymore. The order of loading the packages is
%important since \pf{HA-prosper} attempts to redefine some
%\pf{babel} macros. In case you want to use \pf{babel}, load
%\pf{babel} first and afterwards \pf{HA-prosper}.
%
%\subsubsection{Miscellaneous}
%Older versions of GhostScript might produce ugly display text and
%logo's. However, prints are fine in general. Furthermore, it has
%been shown that Acrobat Reader 4 \cite{AcroRead} generally does not
%display pictures properly.
%
%Since the |overlays| macro is not recognized by Scientific
%WorkPlace \cite{SWP}, this program is not supported. The advice is
%to use an editor for creating the slides, for example WinEdt
%\cite{WinEdt} or TexNicCenter \cite{TexNicCenter} (free).
%
%\subsection{Installation}\label{sec:inst}
%This package is included in the MiKTeX distribution \cite{MiKTeX}
%and in TeXLive \cite{TeXLive} and can be installed for you by
%these programs. However, if you downloaded this package from the
%\pf{HA-prosper} website \cite{HA-prosper} or from the
%\pf{HA-prosper} CTAN directory \cite{HA-prosperCTAN}), then here
%are some hints for installing the package into your \LaTeX\
%distribution.
%
%The package includes pre-generated run and doc files, but you can
%reproduce them from the source if necessary. See the first lines
%of |HA-prosper.dtx| for information how to do this. The files
%in |Doc| should go into the |doc| tree of your distribution,
%the files in |Run| into the |tex| run tree and the files in
%|Source| into the |source| tree. See the documentation of
%your \LaTeX\ distribution for information on installing
%\pf{HA-prosper} into your \LaTeX\ distribution or the TeX
%Frequently Asked Questions \cite{TeXFAQInst}.
%
%If you choose not to install the package into your \LaTeX\
%distribution, you can copy the necessary files (that is, the run
%files of \pf{HA-prosper} in the |Run| directory and the
%necessary files of the particular style, which can all be found in
%the relevant subdirectory of the |Run| directory) into your
%working directory.
%
%\subsection{Document set up}\label{sec:setup}
%The structure of a presentation created with \pf{HA-prosper} is
%comparable to that of a \pf{prosper} presentation. See the
%\pf{prosper} documentation for an overview.
%
%Do not forget to include
%\begin{verbatim}
%\usepackage[style,options]{HA-prosper}
%\end{verbatim}
%directly after the \pf{prosper} document class command to be able
%to use the new definitions provided in |HA-prosper.sty|. Here
%|style| is the style you want to use, for instance |HA|, and
%|options| are any package options which will be described in
%section~\ref{sec:new}. A summary of these options can be found in
%section~\ref{sec:packageoptions}.
%
%\DescribeMacro{\HAPsetup}
%You can set up certain features like footers and types of stepping
%environments globally (holding for the entire presentation, unless
%specified otherwise locally) using |\HAPsetup|, for instance
%\begin{verbatim}
%\HAPsetup{rf={My presentation},trans=Dissolve}
%\end{verbatim}
%This command can set up the features that you will be discussed in
%section~\ref{sec:new}. You can find a summary in
%section~\ref{sec:globals}.
%
%\subsection{Summary of package options}\label{sec:packageoptions}
%Table~\ref{tab:packageoptions} contains a summary of all package
%options of \pf{HA-prosper}. The numbers in between brackets are
%the sections where you can find more information about a specific
%option. See section~\ref{sec:setup} how to use these options.
%\begin{table}[ht]
%\caption{\pf{HA-prosper} package
%options.}\label{tab:packageoptions}\makebox[\textwidth][r]{
%\begin{tabular}{d}
%\hline\hline
%|sounds|& Turns on the |sound| key for slide environments (\ref{sec:slide}).\\\hline
%|toc|& Creates a table of contents on slides (\ref{sec:toc}).\\\hline
%|highlight|& Highlights the current slide in the table of contents (\ref{sec:tochl}).\\\hline
%|hlsections|& Highlights the current section on every slide within the section (\ref{sec:tochl}).\\\hline
%|portrait|& Creates portrait slides (\ref{sec:portrait}).\\\hline
%|notes|& Includes the notes in your presentation (\ref{sec:notes}).\\\hline
%|notesonly|& Includes only the notes in your presentation (\ref{sec:notes}).\\\hline
%|slidesonly|& Includes only the slides in your presentation (\ref{sec:notes}).\\\hline
%|blackslide|& Includes a black slide at the start of the presentation (\ref{sec:blslide}).\\\hline
%\hline
%\end{tabular}}
%\end{table}
%
%\subsection{Summary of global options}\label{sec:globals}
%Table~\ref{tab:hapsetupfeats} lists all the features of
%\pf{HA-prosper} that can be set using |\HAPsetup|. The numbers
%in between brackets are the sections where you can find more
%information about a specific feature. See section~\ref{sec:setup}
%how to use these global options.\par
%\begin{table}[ht]\caption{Global
%\pf{HA-prosper} options for \ci{HAPsetup}.}\label{tab:hapsetupfeats}
%\makebox[\textwidth][r]{
%\begin{tabular}{e}\hline\hline
%|lf|&Left footer (\ref{sec:footers}).&|sound|&Transition sound (\ref{sec:slide}).\\\hline
%|rf|&Right footer (\ref{sec:footers}).&|template|&Template for parts (\ref{sec:part}).\\\hline
%|sn|&Slide number layout (\ref{sec:footers}).&|stype|&Stepping environment type (\ref{sec:iestep}).\\\hline
%|tsnav|&Title slide navigation (\ref{sec:navs}).&|sstart|&Starting overlay (\ref{sec:iestep}).\\\hline
%|nsnav|&Normal slide navigation (\ref{sec:navs}).&|iacolor|&Inactive color (\ref{sec:iestep}).\\\hline
%|trans|&Transition effect (\ref{sec:slide}).&|counters|&Protect custom counters (\ref{sec:numbering}).\\\hline\hline
%\end{tabular}}
%\end{table}
%The features listed in table~\ref{tab:hapsetupfeats} all have a
%default value, which are discussed in the relevant sections. These
%values are defined in the file |HA-prosper.cfg|. This file can
%be modified. Modifications will have an effect on all
%presentations created using \pf{HA-prosper}\footnote{Note that the
%defaults saved in the |HA-prosper.cfg| file at the moment of
%installation are also saved in |HA-prosper.sty|. In case you
%accidentally delete a line in the |HA-prosper.cfg| file, the
%predefined defaults in |HA-prosper.sty| will be used.}.
%
%\subsection{Compilation}\label{sec:compile}
%If you use the |pdf| option in the |\documentclass|, compile with
%LaTeX2DVI - DVI2PS - PS2PDF to create slides with animations
%(incrementally displayed items created by the |itemstep|
%environment) that can be projected using for instance Acrobat Reader
%\cite{AcroRead}. Notice that \pf{HA-prosper} is build to work with
%papertype |letter| in the DVI2PS step (which is the default in the
%MiKTeX distribution and which can be achieved by adding |-t letter|
%to the command line of |dvips|), but the |Fyma| style supports |A4|
%paper as well. See section~\ref{sec:supportt}.
%
%If you want to print the slides, use the |ps2pdf| option and
%compile them with LaTeX2DVI - DVI2PS - PS2PDF and you can print
%the slides without animations.
%
%You can also use the Acrobat Distiller (included in Acrobat
%\cite{Acrobat}) to create the PDF from the PS file. This creates
%very efficient PDF files. Also see section~\ref{sec:result}. Do
%not forget to specify the \pf{prosper} class option `distiller' in
%this case to avoid errors when distilling the PS document. For
%instance
%\begin{verbatim}
%\documentclass[pdf,distiller]{prosper}
%\end{verbatim}
%
%If you prefer to use GhostView \cite{GhostView} for printing
%purposes, you can of course suffice with LaTeX2DVI - DVI2PS and
%print the slides form GhostView\footnote{You might have to shrink
%pages to fit the paper when printing the slides.}.
%
%A nice option for the `documentclass' is `draft'. This is provided
%by \pf{prosper} and speeds up the process of compiling and
%viewing the presentation by leaving out images. Deleting the
%option produces a presentation that includes all images again. See
%the \pf{prosper} class documentation for more details.
%
%\subsection{Upgrade information}
%This section contains information how to change your presentation
%in case you worked with an earlier version of \pf{HA-prosper}
%before and want to upgrade it. The list below contains the hints
%for upgrading with a single version step at a time. If you for
%instance want to upgrade from version 3.5 to the latest version,
%read all the entries in the list starting from the entry right the
%entry of version 3.5. If a particular version is not mentioned,
%this means that no changes need to be made to adapt the
%presentation to that version when starting at the last version
%before.
%
%\begin{itemize}
%\item[\fbox{3.0}] From \pf{HA-prosper} version 3.0, the
%package is based on the CTAN version of \pf{prosper}. This means
%that a separate version of \pf{prosper} is not distributed with
%this package anymore. If you used \pf{HA-prosper} before, replace
%the old style-file with the new one to upgrade to the latest
%version of \pf{HA-prosper} and do not forget to rename or delete
%prosper.cls in the working directory. \item[\fbox{3.5}] From
%version 3.5 of \pf{HA-prosper} the style definitions (template)
%will be loaded by \pf{HA-prosper}, not by \pf{prosper} anymore.
%This is done to avoid conflict when trying to use \pf{HA-prosper}
%templates with \pf{prosper}. Delete the style from the
%|\documentclass| command and put it in the |\usepackage|
%command of \pf{HA-prosper} when updating \pf{HA-prosper}. See also
%section~\ref{sec:inst}.
%\item[\fbox{3.6x}]\begin{itemize} \item When upgrading to
%\pf{HA-prosper} version 3.6, you might need to delete the
%|.toc| file of an existing presentation first since table
%of contents commands have changed and the new \pf{HA-prosper}
%is not able to understand the old commands. \item The
%|\email| and |\institution| commands have changed.
%In earlier version, defining them in the preamble of your
%presentation would make them appear on the title slide. Now, you
%have to put them inside the |\author| command. See
%section~\ref{sec:eia} for an example.
%\end{itemize}
%\item[\fbox{3.7x}]\begin{itemize} \item Download the full package
%to use the latest versions of the styles that are compatible to
%this version of \pf{HA-prosper}. \item Rename
%|\section| and |\sectionandpart| to
%|\tsection| and |\tsectionandpart| respectively.
%\end{itemize}
%\item[\fbox{3.8}]\begin{itemize} \item Download the full package
%to use the latest versions of the styles that are compatible to
%this version of \pf{HA-prosper}. \item Rename
%|\figureitem| to |\hiddenitem|. See
%section~\ref{sec:xitemwait}.\item Change slides that use the
%|dualslide| environment to for instance a normal
%|slide| and use the |\dualslide| macro to create a
%dualslide on that slide. See
%section~\ref{sec:dualslide}.\end{itemize}
%\item[\fbox{3.9}]
%\begin{itemize} \item |\figureitem| and
%|\putfigureitem| are no longer supported;
%|\putfigure| should be replaced by the more general
%|\topbl|, see section~\ref{sec:xitemwait}. \item The
%dualslide dimensions have changed a bit, see
%section~\ref{sec:dualslide}.\item More optional arguments for the
%|itemstep| environment are available now, see
%section~\ref{sec:iestep}.
%\end{itemize}
%\item[\fbox{4.0}]
%\begin{itemize} \item
%Commands |\TitleSlideNav|, |\NormalSlideNav|, |\LeftFoot|
%and |\RightFoot| are obsolete but still supported. You can use
%|\HAPsetup| instead, see section~\ref{sec:globals}.
%\item Some style commands have changed but backward
%compatibility is provided, see section~\ref{sec:styledev}.
%\item |\onSlide| and |\OnSlide| are provided but the \pf{prosper}
%macros |\fromSlide|, |\FromSlide|, |\untilSlide|, |\UntilSlide|,
%|\onlySlide| and |\OnlySlide| still work, see section~\ref{sec:onslide}.
%\item Toc behavior has changed a little bit. Empty slide titles
%will now produce empty toc entries and empty bookmarks. Deleting
%these happens by using respectively |toc=| and |bm=| (see section~\ref{sec:toc}).
%\end{itemize}
%\item[\fbox{4.1x}]
%\begin{itemize}
%\item \pf{HA-prosper} now uses \pf{xkeyval} \cite{xkeyvalCTAN}. Install
%this package to work with \pf{HA-prosper}.
%\item
%|\topbl| has been deleted. The macro can be found on the \TeX\ FAQ \cite{TeXFAQTop}.
%\item Replace |\item| by |\xitem| (see section~\ref{sec:xitem}).
%\item Replace |\hiddenitem| by |\xitemwait| (see section~\ref{sec:xitemwait}).
%\item When using |Lakar| style, replace |emptyslide| environments by
%|partslide| environments (see section~\ref{sec:wpe}).
%\end{itemize}
%\item[\fbox{4.2x}] No changes to presentations necessary.
%\end{itemize}
%
%\clearpage\section{New or changed environments and
%commands}\label{sec:new} This section describes the new commands
%provided by \pf{HA-prosper} and the originally \pf{prosper} commands
%that have been extended. The section assumes knowledge of the
%\pf{prosper} documentation.
%
%\subsection{The slide environment}\label{sec:slide}
%\DescribeEnv{slide}
%A slide is created using the |slide| environment. For instance
%\begin{verbatim}
%\begin{slide}[trans=Replace]{Sample slide}
%...
%\end{slide}
%\end{verbatim}
%The new |slide| environment has four options. They are
%listed in table~\ref{tab:slide}.
%\begin{table}[ht]
%\caption{Slide environment options.}\label{tab:slide}
%\makebox[\textwidth][r]{
%\begin{tabular}{d}\hline\hline
%|toc|&When specified, it will be used for the table of contents. When not\\
%&specified, the slide title will be used to create a toc entry (see section~\ref{sec:toc}).\\\hline
%|bm|&When specified, it will be used to create a bookmark. If not, the slide\\
%&title will be used as a bookmark.\\\hline
%|trans|&Slide transition effect (see the \pf{prosper} documentation) Default: |Replace|.\\\hline
%|sound|&Specify a sound file to be played when the slide is displayed.\\\hline
%\hline
%\end{tabular}}
%\end{table}
%Some remarks need to be made. First of all, when you supply an
%empty string as bookmark (so |bm=|), the bookmark will not be
%created. A similar thing holds for empty toc strings (|toc=|).
%See section~\ref{sec:toc}. The bookmark option is supplied to
%provide low level text for creating a bookmark in case you want
%the slide title to contain \LaTeX\ commands which might not be
%convertable to bookmarks\footnote{Note that the bookmarking
%procedure uses \ci{pdfstringdef} of \pf{hyperref} which is able
%to process things like \ci{"i}.}. For instance:
%\begin{verbatim}
%\begin{slide}[bm=Important!]{\red Important!}
%\end{verbatim}
%
%\DescribeSwitch{sounds}
%Second, adding transition sounds to a presentation is possible,
%but it is important to know that the sounds will not be embedded
%in the presentation and hence need to be supplied separately.
%Further, the presentation becomes system dependent by using
%sounds. It depends on the target machine if the specific sound
%file can be played or not. To switch on the use of sounds in your
%presentation, use the package option |sounds|, see
%section~\ref{sec:packageoptions}.
%
%The options |trans| and |sound| can be set globally by |\HAPsetup|
%(see section~\ref{sec:globals})\footnote{Notice that backward
%compatibility for \ci{DefaultTransition} is provided.}. The |sound|
%slide option adds the transition sound to all slides within
%|\overlays|. For more flexibility, the sound option also has a user
%interface to set sounds on pages directly. The sound file
%\DescribeMacro{\SlideSound}
%|sound.wav| is added using |\SlideSound| as follows.
%\begin{verbatim}
%\SlideSound{sound.wav}
%\end{verbatim}
%This code adds a transition sound to the first overlay only:
%\begin{verbatim}
%\onSlide*{1}{\SlideSound{sound.wav}}
%\end{verbatim}
%(see also section~\ref{sec:onslide} for the use of |\onSlide|).
%
%\subsection{Structuring the presentation}\label{sec:toc}
%\subsubsection{Building a table of contents}
%\DescribeSwitch{toc}
%You can include a table of contents on each slide. This can be
%used for navigational purposes during the presentation. When
%printing the slides, you might decide to leave out the table of
%contents. You can request a table of contents by specifying the
%option |toc| in the |\usepackage| command for the style
%file, like
%\begin{verbatim}
%\usepackage[toc,HA]{HA-prosper}
%\end{verbatim}
%(see also the examples in this distribution). \pf{HA-prosper} will
%use slide titles by default to produce the table of contents, but
%this behavior can be changed (see section~\ref{sec:slide}).
%
%Some remarks. First of all, the table of contents will of course
%only be put on the slides when it has been implemented in the style
%that you are using. See section~\ref{sec:supportt}. Second,
%\pf{HA-prosper} offers possibilities for style developers to split
%the table of contents into two parts the first of which will contain
%the sections and the second will contain the content of the current
%section.
%
%Third, if you specify an empty string as toc entry (so |toc=|),
%the toc entry will be deleted from the table of contents. This
%allows for building an overview of your presentation. Hence the
%table of contents can both be used for navigational purposes (like
%the bookmarks) and to provide an overview of the presentation.
%
%Finally, as with a usual table of contents in \LaTeX, you need to
%run your presentation at least twice after altering slides or toc
%entries. On the first pass, the table of contents will be updated
%and on the second run, the new table of contents will be included
%in the presentation.
%
%\subsubsection{Highlighting table of contents entries}\label{sec:tochl}
%\DescribeSwitch{highlight}
%If you want to highlight the current slide or the slide created by
%a |\part| or |\tsectionandpart| command (see section~\ref{sec:pas})
%in the table of contents, specify the
%|highlight| option, like
%\begin{verbatim}
%\usepackage[toc,highlight,HA]{HA-prosper}.
%\end{verbatim}
%Of course, the |highlight| option only takes effect when
%also the |toc| option has been specified (and of
%course the style you are using should support highlighting and the
%table of contents). This |highlight| option can be nice
%for both yourself and the audience since everyone can clearly see
%on which slide or in which section of the presentation you are.
%
%\DescribeSwitch{hlsections}
%An extra option is the |hlsections| option. This will make the
%current section highlighted on every slide within the current
%section. This can be especially useful when sections and section
%content are split in the style that you use, which would otherwise
%result in unclarities about the current section\footnote{Splitting
%of the table of contents is often implemented on portrait
%templates.}. When the table of contents is not split up, this option
%might be left out since in this case, the hierarchical structure of
%the table of contents clearly identifies the current section.
%
%\subsection{Parts and sections}\label{sec:pas}
%\subsubsection{tsection}\label{sec:section}
%\DescribeMacro{\tsection}
%By using the |\tsection|
%command, it is possible to divide the table of contents in several
%sections. The content of a section will be hidden until you access
%a slide inside this section. The section heading in the table of
%contents itself refers to the first slide after the section
%command. The section command should be used between slides. The
%following shows an example.
%\begin{verbatim}
%\begin{slide}{First slide}
%Some text
%\end{slide}
%
%\tsection[Bookmark for section 1]{Section 1}
%
%\begin{slide}{Second slide}
%Some text
%\end{slide}
%\end{verbatim}
%The optional argument of the |\tsection| macro can be used
%to specify the string to be used for the bookmark. Notice that all
%slides that are met before issuing the first |\tsection|
%command will always be displayed in the table of contents.
%Exceptions hold for two cases. The first is when issuing an empty
%string as toc entry in the |slide| environment (see
%section~\ref{sec:slide}). The second is when the style that you
%are using implements a split table of contents. In this case, the
%content of every new section will replace the content of the old
%section when going from the old section to the new section. The
%entries before the first section will then be replaced by the
%entries of the first section when advancing to that section.
%
%\DescribeMacro{\tsection*}
%Furthermore, |\tsection*| is available. It has the exact same
%possibilities as |\tsection|, but this command hides the section
%created by |\tsection*| completely until you enter it (for instance
%with a hyperlink to a slide, by using bookmarks or by browsing the
%slides). This can be useful if you want to include slides in your
%presentation, that you don't want to show in the table of contents,
%but which you could include into the presentation if you see that
%you have some time left. But there are of course other applications
%thinkable.
%
%\subsubsection{part}\label{sec:part}
%\DescribeMacro{\part}
%The |\part| command lets you identify separate parts in your
%presentation. The command |\part{Part I}| produces a normal slide
%with horizontally centered the words `Part I'. The argument will
%also be used to create a bookmark and a toc entry (if a table of
%contents is requested). The |\part| takes the same options as the
%|slide| environments (see section~\ref{sec:slide}), but it should be
%noted that in case you specify an empty string for the |bm| option,
%the part title will be used to create the bookmark.
%
%An additional option for the |\part| command is the
%|template| option. This allows to select a different
%template (supplied by the style that you use) for the slide
%created by the |\part| command. For instance, the HA-style
%supplies the template `wideslide'. You can use that template for
%the part to delete the table of contents from that particular
%slide. Example:
%\begin{verbatim}
%\part[template=wideslide,toc=Part number one,bm=The first part]{Part I}
%\end{verbatim}
%
%Note that the option |template| can be set globally for the entire
%presentation (see section~\ref{sec:globals}). The default value of
%|template| is |slide|.
%
%\subsubsection{tsectionandpart}\label{sec:secandpart}
%\DescribeMacro{\tsectionandpart}
%The
%|\tsectionandpart| command is a combination of the
%|\tsection| command (see section~\ref{sec:section}) and the
%|\part| command (see section~\ref{sec:part}). This command
%is supplied since issuing the two previous commands after each
%other cannot replicate the output of |\tsectionandpart|.
%The command has the same optional arguments as the |\part|
%command and besides creating a slide, it also creates a section in
%the table of contents. The section heading in the table of
%contents will now refer to the slide created by the |\part|
%command.
%
%\DescribeMacro{\tsectionandpart*}
%Notice that |\tsectionandpart*| produces similar output as
%|\tsection*|. Namely, it hides the section in the table of
%contents completely until it is accessed by going to any slide
%within this section. See also section~\ref{sec:section}. As
%|\tsectionandpart|, it also creates a |\part| slide.
%
%\subsection{Dualslide}\label{sec:dualslide}
%\DescribeMacro{\dualslide}
%The |\dualslide| macro allows to split content into two
%columns. Usage:
%\begin{samepage}
%\begin{verbatim}
%\dualslide[opt1][opt2][opt3]{options}{left}{right}
%\end{verbatim}
%The parameters are explained in
%table~\ref{tab:dspars}.\end{samepage}\par
%\begin{table}[ht]\centering
%\caption{Dualslide parameters.}\label{tab:dspars}
%\begin{tabular}{d}
%\hline\hline
%|opt1|& Any \pf{PSTricks} options to change the style of the\\
%&(optional) left frame. Example: |linestyle=dotted|.\\\hline
%|opt2|& Idem for the line in between the two columns.\\\hline
%|opt3|& Idem for the right column.\\\hline
%|options|& Options for the dualslide, see table~\ref{tab:dsoptions}.\\\hline
%|left|& The content for the left column.\\\hline
%|right|& The content for the right column.\\\hline\hline
%\end{tabular}
%\end{table}
%\begin{table}[ht]
%\caption{Dualslide options.}\label{tab:dsoptions}
%\makebox[\textwidth][r]{
%\begin{tabular}{d}
%\hline\hline
%|lineheight|& If |lineheight| is specified, a line of the specified height will be created\\
%&using \ci{psline} in between the two columns. Example: |lineheight=6cm|.\\\hline
%|lfrheight|& Creates a frame of the specified height around the left column.\\\hline
%|rfrheight|& Creates a frame of the specified height around the right column.\\\hline
%|frsep|& Space between text and the frames. Default: |1.5mm|.\\\hline
%|colsep|& Space between the two columns. Default: |0.06|\ci{linewidth}.\\\hline
%|lcolwidth|& Width of the left column. Default: |0.47|\ci{linewidth}.\\\hline
%|rcolwidth|& Width of the right column. Default: |0.47|\ci{linewidth}.\\\hline
%|topsep|& The extra space (additional to \ci{baselineskip}) between text above\\
%&the columns and the text within the columns. Default: |0cm|.\\\hline
%|bottomsep|& Idem for the bottom of the columns. Default: |0cm|.\\\hline
%|indent|&Horizontal indent left to the left column. Default: |0cm|.\\\hline\hline
%\end{tabular}}
%\end{table}
%The dimensions described in table~\ref{tab:dsoptions} are
%represented graphically in figure~\ref{fig:dsldim}.
%\begin{figure}[ht]
%\centering\caption{Dualslide dimensions.}\label{fig:dsldim}
%\pspicture(0,.5)(13,10.5)
%\psline(0,0.5)(0,10)
%\rput[tl](.05,9.95){Top}
%\psframe[dimen=middle](1,9)(7,2)
%\psline{C-C}(8.5,9)(11,9)
%\psline{C-C}(8.5,2)(8.5,9)
%\psline{C-C}(8.5,2)(11,2)
%\qdisk(1.7,8.3){.1cm}
%\psset{linestyle=dashed}
%\psline{C-C}(1.7,8.3)(6.3,8.3)
%\psline{C-C}(1.7,8.3)(1.7,3)
%\psline{C-C}(6.3,5)(6.3,8.3)
%\psline{C-C}(11,9)(12,9)
%\psline{C-C}(11,2)(12,2)
%\psline{C-C}(11,7)(12,7)
%\psline{C-C}(9.2,8.3)(12,8.3)
%\psline{C-C}(9.2,8.3)(9.2,3)
%\rput[tl](1.75,8.25){Left column text}
%\rput[tl](9.25,8.25){Right column text}
%\rput[tl](.05,1){Bottom}
%\psset{linestyle=dotted,dotsep=2pt}
%\psline(0,8.3)(1.7,8.3)
%\psline(0,9.6)(1,9.6)
%\psline(0,2)(1,2)
%\psline(0,1.1)(1,1.1)
%\psset{linestyle=solid}
%\psline{<->}(.2,8.33)(.2,9.57)
%\psline{<->}(4,8.33)(4,8.97)
%\psline{<->}(1.73,7)(6.27,7)
%\psline{<->}(1.03,6.5)(1.67,6.5)
%\psline{<->}(0.03,5.5)(1.67,5.5)
%\psline{<->}(6.33,7.4)(9.17,7.4)
%\psline{<->}(8.53,6.5)(9.17,6.5)
%\psline{<->}(6.33,6.5)(6.97,6.5)
%\psline{<->}(10.7,8.33)(10.7,8.97)
%\psline{<->}(7.3,8.97)(7.3,2.03)
%\psline{<->}(.2,1.13)(.2,1.97)
%\psline{->}(1.7,9.3)(1.7,8.45)
%\psline{<-}(9.23,7)(11,7)
%\cput(4,6.6){\small 1}
%\cput(11.1,6.6){\small 2}
%\cput(8,7){\small 3}
%\cput(7.7,3){\small 4}
%\cput(4.4,8.65){\small 5}
%\cput(1.35,6.1){\small 5}
%\cput(8.85,6.1){\small 5}
%\cput(11.1,8.65){\small 5}
%\cput(6.65,6.1){\small 5}
%\cput(0.6,8.95){\small 6}
%\cput(0.6,5.1){\small 7}
%\cput(0.6,1.55){\small 8}
%\cput(1.7,9.6){\small 9}
%\endpspicture
%\begin{center}
%\begin{tabular}{c p{4cm}cl}
%\multicolumn{4}{c}{Meaning of the numbers}\\\hline
%1&|lcolwidth|&5&|frsep|\\
%2&|rcolwidth|&6&|topsep|\\
%3&|colsep|&7&|indent|\\
%4&|lfrheight|, |rfrheight|,&8&|bottomsep|\\
%&|lineheight|&9&Reference point
%\end{tabular}
%\end{center}
%\end{figure}
%Important to notice is that the |\dualslide| macro uses the
%current cursor position as the reference point to position the
%first line of text of the left column (see also
%figure~\ref{fig:dsldim}). This means that optional frames can
%extend to the text on the previous line. Use for instance
%|topsep=0.3cm| in that case to add extra space between the
%two lines of text. The default value of |topsep| is based
%on the situation that there is no text on top of the two columns.
%In that case, it is best to locate the first line of text of the
%left column at the same spot as text that is not created by
%|\dualslide| on other slides. The setting
%|topsep=0cm| does exactly this. However, with a combination
%of |topsep| and |indent| you can change this
%behavior and position the first line of text of the left column
%anywhere you want.
%
%The dualslide macro computes the height of the construction to
%position text below the construction correctly. The computation is
%done by taking the maximum height of |lfrheight|,
%|rfrheight|, |lineheight| (if requested) and the
%left and right column content. Hence when frames nor a line is
%requested, |bottomsep| is the vertical space between the
%lowest line of text in the columns and the text below the columns
%(additional to |\baselineskip|).
%
%Furthermore, if none of the optional arguments has been specified,
%|dualslide| will use the \pf{PSTricks} defaults for
%creating frames and the line. Two exceptions:
%|linewidth=.25pt| and |linecolor=HAP@framecolor| by
%default, but these can of course again be changed using the
%optional arguments. When only |opt1| has been specified,
%this is used globally for both frames and the line. When both
%|opt1| and |opt2| have been specified, |opt1|
%will be used for both frames and |opt2| will be used for
%the line. In case you want to change the properties of the right
%frame only, call for instance
%\begin{verbatim}
%\dualslide[ ][ ][linecolor=red]{rfrheight=6cm}{left content}{right content}
%\end{verbatim}
%
%More examples can be found in the example files of \pf{HA-prosper},
%see section~\ref{sec:examples}. Also have a look at
%section~\ref{sec:animating} for information about animating content.
%The commands described there can also be used to animated content in
%the two columns.
%
%\subsection{Animating content}\label{sec:animating}
%\subsubsection{itemstep and enumstep}\label{sec:iestep}
%\DescribeEnv{itemstep}
%\DescribeEnv{enumstep}
%The |itemstep| and |enumstep| environments are based
%on the |itemize| and |enumerate| environments
%respectively, but with these environments, items will be displayed
%incrementally. Available options can be found in
%table~\ref{tab:iestepopts}.
%\begin{table}[ht]
%\caption{Itemstep and enumstep
%options.}\label{tab:iestepopts}
%\makebox[\textwidth][r]{
%\begin{tabular}{d}
%\hline\hline
%|sstart|& Starts the stepping environment on overlay |sstart|. Default: 1.\\\hline
%|iacolor|& Inactive color, used for inactive items. Default: lightgray.\\\hline
%|stype|& Type of stepping environment. Default: 0. Possible:\\
%&0 -- items appear one by one, but remain active;\\
%&1 -- items appear one by one, but turn inactive when moving to the next item;\\
%&2 -- all items are displayed and only one is active at a time.\\
%\hline\hline
%\end{tabular}}
%\end{table}
%These environments can be nested into each other and lower level
%environments inherit options from higher level environments. The
%|sstart| option has effect only in the highest level stepping
%environment (which can be embedded in an |itemize| or |enumerate|
%environment). The items of an |itemize| environment, which is nested
%in a stepping environment, will inherit the state (active or not)
%from the item in the stepping environment to which the
%(sub)environment(s) belong to. If |itemize| or |enumerate| is used
%at the top level, all items are active on all overlays. Find an
%example below (for the meaning of |\xitem|, refer to
%section~\ref{sec:xitem}).
%\begin{verbatim}
%\overlays{6}{
%\begin{slide}{xitem example}
%Some text.
%  \begin{itemstep}[sstart=2,stype=0,iacolor=gray]
%    \xitem item 1
%    \begin{enumstep}[stype=1] % inherits iacolor!
%      \xitem item 1.1
%      \xitem item 1.2
%    \end{enumstep}
%    \xitem item 2
%    \xitem item 3
%  \end{itemstep}
%\end{slide}
%}
%\end{verbatim}
%See section~\ref{sec:examples} for more examples and section
%\ref{sec:xitemwait} for a tool for these environments. The
%options for the stepping environments can also be set globally
%using the |\HAPsetup| macro (see section~\ref{sec:globals}).
%
%Note that the use of type 1 or 2 stepping environments requires
%the definition of the color |HAP@textc| by the template
%that you use. See section~\ref{sec:styledev}.
%
%\subsubsection{xitem}\label{sec:xitem}
%\DescribeMacro{\xitem}
%\pf{HA-prosper} defines a new command, |\xitem|, to be used within
%|itemize|, |enumerate|, |itemstep| and |enumstep| environments.
%Within |itemstep| and |enumstep| environments it will take care of
%the animation effect discussed in section~\ref{sec:iestep}. Within
%|itemize| and |enumerate| environments it will just display the
%content. Defining this command is necessary since redefining |\item|
%would damage macros and environments using |\item| (for instance
%|center|, |flushright|, |flushleft|).
%
%The |\xitem| macro also has a version in which it takes an optional
%value $n$ by doing |\xitem<n>|. This value is the extra number of
%overlays that the item should remain active in a stepping
%environment and is ignored in an |itemize| or |enumerate|
%environment. This optional argument can be useful when you want to
%add content to the current item on a later overlay. Notice that this
%can make several items active at a particular overlay. To avoid
%this, add |\xitemwait| before the next item. See the example below
%and section~\ref{sec:xitemwait}.
%\begin{verbatim}
%\overlays{3}{
%\begin{slide}{xitem example}
%\begin{itemstep}[stype=1]
%  \xitem<1> Yes?
%  \onSlide{2-}{No!}
%  \xitemwait
%  \xitem Because...
%\end{itemstep}
%\end{slide}
%}
%\end{verbatim}
%
%Note that a possibly unfamiliar syntax has been chosen for
%|\xitem<n>|. This done to easily support the other optional argument
%that comes with |\xitem| since it is an extension of the standard
%|\item|. The optional argument allows you to overwrite the item
%label, for instance |\xitem[a]| or |\xitem<1>[b]|. See your favorite
%\LaTeX\ manual for more information about the latter.
%
%\subsubsection{xitemwait}\label{sec:xitemwait}
%\DescribeMacro{\xitemwait}
%The command |\xitemwait| tells \pf{HA-prosper} to wait for one
%overlay before passing on to the next item in a stepping
%environment. The optional argument $n$ tells \pf{HA-prosper} to wait
%$n$ overlays before passing on to the next item. Example:
%\begin{verbatim}
%\overlays{5}{
%\begin{slide}{xitemwait example}
%  \begin{itemstep}
%    \xitem 1
%    \xitem 2
%    \xitemwait[2]
%    \xitem 3
%  \end{itemstep}
%\end{slide}
%}
%\end{verbatim}
%This might come in handy to animate custom content using |\onSlide|
%(see section~\ref{sec:onslide}) in dualslides
%(section~\ref{sec:dualslide}) in combination with stepping
%environments (section~\ref{sec:iestep}). Outside stepping
%environments, the macro has no effect.
%
%\subsubsection{onSlide and OnSlide}\label{sec:onslide}
%\DescribeMacro{\onSlide}
%The macro
%|\onSlide{overlays}{material}| displays |material| on the
%overlays listed in |overlays|. This can be a comma delimited
%list and the syntax explained in table~\ref{tab:osnot} can be
%used ($x$ and $y$ are positive integers with $y\geq x$).
%\begin{table}[ht]\centering
%\caption{Notation for \ci{onSlide}, \ci{onSlide*} and
%\ci{OnSlide}.}\label{tab:osnot}
%\begin{tabular}{d}\hline\hline
%$x$&Display material only on overlay $x$.\\\hline
%-$x$&Display material until and including overlay $x$.\\\hline
%$x$-&Display material from and including overlay $x$.\\\hline
%$x$-$y$&Display material from $x$ until $y$, including $x$ and $y$.\\\hline
%\hline
%\end{tabular}
%\end{table}
%When used inside an |itemstep| or |enumstep| environment, there is
%extra syntax available. This syntax follows the same rules as
%explained in table~\ref{tab:osnot}, but now $x$ and $y$ can start
%with a |+| sign. This sign can be used to animate content relative
%to the preceding |\xitem| in an |itemstep| or |enumstep|
%environment. Suppose that for instance the preceding |\xitem| of
%|\onSlide{+1-+2}{...}| will be displayed on overlay 6. Then the
%material of |\onSlide| will be displayed from overlay 7 to 8. Since
%this construct is relative, it is very easy to add to or delete
%items from the list without having to adapt all of the |\onSlide|
%commands that you used. See another example below.
%\begin{verbatim}
%\overlays{4}{
%\begin{slide}{onSlide example}
%\begin{itemstep}
%  \xitem item 1
%  \xitem item 2
%  \begin{itemize}
%    \xitem item 3 \onSlide{+1-}{and item 4}
%  \end{itemize}
%  \xitemwait
%  \xitem item 5
%\end{itemstep}
%\end{slide}
%}
%\end{verbatim}
%
%The |\onSlide| macro collects and generalizes all the
%functionality of the \pf{prosper} macros |\onlySlide|,
%|\untilSlide| and |\fromSlide|. This macro advances the
%cursor position even if the material is not displayed. The stared
%version |\onSlide*| does not advance the cursor position in
%case the material is not displayed and collects the functionality
%of the \pf{prosper} macros |\onlySlide*|, |\untilSlide*| and
%|\fromSlide*|. Note that these macros can be nested into each
%other, which allows for the creation of more parsimonious
%structures (which will also become more complex). For instance,
%\begin{verbatim}
%\onSlide{-3,5-6,8,10-}{One}\onSlide{-2,6,8,10-}{Two}\onSlide{2,8,10-}{Three}
%\end{verbatim}
%and
%\begin{verbatim}
%\onSlide{-3,5-6,8,10-}{One\onSlide{-2,6-}{Two\onSlide{2,8-}{Three}}}
%\end{verbatim}
%produce the same output. The following example demonstrates the
%difference between |\onSlide| and |\onSlide*|:
%\begin{verbatim}
%\onSlide{1}{One}\onSlide{2}{Two}\onSlide{3-}{Three}\par
%\onSlide*{1}{One}\onSlide*{2}{Two}\onSlide*{3-}{Three}
%\end{verbatim}
%
%\DescribeMacro{\OnSlide}
%The macro |\OnSlide{overlays}| also accepts the same syntax as the
%|\onSlide| macro and can be used to display or not all of the
%following material on a slide after the |\OnSlide| macro. This macro
%collects the functionality of the \pf{prosper} macros |\OnlySlide|,
%|\UntilSlide| and |\FromSlide|.
%Example:
%\begin{verbatim}
%\OnSlide{3-} All of this material will be displayed as from overlay 3.
%\end{verbatim}
%
%\subsection{Numbering on overlays}\label{sec:numbering}
%Mathieu Goutelle \cite{Mathieu} contributed a patch for the
%|\overlays| macro which makes it possible to number equations,
%tables and figures on overlays. This patch has been extended such
%that you can also protect custom counters on overlays. For general
%information about numbering, see your favorite \LaTeX\ book for
%more information.
%
%The |counters| option for |\HAPsetup| (section~\ref{sec:globals})
%can be used to list the counters that should be protected. For instance,
%\begin{verbatim}
%\newtheorem{mytheorem}{Theorem}
%\newtheorem{myproof}{Proof}
%\HAPsetup{counters={mytheorem,myproof}}
%\end{verbatim}
%in your preamble, will let you safely do
%\begin{verbatim}
%\overlays{3}{
%\begin{slide}{Proof}
%  \begin{myproof}
%    Suppose that:
%    \begin{equation}
%      x^2+y^2=z^2
%    \end{equation}
%    then\dots
%  \end{myproof}
%\end{slide}
%}
%\end{verbatim}
%The counters |figure|, |equation| and |table| are protected
%on overlays by default. The |counters| option for |\HAPsetup|
%lists the additional counters that should be protected. Notice that
%the counter that you want to protect needs to exist when issuing
%|\HAPsetup| to set the protected counters.
%
%\subsection{Portrait slides}\label{sec:portrait}
%\DescribeSwitch{portrait}
%If a template supports portrait slides, you can access these by
%specifying the |portrait| option in the |\usepackage| command
%like
%\begin{verbatim}
%\usepackage[toc,portrait,HA]{HA-prosper}.
%\end{verbatim}
%When requesting portrait slides, a template will give an error if
%it does not support portrait slides. See
%section~\ref{sec:supportt} for the templates that support portrait
%slides. When using portrait slides, the |hlsections| option might
%be useful for you, see section~\ref{sec:tochl}.
%
%\subsection{Notes}\label{sec:notes}
%\DescribeEnv{notes}
%The \pf{HA-prosper} package provides a way to make notes in
%your presentation. To include notes in the presentation that go
%with a slide, start a |notes| environment after this slide.
%For instance
%\begin{verbatim}
%\begin{slide}{First slide}
%...
%\end{slide}
%
%\begin{notes}{Notes for the first slide}
%These are the notes for the first slide.
%\end{notes}
%\end{verbatim}
%
%\DescribeSwitch{slidesonly}
%\DescribeSwitch{notesonly}
%\DescribeSwitch{notes}
%An additional option in the |\usepackage| command provides a
%way to control the printing of notes and slides. Include at most
%one of the following options.
%\begin{itemize}
%\item |slidesonly|: produces the slides only. This is the
%default option. Use this to create the presentation that you want
%to project. \item |notesonly|: produces the notes only.
%\item |notes|: includes the notes in the presentation.
%\end{itemize}
%For instance
%\begin{verbatim}
%\usepackage[toc,notesonly,HA]{HA-prosper}
%\end{verbatim}
%
%\textbf{Note}: If you want the notes only, first run the
%presentation at least once with the option `notes' to create
%correct labels for the notes page numbers. Once that is done, run
%the presentation with the `notesonly' option to create the
%notes\footnote{In case you use landscape slides, do not forget to
%put Auto-Rotation of pages to `Individually' if you are using the
%Acrobat Distiller to create the PDF. `Collectively by File' will
%rotate will rotate notes to landscape just like the slides.}.
%
%\subsection{Bibliography}\label{sec:bib}
%\DescribeEnv{thebibliography}
%\pf{HA-prosper} redefines the standard \pf{article}
%|thebibliography| environment to suppress the creation of a section
%heading and running headers. All other properties are maintained.
%Now you can do either of the next two (depending whether you are
%using BiB\TeX\ or not):
%\begin{center}
%\begin{tabular}{p{7cm}p{5cm}}
%\begin{verbatim}
%\begin{slide}{slide 1}
%\cite{someone}
%\end{slide}
%\begin{slide}{References}
%\begin{thebibliography}{1}
%\bibitem{someone} Article of someone.
%\end{thebibliography}
%\end{slide}
%\end{verbatim}&
%\begin{verbatim}
%\begin{slide}{slide 1}
%\cite{someone}
%\end{slide}
%\begin{slide}{References}
%\bibliography{YourBib}
%\end{slide}
%\end{verbatim}
%\end{tabular}
%\end{center}
%In case you have a big reference list that you want to spread over
%multiple slides, have a look at the packages \pf{natbib} and
%\pf{bibentry} \cite{natbibCTAN}. Using both packages allows you to
%do:
%\begin{verbatim}
%\begin{slide}{References (1)}
%\nobibliography{YourBib}
%\bibentry{someone1}
%\bibentry{someone2}
%\end{slide}
%\begin{slide}{References (2)}
%\bibentry{someone3}
%\end{slide}
%\end{verbatim}
%Have a look at your favorite \LaTeX\ documentation for more
%information about citations and bibliographies.
%
%\subsection{Bookmarks}\label{sec:bookmarks}
%\pf{HA-prosper} nests bookmarks within sections created by
%|\tsection| and |\tsection*| (see section~\ref{sec:section}) and
%|\tsectionandpart| and |\tsectionandpart*| (see
%section~\ref{sec:secandpart}). On the first pass of a document,
%bookmarks will be written to disk and will be read on the second
%pass to create the bookmarks. This is necessary to identify the
%number of slide bookmarks that should be nested within section
%bookmarks.
%
%Notice that the bookmark of a |\tsection| (or
%|\tsection*|) points to the first slide within the section,
%just as the toc link generated by this section. Furthermore, as
%|\part| does not create a toc section, it does not create a
%bookmarks section. This allows for creating both a flat table of
%contents as well as a flat bookmarks list.
%
%The nesting of bookmarks in sections is fully compatible to the
%nesting of bookmarks of overlays subordinate to the bookmarks of
%the first overlay of a slide. Bookmarks created by section
%commands are open and the bookmarks of slides are closed by
%default. You can change the latter by issuing the \pf{prosper}
%command |\collapsedBookmarksfalse| in the preamble of your
%presentation.
%
%\subsection{Black slide}\label{sec:blslide}
%\DescribeSwitch{blackslide}
%The package option |blackslide| creates a completely black
%slide as the first slide of the presentation. The PDF-file will
%start at page 2 when opened, the first real slide, so the black
%slide will not be revealed. The slide has an embedded target
%called `blackslide'. In the top left corner of the black slide, a
%black button is positioned which performs the Acrobat menu option
%`GoBack' when clicking it. This allows to temporarily stop the
%presentation (for instance, to write something at the blackboard)
%by clicking a hyperlink that points to the target `blackslide'.
%When the writing it done, click in the top left corner of the
%black slide to continue the presentation.
%
%\subsection{Footers}\label{sec:footers} The
%footers can be defined by the |\HAPsetup| command (see
%section~\ref{sec:globals})\footnote{Notice that backward
%compatibility is provided for \ci{LeftFoot} and
%\ci{RightFoot}.}, for instance
%\begin{verbatim}
%\HAPsetup{lf={Left footer},rf={Right footer}}
%\end{verbatim}
%The default values of |lf| and |rf| are empty strings. The
%slide number layout can be specified by the |sn| option. The
%default value of |sn| is\footnote{\ci{thepage}
%contains the number of the current slide, \ci{totalpages} inserts
%the total number of slides in the presentation and
%\ci{ifallPages} is a conditional from \pf{prosper} which is false
%if the \pf{prosper} class option |nototal| is specified by the
%user.}
%\begin{verbatim}
%{-~p.~\thepage\ifallPages/\totalpages\fi}
%\end{verbatim}
% which resembles the standard \pf{prosper} layout.
%\pf{HA-prosper} adds a space in between the text specified by
%|rf| and the text specified by |sn| to create the entire
%right footer. Another example of the slide number layout could be
%\begin{verbatim}
%\HAPsetup{sn={slide~\#\thepage}}.
%\end{verbatim}
%
%\subsection{e-mail, institution and the
%and-command}\label{sec:eia}
%\DescribeMacro{\author}
%\DescribeMacro{\email}
%\DescribeMacro{\institution}
%\pf{HA-prosper} changes the behavior
%of the \pf{prosper} commands |\email| and |\institution|.
%The package does not anymore put them directly onto the title
%page. Instead, you can use them inside the |\author| command to
%use the fonts that the template specifies for the e-mail address
%and the institution. This is done to offer support for the
%|\and| command\footnote{This was not possible in the
%construction used by \pf{prosper}.}. Example:
%\begin{verbatim}
%\author{%
%  Me\\
%  \institution{My institution}\\
%  \email{My e-mail address}
%  \and
%  You\\
%  \institution{Your institution}\\
%  \email{Your e-mail address}
%}
%\end{verbatim}
%
%\clearpage\section{Style specific features} This section documents
%several style specific features. Check table~\ref{tab:supportt} in
%section~\ref{sec:supportt} to find which features are supported by
%each template.
%
%\subsection{maketitle}\label{sec:mct}
%\DescribeMacro{\maketitle}
%This adapted command
%replaces the usual |\maketitle| and takes care of defining
%a title slide with a different layout as the first slide, include
%the title on that slide and create the rest of the slides as
%normal slides (unless specified differently by using for instance
%another slide environment, see section~\ref{sec:wpe}).
%
%This command has the same options as the |slide| environment (see
%section~\ref{sec:slide}. By default, the title slide will appear in
%neither the bookmarks list nor the table of contents. You can change
%this by specifying respectively the |bm| option and/or the |toc|
%option (see section~\ref{sec:slide}).
%
%If the |\maketitle| feature is not supported by a style,
%then the |\maketitle| uses a normal slide to display the
%title on.
%
%\subsection{Wideslide and partslide}\label{sec:wpe}
%\DescribeEnv{wideslide}
%A |wideslide| produces a slide with an extended text area in case
%you need to display very wide formulas or figures. In a lot of
%templates, this means that the table of contents will not be
%displayed on a wideslide.
%
%As a remark: the optional arguments possible for the
%|\maketitle| (see section~\ref{sec:mct}) are also available
%for the modified slide environments. So
%\begin{verbatim}
%\begin{wideslide}[toc=Toc slide title,trans=Replace]{Slide title}
%...
%\end{wideslide}
%\end{verbatim}
%creates a |wideslide| which does not have transition
%effects itself and uses `Toc slide title' as the entry for the
%(optional) table of contents. See section~\ref{sec:toc} for more
%information about the optional table of contents.
%
%\DescribeEnv{partslide}
%The |partslide| environment is available in some styles. This
%environment uses a template which has been designed especially for
%use with the |\part| (see section~\ref{sec:part}) and the
%|\sectionandpart| commands (see section~\ref{sec:secandpart}).
%
%See section~\ref{sec:supportt} to find which styles support
%|wideslide| or |partslide| environments.
%
%\subsection{Hidden navigation}\label{sec:navs} If you use Acrobat (Reader)
%to project the slides, it is possible to embed hidden navigational
%components. The navigational components are accessed by clicking
%the logo on a slide (unless stated otherwise in style specific
%documentation). These components are always hidden and hence
%removing their definitions when you want to print the slides is
%not necessary. Using |\HAPsetup| (see
%section~\ref{sec:globals}), you can set the following
%options\footnote{Notice that backward compatibility for
%\ci{TitleSlideNav} and \ci{NormalSlideNav} is provided.}:
%\begin{itemize}
%\item |tsnav|\\
%Navigation possibilities of the logo on the title slide.\\
%For instance: |tsnav=FullScreen|: when starting the
%presentation, you can make the presentation full screen by
%clicking the logo.
%
%\item |nsnav|\\
%Navigation possibilities on all other slides.\\
%For instance: |nsnav=ShowBookmarks| or |nsnav=GoToPage|: the
%former will provide a list of slide titles when viewing the
%presentation in full screen mode. In this case, proper slide
%titles might help you navigate your presentation. The latter will
%show a menu where you can type the slide number of the slide that
%you want to display.
%\end{itemize}
%
%For more possibilities, see the documentation of the
%\pf{hyperref} package.
%
%\subsection{Support table}\label{sec:supportt}
%Table~\ref{tab:supportt} displays an overview of the available
%extra features in the styles. In between brackets you can find
%links to sections explaining the features.
%
%\begin{table}[ht]
%\caption{Available features in styles.}\label{tab:supportt}
%\makebox[\textwidth][r]{
%\begin{tabular}{l}\rlap{
%\pstilt{60}{%
%\begin{tabular}{g}\hline
%\rotateleft{\rnode{c1}{}\hphantom{ TCSTealBlue }} &
%\rotateleft{\rnode{c2}{}\hphantom{TCSTealBlue}\rnode{c0}{}} &
%\rotateleft{\rnode{c3}{}} &
%\rotateleft{\rnode{c4}{}} &
%\rotateleft{\rnode{c5}{}} &
%\rotateleft{\rnode{c6}{}} &
%\rotateleft{\rnode{c7}{}} &
%\rotateleft{\rnode{c8}{}} &
%\rotateleft{\rnode{c9}{}} &
%\rotateleft{\rnode{c10}{}} &
%\rotateleft{\rnode{c11}{}} &
%\rotateleft{\rnode{c12}{}} &
%\rotateleft{\rnode{c13}{}}
%\end{tabular}
%}}\\
%\rput[rt](c0){Styles\hspace{1.5em}}
%\rput[lb](c1){ Features}
%\rput[lt]{60}(c2){ Aggie}
%\rput[lt]{60}(c3){ Capsules}
%\rput[lt]{60}(c4){ CentER}
%\rput[lt]{60}(c5){ Ciment}
%\rput[lt]{60}(c6){ Fyma}
%\rput[lt]{60}(c7){ HA}
%\rput[lt]{60}(c8){ Lakar}
%\rput[lt]{60}(c9){ Simple}
%\rput[lt]{60}(c10){ TCS}
%\rput[lt]{60}(c11){ TCSgrad}
%\rput[lt]{60}(c12){ TCSTealBlue}
%\rput[lt]{60}(c13){ Tycja}
%\hspace{.67em}\begin{tabular}{g}\hline
%table of contents (\ref{sec:toc})          & x & x & x & x & x & x & x & x & x & x & x & x \\
%portrait slides (\ref{sec:portrait})       & x &   &   &   &   & x & x & x &   &   &   & x \\
%A4 support                                 &   &   &   &   & x &   &   &   &   &   &   &   \\
%modified \ci{maketitle} (\ref{sec:mct})    & x & x & x & x & x & x & x & x & x & x & x & x \\
%wideslide environment (\ref{sec:wpe})      & x & x & x & x & x & x & x & x & x & x & x & x \\
%partslide environment (\ref{sec:wpe})      &   & x &   & x & x &   & x &   &   &   &   &   \\
%tsnav (\ref{sec:navs})                     & x &   & x &   &   &   &   &   & x & x & x &   \\
%nsnav (\ref{sec:navs})                     & x &   & x &   &   & x &   &   & x & x & x &   \\
%\hline
%\end{tabular}
%\end{tabular}}
%\end{table}
%
%Currently only the |Fyma| style supports the |A4| papersize. To use
%it, issue the command |\FymaAFour| in your preamble and use |-t A4|
%in the |dvips| command line to get slides in A4 dimensions.
%
%\clearpage\section{Information for style developers}\label{sec:styledev}
%\subsection{General tools}
%This section provides some information in case you want to develop
%your own style. Remember that this package is still based on
%\pf{prosper}, so for the standard \pf{prosper} features, see the
%\pf{prosper} documentation. Table~\ref{tab:devfeats1} lists
%additional features of \pf{HA-prosper} available to control the
%layout, fonts and colors of your style. The controls in
%table~\ref{tab:devfeats2} are \pf{HA-prosper} internals and should
%only be used in style files. In between brackets you can find links
%to sections explaining the related user interface commands. Do not
%forget to take a look at existing styles since these are the ideal
%starting point to create a new style.
%Note that if you use |\HAP@NSNav| or |\HAP@TSNav| in a style, make
%sure to check whether it has been defined by the user or not.
%
%\begin{table}[ht]\centering
%\caption{\pf{HA-prosper} features for style development.}
%\label{tab:devfeats1}
%\makebox[\textwidth][r]{
%\begin{tabular}{d}
%\hline\hline
%\ci{FontLeftFoot\string{C\string}\string{BW\string}},& This command is used to
%assign a font to the left footer (\ref{sec:footers}). The\\
%& first argument is for color slides, the second for black
%and white ones.\\
%& Default: font: \ci{fontText}; text height: 5pt; line height: 5pt.\\
%\ci{fontLeftFoot\string{xx\string}}& This command writes |xx| in the font
%defined by the former command.\\\hline
%\ci{FontRightFoot\string{C\string}\string{BW\string}},& Idem for right footer (\ref{sec:footers}).\\
%\ci{fontRightFoot\string{xx\string}}& Default: font: \ci{fontText}; text height: 5pt; line height: 5pt.\\\hline
%\ci{FontAuthor\string{C\string}\string{BW\string}},& Idem for author (\ref{sec:eia}).\\
%\ci{fontAuthor\string{xx\string}}& Default: font: \ci{fontText}.\\\hline
%\ci{FontInst\string{C\string}\string{BW\string}},& Idem for institution (\ref{sec:eia}).\\
%\ci{fontInst\string{xx\string}}& Default: font: \ci{fontText}; text height: 7pt; line height: 7pt.\\\hline
%\ci{FontEmail\string{C\string}\string{BW\string}},& Idem for e-mail address (\ref{sec:eia}).\\
%\ci{fontEmail\string{xx\string}}& Default: font: \ci{fontText}; text height: 7pt; line height: 7pt.\\\hline
%\ci{FontToc\string{C\string}\string{BW\string}},& Idem for table of contents (\ref{sec:toc}).\\
%\ci{fontToc\string{xx\string}}& Default: font: \ci{fontText}; text height: 4pt; line height: 6pt.\\\hline
%\hline
%\end{tabular}}
%\end{table}
%
%\begin{table}[ht]
%\caption{Internal \pf{HA-prosper} controls for style development.}\label{tab:devfeats2}
%\makebox[\textwidth][r]{
%\begin{tabular}{d}\hline\hline
%\ci{HAP@PutLF\string{A\string}\string{C\string}}&
%Uses \ci{rput} to position the left footer using anchor |A| and coordinates |C|.\\\hline
%\ci{HAP@PutRF\string{A\string}\string{C\string}}&
%Uses \ci{rput} to position the right footer using anchor |A| and coordinates |C|.\\\hline
%\ci{HAP@NSNav}&Contains argument of \ci{NormalSlideNav}, if defined (\ref{sec:navs}).\\\hline
%\ci{HAP@TSNav}&Contains argument of \ci{TitleSlideNav}, if defined (\ref{sec:navs}).\\\hline
%Color |HAP@textc|&Text color, used for switching back from inactive colors; default: black (\ref{sec:iestep}).\\\hline
%Color |HAP@framecolor|&Color for dualslide frames and lines; default: black (\ref{sec:dualslide}).\\\hline
%\ci{ifHAP@active}&True if item is active, for use with \ci{myitem} (see \pf{prosper} docs and \ref{sec:xitem}).\\\hline
%\ci{ifHAP@highlight}&True if highlighting has been requested by the user (\ref{sec:tochl}).\\\hline
%\ci{ifHAP@portrait}&True if portrait slides have been requested by the user (\ref{sec:portrait}).\\\hline
%\ci{ifHAP@notes}&If's that contain the state of requested notes, slides only or notes only.\\
%\ci{ifHAP@notesonly}&These can take the value 0 or 1 (false or true) and it holds that\\
%\ci{ifHAP@slidesonly}&the sum is equal to one and the product is equal to zero (\ref{sec:notes}).\\
%\hline\hline
%\end{tabular}}
%\end{table}
%
%\subsection{Table of contents typesetting}
%\pf{HA-prosper} uses the macros |\HAP@tocentry| and
%|\HAP@hltocentry| to typeset table of contents entries. The latter
%macro will be used in case the entry needs to be highlighted. By
%default, \pf{HA-prosper} puts the toc entry at hand in a |\parbox|
%to allow for multi-line toc entries. For |\HAP@hltoctext|, the
%latter is inserted in a |\psframebox|. You can redefine the former
%macros to typeset the table of contents for your style in a
%different way. Use |\HAP@toctext| in your definitions. This will at
%run time contain the entry at hand in the markup specified by either
%|\HAP@tline|, |\HAP@tlineonly|, |\HAP@tsection| or
%|\HAP@tsectiononly| depending on the type of table of contents and
%the type of the entry. See for instance the |Fyma| style for an
%alternative table of contents markup. See further
%table~\ref{tab:tocmarkup} for other macros related to typesetting
%the table of contents and section~\ref{sec:toc} for more information
%about the table of contents.
%
%\begin{table}[ht]
%\caption{Table of contents typesetting macros.}\label{tab:tocmarkup}
%\makebox[\textwidth][r]{
%\begin{tabular}{d}\hline\hline
%\ci{HAP@toc}&Command that includes the toc file in \ci{fontToc}.\\\hline
%\ci{HAP@tsections}&Includes sections of the toc file in \ci{fontToc}.\\\hline
%\ci{HAP@tcontent}&Contains the content of the current section.\\\hline
%\ci{ifHAP@toc}&True if a table of contents has been requested by the user.\\\hline
%\ci{HAP@tline}&Layout of a table of contents entry in a full toc.\\\hline
%\ci{HAP@tlineonly}&Layout of a table of contents entry in \ci{HAP@tcontent}.\\\hline
%\ci{HAP@tsection}&Layout of a table of contents section in a full toc.\\\hline
%\ci{HAP@tsectionm}&Section marker, inserted just before creating a section.\\\hline
%\ci{HAP@tsectiononly}&Layout of a table of contents section in \ci{HAP@tsections}.\\\hline
%\ci{HAP@tsectionskip}&Vertical skip above a section; default: 1.5em.\\\hline
%\ci{HAP@titemskip}&Vertical skip in between items, not sections; default: 0.1em.\\\hline
%\ci{HAP@tocentry}&Construct for entry, use \ci{HAP@toctext} inside, see leading text.\\\hline
%\ci{HAP@hltocentry}&Construct for highlighting, use \ci{HAP@toctext} inside, see leading text.\\\hline
%Color |HAP@hcolor|&Color for PostScript frame used for highlighting; default: black.\\\hline
%Color |HAP@htcolor|&Text color for highlighted toc entry; default: white.\\\hline
%\ci{HAP@twidth}&Width of toc, used for \ci{parbox} in \ci{HAP@tocentry} and \ci{HAP@hltocentry}.\\\hline
%\ci{HAP@tborder}&Border size in \ci{psframebox} of \ci{HAP@hltocentry}; default: 0.05cm\\\hline\hline
%\end{tabular}}
%\end{table}
%
%Note that the macros |\HAP@hcolor|, |\HAP@htcolor|, |\HAP@twidth|
%and |\HAP@tborder| are only used in the default definitions of
%|\HAP@tocentry| and |\HAP@hltocentry|. If you decide to redefine the
%latter two macros, defining and using the former four might not be
%necessary. The default toc typesetting uses these macros to provide
%an easy way for style designers to tweak the default markup of the
%table of contents.
%
%\subsection{Reserved commands}
%\pf{HA-prosper} knows a couple of reserved commands. If these
%commands are defined by a style, they will be used by
%\pf{HA-prosper} to create new slide environments. See
%table~\ref{tab:reserved}.
%
%\begin{table}[ht]
%\caption{Reserved commands in \pf{HA-prosper}.} \label{tab:reserved}
%\makebox[\textwidth][r]{
%\begin{tabular}{d}\hline\hline
%\ci{HAPR@normalSlide}&Should contain the layout
%of a standard slide.\\\hline
%\ci{HAPR@wideSlide}&Should contain the layout of a
%wide slide; used for |wideslide| environment (\ref{sec:wpe}).\\\hline
%\ci{HAPR@partSlide}&Should contain the layout of a
%part slide; used for |partslide| environment (\ref{sec:wpe}).\\\hline
%\ci{HAPR@titleSlide}&Should contain the layout of a
%title slide; used to create title slide,\\
%&which will be embedded in the \ci{maketitle} command (\ref{sec:mct}).\\\hline
%\hline
%\end{tabular}}
%\end{table}
%
%Note that |\HAPR@normalSlide| is used to switch back to after
%creating a special slide environment like |wideslide|. If this
%command has not been defined in your style, then \pf{HA-prosper}
%will not be able to define the environments mentioned in
%section~\ref{sec:wpe} for you. As a last note: don't forget the
%power of the \pf{PSTricks} package for designing styles.
%
%\clearpage\section{Miscellaneous issues}
%
%\subsection{Examples}\label{sec:examples}
%Examples that use the \pf{HA-prosper} package are contained in the
%|HAPIntroduction.tex|, |HAPBigtest.tex| and |HAPDualslide.tex|
%files in this distribution. The examples assume that you have the
%|HA| style. More examples can be found at the \pf{HA-prosper} website
%\cite{HA-prosper}.
%
%Do not forget to take a look at the documentation of the
%\pf{prosper} class, the \pf{hyperref} package and the
%\pf{PSTricks} package to fully understand the possibilities of
%slides created by \pf{HA-prosper}.
%
%\subsection{Required packages}\label{sec:req}
%The most important requirements of the \pf{prosper} class are:
%\begin{multicols}{2}
%\begin{itemize}\setlength{\itemsep}{0pt}
%\item \pf{seminar},
%\item \pf{hyperref},
%\item \pf{pstricks},
%\item \pf{graphicx}.
%\end{itemize}
%\end{multicols}
%The most important requirements of the \pf{HA-prosper} package
%are:
%\begin{multicols}{2}\raggedright
%\begin{itemize}\setlength{\itemsep}{0pt}
%\item \pf{prosper} (|prosper.cls| version 1.24),
%\item \pf{xkeyval} \cite{xkeyvalCTAN},
%\item \pf{xcomment},
%\item \pf{verbatim}.
%\end{itemize}
%\end{multicols}
%
%\subsection{Resulting PDF}\label{sec:result}
%The PDF produced by PS2PDF (GhostScript) is usually very big.
%Unfortunately, it includes a copy of the logos on the slides every
%time they appear. In case this logo is a rendered picture, the PDF
%will become very big. There is not much you can do about that.
%However, you can compress a generic presentation PDF file very
%much (often even to 10\% of the original size) using for instance
%WinZip. And you could of course delete the logo or replace it by a
%non-rendered picture, for instance created by \pf{PSTricks}, see
%the \pf{PSTricks} website \cite{PSTricks}. Compare for example
%the |HA| style and the |Lakar| style.
%
%Another possibility is to use `Reduce file size' in the file menu
%of Acrobat (available from version 6). You can also use the PDF
%Optimizer in this version of Acrobat (Tools - PDF Optimizer).
%Using this option, you can compress the pictures inside the
%presentation and make the presentation considerably smaller. Hint:
%do not use JPEG or JPEG2000 for the compression of images. Even at
%the highest level of quality, this produces poor results for
%projecting purposes. Instead, use the ZIP compression. Also, do
%not downsize the resolution lower than 300 pixels per inch (for
%retaining printing quality).
%
%However, to get the most efficient PDF document, use the Acrobat
%Distiller to convert the PS file into a PDF file. Do not forget to
%include the `distiller' option in the document class in this case
%(see section~\ref{sec:compile}).
%
%\subsection{Credits}
%I want to thank the following people for their contribution(s).
%\begin{itemize}
%\item\textbf{Style contributors}\\
%Chris Ellison: |TCS|, |TCSgrad| and |TCSTealBlue| styles.\\
%Jack Stalnaker: |Aggie| style.\\
%Laurent Jacques \cite{Laurent}: |Fyma| style.\\
%Mathieu Goutelle \cite{Mathieu}: |Capsules| and |Ciment| styles.
%\item\textbf{Bug reports}\\
%Bugs have been detected and reported by Chris Ellison, Victor
%Francisco Fonte, Johan Joubert, Fr\'ed\'eric Mayot, and Johan
%Segers.
%\item\textbf{Contributions and ideas}\\
%A lot of thanks go Mathieu Goutelle \cite{Mathieu}, Herbert Vo\ss\
%\cite{Herbert}, Murali Krishna Ganapathy \cite{Murali} and Laurent
%Jacques for great help, code contributions and/or ideas for improvements.
%\end{itemize}
%
%\subsection{Questions}\label{sec:questions}
%If you have questions, please first consult the documentation of
%the package that could possibly answer your question. Probably,
%you can find the answer in the documentation of either the
%\pf{HA-prosper} package, \pf{prosper} class, the \pf{hyperref}
%package or the \pf{PSTricks} package. Also have a look at
%WikiProsper \cite{WikiProsper} for a \pf{prosper} FAQ,
%\pf{prosper} open questions, known \pf{prosper} bugs,
%etcetera.
%
%If you cannot solve the problem yourself, or if you have comments or
%requests for additional features, you may try to post a message to
%the \pf{HA-prosper} mailinglist \cite{HAprospermaillist}. Do not
%forget to include a \emph{minimal} example when you want help with
%an error message.
%
%The use of the mailinglist will be supported as long as possible,
%but as stated in section~\ref{sec:newclass} most effort will be done
%to help \pf{powerdot} users and the \pf{HA-prosper} mailinglist may
%disappear over time.
%
%
%{\small
%\begin{thebibliography}{[00]}
%
%\bibitem{Acrobat}
%Acrobat.
%\newblock \url{http://www.adobe.com/products/acrobat}.
%
%\bibitem{AcroRead}
%{Acrobat Reader}.
%\newblock \url{http://www.adobe.com/products/acrobat/readstep2.html}.
%
%\bibitem{GhostScript}
%{AFPL GhostScript}.
%\newblock \url{http://www.cs.wisc.edu/~ghost}.
%
%\bibitem{GhostView}
%GhostView.
%\newblock \url{http://www.cs.wisc.edu/~ghost/gsview}.
%
%\bibitem{HAprospermaillist}
%{HA-prosper mailinglist}.
%\newblock \url{http://listserv.surfnet.nl/archives/ha-prosper.html}.
%
%\bibitem{HA-prosperCTAN}
%{HA-prosper on CTAN}.
%\newblock
%  \url{http://www.ctan.org/tex-archive/macros/latex/contrib/ha-prosper}.
%
%\bibitem{HA-prosper}
%{HA-prosper website}.
%\newblock \url{http://stuwww.uvt.nl/~hendri/downloads/haprosper.html}.
%
%\bibitem{Herbert}
%{Herbert Vo\ss}.
%\newblock \url{http://www.perce.de}.
%
%\bibitem{Laurent}
%{Laurent Jacques}.
%\newblock \url{http://www.fyma.ucl.ac.be/~ljacques}.
%
%\bibitem{Mathieu}
%{Mathieu Goutelle}.
%\newblock \url{http://webperso.easyconnect.fr/goutelle}.
%
%\bibitem{MiKTeX}
%MiKTeX.
%\newblock \url{http://www.miktex.org}.
%
%\bibitem{Murali}
%{Murali Krishna Ganapathy}.
%\newblock \url{http://www.cs.uchicago.edu/people/gmkrishn}.
%
%\bibitem{natbibCTAN}
%{Natbib on CTAN}.
%\newblock
%  \url{http://www.ctan.org/tex-archive/macros/latex/contrib/natbib}.
%
%\bibitem{powerdot}
%{powerdot on CTAN}.
%\newblock
%  \url{http://www.ctan.org/tex-archive/macros/latex/powerdot}.
%
%\bibitem{ppr-prv}
%{ppr-prv}.
%\newblock
%  \url{http://www.ctan.org/tex-archive/macros/latex/contrib/ppr-prv}.
%
%\bibitem{prosperCTAN}
%{Prosper on CTAN}.
%\newblock
%  \url{http://www.ctan.org/tex-archive/macros/latex/contrib/prosper}.
%
%\bibitem{prosper}
%{Prosper website}.
%\newblock \url{http://prosper.sourceforge.net}.
%
%\bibitem{PSTricks}
%{PSTricks website}.
%\newblock \url{http://www.pstricks.de}.
%
%\bibitem{SWP}
%{Scientific WorkPlace}.
%\newblock \url{http://www.mackichan.com}.
%
%\bibitem{TeXFAQInst}
%{TeX FAQ (Installing packages)}.
%\newblock \url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages}.
%
%\bibitem{TeXFAQTop}
%{TeX FAQ (Top-aligning imported graphics)}.
%\newblock \url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=topgraph}.
%
%\bibitem{TeXLive}
%{TeXLive}.
%\newblock \url{http://www.tug.org/texlive}.
%
%\bibitem{TexNicCenter}
%TeXnicCenter.
%\newblock \url{http://www.toolscenter.org}.
%
%\bibitem{WikiProsper}
%WikiProsper.
%\newblock \url{http://wikiprosper.bbclone.de}.
%
%\bibitem{WinEdt}
%WinEdt.
%\newblock \url{http://www.winedt.com}.
%
%\bibitem{xkeyvalCTAN}
%{xkeyval on CTAN}.
%\newblock
%  \url{http://www.ctan.org/tex-archive/macros/latex/xkeyval}.
%
%\end{thebibliography}}
%
%\subsection{Copyright}
%Copyright \copyright\ 2003-2005 by Hendri Adriaens. All rights reserved.\\
%
%This program may be distributed and/or modified under the
%conditions of the \LaTeX\ Project Public License, either version
%1.2 of this license or (at your option) any later version. The
%latest version of this license is in
%\url{http://www.latex-project.org/lppl.txt} and version 1.2 or
%later is part of all distributions of \LaTeX\
%version 1999/12/01 or later.\\
%
%\subsection{Version history}
%This section lists the main changes in this package as from
%version 3.5. Note that each version change also contains solutions
%to known (minor) bugs and improvements in programming and user
%interface.
%
%\begin{itemize}
%\item[\fbox{3.5}] Solved a bug with toc entries in combination with
%highlighting. This bug was mainly caused
%by the \pf{keyval} package not undefining variables when they are
%not used. Thanks to Mathieu Goutelle for the help; added support
%for the |\part| command. Made \pf{HA-prosper} load slide
%style definitions itself at the final stage; changed style names
%to |HAP[name].sty| to identify \pf{HA-prosper} style
%definitions from \pf{prosper} style definitions; made
%\pf{HA-prosper} undefine |\slidetitle| before loading the
%style definitions;
%
%\item[\fbox{3.6}] Improved writing of toc entries; solved an
%inconsistency in writing definitions between |seminar| and
%|latex.ltx|; introduced |\section| and
%|\sectionandpart|; completely changed |notes| environment,
%not using |seminar| note constructions anymore; added support
%for |\and| in |\author|; added |\fontToc|;
%\begin{itemize}
%\item[\fbox{3.61}] Removed redundant grouping;
%\item[\fbox{3.62}] Adapted writing definitions a bit to be more consistent with
%|seminar|;
%\end{itemize}
%
%\item[\fbox{3.7}] Prepared \pf{HA-prosper} for compatibility to the
%|prosper preview| class \cite{ppr-prv}; integrated specific
%style features into \pf{HA-prosper}; recoded |\figureitem|
%command; renamed |\section| to |\tsection|,
%|\sectionandpart| to |\tsectionandpart| to provide
%compatibility to for instance |\bibliography|; restructured
%\pf{HA-prosper} internals;
%\begin{itemize}
%\item[\fbox{3.71}] Solved a small bug writing final toc entry AtEndDocument;
%added |TCS| style by Chris Ellison.
%\end{itemize}
%
%\item[\fbox{3.8}] Added |\tsection*|, |\tsectionandpart*| and
%nesting of bookmarks; created |\dualslide|; added
%|\hiddenitem|, |\putfigure|, |\figureitem| and
%|\putfigureitem|. Revised the documentation; revised the
%examples; added the |\dualslide| example; revised the styles.
%
%\item[\fbox{3.9}] Deleted |\putfigureitem| and |\figureitem|
%and replaced |\putfigure| by the more general |\topbl|;
%improved positioning of bottom text when using |\dualslide|;
%added |indent| option for |\dualslide|; added support for a
%split toc; added package option |hlsections|; added package
%option |blackslide|; solved a bug occurring when
%|\tsectionandpart| was used to create the last slide; added
%|enumstep|; made it possible to nest |itemstep| and
%|enumstep| environments; added |\HAPsetup|, yet only used
%for stepping environments.
%
%\item[\fbox{4.0}] Changed to |.dtx| format and wrote code
%documentation. Added slide options |bm| and |sound|. Added
%default behavior of stepping environments with the |ps2pdf|
%\pf{prosper} option to be type 1, namely all active. Changed
%bookmarking process to a system that allows for deletion of
%bookmarks. Added global control of features through
%|HA-prosper.cfg|. Added |Aggie| style by Jack Stalnaker.
%Made some code more efficient. Added entrance point for
%\pf{ppr-prv} to make redefining macros easier for that class.
%Solved a bug in combination with loading \pf{babel}. Added
%|\onSlide| and |\OnSlide|.
%
%\item[\fbox{4.1}] Moved documentation to |.dtx| file. Added
%package option |counters|. Restored original |\item| and
%created |\xitem|. Changed |\hiddenitem| to |\xitemwait|
%which is a bit more general. Removed a bug in |\onSlide|.
%Rewrote a lot of code. Made \pf{HA-prosper} use \pf{xkeyval}.
%Changed |emptyslide| into more |partslide|. Added |Fyma| style
%by Laurent Jacques.
%
%\begin{itemize}
%\item[\fbox{4.11}] Corrected small bug in \pf{ppr-prv} compatibility
%check. Made \pf{HA-prosper} use original \LaTeX\ macros |\title| and
%|\author|. Added missing `=' in |\HAP@contentsline| definition.
%\end{itemize}
%
%\item[\fbox{4.2}] Improved table of contents typesetting. Added
%|\xitem<n>|. Added |thebibliography| environment. Improved
%positioning of the slide title in the styles. Added handle for state
%of list items. Updated styles. Added |TCSgrad| and |TCSTealBlue|
%styles by Chris Ellison. Added extra syntax for |\onSlide| and
%|\OnSlide| to make displaying material relative to the preceding
%|\xitem|.
%
%\begin{itemize}
%\item[\fbox{4.21}] Added |Capsules| and |Ciment| styles by Mathieu
%Goutelle. Updated for \pf{xkeyval} version 1.4.
%\end{itemize}
%
%\end{itemize}
%
% \StopEventually{\PrintIndex}
%
% \section{Implementation}\label{sec:impl}
%
% \subsection{Preamble and options}
% The start of the file.
%    \begin{macrocode}
%<*program>
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\def\HAP@Version{v4.21}
\ProvidesPackage{HA-prosper}[2004/08/20 \HAP@Version\space Patch for prosper]
\typeout{(c) 2003-2004 Hendri Adriaens, Tilburg, the Netherlands}
\typeout{ }
%    \end{macrocode}
% Required packages. Load \pf{xkeyval} safely to avoid problems with
% \pf{pst-key} which redefines |\setkeys| as well as \pf{xkeyval}.
%    \begin{macrocode}
\let\HAP@orig@setkeys\setkeys
\RequirePackage{xkeyval}
\let\xsetkeys\setkeys
\RequirePackage{xcomment}
\RequirePackage{verbatim}
%    \end{macrocode}
% Check the version of \pf{ppr-prv} for compatibility.
%    \begin{macrocode}
\def\PPRPRV@ReqVersion{v. 0.13}
\@ifclassloaded{ppr-prv}{%
  \ifx\PPRPRV@ReqVersion\PPRPRV@Version\else
    \PackageError{HA-prosper}{HA-prosper \HAP@Version\space and
      ppr-prv \PPRPRV@Version\space are incompatible}%
      {Read the documentation of HA-prosper.}%
  \fi}{}
%    \end{macrocode}
% \DescribeSwitch{slidesonly}\DescribeSwitch{notesonly}\DescribeSwitch{notes}
% Define package options using \pf{xkeyval}. We start with the options for notes.
%    \begin{macrocode}
\newif\ifHAP@notes
\newif\ifHAP@notesonly
\newif\ifHAP@slidesonly
\DeclareOptionX{notes}{\HAP@slidesonlyfalse\HAP@notestrue\HAP@notesonlyfalse}
\DeclareOptionX{notesonly}{\HAP@notesonlytrue\HAP@slidesonlyfalse\HAP@notesfalse}
\DeclareOptionX{slidesonly}{\HAP@slidesonlytrue\HAP@notesonlyfalse\HAP@notesfalse}
%    \end{macrocode}
% \DescribeSwitch{toc}
% Table of contents (toc) option.
%    \begin{macrocode}
\newif\ifHAP@toc
\DeclareOptionX{toc}{\HAP@toctrue}
%    \end{macrocode}
% \DescribeSwitch{highlight}
% Highlighting of toc entries.
%    \begin{macrocode}
\newif\ifHAP@highlight
\DeclareOptionX{highlight}{\HAP@highlighttrue}
%    \end{macrocode}
% \DescribeSwitch{hlsections}
% Permanent highlighting of toc sections.
%    \begin{macrocode}
\newif\ifHAP@hlsections
\DeclareOptionX{hlsections}{\HAP@hlsectionstrue}
%    \end{macrocode}
% \DescribeSwitch{portrait}
% Portrait slides.
%    \begin{macrocode}
\newif\ifHAP@portrait
\DeclareOptionX{portrait}{\HAP@portraittrue}
%    \end{macrocode}
% \DescribeSwitch{blackslide}
% The black slide.
%    \begin{macrocode}
\newif\ifHAP@blackslide
\DeclareOptionX{blackslide}{\HAP@blackslidetrue}
%    \end{macrocode}
% \DescribeSwitch{sounds}
% Include sounds.
%    \begin{macrocode}
\newif\ifHAP@sounds
\DeclareOptionX{sounds}{\HAP@soundstrue}
%    \end{macrocode}
% Default template.
%    \begin{macrocode}
\def\HAP@Style@chosen{HA}
\DeclareOptionX*{\let\HAP@Style@chosen\CurrentOption}
%    \end{macrocode}
% Default: slides only.
%    \begin{macrocode}
\ExecuteOptionsX{slidesonly}
\ProcessOptionsX
%    \end{macrocode}
% Reset |\setkeys| to avoid problems for pstricks packages using
% \pf{pst-key}.
%    \begin{macrocode}
\let\setkeys\HAP@orig@setkeys
%    \end{macrocode}
% \subsection{Main code}
% \subsubsection{Some necessary stuff}
% Temporary boxes, lengths and counters.
%    \begin{macrocode}
\newbox\HAP@tba
\newbox\HAP@tbb
\newlength\HAP@tla
\newlength\HAP@tlb
\newlength\HAP@tlc
\newlength\HAP@tld
\newcounter{HAP@tca}
%    \end{macrocode}
% Paper sizes for portrait and landscape slides.
%    \begin{macrocode}
\ifHAP@portrait
  \slidewidth=150mm
  \slideheight=222mm
\else
  \slidewidth=222mm
  \slideheight=150mm
\fi
%    \end{macrocode}
% \DescribeEnv{NewSlideStyle}
% This environment needs to be redefined to be able to remember
% the anchor and the position of the main text box on slides.
% The original comes from \pf{prosper}.
%    \begin{macrocode}
\renewcommand{\NewSlideStyle}[4][11cm]{%
  \setlength{\slideWidth}{#1}%
  \global\pslongbox{posit@Box}{\rput[#2](#3)}%
  \newslideframe{the#4}{\csname #4\endcsname{##1}}%
  \slidepagestyle{GenericPageStyle}%
  \slideframe{the#4}%
  \gdef\HAP@current@anchor{#2}%
  \gdef\HAP@current@pos{#3}%
}
%    \end{macrocode}
% \DescribeMacro{\protected@write}
% |Seminar| uses a somewhat different writing macro than |latex.ltx|. The
% |seminar| definition gets inserted at every |\begin{slide}| and is local.
% To assure
% that this writing definition is also used in between slides (e.g.
% for |\tsection|) we need to redefine it once. The main difference
% is in the use of |\immediate| by |seminar| while this is not used
% by |latex.ltx|. This difference would, without this definition, create mixing errors.
%    \begin{macrocode}
\def\protected@write#1#2#3{%
  \begingroup
  #2%
  \let\protect\noexpand
  \immediate\normal@write#1{#3}%
  \endgroup
  \if@nobreak\ifvmode\nobreak\fi\fi
}
%    \end{macrocode}
% \subsubsection{Support for notes}
% Notes are created on slides, but with an adapted template. We start
% with defining some counters. The first is used to count the number
% of notes with a particular slide.
%    \begin{macrocode}
\newcounter{HAP@notes@slide}
%    \end{macrocode}
% This counter is used to count the total number of notes.
%    \begin{macrocode}
\newcounter{HAP@notes@true}
%    \end{macrocode}
% And this is a temp counter to remember the slide that the notes
% belong to.
%    \begin{macrocode}
\newcounter{HAP@notes@temp}
%    \end{macrocode}
% The template to be used by notes.
%    \begin{macrocode}
\def\HAP@notes@frame#1{#1}
\ifHAP@portrait
  \def\HAP@notes@template{\NewSlideStyle[8.8cm]{tl}{-0.6,4}{HAP@notes@frame}}
\else
  \def\HAP@notes@template{\NewSlideStyle[8.8cm]{tl}{1.2,4}{HAP@notes@frame}}
\fi
%    \end{macrocode}
% Start writing a file to store notes page numbers.
%    \begin{macrocode}
\ifHAP@notes
  \newwrite\HAP@notesout\openout\HAP@notesout\jobname.not\relax
\fi
%    \end{macrocode}
% When notes only, use saved page numbers.
%    \begin{macrocode}
\ifHAP@notesonly
  \begingroup\InputIfFileExists{\jobname.not}{}{}\endgroup
  \xcomment{notes}
\fi
%    \end{macrocode}
% \begin{environment}{notes}
% This macro defines the notes environment.
%    \begin{macrocode}
\def\notes#1{%
  \ifHAP@slidesonly\comment\else
%    \end{macrocode}
% Count the number of notes with a particular slide. If we are still
% on the same slide, but have a new notes slide, add one to the counter
% for notes slides, otherwise reset that counter.
%    \begin{macrocode}
    \ifnum\value{slide}=\value{HAP@notes@temp}
      \stepcounter{HAP@notes@slide}%
    \else
      \setcounter{HAP@notes@slide}{1}%
    \fi
%    \end{macrocode}
% Set the temp counter to the current slide to remember to which slide
% the notes belong.
%    \begin{macrocode}
    \setcounter{HAP@notes@temp}{\value{slide}}%
    \stepcounter{HAP@notes@true}%
%    \end{macrocode}
% If not notes only, then the notes page numbers get written to disk
% by using labels. This makes sure that, when using the option |notesonly|
% at the first pass of the presentation, there are no errors, only warnings.
%    \begin{macrocode}
    \ifHAP@notesonly\else
      \protected@write\HAP@notesout{}{\string\newlabel{notes@\number\c@HAP@notes@true}%
      {{}{\number\c@HAP@notes@temp-\number\c@HAP@notes@slide}{\relax }{}{}}}%
    \fi
%    \end{macrocode}
% Save anchor and position of the text box of the previous slide.
%    \begin{macrocode}
    \xdef\HAP@temp@anchor{\HAP@current@anchor}%
    \xdef\HAP@temp@pos{\HAP@current@pos}%
%    \end{macrocode}
% Start notes on a portrait slide environment.
%    \begin{macrocode}
    \HAP@notes@template\HAP@portraittrue
    \begin{slide}[toc=,bm=,trans=Replace]{HAP@notitle}\black
    \rput[tl](0,1.5){\fontTitle{\black#1}}%
%    \end{macrocode}
% Position the notes number using |PSTricks|.
%    \begin{macrocode}
    \ifHAP@notesonly
      \rput[tc](4.4,-10.5){\realpageref{notes@\number\c@HAP@notes@true}}%
    \else
      \rput[tc](4.4,-10.5){\number\c@HAP@notes@temp-\number\c@HAP@notes@slide}%
    \fi
  \fi
}
%    \end{macrocode}
% Closing the notes environment and restoring the text box position
% and anchor to its original values to be used by the next slide (or note).
%    \begin{macrocode}
\def\endnotes{%
  \ifHAP@slidesonly\endcomment\else
    \end{slide}%
    \global\pslongbox{posit@Box}{\rput[\HAP@temp@anchor](\HAP@temp@pos)}%
    \gdef\HAP@current@anchor{\HAP@temp@anchor}%
    \gdef\HAP@current@pos{\HAP@temp@pos}%
    \addtocounter{slide}{-1}%
  \fi
}
%    \end{macrocode}
% \end{environment}
% \subsubsection{Blackslide option}
% First we create a template for the black slide.
%    \begin{macrocode}
\def\HAP@bs@frame#1{%
  \psframe[fillstyle=solid,fillcolor=black](-3,-3)(13,13)%
  {#1}%
}
%    \end{macrocode}
% And we position that.
%    \begin{macrocode}
\ifHAP@portrait
  \def\HAP@bs@template{\NewSlideStyle[10cm]{tl}{-1.25,5.9}{HAP@bs@frame}}
\else
  \def\HAP@bs@template{\NewSlideStyle[10cm]{tl}{-1.87,5.2}{HAP@bs@frame}}
\fi
%    \end{macrocode}
% Do not provide blackslide when \pf{ppr-prv} is loaded since it cannot
% be undone by that class. The black slide is a normal slide at the
% start of the presentation, is black and has a black button in the
% top left corner with Acrobat |GoBack| functionality.
%    \begin{macrocode}
\ifHAP@blackslide
  \ifx\PPRPRV@Version\@undefined
%    \end{macrocode}
% Alter PDF starting slide to hide the black slide.
%    \begin{macrocode}
    \def\@pdfstartpage{2}%
    \AtBeginDocument{%
%    \end{macrocode}
% Set the template.
%    \begin{macrocode}
      \HAP@bs@template
      \begin{slide}[trans=Replace,toc=,bm=]{HAP@notitle}%
%    \end{macrocode}
% Create the button.
%    \begin{macrocode}
      {\black\hypertarget{blackslide}{\Acrobatmenu{GoBack}%
        {\setlength{\fboxsep}{.5cm}\fbox{GoBack}}}}%
      \end{slide}%
%    \end{macrocode}
% Restore the slide counter to get real slide numbers right.
%    \begin{macrocode}
      \addtocounter{slide}{-1}%
      \HAPR@normalSlide
    }
  \fi
\fi
%    \end{macrocode}
% \DescribeMacro{\HAP@writebm}
% Macro that writes bookmark entries to the |.bm| file so that they
% can be read on the next pass.
% \HAPcmd{\ci{HAP@writebm}\marg{open}\marg{csec}\marg{title}\marg{page}\marg{bsec}}
% |csec| is the current section label and |bsec| is the section label
% of the section that the current slide belongs to for nesting bookmarks.
% These are used to compute the number of bookmarks that should be
% nested within the current bookmark.
% |open| is `+' or `-' to open bookmarks in the PDF or not.
% The other arguments are self-explaining.
%    \begin{macrocode}
\def\HAP@writebm#1#2#3#4#5{%
    \protected@write\HAP@bmout{}{%
      \string\HAPbookmark{#1}{#2}{#3}{#4}{#5}}%
}
%    \end{macrocode}
% \DescribeMacro{\HAP@checkbmnumber}
% Based on |pdfmark.def| (|hyperref|). Returns the number of bookmarks
% to be nested within the current bookmark. Notice that the macros
% |HAP_[label]| will contain the numbers of bookmarks to be nested
% within the current bookmark.
%    \begin{macrocode}
\def\HAP@checkbmnumber#1{%
  \expandafter\ifx\csname HAP_#1\endcsname\relax
    0%
  \else
    \csname HAP_#1\endcsname
  \fi
}
%    \end{macrocode}
% Temporary counter.
%    \begin{macrocode}
\newcounter{HAP@temp@sc}
%    \end{macrocode}
% \begin{macro}{\HAP@calcbmnumber}
% Based on |pdfmark.def| (|hyperref|). Computes the number of bookmarks
% to be nested within the current bookmark.
%    \begin{macrocode}
\def\HAP@calcbmnumber#1{%
%    \end{macrocode}
% Set the number of bookmarks for this section equal to the number
% of slides that we already encountered.
%    \begin{macrocode}
  \setcounter{HAP@temp@sc}{\HAP@checkbmnumber{#1}}%
%    \end{macrocode}
% Add one bookmark to this section.
%    \begin{macrocode}
  \stepcounter{HAP@temp@sc}%
%    \end{macrocode}
% And save the updated number of bookmarks again in the |HAP_[label]|
% macro which will be read later to nest the bookmarks.
%    \begin{macrocode}
  \expandafter\xdef\csname HAP_#1\endcsname{\number\c@HAP@temp@sc}%
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\HAPbookmark}
% This is the macro that is written to the |.bm| file. First we
% read the |.bm| file to compute the number of bookmarks to be
% nested within each bookmark.
%    \begin{macrocode}
\def\HAPbookmark#1#2#3#4#5{\HAP@calcbmnumber{#5}}%
\InputIfFileExists{\jobname.bm}{}{}%
%    \end{macrocode}
% Now we redefine the |\HAPbookmark| macro to create the bookmarks.
%    \begin{macrocode}
\def\HAPbookmark#1#2#3#4#5{%
%    \end{macrocode}
% Notice the use of |\pdfstringdef| to allow for things like |\"i|
% in bookmarks.
%    \begin{macrocode}
  \pdfstringdef\HAP@temp@bm{#3}%
  \pdfmark{pdfmark=/OUT,
    Raw={/Count #1\HAP@checkbmnumber{#2}
    /Page #4 /View [/XYZ null null null]
    /Title (\HAP@temp@bm)}%
  }%
}%
%    \end{macrocode}
% We read the |.bm| file again and now the bookmarks will be created.
%    \begin{macrocode}
\InputIfFileExists{\jobname.bm}{}{}%
%    \end{macrocode}
% After reading the |.bm| file, we rewrite it for the next pass.
%    \begin{macrocode}
\newwrite\HAP@bmout\immediate\openout\HAP@bmout\jobname.bm\relax
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\SlideSound}
% This macro creates a link to a sound file and sets the open action
% of the current page to play the file. Notice that this will make
% the PDF neither self sustaining nor system independent! This macro
% can be called from the optional arguments of slide environments, but
% can also be called directly for more flexibility.
%    \begin{macrocode}
\def\SlideSound#1{%
  \ifHAP@sounds
%    \end{macrocode}
% Check availability of the sound file in the current directory. Note
% the use of |.///| for the current directory to circumvent a bug in
% MiKTeX. |./| is the standard to denote the current directory but
% MiKTeX (only) still searches the \TeX\ tree when using |./|. This
% bug has been reported to MiKTeX and will hopefully be solved soon.
%    \begin{macrocode}
    \IfFileExists{.///#1}{}{%
      \PackageError{HA-prosper}{The sound file is not in the
      current directory. You can go ahead, but any PDF viewer
      will complain that the file is missing!}\@ehc
    }%
%    \end{macrocode}
% Put the link to the media on the slide.
%    \begin{macrocode}
    \pdfmark{pdfmark=/ANN,
      Raw={/Rect [0 0 0 0] /Subtype /Movie
      /Title (SlideSound) /Movie << /F (#1) >>}%
    }%
%    \end{macrocode}
% Play the file when the current slide is displayed.
%    \begin{macrocode}
    \pdfmark{pdfmark=/PUT,
      Raw={{ThisPage} << /AA << /O << /S /Movie
      /T (SlideSound) /Operation /Play >> >> >>}%
    }%
  \fi
}
%    \end{macrocode}
% \end{macro}
% \subsubsection{Sectioning the presentation}
% First some counters. The first counter is used for counting slides
% inside sections in the toc.
%    \begin{macrocode}
\newcounter{HAP@sc@toc}
%    \end{macrocode}
% This counter is used to count sections in the presentation.
%    \begin{macrocode}
\newcounter{HAP@sc@pres}
%    \end{macrocode}
% This counter is for counting the number of slides in a section.
%    \begin{macrocode}
\newcounter{HAP@sc@slides}
%    \end{macrocode}
% \DescribeMacro{\tsection}
% This macro creates a section in the table of contents. The stared
% version creates a hidden section. The optional argument is for
% creating a bookmark. The macro uses |\HAP@@tsection| to do the job.
%    \begin{macrocode}
\def\tsection{\@ifstar
  {\@ifnextchar[{\HAP@@tsection{0}{2}}{\HAP@@tsection{0}{2}[]}}%
  {\@ifnextchar[{\HAP@@tsection{0}{1}}{\HAP@@tsection{0}{1}[]}}%
}
%    \end{macrocode}
% \begin{macro}{\HAP@@tsection}
% The workhorse for |\tsection|, |\tsectionandpart| and |\part|.
% \HAPcmd{\ci{HAP@@tsection}\marg{page}\marg{type}\oarg{bm}\marg{title}} |page| indicates
% whether the section got a page (1) or not (0). |type| indicates
% the type of section: 0=not a section (to serve |\part|), 1=normal, 2=hidden.
% This indicator is reused by several other macros, like |\pcontentsline|.
% The optional argument |bm| can contain a replacement for the bookmark
% title created by the |title| option.
%    \begin{macrocode}
\def\HAP@@tsection#1#2[#3]#4{%
%    \end{macrocode}
% Check whether the optional argument is empty. If yes, set it to
% the mandatory argument. This cannot be done by |\tsection| since
% the |\HAP@part| macro needs to access |\@tsection| macro directly.
%    \begin{macrocode}
  \def\HAP@tempa{#3}%
  \ifx\HAP@tempa\@empty
    \def\HAP@tempa{#4}%
  \fi
%    \end{macrocode}
% Step the section counter since we have a new section.
%    \begin{macrocode}
  \stepcounter{HAP@sc@pres}%
%    \end{macrocode}
% Reset the counter for slides in a section.
%    \begin{macrocode}
  \setcounter{HAP@sc@slides}{0}%
%    \end{macrocode}
% Step this counter to get correct bookmarks.
%    \begin{macrocode}
  \stepcounter{trueSlideCounter}%
%    \end{macrocode}
% Add an entry to the |.toc| file.
%    \begin{macrocode}
  \HAP@contentsline{#2}{#4}{\number\c@trueSlideCounter}{\number\c@HAP@sc@pres}%
%    \end{macrocode}
% Write a bookmark.
%    \begin{macrocode}
  \HAP@writebm{}{section.\number\c@HAP@sc@pres}{\HAP@tempa}%
    {\number\c@trueSlideCounter}{}%
%    \end{macrocode}
% Reset the main slide counter.
%    \begin{macrocode}
  \addtocounter{trueSlideCounter}{-1}%
}
%    \end{macrocode}
% \end{macro}
% \subsubsection{part and tsectionandpart}
% An optional key for |\part| and |\tsectionandpart|.
%    \begin{macrocode}
\define@key{HAP@keys@slide}{template}{\def\HAP@templatekey{#1}}
%    \end{macrocode}
% \DescribeMacro{\part}
% This macro uses |\HAP@part|. The entry `0' indicates that this
% macro does not produce a section. See also the |\tsection| macro.
%    \begin{macrocode}
\def\part{\@ifnextchar[{\HAP@part{0}}{\HAP@part{0}[]}}
%    \end{macrocode}
% \DescribeMacro{\tsectionandpart}
% Creates a |\tsection| and a |\part|. The stared version creates
% a hidden section and part.
%    \begin{macrocode}
\def\tsectionandpart{\@ifstar
  {\@ifnextchar[{\HAP@part{2}}{\HAP@part{2}[]}}%
  {\@ifnextchar[{\HAP@part{1}}{\HAP@part{1}[]}}%
}
%    \end{macrocode}
% \begin{macro}{\HAP@part}
% The workhorse for |\part| and |\tsectionandpart|.
% \HAPcmd{\ci{HAP@part}\marg{type}\oarg{opt}\marg{title}}
% |type| coincides with the types used by |\tsection|.
%    \begin{macrocode}
\def\HAP@part#1[#2]#3{%
%    \end{macrocode}
% Grouping is necessary to keep options local.
%    \begin{macrocode}
  \begingroup
%    \end{macrocode}
% Set options.
%    \begin{macrocode}
  \xsetkeys{HAP@keys@slide,HAP@keys@slidespec}{#2}%
%    \end{macrocode}
% Several cases. We start with `not a section'.
%    \begin{macrocode}
  \ifnum#1=\z@
    \ifx\HAP@bmkey\@empty
%    \end{macrocode}
% If bookmark entry is empty, overwrite it to use the title.
%    \begin{macrocode}
      \begin{\HAP@templatekey}[toc=#3,#2,bm=#3]{HAP@notitle}%
    \else
%    \end{macrocode}
% In all other cases, use the bookmark entry supplied by the user
% if is actually there. By default, use the title.
%    \begin{macrocode}
      \begin{\HAP@templatekey}[bm=#3,toc=#3,#2]{HAP@notitle}%
    \fi
  \else
%    \end{macrocode}
% It is a section.
%    \begin{macrocode}
    \ifcase
      \ifx\HAP@tockey\@undefined\@ne\fi
      \ifx\HAP@tockey\@empty\@ne\fi
      \z@
      \ifcase
        \ifx\HAP@bmkey\@undefined\@ne\fi
        \ifx\HAP@bmkey\@empty\@ne\fi
        \z@
%    \end{macrocode}
% Create the section with the supplied optional arguments.
%    \begin{macrocode}
        \HAP@@tsection{1}{#1}[\HAP@bmkey]{\HAP@tockey}%
      \else
%    \end{macrocode}
% Create the section with the title as bookmark since it is absent.
%    \begin{macrocode}
        \HAP@@tsection{1}{#1}[#3]{\HAP@tockey}%
      \fi
    \else
      \ifcase
        \ifx\HAP@bmkey\@undefined\@ne\fi
        \ifx\HAP@bmkey\@empty\@ne\fi
        \z@
%    \end{macrocode}
% Use the title for the toc.
%    \begin{macrocode}
        \HAP@@tsection{1}{#1}[\HAP@bmkey]{#3}%
      \else
%    \end{macrocode}
% Use the title for both the toc and the bookmark.
%    \begin{macrocode}
        \HAP@@tsection{1}{#1}[#3]{#3}%
      \fi
    \fi
%    \end{macrocode}
% For sections, do not create a toc entry or bookmark since that
% is already done by |\HAP@@tsection|, but we do create a slide.
%    \begin{macrocode}
    \begin{\HAP@templatekey}[#2,toc=,bm=]{HAP@notitle}%
  \fi
%    \end{macrocode}
% Put the text onto the slide, after \pf{prosper}.
%    \begin{macrocode}
  \vspace*{1.5cm}%
  \begin{center}%
    \fontTitle{#3}%
  \end{center}%
  \end{\HAP@templatekey}%
  \endgroup
}
%    \end{macrocode}
% \end{macro}
% \subsubsection{Table of contents}
% First some initializations. |\HAP@tempentryb| holds the toc entry
% from one slide to the next to determine at which pages highlighting
% of this entry needs to be created. Versions a--d of |\HAP@tempentry|
% are all used for storing part of a toc entry.
%    \begin{macrocode}
\let\HAP@tocentryb\@undefined
%    \end{macrocode}
% True if a toc entry is the first inside the toc. Used to determine
% if vertical space needs to be inserted or not.
%    \begin{macrocode}
\newif\ifHAP@firstTocEntry
%    \end{macrocode}
% Write the toc at the end of the document so that it can be used
% during a pass.
%    \begin{macrocode}
\AtEndDocument{%
  \ifHAP@toc
    \expandafter\newwrite\csname tf@toc\endcsname
    \immediate\openout\csname tf@toc\endcsname\jobname.toc\relax
%    \end{macrocode}
% When highlighting toc entries, the toc is created with a lag to be able to
% determine the start and stop slide for highlighting and hence the
% final entry has to be written to file at the end of the document.
%    \begin{macrocode}
    \ifHAP@highlight\ifHAP@notesonly\else
      \stepcounter{trueSlideCounter}%
      \protected@write\@auxout{}{%
        \string\@writefile{toc}{%
        \string\pcontentsline{\HAP@tocentrya}{\HAP@tocentryb}%
          {\HAP@tocentryc}{\number\c@trueSlideCounter}{\HAP@tocentryd}}%
      }%
  \fi\fi\fi
}
%    \end{macrocode}
% \begin{macro}{\pcontentsline}
% This macro is used in the |.toc| file and creates the actual toc
% entry from a set of inputs.
% \HAPcmd{\ci{pcontentsline}\marg{type}\marg{title}\marg{start}\marg{stop}\marg{secctr}}
% For |type|, see |\tsection|.
% |start| is the starting page of the slide and |stop| is the
% final slide, both used for highlighting toc entries. If no highlighting
% is requested, only |start| is used to create a link to that page. |secctr| is
% the number of the section in the presentation (only used when
% |type| is 1 or 2). This macro does the first rough filtering in
% the decision to display the inputs at a certain slide or not.
%    \begin{macrocode}
\def\pcontentsline#1#2#3#4#5{%
%    \end{macrocode}
% Not a section.
%    \begin{macrocode}
  \ifnum#1=\z@
%    \end{macrocode}
% For |\HAP@toctype| see the definitions of |\HAP@toc|, |\HAP@tcontent|
% and |\HAP@tsections|. If 1, only sections wanted, hence do nothing.
% Else continue to |\HAP@pcontentsline|.
%    \begin{macrocode}
    \ifnum\HAP@toctype=\@ne\else
      \HAP@pcontentsline{#1}{#2}{#3}{#4}{#5}%
    \fi
%    \end{macrocode}
% It is a section.
%    \begin{macrocode}
  \else
%    \end{macrocode}
% If 2, hidden section, only set counter for keeping track of the
% section number inside the toc which is necessary for the |hlsections|
% package option.
%    \begin{macrocode}
    \ifnum\HAP@toctype=\tw@
      \setcounter{HAP@sc@toc}{#5}%
    \else
%    \end{macrocode}
% Else continue to |\HAP@pcontentsline|.
%    \begin{macrocode}
      \HAP@pcontentsline{#1}{#2}{#3}{#4}{#5}%
    \fi
  \fi
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\HAP@pcontentsline}
% Workhorse for |\pcontentsline|.
% \HAPcmd{\ci{HAP@pcontentsline}\marg{type}\marg{title}\marg{start}\marg{stop}\marg{secctr}}
% Takes the same arguments as that  macro and is used to divide input
% in all different cases and creates PDF page links from those inputs.
%    \begin{macrocode}
\def\HAP@pcontentsline#1#2#3#4#5{%
%    \end{macrocode}
% It is not a section.
%    \begin{macrocode}
  \ifnum#1=\z@
%    \end{macrocode}
% Select right typesetting for toc entry.
%    \begin{macrocode}
    \ifnum\HAP@toctype=\tw@
      \def\HAP@toctext{\HAP@tlineonly{#2}}%
    \else
      \def\HAP@toctext{\HAP@tline{#2}}%
    \fi
%    \end{macrocode}
% It is a section.
%    \begin{macrocode}
  \else
%    \end{macrocode}
% Set the counter for later use and typeset the section.
%    \begin{macrocode}
    \setcounter{HAP@sc@toc}{#5}%
    \ifnum\HAP@toctype=\@ne
      \def\HAP@toctext{\HAP@tsectiononly{#2}}%
    \else
      \def\HAP@toctext{\HAP@tsection{#2}}%
    \fi
  \fi
%    \end{macrocode}
% Here we end up with some cluster of cases. Basically, we need to
% determine whether or not the toc entry at hand should be displayed
% and if it will be highlighted. Let's go ahead case by case, line by line.
%    \begin{macrocode}
  \ifcase
%    \end{macrocode}
% First, we decide whether or not to display the entry. We display
% the entry at hand on this slide if it is in the current section.
%    \begin{macrocode}
    \ifnum\value{HAP@sc@pres}=\value{HAP@sc@toc}\@ne\fi
%    \end{macrocode}
% Or if it is an entry that occurs before the first section (independent
% of the current toc section), but only if the toc type is 0. If it is not 0
% we only display it when the first section didn't start yet.
%    \begin{macrocode}
    \ifnum\value{HAP@sc@toc}=\z@\ifnum\HAP@toctype=\z@\@ne\else
      \ifnum\value{HAP@sc@pres}=\z@\@ne\fi\fi\fi
%    \end{macrocode}
% Or when it is a regular section. Hidden sections (type 2) and
% content of not current sections is not displayed.
%    \begin{macrocode}
    \ifnum#1=\@ne\@ne\fi
    \z@
  \else
%    \end{macrocode}
% Add extra vertical space between sections and items given that the
% current entry section is not the first entry in the toc. Be careful
% for a possibly split toc. No extra vertical space in that case.
%    \begin{macrocode}
    \ifHAP@firstTocEntry\else
      \ifcase
        \ifnum#1=\z@\@ne\fi
        \ifnum\HAP@toctype=\@ne\@ne\fi
        \z@
        \vspace*{\HAP@tsectionskip}%
      \else
        \vspace*{\HAP@titemskip}%
      \fi
    \fi
%    \end{macrocode}
% Set for the rest of the |.toc| processing.
%    \begin{macrocode}
    \HAP@firstTocEntryfalse
%    \end{macrocode}
% Add a section marker when the current entry is a section.
%    \begin{macrocode}
    \ifnum#1=\z@\else\HAP@tsectionm\fi
%    \end{macrocode}
% Then we come to the point where we start to create the
% toc entries. Now we have to decide how to display the entries.
%    \begin{macrocode}
    \ifcase
%    \end{macrocode}
% If highlighting has been requested
%    \begin{macrocode}
      \ifHAP@highlight
%    \end{macrocode}
% and if the current entry is the active one
%    \begin{macrocode}
        \ifnum\value{trueSlideCounter}<#3\space\else
          \ifnum\value{trueSlideCounter}<#4\@ne\fi\fi
%    \end{macrocode}
% or the section is the current section and section highlighting
% has been requested, then we highlight the entry.
%    \begin{macrocode}
        \ifHAP@hlsections\ifnum#1=\z@\else
          \ifnum\value{HAP@sc@pres}=\value{HAP@sc@toc}\@ne\fi\fi\fi
      \fi
      \z@
      \let\HAP@tempa\HAP@tocentry
    \else
      \let\HAP@tempa\HAP@hltocentry
    \fi
%    \end{macrocode}
% Create the pdf hyperlink to the page.
%    \begin{macrocode}
    \HAP@pdfpagelink{\HAP@tempa}{#3}%
    \par
  \fi
}
%    \end{macrocode}
% \end{macro}
% \DescribeMacro{\HAP@pdfpagelink}
% This macro creates the page link for |\HAP@pcontentsline| using a PDF annotation.
% \HAPcmd{\ci{HAP@pdfpagelink}\marg{constr}\marg{page}}
% |constr| is the construction to attach the link to.
% |page| is the target page. This code does not use |hyperref|'s
% hypertarget since these can lead to half slides being displayed.
%    \begin{macrocode}
\def\HAP@pdfpagelink#1#2{%
  \pdfmark[#1]{pdfmark=/LNK,
    Raw={/Page #2 /Border [0 0 0] /View [/XYZ null null null]}}%
}
%    \end{macrocode}
% \begin{macro}{\HAP@contentsline}
% This macro writes the toc entries to disk or remembers them
% if necessary. \HAPcmd{\ci{HAP@contentsline}\marg{type}\marg{title}\marg{page}\marg{secctr}}
% For the arguments, see |\pcontentsline|.
%    \begin{macrocode}
\def\HAP@contentsline#1#2#3#4{%
  \ifHAP@toc
    \ifHAP@highlight
      \ifx\HAP@tocentryb\@undefined\else
%    \end{macrocode}
% When highlighting and it is not the first toc entry of the presentation, write it to disk.
%    \begin{macrocode}
        \protected@write\@auxout{}{%
          \string\@writefile{toc}{%
          \string\pcontentsline{\HAP@tocentrya}{\HAP@tocentryb}%
            {\HAP@tocentryc}{#3}{\HAP@tocentryd}}}%
      \fi
%    \end{macrocode}
% Remember the current entry. This is done to remember the starting
% page of a slide. Write it when the next slide appears and the final
% page of the current slide is known.
%    \begin{macrocode}
      \gdef\HAP@tocentrya{#1}%
%    \end{macrocode}
% |\protected@xdef| necessary to expand |\@tockey| inputs correctly.
%    \begin{macrocode}
      \protected@xdef\HAP@tocentryb{#2}%
      \xdef\HAP@tocentryc{#3}%
      \xdef\HAP@tocentryd{#4}%
    \else
%    \end{macrocode}
% When not highlighting, write the entry to disk.
%    \begin{macrocode}
      \protected@write\@auxout{}{%
        \string\@writefile{toc}{%
        \string\pcontentsline{#1}{#2}{#3}{}%
        {\ifnum#1=\z@\else\number\c@HAP@sc@pres\fi}}}%
    \fi
  \fi
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\HAP@toc}
% \begin{macro}{\HAP@tsections}
% \begin{macro}{\HAP@tcontent}
% These macros put (part of) the table of contents on slides.
% The latter two allow for splitting of the toc. Notice that
% the actual splitting is handled by |\pcontentsline| using
% |\HAP@toctype| as guidance. The macros use |\HAP@tocinput|
% to perform initializations and then load the |.toc| file.
% The first macro will put the entire toc on slides.
%    \begin{macrocode}
\def\HAP@toc{%
  \def\HAP@toctype{0}%
%    \end{macrocode}
% Load |.toc| file.
%    \begin{macrocode}
  \HAP@tocinput
}
%    \end{macrocode}
% This puts only the sections on slides.
%    \begin{macrocode}
\def\HAP@tsections{%
  \def\HAP@toctype{1}%
  \HAP@tocinput
}
%    \end{macrocode}
% This puts only the current section content on slides.
%    \begin{macrocode}
\def\HAP@tcontent{%
  \def\HAP@toctype{2}%
  \HAP@tocinput
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\HAP@tocinput}
% Macro performs some initializations and then loads the |.toc| file.
%    \begin{macrocode}
\def\HAP@tocinput{%
%    \end{macrocode}
% Eliminates space on top of the first toc entry.
%    \begin{macrocode}
  \HAP@firstTocEntrytrue
%    \end{macrocode}
% Reset within |.toc| counter.
%    \begin{macrocode}
  \setcounter{HAP@sc@toc}{0}%
%    \end{macrocode}
% Allow for instance the |babel| package to insert |\select@language|
% into the |.toc| file.
%    \begin{macrocode}
  \makeatletter
%    \end{macrocode}
% Apply |\FontToc| and input |.toc| file for processing.
%    \begin{macrocode}
  \fontToc{\InputIfFileExists{\jobname.toc}{}{}}%
  \makeatother
}
%    \end{macrocode}
% \end{macro}
% \subsubsection{Redefining slide definitions}
% We start with optional keys for the new slide environment.
%    \begin{macrocode}
\define@key{HAP@keys@slidespec}{bm}{\def\HAP@bmkey{#1}}
\define@key{HAP@keys@slidespec}{toc}{\def\HAP@tockey{#1}}
\define@key{HAP@keys@slide}{trans}{\def\HAP@transkey{#1}}
\define@key{HAP@keys@slide}{sound}{\def\HAP@soundkey{#1}}
%    \end{macrocode}
% \begin{environment}{SlideNormal}
% What follows now is adapted code, originally taken from
% \pf{prosper}.
%    \begin{macrocode}
\def\SlideNormal{\@ifnextchar[\HAP@SlideNormal{\HAP@SlideNormal[]}}
\def\HAP@SlideNormal[#1]#2{%
%    \end{macrocode}
% Set the optional keys using the \pf{xkeyval} package.
%    \begin{macrocode}
  \xsetkeys{HAP@keys@slide,HAP@keys@slidespec}{#1}%
  \stepcounter{trueSlideCounter}%
%    \end{macrocode}
% Transition effects.
%    \begin{macrocode}
  \PDFtransition{\HAP@transkey}%
%    \end{macrocode}
% Add transition sounds.
%    \begin{macrocode}
  \ifx\HAP@soundkey\@undefined\else
    \SlideSound{\HAP@soundkey}%
  \fi
  \begin{slide@seminar}%
%    \end{macrocode}
% |\landscapefalse| is defined by |seminar|.
%    \begin{macrocode}
    \ifHAP@portrait\landscapefalse\fi
%    \end{macrocode}
% Slide title empty?
%    \begin{macrocode}
    \def\HAP@tempa{#2}%
    \def\HAP@tempb{HAP@notitle}%
    \ifx\HAP@tempa\HAP@tempb
%    \end{macrocode}
% This part is used by |\part| related commands and |\maketitle|. It
% allows these macros to delete the toc entry and the bookmark entry.
% Deleting bookmark entries on other slides will mess up the nesting
% of bookmarks into sections. First checking the toc entry.
%    \begin{macrocode}
      \ifx\HAP@tockey\@undefined\else\ifx\HAP@tockey\@empty\else
        \HAP@contentsline{0}{\HAP@tockey}{\number\c@trueSlideCounter}{}%
      \fi\fi
%    \end{macrocode}
% Check the bookmark entry. If empty, do not create the bookmark.
%    \begin{macrocode}
      \ifx\HAP@bmkey\@undefined\else\ifx\HAP@bmkey\@empty\else
%    \end{macrocode}
% We have a new bookmark in the current section.
%    \begin{macrocode}
        \stepcounter{HAP@sc@slides}%
%    \end{macrocode}
% Write the bookmark to the |.bm| file. The labelling will later on
% be used to compute the number of bookmarks to be nested within
% the current section.
%    \begin{macrocode}
        \HAP@writebm{}{section.\number\c@HAP@sc@pres.\number\c@HAP@sc@slides}%
          {\HAP@bmkey}{\number\c@trueSlideCounter}{section.\number\c@HAP@sc@pres}%
      \fi\fi
    \else
%    \end{macrocode}
% Slide title.
%    \begin{macrocode}
      \slidetitle{#2}%
%    \end{macrocode}
% Empty bookmarks will not be created.
%    \begin{macrocode}
      \ifx\HAP@bmkey\@undefined
        \stepcounter{HAP@sc@slides}%
        \HAP@writebm{}{section.\number\c@HAP@sc@pres.\number\c@HAP@sc@slides}%
          {#2}{\number\c@trueSlideCounter}{section.\number\c@HAP@sc@pres}%
      \else\ifx\HAP@bmkey\@empty\else
        \stepcounter{HAP@sc@slides}%
        \HAP@writebm{}{section.\number\c@HAP@sc@pres.\number\c@HAP@sc@slides}%
          {\HAP@bmkey}{\number\c@trueSlideCounter}{section.\number\c@HAP@sc@pres}%
      \fi\fi
%    \end{macrocode}
% Create toc entry, unless it is empty, then delete it from the toc.
%    \begin{macrocode}
      \ifx\HAP@tockey\@undefined
        \HAP@contentsline{0}{#2}{\number\c@trueSlideCounter}{}%
      \else\ifx\HAP@tockey\@empty\else
        \HAP@contentsline{0}{\HAP@tockey}{\number\c@trueSlideCounter}{}%
      \fi\fi
    \fi
%    \end{macrocode}
% Start a box, a minipage and make it raggedright.
%    \begin{macrocode}
    \begin{posit@Box}%
      \begin{minipage}{\slideWidth}%
        \raggedright
        \@DefMyItem%
%    \end{macrocode}
% Set the text font.
%    \begin{macrocode}
        \ifinColor\@fontTextColor\else\@fontTextBW\fi
}
%    \end{macrocode}
% Close all started environments and boxes.
%    \begin{macrocode}
\def\endSlideNormal{%
      \end{minipage}%
    \end{posit@Box}%
  \end{slide@seminar}%
}
%    \end{macrocode}
% \end{environment}
% \begin{environment}{SlideOverlay}
% Overlay slides are very comparable to |\SlideNormal|, but these
% get nested bookmarks and an overlay. The case |\ifDVItoPStrue|
% which \pf{prosper} specifies, is
% not interesting here since the macro is only called from the
% |Overlays| environment which is called from |\overlays| (see page~\pageref{macro:overlays})
% but only
% |\ifDVItoPSfalse|. There is no useful application of the |Overlays|
% environment when not being called from the |\overlays| macro.
%    \begin{macrocode}
\def\SlideOverlay{\@ifnextchar[\HAP@SlideOverlay{\HAP@SlideOverlay[]}}
\def\HAP@SlideOverlay[#1]#2{%
  \xsetkeys{HAP@keys@slide,HAP@keys@slidespec}{#1}%
  \stepcounter{trueSlideCounter}%
  \PDFtransition{\HAP@transkey}%
  \ifx\HAP@soundkey\@undefined\else
    \SlideSound{\HAP@soundkey}%
  \fi
  \begin{slide@seminar}%
    \ifHAP@portrait\landscapefalse\fi
    \def\HAP@tempa{#2}%
    \def\HAP@tempb{HAP@notitle}%
    \ifx\HAP@tempa\HAP@tempb\else
      \ifHAP@firstOverlay
%    \end{macrocode}
% This code is used for the first overlay slide created by |\overlays|.
%    \begin{macrocode}
        \global\HAP@firstOverlayfalse
%    \end{macrocode}
% \pf{prosper} option to open bookmarks of overlays.
%    \begin{macrocode}
        \ifcollapsedBookmarks\def\HAP@tempa{-}\else\def\HAP@tempa{}\fi
%    \end{macrocode}
% Create bookmarks, nest them and open them if requested.
%    \begin{macrocode}
        \ifx\HAP@bmkey\@undefined
          \stepcounter{HAP@sc@slides}%
          \HAP@writebm{\HAP@tempa}{section.\number\c@HAP@sc@pres.\number\c@HAP@sc@slides}%
            {#2}{\number\c@trueSlideCounter}{section.\number\c@HAP@sc@pres}%
        \else\ifx\HAP@bmkey\@empty\else
          \stepcounter{HAP@sc@slides}%
          \HAP@writebm{\HAP@tempa}{section.\number\c@HAP@sc@pres.\number\c@HAP@sc@slides}%
            {\HAP@bmkey}{\number\c@trueSlideCounter}{section.\number\c@HAP@sc@pres}%
        \fi\fi
%    \end{macrocode}
% Create toc entries.
%    \begin{macrocode}
        \ifx\HAP@tockey\@undefined
          \HAP@contentsline{0}{#2}{\number\c@trueSlideCounter}{}%
        \else\ifx\HAP@tockey\@empty\else
          \HAP@contentsline{0}{\HAP@tockey}{\number\c@trueSlideCounter}{}%
        \fi\fi
      \else
%    \end{macrocode}
% This case relates to the rest of the slides created by |\overlays|.
% Create bookmarks without nesting and no toc entries.
%    \begin{macrocode}
        \ifx\HAP@bmkey\@undefined
          \HAP@writebm{}{overlay}{#2}{\number\c@trueSlideCounter}%
            {section.\number\c@HAP@sc@pres.\number\c@HAP@sc@slides}%
        \else\ifx\HAP@bmkey\@empty\else
          \HAP@writebm{}{overlay}{\HAP@bmkey}{\number\c@trueSlideCounter}%
            {section.\number\c@HAP@sc@pres.\number\c@HAP@sc@slides}%
        \fi\fi
      \fi
      \slidetitle{#2}%
    \fi
    \begin{posit@Box}%
      \begin{minipage}{\slideWidth}%
        \raggedright
        \@DefMyItem%
        \ifinColor\@fontTextColor\else\@fontTextBW\fi
        {\overlay{1}}%
}
%    \end{macrocode}
% Close all started environments and boxes.
%    \begin{macrocode}
\def\endSlideOverlay{%
      \end{minipage}%
    \end{posit@Box}%
  \end{slide@seminar}%
  \ifDVItoPS\else
    \addtocounter{slide}{-1}%
  \fi
}
%    \end{macrocode}
% \end{environment}
% \DescribeEnv{slide}
% These macros define the |slide| environment.
%    \begin{macrocode}
\let\slide=\SlideNormal
\let\endslide=\endSlideNormal
%    \end{macrocode}
% \subsubsection{Bibliography}
% \DescribeEnv{thebibliography}
% This section includes a redefined |bibliography| environment which
% does not create a section heading. The original has been taken from
% |article.cls|.
%    \begin{macrocode}
\renewenvironment{thebibliography}[1]{%
  \list{\@biblabel{\@arabic\c@enumiv}}%
    {\settowidth\labelwidth{\@biblabel{#1}}%
    \leftmargin\labelwidth
    \advance\leftmargin\labelsep
    \@openbib@code
    \usecounter{enumiv}%
    \let\p@enumiv\@empty
    \renewcommand\theenumiv{\@arabic\c@enumiv}}%
  \sloppy
  \clubpenalty4000
  \@clubpenalty \clubpenalty
  \widowpenalty4000%
  \sfcode`\.\@m
}{%
  \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
  \endlist
}
%    \end{macrocode}
% \subsubsection{Underlying macros for itemize and enumerate}
% First let the \pf{prosper} command |\NoFrenchBabelItemize| do nothing
% anymore since we redefine lists |\AtBeginDocument| always.
%    \begin{macrocode}
\let\NoFrenchBabelItemize\relax
\def\HAP@toodeep{\PackageError{HA-prosper}{Items too deeply nested}\@ehd}
%    \end{macrocode}
% |\ifHAP@active| indicates state of an item. \pf{HA-prosper} only
% sets it, but does not use it. It can be used in styles.
%    \begin{macrocode}
\newif\ifHAP@active
%    \end{macrocode}
% |\ifHAP@nested| indicates whether an |itemize| or |enumerate|
% environment is nested in a stepping environment. In that case,
% active state is inherited.
%    \begin{macrocode}
\newif\ifHAP@nested
%    \end{macrocode}
% Keep a copy of the original |\item|.
%    \begin{macrocode}
\let\HAP@orig@item=\item
%    \end{macrocode}
% \DescribeMacro{\xitem}
% The |\xitem| macro.
%    \begin{macrocode}
\def\xitem{\@ifnextchar<\HAP@xitem{\HAP@xitem<0>}}
%    \end{macrocode}
% \DescribeMacro{\HAP@xitem}
% The workhorse for |\xitem|. It can be reset in environments.
%    \begin{macrocode}
\def\HAP@xitem<#1>{%
  \PackageError{HA-prosper}{Lonely \string\item--perhaps a missing
    list environment}\@ehc
}
\AtBeginDocument{%
%    \end{macrocode}
% \begin{environment}{HAP@itemize}
% Define the |HAP@itemize| and |HAP@enumerate| environments without a left block indent
% and |topsep| since this creates ugly lists on slides and wastes
% a lot of space.
% Definitions taken mainly from |latex.ltx| and modified.
%    \begin{macrocode}
  \def\itemize{%
    \def\HAP@xitem<##1>{%
%    \end{macrocode}
% If not nested, item is active, otherwise, inherit.
%    \begin{macrocode}
      \ifHAP@nested\else\HAP@activetrue\fi
      \HAP@orig@item
    }%
    \ifnum\@itemdepth>\tw@\HAP@toodeep\else
      \advance\@itemdepth\@ne
      \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
      \expandafter
      \list
        \csname\@itemitem\endcsname{%
%    \end{macrocode}
% Setting relevant lengths.
%    \begin{macrocode}
        \setlength{\itemsep}{\z@}%
        \setlength{\parsep}{\z@}%
        \setlength{\topsep}{\z@}%
        \setlength{\partopsep}{\z@}%
        \addtolength{\topsep}{-\parskip}%
        \addtolength{\partopsep}{\parskip}%
        \ifnum\@itemdepth<2
          \settowidth{\HAP@tla}{\labelitemi}%
          \addtolength{\HAP@tla}{\labelsep}%
          \setlength{\leftmargin}{\HAP@tla}%
          \setlength{\itemsep}{.5ex}%
        \fi\raggedright
        \def\makelabel##1{\hss\llap{##1}}}%
    \fi
  }
%    \end{macrocode}
% End the list.
%    \begin{macrocode}
  \let\enditemize\endlist
%    \end{macrocode}
% \end{environment}
% \begin{environment}{HAP@enumerate}
% For |HAP@enumerate| we do roughly the same thing.
%    \begin{macrocode}
  \def\enumerate{%
    \def\HAP@xitem<##1>{%
      \ifHAP@nested\else\HAP@activetrue\fi
      \HAP@orig@item
    }%
    \ifnum\@enumdepth>\tw@\HAP@toodeep\else
      \advance\@enumdepth\@ne
      \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
      \expandafter
      \list
        \csname label\@enumctr\endcsname{%
        \setlength{\itemsep}{\z@}%
        \setlength{\parsep}{\z@}%
        \setlength{\topsep}{\z@}%
        \setlength{\partopsep}{\z@}%
        \addtolength{\topsep}{-\parskip}%
        \addtolength{\partopsep}{\parskip}%
        \ifnum\@enumdepth<2
          \settowidth{\HAP@tla}{\labelenumi}%
          \addtolength{\HAP@tla}{\labelsep}%
          \setlength{\leftmargin}{\HAP@tla}%
          \setlength{\itemsep}{.5ex}%
        \fi\raggedright
        \usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}%
    \fi
  }
%    \end{macrocode}
% End the list.
%    \begin{macrocode}
  \let\endenumerate\endlist
%    \end{macrocode}
% \end{environment}
% End of |\AtBeginDocument|.
%    \begin{macrocode}
}
%    \end{macrocode}
% \subsubsection{Stepping environments}
% Now we define animated lists. We start with the overall depth of a list
% with possibly |itemstep|s and |enumstep|s nested into each other.
%    \begin{macrocode}
\newcounter{HAP@listdepth}
%    \end{macrocode}
% Optional arguments.
%    \begin{macrocode}
\define@key{HAP@keys@step}{sstart}{\def\HAP@Istart{#1}}
\define@key{HAP@keys@step}{stype}{\def\HAP@Itype{#1}}
\define@key{HAP@keys@step}{iacolor}{\def\HAP@Icolor{#1}}
%    \end{macrocode}
% \DescribeEnv{itemstep}\DescribeEnv{enumstep}
% These macros generate the animated lists. Taken from
% prosper and heavily modified to allow for multiple types
% of animated lists and nesting of |enumstep| and |itemstep|
% environments.
%    \begin{macrocode}
\def\itemstep{\@ifnextchar[{\HAP@stepenv{0}}{\HAP@stepenv{0}[]}}
\def\enumstep{\@ifnextchar[{\HAP@stepenv{1}}{\HAP@stepenv{1}[]}}
%    \end{macrocode}
% Closing the environments |itemstep| and |enumstep|.
%    \begin{macrocode}
\def\enditemstep{\endHAP@stepenv{0}}
\def\endenumstep{\endHAP@stepenv{1}}
%    \end{macrocode}
% \begin{environment}{HAP@stepenv}
% Workhorse for both |itemstep| and |enumstep|. The first
% argument identifies the type of list (0 for |itemstep|)
% and the second contains the optional arguments.
%    \begin{macrocode}
\def\HAP@stepenv#1[#2]{%
%    \end{macrocode}
% A following environment might be nested. Important for setting active
% state.
%    \begin{macrocode}
  \HAP@nestedtrue
%    \end{macrocode}
% Load the options into macros.
%    \begin{macrocode}
  \xsetkeys{HAP@keys@step}{#2}%
%    \end{macrocode}
% If |dvi2ps|, all items should be active since overlays create
% only one slide.
%    \begin{macrocode}
  \ifDVItoPS\def\HAP@Itype{0}\fi
%    \end{macrocode}
% Start the list.
%    \begin{macrocode}
  \ifnum#1=\z@
    \begin{itemize}%
  \else
    \begin{enumerate}%
  \fi
%    \end{macrocode}
% Possibility to let the animated list start at a later overlay.
% Only possible when the overall depth is zero, hence the current
% list is not nested.
%    \begin{macrocode}
  \ifnum\value{HAP@listdepth}=\z@
    \setcounter{item@step}{\HAP@Istart}%
    \addtocounter{item@step}{-1}%
  \fi
%    \end{macrocode}
% Increase list depth. We are one level deeper.
%    \begin{macrocode}
  \stepcounter{HAP@listdepth}%
%    \end{macrocode}
% \begin{macro}{\HAP@xitem}
% Workhorse for |\xitem|.
%    \begin{macrocode}
  \def\HAP@xitem<##1>{%
%    \end{macrocode}
% Next step in the list.
%    \begin{macrocode}
    \stepcounter{item@step}%
%    \end{macrocode}
% Set temp counter to |item@step + input value|.
%    \begin{macrocode}
    \setcounter{HAP@tca}{\value{item@step}}%
    \addtocounter{HAP@tca}{##1}%
    \HAP@activetrue
%    \end{macrocode}
% If the type is 0, all items remain active, display incrementally.
%    \begin{macrocode}
    \ifnum\HAP@Itype=\z@
      \HAP@textc
      \OnSlide{\value{item@step}-}%
    \else
%    \end{macrocode}
% Else, items can become inactive. If type is 1, display list incrementally.
%    \begin{macrocode}
      \ifnum\HAP@Itype=\@ne\OnSlide{\value{item@step}-}\fi
      \ifcase
%    \end{macrocode}
% If |item@step| $\leq$ |overlay number| $\leq$ |item@step + input value|,
% then item is active.
%    \begin{macrocode}
        \ifnum\value{overlaysCount}<\value{item@step}\@ne\fi
        \ifnum\value{overlaysCount}>\value{HAP@tca}\@ne\fi
        \z@
        \HAP@textc
      \else
        \csname\HAP@Icolor\endcsname
        \HAP@activefalse
      \fi
    \fi
%    \end{macrocode}
% Original |\item|. This allows for doing |\xitem[a]| or |\xitem<1>[b]|.
%    \begin{macrocode}
    \HAP@orig@item
  }%
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
}
%    \end{macrocode}
% Workhorse for |\enditemstep| and |\endenumstep|
%    \begin{macrocode}
\def\endHAP@stepenv#1{%
  \ifnum#1=\z@
    \end{itemize}%
  \else
    \end{enumerate}%
  \fi
%    \end{macrocode}
% Decrease list depth.
%    \begin{macrocode}
  \addtocounter{HAP@listdepth}{-1}%
%    \end{macrocode}
% Reset the |item@step| counter for a next list.
%    \begin{macrocode}
  \ifnum\value{HAP@listdepth}=\z@
    \setcounter{item@step}{0}%
    \HAP@nestedfalse
  \fi
}
%    \end{macrocode}
% \end{environment}
% \subsubsection{Maketitle}
% \begin{macro}{\maketitle}
% We start with restoring two macros to the \LaTeX\ original.
%    \begin{macrocode}
\def\title#1{\gdef\@title{#1}}
\def\author#1{\gdef\@author{#1}}
%    \end{macrocode}
% This code originates from the \pf{prosper} but has been modified
% a lot.
%    \begin{macrocode}
\renewcommand{\maketitle}[1][]{%
%    \end{macrocode}
% \pf{prosper} comment: Tests whether the 'french' style from B. Gaulle is loaded.
%    \begin{macrocode}
  \expandafter\ifx\csname frenchTeXmods\endcsname\relax
  \else
%    \end{macrocode}
% \pf{prosper} comment: Is it an old version affected by the bug.
%    \begin{macrocode}
  \ifx\@soORI\@undefined
  \PackageWarning{prosper}{This page is intentionally left blank
    to overcome an incompatibility bug in the seminar class with
    the old (< 1999/11/23) B. Gaulle's 'french' package.}%
  \begin{center}%
    {\black\small
  \textsf{prosper} class: page intentionally left blank to overcome
    an incompatibility bug between B. Gaulle 'french' package and
    the seminar class.}%
  \end{center}%
  \clearpage \setcounter{page}{0}%
  \fi\fi
%    \end{macrocode}
% Allow for optional arguments in |\maketitle| command.
%    \begin{macrocode}
  \begin{slide}[#1]{HAP@notitle}%
    \ptsize{10}%
    \begin{center}%
    \@titleSpacing\par
    \normalfont
    {\ifinColor\@fontTitleColor\else\@fontTitleBW\fi\@title\par}%
    \ifx\@Subtitle\@empty\else
    {\ifinColor\@fontSubtitleColor\else\@fontSubtitleBW\fi\@Subtitle\par}%
    \fi
    \vskip2em
%    \end{macrocode}
% Put author in a tabular to allow for the use of the standard |\and| command.
%    \begin{macrocode}
    {\ifinColor\@fontAuthorColor\else\@fontAuthorBW\fi
      \begin{tabular}[t]{c}\@author\end{tabular}\par}%
    \vfill
    \end{center}%
  \end{slide}%
}
%    \end{macrocode}
% \end{macro}
% \subsubsection{Overlays}
% This section contains some overlays macros. We start with the
% |Overlays| environment used by the |\overlays| macro.
%    \begin{macrocode}
\newif\ifHAP@firstOverlay
\def\Overlays{%
  \HAP@firstOverlaytrue
  \global\let\slide\SlideOverlay
  \global\let\endslide\endSlideOverlay
  \setcounter{overlay@page}{\value{slide}}%
}
\def\endOverlays{%
  \HAP@firstOverlayfalse
  \global\let\slide\SlideNormal
  \global\let\endslide\endSlideNormal
  \setcounter{slide}{\value{overlay@page}}%
  \stepcounter{slide}%
}
%    \end{macrocode}
% This patch by Mathieu Goutelle, modified by Hendri Adriaens,
% solves the problem of numbering on overlays. Custom counters
% can be requested to be protected using |\HAPsetup|.
% \begin{macro}{\overlays}\label{macro:overlays}
% This code has been taken from \pf{prosper} and has been modified.
%    \begin{macrocode}
\long\def\overlays#1#2{%
  \bgroup
  \aftergroup\HAP@cleanupOverlay
  \InOverlaystrue
  \setcounter{limitOverlays}{#1}%
  \setcounter{overlaysCount}{1}%
  \ifDVItoPS
    #2
  \else
    \begin{Overlays}%
    \bgroup
    \loop
      \@everyOverlay
%    \end{macrocode}
% Save current counter values.
%    \begin{macrocode}
      \HAP@scounters
      #2
      \ifnum\value{overlaysCount}<\value{limitOverlays}{%
      \stepcounter{overlaysCount}%
%    \end{macrocode}
% Return the counters to the original setting on every
% overlay to be able to number items correctly.
%    \begin{macrocode}
      \HAP@rcounters
    }%
    \repeat
    \egroup
    \end{Overlays}%
  \fi
  \egroup
}
%    \end{macrocode}
% \end{macro}
% \DescribeMacro{\HAP@cleanupOverlay}
% To be performed after using |\overlays|. Reset the counters to allow
% for reusing the value of the counters, for instance in style files.
%    \begin{macrocode}
\def\HAP@cleanupOverlay{%
  \InOverlaysfalse
  \setcounter{limitOverlays}{0}%
  \setcounter{overlaysCount}{0}%
}
%    \end{macrocode}
% Let the |\saveCtr| do nothing since this package offers a different
% mechanism to protect counters on overlays.
%    \begin{macrocode}
\let\saveCtr\relax
%    \end{macrocode}
% The following key saves the input to |\HAP@counterslist|, adds the
% counters |figure|, |table| and |equation| to the list and creates
% backup counters.
%    \begin{macrocode}
\define@key{HAP@keys@globalonly}{counters}{%
  \def\HAP@counterslist{#1}%
  \ifx\HAP@counterslist\@empty
    \g@addto@macro\HAP@counterslist{figure,equation,table}%
  \else
    \g@addto@macro\HAP@counterslist{,figure,equation,table}%
  \fi
%    \end{macrocode}
% Create backup counters.
%    \begin{macrocode}
  \@for\HAP@tempa:=\HAP@counterslist\do{%
    \@ifundefined{c@\HAP@tempa}{\@nocounterr{\HAP@tempa}}%
      {\@ifundefined{c@HAP@oldc@\HAP@tempa}{\newcounter{HAP@oldc@\HAP@tempa}}{}}%
  }%
}
%    \end{macrocode}
% \DescribeMacro{\HAP@scounters}
% Saves current counter values to the backup counters.
%    \begin{macrocode}
\def\HAP@scounters{%
  \@for\HAP@tempa:=\HAP@counterslist\do{%
    \setcounter{HAP@oldc@\HAP@tempa}{\value{\HAP@tempa}}%
  }%
}
%    \end{macrocode}
% \DescribeMacro{\HAP@rcounters}
% Resets the actual counters using the backup counters.
%    \begin{macrocode}
\def\HAP@rcounters{%
  \@for\HAP@tempa:=\HAP@counterslist\do{%
    \setcounter{\HAP@tempa}{\value{HAP@oldc@\HAP@tempa}}%
  }%
}
%    \end{macrocode}
% \subsubsection{Font definitions}
% This section contains some font definitions in the light of \pf{prosper}
% The |\Font...| macros define fonts to be used for certain text elements
% and the |\font...| versions allow to apply the predefined font to
% the text.\par
% \DescribeMacro{\FontLeftFoot}\DescribeMacro{\fontLeftFoot}
% Definitions for the left footer.
%    \begin{macrocode}
\def\@fontLFColor{\@fontTextColor\fontsize{5pt}{5pt}\selectfont}
\def\@fontLFBW{\@fontTextBW\fontsize{5pt}{5pt}\selectfont}
\newcommand{\FontLeftFoot}[2]{%
  \gdef\@fontLFColor{#1}%
  \gdef\@fontLFBW{#2}}
\newcommand{\fontLeftFoot}[1]{{\ifinColor\@fontLFColor\else\@fontLFBW\fi#1}}
%    \end{macrocode}
% \DescribeMacro{\FontRightFoot}\DescribeMacro{\fontRightFoot}
% Definitions for the right footer.
%    \begin{macrocode}
\def\@fontRFColor{\@fontTextColor\fontsize{5pt}{5pt}\selectfont}
\def\@fontRFBW{\@fontTextBW\fontsize{5pt}{5pt}\selectfont}
\newcommand{\FontRightFoot}[2]{%
  \gdef\@fontRFColor{#1}%
  \gdef\@fontRFBW{#2}}
\newcommand{\fontRightFoot}[1]{{\ifinColor\@fontRFColor\else\@fontRFBW\fi#1}}
%    \end{macrocode}
% \DescribeMacro{\FontAuthor}\DescribeMacro{\fontAuthor}
% Definitions for author.
%    \begin{macrocode}
\def\@fontAuthorColor{\@fontTextColor}
\def\@fontAuthorBW{\@fontTextBW}
\newcommand{\FontAuthor}[2]{%
  \gdef\@fontAuthorColor{#1}%
  \gdef\@fontAuthorBW{#2}}
\newcommand{\fontAuthor}[1]{{\ifinColor\@fontAuthorColor\else\@fontAuthorBW\fi#1}}
%    \end{macrocode}
% \DescribeMacro{\FontInst}\DescribeMacro{\fontInst}
% Definitions for institution.
%    \begin{macrocode}
\def\@fontInstColor{\@fontTextColor\fontsize{7pt}{7pt}\selectfont}
\def\@fontInstBW{\@fontTextBW\fontsize{7pt}{7pt}\selectfont}
\newcommand{\FontInst}[2]{%
  \gdef\@fontInstColor{#1}%
  \gdef\@fontInstBW{#2}}
\newcommand{\fontInst}[1]{{\ifinColor\@fontInstColor\else\@fontInstBW\fi#1}}
%    \end{macrocode}
% \DescribeMacro{\institution}
% The |\institution| macro does not put text anymore directly onto
% the title slide. Instead, it applies the font settings and can be
% used inside the |\author| macro.
%    \begin{macrocode}
\let\institution\fontInst
%    \end{macrocode}
% \DescribeMacro{\FontEmail}\DescribeMacro{\fontEmail}
% Definitions for e-mail.
%    \begin{macrocode}
\def\@fontEmailColor{\@fontTextColor\fontsize{7pt}{7pt}\selectfont}
\def\@fontEmailBW{\@fontTextBW\fontsize{7pt}{7pt}\selectfont}
\newcommand{\FontEmail}[2]{%
  \gdef\@fontEmailColor{#1}%
  \gdef\@fontEmailBW{#2}}
\newcommand{\fontEmail}[1]{{\ifinColor\@fontEmailColor\else\@fontEmailBW\fi#1}}
%    \end{macrocode}
% \DescribeMacro{\email}
% The |\email| macro does not put text anymore directly onto
% the title slide. Instead, it applies the font settings and can be
% used inside the |\author| macro.
%    \begin{macrocode}
\let\email\fontEmail
%    \end{macrocode}
% \DescribeMacro{\FontToc}\DescribeMacro{\fontToc}
% Definitions for the table of contents.
%    \begin{macrocode}
\def\@fontTocColor{\@fontTextColor\fontsize{4pt}{6pt}\selectfont}
\def\@fontTocBW{\@fontTextBW\fontsize{4pt}{6pt}\selectfont}
\newcommand{\FontToc}[2]{%
  \gdef\@fontTocColor{#1}%
  \gdef\@fontTocBW{#2}}
\newcommand{\fontToc}[1]{{\ifinColor\@fontTocColor\else\@fontTocBW\fi#1}}
%    \end{macrocode}
% \subsubsection{Footers}
% We don't use the seminar page style. It provides not enough flexibility
% for placement of footers.
%    \begin{macrocode}
\renewpagestyle{GenericPageStyle}{}{}
%    \end{macrocode}
% \DescribeMacro{\HAP@leftfoot}\DescribeMacro{\HAP@rightfoot}
% These macros store the footer texts.
%    \begin{macrocode}
\define@key{HAP@keys@globalonly}{lf}{\def\HAP@leftfoot{#1}}
\define@key{HAP@keys@globalonly}{rf}{\def\HAP@rightfoot{#1}}
%    \end{macrocode}
% \DescribeMacro{\LeftFoot}\DescribeMacro{\RightFoot}
% Backward compatibility for earlier version of \pf{HA-prosper} which
% where not using the |\HAPsetup| user interface yet.
%    \begin{macrocode}
\def\LeftFoot#1{\def\HAP@leftfoot{#1}}
\def\RightFoot#1{\def\HAP@rightfoot{#1}}
%    \end{macrocode}
% \DescribeMacro{\HAP@sn}
% Slide number.
%    \begin{macrocode}
\define@key{HAP@keys@globalonly}{sn}{\def\HAP@sn{#1}}
%    \end{macrocode}
% \DescribeMacro{\HAP@PutLF}
% This can be used to in a template to position the left footer. It
% uses |\rput| and puts the footer in the left footer font.
%    \begin{macrocode}
\newcommand{\HAP@PutLF}[2]{%
  \rput[#1](#2){\parbox[t]{\slidewidth}{\fontLeftFoot{\HAP@leftfoot}}}%
}
%    \end{macrocode}
% \DescribeMacro{\HAP@PutRF}
% Puts the right footer on slides.
%    \begin{macrocode}
\newcommand{\HAP@PutRF}[2]{%
  \ifx\HAP@sn\@empty
    \rput[#1](#2){%
      \parbox[t]{\slidewidth}{\hfill\fontRightFoot{\HAP@rightfoot}}}%
  \else
    \rput[#1](#2){%
      \parbox[t]{\slidewidth}{\hfill\fontRightFoot{\HAP@rightfoot~\HAP@sn}}}%
  \fi
}
%    \end{macrocode}
% \subsubsection{Dualslides}
% This section contains the code to create dualslides.
% We start with a lot of lengths which can be set by the user.
%    \begin{macrocode}
\newlength{\HAP@lcolwidth}
\newlength{\HAP@rcolwidth}
\newlength{\HAP@frsep}
\newlength{\HAP@colsep}
\newlength{\HAP@topsep}
\newlength{\HAP@bottomsep}
\newlength{\HAP@indent}
%    \end{macrocode}
% Optional arguments. Refer to the manual for a full
% description of the options.
%    \begin{macrocode}
\define@key{HAP@keys@dual}{lineheight}{\def\HAP@lineheight{#1}}
\define@key{HAP@keys@dual}{lfrheight}{\def\HAP@lfrheight{#1}}
\define@key{HAP@keys@dual}{rfrheight}{\def\HAP@rfrheight{#1}}
\define@key{HAP@keys@dual}{frsep}{\setlength{\HAP@frsep}{#1}}
\define@key{HAP@keys@dual}{colsep}{\setlength{\HAP@colsep}{#1}}
\define@key{HAP@keys@dual}{lcolwidth}{\setlength{\HAP@lcolwidth}{#1}}
\define@key{HAP@keys@dual}{rcolwidth}{\setlength{\HAP@rcolwidth}{#1}}
\define@key{HAP@keys@dual}{topsep}{\setlength{\HAP@topsep}{#1}}
\define@key{HAP@keys@dual}{bottomsep}{\setlength{\HAP@bottomsep}{#1}}
\define@key{HAP@keys@dual}{indent}{\setlength{\HAP@indent}{#1}}
%    \end{macrocode}
% \DescribeMacro{\HAP@maxdim}
% Macro that returns the maximum of two dimensions.
%    \begin{macrocode}
\def\HAP@maxdim#1#2{\ifdim#1>#2#1\else#2\fi}
%    \end{macrocode}
% \DescribeMacro{\dualslide}\DescribeMacro{\HAP@dualslide}\DescribeMacro{\HAP@@dualslide}
% The |\dualslide| macro is called with
% \HAPcmd{\ci{dualslide}\oarg{opt1}\oarg{opt2}\oarg{opt3}\marg{options}\marg{left}\marg{right}}
% If only |opt1| specified, then |opt2|=|opt1| and |opt3|=|opt1|. If
% |opt1| and |opt2| specified, |opt3|=|opt1|. The macros |\HAP@dualslide|
% and |\HAP@@dualslide| are used to achieve this behavior.
% See for more info on the arguments the manual.
%    \begin{macrocode}
\def\dualslide{\@ifnextchar[\HAP@dualslide{\HAP@@@dualslide[][][]}}
\def\HAP@dualslide[#1]{%
  \@ifnextchar[{\HAP@@dualslide[#1]}%
  {\HAP@@@dualslide[#1][#1][#1]}%
}
\def\HAP@@dualslide[#1][#2]{%
  \@ifnextchar[{\HAP@@@dualslide[#1][#2]}%
  {\HAP@@@dualslide[#1][#2][#1]}%
}
%    \end{macrocode}
% \begin{macro}{\HAP@@@dualslide}
% Workhorse for |\dualslide|. This macro creates the dualslide construct.
%    \begin{macrocode}
\long\def\HAP@@@dualslide[#1][#2][#3]#4#5#6{%
%    \end{macrocode}
% Set default dimensions.
%    \begin{macrocode}
  \setlength{\HAP@frsep}{1.5mm}%
  \setlength{\HAP@colsep}{.06\linewidth}%
  \setlength{\HAP@lcolwidth}{.47\linewidth}%
  \setlength{\HAP@rcolwidth}{.47\linewidth}%
  \setlength{\HAP@topsep}{0cm}%
  \setlength{\HAP@bottomsep}{0cm}%
  \setlength{\HAP@indent}{0cm}%
%    \end{macrocode}
% Load options.
%    \begin{macrocode}
  \xsetkeys{HAP@keys@dual}{#4}%
%    \end{macrocode}
% The next section computes the height of the dualslide construct.
% We start with left content height.
%    \begin{macrocode}
  \sbox\HAP@tba{\begin{minipage}{\HAP@lcolwidth}#5\end{minipage}}%
  \setlength{\HAP@tlc}{\the\ht\HAP@tba}%
  \addtolength{\HAP@tlc}{\the\dp\HAP@tba}%
%    \end{macrocode}
% Right content height.
%    \begin{macrocode}
  \sbox\HAP@tbb{\begin{minipage}{\HAP@rcolwidth}#6\end{minipage}}%
  \setlength{\HAP@tld}{\the\ht\HAP@tbb}%
  \addtolength{\HAP@tld}{\the\dp\HAP@tbb}%
%    \end{macrocode}
% Take the maximum of left and right content.
%    \begin{macrocode}
  \setlength{\HAP@tlc}{\HAP@maxdim{\HAP@tlc}{\HAP@tld}}%
%    \end{macrocode}
% If a left frame is requested, compute max height again.
%    \begin{macrocode}
  \ifx\HAP@lfrheight\@undefined\else
    \setlength{\HAP@tlc}{\HAP@maxdim{\HAP@lfrheight}{\HAP@tlc}}%
  \fi
%    \end{macrocode}
% If a line is requested, compute max height again.
%    \begin{macrocode}
  \ifx\HAP@lineheight\@undefined\else
    \setlength{\HAP@tlc}{\HAP@maxdim{\HAP@lineheight}{\HAP@tlc}}%
  \fi
%    \end{macrocode}
% Finally, evaluate the height of the right frame and compute the max again.
%    \begin{macrocode}
  \ifx\HAP@rfrheight\@undefined\else
    \setlength{\HAP@tlc}{\HAP@maxdim{\HAP@rfrheight}{\HAP@tlc}}%
  \fi
%    \end{macrocode}
% Now we know the height of the construct, create vertical space
% with a |pspicture| on which we position the elements. In between
% creating elements, we compute a bit with lengths to calculate the
% positions of the elements depending on all the inputs. The code
% below contains references to points. These points can be found in
% the picture below, which shows the top part of the dualslide
% construct to be created by |\HAP@@@dualslide|.\par
%\setlength{\unitlength}{.7cm}
%\begin{picture}(14,2)(0,.5)
%\put(0,.5){\line(0,1){2}}
%\put(0,2.5){\line(1,0){6}}
%\put(6,2.5){\line(0,-1){2}}
%\put(7,.5){\line(0,1){2}}
%\put(8,.5){\line(0,1){2}}
%\put(8,2.5){\line(1,0){6}}
%\put(14,2.5){\line(0,-1){2}}
%\dashline{2}(.75,.5)(.75,1.125)(.75,1.75)
%\dashline{2}(.75,1.75)(1.25,1.75)(1.75,1.75)%
%(2.25,1.75)(2.75,1.75)(3.25,1.75)(3.75,1.75)%
%(4.25,1.75)(4.75,1.75)(5.25,1.75)
%\dashline{2}(5.25,.5)(5.25,1.125)(5.25,1.75)
%\dashline{2}(8.75,.5)(8.75,1.125)(8.75,1.75)
%\dashline{2}(8.75,1.75)(9.25,1.75)(9.75,1.75)%
%(10.25,1.75)(10.75,1.75)(11.25,1.75)(11.75,1.75)%
%(12.25,1.75)(12.75,1.75)(13.25,1.75)
%\dashline{2}(13.25,.5)(13.25,1.125)(13.25,1.75)
%\put(.75,1){\circle*{.15}}
%\put(.35,1){|1|}
%\put(5.25,1){\circle*{.15}}
%\put(4.85,1){|2|}
%\put(6,1){\circle*{.15}}
%\put(5.6,1){|3|}
%\put(7,1){\circle*{.15}}
%\put(6.6,1){|4|}
%\put(8.75,1){\circle*{.15}}
%\put(8.35,1){|5|}
%\put(8,1){\circle*{.15}}
%\put(7.6,1){|6|}
%\put(14,1){\circle*{.15}}
%\put(13.6,1){|7|}
%\end{picture}
% \par
% The starting point is |1|.
%    \begin{macrocode}
  \pspicture(-\HAP@indent,\HAP@topsep)(\linewidth,-\HAP@tlc)%
%    \end{macrocode}
% Set defaults for linewidth and color.
%    \begin{macrocode}
  \psset{unit=1pt,linewidth=.25pt,linecolor=HAP@framecolor}%
%    \end{macrocode}
% The next line brings us to point |2|.
%    \begin{macrocode}
  \setlength{\HAP@tla}{\HAP@lcolwidth}%
%    \end{macrocode}
% And the next to point |3|.
%    \begin{macrocode}
  \addtolength{\HAP@tla}{\HAP@frsep}%
%    \end{macrocode}
% Create the left frame.
%    \begin{macrocode}
  \ifx\HAP@lfrheight\@undefined\else
    \psframe[#1](-\HAP@frsep,\HAP@frsep)(\HAP@tla,-\HAP@lfrheight)%
  \fi
%    \end{macrocode}
% Put the left content.
%    \begin{macrocode}
  \rput[tl](0,0){\usebox{\HAP@tba}}%
%    \end{macrocode}
% We are back at |2| with the next line.
%    \begin{macrocode}
  \setlength{\HAP@tla}{\HAP@lcolwidth}%
%    \end{macrocode}
% This line moves us on to point |4|.
%    \begin{macrocode}
  \addtolength{\HAP@tla}{.5\HAP@colsep}%
%    \end{macrocode}
% Create the line.
%    \begin{macrocode}
  \ifx\HAP@lineheight\@undefined\else
    \psline[#2](\HAP@tla,\HAP@frsep)(\HAP@tla,-\HAP@lineheight)%
  \fi
%    \end{macrocode}
% And we go further to point |5|.
%    \begin{macrocode}
  \addtolength{\HAP@tla}{.5\HAP@colsep}%
  \setlength{\HAP@tlc}{\HAP@tla}%
%    \end{macrocode}
% With the next line, we are at point |6|.
%    \begin{macrocode}
  \addtolength{\HAP@tla}{-\HAP@frsep}%
  \setlength{\HAP@tlb}{\HAP@tla}%
%    \end{macrocode}
% And the next two lines give us point |7|.
%    \begin{macrocode}
  \addtolength{\HAP@tlb}{\HAP@rcolwidth}%
  \addtolength{\HAP@tlb}{2\HAP@frsep}%
%    \end{macrocode}
% Create the right frame.
%    \begin{macrocode}
  \ifx\HAP@rfrheight\@undefined\else
    \psframe[#3](\HAP@tla,\HAP@frsep)(\HAP@tlb,-\HAP@rfrheight)%
  \fi
%    \end{macrocode}
% Put the right content.
%    \begin{macrocode}
  \rput[tl](\HAP@tlc,0){\usebox{\HAP@tbb}}%
  \endpspicture\par
}
%    \end{macrocode}
% \end{macro}
% \subsubsection{onSlide and OnSlide}
% The macros in this section form a generelization of the following
% macros of \pf{prosper}: |\fromSlide|, |\FromSlide|, |\untilSlide|,
% |\UntilSlide|, |\onlySlide| and |\OnlySlide|. The macros are more
% or less based on these \pf{prosper} macros, but are more general
% and replace all those macros. We start with some counters
% and an if necessary to determine whether material should be
% displayed on the current overlay or not.
%    \begin{macrocode}
\newcounter{HAP@onslide@count}
\newcounter{HAP@onslide@end}
\newif\ifHAP@displayMat
\let\HAP@onslide@list\@empty
%    \end{macrocode}
% \begin{macro}{\onSlide}
% \HAPcmd{\ci{onSlide}\marg{overlays}\marg{mat}}
% This macro allows for
% comma seperated inputs like |\onSlide{-2,4,6-8,10-}|. |\onSlide|
% has a starred version which doesn't move the cursor in case the
% material is not displayed on the slide.
%    \begin{macrocode}
\def\onSlide{\@ifstar{\HAP@onSlide{1}}{\HAP@onSlide{0}}}
\long\def\HAP@onSlide#1#2{%
%    \end{macrocode}
% Split the comma seperated list into parts to be read by |\HAP@read|.
% The macro will set |\ifHAP@displayMat| which tells us to display
% the material on the current slide or not.
%    \begin{macrocode}
  \HAP@split#2,\relax,%
  \let\HAP@next\@gobble
  \ifDVItoPS
    \ifAccumulate
%    \end{macrocode}
% Just display the material in case of printing slides.
%    \begin{macrocode}
      \let\HAP@next\@iden%
    \fi
  \else
    \ifHAP@displayMat
%    \end{macrocode}
% We should display it.
%    \begin{macrocode}
      \let\HAP@next\@iden%
%    \end{macrocode}
% Reset |\ifHAP@displayMat| for future use.
%    \begin{macrocode}
      \HAP@displayMatfalse
    \else
%    \end{macrocode}
% If no star, move the cursor using \pf{prosper}'s |PSTricks| construct.
%    \begin{macrocode}
      \ifnum#1=\z@
        \let\HAP@next\@on@overlay@one%
      \fi
    \fi
  \fi
%    \end{macrocode}
% Put the material on the slide. This can be |\@gobble|.
%    \begin{macrocode}
  \HAP@next
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\OnSlide}
% \HAPcmd{\ci{OnSlide}\marg{overlays}}
% This macro also allows for comma seperated lists, but takes only
% one argument and masks or not all the following material.
%    \begin{macrocode}
\def\OnSlide#1{%
%    \end{macrocode}
% Split the comma seperated list into parts to be read by |\HAP@read|.
%    \begin{macrocode}
  \HAP@split#1,\relax,%
  \ifDVItoPS\else
%    \end{macrocode}
% We should display the following material; don't hide it.
%    \begin{macrocode}
    \ifHAP@displayMat
%    \end{macrocode}
% Reset |\ifHAP@displayMat|.
%    \begin{macrocode}
      \HAP@displayMatfalse
    \else
%    \end{macrocode}
% Hide it using \pf{prosper}'s |\overlay|.
%    \begin{macrocode}
      \overlay{1}%
    \fi
  \fi
}
%    \end{macrocode}
% \end{macro}
% \DescribeMacro{\HAP@split}
% Splits the comma seperated list into parts and reads them one by one.
% This is based on \pf{keyval}'s |\KV@do|.
%    \begin{macrocode}
\def\HAP@split#1,{%
  \ifx\relax#1\@empty\else
    \HAP@read#1--\relax
    \expandafter\HAP@split
  \fi
}
%    \end{macrocode}
% \begin{macro}{\HAP@read}
% This macro reads the argument between two commas supplied by |\HAP@split|.
% We distinct 4 cases: $x$, -$x$, $x$- and $x$-$y$ where $x$ and $y$ are positive
% integers with $y\geq x$. We will not check the argument for specification;
% the responsibility is with the user. The macro first sets a range from
% the inputs, then runs over this range to check wether the current
% overlay is inside the range and hence material should be displayed.
%    \begin{macrocode}
\def\HAP@read#1-#2-#3\relax{%
  \def\HAP@tempa{#1}%
  \def\HAP@tempb{#2}%
  \def\HAP@tempc{#3}%
  \ifx\HAP@tempa\@empty
%    \end{macrocode}
% If |#1| empty, we have -$x$. Set the counter to the starting overlay.
%    \begin{macrocode}
    \setcounter{HAP@onslide@count}{1}%
  \else
%    \end{macrocode}
% Else, we have something that starts with $x$ or $+x$, but we don't know the
% exact specification yet. Check whether the input starts with a |+|.
%    \begin{macrocode}
    \HAP@sp\HAP@tempd{#1}%
    \ifHAP@plus
%    \end{macrocode}
% If a plus sign, make displaying relative to the current |\xitem|.
%    \begin{macrocode}
      \setcounter{HAP@onslide@count}{\value{item@step}}%
      \addtocounter{HAP@onslide@count}{\HAP@tempd}%
    \else
      \setcounter{HAP@onslide@count}{#1}%
    \fi
  \fi
  \ifx\HAP@tempb\@empty
    \ifx\HAP@tempc\@empty
%    \end{macrocode}
% If both |#2| and |#3| empty, we have the case $x$ or $+x$.
%    \begin{macrocode}
      \HAP@sp\HAP@tempd{#1}%
      \ifHAP@plus
%    \end{macrocode}
% If a plus sign, make displaying relative to the current |\xitem|.
%    \begin{macrocode}
        \setcounter{HAP@onslide@end}{\value{item@step}}%
        \addtocounter{HAP@onslide@end}{\HAP@tempd}%
      \else
       \setcounter{HAP@onslide@end}{#1}%
      \fi
    \else
%    \end{macrocode}
% If |#2| empty, but |#3| not (has value |-|), we have the case $x$- or $+x$-.
%    \begin{macrocode}
      \setcounter{HAP@onslide@end}{\value{limitOverlays}}%
    \fi
  \else
%    \end{macrocode}
% If both |#2| and |#3| non-empty, we have the case $x$-$y$ or a
% variation with |+| signs.
%    \begin{macrocode}
    \HAP@sp\HAP@tempd{#2}%
    \ifHAP@plus
%    \end{macrocode}
% If a plus sign, make displaying relative to the current |\xitem|.
%    \begin{macrocode}
      \setcounter{HAP@onslide@end}{\value{item@step}}%
      \addtocounter{HAP@onslide@end}{\HAP@tempd}%
    \else
      \setcounter{HAP@onslide@end}{#2}%
    \fi
  \fi
%    \end{macrocode}
% Check on input.
%    \begin{macrocode}
  \ifnum\value{HAP@onslide@count}>\value{HAP@onslide@end}%
    \@expandtwoargs\in@{,\theslide,}{,\HAP@onslide@list,}%
    \ifin@\else
      \PackageError{HA-prosper}{Invalid onSlide or OnSlide range or missing overlays
        on slide \theslide}{You can go ahead, but material will be missing.}%
%    \end{macrocode}
% Add current slide number to a list to avoid multiple errors per slide.
%    \begin{macrocode}
      \xdef\HAP@onslide@list{%
        \HAP@onslide@list
        \ifx\HAP@onslide@list\@empty\else,\fi
        \theslide
      }%
    \fi
  \else
%    \end{macrocode}
% If the current overlay number is in the range, material should be
% displayed.
%    \begin{macrocode}
    \ifnum\value{HAP@onslide@count}>\value{overlaysCount}\else
      \ifnum\value{HAP@onslide@end}<\value{overlaysCount}\else
      \HAP@displayMattrue
    \fi\fi
  \fi
}
%    \end{macrocode}
% \end{macro}
% Code to strip the |+| sign from the start of a list of tokens.
% This is necessary since the input to |\HAP@read| can also
% contain |\value{item@step}|. The code is based on the \pf{keyval}
% macro |\KV@@sp@def|.
%    \begin{macrocode}
\def\:{\let\@pltoken=+}\:%
\newtoks\HAP@toks@
\newif\ifHAP@plus
\def\HAP@sp#1#2{%
  \futurelet\HAP@tempa\HAP@@sp#2\@nil\@nil+\@nil\relax#1}%
\def\HAP@@sp{%
  \ifx\HAP@tempa\@pltoken
    \HAP@plustrue
    \expandafter\HAP@@@sp
  \else
    \HAP@plusfalse
    \expandafter\HAP@@@sp\expandafter+%
  \fi
}%
\def\HAP@@@sp+#1\@nil{\HAP@@@@sp#1}%
\def\HAP@@@@sp#1\@nil#2\relax#3{\HAP@toks@{#1}\edef#3{\the\HAP@toks@}}
%    \end{macrocode}
% \subsubsection{Miscellaneous}
% \DescribeMacro{\xitemwait}
% Tells \pf{HA-prosper} to wait some overlays before continuing
% incrementally displayed items.
%    \begin{macrocode}
\newcommand{\xitemwait}[1][1]{\addtocounter{item@step}{#1}}
%    \end{macrocode}
% \DescribeMacro{\HAP@TSNav}
% Entrance point for navigational elements on the title slide. This
% macro takes the value specified by the |tsnav| global key and can
% be used to put navigational components on slides through a style file.
%    \begin{macrocode}
\define@key{HAP@keys@globalonly}{tsnav}{\gdef\HAP@TSNav{#1}}
%    \end{macrocode}
% \DescribeMacro{\TitleSlideNav}
% Backward compatibility for earlier version of \pf{HA-prosper} which
% where not using the |\HAPsetup| user interface yet.
%    \begin{macrocode}
\def\TitleSlideNav#1{\gdef\HAP@TSNav{#1}}
%    \end{macrocode}
% \DescribeMacro{\HAP@NSNav}
% Entrance point for navigational elements on normal slides.
%    \begin{macrocode}
\define@key{HAP@keys@globalonly}{nsnav}{\gdef\HAP@NSNav{#1}}
%    \end{macrocode}
% \DescribeMacro{\NormalSlideNav}
% Backward compatibility for older presentations.
%    \begin{macrocode}
\def\NormalSlideNav#1{\gdef\HAP@NSNav{#1}}
%    \end{macrocode}
% Simple interface for the total number of slides in the presentation.
%    \begin{macrocode}
\def\totalpages{\realpageref{last@page}}
%    \end{macrocode}
% \subsection{Postamble and defaults}
% This section of code contains the finalizing elements like loading
% the requested style, setting defaults and creating extra slide environments.
% \subsubsection{Defaults (1)}
% \DescribeMacro{\HAPsetup}
% Allows for setting some options globally.
%    \begin{macrocode}
\def\HAPsetup#1{%
  \xsetkeys{HAP@keys@globalonly,HAP@keys@slide,HAP@keys@step}{#1}%
}
%    \end{macrocode}
% Set global defaults to prevent errors when the user decides to delete
% a line from the |HA-prosper.cfg| file.
%    \begin{macrocode}
\HAPsetup{lf=,rf=,trans=\@defaultTransition,template=slide,sstart=1,
  stype=0,iacolor=lightgray,tsnav=FullScreen,nsnav=ShowBookmarks,
  sn={-~p.~\thepage\ifallPages/\totalpages\fi},counters=
}
%    \end{macrocode}
% Load defaults for global options. Refer to section~\ref{sec:config} for
% the |HA-prosper.cfg| file.
%    \begin{macrocode}
\input{HA-prosper.cfg}
%    \end{macrocode}
% PDF page cropping default.
%    \begin{macrocode}
\hypersetup{pdfpagescrop={0 0 595 840}}
%    \end{macrocode}
% PDF creator.
%    \begin{macrocode}
\AtBeginDocument{\def\@pdfcreator{LaTeX with hyperref and
  HA-prosper packages}}
%    \end{macrocode}
% Calibration of commands like |\small| to default font sizes.
%    \begin{macrocode}
\ptsize{10}
%    \end{macrocode}
% \subsubsection{Load the style}
% First undefine |\slidetitle| since it is already defined by \pf{prosper}.
%    \begin{macrocode}
\let\slidetitle\@undefined
%    \end{macrocode}
% Load the requested style.
%    \begin{macrocode}
\IfFileExists{HAP\HAP@Style@chosen.sty}{%
  \RequirePackage{HAP\HAP@Style@chosen}%
}{\PackageError{HA-prosper}{unknown HA-prosper style file: HAP\HAP@Style@chosen.sty}%
  {Sorry, no additional help}}
%    \end{macrocode}
% \subsubsection{Extra slide definitions}
% \DescribeMacro{\HAPR@normalslide}
% Check that the normal slide template has been defined by the template.
%    \begin{macrocode}
\ifx\HAPR@normalSlide\@undefined
  \PackageError{HA-prosper}{HA-prosper normal slide is
    not defined in your template}%
  {Check that your template HAP\HAP@Style@chosen.sty supports
    normal slides and that it is up to date}%
\else
  \HAPR@normalSlide
%    \end{macrocode}
% \DescribeMacro{\HAPR@wideslide}
% If |\HAPR@wideslide| defined, use it to create the |wideslide| environment.
%    \begin{macrocode}
  \ifx\HAPR@wideSlide\@undefined
  \else
    \def\wideslide{\@ifnextchar[\HAP@wideslide{\HAP@wideslide[]}}%
    \def\HAP@wideslide[#1]#2{%
      \HAPR@wideSlide
      \begin{slide}[#1]{#2}%
    }%
    \def\endwideslide{\end{slide}\HAPR@normalSlide}%
  \fi
%    \end{macrocode}
% \DescribeMacro{\HAPR@partslide}
% If |\HAPR@partslide| defined, use it to create the |partslide| environment.
%    \begin{macrocode}
  \ifx\HAPR@partSlide\@undefined
  \else
    \def\partslide{\@ifnextchar[\HAP@partslide{\HAP@partslide[]}}%
    \def\HAP@partslide[#1]#2{%
      \HAPR@partSlide
      \begin{slide}[#1]{#2}%
    }%
    \def\endpartslide{\end{slide}\HAPR@normalSlide}%
  \fi
\fi
%    \end{macrocode}
% \DescribeMacro{\maketitle}
% If both |\HAPR@normalslide| and |\HAPR@titleslide| defined, use these
% to redefine the |\maketitle| macro which switches back to the normal
% template automatically after creating the title slide on the title template.
%    \begin{macrocode}
\ifcase
  \ifx\HAPR@normalSlide\@undefined\@ne\fi
  \ifx\HAPR@titleSlide\@undefined\@ne\fi
  \z@
  \let\HAP@orig@maketitle=\maketitle
  \def\maketitle{\@ifnextchar[\HAP@maketitle{\HAP@maketitle[]}}%
  \newcommand{\HAP@maketitle}[1][]{%
    \HAPR@titleSlide\HAP@orig@maketitle[#1]\HAPR@normalSlide
  }%
\fi
%    \end{macrocode}
% \subsubsection{Defaults (2)}
% Here we check wether certain vital macros have been defined
% by the template and if not, define them. See the section containing
% developers information in the manual for more information
% about a specific macro listed below.
%    \begin{macrocode}
\ifx\HAP@tline\@undefined\def\HAP@tline#1{#1}\fi
\ifx\HAP@tlineonly\@undefined\def\HAP@tlineonly#1{#1}\fi
\ifx\HAP@tsection\@undefined\def\HAP@tsection#1{#1}\fi
\ifx\HAP@tsectiononly\@undefined\def\HAP@tsectiononly#1{#1}\fi
\ifx\HAP@tsectionskip\@undefined\def\HAP@tsectionskip{1.5em}\fi
\ifx\HAP@titemskip\@undefined\def\HAP@titemskip{.1em}\fi
\ifx\HAP@tsectionm\@undefined\let\HAP@tsectionm\@empty\fi
\ifx\HAP@twidth\@undefined\def\HAP@twidth{2cm}\fi
\ifx\HAP@tborder\@undefined\def\HAP@tborder{.05cm}\fi
\ifx\HAP@textc\@undefined\newrgbcolor{HAP@textc}{0 0 0}\fi
\ifx\HAP@framecolor\@undefined\newrgbcolor{HAP@framecolor}{0 0 0}\fi
\ifx\HAP@hcolor\@undefined\newrgbcolor{HAP@hcolor}{0 0 0}\fi
\ifx\HAP@htcolor\@undefined\newrgbcolor{HAP@htcolor}{1 1 1}\fi
\ifx\HAP@tocentry\@undefined
  \def\HAP@tocentry{%
%    \end{macrocode}
% By default, put text in a |\parbox| for multi-line toc entries.
%    \begin{macrocode}
    \parbox[b]{\HAP@twidth}{\raggedright\HAP@toctext}%
  }%
\fi
\ifx\HAP@hltocentry\@undefined
  \def\HAP@hltocentry{%
%    \end{macrocode}
% By default, put text in |\parbox| and in |\psframebox| to create the frame.
%    \begin{macrocode}
    \psframebox*[framesep=\HAP@tborder,fillcolor=HAP@hcolor,boxsep=false]%
      {\parbox[b]{\HAP@twidth}{\raggedright{\HAP@htcolor\HAP@toctext}}}%
  }%
\fi
%    \end{macrocode}
% \subsubsection{ppr-prv entrance point}
% Allow \pf{ppr-prv} to redefine \pf{HA-prosper} macros easily.
%    \begin{macrocode}
\@ifclassloaded{ppr-prv}{\InputIfFileExists{HAP-ppr-prv.def}{}{}}{}
%</program>
%    \end{macrocode}
% \subsection{Default configuration}\label{sec:config}
% The file |HA-prosper.cfg| generated from the code below contains the
% global configuration settings of \pf{HA-prosper}. We start with a small
% preamble.
%    \begin{macrocode}
%<*config>
%%
%% Global defaults of HA-prosper.
%% ==============================
%%
%% You can change this file but be careful since it will
%% affect all of your presentations. See for more information
%% the documentation of the HA-prosper package.
%%
\HAPsetup{%
%    \end{macrocode}
% Left footer.
%    \begin{macrocode}
  lf=,
%    \end{macrocode}
% Right footer.
%    \begin{macrocode}
  rf=,
%    \end{macrocode}
% Transition, using \pf{prosper} default for backward compatibility.
%    \begin{macrocode}
  trans=\@defaultTransition,
%    \end{macrocode}
% Template for parts.
%    \begin{macrocode}
  template=slide,
%    \end{macrocode}
% Starting overlay of stepping environments.
%    \begin{macrocode}
  sstart=1,
%    \end{macrocode}
% Type of stepping environment.
%    \begin{macrocode}
  stype=0,
%    \end{macrocode}
% Inactive color for stepping environments.
%    \begin{macrocode}
  iacolor=lightgray,
%    \end{macrocode}
% Title slide navigation.
%    \begin{macrocode}
  tsnav=FullScreen,
%    \end{macrocode}
% Normal slide navigation.
%    \begin{macrocode}
  nsnav=ShowBookmarks,
%    \end{macrocode}
% Slide number layout.
%    \begin{macrocode}
  sn={-~p.~\thepage\ifallPages/\totalpages\fi},
%    \end{macrocode}
% Counters that should be protected on overlays.
%    \begin{macrocode}
  counters=
}
%</config>
%    \end{macrocode}
% \Finale
\endinput
