diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/texpower/powersem.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/texpower/powersem.dtx | 411 |
1 files changed, 411 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/texpower/powersem.dtx b/Master/texmf-dist/source/latex/texpower/powersem.dtx new file mode 100644 index 00000000000..a1283eca455 --- /dev/null +++ b/Master/texmf-dist/source/latex/texpower/powersem.dtx @@ -0,0 +1,411 @@ +% \iffalse meta-comment +% -------------------------------------------------------------- +% TeXPower bundle - dynamic online presentations with LaTeX +% Copyright (C) 1999-2004 Stephan Lehmke +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% -------------------------------------------------------------- +% +% powersem.dtx,v 1.2 2004/07/27 12:09:32 hansfn Exp +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{powersem.dtx} +%</driver> +%<powersem>\NeedsTeXFormat{LaTeX2e} +%<powersem>\ProvidesClass{powersem} +%<*powersem> + [2004/07/27 v0.8a Create online Presentations with seminar.] +%</powersem> +% +%<*driver> +\documentclass{ltxdoc} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{powersem.dtx} +\end{document} +%</driver> +% +% \fi +% +% \CheckSum{366} +% +% \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 \~} +% +% +% \GetFileInfo{powersem.dtx} +% +% \DoNotIndex{\newcommand,\newenvironment} +% +% \title{The \textsf{powersem} class\thanks{This document +% corresponds to \textsf{powersem}~\fileversion, dated \filedate.}} +% \author{ Stephan Lehmke \\ \texttt{Stephan.Lehmke@cs.uni-dortmund.de}} +% +% \maketitle +% +% \tableofcontents +% +% \section{Introduction} +% +% The user documentation is found in \texttt{manual.tex} and the FAQ. +% Only the implementation documentation is covered in this document. +% +% Make seminar ready for the Third Millennium ;-) +% This class loads seminar and tries to fix some problems which occur when trying to create dynamic presentations with +% the texpower package. +% +% Some new features helpful for dynamic presentations are also added. +% +% This class is part of the TeXPower bundle, to be found at\\ % |http://texpower.sourceforge.net/| +% +% The TeXPower bundle also contains a package \texttt{fixseminar.sty} which applies some more fixes, in particular for +% hyperref. These can not be applied here because they have to be made after hyperref is loaded. +% +% \StopEventually{\PrintChanges\PrintIndex} +% +% \section{Implementation} +% +% \changes{v0.1}{1999/10/18}{First version. So far it doesn't do much more than load seminar.} +% +% \changes{v0.2}{2000/03/28}{Force seminar to treat \cs{paperwidth} and \cs{paperheight} in a +% sensible manner.} +% +% \changes{v0.3}{2000/05/10}{Added option `calcdimensions'.} +% +% \changes{v0.4}{2000/06/16}{Now separates text from footnotes when option `display' is given.} +% +% \changes{v0.5}{2000/06/26}{\cs{@colht} is ignored by seminar, which is bad. Added a patch to +% \cs{set@slidesize}. calcdimensions now handles slide frames.} +% +% \changes{v0.5a}{2000/07/03}{The footnote patch with option display effectively disabled setting +% \cs{centerslidestrue}. Fixed.} +% +% \changes{v0.6}{2001/11/10}{seminar's \cs{output@slide} kernel copied (from seminar.bg2) and +% modified for better color handling and to remove some overfull \cs{vbox} warnings. There was +% another underfull vbox warning lurking in the footnote patch. Removed. New option truepagenumbers +% for cooperation with texpower in case `fragmented' slide numbers (like 3.5.1) are used. Make +% seminar's form of raggedright lines (controlled by \cs{raggedslides}) active in parboxes and +% minipages (and p columns in tables or arrays).} +% +% \changes{v0.7}{2002/11/22}{Inserted \cs{nointerlineskip} in page building code to heal a slight +% problem with vertical spacing. A small modification was neccessary wrt the KOMA option because +% with fixseminar v0.0.4, pdflatex slides can now be rotated.} +% +% \changes{v0.8}{2003/05/06}{Some fixes provided by Pascal Kockaert to (hopefully) get better +% behaviour with seminar's ``article'' option - many thanks!} +% +% \changes{v0.8a}{2004/07/27}{Moved to dtx format. No other code changes.} +% +% \begin{macrocode} +\RequirePackage{ifthen} +% \end{macrocode} +% +% The display option is understood by all relevant classes and packages from the TeXPower bundle. It means that +% `dynamic' features are to be turned on. +% There is a boolean register display (as defined in ifthen.sty) which is set by this option and can be used to +% differentiate between slides for display and slides for printout. +% Notes are disabled automatically. +% \begin{macrocode} +\newboolean{display} +\DeclareOption{display} +{\setboolean{display}{true}\PassOptionsToClass{slidesonly}{seminar}} +% \end{macrocode} +% +% The truepagenumbers option makes powersem count pages with the counter page, independently of the counter slide. This +% enables proper working of TeXPowers navigation buttons (some of which calculate relative page numbers) even when the +% counter slide is reset frequently (for slide numberings of the type |<l>.<n>.<m>|). +% \begin{macrocode} +\newboolean{truepn@PS} +\DeclareOption{truepagenumbers}{\setboolean{truepn@PS}{true}} +% \end{macrocode} +% +% The KOMA option tells powersem to load scrartcl (from the KOMA suite of document classes) instead of article. +% \begin{macrocode} +\newboolean{BaseClass@PS} +\DeclareOption{KOMA} +{\setboolean{BaseClass@PS}{true}\providecommand{\baseclass}{scrartcl}} +% \end{macrocode} +% +% The UseBaseClass option is more neutral: It tells powersem to load the class |\baseclass| (initially article) instead of +% article. +% \begin{macrocode} +\DeclareOption{UseBaseClass} +{\setboolean{BaseClass@PS}{true}\providecommand{\baseclass}{article}} +% \end{macrocode} +% +% The reportclass option tells powersem to load the class |\baseclass| (initially report) instead of +% article. +% \begin{macrocode} +\DeclareOption{reportclass} +{\setboolean{BaseClass@PS}{true}\providecommand{\baseclass}{report}} +% \end{macrocode} +% +% The bookclass option tells powersem to load the class |\baseclass| (initially report) instead of +% article. +% \begin{macrocode} +\DeclareOption{bookclass} +{\setboolean{BaseClass@PS}{true}\providecommand{\baseclass}{book}} +% \end{macrocode} +% +% We need to redefine the a4paper option which is broken in seminar.cls +% \begin{macrocode} +\DeclareOption{a4paper}{\PassOptionsToClass{a4}{seminar}} +% \end{macrocode} +% +% The calcdimensions option tells powersem to automatically calculate slidewidth and slideheight from paper dimensions +% and margins. +% \begin{macrocode} +\newboolean{calcdim@PS} +\DeclareOption{calcdimensions}{\setboolean{calcdim@PS}{true}} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{seminar}} + +\ProcessOptions +% \end{macrocode} +% +% Now we need to hack a little to make seminar load |\baseclass| instead of article (if one of the respectice options was +% given). +% \begin{macrocode} +\let\oldLC@PS=\LoadClass + +\ifthenelse{\boolean{BaseClass@PS}} +{% + \def\article@PS{article} +% \end{macrocode} +% Make |\PassOptionsToClass| and |\LoadClass| use |\baseclass|... +% \begin{macrocode} + \let\oldPOTC@PS=\PassOptionsToClass + \def\PassOptionsToClass#1#2% + {\edef\cls@PS{#2}% + \ifx\article@PS\cls@PS\oldPOTC@PS{#1}{\baseclass}% + \else\oldPOTC@PS{#1}{#2}% + \fi} +% \end{macrocode} +% Furthermore, seminar redefines |\paperheight| and |\paperwidth|, saving their value in |\sem@paperheight| and +% |\sem@paperwidth|. We undo this so the paper dimension calculation of typearea can be used. +% \begin{macrocode} + \renewcommand{\LoadClass}[2][]% + {% + \edef\cls@PS{#2}% + \ifx\article@PS\cls@PS + \let\paperheight\sem@paperheight\let\paperwidth\sem@paperwidth + \oldLC@PS[#1]{\baseclass}% + \ifarticle\else\portraittrue\fi + \else + \oldLC@PS[#1]{#2}% + \fi + }% +} +{} +% \end{macrocode} +% +% Finally, the seminar class and some bug fixes are loaded. +% \begin{macrocode} +\oldLC@PS{seminar} + +\AtBeginDocument +{% +\input{seminar.bug}% +\input{seminar.bg2}% +} + +\expandafter\def\expandafter\set@slidesize\expandafter +{\set@slidesize\@colht\vsize} + +\g@addto@macro\@arrayparboxrestore\slide@rightskip + +\ifthenelse{\boolean{truepn@PS}}{\truepagenumbers}{} + +\AtBeginDocument{% +\ifthenelse{\boolean{BaseClass@PS}}{\sliderotation{none}}{}} +% \end{macrocode} +% +% Make some changes in the seminar kernel to hopefully get better handling of text colors and avoid overfull box +% warnings when |\slidetopmargin| and |\slidebottommargin| are set too small. +% \begin{macrocode} +\AtBeginDocument{% +\ifarticle +\else + \def\output@slide{% + \begingroup + \hoffset=-\inverseslidesmag in + \voffset=-\inverseslidesmag in + \setslidelength\@tempdima{% + \ifportrait\paperwidth\else\paperheight\fi}% + \setslidelength\@tempdimb{% + \ifportrait\paperheight\else\paperwidth\fi}% + \ifrotateheaders + \@ifrotateslide{% + \dimen@=\@tempdima + \@tempdima=\@tempdimb + \@tempdimb=\dimen@}% + \fi + % \oddsidemargin, \evensidemargin, \headheight, \footheight + % used for scratch: + \setslidelength\headheight\slidetopmargin + \setslidelength\footheight\slidebottommargin + \ifautoslidemargins + \textwidth=\wd\@slidebox + \oddsidemargin=\@tempdima + \advance\oddsidemargin-\textwidth + \divide\oddsidemargin 2 + \else + \setslidelength\oddsidemargin\slideleftmargin + \setslidelength\evensidemargin\sliderightmargin + \textwidth=\@tempdima + \advance\textwidth-\oddsidemargin + \advance\textwidth-\evensidemargin + \fi + \setbox\@slidebox=\hbox to \@tempdima{{% +% \end{macrocode} +% All double \{\{ around box contents added for better color handling (STL). +% \begin{macrocode} + % + \kern\oddsidemargin + \vbox to\@tempdimb{{% + \ifnum\fancyput@flag>-1 + \hbox{\kern-\oddsidemargin\do@fancyput}% + \fi + \let\label\@gobble + \let\index\@gobble + \let\glossary\@gobble + \vbox to\headheight{{% + \vfill + \color@hbox + \normalcolor + \slideheadfont\relax%\strut Removed (STL) + \hb@xt@\textwidth{\@oddhead}% + \color@endbox + \kern\z@}}% + \nointerlineskip + \vss + \hbox to\textwidth{{\hss\box\@slidebox\hss}}% + \vss + \nointerlineskip + \vbox to\footheight{{% + \vfill + \color@hbox + \normalcolor + \slidefootfont\relax%\strut Removed (STL) + \hb@xt@\textwidth{\@oddfoot}% + \color@endbox + \vfill}}% + }}\hss}}% + \ifrotateheaders\@ifrotateslide\rotate@slide\fi + \insert@specials + \shipout\box\@slidebox + \endgroup + \let\firstmark\botmark + \ifthenelse{\boolean{truepn@PS}}{\stepcounter{page}}{}% +% \end{macrocode} +% The above will seriously upset notes! (STL) +% \begin{macrocode} + }% + \@ifundefined{fancyput@flag}{\def\fancyput@flag{-1}}{}% +\fi +} +% \end{macrocode} +% +% When producing slides to be displayed interactively, we must make absolutely sure that interactive building of slides +% doesn't move text which has already been set. So slides are not to be centered. +% \begin{macrocode} +\ifthenelse{\boolean{display}} +{% + \centerslidesfalse + \extraslideheight{0pt}% + \renewcommand{\slideshrink}{0}% + \def\@makeslide{% + \ifcenterslides + \setbox\@slidebox\vbox{{% + \@begindvi % added 1997/04/15 SPQR + \unvbox\@cclv + \ifvoid\slide@footins\else + \vskip\skip\slide@footins + \footnoterule + \unvbox\slide@footins + \fi + \vskip\z@}} + \else + \setbox\@slidebox\vbox to \slide@vsize{{% + \@begindvi % added 1997/04/15 SPQR + \unvbox\@cclv + \ifvoid\slide@footins\vfil\else + \vfil\vskip\skip\slide@footins + \footnoterule + \unvbox\slide@footins + \fi + \vskip\z@}}% + \fi + }% + } +{} +% \end{macrocode} +% +% If powersem is asked to calculate the slide dimensions... +% \begin{macrocode} +\def\relax@PS{\relax} + +\ifthenelse{\boolean{calcdim@PS}} +{% + \AtBeginDocument + {% + \setlength{\slidewidth}{\paperwidth}% + \advance\slidewidth by -\slideleftmargin\relax + \advance\slidewidth by -\sliderightmargin\relax + \ifx\theslideframe\relax@PS + \else + \advance\slidewidth by -2\slideframewidth\relax + \advance\slidewidth by -2\slideframesep\relax + \fi + \setlength{\slideheight}{\paperheight}% + \advance\slideheight by -\slidetopmargin\relax + \advance\slideheight by -\slidebottommargin\relax + \ifx\theslideframe\relax@PS + \else + \advance\slideheight by -2\slideframewidth\relax + \advance\slideheight by -2\slideframesep\relax + \fi + }% + } +{} + +\AtBeginDocument +{% + \@ifundefined{headwidth}{} + {% + \setslidelength{\headwidth}{\paperwidth}% + \addtoslidelength{\headwidth}{-\slideleftmargin}% + \addtoslidelength{\headwidth}{-\sliderightmargin}% + }% +} +% \end{macrocode} +% \Finale +\endinput |