% \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 % %<*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} % % \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|. 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|. 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|. 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}{}{}}{} % % \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= } % % \end{macrocode} % \Finale \endinput