From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/ppr-prv/README | 98 +++ macros/latex/contrib/ppr-prv/ppr-prv.dtx | 1032 ++++++++++++++++++++++++++++++ macros/latex/contrib/ppr-prv/ppr-prv.ins | 22 + macros/latex/contrib/ppr-prv/ppr-prv.pdf | Bin 0 -> 335095 bytes 4 files changed, 1152 insertions(+) create mode 100644 macros/latex/contrib/ppr-prv/README create mode 100644 macros/latex/contrib/ppr-prv/ppr-prv.dtx create mode 100644 macros/latex/contrib/ppr-prv/ppr-prv.ins create mode 100644 macros/latex/contrib/ppr-prv/ppr-prv.pdf (limited to 'macros/latex/contrib/ppr-prv') diff --git a/macros/latex/contrib/ppr-prv/README b/macros/latex/contrib/ppr-prv/README new file mode 100644 index 0000000000..9630c694fd --- /dev/null +++ b/macros/latex/contrib/ppr-prv/README @@ -0,0 +1,98 @@ +This is the README file for the ppr-prv class (version 0.13c). +(C) 2003-2004 Mathieu Goutelle (INRIA, France) +mgoutell[at]users[dot]sourceforge[dot]net +CVSid: $Id: README,v 1.6 2005/09/02 15:42:38 mgoutell Exp $ + +This class is used with LaTeX presentations using the prosper class. ppr-prv +stands for "Prosper Preview". The aim of this class is to produce a printable +version of the slides written with Prosper, with two slides per page. + +The installation of ppr-prv files follows the same scheme as any other package +installation on your distrib. You can consult this page from the UK TeX FAQ: +. + +The common way to install it is: + - to create the 'ppr-prv.cls' and 'HAP-ppr-prv.def' files: latex ppr-prv.ins ; + - to create the 'ppr-prv.dvi' documentation: latex ppr-prv.dtx ; + - install the 'ppr-prv.cls' file in a directory where LaTeX can find it. + +You can send comments, bugs report or proposed improvements to the author by +email: . + +----[ Changelog ]---- + + v. 0.13: + * (0.13c) Bugfix: some (still!) missing prosper declarations + (thanks to Pauli A Miettinen for reporting it) ; + * (0.13b) Bugfix: no default definition when Babel language is not + supported (thanks to Lasse Bach for reporting it) ; + * Compatibility with HA-prosper 4.2 (\xitem particularly) ; + * Some bug fixes in starred version of overlay macros. + + v. 0.12: + * (0.12b) Bugfix: all key definitions were lost due to name inconsistency ; + * Support for the onSlide macros added by HA-prosper ; + * Use of the 'HAP-ppr-prv.def' file for the support of HA-prosper ; + * Changes to support HA-prosper 4.0 (one undefined counter, some new + seminar and prosper macros are needed). + + v. 0.11: + * New ppr-prv option: nopagebreak, to have more than two slides per page ; + * ppr-prv is now distributed as a .dtx file ; + * Better handling of options: you can now pass to the article class the + usual options for setting the paper and font sizes ; + * Use of the 'geometry' package to set margins ; + * I set a minimum height for the frame around the slides ; + * Bugfix: the optional argument of itemstep was not handle when using + HA-prosper ; + * ppr-prv supports HA-prosper 3.9 ('indent' option on dualslide and + 'enumstep' environment). + + v. 0.10: + * Use of the 'float' package to declare the 'figure' and 'table' float as + non-floating environment ([H] for HERE!) ; + * I have removed some garbages in the code ; + * I found an other bug in {from|until|only}Slide macros ; + * Modifications to be compatible with HA-prosper v3.8 (starred version of + \tsection macro and \dualslide command). The backward compatibility with + previous version is unfornately not assured (due to \dualslide). + + v. 0.09: + * The load of the babel package is now better detected ; + * ppr-prv is now compatible with the patch for Prosper written by Hendri + Adriaens (). + + v. 0.08: + * Modification of macro names to avoid clashes ; + * Bug in {from|until|only}Slide macros because of definition of the starred + version (thanks to Hendri Adriaens). + + v. 0.07: + * Some improvements of the documentation while waiting for a .dtx ; + * Add multi-language support with Babel. Currently supported languages are + english, german and french (and all their variants). Other languages will + come sooner. + + v. 0.06: + * Add the 'a4paper' option passed to the article class ; + * Bad spacing in title. + + v. 0.05: + * Counter initialization problem: when there's no \maketitle, the slides + are bad numbered. + + v. 0.04: + * Forgotten to define the 'Itemize' environment and to gobble the optional + parameter of the 'itemstep' environment ; + * 'textcomp' package added (for the \textdegree macro). + + v. 0.03: + * Better handling of the {only,until,from}Slide* macros. + + v. 0.02: + * Cosmetic changes. + + v. 0.01: + * First version. + +--------------------- diff --git a/macros/latex/contrib/ppr-prv/ppr-prv.dtx b/macros/latex/contrib/ppr-prv/ppr-prv.dtx new file mode 100644 index 0000000000..b670b839ec --- /dev/null +++ b/macros/latex/contrib/ppr-prv/ppr-prv.dtx @@ -0,0 +1,1032 @@ +% \iffalse +%<*never> +\documentclass{ltxdoc} + +\usepackage[T1]{fontenc} +\usepackage[latin1]{inputenc} +\usepackage{xspace,url} +\usepackage[english]{babel} + +\newcommand{\prosper}{\textsf{prosper}\xspace} +\newcommand{\pprprv}{\textsf{ppr-prv}\xspace} + +\setlength{\parindent}{15pt} + +\MakeShortVerb{\|} +\AtBeginDocument{\CodelineIndex\EnableCrossrefs} +\AtEndDocument{\PrintIndex} +\GetFileInfo{ppr-prv.cls} +\begin{document} +\def\fileversion{v 0.13c} +\def\filedate{2005/09/02} +\def\docdate{2004/03/21} + +\DocInput{ppr-prv.dtx} +\end{document} +% +% \fi +% \CheckSum{1289} +% \iffalse meta-comment +% +%======================================================================== +% ppr-prv class: "Prosper Preview", a class to produce a printable +% version of prosper slides +% Copyright (C) 2003-2004 Mathieu Goutelle +% mgoutell[at]users[dot]sourceforge[dot]net +% +% 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 +% 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. +% CVSId: $Id: ppr-prv.dtx,v 1.9 2005/09/04 19:10:39 mgoutell Exp $ +%======================================================================== +% +% \fi +%% \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 \~} +% +% \urlstyle{sf} +% \title{The \pprprv class: Prosper Preview} +% \author{Mathieu \textsc{Goutelle}} +% \date{\fileversion, \docdate} +% \maketitle +% \tableofcontents +% +% \section{Introduction} +% +% \subsection{Presentation} +% This class is used with LaTeX presentations using the \prosper class. \pprprv +% stands for "Prosper Preview". The aim of this class is to produce a printable +% version of the slides written with \prosper, with two slides per page. +% +% The result tries to be as accurate as possible. The major problem is the support +% of the starred version of the \{only,until,from\}Slide macros: the result is +% approximately what you can expect... It is far from perfect, just because the +% content of this macros are heaped over each other. But, it is difficult to +% handle these overlays on a sheet of paper! +% +% You can send comments, bugs report or proposed improvements to the author by +% email: \url{mgoutell[at]users[dot]sourceforge[dot]net}. +% +% \subsection{Use of \pprprv} +% +% The installation of ppr-prv files follows the same scheme as any other package +% installation on your distrib. You can consult this page from the UK TeX FAQ: +% \url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages}. +% +% To use ppr-prv, you just have to change the |\documentclass| from |prosper| to +% |ppr-prv|. You don't need to change another thing to your \prosper document: all +% the macros and options of \prosper are normally fully supported by \pprprv. You +% can change the footer of each "slide" by changing |\slidename| and |\no|. By +% default, it is defined as: |\newcommand{\slidename}{slide}| and +% |\newcommand{\no}{\#}|. Since version 0.07, it uses Babel to support various +% languages (english, french, german and all their variants): if Babel is loaded, +% the footer is adapted to the chosen language. You can off course change it +% manually with |\renewcommand{\slidename}{...}| and |\renewcommand{\no}{...}| after +% |\begin{document}|. +% +% There is a new option for \pprprv since v0.11: |nopagebreak|. This can be used +% to let \LaTeX{} decide where to break the page instead of every two slides. It +% may be used for producing a more compact document. The macro |\NoPageBreak| has +% exactly the same meaning, except that it can be used at any time in the +% document. \pprprv also used since v0.11 the |geometry| package to define the +% layout of the page. You can change it by using |\geometry{...}| (see the +% documentation of this package for more details). +% +% If you use the patch for Prosper written by Hendri Adriaens +% (\url{http://stuwww.uvt.nl/~hendri/Downloads/haprosper.html}), you can use +% \pprprv as well since v. 0.09: features like toc, toc section and notes are +% fully supported. The use is exactly the same if you either load the patch or +% not. You just have to change your |documentclass| from |prosper| to |ppr-prv| +% and let the class do the work of redefining the macros for you. Since v. 0.09 +% is the first release with a support for the patch, it may remain some bugs. +% Don't hesitate to report them to the author of \pprprv. +% +% I have tried not to depend on |pstricks| in \pprprv. It means that, if you don't +% use |pstricks| in your slide, you can use pdf\LaTeX{} to compile your \pprprv +% document, even if the compilation can lead to |Non-PDF special ignored!| +% warnings. Obviously, it doesn't work if you have some |pstricks| stuff in your +% slide contents or if you don't provide the figures in a format pdf\LaTeX{} can +% understand (PDF, PNG, JPG, MetaPost e.g.): in these cases, you still need to +% use \LaTeX{} to produce your document. +% +% A common mistake is to use floating environment in slides. It may work with +% regular \prosper document. But with \pprprv, it may leads to error message +% such as |Not in outer par mode| or |Float lost|. \pprprv tries to handle this +% issue by defining the floats as non-floating. But, if you specify some +% placement options (like [hbtp]), you will get these errors. By the way, you +% \textbf{really} don't need floats in slides! +% +% \StopEventually{} +% +% \section{Details of the code} +% +% \subsection{Preamble and options} +% We define first the version and all the stuff we need (or not) to begin +% \begin{macrocode} +%<*class> +\def\PPRPRV@Version{v. 0.13} +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{ppr-prv}[2005/09/02, \PPRPRV@Version] +\typeout{(c) 2003-2005 Mathieu Goutelle} +% +% \end{macrocode} +% +% Then we define the \prosper options to handle the one useful in our case +% (e.g. draft, footer) and ignore the others. There is also the declaration of +% the |nopagebreak| option specific to \pprprv. +% \begin{macrocode} +%<*class> +\newif\ifDVItoPS +\DeclareOption{ps}{\global\DVItoPStrue} +\DeclareOption{pdf}{\global\DVItoPSfalse} + +\newif\ifisDraft +\DeclareOption{draft}{\global\isDrafttrue} +\DeclareOption{final}{\global\isDraftfalse} + +\newif\ifinColor +\DeclareOption{slideColor}{} +\DeclareOption{slideBW}{} + +\newif\ifallPages +\DeclareOption{total}{} +\DeclareOption{nototal}{} + +\newif\ifcolorBG +\DeclareOption{nocolorBG}{} +\DeclareOption{colorBG}{} + +\newif\ifAccumulate +\DeclareOption{accumulate}{} +\DeclareOption{noaccumulate}{} + +\newif\ifnoFooter +\DeclareOption{noFooter}{\global\noFootertrue} +\noFooterfalse + +\newif\if@distiller +\@distillerfalse +\DeclareOption{distiller}{\global\@distillertrue} + +\newif\if@nopagebreak +\@nopagebreakfalse +\DeclareOption{nopagebreak}{\global\@nopagebreaktrue} + +\DeclareOption{YandY}{\gdef\@pdf@driver{dvipsone}} +\DeclareOption{ps2pdf}{\gdef\@pdf@driver{ps2pdf}} +\DeclareOption{vtex}{\gdef\@pdf@driver{vtex}} + +%% Default style file = default +\def\Style@chosen{default} +\DeclareOption*{\global\let\Style@chosen=\CurrentOption} +% +% \end{macrocode} +% +% Here we pass all options a user want to add to specify the paper and font +% sizes to the article class and geometry package. +% \begin{macrocode} +%<*class> +\DeclareOption{a4paper}{% + \PassOptionsToClass{\CurrentOption}{article}% + \PassOptionsToPackage{\CurrentOption}{geometry}% +} +\DeclareOption{a5paper}{% + \PassOptionsToClass{\CurrentOption}{article}% + \PassOptionsToPackage{\CurrentOption}{geometry}% +} +\DeclareOption{b5paper}{% + \PassOptionsToClass{\CurrentOption}{article}% + \PassOptionsToPackage{\CurrentOption}{geometry}% +} +\DeclareOption{letterpaper}{% + \PassOptionsToClass{\CurrentOption}{article}% + \PassOptionsToPackage{\CurrentOption}{geometry}% +} +\DeclareOption{legalpaper}{% + \PassOptionsToClass{\CurrentOption}{article}% + \PassOptionsToPackage{\CurrentOption}{geometry}% +} +\DeclareOption{executivepaper}{% + \PassOptionsToClass{\CurrentOption}{article}% + \PassOptionsToPackage{\CurrentOption}{geometry}% +} +\DeclareOption{landscape}{% + \PassOptionsToClass{\CurrentOption}{article}% + \PassOptionsToPackage{\CurrentOption}{geometry}% +} + +\PassOptionsToClass{10pt,11pt,12pt,oneside,twoside,final,draft, + leqno,fleqn,openbib}{article} +% +% \end{macrocode} + +% Then, we define a default behaviour, which is exactly the same as the \prosper +% one, except we add options for article (a4paper and 10pt). +% \begin{macrocode} +%<*class> +\ExecuteOptions{final,slideBW,total,nocolorBG,noaccumulate,ps,ps2pdf,a4paper,10pt} +\ProcessOptions\relax +% +% \end{macrocode} +% +% \subsection{Main code} +% As a first action, we load the article class and save some macros for further use. +% \begin{macrocode} +%<*class> +%% Preliminary stuff +\LoadClass{article} + +%% I save here the old value of the macros I need and which may be +%% modified by HA-prosper and define a test for detecting HA-prosper. +\newif\if@HAprosper\global\@HAprosperfalse +\let\old@section\section +\let\old@subsection\subsection +\let\old@itemize\itemize +\let\old@enditemize\enditemize +\let\old@enumerate\enumerate +\let\old@endenumerate\endenumerate +% +% \end{macrocode} +% +% We then load |pstricks|, |graphicx| and |hyperref| to exactly mimic the +% \prosper environment and some others for internal use (|textcomp| and +% |geometry|). The |keyval| package is for HA-\prosper support. +% \begin{macrocode} +%<*class> +\RequirePackage{pstricks} +\RequirePackage{textcomp} +\RequirePackage{graphicx} +\RequirePackage[hmargin=2cm,vmargin=2cm,noheadfoot]{geometry} +\RequirePackage{keyval,ifpdf} +\ifpdf\gdef\@pdf@driver{pdftex}\fi +\RequirePackage[\@pdf@driver,plainpages=false,colorlinks=true]{hyperref} +% +% \end{macrocode} +% +% Here we want to suppress the common error of using floats in slides: we +% redefine them as non-floats. +% \begin{macrocode} +%<*class> +\RequirePackage{float} +\newfloat{figure}{H}{lof} +\newfloat{table}{H}{lot} +% +% \end{macrocode} +% +% \DescribeMacro{NoPageBreak} +% The |\NoPageBreak| macro has the same meaning has the |nopagebreak| option, +% except it can be used at any time in the document. To revert the effect of +% |\NoPageBreak|, the |\PageBreak| macro is defined. We define also the indent +% to 0pt and we don't want folio nor head/foot. +% \begin{macrocode} +%<*class> +\newcommand{\NoPageBreak}{\global\@nopagebreaktrue} +\newcommand{\PageBreak}{\global\@nopagebreakfalse} + +\setlength{\parindent}{0pt} +\pagestyle{empty} +% +% \end{macrocode} +% +% For the support for the HA-propser package, we need to define some \prosper +% internals to avoid the HA patch to complain about a missing length or macro. +% \begin{macrocode} +%<*class> +%% Support for the HA-propser package: we try here to mimic the prosper +%% class to avoid the HA patch to complain about a missing length or +%% macro. +\let\normal@write\write +\newlength{\slideWidth} +\setlength{\slideWidth}{\linewidth} +\newlength{\slidewidth} +\setlength{\slidewidth}{\linewidth} +\newlength{\slideheight} +\newcounter{trueSlideCounter} +\newcounter{overlaysCount} +\newcounter{item@step} +\newcommand{\slidetitle}[1]{} +\newcommand{\slideframe}[1]{} +\newcommand{\NewSlideStyle}[4][]{} +\newcommand{\newslideframe}[2]{} +\newcommand{\slidepagestyle}[1]{} +\def\@fontTextColor{} +\def\@fontTextBW{} +\def\@fontTitleColor{} +\def\@fontTitleBW{} +\def\@fontSubtitleColor{} +\def\@fontSubtitleBW{} +\def\ptsize#1{} +\newenvironment{slide@seminar}{}{} +\def\@DefMyItem{} +\def\@titleSpacing{\vspace*{10pt}} +\newif\ifInOverlays\InOverlaysfalse +\newcounter{limitOverlays} +\def\@cleanupOverlay{} +% +% \end{macrocode} +% +% Here are some \textsf{seminar} internal we need also for HA-\prosper. +% \begin{macrocode} +%<*class> +%% Commands from Seminar +\newcounter{slide} +\newcommand{\renewpagestyle}[3]{} +\def\slidefonts{} +\newif\ifarticle\articletrue +% +% \end{macrocode} +% +% This test will be used to decide if we need to insert a page break before +% printing the current slide. +% \begin{macrocode} +%<*class> +% Test to see if we need a pageskip +\newif\if@needsnewpage\global\@needsnewpagetrue +% +% \end{macrocode} +% +% \DescribeMacro{part} +% We redefine the |\part| command first to suppress the optional transition +% argument and second to handle pagebreak and slides counter. +% \begin{macrocode} +%<*class> +%% Definition of the part command to suppress the optional transition argument +\let\part\relax +\newcommand{\part}[2][]{% + \if@needsnewpage + \if@nopagebreak\else\ifodd\theslideii\else\mbox{}\clearpage\fi\fi + \global\@needsnewpagefalse + \fi + \refstepcounter{slidei}% + \old@section*{#2}% +} +% +% \end{macrocode} +% +% \DescribeMacro{maketitle} +% The |\maketitle| command is completely redefined since the |article| one isn't +% relevant: \prosper define some extra field we need to handle here. +% \begin{macrocode} +%<*class> +%% Handle all the maketitle stuff +\let\@cartouche\@empty +\newcommand{\slideCaption}[1]{\gdef\@cartouche{#1}} +\let\@Subtitle\@empty +\newcommand{\subtitle}[1]{\gdef\@Subtitle{#1}} +\let\old@Title\title +\renewcommand{\title}[1]{\gdef\@Title{#1}} + +\let\@email\@empty +\newcommand{\email}[1]{\gdef\@email{#1}} +\let\@institution\@empty +\newcommand{\institution}[1]{\gdef\@institution{#1}} + +\gdef\@Author{} +\renewcommand{\author}[1]{\gdef\@Author{#1}} + +\renewcommand{\maketitle}{ + \thispagestyle{empty}\setcounter{page}{0}% + \refstepcounter{slidei}% + \mbox{}\vfill + \begin{center}% + {\LARGE \@Title \par}% + \ifx\@Subtitle\@empty\else\vskip 2em{\large\@Subtitle\par}\fi + \vskip 6em% + {\large\@Author + \ifx\@email\@empty\else\vskip 1em\@email\fi + \ifx\@institution\@empty\else\vskip 1em\@institution\par\fi}% + \end{center}% + \vfill\mbox{}\clearpage + \global\@needsnewpagefalse +} +% +% \end{macrocode} +% +% \DescribeEnv{Itemize}\DescribeEnv{itemstep} +% We redefine the |Itemize| and |itemstep|. They have the same behaviour as the +% original |itemize| of |article|. We have to ignore the optional argument of +% |itemstep|. +% \begin{macrocode} +%<*class> +%% Definition of the Itemize environment ;) +\let\Itemize\itemize +\let\endItemize\enditemize + +%% Definition of the itemstep environment to gobble the optional argument. +\newenvironment{itemstep}[1][]% + {\itemize} + {\enditemize} +% +% \end{macrocode} +% +% \DescribeEnv{slide} +% We define here the |slide| environment. We first define |prv@slide| because we +% will need it later on, for the support of HA-prosper. +% +% |\@size@overlay| will contain the height of the current slide and will be used +% to correctly draw the frame around slides. This height is computed as the +% maximum real height of the different overlays (espcially those defined with a +% Slide* macros) of the slide and is equal at least to 4cm, to avoid a really +% little frame when the user wants exactly two slides per page. The +% |\@slide@content| box contains the content of the slide. The first counter is +% for the number printed in footer, i.e. exactly the same as the one in +% \prosper. The second is used internally to print exactly two slides per page +% (without counting part for example). +% \begin{macrocode} +%<*class> +%% \@size@overlay contains the height of the current slide if we are using +%% overlays. It is equal at least to 4cm to try to avoid really little frame +%% when the user wants exactly two slides per page. +\newlength{\@size@tmp} +\global\@size@tmp\z@ +\newlength{\@size@overlay} +%% Definition of the slide environment +\newsavebox{\@slide@content} % will contain the slide +%% Slide counter to be printed on the bottom of each slide +\newcounter{slidei}\setcounter{slidei}{0} +%% Slide counter to print just two slides per page (even when there is a +%% \part...) +\newcounter{slideii}\setcounter{slideii}{0} + +\newenvironment{prv@slide}[1]{% + \if@needsnewpage + \if@nopagebreak\else\ifodd\theslideii\mbox{}\clearpage\fi\fi + \fi + \global\@needsnewpagetrue + \if@nopagebreak + \global\setlength{\@size@overlay}{\z@}% + \else + \global\setlength{\@size@overlay}{4cm}% + \fi + \begin{lrbox}{\@slide@content}\begin{minipage}{\linewidth}% + \old@subsection*{#1}% +}{% + \end{minipage}\end{lrbox}% + \settoheight{\@size@tmp}{\@slide@content}% + \begin{minipage}{\linewidth} + \fbox{% + \usebox{\@slide@content}% + \ifdim\@size@overlay>\@size@tmp + \addtolength{\@size@overlay}{\baselineskip}% + \rule[-\@size@overlay]{1pt}{0pt}% + \fi + }% + \ifnoFooter\else + \ifhmode\\\fi + \makebox[\linewidth][r]{% + \footnotesize + \ifx\@cartouche\@empty\else\@cartouche~---~\fi + \slidename~\no\theslidei}% + \fi + \end{minipage} + \par\if@nopagebreak\bigskip\else\vfill\fi +} +\newenvironment{slide}[2][] +{% + \refstepcounter{slidei}\stepcounter{slideii}% + \begin{prv@slide}{#2}% +} + {\end{prv@slide}} +% +% \end{macrocode} +% +% At the end of the document, we print an invisible box to attach the |\vfill| +% and be sure the last slide doesn't flush to the bottom of the page. +% \begin{macrocode} +%<*class> +\AtEndDocument{\if@nopagebreak\else\ifodd\theslideii\vfill\mbox{}\else\fi\fi} +% +% \end{macrocode} +% +% Here, we ignore a lot of \prosper macros. +% \begin{macrocode} +%<*class> +%% For the \Logo, don't do anything ! +\newcommand{\Logo}{% + \@ifnextchar({\Logo@one}{\Logo@two}% +} +\def\Logo@one(#1)#2{} +\def\Logo@two#1{} + +%% For the \Font*, don't do anything ! +\newcommand{\FontTitle}[2]{} +\newcommand{\FontSubtitle}[2]{} +\newcommand{\FontText}[2]{} +% +% \end{macrocode} +% +% In the following code, we handle the overlays. The tricky part is the +% definition of the starred version of \{only,until,from\}Slide macros. For +% these, we need to measure the content of the material before smashing it in a +% Opt height box. We put this height in the |\@size@overlay| length we use +% previously in |prv@slide| to draw a frame with the correct height. +% \begin{macrocode} +%<*class> +%% Definition of the whole overlay stuff: a bit annoying... +\newcommand{\overlays}[2]{#2} % We ignore overlays + +\def\FromSlide#1{\relax} +\def\UntilSlide#1{\relax} +\def\OnlySlide#1{\relax} + +\long\def\fromSlide@NE#1#2{#2} +\long\def\untilSlide@NE#1#2{#2} +\long\def\onlySlide@NE#1#2{#2} + +\newbox\PRV@tempbox +\long\def\fromSlide@E#1#2{% + \sbox\PRV@tempbox{\begin{minipage}{\linewidth}#2\end{minipage}}% + \setlength{\@size@tmp}{\the\ht\PRV@tempbox}% + \addtolength{\@size@tmp}{\the\dp\PRV@tempbox}% + \ifdim\@size@tmp>\@size@overlay\global\@size@overlay\@size@tmp\fi + \vbox to 0pt\bgroup\usebox{\PRV@tempbox}\egroup + \vskip -\baselineskip\ignorespaces +} +\long\def\untilSlide@E#1#2{% + \sbox\PRV@tempbox{\begin{minipage}{\linewidth}#2\end{minipage}}% + \setlength{\@size@tmp}{\the\ht\PRV@tempbox}% + \addtolength{\@size@tmp}{\the\dp\PRV@tempbox}% + \ifdim\@size@tmp>\@size@overlay\global\@size@overlay\@size@tmp\fi + \vbox to 0pt\bgroup\usebox{\PRV@tempbox}\egroup + \vskip -\baselineskip\ignorespaces +} +\long\def\onlySlide@E#1#2{% + \sbox\PRV@tempbox{\begin{minipage}{\linewidth}#2\end{minipage}}% + \setlength{\@size@tmp}{\the\ht\PRV@tempbox}% + \addtolength{\@size@tmp}{\the\dp\PRV@tempbox}% + \ifdim\@size@tmp>\@size@overlay\global\@size@overlay\@size@tmp\fi + \vbox to 0pt\bgroup\usebox{\PRV@tempbox}\egroup + \vskip -\baselineskip\ignorespaces +} + +\def\fromSlide{\@ifstar{\fromSlide@E}{\fromSlide@NE}} +\def\untilSlide{\@ifstar{\untilSlide@E}{\untilSlide@NE}} +\def\onlySlide{\@ifstar{\onlySlide@E}{\onlySlide@NE}} +% +% \end{macrocode} +% +% We define some \prosper macros we don't really need in \pprprv. But we +% obviously need to define it... +% \begin{macrocode} +%<*class> +%% All the things I may have forgotten if I haven't read the docs +%% carefully enough +\newcommand{\PDFtransition}[1]{} +\newcommand{\DefaultTransition}[1]{} +\def\NoFrenchBabelItemize{\relax} +\newcommand{\ColorFoot}[1]{} +\newif\ifshowVersion +\showVersionfalse +\newcommand{\displayVersion}{\global\showVersiontrue} + +\def\fontTitle#1{#1} +\def\fontText#1{#1} + +\newcommand{\myitem}[2]{} + +%% Stolen from the prosper.cls code +\newcommand{\PDForPS}{% + \ifDVItoPS + \let\prosper@next\@secondoftwo + \else + \let\prosper@next\@firstoftwo + \fi + \prosper@next} +%% #1 appears on the slide only on PS mode +\newcommand{\onlyInPS}{% + \ifDVItoPS + \let\prosper@next\@iden + \else + \let\prosper@next\@gobble + \fi + \prosper@next} +%% #1 appears on the slide only on PDF mode +\newcommand{\onlyInPDF}{% + \ifDVItoPS + \let\prosper@next\@gobble + \else + \let\prosper@next\@iden + \fi + \prosper@next} +% +% \end{macrocode} +% +% \subsection{AtBeginDocument code} +% Finally, we add some |\AtBeginDocument| hackery. The purpose is first to +% support multi-language with Babel and we need to know if this package is +% loaded. +% \begin{macrocode} +%<*class> +\AtBeginDocument{% Multi-language support with Babel +% +% \end{macrocode} +% +% If we detect Babel, we test the loaded language and define the footer macros +% according to this. +% \begin{macrocode} +%<*class> + \@ifpackageloaded{babel}{% + \def\@test{french}% + \ifx\languagename\@test + \newcommand{\slidename}{transparent}% + \providecommand{\no}{n\textdegree}% + \fi + \def\@test{english}% + \ifx\languagename\@test + \newcommand{\slidename}{slide}% + \providecommand{\no}{\#}% + \fi + \def\@test{british}% + \ifx\languagename\@test + \newcommand{\slidename}{slide}% + \providecommand{\no}{\#}% + \fi + \def\@test{canadian}% + \ifx\languagename\@test + \newcommand{\slidename}{slide}% + \providecommand{\no}{\#}% + \fi + \def\@test{USenglish}% + \ifx\languagename\@test + \newcommand{\slidename}{slide}% + \providecommand{\no}{\#}% + \fi + \def\@test{UKenglish}% + \ifx\languagename\@test + \newcommand{\slidename}{slide}% + \providecommand{\no}{\#}% + \fi + \def\@test{german}% + \ifx\languagename\@test + \newcommand{\slidename}{transparent}% + \providecommand{\no}{Nr.}% + \fi + \def\@test{germanb}% + \ifx\languagename\@test + \newcommand{\slidename}{transparent}% + \providecommand{\no}{Nr.}% + \fi + \def\@test{austrian}% + \ifx\languagename\@test + \newcommand{\slidename}{transparent}% + \providecommand{\no}{Nr.}% + \fi + \def\@test{ngerman}% + \ifx\languagename\@test + \newcommand{\slidename}{transparent}% + \providecommand{\no}{Nr.}% + \fi + \def\@test{naustrian}% + \ifx\languagename\@test + \newcommand{\slidename}{transparent}% + \providecommand{\no}{Nr.}% + \fi + }{} + \providecommand{\slidename}{slide}% + \providecommand{\no}{\#}% +} +% +% \end{macrocode} +% +% \subsection{Support for HA-\protect\prosper} +% If we detect HA-\prosper, we need to redefine all the macros added by this +% patch. All this stuff goes into the \texttt{HAP-ppr-prv.def} file, which is +% loaded at the end of HA-\prosper if it detects \pprprv. +% \begin{macrocode} +%<*HAPdef> +%% Support for the HA-prosper package: redefinition of the +%% functionnalities added by this patch. +\@ifpackageloaded{HA-prosper}{% + \global\@HAprospertrue +% \def\HAP@ReqVersion{v3.9} +% \ifx\HAP@Version\undefined\else% +% \ifx\HAP@ReqVersion\HAP@Version\else% +% \ClassError{ppr-prv}{HA-prosper \HAP@Version\space and +% ppr-prv \PPRPRV@Version\space are incompatible}% +% {Read the documentation of HA-prosper.}% +% \fi% +% \fi + + \renewenvironment{itemstep}[1][]{\old@itemize}{\old@enditemize}% + \renewenvironment{enumstep}[1][]{\old@enumerate}{\old@endenumerate}% + + \define@key{PRV@keys@slide}{toc}{\def\@tockey{#1}} + \define@key{PRV@keys@slide}{bm}{} + \define@key{PRV@keys@slide}{trans}{} + \define@key{PRV@keys@slide}{sound}{} + \define@key{PRV@keys@slide}{template}{} + \def\xitem{\@ifnextchar<{\PRV@xitem}{\PRV@xitem<>}} + \def\PRV@xitem<#1>{\item} + \def\email#1{#1} + \def\institution#1{#1} + + \renewcommand{\NewSlideStyle}[4][]{} +% +% \end{macrocode} +% +% \DescribeEnv{slide} +% We first redefine the |slide| environment to first handle the optional keys +% for defining toc entries. But it is roughly |prv@slide|... The |wideslide| +% environment is set to |slide|. +% +% There is also some stuff here in case HA-prosper is loaded: since this package +% change |itemize|-like environments |AtBeginDocument|, we need to redefine it +% after... and after |AtBeginDocument| means just before printing the slides. We +% do this only in the first slide by testing the value of |\itemize|. +% +% \begin{macrocode} +%<*HAPdef> + \renewenvironment{slide}[2][]{% + \refstepcounter{slidei}\stepcounter{slideii}% + \setcounter{trueSlideCounter}{\theslidei}% + \let\@tockey\@undefined + \setkeys{PRV@keys@slide}{#1}% + \def\@tempa{#2}% + \ifx\@tempa\@empty + \ifx\@tockey\@undefined\else + \ifx\@tockey\@empty\else + \HAP@contentsline{0}{\@tockey}{\theslidei}{}% + \fi + \fi + \else + \ifx\@tockey\@undefined + \HAP@contentsline{0}{#2}{\theslidei}{}% + \else + \ifx\@tockey\@empty\else + \HAP@contentsline{0}{\@tockey}{\theslidei}{}% + \fi + \fi + \fi + \ifx\itemize\old@itemize\else + \global\let\itemize\old@itemize + \global\let\enditemize\old@enditemize + \global\let\enumerate\old@enumerate + \global\let\endenumerate\old@endenumerate + \fi + \begin{prv@slide}{#2}% + } + {% + \end{prv@slide}% + } + + \renewenvironment{wideslide}[2][]{\begin{slide}[#1]{#2}}{\end{slide}} +% +% \end{macrocode} +% +% \DescribeEnv{dualslide} +% The |dualslide| environment is a bit more complicated to redefine, just +% because we want to get rid of |pstricks|. So we do everything with \LaTeX{} +% boxes and some spaces adjustments. +% \begin{macrocode} +%<*HAPdef> + \newsavebox{\@slide@left}% + \newsavebox{\@slide@right}% + \newlength{\ht@slide}% + + \def\dualslide{\@ifnextchar[\@dualslide{\@@@dualslide[][][]}}% + \def\@dualslide[#1]{% + \@ifnextchar[{\@@dualslide[#1]}{\@@@dualslide[#1][#1][#1]}}% + \def\@@dualslide[#1][#2]{% + \@ifnextchar[{\@@@dualslide[#1][#2]}{\@@@dualslide[#1][#2][#1]}}% + \long\def\@@@dualslide[#1][#2][#3]#4#5#6{% + \setlength{\HAP@colsep}{.04\linewidth}% + \setlength{\HAP@lcolwidth}{.47\linewidth}% + \setlength{\HAP@rcolwidth}{.47\linewidth}% + \setlength{\HAP@topsep}{0cm}% + \setlength{\HAP@bottomsep}{.3cm}% + \setlength{\HAP@indent}{0cm}% + \setkeys{HAP@keys@dual}{#4}% + + \sbox{\@slide@left}{\begin{minipage}[t]{\HAP@lcolwidth}#5\end{minipage}}% + \sbox{\@slide@right}{\begin{minipage}[t]{\HAP@rcolwidth}#6\end{minipage}}% + + \setlength{\ht@slide}{\the\ht\@slide@left}% + \addtolength{\ht@slide}{-0.5\baselineskip}% + \addtolength{\ht@slide}{\HAP@topsep}% + \leavevmode\null\kern\the\HAP@indent + \raisebox{-\ht@slide}{\usebox{\@slide@left}}% + \kern\the\HAP@colsep + \setlength{\ht@slide}{\the\ht\@slide@right}% + \addtolength{\ht@slide}{-0.5\baselineskip}% + \addtolength{\ht@slide}{\HAP@topsep}% + \raisebox{-\ht@slide}{\usebox{\@slide@right}}% + \par\vspace*{\HAP@bottomsep}% + } +% +% \end{macrocode} +% +% We ignore again overlays... +% \begin{macrocode} +%<*HAPdef> + \renewcommand{\overlays}[2]{#2} % We ignore overlays (again...) +% +% \end{macrocode} +% +% \DescribeMacro{maketitle} +% The redefinition of |\maketitle| is exactly the same as the previous one, +% except that we add the support for the optional toc entry definition. +% \begin{macrocode} +%<*HAPdef> + \renewcommand{\maketitle}[1][]{% + \refstepcounter{slidei}% + \setcounter{trueSlideCounter}{\theslidei}% + \let\@tockey\@undefined + \setkeys{PRV@keys@slide}{#1}% + \ifx\@tockey\@undefined + \else + \ifx\@tockey\@empty\else + \HAP@contentsline{0}{\@tockey}{\theslidei}{}% + \fi + \fi + \thispagestyle{empty}\setcounter{page}{0}% + \mbox{}\vfill + \begin{center}% + {\LARGE \@title \par}% + \ifx\@Subtitle\@empty\else\vskip 2em{\large\@Subtitle\par}\fi + \vskip 6em% + {\large\begin{tabular}[t]{c}\@author\end{tabular}\par}% + \end{center}% + \vfill\HAP@toc + \vfill\mbox{}\clearpage + \global\@needsnewpagefalse + } +% +% \end{macrocode} +% +% \DescribeMacro{pcontentsline} +% Here is defined the |\pcontentsline| macro for defining the toc layout printed +% on the first page. +% \begin{macrocode} +%<*HAPdef> + \renewcommand{\fontToc}{} + \newlength{\PRV@indenttoc} + \setlength{\PRV@indenttoc}{0pt} + \renewcommand{\pcontentsline}[5]{% + \if1#1% + \setlength{\PRV@indenttoc}{0pt}% + \fi + \hspace*{\PRV@indenttoc}#2% + \if1#5\else\leaders\hbox{\hss.\ \hss}\hfill\slidename~\no#3\fi\\ + \if1#1% + \setlength{\PRV@indenttoc}{10pt}% + \fi + }% +% +% \end{macrocode} +% +% All the sectioning commands of HA-\prosper are redefined here. We only handle +% the toc entry, so it is much less complicated than in HA-\prosper! +% \begin{macrocode} +%<*HAPdef> + % Redefinition of tsection command to remove what is not needed + \newcounter{MG@tempTrueSlideCounter} + \renewcommand{\tsection}{% + \@ifstar + {\@ifnextchar[{\@tsection{0}{2}}{\@tsection{0}{2}[]}}% + {\@ifnextchar[{\@tsection{0}{1}}{\@tsection{0}{1}[]}}% + }% + \def\@tsection#1#2[#3]#4{% + \setcounter{MG@tempTrueSlideCounter}{\thetrueSlideCounter}% + \stepcounter{MG@tempTrueSlideCounter}% + \HAP@contentsline{1}{#4}{\theMG@tempTrueSlideCounter}{1}% + }% + + % Redefinition of the part command to deal with the toc key + \renewcommand{\part}[2][]{% + \if@needsnewpage + \if@nopagebreak\else\ifodd\theslideii\else\mbox{}\clearpage\fi\fi + \global\@needsnewpagefalse + \fi + \refstepcounter{slidei}% + \setcounter{trueSlideCounter}{\theslidei}% + \let\@tockey\@undefined + \setkeys{PRV@keys@slide}{#1}% + \ifx\@tockey\@undefined + \HAP@contentsline{0}{#2}{\theslidei}{}% + \else + \ifx\@tockey\@empty\else + \HAP@contentsline{0}{\@tockey}{\theslidei}{}% + \fi + \fi + \old@section*{#2}% + }% + \renewcommand{\tsectionandpart}{\@ifstar{\tsectionandpart@E}{\tsectionandpart@NE}} + \newcommand{\tsectionandpart@E}[2][]{% + \let\@tockey\@undefined + \setkeys{PRV@keys@slide}{#1}% + \ifcase + \ifx\@tockey\@undefined\@ne\fi + \ifx\@tockey\@empty\@ne\fi + \z@ + \tsection*{\@tockey}% + \else + \tsection*{#2}% + \fi + \part[toc={}]{#2}% + } + \newcommand{\tsectionandpart@NE}[2][]{% + \let\@tockey\@undefined + \setkeys{PRV@keys@slide}{#1}% + \ifcase + \ifx\@tockey\@undefined\@ne\fi + \ifx\@tockey\@empty\@ne\fi + \z@ + \tsection{\@tockey}% + \else + \tsection{#2}% + \fi + \part[toc={}]{#2}% + } +% +% \end{macrocode} +% +% Since HA-\prosper enhances the footer (left and right), we try to take +% advantages of this. +% \begin{macrocode} +%<*HAPdef> + \let\l@foot\@empty + \let\r@foot\@empty + \@ifundefined{HAP@leftfoot}{}{\gdef\l@foot{\HAP@leftfoot}} + \@ifundefined{HAP@rightfoot}{}{\gdef\r@foot{\HAP@rightfoot}} + \gdef\@cartouche{\l@foot\hfill\r@foot} + \renewcommand{\LeftFoot}[1]{% + \gdef\l@foot{#1}% + \gdef\@cartouche{\l@foot\hfill\r@foot}% + }% + \renewcommand{\RightFoot}[1]{% + \gdef\r@foot{#1}% + \gdef\@cartouche{\l@foot\hfill\r@foot}% + }% +% +% \end{macrocode} +% +% \DescribeEnv{notes} +% Again, HA-\prosper adds a |notes| environment. We print it just between the +% slides, in a |quote| environment. +% \begin{macrocode} +%<*HAPdef> + \ifHAP@slidesonly\else + \renewenvironment{notes}[1]{% + \old@subsection*{#1}\bgroup\quote\footnotesize\sffamily + }{% + \endquote\egroup + \ifHAP@notesonly\else + \par + \if@nopagebreak + \bigskip + \else + \vfill + \ifodd\theslideii\else\mbox{}\clearpage\fi + \fi + \fi + \global\@needsnewpagefalse + }% + \fi +% +% \end{macrocode} +% +% \DescribeMacro{OnSlide}\DescribeMacro{onSlide} +% HA-\prosper adds also two extra macros for overlays: |\onSlide| and +% |\OnSlide|. To handle it is relatively simple since we only have to +% ``flatten'' overlays (see |\onlySlide| definition above). +% \begin{macrocode} +%<*HAPdef> + \def\OnSlide#1{\relax} + \long\def\onSlide@NE#1#2{#2} + \long\def\onSlide@E#1#2{% + \sbox\PRV@tempbox{\begin{minipage}{\linewidth}#2\end{minipage}}% + \setlength{\@size@tmp}{\the\ht\PRV@tempbox}% + \addtolength{\@size@tmp}{\the\dp\PRV@tempbox}% + \ifdim\@size@tmp>\@size@overlay\global\@size@overlay\@size@tmp\fi + \vbox to 0pt\bgroup\usebox{\PRV@tempbox}\egroup + \vskip -\baselineskip\ignorespaces + } + \def\onSlide{\@ifstar\onSlide@E\onSlide@NE} +}% +{% + \global\@HAprosperfalse% +} +% +% \end{macrocode} +% +% \setcounter{IndexColumns}{2} +% \Finale +% +\endinput diff --git a/macros/latex/contrib/ppr-prv/ppr-prv.ins b/macros/latex/contrib/ppr-prv/ppr-prv.ins new file mode 100644 index 0000000000..ae3e7000a4 --- /dev/null +++ b/macros/latex/contrib/ppr-prv/ppr-prv.ins @@ -0,0 +1,22 @@ +\def\batchfile{ppr-prv.ins} +\input docstrip +\keepsilent +\preamble +======================================================================== + ppr-prv class: "Prosper Preview", a class to produce a printable + version of prosper slides + Copyright (C) 2003-2004 Mathieu Goutelle (INRIA, France) + mgoutell[at]users[dot]sourceforge[dot]net + + 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 + 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. +======================================================================== +\endpreamble +\generateFile{ppr-prv.cls}{f}{\from{ppr-prv.dtx}{class}} +\generateFile{HAP-ppr-prv.def}{f}{\from{ppr-prv.dtx}{HAPdef}} +\endbatchfile \ No newline at end of file diff --git a/macros/latex/contrib/ppr-prv/ppr-prv.pdf b/macros/latex/contrib/ppr-prv/ppr-prv.pdf new file mode 100644 index 0000000000..df59c7925d Binary files /dev/null and b/macros/latex/contrib/ppr-prv/ppr-prv.pdf differ -- cgit v1.2.3