summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/seminar
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-07-01 03:01:47 +0000
committerNorbert Preining <norbert@preining.info>2021-07-01 03:01:47 +0000
commitc840f97520ba98156a0ed525d6b5d05ab6a324f6 (patch)
tree8e6cf79a5019e2dc2811f4a5b032caffb2809226 /macros/latex/contrib/seminar
parent916b6828e77bd92bd88d57bad094c4520f0ad65c (diff)
CTAN sync 202107010301
Diffstat (limited to 'macros/latex/contrib/seminar')
-rw-r--r--macros/latex/contrib/seminar/Changes10
-rw-r--r--macros/latex/contrib/seminar/README378
-rwxr-xr-xmacros/latex/contrib/seminar/doc/run.sh8
-rw-r--r--macros/latex/contrib/seminar/doc/seminar-doc.pdfbin0 -> 251653 bytes
-rw-r--r--macros/latex/contrib/seminar/doc/seminar-doc.tex1932
-rw-r--r--macros/latex/contrib/seminar/doc/semsamp1.pdfbin0 -> 34833 bytes
-rw-r--r--macros/latex/contrib/seminar/doc/semsamp1.tex110
-rw-r--r--macros/latex/contrib/seminar/doc/semsamp2.pdfbin0 -> 54935 bytes
-rw-r--r--macros/latex/contrib/seminar/doc/semsamp2.tex297
-rw-r--r--macros/latex/contrib/seminar/doc/semsamp3.pdfbin0 -> 37704 bytes
-rw-r--r--macros/latex/contrib/seminar/doc/semsamp3.tex68
-rw-r--r--macros/latex/contrib/seminar/doc/tvz-code.sty291
-rw-r--r--macros/latex/contrib/seminar/doc/tvz-hax.sty266
-rw-r--r--macros/latex/contrib/seminar/doc/tvz-user.sty215
-rw-r--r--macros/latex/contrib/seminar/latex/npsfont.sty191
-rw-r--r--macros/latex/contrib/seminar/latex/sem-a4.sty21
-rw-r--r--macros/latex/contrib/seminar/latex/sem-dem.sty96
-rw-r--r--macros/latex/contrib/seminar/latex/sem-page.sty95
-rw-r--r--macros/latex/contrib/seminar/latex/semcolor.sty77
-rw-r--r--macros/latex/contrib/seminar/latex/semhelv.sty193
-rw-r--r--macros/latex/contrib/seminar/latex/seminar.bg2600
-rw-r--r--macros/latex/contrib/seminar/latex/seminar.bg3608
-rw-r--r--macros/latex/contrib/seminar/latex/seminar.bug209
-rw-r--r--macros/latex/contrib/seminar/latex/seminar.cls1218
-rw-r--r--macros/latex/contrib/seminar/latex/seminar.con1126
-rw-r--r--macros/latex/contrib/seminar/latex/seminar.sty1167
-rw-r--r--macros/latex/contrib/seminar/latex/semlayer.sty158
-rw-r--r--macros/latex/contrib/seminar/latex/semlcmss.sty170
-rw-r--r--macros/latex/contrib/seminar/latex/semrot.sty80
-rw-r--r--macros/latex/contrib/seminar/latex/slidesec.sty198
-rw-r--r--macros/latex/contrib/seminar/src/sem-code.tex110
-rw-r--r--macros/latex/contrib/seminar/src/sem-make.tex27
-rw-r--r--macros/latex/contrib/seminar/src/seminar.doc2048
-rw-r--r--macros/latex/contrib/seminar/src/semlayer.doc271
34 files changed, 12238 insertions, 0 deletions
diff --git a/macros/latex/contrib/seminar/Changes b/macros/latex/contrib/seminar/Changes
new file mode 100644
index 0000000000..74dafdcc9c
--- /dev/null
+++ b/macros/latex/contrib/seminar/Changes
@@ -0,0 +1,10 @@
+----- seminar.sty
+1.63 2021-06-30 - make it run with current latex version (seminar.ls†|.sty)
+1.62a 2021-06-12 - added statement in README
+1.62 2014-05-12 - moved code into pst-ovl
+1.61 2014-01-17 - added missing file seminar.con
+ - added ed one more example
+ - added script for creating example
+1.6 2012-12-27 - use the macros from package pst-ovl (hv)
+
+
diff --git a/macros/latex/contrib/seminar/README b/macros/latex/contrib/seminar/README
new file mode 100644
index 0000000000..7785db63a4
--- /dev/null
+++ b/macros/latex/contrib/seminar/README
@@ -0,0 +1,378 @@
+-------------------------------------------------------
+IMPORTANT NOTE
+
+With the agreement of Timothy Van Zandt (now Timothy.VAN-ZANDT@insead.edu),
+the distributions conditions on seminar are now relaxed to:
+%%
+%% 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.
+%%
+
+June 3rd 1999 (last updated September 2005)
+Sebastian Rahtz <sebastian.rahtz@oucs.ox.ac.uk>
+Denis Girou <denis.girou@idris.fr>
+Herbert Voß <hvoss@tug.org>
+
+(Tim's helpers on earth)
+-------------------------------------------------------
+
+%% BEGIN sem-read.me
+***********************************************************************
+**** "readme" file for seminar.cls package, v1.0, 93/04/01 ****
+***********************************************************************
+
+COPYRIGHT 1993, by Timothy Van Zandt
+
+DESCRIPTION:
+
+ seminar.sty is a LaTeX document style for typesetting slides or
+ transparencies, and accompanying notes. It has many advantages over
+ SliTeX. Here are some of the style's special features:
+ * It is a LaTeX style, rather than another format.
+ * It is compatible with AmS-LaTeX.
+ * You can use any fonts that work with LaTeX, including PostScript
+ fonts and AmSFonts.
+ * Slides can be landscape and portrait within the same file.
+ * Color is supported through PostScript.
+ * The slides can have a frame and a colored background.
+ * The magnification can be changed with a single command.
+ * Overlays can be produced from a single slide environment.
+ * Accompanying notes, such as the text of a presentation, can be put
+ outside the slide environments. The slides, notes or both together
+ can then be typeset in a variety of formats.
+ Some of these features require a PostScript output device.
+
+FILES:
+
+ LaTeX:
+ seminar.cls : The main class file.
+ seminar.sty : The main style file.
+ seminar.con : The main config file.
+ sem-page.sty : Page parameters.
+ semlayer.sty : The semlayer style option (overlays and color layers).
+ semhelv.sty : The semhelv style option .
+ semlcmss.sty : The semlcmss style option.
+ semcolor.sty : The semcolor style option.
+ semrot.sty : THe semrot style option.
+ slidesec.sty : The slidesec style option.
+ sem-a4.sty : The sem-a4 style option.
+ xcomment.sty : The macros for omitting notes.
+ 2up.tex : Macros for printing documents two-up.
+ 2up.sty : The same as 2up.tex, but with .sty extension.
+ npsfont.sty : Macros for defining new PostScript fonts with the NFSS.
+ fancybox.sty : Box tips and tricks for LaTeX.
+
+ Documentation:
+ sem-user.tex : User's guide for seminar.sty.
+ sem-user.ind : Index for sem-user.tex.
+ semsamp1.tex : A sample document for seminar.sty.
+ semsamp2.tex : Another sample document for seminar.sty.
+ 2up.doc : Documentation for 2up.tex.
+ fancybox.doc : Documentation for fancybox.sty.
+ tvz-hax.sty : For typesetting sem-user.tex and sem-code.tex.
+ tvz-code.sty : For typesetting sem-code.tex.
+ tvz-user.sty : For typesetting sem-user.tex.
+ sem-read.me : This file.
+ read-me.pst : The read-me file for the PSTricks package.
+
+ Sources:
+ seminar.doc : Documented code for seminar.sty.
+ semlayer.doc : Documented code for semlayer.sty.
+ xcomment.doc : Documented code for xcomment.sty.
+ sem-make.tex : For extracting code from seminar.doc and semlayer.doc.
+ sem-code.tex : For typesetting seminar.doc and semlayer.doc.
+ xc-make.tex : For extracting code from xcomment.doc.
+ xcomment.tex : For typesetting xcomment.doc.
+
+GETTING STARTED:
+
+ 1. Put the input files in a directory where your TeX looks for inputs.
+
+ 2. Typeset and print sem-user.tex.
+
+ 3. Read the preface "Getting Started", and then the appendices.
+
+ 4. Typeset semsamp1.tex and semsamp2.tex.
+
+ 5 If upgrading from v0.92, see the changes listed at the end of this
+ file. If upgrading from v0.91 or earlier, good luck.
+
+HACKERS:
+
+ The files seminar.doc, semlayer.doc and xcomment.doc contain the
+ documented code, using Frank Mittelbach's doc system.
+ See sem-code.tex and xcomment.tex for instructions on typesetting
+ these files.
+ See sem-make.tex and xc-make.tex for instruction on extracting
+ stripped input (.sty) files from these .doc files.
+
+MORE ABOUT THE SUPPLEMENTAL STYLES AND MACROS:
+
+ The following styles and macros are not specifically for use
+ with seminar.sty, and hence are not described in detail in
+ the seminar.sty User's Guide. You do not need to read the
+ documentation of these files in order to use seminar.sty.
+ If you have versions on your system that are older than the
+ ones distributed with seminar.sty, be sure to replace these.
+
+ FANCYBOX.STY:
+ fancybox.sty is a LaTeX style option with tips and tricks for LR-box
+ commands. The documentation, fancybox.doc, is extensive.
+
+ 2UP.TEX:
+ 2up.tex/2up.sty contains macros for typesetting documents in a
+ two-up format. seminar.sty's \twoup command provides an interface.
+ 2up.doc is the documentation for 2up.tex.
+
+ NPSFONT.STY:
+ npsfont.sty contains macros for defining new PostScript fonts
+ with the New Font Selection Scheme. The documentation is in
+ npsfont.sty itself.
+
+ XCOMMENT.STY:
+ xcomment.sty, a LaTeX style option, permits one to typeset only
+ selected environments, omitting input outside these environments.
+ See xcomment.tex if you want to typeset the documentation.
+
+ SLIDESEC.STY
+ slidesec.sty is an experimental file contains sectioning commands
+ for slide type documents. The documentation is in slidesec.sty
+ itself.
+
+
+SEMINAR.STY AND PSTRICKS.TEX:
+
+ pstricks.tex is a collection of PostScript macros that is compatible
+ with most TeX macro packages, including Plain TeX and LaTeX. Included are
+ macros for color, graphics, rotation, overlays, nodes and much more.
+
+ seminar.sty, combined with the semcolor option, the PSTricks package,
+ and your favorite macros for including EPS files, make a complete
+ TeX presentation software package.
+
+ You can probably obtain the PSTricks package from wherever you got
+ the Seminar package, or try
+ Princeton.EDU:/pub or Princeton.EDU:/pub/tvz
+
+ You must install the PSTricks package before using the semcolor option.
+
+ seminar.sty will work with pstricks.tex v0.92, and maybe later
+ versions.
+
+
+ACKNOWLEDGEMENTS:
+
+ The author is thankful to Frank Mittelbach for his documentation system.
+
+ Thanks to Sebastian Rahtz for bits of advice, and many users for
+ comments and bug reports.
+
+BUGS:
+
+ Too many to list, and who knows what they are anyway. These files are all
+ preliminary and unstable. Not responsible for neck injuries.
+
+
+ Thanks.
+
+CHANGES:
+
+ v1.0: Included sem-a4.sty file, as a way to let the default papersize
+ be A4 (The a4 option still works). Added \epsfslidesize to make
+ it easier to set the slide of eps files with epsf.sty. Fixed bug
+ which caused the width of second pages of a multi-page slide to
+ end up too small if the page only contained a quote or similar
+ environment with reduced margins.
+
+ v0.93a: Fixed bugs so that slides would come out properly with the
+ 2-up,article and portrait options (together), and so that
+ slides would be positioned correctly with the portrait style
+ option.
+
+ v0.93:
+
+ INCOMPATIBLE CHANGES:
+
+ ! Use the a4 option instead of sem-a4. There is not longer a
+ separate file for a4.
+
+ ! No more \fewnotes, \nonotes. Use \slideplacement instead.
+
+ ! No more \layerstyle, \overlaystyle.
+
+ ! Slide styles are now "left" and "bottom".
+
+ ! No more \ifslides. Use \ifarticle\else.
+
+ ! You must now use the semlayer option to use overlays (in addition
+ to the semcolor option).
+
+ ! No "down" slide rotation (only "none", "left" and "right".
+
+ ! portrait option is no longer a separate file.
+
+ ! \paperwidth and \paperheight are now ordinary commands, to be set
+ with \renewcommand.
+
+ ! \slidefonts is now always invoked in slide environments, and never in
+ the preamble. (But semhelv.sty and semlcmss.sty have changed to
+ reflect this.)
+
+ ! Method for customizing the slide frames has changed.
+ \slideframecolor, \slideframearc, \slidefillcolor and
+ \slideshadowcolor are obsolete.
+
+ ! \landscape command replaced by \printlandscape to avoid conflict with
+ other style files. (E.g., \def\printlandscape{\special{landscape}}).
+
+ NEW FEATURES:
+
+ + A slide environment can have multiple `pages'. \extraslideheight{len}
+ controls page cutting. See user's guide for details.
+
+ + \centerslidestrue (default) causes the contents of partially full
+ slides to be vertically centered in the slide. \centerslidesfalse
+ causes it to be flush top.
+
+ + New \raggedslides[len] command, for setting
+ whether right margin in slides is ragged or justified. Default is
+ \raggedslides. \raggedslides[0pt] gives justified slides.
+
+ + \slideplacement
+
+ + \onlynotestoo
+
+ + \slideskip and \slideshrink for added control over interline space.
+
+
+ + New: \slideleftmargini, \slideleftmarginii, \slideleftmarginiii,
+ \slidelabelsep, \slideitemsep, \slidepartopsep,
+ \slideparskip, \slideparindent, \slidefootins, \slidefootnotesep,
+ \slidedisplayskips, \theslidefootnote
+
+ + \input and \endinput now supported for the slidesonly selection.
+
+ + New conditional: \ifportrait
+
+ + \newslideframe
+
+ + \leftsliderotation, \rightsliderotation.
+
+ + New \slidetopmargin, \slidebottommargin, \slideleftmargin,
+ \sliderightmargin.
+
+ + New notesonly* selection.
+
+ + New \slidesclearpagetrue
+
+ + New \semcm and \semin.
+
+ + New note environment and \noxcomment command, as an alternative
+ to treating everything outside slide environments as notes.
+
+
+ BACKWARDS-COMPATIBLE CHANGES:
+
+ * \maketitle now uses LaTeX's default from article.sty in notes.
+
+ * Bug in article option with the \twoup command fixed.
+
+ * \topmargin in sem-a4 changed from -.75in to 1in.
+
+ * \slidefontsizes is obsolete (but still works). Use \ptsize instead.
+
+ * Page parameters are now in a separate file sem-page.sty. sem-a4.sty
+ has been changed to reflect this.
+
+ v0.92:
+ Mostly bug fixes, plus some extra options. The PSTricks package
+ is no longer distributed with seminar.sty.
+
+ Pre v0.91:
+ Entirely rewritten. Too many changes to list. Note especially
+ that system of formats and selections has changed.
+
+%% END sem-read.me
+
+
+
+THIS IS A SUPPLEMENTARY READ-ME FOR V1.0e OF THE SEMINAR PACKAGE
+
+***********************************************************************
+**** "readme" file for the Seminar package, v1.0e, 94/09/12 ****
+***********************************************************************
+
+COPYRIGHT 1993, 1994 by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%% These files 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.
+%%
+
+BUGS: If you have problems using this seminar package with LaTeX2e,
+ report them to Timothy.VAN-ZANDT@insead.edu. The problem probably lies
+ with seminar.cls. You can probably continue to use the seminar
+ package with LaTeX2e in compatibility mode, while waiting for a bug
+ fix, by renaming seminar.cls to something else.
+
+ABOUT V1.0e:
+
+ The V1.0e distribution is identical to v1.0 of 93/04/01,
+ except for a few changes so that Seminar can work with
+ NFSS2 and LaTeX2e:
+
+ - semhelv.sty and semlcmss.sty have been modified to work
+ with NFSS2 and LaTeX2e (but they still work with NFSS).
+
+ - seminar.cls has been added. This is a LaTeX2e document class,
+ derived from seminar.sty v1.0 by Sebastian Rahtz.
+
+ If you already have have seminar.sty v1.0e, then all you need
+ are this read-me file plus these files from the inputs
+ directory:
+
+ seminar.cls semhelv.sty semlcmss.sty
+
+USING SEMINAR WITH LATEX2E:
+
+ !!! YOU MUST BE USING A LATEX2E RELEASED AFTER 19 FEBRUARY 1994
+
+ You can either use seminar.sty in compatibility mode:
+ \documentstyle{seminar}
+ Or use the seminar.cls document class:
+ \documentclass{seminar}
+
+ Unless you are using other macros that only work in
+ compatibility mode, you might as well use the document class.
+
+ You can use the following options with \documentclass{seminar}:
+
+ article slidesonly notes notesonly notesonly*
+ noxcomment portrait a4 (or a4paper) semhelv semlcmss
+ semlayer semrot semcolor slidesec
+
+ plus appropriate options for the article document class
+ (e.g., 11pt)
+
+ NOTE: Use `a4' or `a4paper', not `sem-a4'.
+
+ `seminar.cls' is a minimal modification of seminar.sty. The
+ next release will take advantage of more of LaTeX2e's special
+ capabilities.
+
+
+Tim Van Zandt
+August 24, 1994
diff --git a/macros/latex/contrib/seminar/doc/run.sh b/macros/latex/contrib/seminar/doc/run.sh
new file mode 100755
index 0000000000..72acd3afed
--- /dev/null
+++ b/macros/latex/contrib/seminar/doc/run.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+#latex semsamp1 && dvips -T 297mm,210mm semsamp1 && ps2pdf -dALLOWPSTRANSPARENCY semsamp1.ps
+latex semsamp1 && dvips semsamp1 && ps2pdf -dALLOWPSTRANSPARENCY semsamp1.ps
+latex semsamp2 && dvips -T 297mm,210mm semsamp2 && ps2pdf -dALLOWPSTRANSPARENCY semsamp2.ps
+latex semsamp3 && dvips -T 297mm,210mm semsamp3 && ps2pdf -dALLOWPSTRANSPARENCY semsamp3.ps
+rm *.log *.aux *.dvi *.ps *.tmp *.out *.los
+
+
diff --git a/macros/latex/contrib/seminar/doc/seminar-doc.pdf b/macros/latex/contrib/seminar/doc/seminar-doc.pdf
new file mode 100644
index 0000000000..2227746eae
--- /dev/null
+++ b/macros/latex/contrib/seminar/doc/seminar-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/seminar/doc/seminar-doc.tex b/macros/latex/contrib/seminar/doc/seminar-doc.tex
new file mode 100644
index 0000000000..94aef0b7f0
--- /dev/null
+++ b/macros/latex/contrib/seminar/doc/seminar-doc.tex
@@ -0,0 +1,1932 @@
+%% BEGIN sem-user.tex
+\def\FileDate{93/04/01}
+\def\FileVersion{1.0}
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%%
+%% 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.
+%%
+%%
+%%
+%% This LaTeX file prints the User's Guide for seminar.sty.
+%% You must have my tvz-hax.sty, tvz-user.sty, and fancybox.sty,
+%% which are distributed with seminar.sty.
+%%
+%% This is distributed with the index file sem-user.ind.
+%% To make an new index, run, e.g.:
+%% makeindex sem-user.idx
+%%
+%% STYLE OPTIONS:
+%% `a4' : For A4 paper.
+%% `twoside' : For two-sided printing.
+%% `2up' : For two-up printing. (Uses non-standard font magnifications.
+%% See 2up.doc for details.)
+%%
+
+\documentstyle[12pt]{tvz-user}
+
+\makeindex
+
+% Used with twoside option:
+\def\theheadertitle{seminar.sty: User's Guide}
+
+% No headers, 1in top margin
+\setlength{\topmargin}{0pt}
+\setlength{\headheight}{0pt}
+\setlength{\headsep}{0pt}
+\setlength{\textheight}{8.75in}
+\setlength{\footskip}{.625in}
+\papersizeadjust
+
+% Change part environment:
+\renewcommand{\part}[1]{%
+ \clearpage
+ \refstepcounter{part}
+ \addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}%
+ \hrule height 1pt\relax
+ \vskip 1ex
+ \hbox to\columnwidth{\strut\huge\bf\thepart\hfil#1}%
+ \vskip 1ex
+ \hrule height 1pt\relax
+ \vskip 3ex}
+
+\def\MainFont{\tt} % For macro definitions.
+
+\ShortVerb
+\ShortMeta
+
+\let\filedate\FileDate
+
+\begin{document}
+
+\thispagestyle{empty}
+
+\null
+\vfill
+
+\begin{center}
+ {\huge\bf seminar.sty}\\[9pt]
+ {\LARGE\bf A \bLaTeX\ style for slides and notes}\\[14pt]
+ {\LARGE\bf User's Guide}\par
+ \vskip 1.5em
+ \large
+ \renewcommand{\thefootnote}{\fnsymbol{footnote}}
+ Timothy Van Zandt\\
+ {\normalsize\tt Timothy.VAN-ZANDT@insead.edu}
+ \vskip 1em
+ \thefiledate\\ Version \FileVersion\par
+\end{center}
+\par
+\setlength{\unitlength}{1cm}
+\thicklines
+\centerline{\lower.8in\hbox{%
+\begin{picture}(0,0)
+\put(2,-11){\framebox(4,2){}}
+\put(2,-11){\line(-2,3){1}}
+\put(2,-9){\line(-2,3){1}}
+\put(6,-9){\line(-2,3){1}}
+\put(1,-9.5){\line(0,1){2}}
+\put(1,-7.5){\line(1,0){4}}
+\put(5.8,-8.7){\line(0,1){2}}
+\put(5.0,-6.7){\oval(1.6,1.6)[tr]}
+\put(5.0,-5.9){\line(-1,0){.7}}
+\put(3.1,-6.4){\framebox(1.2,1){}}
+\put(3.1,-6.4){\line(-1,2){.3}}
+\put(3.1,-5.4){\line(-1,3){.3}}
+\put(4.3,-5.4){\line(-1,3){.3}}
+\put(2.8,-5.8){\line(0,1){1.3}}
+\put(2.8,-4.5){\line(1,0){1.2}}
+\put(0,6.2){\oval(14,10)}
+\put(.02,6.18){\oval(14,10)}
+\thinlines
+\put(2.8,-5.8){\line(-4,3){9.6}}
+\put(2.8,-4.5){\line(-3,5){9.35}}
+\put(4,-4.5){\line(1,6){2.6}}
+\put(6.8,1.4){\line(-1,-3){2.5}}
+\end{picture}}}
+\par
+\bigskip
+\rightskip=0pt plus 2em\relax
+\parshape=20
+0cm 2.3cm
+0cm 2.9cm
+0cm 3.5cm
+0cm 4.1cm
+0cm 4.7cm
+0cm 5.3cm
+0cm 5.9cm
+0cm 6.5cm
+0cm 7.1cm
+0cm 7.7cm
+0cm 8.3cm
+0cm 8.3cm
+0cm 8.3cm
+0cm 7.3cm
+0cm 7.3cm
+0cm 7.3cm
+0cm 7.3cm
+0cm 7.3cm
+0cm 7.3cm
+0cm 7.3cm
+seminar.sty is a \LaTeX\ style for typesetting slides or
+transparencies, and accompanying notes. Here are some of its special features:
+It is compatible with \AmS-\LaTeX, and you can use PostScript and \AmS{}
+fonts. Slides can be landscape and portrait. There is support for color and
+frames. The magnification can be changed easily.
+Overlays can be produced from a single slide environment. Accompanying notes,
+such as the text of a presentation, can be put
+ outside the slide environments. The slides, notes or both together
+ can then be typeset in a variety of formats.
+
+\vfill
+
+\twosideclearpage
+\pagenumbering{roman}
+\tableofcontents
+
+\twosideclearpage
+
+\section*{Getting Started}
+\addcontentsline{toc}{section}{Getting Started}
+\markboth{Getting Started}{Getting Started}
+
+"seminar.sty" is a \LaTeX{} document style for typesetting slides, and more.
+
+You should know how to use \LaTeX, as described in Leslie Lamport's \LaTeX:
+{\em User's Guide and Reference Manual}.
+
+Let's get started:
+\begin{enumerate}
+\item If you are installing "seminar.sty", read the the accompanying read-me
+file, and put the input files where your \TeX\ looks for inputs.
+
+\item Typeset the sample file, "semsamp1.tex", to see that everything is
+working. You can use \LaTeX\ or \AmS-\LaTeX.
+
+\item Read Appendix \ref{short-fonts}, on page \pageref{short-fonts}.
+
+\item To start making landscape slides, use
+\begin{LVerbatim}
+ \documentstyle{seminar}
+ \begin{document}
+ \begin{slide}
+ foo
+ \end{slide}
+ \end{document}
+\end{LVerbatim}
+and print out your document in landscape mode.
+
+\item To start making portrait slides, include the \o{portrait} style option,
+and use the \e{slide*} environment instead of \e{slide}:
+\begin{LVerbatim}
+ \documentstyle[portrait]{seminar}
+ \begin{document}
+ \begin{slide*}
+ foo
+ \end{slide*}
+ \end{document}
+\end{LVerbatim}
+
+\item If you have used \SliTeX, see Section \ref{slitex}.
+
+\item For A4 paper, use the "a4" style option.
+
+\item When you are ready to explore "seminar.sty"'s special features, skim the
+{\em User's Guide}, including the appendices.
+
+\item Play around with the sample file "semsamp2.tex" to try out some of
+"seminar.sty"'s special features.
+
+\item When you run into problems, look for help in Part \ref{Help}.
+
+\end{enumerate}
+
+\twosideclearpage
+
+\pagenumbering{arabic}
+
+\part{Just slides}
+
+\section{Landscape and portrait slides}
+
+"seminar.sty" is a \LaTeX\ (or \AmS-\LaTeX) document style. Thus, begin your
+document with
+\begin{LVerbatim}
+ \documentstyle{seminar}
+\end{LVerbatim}
+
+The slide environments are\MainEnvIndex{slide}\MainEnvIndex{slide*}%
+\begin{LVerbatim}
+ \begin{slide} ... \end{slide}
+ \begin{slide*} ... \end{slide*}
+\end{LVerbatim}
+\e{slide} is for landscape slides and \e{slide*} is for portrait slides.
+
+By default, the document is typeset in landscape mode, but if you include the
+\O{portrait} style option, the document is typeset in portrait mode.
+Typesetting the document in landscape mode is different from printing it in
+landscape mode; you may have to take care of the latter when printing with
+your dvi driver (see Appendix \ref{S-landscape}).
+
+If you have both landscape and portrait slides in your file, there are two
+ways to print the slides:
+\begin{itemize}
+ \item If you dvi driver supports rotation, then you can print all the slides
+at once. See Appendix \ref{S-landscape} for details.
+ \item You can first print your landscape slides by putting the command
+\begin{MD}
+ \landscapeonly
+\end{MD}
+in the preamble, and then print the portrait slides by inserting instead the
+command
+\begin{MD}
+ \portraitonly
+\end{MD}
+and including the \o{portrait} style option.
+\end{itemize}
+
+\section{The height and width of slides\label{slidedim}}
+
+The dimensions of the slides are set by the lengths
+\begin{MD}
+ \slidewidth\\
+ \slideheight
+\end{MD}
+The ``width'' refers to the width of a slide when looking at it in landscape
+orientation, whether it is a landscape or portrait slide (and the same goes
+for ``height''). The default width is 8.5 inches and the default height is 6.3
+inches.
+
+The slide environments have an optional argument that lets you change the
+dimensions of a single slide, as in
+\begin{LVerbatim}
+ \begin{slide*}[7.5in,6in]
+\end{LVerbatim}
+The first dimension is the slide's ``width'', and the second dimension is the
+slides ``height''. If you remember what we said about what ``width'' and
+``height'' mean, you will see that the above example begins a portrait slide
+that is 7.5 inches high and 6 inches wide.
+
+
+\section{Margins within a slide}
+
+When a slide is not full, the material is vertically centered within the
+slide. The command
+\begin{MD}
+ \centerslidesfalse
+\end{MD}
+cause the material to be flush to the top, instead. The command
+\begin{MD}
+ \centerslidestrue
+\end{MD}
+switches back to vertical centering.
+
+The right margin in slides is ragged by default. You can change this with the
+command
+\begin{MD}
+ \raggedslides[len]
+\end{MD}
+<len> should be the maximum space between the end of the line and the right
+margin. The argument is optional; \n\raggedslides\ is equivalent to
+\begin{LVerbatim}
+ \raggedslides[1fil]
+\end{LVerbatim}
+which gives a ragged right margin, as in \LaTeX's "flushleft" environment (the
+default). On the other hand,
+\begin{LVerbatim}
+ \raggedslides[0pt]
+\end{LVerbatim}
+gives a justified margin, and
+\begin{LVerbatim}
+ \raggedslides[2em]
+\end{LVerbatim}
+gives a semi-ragged margin. Note that as a margin becomes less ragged,
+hyphenation becomes more likely and more material fits on a slide.
+
+\section{Page breaking within a slide environment\label{S-pagebreak}}
+
+A slide environment can contain more than one ``page'' of slides; \TeX\ will
+break slides into pages automatically.
+
+If the mere idea disturbs you, put the command
+\begin{LVerbatim}
+ \extraslideheight{10in}
+\end{LVerbatim}
+in your document. You can then divide slides into pages yourself by starting
+new slide environments or using the
+\begin{MD}
+ \newslide
+\end{MD}
+command within a slide environment. And you need read this section no further.
+
+If instead you use the command
+\begin{LVerbatim}
+ \extraslideheight{0pt}
+\end{LVerbatim}
+then \TeX\ will break pages the way you would expect. This is a quick and
+dirty way to break a whole paper or a long proof into slides.
+
+However, dividing material into slides is usually too delicate a matter to be
+left up to \TeX, and ultimately you will make all the page breaks yourself. On
+the other hand, automatic page breaking can still be helpful at the early
+stages, letting \TeX\ find preliminary page breaks for you.
+
+Setting the "\extraslideheight" to "0pt" doesn't give you much flexibility
+about where to put the page breaks. Of course, you can always put a page break
+earlier than the one found by \TeX, but occasionally you will prefer to let a
+slide overflow by a small amount rather than rewrite the whole slide.
+
+Therefore, by default, "seminar.sty" uses\MainIndex{\extraslideheight}%
+\begin{LVerbatim}
+ \extraslideheight{10pt}
+\end{LVerbatim}
+This adds on an extra "10pt" to the target slide height (as determined by
+"\slideheight" for landscape slides and "\slidewidth" for portrait slides)
+{\em for the purpose of page-breaking only}.
+
+If the resulting slide exceeds the slide height, you will get a message like
+\begin{LVerbatim}
+ LaTeX Error: Slide 3 overfull by 9pt.
+\end{LVerbatim}
+"seminar.sty" then tries to reduce the slide to its maximum height by
+squeezing out rubber vertical space (e.g., tightening up the interline
+spacing). If the slide is still too full, you will get another warning like:
+\begin{LVerbatim}
+ Overfull \vbox by 4.4pt while output was active.
+\end{LVerbatim}
+You can go back and look for a way to make the slide shorter, or you can
+insert a "\newslide" command to change the page-break, or you can just ignore
+these warnings.
+
+The recommended value to give in the argument of "\extraslideheight" is the
+largest length by which you might be willing to let a slide overflow.
+
+After you have decided on the page breaks, you can shut up the warnings about
+overfull slides and "\vbox"'s with
+\begin{LVerbatim}
+ \renewcommand{\slidefuzz}{1in}
+\end{LVerbatim}
+The value of \n\slidefuzz\ (which should be length, even though \n\slidefuzz\
+is an ordinary command sequence) is the threshold above which "seminar.sty"
+gives a warning about an overfull slide. The default definition is "2pt".
+
+
+\section{Margins on the page\label{S-slidemargins}}
+
+After "seminar.sty" makes a slide (or a slide page) as described above, it
+(optionally) frames the slide. This is described in Section \ref{S-frames}.
+For making and framing the slide, "seminar.sty" does not need to know anything
+about the paper you are printing on, or the margins you want. Hence, none of
+\LaTeX's standard page parameters are relevant within a slide environment.
+(However, for the sake of consistency, "seminar.sty" sets "\textwidth" to the
+width of the slide and "\textheight" to the height of the slide within a slide
+environment.)
+
+Now "seminar.sty" has to do something with the finished slide. As you read
+this User's Guide, you will find that there are various options. However,
+right now we are making slides for printing on transparencies, and so we have
+to position the slide on the transparency and add headers and footers.
+"seminar.sty" does not use \LaTeX's page parameters for this either. Instead,
+it uses the following parameters:
+\begin{center}
+ \begin{tabular}{lc}
+ {\em Parameter:} & \em Default:\\
+ \N\slideleftmargin & .5in\\
+ \N\sliderightmargin & .5in\\
+ \N\slidetopmargin & .5in\\
+ \N\slidebottommargin & .5in
+ \end{tabular}
+\end{center}
+There are commands, to be set with "\renewcommand".\footnote{The only true
+length parameters (meaning that thay should be set with "\setlength") in
+"seminar.sty" are \n\slidewidth, \n\slideheight, \n\slideframewidth,
+\n\slideframesep, \n\semin, and \n\semcm.}
+
+\begin{figure}
+\hrule height 1pt\relax
+\begin{center}
+\setlength\unitlength{.7cm}
+\begin{picture}(13,11.5)(-1,-1.5)
+\thicklines
+\put(0,0){\framebox(11,8.5){\Huge My slide}}
+\put(5.5,4.25){\fancyoval(8.5,6){}}
+
+\thinlines
+\put(0,8.65){\line(0,1){.3}}
+\put(.75,8.65){\line(0,1){.3}}
+\put(.5,8.8){\vector(1,0){.25}}
+\put(.5,8.8){\vector(-1,0){.5}}
+\put(.375,9.1){\makebox(0,0)[b]{\n\slideleftmargin}}
+
+\put(10.25,8.65){\line(0,1){.3}}
+\put(11,8.65){\line(0,1){.3}}
+\put(10.75,8.8){\vector(1,0){.25}}
+\put(10.75,8.8){\vector(-1,0){.5}}
+\put(10.625,9.1){\makebox(0,0)[b]{\n\sliderightmargin}}
+
+\put(0,-.15){\line(0,-1){.3}}
+\put(11,-.15){\line(0,-1){.3}}
+\put(5.5,-.3){\vector(1,0){5.5}}
+\put(5.5,-.3){\vector(-1,0){5.5}}
+\put(5.5,-.6){\makebox(0,0)[t]{\n\paperheight}}
+
+\put(-.15,0){\line(-1,0){.3}}
+\put(-.15,.75){\line(-1,0){.3}}
+\put(-.3,.5){\vector(0,1){.25}}
+\put(-.3,.5){\vector(0,-1){.5}}
+\put(-.6,.375){\makebox(0,0)[r]{\n\slidebottommargin}}
+
+\put(-.15,8.5){\line(-1,0){.3}}
+\put(-.15,7.75){\line(-1,0){.3}}
+\put(-.3,8){\vector(0,1){.5}}
+\put(-.3,8){\vector(0,-1){.25}}
+\put(-.6,8.125){\makebox(0,0)[r]{\n\slidetopmargin}}
+
+\put(11.15,0){\line(1,0){.3}}
+\put(11.15,8.5){\line(1,0){.3}}
+\put(11.3,4.25){\vector(0,1){4.25}}
+\put(11.3,4.25){\vector(0,-1){4.25}}
+\put(11.6,4.25){\makebox(0,0)[l]{\n\paperwidth}}
+
+\put(.75,7.75){\makebox(0,0)[bl]{Here is my header}}
+\put(10.25,7.75){\makebox(0,0)[br]{9/30/99}}
+\put(.75,.75){\makebox(0,0)[tl]{Here is my footer}}
+\put(10.25,.75){\makebox(0,0)[tr]{7-9}}
+\end{picture}
+
+\caption{Slide margins.\label{SlideMargins}}
+\end{center}
+\hrule height 1pt\relax
+\end{figure}
+
+Look at Figure \ref{SlideMargins}. Note that the headers and footers lie {\em
+inside} the top and bottom margins, respectively. The slide is then centered
+horizontally and vertically between the margins.
+
+
+\section{Magnification and lengths}
+
+"seminar.sty" changes \TeX's magnification so that the output is larger than
+when typesetting an article. This means, for example, that if you paste some
+input from a paper you are writing with \LaTeX\ into a slide, it will look
+pretty much the same in the slide, except that it is magnified. For example,
+"\vspace{.5in}" produces a space that gets bigger along with the fonts and
+everything else. Of course, it won't look identical, since "seminar.sty" uses
+its own spacing parameters and margins.
+
+\TeX's standard magnifications are in magsteps. $n$ magsteps means a
+magnification of $1.2^n$. "seminar.sty"'s default magnification is 4 magsteps,
+but you can change this with the command
+\begin{MD}
+ \slidesmag{n}
+\end{MD}
+<n> should be an integer between $-5$ and 9.
+
+As noted above, lengths grow with the magnification. For spacing, like the
+parameter "\parindent" or using "\\[2pt]" to add a little extra space between
+lines, this is great, because it is easier to think in unmagnified dimensions.
+Setting "\parindent" to ".5cm" will look the same (relative to everything
+else) whatever the magnification.
+
+However, if you want to set the unit in a "picture" environment to 1cm, {\em
+as it appears on the slide}, use
+\begin{LVerbatim}
+ \setslidelength{\unitlength}{1cm}
+\end{LVerbatim}
+"\setslidelength" is like \LaTeX's "\setlength", but it scales the size down
+so that the resulting size after magnification is, in this example, 1cm (in
+the process, it removes any stretch from rubber lengths).%
+\footnote{If you know what {\tt true} dimensions are, you may be wondering why
+they haven't been mentioned. These are not recommended because you will not be
+able to print the slides two-up or use the {\tt article} format.}
+There is also a
+\begin{MD}
+ \addtoslidelength{cmd}{len}
+\end{MD}
+command.
+
+"seminar.sty" also provides the lengths
+\begin{MD}
+ \semin\\
+ \semcm
+\end{MD}
+which are equal to an inch and a centimeter, scaled down to ``before
+magnification'' size. For example,
+\begin{LVerbatim}
+ \rule{1pt}{4\semcm}
+\end{LVerbatim}
+makes a line 4 centimeters long on the transparency,.\footnote{Suppose you
+want to use another unit, such as millimeters, instead of centimeters. Then
+try this:
+\begin{LVerbatim}
+ \newcommand{\semmm}{\semcm}
+ \renewcommand{\semcmlength}{1mm}
+ \setslidelength{\semmm}{1mm}
+\end{LVerbatim}}
+
+"\textwidth", "\textheight", "\columnwidth" and "\linewidth" all have the
+expected values in slides. (But "\slidewidth" and "\slideheight" do not.)
+Thus, this would
+\begin{LVerbatim}
+ \rule{1pt}{.5\textwidth}
+\end{LVerbatim}
+make a line that is 1/2 the width of the slide.
+
+For help getting an EPS file to be the right size, see page \pageref{EPS}.
+
+Finally, there are some parameters that "seminar.sty" scales for you, and
+hence you can (and should) set them at their magnified values (the actual size
+on transparencies):
+\begin{itemize}
+ \item "\slidewidth" and "\slideheight"
+ \item "\slideframewidth" and "\slideframesep" (see Section \ref{S-frames}).
+ \item The slide margin parameters (see Section \ref{S-slidemargins}).
+ \item The \LaTeX\ page parameters, {\em when they are set in the
+preamble}.\footnote{The \LaTeX\ page parameters are listed on page 163 of
+Lamport's {\em \LaTeX\ User's Guide and Reference Manual}. They are used for
+notes (see Section \ref{S-notes}) and the \o{article} option (see Sections
+\ref{S-twoup} and \ref{S-article}), but not for printing slides onto
+transparencies. Lamport warns that resetting page parameters in the middle of
+the document is tricky; here it is more so, because you do have to worry about
+scaling them. But you can use "\setslidelength" for this.}
+\end{itemize}
+
+Note that the warnings about overfull slides (see Section \ref{S-pagebreak})
+report unmagnified dimensions.
+
+
+\section{Font sizes}
+
+The "\slidesmag" command lets you change the magnification of your document.
+You can effectively fine tune the magnification by using the "11pt" and "12pt"
+style options. For example, instead of increasing the magnification from 4 to
+5, you can switch to the "12pt" style option. There are differences---e.g.,
+magnification affects the space you get from "\hspace{1in}"---but the fonts
+will at least be roughly the same size either way. The "11pt" option gives a
+half-step, somewhat like "\slidesmag{4.5}", if the latter were permitted.
+
+Sometimes you want to use smaller font sizes for a single slide, in order to
+fit in that little bit of extra material, or to use larger font sizes, so that
+the few things you have to say on a slide don't look too lonely. You can't
+changing the magnification in the middle of the document, but you can change
+the size of the fonts with the command
+\begin{MD}
+ \ptsize{n}
+\end{MD}
+This switches to the font sizes that are in effect when you use the "<n>pt"
+option. Actually, <n> can be 8, 9, 10, 11, 12, 14 or 17, whether you have
+"art<n>.sty" or not.
+
+
+\section{Spacing parameters\label{S-spacing}}
+
+\begin{figure}
+\hrule height 1pt
+\begin{center}
+\begin{tabular}{llc}
+{\em Command:} & {\em Initializes:} & {\em Default} \\[2pt]
+\N\slideparskip & "\parskip" & "1ex minus .2ex"\\
+\N\slideparindent & "\parindent" & "0pt"\\
+\N\slidefootnotesep & "\footnotesep" & "1.2ex"\\
+\N\slideleftmargini & "\leftmargini" & "1.8em" \\
+\N\slideleftmarginii & "\leftmarginii" & "1.4em" \\
+\N\slideleftmarginiii & "\leftmarginiii" & "1em" \\
+\N\slidelabelsep & "\labelsep" & ".5em" \\
+\N\slideitemsep & "\itemsep" & ".8ex minus .2ex" \\
+\N\slidepartopsep & "\partopsep" & "1ex minus .2ex" \\
+\N\slidestretch & "\baselinestretch" & "1.2"\\
+\N\slidearraystretch & "\arraystretch" & "1.2"
+\end{tabular}
+
+\caption{Slide spacing parameters.\label{SpacingDefaults}}
+\end{center}
+\hrule height 1pt
+\end{figure}
+
+The commands in Figure \ref{SpacingDefaults} are used to initialize some of
+the spacing parameters at the beginning of each slide environment and when
+"\ptsize" is used in a slide environment. These are spacing parameters that
+should depend on the size of fonts and that in \LaTeX's "article" style would
+be set in "art10.sty", etc. These commands should all be changed with
+"\renewcommand", even though, except for the "stretch" parameters, their
+values should be lengths.
+Note that "ex" and "em" units are used because these are the units that depend
+of font sizes.
+
+Outside a slide environment, redefine the commands on the left if you want to
+change these spacing parameters. Within a slide environment, reset the
+parameters directly, or redefine the commands on the left and then use the
+"\ptsize" command.
+
+In other \LaTeX\ styles, the extra distance between lines that is inserted
+when "\baselinestretch" exceeds 1 is eaten up by tall or deep lines. E.g., if
+the line contains a table or a large math operator, there is probably no
+extra space at all. The advantage of this system is that the distance between
+baselines does not fluctuate with every tilde. The disadvantage is that lines
+can end up too close.
+
+In "seminar.sty", on the other hand, fraction
+\begin{MD}
+ \slideskip
+\end{MD}
+of the extra space cannot be eaten, but up to fraction
+\begin{MD}
+ \slideshrink
+\end{MD}
+of this extra space that cannot be eaten can be removed if there is too much
+material on the slide. This gives you added flexibility about how much
+material to include on a slide. Both \n\slideskip\ and \n\slideshrink\ can be
+set with "\renewcommand" to a number between 0 and 1. The default value of
+\n\slideskip\ is ".75" and the default value of \n\slideshrink\ is ".25". Set
+\n\slideskip\ to "0" to revert to \LaTeX's usual behavior, as described above.
+
+For example, suppose you are using a 10pt font, \n\slidestretch\ is "1.2",
+\n\slideskip\ is ".75", and \n\slideshrink\ is ".25". The "\baselineskip" for
+a 10pt font is normally 12pt, leaving a little space between the lines. Then
+"\baselineskip" is set to
+\begin{center}
+ "\slidestretch" $\times$ "12pt" $=$ 1.2$\times$12pt $=$ 14.4pt
+\end{center}
+The extra space between lines that is inserted is thus 2.4pt, and
+\begin{center}
+ "\slideskip" $\times$ 2.4pt $=$ .75$\times$2.4pt $=$ 1.8pt
+\end{center}
+of this cannot be eaten by tall or deep lines. However, the space between
+lines can be reduced by up to
+\begin{center}
+ "\slideshrink" $\times$ 1.8pt $=$ .25$\times$1.8pt $=$ .45pt
+\end{center}
+if the slide would otherwise be too long.
+
+
+\section{Slide frames\label{S-frames}}
+
+Slides can be framed. The command
+\begin{MD}
+ \slideframe[commands]{style}
+\end{MD}
+specifies the frame style to use. Valid frame styles are "none" and "plain",
+unless you use macros that define additional styles. For example, the
+\o{fancybox} style option defines the frames "shadow", "double", "oval" and
+"Oval" (corresponding to the "\shadowbox", "\doublebox", "\ovalbox" and
+"\Ovalbox" commands defined in that style option). The \o{semcolor}
+ option defines the styles "scplain", "scdouble", and "scshadow".
+
+All the frame styles use the lengths
+\begin{MD}
+ \slideframewidth\\
+ \slideframesep
+\end{MD}
+which are the (magnified) width of the line (default 4pt) and the distance
+between the slide and the frame (default .4in), respectively.
+
+\n\slideframe's optional argument is for commands that you want to use to
+customize the slide frame style. For example:
+\begin{LVerbatim}
+ \slideframe[\setlength{shadowsize}{12pt}]{shadow}\\
+ \slideframe[\psset{fillstyle=gradient}]{scplain}
+\end{LVerbatim}
+
+If you want to build your own custom slide frame, use the command
+\begin{MD}
+ \newslideframe{style}[commands]{frame command}
+\end{MD}
+<style> is the name of the frame, "[<commands>]", which is optional, will be
+inserted before the frame command and before the <commands> given by
+"\slideframe"'s optional argument. These commands can be used to set some
+default parameter values. Then the final argument should frame "#1".
+
+For example, if "\myframe{foo}" frames "foo", and if "\myframe" uses the
+length "\baldness" as a parameter, then you might write
+\begin{LVerbatim}
+ \newslideframe{wildframe}[\setlength{\baldness}{.2cm}]%
+ {\myframe{#1}}
+\end{LVerbatim}
+You can still override the default value of "\baldness", as in
+\begin{LVerbatim}
+ \slideframe[\setlength{\baldness}{.1cm}]{wildframe}
+\end{LVerbatim}
+
+There is a starred version of \n\slideframe\ that adds the frame to previously
+specified frames.\footnote{If using color or PostScript images, note that each
+frame gets added to the background.} This can be used for special tricks. For
+example, if you are using the \o{fancybox} and \o{semcolor} options, then
+\begin{LVerbatim}
+ \newslideframe{draft}%
+ {\boxput{\rput{30}{\Huge\gray DRAFT}}{#1}}
+ \slideframe{draft}
+ \slideframe*{scdouble}
+\end{LVerbatim}
+puts the word ``DRAFT'' in the background of each slide, gray and rotated 30
+degrees, and then adds a double frame.\footnote{Use "\boxput*" to put "DRAFT"
+in the foreground. See "fancybox.doc" for details.}
+
+
+\part{Advanced Features}
+
+\section{Counters}
+
+The counter for slides is \C{slide}. The default definition of \N\theslide\ is
+"\arabic{slide}". You can use "\label" and "\ref" to cross-reference slides,
+and the page number in slide environments is set to
+\n\theslide.\footnote{However, these page or slide cross-references are not
+always accurate when you let \TeX\ break pages for you within a slide.} Thus,
+you can write, for example,
+\begin{LVerbatim}
+ See equation (\ref{foo}) on Slide \pageref{foo}.
+\end{LVerbatim}
+
+You may want some counters, such as equation counters, to be reset with each
+new slide environment or \n\newslide\ command. By default, only the "footnote"
+counter is reset this way, but you can specify your own (comma-separated) list
+of counters to be reset with the command
+\begin{MD}
+ \slidereset{list}
+\end{MD}
+If you want to reset additional counters, rather than replace the list
+entirely, use
+\begin{MD}
+ \addtoslidereset{list}
+\end{MD}
+
+There is another way in which the footnote counter gets special treatment. The
+command
+\begin{MD}
+ \theslidefootnote
+\end{MD}
+is used for the counter text instead of "\thefootnote". The default definition
+is
+\begin{LVerbatim}
+ \alph{footnote}
+\end{LVerbatim}
+
+\section{Selectively including or excluding slides}
+
+The commands
+\begin{MD}
+ \onlyslides{list}\\
+ \notslides{list}
+\end{MD}
+can be used to include or exclude only those slides in the given list. The
+argument should expand to a comma-separated list of numbers or ranges. The
+numbers do not need to be in order, the list can contain numbers that do not
+correspond to any slide, and there can be duplicate numbers. Negative numbers
+should be enclosed in curly braces. Since the argument is first expanded, you
+can use the "\ref" command in the argument. For example,
+\begin{LVerbatim}
+ \onlyslides{{-2},\ref{dp}-10,\ref{chart},0,17-999}
+\end{LVerbatim}
+is legal. If "\label{dp}" appears in slide 5 and "\label{chart}" appears in
+slide 12, this is equivalent to:
+\begin{LVerbatim}
+ \onlyslides{{-2},5-10,12,0,17-999}
+\end{LVerbatim}
+
+\section{Printing your slides two-up\label{S-twoup}}
+
+Printing your slides two-up is useful both for previewing slides and for
+making hard copies to distribute or for proofreading.
+
+One way to print your slides two-up is to include the \O{article} style
+option. This is described further below.
+
+Another way is to include the command
+\begin{MD}
+ \twoup[n]
+\end{MD}
+in the preamble. This inputs "2up.tex", which contains generic macros for
+two-up printing, and sets the parameters to values that are likely to work.
+Including the optional argument "[<n>]" increases the two-up magnification by
+$n$ magsteps. $n$ can be a positive or negative integer. If you are not able
+to get the right layout, then include the \O{2up} style option, read the
+documentation of "2up.tex", and set the parameters yourself, rather than using
+the \n\twoup\ command.
+
+The \o{article} style option is also called the article {\em format} (as
+opposed to the slides format). In the article format without the \o{portrait}
+option, the slides are centered horizontally and vertically, two to a page (if
+they fit---landscape slides do fit by default). With the portrait option, the
+slides are printed side-by-side, two to a page. In the \o{article} format, you
+can mix landscape and portrait slides with different orientations, but this
+does not work well with the \o{portrait} option.
+
+You can change the article format's magnification with
+\begin{MD}
+ \articlemag{n}
+\end{MD}
+This command works like the "\slidesmag" command (page \pageref{+slidesmag}).
+The default is
+\begin{LVerbatim}
+ \articlemag{0}
+\end{LVerbatim}
+Increase the article magnification if the slides look too lonely; decrease it
+if they are not coming out two-up.
+
+The size of the slides depends on the {\em difference} between the
+magnifications in the slides and article format. E.g., since the default
+slides magnification is 4 magsteps, the slides are scaled down in the article
+format by 4 magsteps. When you change the slides magnification with
+\n\slidesmag, you also have to change the article magnification with
+\n\articlemag\ by the same amount if you want the size of the slides in the
+article format to remain the same. However, when the article magnification in
+magsteps is negative , you will be using non-standard font magnifications
+(which will produce terrible results if you cannot generate the needed
+fonts---see Appendix \ref{bitmaps} for advice).
+
+Whether or not landscape slides (or rotated portrait slides) come out two-up
+in the article format without the \o{portrait} option depends on (i) the
+difference between the slides and article magnification, (ii) the values of
+\n\slidewidth\ and \n\slideheight\, (iii) the size of the slide frame, and
+(iv) the article format's page parameters. With the default values of
+(ii)--(iv), the slides will still come out two-up if you change the difference
+between the slides and article magnification to 3 (e.g., increase the value of
+\n\articlemag\ by 1). Try this if you want the slides to be larger.
+
+If you use the \o{article} option {\em and} the \n\twoup\ command, then your
+slides should be printed four-up!
+
+You will notice labels on the side or bottom of each slide in the \o{article}
+format. The command
+\begin{MD}
+ \slidestyle{style}
+\end{MD}
+determines where these labels go. There are three predefined slide styles:
+\begin{description}
+\item[\tt empty] No captions or labels are used.
+\item[\tt left] The labels go on the left of each slide (the default when the
+\o{portrait} option is not used).
+\item[\tt bottom] The labels go on the bottom (the default with the
+\o{portrait} option).
+\end{description}
+The label you get is the value of \N\slidelabel. The default definition of
+\n\slidelabel\ is
+\begin{LVerbatim}
+ \bf Slide \theslide
+\end{LVerbatim}
+
+\section{Notes\label{S-notes}}
+
+In addition to slides, you can include a few comments following each slide to
+remind you of what to say, or even the entire text of your presentation for
+your own benefit or to be distributed to others. These comments or text,
+referred to in this documentation as ``notes'', do not go inside any special
+environment. However, a slide cannot go in the middle of a paragraph of notes.
+
+To include notes this way, you have to use one of the following style options,
+which determine what is printed:
+\begin{quote}
+ \begin{tabular}{ll}
+ \O{slidesonly} & Only the slides are printed.\\
+ \O{notes} & Both notes and slides are printed.\\
+ \O{notesonly} & Only the notes are printed.\\
+ \end{tabular}
+\end{quote}
+These style options are referred to as {\em selections} in this documentation.
+
+The pages of notes following slide 5 are numbered 5.1, 5.2, etc.
+
+You can use the "portrait" option to print out your notes, even if you don't
+use this option when printing the slides.
+
+With the "notesonly" selection, the slides are not printed, but they are
+processed. This means that one can still refer in the notes to slides or to
+equations in slides.
+
+The fact that various spacing parameters are initialized at the beginning of
+each slide (see Section \ref{S-spacing}) means that when you reset these
+parameters outside a slide environment, only the notes are affected. This lets
+you use different values for notes and slides. The command \N\slidefonts\ can
+be used for any special font commands that should apply only to slides. Also,
+the command \N\everyslide\ is executed at the beginning of every slide, and
+you can use this for any other customizations you want to include.
+
+You can also use the "11pt" or "12pt" style option for your notes, without
+changing the size of the fonts in the slides, by using the "\ptsize" command
+to set the font sizes for slides. For example, suppose that the "12pt"
+document style option is used, but the preamble contains the command
+\begin{LVerbatim}
+ \ptsize{11}
+\end{LVerbatim}
+and the second slide begins with the command
+\begin{LVerbatim}
+ \ptsize{9}
+\end{LVerbatim}
+Then the notes use the "12pt" font size declarations, all the slides but the
+second one use the "11pt" font size declarations, and the second slide uses
+the "9pt" font size declarations.
+
+Notes are typeset using \LaTeX's standard output routines, and \LaTeX's
+standard page parameters.
+
+ Finally, it is even possible to use a different page style for notes and
+slides. The page style for notes is set by the "\pagestyle" and
+"\thispagestyle" commands. The command
+\begin{MD}
+ \slidepagestyle{style}
+\end{MD}
+sets a different page style for the slides. If the argument is empty, then the
+page style for slides reverts to the one for notes.\footnote{There is no
+"\thisslidepagestyle" command.}
+
+With the command
+\begin{MD}
+ \onlynotestoo
+\end{MD}
+the "\onlyslides" and "\notslides" commands apply to the notes as well.
+
+
+\section{How notes are omitted\label{omit}}
+
+In the previous section, it was stated that notes are not enclosed in a
+special environment. "seminar.sty" omits notes using special
+macros\footnote{Defined in {\tt xcomment.sty}} that comment out everything
+{\em outside} the slide environments (and a few other environments mentioned
+below). Global declarations that should be processed even when slides are
+omitted go in \e{allversions*} environments, described below.
+
+"seminar.sty" also let you use a more conventional approach to notes. If you
+put the command
+\begin{MD}
+ \noxcomment
+\end{MD}
+in the preamble, then the notes go inside \E{note} environments, and you can
+put all the global declarations outside any environment. "xcomment.sty" is
+used to make \e{note} a comment environment when note should be omitted, and
+otherwise the \e{note} environment does nothing. This mode of operation is
+more robust than omitting everything outside the slide environments, but
+remembering to insert the
+\begin{LVerbatim}
+ \begin{note} ... \end{note}
+\end{LVerbatim}
+is more tedious.
+
+Here are a few technicalities that have to do with "xcomment.sty" and that
+apply whether or not you use \n\noxcomment.
+\begin{enumerate}
+\item The text that follows the beginning of a slide environment (when not
+using \n\noxcomment) or the end of a \e{note} environment {\em must have
+balanced curly braces}.
+\item "\input" and "\include" commands are followed, even when found in
+omitted notes, but you must use the \LaTeX\ syntax "\input{<file>}" (as
+opposed to \verb*+\input <file> +), and the inputted file must end with
+"\endinput" (this is a good practice anyway).
+\item In omitted text, "%" is still a comment character (hence it is possible
+to comment out a slide or note environment).
+\item A temporary file, "\jobname.tmp", is created (this is of no
+consequence---just in case you wanted to know where it comes from).
+\end{enumerate}
+
+The rest of this section deals with special considerations when omitting
+everything outside the slide environments.
+
+If you might want to make a global change to one of the slide parameters after
+the document preamble, you cannot include it in a slide environment because
+the change will be local, and you cannot include it in the notes because the
+change won't be processed when the notes are omitted.
+
+To get around this problem, an environment \E{allversions*} is provided. It is
+processed even when notes are omitted, and any parameter changes or command
+definitions made within the environment are global. Don't generate any output
+within this environment.
+
+On a rare occasion you might want to include some text that should be typeset
+even when the other notes are omitted (e.g., a list of the slides, or a cover
+page). The \E{allversions} environment is provided for this purpose.
+
+If you do any serious hacking, you might want to add to the list of
+environments that should be included with the "slidesonly" selection. Do this
+with the command
+\begin{MD}
+ \addtoslidelist{list}
+\end{MD}
+where <list> is a comma separated list of environments, without spaces.
+
+\section{The article format\label{S-article}}
+
+The \o{article} style option was described in Section \ref{S-twoup} as a way
+to print your slides two-up. This option is also a good way to print your
+notes.
+
+The \o{article} option gets its name because your document is typeset somewhat
+like it would be with \LaTeX's "article" style. (It uses \LaTeX's standard
+page parameters, but some of the default values are different.) It is also
+called the article {\em format}; the slides format is what you get without the
+\o{article} option.
+
+You probably don't want to use the \o{portrait} style option with the
+\o{article} format except when you are only printing portrait slides. But you
+are welcome to experiment.
+
+With the \o{notesonly} selection, you can make the notes as big as you want
+using the \n\articlemag\ command (e.g., for easy reading while giving a
+presentation). Just as in the \o{slides} format, the page parameters are
+scaled at the beginning of the document so that they can be set with their
+true dimensions in the preamble.
+
+The commands
+\begin{MD}
+ \setartlength{cmd}{len}\\
+ \addtoartlength{cmd}{len}
+\end{MD}
+are analogous to "\setslidelength" and "\addtoslidelength", but they scale the
+lengths so that they end up at the specified size after magnification in the
+"article" format. You never would use such a command in slide environments or
+to set slide parameters, but you might use these in the notes if you were
+planning on typesetting your notes with the "article" format rather than the
+"slides" format.
+
+You can change the placement of slides in the \o{article} format using the
+\begin{MD}
+ \slideplacement{name}
+\end{MD}
+command. Here are the valid placement names:
+\begin{description}
+ \item[float] The slides are floated. This is the default with the \o{notes}
+selection and the \o{portrait} option.
+ \item[float*] Like "float", but if the notes are printed in a two-column
+format the slides extend across both columns (e.g., like "table" versus
+"table*"). This is the default with the \o{notes} selection without the
+\o{portrait} option.
+ \item[onepercol] Each slide is centered horizontally and vertically within a
+single column. This is the default when only slides are printed and the
+\o{portrait} option is used.
+ \item[twopercol] Each slide is centered horizontally, two or one per column,
+depending on how many fit. This is the default when only slides are printed
+and the \o{portrait} option is not used.
+ \item[here] Each slide is centered horizontally, separated from adjoining
+text or other slides by the rubber length \N\slidesep. The default value of
+\n\slidesep\ is "\intextskip". This is useful with the \o{notes} selection
+when you want the slides to precede accompanying comments and when you do not
+mind large spaces at the bottom of pages.
+ \item[here*] This is like "here*", but with "here*" the length \n\slidesep\
+is not lost when it falls at the beginning of a page or after a slide.
+\end{description}
+
+If you want each slide environment to begin a new page (with any of the
+selections), put the command
+\begin{MD}
+ \slideclearpagetrue
+\end{MD}
+in the preamble.
+
+The \o{notesonly} selection has a starred version, \O{notesonly*}, which
+produces a slide marker for each slide environment, like this one:
+\begin{center}
+\leavevmode
+\vbox{%
+\hrule height 1pt
+\kern 8pt
+\hbox to \linewidth{\hss \LARGE\bf Slide 4 \hss}%
+\kern 8pt
+\hrule height 1pt}
+\end{center}
+
+
+Commands that are irrelevant in the "article" format are simply ignored. The
+idea is that it should be possible to switch back and forth between the two
+formats without making any other changes in the document. However, this is not
+entirely possible. Changing "\parindent" or "\textwidth" in the preamble
+affects both formats. You can get around this using the \n\ifarticle\
+conditional. For example,
+\begin{LVerbatim}
+ \ifarticle
+ blah blah
+ \else
+ blee blee
+ \fi
+\end{LVerbatim}
+The "\else" part is optional.
+
+
+\section{Page styles}
+
+The page styles "empty", "plain", "headings" and "myheadings" work like in
+\LaTeX's article style. There is also a page style "align" which puts "+"
+signs in the corners, like in \SliTeX.\footnote{See question \ref{Pagestyle}
+in Section \ref{tips} for suggestions on defining new page styles.} You can
+change the size of the fonts used in headers and footers in the slides format
+by setting the commands
+\begin{MD}
+ \slideheadfont\\
+ \slidefootfont
+\end{MD}
+to the desired size, using "\renewcommand" (but any explicit font declarations
+in a page style override these commands). The default definition of these
+commands is "\scriptsize".
+
+
+\section{Other style options\label{options}}
+
+The style options described so far, "portrait", "article", "slidesonly",
+"notes", and "notesonly", were designed specifically for "seminar.sty". There
+are other such style options described elsewhere in this documentation:
+"semrot" (page \pageref{o+semrot}), \o{semlayer} (page \pageref{o+semlayer}).
+\o{semcolor} (page \pageref{o+semcolor}), "semhelv" (page
+\pageref{o+semhelv}), "semlcmss" (page \pageref{o+semlcmss}), and "a4" (page
+\pageref{o+a4}).
+
+Here are two more style options that are part of the "seminar.sty" package,
+but that can be used with other document styles:
+\begin{description}
+\item[fancybox] "fancybox.sty" is specific to slides, but it contains commands
+and documentation that are useful for making slides.
+
+\item[slidesec] This sets up some sectioning/heading commands for slides, and
+lets you print a list of slides or a table of contents. See the file
+"slidesec.sty" for details.
+\end{description}
+
+It is impossible to predict, much less describe, the consequences of using all
+the other available \LaTeX{} style option with each selection and format.
+Since this document style is an extension of \LaTeX's "article" style, style
+options and commands that do not work with \SliTeX{} may well work here. Just
+about any style option that works with \LaTeX's "article" style will work with
+the "article" format. When unsure of the effect of an option, just try it and
+see for yourself what happens.
+
+\section{Overlays\label{S-overlays}}
+
+For overlays, you must use both the \O{semlayer} and \o{semcolor} style
+options (see page \pageref{o+semcolor}).
+
+Overlays have two purposes. First, you can use overlays to gradually add
+layers of information on a slide during a presentation. Second, you can use
+overlays to make color layers; each layer is printed in black-on-white on
+paper, and then you use some kind of color copying service to put each layer
+on a transparency in a different color. This is not nearly as nice as having a
+color printer or using a color printing service, but it's the next best thing.
+
+"seminar.sty" lets you make both types of overlays (and the main slide) from a
+single slide environment. The command\footnote{You can also write
+\begin{Ex}
+ "\begin{overlay}{<n>}" $\ldots$ "\end{overlay}"
+\end{Ex}}
+\begin{MD}
+ \overlay{n}
+\end{MD}
+puts whatever is in its scope (\TeX\ group) on overlay $n$, where
+$n=0,\ldots,9$. Actually, overlay 0 refers to the main slide, but you might
+use "\overlay{0}" because overlay commands can be nested. As implemented by
+the "semcolor" style option, these overlay commands can be used just about
+anywhere, including in math mode, tables, and around an included graphics file
+(if it is a conforming EPS file, at least). Also, it is all right to use
+non-consecutive overlay numbers.
+
+For color layers, you have to start by defining some colors using the command
+\begin{MD}
+ \colorlayers{colors}
+\end{MD}
+<colors> should be a comma separated list of color names, without spaces, as
+in
+\begin{LVerbatim}
+ \colorlayers{red,green,blue}
+\end{LVerbatim}
+Then you can use the command "\red" just like the command \n\overlay"{<n>}";
+everything in its scope goes on a red color layer.
+
+The "\colorlayers" command obeys the usual rules on scope. You can use this
+command any time, including in a slide environment. The command is cumulative,
+meaning that previously defined color layers continue to exist. The command
+was purposely defined so that it does not complain when a color name is
+already defined; this makes it easier to switch from some other color system
+to a layer system. However, you should be careful not to inadvertently
+redefine some command that you need. Fortunately, there are no \TeX{}
+primitives whose names are the names of colors.
+
+When you print out the slides, the main slide is printed, followed by each of
+the color layers (if any) for the main slide. Then each of the overlays is
+printed, together with each of its color layers. Only overlays or color layers
+that are actually used (i.e., that are not empty) are printed.
+
+You can turn overlays and color layers on and off with the commands
+\begin{MD}
+ \overlaystrue\\
+ \overlaysfalse\\
+ \layerstrue\\
+ \layersfalse
+\end{MD}
+These commands can be used at any time, and they obey the usual scoping rules.
+The default is for overlays to be active in the "slides" format and suppressed
+in the "article" format.
+
+The counter \C{overlay} keeps track of the overlays. The default definition of
+\N\theoverlay\ is:
+\begin{LVerbatim}
+ \theslide-\alph{overlay}
+\end{LVerbatim}
+Overlays can be cross-referenced.
+
+The command \N\currlayer\ is set to the name of the current color layer.
+\N\thelayer\ makes a label for layers; its default definition is:
+\begin{LVerbatim}
+ \theoverlay-\currlayer
+\end{LVerbatim}
+Color layers cannot be cross-referenced.
+
+For example, if slide 7 has overlays 1 and 2 and colors "red" and "green",
+then the main slide is numbered 7, followed by layers 7-red and 7-green,
+followed by overlay 7-a, followed by layers 7-a-red and 7-a-green, followed by
+overlay 7-b, followed by layers 7-b-red and 7-b-green.
+
+The caption used in the slide styles is \n\overlaylabel\ for overlays and
+\N\layerlabel\ for layers. The defaults are, respectively,
+\begin{LVerbatim}
+ \bf Overlay \theoverlay
+ \bf Layer \thelayer
+\end{LVerbatim}
+
+By default the overlays and layers use the same page styles in the "slides"
+format as their ``owner.'' You can specify special page styles with the
+commands:
+\begin{MD}
+ \overlaypagestyle{style}\\
+ \layerpagestyle{style}
+\end{MD}
+
+Finally, by default the overlays and layers use the same frame style as their
+``owner.'' You can specify special frame styles with the commands:
+\begin{MD}
+ \overlayframe[commands]{style}\\
+ \layerframe[commands]{style}
+\end{MD}
+
+
+\part{Help\label{Help}}
+
+Road map:
+\begin{itemize}
+ \item If you just want to figure out how to do something, check Section
+\ref{tips}, ``Tips and tricks.''
+ \item If you are trying to decipher an error message, check Section
+\ref{errors}, ``Errors.''
+ \item If you are trying to solve some system-dependent problem that has
+arisen, check Section \ref{trouble}, ``Troubleshooting.''
+ \item To convert \SliTeX\ files, see Section \ref{slitex}, ``Converting
+\SliTeX\ files''.
+\end{itemize}
+
+\section{Tips and tricks\label{tips}}
+
+\faq{How can I fit more material in the slides?}
+
+Or alternatively, make the little material you have fill up the slide.
+
+Let us count the ways:
+\begin{enumerate}
+\item Change the magnification with \n\slidesmag"{<n>}" (affects all the
+slides).
+\item Change the height and/or width of one or all the slides.
+\item Use "\ptsize{<n>}".
+\item Change \n\slidestretch.
+\item Use the \n\raggedslides\ command, which changes the propensity to
+hyphenate.
+\end{enumerate}
+
+\faq{How do I include an Encapsulated PostScript figure?\label{EPS}}
+
+The only thing tricky about including EPS files is getting the size right. For
+example, suppose the you want to include a postscript file in a slide using
+the "epsf.sty" macros, and you want it to be 6 inches wide. Then this will do
+the trick:
+\begin{LVerbatim}
+ \setslidelength{\epsfxsize}{6in}
+ \epsffile{mypic.eps}
+\end{LVerbatim}
+
+If you include the command
+\begin{MD}
+ \espfslidesize
+\end{MD}
+(e.g., in the preamble), then "epsf.sty" will take care of scaling the size
+for you, and so you can just set "\epsfxsize" and "\epsfysize" to their
+magnified sizes (using "\setlength" rather than "\setslidelength"). Or you can
+not set these parameters at all, and then the eps file appears at its natural
+size on the slide.
+
+Either way, this will have the expected effect:
+\begin{LVerbatim}
+ \setlength{\epsfysize}{.8\textheight}
+ \epsffile{mypic.eps}
+\end{LVerbatim}
+
+"psfig.tex" does not handle magnification properly. By using magnified
+dimensions, without "\setslidelength", as in
+\begin{LVerbatim}
+ \psfig{file=mypic.eps,width=6in}
+\end{LVerbatim}
+the picture should appear correctly within a slide, but then it will not scale
+properly if you try to use the \o{article} option or the \n\twoup\ command.
+The solution, if using Rokicki's "dvips", is to use "epsf.sty" (written by the
+man himself).
+
+\faq{How can I print just selected overlays, layers or pages of notes in the
+{\tt slides} format?}
+
+The "\onlyslides" and "\notslides" commands affect only slides. If a slide is
+omitted, so are all its overlays and color layers. To be more selective, you
+have to use your dvi driver to select the pages to be printed.
+
+In the "slides" format, the page numbers recognized by dvi drivers correspond
+to the numbers of the slides. This means that a slide and all the overlays,
+layers and notes that correspond to that slide have the same page number. Some
+drivers allow one to select occurrence $n$ of a page number. E.g., with
+"dvips",
+\begin{LVerbatim}
+ dvips -p2.1 -l2.4 myslides
+\end{LVerbatim}
+will print the first through fourth page of overlays or notes that follow
+slide 2.
+
+If your dvi driver does not support such selection, and you would prefer that
+the driver recognize physical page numbers, then put the command
+\N\truepagenumbers\ in the preamble.
+
+
+\faq{How do I define custom page styles?}
+\label{Pagestyle}
+
+There is nothing special about defining new page styles in "seminar.sty".
+However, to make it easier to do this in the preamble, the commands
+\begin{MD}
+ \newpagestyle{style}{header}{footer}\\
+ \renewpagestyle{style}{header}{footer}
+\end{MD}
+are provided.\footnote{%
+ You can also use the macros in "fancyheadings.sty", which is available from
+various archives. However, you have to set the pagestyle {\em after}
+"\begin{document}".
+Otherwise, the dimensions get screwed up. If using the \o{slidesonly}
+selection, then you also need to enclose the "\pagestyle" command in
+an \e{allversions*} environment. E.g.,
+\begin{LVerbatim}
+ \begin{allversions*}
+ \pagestyle{fancy}
+ \end{allversions*}
+\end{LVerbatim}}
+
+<style> is the name of the page style, and <header> is the header, and
+<footer> is the footer. These can only be used for simple page styles that are
+the same for odd and even pages, and that do not do anything special with
+section marks.
+
+Headers and footers are set in an "\hbox" the width of the page
+("\textwidth"). You can use stretchable space such as "\hspace*{\fill}" or
+"\hfil" to center some information or put it flush against the margins. See
+the definitions of page styles in "latex.tex" and "article.sty" for examples.
+
+Here is an example: Professor Starr wants lots of information in the headers
+and footers for the slides, and so she defines the page style
+"mypagestyle":\footnote{{\tt\string\thedate} is set with the {\tt\string\date}
+command.}
+\begin{LVerbatim}
+ \newpagestyle{mypagestyle}%
+ {\sl Big U \hfil \thedate \hfil \thepage}%
+ {\hfil File \jobname.tex; printed \today\hfil}
+\end{LVerbatim}
+Prof.\ Starr wants to use the standard "headings" page style for notes and the
+"mypagestyle" page style for slides, and she wants overlays to just have the
+overlay number. Therefore, she defines another page style for the overlays:
+\begin{LVerbatim}
+ \newpagestyle{myoverlays}{\hfil \thepage}{}
+\end{LVerbatim}
+and she puts
+\begin{LVerbatim}
+ \pagestyle{headings}
+ \slidepagestyle{mypagestyle}
+ \overlaypagestyle{myoverlays}
+\end{LVerbatim}
+in the preamble.
+
+\faq{How do I change a parameter only for the {\tt slides} format?}
+\label{conditionals}
+
+The conditionals
+\begin{MD}
+ \ifarticle\ $\ldots$ "\else" $\ldots$ "\fi"\\
+ \ifslidesonly\ $\ldots$ "\else" $\ldots$ "\fi"\\
+ \ifnotes\ $\ldots$ "\else" $\ldots$ "\fi"\\
+ \ifnotesonly\ $\ldots$ "\else" $\ldots$ "\fi"\\
+ \ifportrait\ $\ldots$ "\else" $\ldots$ "\fi"
+\end{MD}
+allow one to select for what versions material is to be processed. "\ifnotes"
+is true if and only if the "notes" selection is in effect, and so on. The
+"\else" clause is optional. See {\em The \TeX book}, Chapter 20, for more
+information about using conditionals.
+
+For example, the first line below sets the slide rotation to "right" in the
+"article" format only. The second line changes the page style for the "notes"
+and "notesonly" selections and "article" format:
+\begin{LVerbatim}
+ \ifarticle\sliderotation{right}\fi
+ \ifarticle\ifslidesonly\else\pagestyle{myheadings}\fi\fi
+\end{LVerbatim}
+
+\faq{Why does extra space get inserted at the top of a slide when I begin the
+slide with a color or overlay command (when using the \o{semcolor} option)?}
+
+Color and overlay commands with the "semcolor" option use "\special"'s. \TeX{}
+adds the space "\parskip" between the "\special"'s and the first material in
+the slide.
+
+Here is the workaround: If that material is an ordinary paragraph, put the
+command "\leavevmode" just after the color or overlay command. In other cases,
+if you are sure this is the problem, put "\vskip-\parskip" just before the
+color or overlay command.
+
+\section{Errors\label{errors}}
+
+There are several errors that identify themselves as being from "seminar.sty",
+but the error messages are so self-explanatory that that there is no need to
+describe them here. Instead, this section explains a few especially cryptic
+\TeX{} error messages that can arise when using "seminar.sty". These errors
+may also arise for reasons that are not particular to the "seminar.sty"
+macros. See your favorite \TeX{} and \LaTeX{} manuals for more help in
+debugging your documents.
+
+\error"! File ended while scanning use of \next."
+
+You are missing an "\end{document}" on the main file or an "\endinput" on a
+file that is input.
+
+
+\error"! File ended within \read."
+
+You may have an unmatched curly brace following "\begin{slide}" on the same
+line. See Section \ref{omit}.
+
+
+\error"! Paragraph ended before \begin@slide was complete."
+
+You have not specified the optional argument for the "slide" or "slide*"
+environment correctly (see Section \ref{slidedim}), or the first character in
+a slide environment is a "[" (put a pair "{}" of braces before the "[").
+
+\section{Troubleshooting\label{trouble}}
+\setcounter{faq}{0}
+
+\faq{A few slides do not come out two-up with the \o{article} option.}
+
+First, read Section \ref{S-twoup} carefully. If the slides still do not come
+out twoup, it might be that there is extraneous output between the slides. Try
+putting the commands
+\begin{LVerbatim}
+ \slideplacement{here*}
+ \setlength{\slidesep}{8pt plus 1fill}
+\end{LVerbatim}
+in the preamble ("8pt" should be one-half the minimum distance between
+slides). If this solves the problem, look for the extraneous output, or just
+leave those commands in the preamble.
+
+
+\faq{What kind of incompatibilities are there between {\tt seminar.sty} and
+other macros?}
+
+Of course, whenever you load macros that are not part of the standard \LaTeX{}
+distribution and that were not designed to work with "seminar.sty", problems
+may arise because of name conflicts. What are listed here are changes made to
+\LaTeX{} commands that may conflict with other macros that also redefine these
+command. The problems listed here are very unlikely to occur, however, unless
+you have a habit of seriously hacking the standard \LaTeX{} macro files.
+
+\begin{enumerate}
+\item This style modifies the definitions of the \LaTeX{} primitive
+"\document". It generally will not be upset by, nor will it void,
+modifications to "\document" made before "seminar.sty" is input. However,
+subsequent modifications of "\document" may cause problems.
+
+\item "xcomment.sty", which is input by "seminar.sty" with the "slidesonly"
+selection, modifies the definition of "\end" within included environments.
+This is generally compatible with modifications to "\end" made outside
+environments, but may conflict with modifications to "\end" made inside
+environments.
+\end{enumerate}
+
+\faq{Why are the landscape slides displayed sideways and the portrait slides
+displayed upside down on my previewer?}
+
+This document style makes frequent use of landscape mode. Some DVI-to-PS
+converters, such as older versions of Rokicki's "dvips", use their own
+PostScript macros to print a landscape document, rather than simply
+instructing PostScript to use landscape mode.
+If the PostScript output of such a converter is viewed using a PostScript
+previewer that does not allow you to choose the orientation of the display,
+the output will be positioned correctly on the page, but the page will always
+be displayed in portrait mode. When viewing slides without the "portrait"
+option, the landscape slides will be sideways, and the portrait slides will be
+upside-down!
+
+There is nothing this style can do to coerce the page to be displayed in
+landscape mode. There are various ways to minimize neck strain, however:
+\begin{enumerate}
+\item The direction in which the portrait slides are rotated can be reversed,
+so that they end up right-side-up. Just put
+\begin{LVerbatim}
+ \sliderotation{right}
+\end{LVerbatim}
+before the beginning of the document (assuming that you are using rotation
+macros).
+\item You can also get the portrait slides to be displayed right-side-up by
+using the "portrait" style option (Section \ref{options}).
+\item In the "article" format, the document is typeset in portrait mode
+(unless the "portrait" option is used), and so the landscape slides are
+right-side-up. You can use this format when composing and proof-reading the
+slides.
+\end{enumerate}
+
+\faq{Why is my dvi driver soooo slow?}
+
+Probably it cannot find the right font bitmaps, and so it is either
+automatically generating new ones, or it is scaling the ones it can find.
+Either way, as long as you can somehow generate the missing font bitmaps, this
+problem is transitory. See Appendix \ref{bitmaps} for details.
+
+\faq{Why does \TeX{} complain about missing circle fonts?}
+
+Older versions of the NFSS use the names "circle10" and "circlew10" for the
+\LaTeX circle fonts, instead of the otherwise standard names "lcircle10" and
+"lcirclew10". You can copy your ".pk" and ".tfm" files to the new names, or
+get a new version of the NFSS.
+
+\section{Converting \SliTeX\ files}\label{slitex}
+
+"seminar.sty" can do everything \SliTeX\ can do, and much
+more\footnote{However, color layers and overlays require PSTricks and a
+PostScript printer.} Here is a brief and incomplete description of how to do
+with "seminar.sty" what you can do with \SliTeX, and how to convert \SliTeX\
+files.
+
+\begin{itemize}
+ \item Use "seminar" as your document style, instead of "slides".
+
+ \item Run \LaTeX\ or \AmS-\LaTeX, instead of \SliTeX.
+
+ \item With "seminar.sty", the preamble and slides can all go in the same
+file.
+
+ \item The default in "seminar.sty" is to get landscape slides. If you want
+to convert a \SliTeX\ file containing portrait slides, add the "portrait"
+style option, and replace your "slide" environments by "slide*" environments.
+
+ \item With "seminar.sty", notes do not need to go in a separate environment.
+To convert a \SliTeX\ file containing "note" environments, define a note
+environment that does nothing:
+\begin{LVerbatim}
+ \newenvironment{note}{}{}
+\end{LVerbatim}
+
+ \item For color layers:
+ \begin{itemize}
+ \item Use the "\colorlayers" command instead of the "\colors" command.
+ \item Delete the argument to the "slide" and "slide*" environments that
+lists the color layers.
+ \item Include the \o{semlayer} style option.
+ \end{itemize}
+
+ \item "seminar.sty" does not use separate environments for overlays:
+ \begin{itemize}
+ \item Remove the "overlay" environments.
+ \item Replace "\invisible" commands by "\overlay{1}", "\overlay{2}", etc.
+ \item Include the \o{semlayer} style option.
+ \end{itemize}
+
+ \item To actually produce the overlays and color layers, you have to have
+PSTricks and a PostScript printer, and you must include the \o{semcolor} style
+option.
+
+ \item Use \n\onlyslides"{<list>}" and \n\onlynotestoo\ instead of
+"\onlynotes".
+\end{itemize}
+
+
+\begingroup
+\def\addcontentsline#1#2#3{}%
+\def\thepart{Appendices:}
+\part{Configuration}
+\endgroup
+\begingroup
+\def\thepart{}
+\addcontentsline{toc}{part}{Appendices:\hspace{1em}Configuration}
+\endgroup
+\appendix
+
+Before reading this appendix, you should follow the installation instructions
+in the file "sem-read.me" that is distributed with "seminar.sty".
+
+\section{The short story about fonts}\label{short-fonts}
+
+"seminar.sty" is a \LaTeX{} style, and you can use whatever fonts that are
+compatible with \LaTeX\ (or \AmS-\LaTeX). However, you are likely to want to
+use special fonts with "seminar.sty"; see Appendix \ref{fonts} for help.
+Furthermore, you are likely to want to use fonts in sizes that are larger than
+the standard sizes; see Appendix \ref{bitmaps} for help.
+
+But if you don't want to read these appendices, you can just use whatever
+\LaTeX\ fonts you know how to use (e.g., the standard Computer Modern fonts).
+To be sure you need only standard font magnifications:\footnote{This is not a
+consideration if you are using only PostScript or other scalable fonts.}
+\begin{itemize}\label{font-res}
+ \item Don't use the "11pt" or "12pt" style options (or the \n\ptsize{}
+command).
+ \item Don't change the document magnification (or only use 0--4 magsteps).
+ \item Don't use any font size larger than "\large".
+ \item Don't use the \n\twoup\ command.
+\end{itemize}
+
+\section{Choosing fonts\label{fonts}}
+
+So that you can use different fonts for the notes and the slides (if you
+want), the command "\slidefonts" is invoked at the beginning of every slide
+environment. Define it to set up any special fonts for the slides.
+
+Here are the font configurations that come ready-to-use with "seminar.sty".
+You might also use these as a starting point for your own configurations.
+\begin{enumerate}
+\item You can just use the regular old Computer Modern fonts that you probably
+grew up on. For this, you don't have to do anything at all. Ain't that easy?
+But see the next section about font bitmaps.
+
+\item The \O{semhelv} style option sets up the PostScript Helvetica text fonts
+for the slides. The Computer Modern fonts are still used for math and for the
+notes with the \o{article} format. You need a PostScript printer, a dvi-to-ps
+driver that supports PostScript fonts (e.g., Rokicki's "dvips"), and the New
+Font Selection Scheme. You should also check the font file names used in
+"semhelv.sty", and change them if necessary to match the names on your system.
+
+This combination of fonts is highly recommended because sans serif fonts look
+good for slides, Helvetica is a resident font in just about all PostScript
+printers, and the fonts are scalable and thus there is no problem of needing
+new bitmaps.
+
+\item The \O{semlcmss} style option sets up the \SliTeX\ sans serif fonts for
+the slides, and uses the Computer Modern fonts for notes with the \o{article}
+format. The \SliTeX\ fonts are ugly, but they might be the only usable sans
+serif font you have on your system and you are really dying for that kind of
+font. Also, they usually come ready for printing magnified documents, and so
+you won't need too many new font bitmaps. You must have the New Font Selection
+Scheme. "semlcmss" uses
+\begin{LVerbatim}
+ \slidesmag{4}
+ \ptsize{10}
+\end{LVerbatim}
+Deviating from this will increase the need for new font bitmaps.
+\end{enumerate}
+
+The New Font Selection Scheme (NFSS) mentioned above is a macro package for
+\LaTeX{} that greatly simplifies using non-standard fonts. The NFSS was
+written by Frank Mittelbach and Rainer Sch\"opf, and is available from various
+archives, including:
+\begin{center}
+"ftp.uni-stuttgart.de"
+\end{center}
+It is far easier to take the 10 minutes or so that are required (in theory, at
+least) to install the NFSS, than it is to try to muck around with \LaTeX's
+font primitives.
+
+
+\section{Font bitmaps\label{bitmaps}}
+
+If you are only using PostScript or other scalable fonts, or if you obey the
+restrictions listed on page \pageref{font-res}, then you can ignores this
+appendix.
+
+To use "seminar.sty", you may need font bitmap sizes that are not currently
+found on your system. This section describes how to avoid this and what to do
+about it. First, a few paragraphs about magnification and font bitmaps.
+
+\TeX's Metafont fonts are designed for a type size, such as 5pt. Most font
+families are available at least in the sizes 5pt, 6pt, 7pt, 8pt, 9pt and 10pt.
+Some are also available in the sizes 12pt and 17pt (and others), but often any
+size above 10pt is obtained by scaling the 10pt fonts. Table \ref{font-mag}
+lists the possible magnifications for fonts, depending on which option you are
+using ("10pt", "11pt" or "12pt"), and depending on the \LaTeX{} type size
+declaration that is in effect (e.g., "\small"). The magnifications are given
+in magsteps, which is \TeX's standard unit for font magnifications. $n$
+magsteps means a magnification of $1.2^n$.
+
+\begin{table}
+\hrule height 1pt\relax
+\begin{center}
+\begin{tabular}{l|c|c|c|}
+\multicolumn{1}{l}{size} &
+\multicolumn{1}{c}{default (10pt)} &
+ \multicolumn{1}{c}{11pt option} &
+ \multicolumn{1}{c}{12pt option}\\
+\cline{2-4} "\tiny" & 0 & 0 & 0\\
+\cline{2-4} "\scriptsize" & 0 & 0 & 0\\
+\cline{2-4} "\footnotesize" & 0 & 0 & 0 \\
+\cline{2-4} "\small" & 0 & 0 & 1/2 \\
+\cline{2-4} "\normalsize" & 0 & 1/2 & 1 \\
+\cline{2-4} "\large" & 1 & 1 & 2 \\
+\cline{2-4} "\Large" & 2 & 2 & 3 \\
+\cline{2-4} "\LARGE" & 3 & 3 & 4\\
+\cline{2-4} "\huge" & 4 & 4 & 5\\
+\cline{2-4} "\Huge" & 5 & 5 & 5\\
+\cline{2-4}
+\end{tabular}
+
+\caption{Font magnification in magsteps ($n$ means a magnification of $1.2^n$)
+for a font that is available in 5pt, 6pt, 7pt, 8pt, 9pt and 10pt
+sizes.\label{font-mag}}
+\end{center}
+\hrule height 1pt\relax
+\end{table}
+
+Both the "article" and the "slides" formats may also magnify the document. By
+default, the magnification of the "slides" format is 4 magsteps, and the
+magnification of the "article" format is 0. To find the total font
+magnification, add the magnification listed in the table to the magnification
+of the document. E.g., in the "slides" format with the "12pt" option (or the
+command "\ptsize{12}" at the beginning of a slide), the "\large" command may
+invoke fonts that have a magnification of up to 7 magsteps.
+
+Most systems have font bitmaps for 0, 1/2, 1, 2, 3, 4 and 5 magsteps. If you
+obey the restrictions listed on page \pageref{font-res}, then you will only
+need fonts in these standard magnifications. However, if you want to use other
+font magnifications, then check with your system administrator to determine
+which of the following applies to you (or just plunge ahead and see what
+happens):
+\begin{enumerate}
+\item If you have Metafont and "dvips" or some other driver that automatically
+generates font bitmaps as needed, and if this feature is enabled, then you
+will simply notice that it takes a long time to print documents at first,
+because the driver has to wait for the new font bitmaps to be made.
+Eventually, you will have generated all the extra bitmaps you need, and this
+delay will go away.
+\item If you have Metafont, but your dvi driver does not automatically
+generate needed bitmaps, then you just need to keep track of what font bitmaps
+you are missing as you use "seminar.sty" and occasionally run Metafont to make
+them. You will also notice a delay when a font bitmap is missing, because your
+driver will probably scale the closest bitmap it finds, and this can take time
+on some systems.
+\item If you do not even have Metafont, then you have to try to get by without
+the extra bitmaps. Scaled fonts look lousy, but an occasional scaled font in a
+heading is not so bad.
+\end{enumerate}
+
+Of course, PostScript and other scalable fonts do not present any problem, and
+so it is a good idea to use these as much as possible. The Computer Modern
+fonts are available from Blue Sky Research in PostScript Type I format. If you
+do not have PostScript versions of the CM fonts, and you instead use other
+PostScript fonts for text, then you are likely to still need bitmapped fonts
+for mathematics. However, since mathematics is usually set at "\normalsize" or
+smaller, this is not a big problem.
+
+If you are installing "seminar.sty" on a multi-user system, then hopefully you
+will make the needed fonts available.
+
+\section{Color}
+
+You can use whatever color commands you ordinarily use with \LaTeX. You might
+try the \o{semcolor} style option, which lets you use the PSTricks color
+commands for printing on a color PostScript printer. The \o{semcolor} option
+combined with the \o{semlayer} option (see Section \ref{S-overlays}) lets you
+print color layers.
+
+\section{Landscape printing and slide rotation\label{S-landscape}}
+
+If your dvi driver supports a "\special" for landscape printing, then you can
+define \N\printlandscape\ in the preamble of your document to invoke this
+command. E.g., for "dvips" put the line
+\begin{LVerbatim}
+ \renewcommand{\printlandscape}{\special{landscape}}
+\end{LVerbatim}
+in the preamble. Otherwise, "seminar.sty" will display a message reminding you
+to print your document in landscape mode, when appropriate.
+
+You can print both landscape and portrait slides in one shot if you can rotate
+the portrait slides when printing in landscape mode or the landscape slides
+when printing in portrait mode. If you are using a PostScript printer, you
+probably are using a dvi driver that supports rotation; otherwise, you
+probably are not. Here are suggestions for setting up rotation:
+\begin{itemize}
+\item The \o{semcolor} option provides an interface to the rotation macros in
+PSTricks (see Appendix \ref{S-semcolor}); it works with many popular dvi-to-ps
+drivers.
+
+\item If you are using Rokicki's "dvips" and want rotation but do not want to
+load the entire PSTricks package, then use the \O{semrot} option instead of
+the \o{semcolor} option.
+
+\item If the \o{semcolor} and \o{semrot} options do not work for you, but you
+have your own rotation macros, then you have to define the commands
+\begin{MD}
+ \leftsliderotation\\
+ \rightsliderotation
+\end{MD}
+so that they rotate something left and right, respectively. For example,
+\begin{LVerbatim}
+ \renewcommand{\leftsliderotation}[1]{\rotateleft{#1}}
+\end{LVerbatim}
+\end{itemize}
+
+In any case, you can determine the direction of rotation using
+\begin{MD}
+ \sliderotation{direction}
+\end{MD}
+where valid directions are "none", "left" and "right". The default is "left".
+
+By default, the headers and footers aren't rotated, but you can switch between
+rotating and not rotating the headers with the commands:
+\begin{MD}
+ \rotateheaderstrue\\
+ \rotateheadersfalse
+\end{MD}
+
+\section{The semcolor style option\label{S-semcolor}}
+
+The \O{semcolor} option sets up an interface between "seminar.sty" and the
+PSTricks package. PSTricks is a collection of PostScript macros for \TeX. It
+works with Rokicki's "dvips", and several other dvi-to-ps drivers. You can
+probably get the PSTricks package from wherever you obtained "seminar.sty", or
+check the archives listed in the PSTricks read-me file, "read-me.pst", which
+is distributed with "seminar.sty".
+
+What the \o{semcolor} style option gives you, compared to just using the
+PSTricks package, is:
+\begin{description}
+\item[Color] A small patch to make the PSTricks color commands more robust in
+slides.
+\item[Rotation] The rotations "left" and "right" are defined. "left" is the
+default.
+\item[Framing] The frame styles "scplain" (using "\psframebox"), "scdouble"
+(using "\psdblframebox") and "scshadow" (using "\psshadowbox").
+\item[Overlays] Overlays and layers, when used in conjunction with the
+\o{semlayer} option.
+\end{description}
+
+\section{A4 and other paper sizes\label{S-papersizes}}
+
+Use the \O{a4} option when using A4 paper. Note that this option does not
+correspond to an independent file.
+
+If you want to configure seminar.sty for A4 paper by default (without having
+to include style options), then you can do one of the following:
+\begin{enumerate}
+
+ \item Add the following line to "seminar.con" (see Appendix
+\ref{S-configfile}):
+\begin{LVerbatim}
+ \input{sem-a4.sty}
+\end{LVerbatim}
+
+ \item Add the following lines to "seminar.con" (these lines are just the
+contents of "sem-a4.sty"):
+\begin{LVerbatim}
+ \def\paperwidth{210mm}
+ \def\paperheight{297mm}
+ \input sem-page.sty
+ \slidewidth 222mm
+ \slideheight 152mm
+\end{LVerbatim}
+
+ \item Create a file such as "mysem.sty", to be used as a document {\em
+style} (rather than style {\em option}), with the following lines:
+\begin{LVerbatim}
+ \def\paperwidth{210mm}
+ \def\paperheight{297mm}
+ \input seminar.sty
+ \slidewidth 222mm
+ \slideheight 152mm
+\end{LVerbatim}
+
+\end{enumerate}
+
+For other paper sizes, you can create a style option by modifying
+"sem-a4.sty". Then any of the options described above is available to you,
+(with the appropriate parameter values). However, this will give satisfactory
+results only for paper sizes that are close to A4 or 8.5in by 11in.
+
+Note that for any paper size, even 8.5in by 11in, the page parameters that are
+set this way are just suggested defaults, and most people will want to
+customize them. Because of the variety of ways in which "seminar.sty"
+documents can be printed, this is a little more complex than with most
+document styles. Examine "sem-page.sty" to see what page parameters need to be
+set, and when.
+
+\section{Configuration file\label{S-configfile}}
+
+You can put customizations to "seminar.sty" in a file named "seminar.con".
+This file is optional. It is loaded by "seminar.sty" if it exists, {\em
+before} loading the style option files. E.g., "seminar.con" might contain the
+following lines:
+\begin{LVerbatim}
+ \input semhelv.sty
+ \input semcolor.sty
+ \renewcommand{\printlandscape}{\special{landscape}}
+ \endinput
+\end{LVerbatim}
+
+\clearpage
+\PrintUserIndex
+
+\end{document}
+%% END sem-user.tex
diff --git a/macros/latex/contrib/seminar/doc/semsamp1.pdf b/macros/latex/contrib/seminar/doc/semsamp1.pdf
new file mode 100644
index 0000000000..2be4b5dd6a
--- /dev/null
+++ b/macros/latex/contrib/seminar/doc/semsamp1.pdf
Binary files differ
diff --git a/macros/latex/contrib/seminar/doc/semsamp1.tex b/macros/latex/contrib/seminar/doc/semsamp1.tex
new file mode 100644
index 0000000000..9f896093fc
--- /dev/null
+++ b/macros/latex/contrib/seminar/doc/semsamp1.tex
@@ -0,0 +1,110 @@
+\listfiles
+%%
+%% 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.
+%%
+%% BEGIN semsamp1.tex
+%
+% This is a sample document for seminar.sty, v0.93 (and maybe later).
+%
+% Try this with and without the article option:
+
+\documentclass[fancybox,article]{seminar}
+
+\def\printlandscape{\special{landscape}} % Works with dvips.
+
+\articlemag{1}
+
+%\twoup % Try me.
+
+\newpagestyle{327}%
+ {Economics 327 \hspace{\fill}\rightmark \hspace{\fill}\thepage}{}%
+\pagestyle{327}
+
+\markright{Choice under uncertainty}
+
+\slideframe{Oval}
+
+\newcommand{\heading}[1]{%
+ \begin{center}
+ \large\bf
+ \shadowbox{#1}%
+ \end{center}
+ \vspace{1ex minus 1ex}}
+
+\newcommand{\BF}[1]{{\bf #1:}\hspace{1em}\ignorespaces}
+
+\begin{document}
+
+
+\begin{slide}
+\heading{A heading}
+
+One thing this example illustrates is how the {\tt article} style option is
+good for printing slides two-up, for distribution to a seminar audience or
+class, or just for proofreading.
+
+\BF{Definition}
+$p$ (weakly) first-order stochastically dominates $q$ if for every $\bar z\in
+Z$,
+\[
+ p(z\leq \bar z) \leq q(z\leq \bar z)
+\]
+\end{slide}
+
+
+\begin{slide}
+\heading{Problems with stochastic dominance as a DT}
+
+\begin{center}
+ \begin{tabular}{|r|l|}\hline
+ $z$ & $p(z)$\\ \hline
+ \$999 & .01\\ \hline
+ \$1,000,000 & .99 \\ \hline
+ \end{tabular}%
+ \hspace{1cm}%
+ \begin{tabular}{|r|l|}\hline
+ $z$ & $q(z)$\\ \hline
+ \$1,000 & 1\\ \hline
+ \end{tabular}
+\end{center}
+\end{slide}
+
+\begin{slide}
+\heading{Candidate Theory \#3: Expected utility}
+
+Let $Z$ be an arbitrary set of outcomes. Let $u:Z\rightarrow R$ be a utility
+representation of the DM's preferences over the elements of $Z$ as certain
+outcomes. (I.e., $u(y)\geq u(z)$ iff $y \geq z$.)
+
+\end{slide}
+
+
+\begin{slide}
+\heading{Expected utility \& the St.\ Petersburg Paradox}
+
+This can get around even St.\ Petersburg Paradox, because we don't require
+that utility be linear in money:
+
+\begin{center}
+ \begin{tabular}{r|c|c|c|c|c}\cline{2-6}
+ Prize & \$2 & \$4 & \$8 & \$16 & $\ldots$\\ \cline{2-6}
+ $u(z)=\log_2(z)$ & 1 & 2 & 3 & 4 & $\ldots$ \\ \cline{2-6}
+ Prob. & 1/2 & 1/4 & 1/8 & 1/16 & $\ldots$\\ \cline{2-6}
+ \end{tabular}
+\end{center}
+
+Expected utility is $\sum_{k=1}^\infty k/2^k = 2$, and so lottery gives same
+expected utility as getting \$4 for sure.
+\end{slide}
+
+
+\end{document}
+%% END semsamp1.tex
diff --git a/macros/latex/contrib/seminar/doc/semsamp2.pdf b/macros/latex/contrib/seminar/doc/semsamp2.pdf
new file mode 100644
index 0000000000..d1419c853e
--- /dev/null
+++ b/macros/latex/contrib/seminar/doc/semsamp2.pdf
Binary files differ
diff --git a/macros/latex/contrib/seminar/doc/semsamp2.tex b/macros/latex/contrib/seminar/doc/semsamp2.tex
new file mode 100644
index 0000000000..b332a31414
--- /dev/null
+++ b/macros/latex/contrib/seminar/doc/semsamp2.tex
@@ -0,0 +1,297 @@
+%%
+%% 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.
+%%
+
+%% BEGIN semsamp2.tex
+% This is a sample document for seminar.sty, v0.93 (and maybe later).
+%
+% This file contains both landscape and portrait mode slides.
+% Choose one of the following to print them out:
+% - If using PSTricks, try the semcolor style option.
+% - If using Rokicki's dvips, try the semrot style option.
+% - To print the landscape slides, put \landscapeonly in the preamble.
+% To print the portrait slides, include the portrait style option and
+% put \portraitonly in the preamble.
+%
+%
+\documentclass[%
+ slidesonly,% Try notes or notesonly instead.
+ %notes,% Use instead of slidesonly to typeset the notes.
+ %notesonly,% Use instead of slidesonly to typeset notes and slides.
+ semcolor,% Try me if using PSTricks.
+ semrot,% Try me if using Rokicki's dvips.
+ %semhelv,% Try me if using a PostScript printer.
+ %article,% Try me.
+ %portrait,% Try me.
+ %sem-a4,% Try me if using A4 paper.
+ semlayer% This must be included, but you need the semcolor option to
+ ]{seminar} % actually see the overlays.
+
+\slidesmag{5}
+\articlemag{1}
+
+%\twoup % Try me for twoup printing.
+
+%\portraitonly % To print only portrait slides
+%\landscapeonly % To print only landscape slides
+
+%\notslides{\ref{questions}-7,1} %Try me: The slides are omitted.
+%\onlyslides{\ref{questions}-7,1} %Try me: Only these slides are included.
+%\onlynotestoo %Try me: For selecting notes as well.
+
+%\colorlayers{red,blue} % Try deleting this if using the semcolor option,
+ % to get \blue and \red to use PostScript color.
+
+%\overlaysfalse % Suppress overlays with semcolor option.
+%\layersfalse % Suppress color layers with semcolor option.
+
+\rotateheaderstrue % Try this out if using rotation macros.
+
+
+\title{Example for seminar.sty}
+\author{Policarpa Salabarrieta}
+\date{July 21, 1991}
+
+\newcommand\sref[1]{SLIDE \ref{#1}}
+\newcommand\heading[1]{\begin{center}\large\bf #1\end{center}}
+
+\newpagestyle{MH}%
+ {University of Guaduas, March 13, 1998\hfil\thepage}{}
+\pagestyle{MH}
+
+\begin{document}
+
+\maketitle % This won't show up when \onlynotestoo is in effect.
+
+\begin{slide}
+ \ifslidesonly % Title slide only for slidesonly selection.
+ \maketitle
+ \addtocounter{slide}{-1}
+ \slidepagestyle{empty}
+ \fi
+\end{slide}
+
+This is a lot of gobbledy-gook intended only to illustrate some of the
+features of seminar.sty.
+
+ The phrase information overload rings a bell with just about anyone.
+Certainly you all receive more working papers or more applications for
+graduate school than you can readily read. Nevertheless, the term information
+overload is ill-defined. (\sref{too_much}, top)
+
+ A message like this when you check your email conjures up the notion of
+information overload. More generally, information overload always means too
+much information, in some sense or another. But what does ``too much'' mean?
+(\sref{too_much}, bottom) It might just mean that people cannot process all
+the information they receive. That is certainly true for everyone. A claim
+that is much stronger, and that is implicit when people complain about
+informaton overload, is that people {\em should} receive less information, by
+some criterion.
+
+\begin{slide}\label{too_much}%
+\begin{center}
+ \large\bf
+ Information overload = ``Too much'' information
+\end{center}
+\smallskip
+
+\begin{verse} \bf\tt
+ You have 134 unread messages:\\
+ Do you want to read them now?
+\end{verse}
+
+\begin{enumerate}
+ {\overlay2
+ \item People {\overlay1 cannot process all} the information they receive.}
+ \item People {\em should} receive less information.
+ \end{enumerate}
+\end{slide}
+
+ In this paper, I use the term ``information overload'' in both senses.
+(\sref{overload}, bottom). Specifically, I say that an {\em individual} is
+overloaded with information if she receives more information than she can
+process. But I say that there is information overload in a {\em network} if
+there is some mechanism that makes the senders and/or receivers better off by
+restricting the flow of information. This latter notion of information
+overload is an equilibrium property, and it depends on what we mean by
+``better off.''
+
+\begin{slide*}\label{overload}
+\ptsize{12}
+
+\begin{itemize}{\overlay1
+ \item There is information {\overlay0 overload in a network if} there is
+some mechanism that, compared to the {\em status quo}, makes the senders
+and/or receivers better off by restricting the flow} of information.'
+
+ \item There is information overload in a network if there is some mechanism
+that, compared to the {\em status quo}, makes the senders and/or receivers
+better off by restricting the flow of information.
+\end{itemize}
+
+\end{slide*}
+
+(\sref{questions})
+ The purpose of my paper is to show why there can be information overload in
+a network and what kind of mechanisms can make the receivers and/or senders
+better off. Since the cost of communication is one factor that restricts
+communication, I am thus also going to look at how the welfare of the senders
+and receivers depends on the cost of communication.
+
+ Most messages don't become jumbled and we can choose which ones to process.
+But some of us may have a bias towards choosing to process more information
+than we should, like the graduate student who feels compelled to read every
+article on the usual lengthy reading list, and just ends up getting confused
+and ruffling through the papers.
+
+
+\begin{slide}[7.3in,5.5in] \label{questions}
+\heading{Questions}
+
+\begin{itemize}
+ {\overlay1 \item When could {\blue there be overload} in networks?}
+ \item What mechanims make the receivers and senders better off?
+ \item How does the welfare {\red of the senders} and receivers depend on the
+cost of communication?
+\end{itemize}
+\end{slide}
+
+
+However, experiments in consumer research and psychology have failed to find
+that such a bias is prevalent. This is in spite of the fact that it is common
+for stress and cognitive strain to increase with information load. We may
+incur such stress and strain because the information we choose to process is
+valuable to us.
+
+More commonly, then, we can and do choose to process roughly as much
+information as we can handle efficiently. This is called screening. But when
+we choose which messages to begin to process, we're ignorant of their
+contents, since otherwise there would be no reason to process them in the
+first place. Therefore, if we receive more junk mail, then some of the
+important mail gets crowded out, and we are effectively less informed.
+
+\begin{slide} \label{informed}
+\begin{center}
+ {\bf Being more informed} \par
+ \smallskip
+ is always better,\par
+ \medskip
+ \overlay1{but it's not the same as \par
+ \smallskip
+ {\bf receiving more information}}
+\end{center}
+\end{slide}
+
+ Why would the senders communicate too many messages in the first place? If I
+present too much material in this seminar, you have to choose which parts to
+ignore and I would rather make that decision myself, since I know what I most
+want to get across. Thus, it is in my interest not to overload you with
+information. Generally, whenever there is a single sender of messages, that
+sender will prefer to screen rather than have the receiver screen, because the
+sender has an interest in which messages the receiver processes.
+But when there are more senders, one sender's messages tend to crowd out the
+messages of the other senders, as in this example here. If the senders don't
+take this external cost into account when sending messages, they may
+collectively overload the receiver. (\sref{akbar})
+
+There are several reasons that our scarcity of attention, that is, our limited
+capacity to process information, can mean that we become less informed when we
+receive more information. I have a cartoon here to illustrate these reasons.
+(\sref{akbar})
+
+\begin{slide}\label{akbar}\def\slidefuzz{15pt}
+ {\large A tax $\tau$ on communication is said to support
+$\tilde{\cal{X}}(c)$ if $\tilde{\cal{X}}(c)$ is an equilibrium for
+$\Gamma(c+\tau)$.}
+\medskip
+
+ {\bf Proposition 6.} {\em Assume $\tilde{\cal{X}}(c)$ is not an equilibrium
+for $\Gamma(c)$.\vspace{-3pt}
+\begin{enumerate}
+ \item If $\mbox{supp}(\gamma)=[0,1]^n$, there is no tax that supports
+$\tilde{\cal{X}}(c)$.
+ \item If $\mbox{supp}(\gamma)=S^{n-1}$, there is a tax that supports
+$\tilde{\cal{X}}(c)$ if and only if $m=1$, $p_j>c\, \forall j$, and
+ \begin{enumerate}
+ \item $n=2$; or
+ \item $n=3$ and $p_i^{-1}+p_j^{-1}\geq p_k^{-1}$ for all distinct
+$i,j,k$; or
+ \item $n=4$ and $p_1=p_2=p_3=p_4$.
+\end{enumerate}
+\end{enumerate}}
+\end{slide}
+
+ If, by restricting communication, we eliminate the less relevant messages,
+then we can become more informed. But how can we achieve this? Restricting the
+flow of information shifts the task of screening messages from the receivers
+to the senders. Unlike the receivers, the senders do know the contents of the
+messages they originate. If the senders' interests coincide with those of the
+receiver and if the senders have sufficient knowledge about the receivers,
+then the senders will choose the messages which are most relevant to the
+receivers. This may make the receivers, and even the senders, better off.
+
+ The network in Slide \ref{architectures} attains the minimal delay $c(8,24)
+= 6$ using 8 processors. It is an example of the efficient one-shot networks
+described by Foo. We will focus on a class of networks that are similar to the
+Foo networks but that may differ slightly. For $q$, $c$ and $n$ such that $1
+\leq q \leq \lfloor n/2 \rfloor$ and $c(q,n) \leq c \leq n$, let $R_{nqc}$ be
+the class of essential networks for adding $n$ items using $q$ processors in
+$c$ cycles that have the following properties:
+
+\begin{slide*}\label{architectures}
+\heading{Architecture}
+
+\begin{center}
+\setlength{\unitlength}{1.65in}
+\begin{picture}(1.1,1.6)(3.5,5.0)
+\put(4.0,6.5){\circle*{.04}}
+\put(4.1,6.5){1}
+\put(4.0,6.0){\circle*{.04}}
+\put(4.1,6.0){2}
+\put(4.0,6.1){\vector(0,1){.3}}
+\put(3.5,6.0){\circle*{.04}}
+\put(3.6,6.0){3}
+\put(3.6,6.1){\vector(1,1){.3}}
+\put(4.0,5.5){\circle*{.04}}
+\put(4.1,5.5){4}
+\put(4.0,5.6){\vector(0,1){.3}}
+\put(4.5,6.0){\circle*{.04}}
+\put(4.6,6.0){5}
+\put(4.4,6.1){\vector(-1,1){.3}}
+\put(4.5,5.5){\circle*{.04}}
+\put(4.6,5.5){6}
+\put(4.4,5.6){\vector(-1,1){.3}}
+\put(3.5,5.5){\circle*{.04}}
+\put(3.6,5.5){7}
+\put(3.5,5.6){\vector(0,1){.3}}
+\put(4.0,5.0){\circle*{.04}}
+\put(4.1,5.0){8}
+\put(4.0,5.1){\vector(0,1){.3}}
+\end{picture}
+\end{center}
+\end{slide*}
+
+Why would the senders communicate too many messages in the first place? If I
+present too much material in this seminar, you have to choose which parts to
+ignore and I would rather make that decision myself, since I know what I most
+want to get across. Thus, it is in my interest not to overload you with
+information.
+
+Generally, whenever there is a single sender of messages, that sender will
+prefer to screen rather than have the receiver screen, because the sender has
+an interest in which messages the receiver processes. But when there are more
+senders, one sender's messages tend to crowd out the messages of the other
+senders, as in this example here. If the senders don't take this external cost
+into account when sending messages, they may collectively overload the
+receiver. (\sref{architectures})
+
+\end{document}
+%% END semsamp2.tex
diff --git a/macros/latex/contrib/seminar/doc/semsamp3.pdf b/macros/latex/contrib/seminar/doc/semsamp3.pdf
new file mode 100644
index 0000000000..7173793ea1
--- /dev/null
+++ b/macros/latex/contrib/seminar/doc/semsamp3.pdf
Binary files differ
diff --git a/macros/latex/contrib/seminar/doc/semsamp3.tex b/macros/latex/contrib/seminar/doc/semsamp3.tex
new file mode 100644
index 0000000000..3d6b5923a9
--- /dev/null
+++ b/macros/latex/contrib/seminar/doc/semsamp3.tex
@@ -0,0 +1,68 @@
+\listfiles
+%%
+%% Ein Beispiel der DANTE-Edition
+%%
+%%
+%% Copyright (C) 2012 Herbert Voss
+%%
+%% It may be distributed and/or modified under the conditions
+%% of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%%
+%% See http://www.latex-project.org/lppl.txt for details.
+%%
+%%
+%% ====
+% Show page(s) 1,3
+%%
+\documentclass[landscape,rules]{exaseminar}
+\pagestyle{empty}
+\setlength\textwidth{172.40709pt}
+% use **dvips -T 297mm,210mm <file>**!
+\usepackage[utf8]{inputenc}
+\usepackage[scaled]{helvet}
+\def\FileDate{June 2002}
+\def\FileInfoB{Backgrounds}
+\def\FileVersion{1.0}
+\StartShownPreambleCommands
+\documentclass{seminar}
+\usepackage{sem-dem}% General utility macros
+\HyperSetUp\hypersetup{pdfpagemode=UseOutlines}% Open the document with bookmarks shown
+\newcommand\MySeminarOutlinePresentation{%
+ \SeminarOutlinePresentation{Where we are}{LightBlue}{RoyalBlue}{yellow}%
+ \SeminarHeader{\LARGE\HLe{Demonstration of \MakeLowercase{\FileInfoB}}}}
+\VerbatimFootnotes % To allow verbatim material in footnotes
+\StopShownPreambleCommands
+\begin{document}
+\SeminarFirstSlide \SeminarListOfSlides
+\renewcommand{\slidestretch}{1}% Komprimieren der Zeilen
+\begin{slide}
+ \slideheading{Introduction}
+ \begin{dinglist}{\DingListSymbolA}
+ \item The \emph{full screen} backgrounds, which are the ones well suited
+ for screen presentations, are managed by the
+ \Verb+\SeminarNewSlideFrameBackground+ and
+ \Verb+\SeminarSlideFrameBackground+ macros.\footnote{They are built on the
+ model of the \Verb[fontsize=\footnotesize]+\newslideframe+ and
+ \Verb[fontsize=\footnotesize]+\slideframe+ ones, which cannot be used for
+ this goal (there is a design incompatibility in the management of the
+ slide headers).}
+
+ \item We can overlap several partial \emph{backgrounds} with the
+ `\textsf{fancybox}' package (using it \Verb+\boxput+ macro), calling the
+ \Verb+\slideframe[*]+ macro, eventually several times (see the
+ \HLe{Seminar} documentation and FAQ). See examples on
+ slide~12 and in the file \href{file:sem-dem2.pdf}{sem-dem2.pdf}.
+
+ \item We show here several kinds of backgrounds:
+ \begin{dinglist}{\DingListSymbolB}\setlength{\labelwidth}{4mm}
+ \item \HLe{solid} backgrounds,
+ \item \HLe{gradient} backgrounds, using the \textsf{pst-grad} PSTricks package,
+ \item \HLe{gradient} backgrounds, using the \textsf{pst-slpe} PSTricks package,
+ \item \HLe{composite} backgrounds, based on PSTricks graphics (you can
+ obviously rather use the others \AllTeX{} packages for algorithmic graphics),
+ \item backgrounds with \HLe{external images}.
+ \end{dinglist}
+ \end{dinglist}
+\end{slide}
+\end{document}
diff --git a/macros/latex/contrib/seminar/doc/tvz-code.sty b/macros/latex/contrib/seminar/doc/tvz-code.sty
new file mode 100644
index 0000000000..68a52701aa
--- /dev/null
+++ b/macros/latex/contrib/seminar/doc/tvz-code.sty
@@ -0,0 +1,291 @@
+%% BEGIN tvz-code.sty
+%% 93/04/01
+%% Tim Van Zandt Timothy.VAN-ZANDT@insead.edu
+%%
+%% Lousy hacks for typesetting the documented code for the
+%%
+%% 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.
+%%
+%% seminar.sty and PSTricks packages.
+
+\input tvz-hax.sty
+\input doc.sty % Tested with v1.7k
+\input art11.sty
+
+
+%%%%%%%%%%%%%%%%%%% PAGE PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Paragraphs are marked by space rather than indentation:
+\parindent 0pt
+\parskip 4pt plus 1pt minus 1pt
+
+% Textwidth just wide enough for 78 characters of code.
+\setbox\@tempboxa=\hbox{\small\tt f}
+\textwidth 78\wd\@tempboxa
+\oddsidemargin\paperwidth\relax
+\advance\oddsidemargin -\textwidth
+\divide\oddsidemargin 2
+\advance\oddsidemargin -1in
+\setbox\@tempboxa=\hbox{\tiny 999\ }
+\advance\oddsidemargin\wd\@tempboxa
+\evensidemargin\oddsidemargin
+
+\if@twoside
+ \advance\oddsidemargin .3in
+ \advance\evensidemargin -.3in
+\fi
+
+% No headers, 1in top margin
+\topmargin 0pt
+\headheight 0pt
+\headsep 0pt
+
+% Total bottom margin 1in, text height 9in
+\textheight 9in
+\footskip .625in
+
+% Now adjust for different paper size:
+\@tempdima=\paperheight
+\advance\@tempdima-11in
+\divide\@tempdima 2
+\advance\topmargin \@tempdima
+
+% Marginal notes always on left.
+\marginparwidth 3.5cm
+\marginparsep .5cm
+\reversemarginpar
+
+
+%%%%%%%%%%%%%%%%%%% MACROCODE PATCH FOR SHORT META %%%%%%%%%%%
+
+\expandafter\def\expandafter\macrocode\expandafter{%
+ \expandafter\DeleteShortMeta
+ \macrocode}
+
+%%%%%%%%%%%%%%%%%%%% DOC PREAMBLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newbox\junkbox
+\def\DocInput#1{%
+ \MakePercentIgnore
+ \setbox\junkbox=\hbox\bgroup
+ \input{#1}%
+ \MakePercentComment}
+\let\EndDocPreamble\egroup
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%% VERBATIM %%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Use fancybox.sty's LVerbatim environment. Each line should contain
+% percent plus three spaces (or other char), including blank lines. E.g.,
+% \begin{LVerbatim}
+% foo
+% bar
+% \end{LVerbatim}
+
+\def\EveryVerbatimLine#1#2#3#4{}
+\begingroup
+ \catcode`\%=12
+ \catcode`\ =\active
+ \global\EndVerbatimTokens{% }
+\endgroup
+\AltGetVerbatim
+
+
+%%%%%%%%%%%%%%%%%% INDEXING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Things are faster without \MakeIndex
+
+\def\MakeIndex{\makeindex\EnableCrossrefs}
+\DisableCrossrefs
+
+% Use \codelabel[int]{foo} to label last line of code plus int.
+% E.g., to label first and then last line of some code:
+% \codelabel[1]{foo}
+% \begin{macrocode}
+% foo
+% bar
+% \end{macrocode}
+% \codelabel{foo}
+
+\def\codelabel{\@ifnextchar[{\@codelabel}{\@codelabel[0]}}
+\def\@codelabel[#1]#2{%
+ \@bsphack
+ \begingroup
+ \advance\c@CodelineNo #1
+ \def\@currentlabel{\the\c@CodelineNo}%
+ \label{#2}%
+ \endgroup
+ \@esphack}
+
+% Definitions in code are indexed by page number, but other occurences
+% are indexed by the line of code.
+
+\CodelineIndex
+\def\SpecialMainPageIndex#1{%
+ {\let\special@index\index\SpecialMainIndex{#1}}}
+\renewcommand{\theCodelineNo}{{\rm\tiny\arabic{CodelineNo}}}
+
+% Index numbers for main definitions are set in bold rather than underlined.
+
+\def\main#1{{\bf #1}}
+
+% two column index
+
+\setcounter{IndexColumns}{2}
+
+% Customize index prologue:
+
+\def\index@prologue{%
+ \section*{Index}\markboth{Index}{Index}%
+ \addcontentsline{toc}{section}{Index}%
+ The {\bf bold} numbers denote the pages where the entries are defined,
+ and all other numbers indicate the {\em lines of code} where
+ the entries are used.}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% MACRO %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% A change to the macro environment; prints macro names within the margins
+% of the text, instead of as marginal notes. Use one \macro command,
+% with comma separated macro names.
+
+\newif\iffirst@macroname
+\newif\ifnestedmacro
+
+\def\macro{%
+ \ifnum\macro@level=\z@
+ \def\next{\MakePrivateLetters \m@cro@}%
+ \else
+ \def\next{\@latexerr{Nested \string\begin{macro}}\@eha
+ \endgroup\end{macro}\macro@level=\z@\begin{macro}}
+ \fi
+ \next}
+\def\m@cro@#1{%
+ \first@macronametrue
+ \m@@cro@@#1,\@nil,}
+\def\m@@cro@@#1,{%
+ \def\@tempa{#1}\def\@tempb{\@nil}%
+ \ifx\@tempa\@tempb
+ \let\next\finishm@@cro@@
+ \else
+ {\advance\c@CodelineNo\@ne\SpecialMainPageIndex{#1}\nobreak}%
+ \DoNotIndex{#1}%
+ \iffirst@macroname
+ \edef\saved@macronames{\string#1}%
+ \first@macronamefalse
+ \else
+ \def\comma{\noexpand\comma}%
+ \edef\saved@macronames{\saved@macronames\comma\string#1}%
+ \fi
+ \let\next\m@@cro@@
+ \fi
+ \next}
+\def\finishm@@cro@@{%
+ \advance\macro@level\@ne
+ \def\comma{{\rm, }}%
+ \ListMacroNames{\saved@macronames}}
+
+\let\endmacro\relax
+
+\def\ListMacroNames{%
+ \@startsection{subsubsection}{3}{\z@}{-2.25ex plus -.5ex minus-.2ex}%
+ {1.3ex plus.2ex}{\csname reset@font\endcsname\large\tt}*}
+
+\MacroIndent 0pt
+
+\def\MacroFont{\small\tt}
+
+
+%%%%%%%%%%%%%%%%%%%%% DoNot Index %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\DoNotIndex{\ ,\!,\[,\\,\],\^,\`,\{,\},\~}
+\DoNotIndex{\@warning,\active}
+\DoNotIndex{\begingroup,\catcode,\char,\csname,\def,\do}
+\DoNotIndex{\docdate,\dospecials,\edef,\else,\endcsname,\endgroup}
+\DoNotIndex{\expandafter,\fi,\filedate,\fileversion}
+\DoNotIndex{\gdef,\if,\ifcat}
+\DoNotIndex{\ifx,\immediate,\lccode,\let}
+\DoNotIndex{\lowercase,\next,\noexpand}
+\DoNotIndex{\relax,\space,\the}
+\DoNotIndex{\toks@,\typeout,\write}
+\DoNotIndex{\@M,\@arabic,\@author,\@auxout,\@bsphack,\@car,\@date}
+\DoNotIndex{\@dblarg,\@dblfloat,\@eha,\@empty,\@esphack,\@evenfoot}
+\DoNotIndex{\@evenhead,\@float,\@gobble,\@gobbletwo,\@gtempa,\@ifnextchar}
+\DoNotIndex{\@ifundefined,\@ixpt,\@latexerr,\@listI,\@listi,\@listii}
+\DoNotIndex{\@listiii,\@listiv,\@listv,\@listvi,\@makefnmark,\@mkboth}
+\DoNotIndex{\@namedef,\@nameuse,\@mne,\@nil,\@normalsize,\@oddfoot}
+\DoNotIndex{\@oddhead,\@tempa,\@tempb,\@tempc,\@tempd}
+\DoNotIndex{\@tempdima,\@testfalse,\@testtrue,\test@member}
+\DoNotIndex{\@thanks,\@thefnmark,\@title}
+\DoNotIndex{\@topnum,\@viiipt,\@viipt,\@vipt,\@vpt,\@xiipt}
+\DoNotIndex{\@xipt,\@xpt,\@xivpt,\@xviipt,\@xxpt,\@xxvpt}
+\DoNotIndex{\addcontentsline}
+\DoNotIndex{\advance,\aftergroup,\baselinestretch,\begin}
+\DoNotIndex{\belowdisplayshortskip,\belowdisplayskip,\bf,\bgroup}
+\DoNotIndex{\box,\c@@page,\c@page,\c@secnumdepth,\clearpage,\columnsep}
+\DoNotIndex{\columnwidth,\copy,\dimen@,\dimen@i,\dimen@ii,\divide}
+\DoNotIndex{\dp,\ds@article,\ds@notes,\ds@notesonly}
+\DoNotIndex{\ds@slidesonly,\egrou,\end,\end@dblfoloat,\end@float}
+\DoNotIndex{\endinput,\fnsymbol,\footheight,\footnotesep,\footskip}
+\DoNotIndex{\global,\globaldefs,\hbox,\headheight,\headsep,\hfil}
+\DoNotIndex{\hrule,\hskip,\hss,\ht,\Huge,\huge}
+\DoNotIndex{\if@filesw,\if@test,\if@twocolumn,\if@twoside}
+\DoNotIndex{\ifcase,\ifdim,\ifvmode,\ignorespaces}
+\DoNotIndex{\input,\interlinepenalty,\itemsep,\ixpt,\label}
+\DoNotIndex{\labelsep,\labelwidth,\LARGE,\large,\Large}
+\DoNotIndex{\leavevmode,\leftmargin,\leftmargini,\leftmarginii}
+\DoNotIndex{\leftmarginiii,\leftmarginiv,\leftmarginv}
+\DoNotIndex{\leftmarginvi,\leftmark,\leftskip,\lineskip}
+\DoNotIndex{\magstep,\marginparsep,\marginparwidth,\markboth}
+\DoNotIndex{\markright,\medbreak,\multiply,\newbox,\newcount}
+\DoNotIndex{\newcounter,\newdimen,\newif,\newlabel,\newpage}
+\DoNotIndex{\newtoks,\nobreak,\nointerlineskip,\normallineskip}
+\DoNotIndex{\normalsize,\null,\number,\numberline,\oddsidemargin}
+\DoNotIndex{\offinterlineskip,\or,\par,\parbox,\parskip,\partopsep}
+\DoNotIndex{\prevdepth,\protect,\ref,\refstepcounter,\rightmrk}
+\DoNotIndex{\rm,\scriptsize,\section,\sectionmark,\setbox,\setcounter}
+\DoNotIndex{\sl,\small,\stepcounter,\string,\textheight,\textwidth}
+\DoNotIndex{\thefootnote,\thepage,\thesection,\thesubsection}
+\DoNotIndex{\thispagestyle,\tiny,\topmargin,\topsep,\uppercase}
+\DoNotIndex{\vbox,\vfill,\viiipt,\viipt,\vipt,\vpt,\vskip,\vss}
+\DoNotIndex{\wd,\xcommentloaded@,\xdef,\xiipt,\xipt,\xivpt,\xpt}
+\DoNotIndex{\xviipt,\xxpt,\xxvpt,\z@}
+\DoNotIndex{\abovedisplayskip,\abovedisplayshortskip,\@currentlabel}
+\DoNotIndex{\@dottedtocline,\@ne\@setsize,\@starttoc,\@tempboxa,\@}
+\DoNotIndex{\arraystretch,\centerline,\egroup,\end@dblfloat}
+\DoNotIndex{\evensidemargin,\footnotesize,\ifnum,\parindent,\parsep}
+\DoNotIndex{\rightmark,\@afterindenttrue,\@ne,\if@specialpage.\long}
+\DoNotIndex{\fboxrule,\fboxsep,\@for,\vfil}
+\DoNotIndex{\@@fortmp,\@@tempa,\@@tempb,\@ehd,\@for,\@fortmp,\@m}
+\DoNotIndex{\@mparswitchfalse,\@mparswitchtrue,\@nnil,\@spaces}
+\DoNotIndex{\@specialstyle,\@temptokena,\@twosidefalse,\@twosidetrue}
+\DoNotIndex{\@whilenum,\alph,\arabic,\count@,\errhelp,\errmessage}
+\DoNotIndex{\fbox,\index,\minipage,\newcommand,\overfullrule}
+\DoNotIndex{\pagestyle,\raggedright,\ref@stepcounter,renewcommand}
+\DoNotIndex{\semcolor@loaded,today,\@tempcnta,\@tempcntb,\trivlist,\t,\p}
+\DoNotIndex{\today,\item,\@colht,\@currenvir,\@thefoot,\@thehead}
+\DoNotIndex{\@totalleftmargin,\allowbreak,\@captype,\@footnotetext}
+\DoNotIndex{\@listdepth,\@minipagefalse,\@minipagetrue,\@mpfn,\@mpfootins}
+\DoNotIndex{\endtrivlist,\everypar,\hsize,\ifvoid,\lastskip}
+\DoNotIndex{\linewidth,\skip,\thempfn,\thempfootnote,\topskip,\unvbox}
+\DoNotIndex{\@@input,\@@par,\@acci,\@accii,\@acciii,\@cclv,\@height}
+\DoNotIndex{\@maxdepth,\@tempdimb,\@tempg,\@temph,\@texttop,\@twocolumnfalse}
+\DoNotIndex{\@xfloat,\addvspace,\alloc@,\bigskipamount,\botmark,\chardef}
+\DoNotIndex{\closein,\closeout,\count,\countdef,\dimen,\glossary,\goodbreak}
+\DoNotIndex{\insc@unt,\intextsep,\kern,\mag,\marginpar,\maxdepth,\medskip}
+\DoNotIndex{\moveleft,\newinsert,\newskip,\onecolumn,\openin,\openout}
+\DoNotIndex{\read,\renewcommand,\repeat,\rightskip,\strut,\vfuzz,\voffset}
+\DoNotIndex{\vsize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput
+
+%% END tvz-code.sty
diff --git a/macros/latex/contrib/seminar/doc/tvz-hax.sty b/macros/latex/contrib/seminar/doc/tvz-hax.sty
new file mode 100644
index 0000000000..f8a4798fcc
--- /dev/null
+++ b/macros/latex/contrib/seminar/doc/tvz-hax.sty
@@ -0,0 +1,266 @@
+%% BEGIN tvz-hax.sty
+%% 93/04/01
+%% Tim Van Zandt Timothy.VAN-ZANDT@insead.edu
+%%
+%% These are some lousy hacks for typesetting the code
+%% and User's Guide in the Seminar and PSTricks packages.
+%%
+%% 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.
+%%
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% PAPER SIZES %%%%%%%%%%%%%%%%%%%%%%
+
+% Default paper size is 8.5in by 11in.
+% Just include the `a4' style option for A4 paper size.
+% For other paper sizes, define \paperwidth and \paperheight
+% before the \documentstyle command.
+
+\@ifundefined{paperwidth}{\def\paperwidth{8.5in}}{}
+\@ifundefined{paperheight}{\def\paperheight{11in}}{}
+\@namedef{ds@a4}{\def\paperwidth{210mm}\def\paperheight{297mm}}
+
+
+%%%%%%%%%%%%%%%%%%%% INPUTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newif\iftwoup
+\@namedef{ds@2up}{\input 2up.tex \twouptrue}
+
+\input article.sty
+\input fancybox.sty % Version 0.93 or later.
+
+\iftwoup
+ \if@twoside
+ \targetlayout{twosided}
+ \fi
+\fi
+
+\if@twoside
+ \def\twosideclearpage{%
+ \clearpage
+ \ifodd\c@page\else
+ \thispagestyle{empty}%
+ \null\leavevmode
+ \clearpage
+ \fi}
+\else
+ \let\twosideclearpage\clearpage
+\fi
+
+
+%%%%%%%%%%%%%%%%%%%%% MISC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\arraystretch{1.2}
+
+\hfuzz 1pt
+
+% Just in case I'm using AmS-LaTeX.
+\def\makeatother{\catcode`\@=12\relax}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% SHORT META %%%%%%%%%%%%%%%%%%%%%%%%
+
+% Works in verbatim environments, unless specially designed.
+\begingroup
+ \catcode`\<=\active
+ \gdef\ShortMeta{%
+ \catcode`\<=\active
+ \def<##1>{{\MetaFont ##1\/}}}
+\endgroup
+\def\DeleteShortMeta{\catcode`\<=12\relax}
+\def\MetaFont{\sl} % For meta arguments.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% FILE VERSIONS %%%%%%%%%%%%%%%%%%%%%
+
+% \GetVersion{file} scans first ten lines of <file> for
+% \filedate and \fileversion definitions.
+%
+% \CheckVersion{file} scans <scans> file for \filedate and \fileversion
+% and then compares these witha \FileDate and \FileVersion.
+%
+\def\GetVersion#1{%
+ \immediate\openin1=#1
+ \count@=0
+ \let\fileversion\relax
+ \let\filedate\relax
+ \@testtrue
+ \loop
+ \if@test
+ \advance\count@1
+ \immediate\read1 to \@tempa
+ \@tempa
+ \ifnum\count@=10
+ \@latexerr{Couldn't find fileversion}\@eha
+ \@testfalse
+ \else
+ \ifx\fileversion\relax
+ \@testtrue
+ \else
+ \ifx\filedate\relax
+ \@testtrue
+ \else
+ \@testfalse
+ \fi
+ \fi
+ \fi
+ \repeat}
+
+\def\CheckVersion#1{%
+ \GetVersion{#1}
+ \ifx\FileVersion\fileversion
+ \ifx\FileDate\filedate\else
+ \@latexerr{Doc date (\FileDate) and file date (\filedate)
+ do not match}\@eha
+ \fi
+ \else
+ \@latexerr{Doc version (\FileVersion) and file version (\fileversion)
+ do not match}\@eha
+ \fi}
+
+% This expands the date, as defined in \filedate.
+
+\def\expanddate#1/#2/#3/{%
+ \number#3{}
+ \month=#2
+ \ifcase\month\or
+ January \or February \or March \or April \or May \or June \or
+ July \or August \or September \or October \or November \or December
+ \fi
+ 19#1}
+\def\thefiledate{\expandafter\expanddate\filedate/}
+\date{\thefiledate}
+
+
+%%%%%%%%%%%%%%%%% LOGOS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\AmS{{\protect\the\textfont\tw@
+ A\kern-.1667em\lower.5ex\hbox{M}\kern-.125em S}}
+
+\def\b@LaTeX{%
+ \begingroup
+ \csname reset@font\endcsname
+ \rm\bf
+ L\kern-.32em
+ \raise.36ex\hbox{%
+ \ifx\@currsize\Huge\LARGE\else
+ \ifx\@currsize\huge\Large\else
+ \ifx\@currsize\LARGE\large\else
+ \ifx\@currsize\Large\normalsize\else
+ \ifx\@currsize\large\small\else
+ \ifx\@currsize\normalsize\footnotesize\else
+ \ifx\@currsize\small\scriptsize\else
+ \ifx\@currsize\footnotesize\scriptscriptsize
+ \fi\fi\fi\fi\fi\fi\fi\fi
+ \bf A}%
+ \kern-.15em
+ T\kern-.1667em
+ \lower.7ex\hbox{E}\kern-.125em
+ X%
+ \endgroup}
+\def\bLaTeX{\b@LaTeX}
+
+
+%%%%%%%%%%%%%%% PAGE STYLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% The `docheadings' page style uses footers rather than headers.
+
+\def\ps@docheadings{%
+ \let\@mkboth\markboth
+ \def\@oddhead{}%
+ \let\@evenhead\@oddhead%
+ \def\@oddfoot{%
+ \small\sf
+ \rightmark
+ \hfil
+ \thepage}%
+ \def\@evenfoot{%
+ \small\sf
+ \thepage
+ \hfil
+ \theheadertitle}%
+ \def\sectionmark##1{\markright {##1}}}%
+\pagestyle{docheadings}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%% Table of Contents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Tighten up spacing in TOC:
+
+\newskip\tempskip
+\def\TOCshrink{.5}
+\def\TableOfContents{%
+ \begin{quote}
+ \begin{center} \Large\bf Contents \end{center}
+ \def\numberline##1{\hbox to 0pt{\hss##1\hskip 1em}}%
+ \let\oldaddvspace\addvspace
+ \def\addvspace##1{%
+ \tempskip##1\relax
+ \oldaddvspace{\TOCshrink\tempskip}}
+ \@starttoc{toc}%
+ \end{quote}}
+\def\tableofcontents{%
+ \clearpage
+ \markright{Table of contents}%
+ \TableOfContents
+ \clearpage}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%% code and examples %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% `Ex' is an environment for putting samples of code.
+% It is a variant of
+% \begin{quote}\tt ... \end{quote}.
+% It is NOT verbatim.
+
+\def\NotNested{%
+ \def\begin##1{%
+ \@latexerr{Bad nesting of environments.
+ Perhaps missing \end{\@currenvir}}\@eha
+ \end{\@currenvir}%
+ \begin{##1}}}
+
+\def\Ex{%
+ \NotNested
+ \list{}{}\item[]%
+ \if@minipage\else\vskip\parskip\fi
+ \leftskip\@totalleftmargin
+ \rightskip\z@
+ \parindent\z@
+ \parskip\z@
+ \parfillskip\@flushglue
+ \hfuzz 1pt
+ \@@par
+ \global\@inlabelfalse}
+\def\endEx{\endlist}
+
+% Various things to make it easier to write code and examples:
+
+\begingroup
+ \catcode`\{=12 \catcode`\}=12
+ \catcode`\(=1 \catcode`\)=2
+ \catcode`\+=0 \catcode`\\=12
+ +gdef+|(\) % \| = character \
+ +gdef+{({) % \{ = character {
+ +gdef+}(}) % \} = character }
++endgroup
+\def\Backslash{\protect\|}
+
+% Define some functional font commands:
+
+\def\MainFont{\tt} % For macro definitions.
+\def\UsageFont{\tt} % For in-line macro names.
+\def\InlineFont{\tt} % For other in-line snipets of code.
+\def\DisplayFont{\tt} % For displayed code.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput
+%% END tvz-hax.sty
diff --git a/macros/latex/contrib/seminar/doc/tvz-user.sty b/macros/latex/contrib/seminar/doc/tvz-user.sty
new file mode 100644
index 0000000000..f203fa2cf3
--- /dev/null
+++ b/macros/latex/contrib/seminar/doc/tvz-user.sty
@@ -0,0 +1,215 @@
+%%
+%% 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.
+%%
+%% BEGIN tvz-user.sty
+%% 93/04/01
+
+\input tvz-hax.sty
+
+\def\papersizeadjust{%
+ \@tempdima=\paperwidth\relax
+ \advance\@tempdima-8.5in
+ \divide\@tempdima 2
+ \advance\oddsidemargin\@tempdima
+ \advance\evensidemargin\@tempdima
+ \@tempdima=\paperheight
+ \advance\@tempdima-11in
+ \divide\@tempdima 2
+ \advance\topmargin\@tempdima}
+
+\begingroup
+ \catcode`\"=\active
+ \gdef\ShortVerb{%
+ \catcode`\"=\active
+ \def"{\Verb"}}%
+ \gdef\DeleteShortVerb{\catcode`\"=12\relax}
+\endgroup
+
+% Paragraphs are marked by large space rather than indentation:
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{7pt plus 1pt minus 1pt}
+
+% Reduce \topsep:
+\def\@listI{%
+ \leftmargin\leftmargini
+ \parsep 5\p@ plus2.5\p@ minus\p@
+ %\topsep 10\p@ plus4\p@ minus6\p@
+ \topsep 5\p@ plus2\p@ minus2\p@
+ \itemsep 5\p@ plus2.5\p@ minus\p@}
+\let\@listi\@listI
+\@listi
+\def\@listii{%
+ \leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ %\topsep 5\p@ plus2.5\p@ minus\p@
+ \topsep 2\p@ plus.5\p@ minus\p@
+ \parsep 2.5\p@ plus\p@ minus\p@
+ \itemsep \parsep}
+\def\@listiii{%
+ \leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ %\topsep 2.5\p@ plus\p@ minus\p@
+ \topsep 1\p@ plus.2\p@ minus.2\p@
+ \parsep \z@
+ \partopsep \p@ plus\z@ minus\p@
+ \itemsep \topsep}
+
+\skip\footins 20pt plus 4pt minus 2pt
+
+%%%%%%%%%%%%%%%%%%%%%%% Special hacks for User's Guides %%%%%%%%%%%%%%%%%%%%%
+%%
+%% Listing questions
+\newcounter{faq}[section]
+\def\thefaq{\arabic{faq}}
+\let\l@faq\@gobbletwo
+\def\faq{\@startsection{faq}{2}{\z@}%
+ {3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}{\faqfont}}
+\def\faqfont{\normalsize\sf}
+\def\faqmark#1{}
+%%
+%% Listing errors
+\def\error{\vskip 2ex\noindent}
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\@ifundefined{AmSTeX}
+ {\def\AmSTeX{\leavevmode\hbox{$\cal A\kern-.2em\lower.376ex%
+ \hbox{$\cal M$}\kern-.2em\cal S$-\TeX}}}{}
+\@ifundefined{BibTeX}
+ {\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em%
+ T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}{}
+\@ifundefined{SliTeX}
+ {\def\SliTeX{{\rm S\kern-.06emL\kern-.18em\raise.32ex\hbox
+ {\sc i}\kern -.03em\TeX}}}{}
+\@ifundefined{PlainTeX}{\def\PlainTeX{{\sc Plain}\kern2pt\TeX}}{}
+
+%%%%%%%%%%%%%%% Special indexing for User's Guides %%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%%
+\@ifundefined{actualchar}{\def\actualchar{@}}{}
+\@ifundefined{quotechar}{\def\quotechar{"}}{}
+\@ifundefined{levelchar}{\def\levelchar{!}}{}
+\@ifundefined{encapchar}{\def\encapchar{|}}{}
+\@ifundefined{verbatimchar}{\def\verbatimchar{+}}{}
+%%
+%% These are the indexing commands:
+%%
+%% Commands: \MainIndex \UsageIndex
+%% Environments: \MainEnvIndex \UsageEnvIndex
+%% Style options: \MainOptionIndex \UsageOptionIndex
+%% Counters: \MainCntIndex \UsageCntIndex
+\def\@Index#1{\@bsphack\index{#1}\@esphack}
+\def\Index#1#2{%
+ \@bsphack
+ \index{\expandafter\@gobble\string#2\actualchar\string
+ \verb\quotechar*\verbatimchar\string#2\verbatimchar
+ \encapchar #1}}
+{\catcode`\!=0 !catcode`!\=12!gdef!special@gobble#1{!if\#1!else#1!fi}}
+\def\MainIndex{\Index{main}}
+\def\UsageIndex{\Index{usage}}
+\def\SpecialIndex#1#2#3{%
+ \@Index{#3\actualchar{\tt #3} (#1)\encapchar #2}%
+ \@Index{#1s:\levelchar{\tt #3}\encapchar #2}}
+\def\MainEnvIndex{\SpecialIndex{environment}{main}}
+\def\UsageEnvIndex{\SpecialIndex{environment}{usage}}
+\def\MainOptionIndex{\SpecialIndex{option}{main}}
+\def\UsageOptionIndex{\SpecialIndex{option}{usage}}
+\def\MainCntIndex{\SpecialIndex{counter}{main}}
+\def\UsageCntIndex{\SpecialIndex{counter}{usage}}
+%%
+%% Font for index page numbers:
+\def\main#1{{\bf #1}}
+\def\usage#1{{#1}}
+%%
+%% These combine various functions:
+%%
+%% Commands: \Main \Usage
+%% Environments: \MainEnv \UsageEnv
+%% Style options: \MainOption \UsageOption
+%% Counters: \MainCnt \UsageCnt
+%%
+%% The "Main" ones
+%% * Index argument.
+%% * Print argument with \MainFont
+%% * Create label +foo, e+foo or o+foo.
+%%
+%% The "Usage" ones
+%% * Index argument.
+%% * Print argument with \UsageFont.
+%%
+\def\SpecialLabel#1#2+{\label{+#2}}
+\def\LabelIndex#1{\MainIndex{#1}\expandafter\SpecialLabel\string#1+}
+\def\Main#1{%
+ \MainIndex{#1}%
+ \expandafter\SpecialLabel\string#1+%
+ {\MainFont\string#1}}
+\def\Usage#1{\UsageIndex{#1}{\UsageFont\string#1}}
+\def\MainEnv#1{%
+ \MainEnvIndex{#1}%
+ \label{e+#1}%
+ {\MainFont #1}}
+\def\UsageEnv#1{\UsageEnvIndex{#1}{\UsageFont #1}}
+\def\MainOption#1{%
+ \MainOptionIndex{#1}%
+ \label{o+#1}%
+ {\MainFont #1}}
+\def\UsageOption#1{\UsageOptionIndex{#1}{\UsageFont #1}}
+\def\MainCnt#1{%
+ \MainCntIndex{#1}%
+ \label{c+#1}%
+ {\MainFont #1}}
+\def\UsageCnt#1{\UsageCntIndex{#1}{\UsageFont #1}}
+%%
+%% These are abbreviations.
+%%
+\def\N{\Main}
+\def\n{\Usage}
+\def\E{\MainEnv}
+\def\e{\UsageEnv}
+\def\O{\MainOption}
+\def\o{\UsageOption}
+\def\C{\MainCnt}
+\def\c{\UsageCnt}
+%%
+%% This is for listing commands in a description environment.
+\def\xitem#1{\item[\Main{#1}]}
+%%
+%%
+\renewcommand{\EveryVerbatimLine}[2]{}
+\VerbatimFootnotes
+
+%% User's guide and documented code have different index prologue.
+\def\PrintUserIndex{{\let\ps@plain\@empty\@input{\jobname.ind}}}
+
+\begingroup
+ \catcode`\<=1 \catcode`\>=2
+ \catcode`\{=13 \catcode`\}=12
+ \catcode`\[=13
+ \gdef\@MD<%
+ \catcode`\{=13 \catcode`\}=12 \catcode`\[=13
+ \def{##1}<\{<\MetaFont ##1\/>\}>%
+ \def[##1]<\string[<\MetaFont ##1\/>]>>
+\endgroup
+\def\MD{%
+ \NotNested
+ \Ex
+ \begingroup
+ \@MD
+ \def\end{\par\endgroup\end}%
+ \def\\{\@centercr\Main}%
+ \MainFont
+ \Main}
+\def\endMD{\endEx}
+
+\endinput
+%% END tvz-user.sty
diff --git a/macros/latex/contrib/seminar/latex/npsfont.sty b/macros/latex/contrib/seminar/latex/npsfont.sty
new file mode 100644
index 0000000000..d6d8d20046
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/npsfont.sty
@@ -0,0 +1,191 @@
+%% BEGIN npsfont.sty
+%%
+\def\fileversion{v1.0}
+\def\filedate{91/11/20}
+%%
+%% Style option npsfont.sty, for use with LaTeX 2.09
+%% and the New Font Selection Scheme.
+%%
+%% COPYRIGHT 1992, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%%
+%% 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.
+%%
+%%
+% DESCRIPTION:
+%
+% Defining new PostScript fonts with the New Font Selection Scheme is easy,
+% but these macros make it easier. They save on keystrokes, and most
+% importantly, they make it easy to change the file names used for fonts
+% because you only have to type the file name once instead of 12 times (for
+% the 12 standard LaTeX sizes). An optional argument lets you scale the fonts.
+%
+% These macros are substitutes for the NFSS's \new@fontshape command. For
+% information on the purpose of this command, and on how to select fonts that
+% are defined with it, see the documentation of the NFSS. If you don't have
+% the NFSS, it is available from
+% rusmv1.rus.uni-stuttgart.de
+% in
+% soft/tex/latex-style-supported/New-Font-Selection
+% and from
+% ymir.claremont.edu
+% in
+% [.anonymous.tex.inputs.latex-mainz]
+% The NFSS is undoubtably the best way to use PostScript fonts (or any non-
+% standard fonts) with LaTeX, and is well worth upgrading to.
+%
+% USAGE:
+%
+% \newpsfont[<scaling>]{<family>}{<series>}{<shape>}{<filename>}
+%
+% \newpsfamily[<scaling>]{<family>}{
+% {<series 1>}{<shape 1>}{<filename 1>},
+% {<series 2>}{<shape 2>}{<filename 2>},
+% . . .
+% {<series n>}{<shape n>}{<filename n>}}
+%
+% The scaling argument is optional. Like the \new@fontshape command, these
+% commands can only be used in the preamble.
+%
+% EXAMPLE:
+%
+% Suppose the Helvetica-Oblique virtual font on your system has the name
+% phvro.vf. The following defines the <helvetica> family, <m>edium series, and
+% <it>alic shape to be the Helvetica-Oblique font, at the standard LaTeX
+% font sizes, scaled by .82:
+%
+% \newpsfont[.82]{helvetica}{m}{it}{phvro}
+%
+% This is equivalent to:
+%
+% \new@fontshape{helvetica}{m}{it}{%
+% <5>phvro at 4.1pt%
+% <6>phvro at 4.92pt%
+% <7>phvro at 5.74pt%
+% <8>phvro at 6.56pt%
+% <9>phvro at 7.38pt%
+% <10>phvro at 8.2pt%
+% <11>phvro at 8.979pt%
+% <12>phvro at 9.84pt%
+% <14>phvro at 11.808pt%
+% <17>phvro at 14.1696pt%
+% <20>phvro at 17.0068pt%
+% <25>phvro at 20.4016pt}{}
+%
+% The following command sets up the standard Helvetica family:
+%
+% \newpsfamily[.82]{helvetica}{%
+% {m}{n}{phvr}, %Helvetica
+% {m}{it}{phvro}, %Helvetica-Oblique
+% {m}{sl}{phvro}, %Helvetica-Oblique
+% {bx}{n}{phvb}, %Helvetica-Bold
+% {bx}{it}{phvbo}, %Helvetica-BoldOblique
+% {bx}{sl}{phvbo}} %Helvetica-BoldOblique
+%
+% (Don't forget the commas.) It is equivalent to:
+%
+% \newpsfont[.82]{helvetica}{m}{n}{phvr} %Helvetica
+% \newpsfont[.82]{helvetica}{m}{it}{phvro} %Helvetica-Oblique
+% \newpsfont[.82]{helvetica}{m}{sl}{phvro} %Helvetica-Oblique
+% \newpsfont[.82]{helvetica}{bx}{n}{phvb} %Helvetica-Bold
+% \newpsfont[.82]{helvetica}{bx}{it}{phvbo} %Helvetica-BoldOblique
+% \newpsfont[.82]{helvetica}{bx}{sl}{phvbo} %Helvetica-BoldOblique
+% \extra@def{helvetica}{}{}
+%
+% WHY SCALE FONTS?:
+%
+% Disclaimer: The suggestions that follow come from someone who doesn't know
+% anything about fonts.
+%
+% Mixing fonts that are not designed to be used together is not for purists,
+% but many of us do it anyway. Scaling the fonts can at least correct for
+% differences in the x-heights. This is important if you use Computer
+% Modern fonts for in-line math and some other fonts for text.
+%
+% To find out the x-height of the 10pt size of a font, load this style and
+% use the command
+%
+% \showxheight{<filename>}
+%
+% E.g., \showxheight{phvr} and \showxheight{cmr10} displays
+%
+% x-height of cmr10 at 10pt is 4.30554pt
+% x-height of phvr at 10pt is 5.24998pt
+%
+% on the terminal. Scaling the Helvetica fonts by 4.30554/5.24990 = .82
+% gets the x-heights of these fonts in line. It is best to set the x-heights
+% the same for the medium weight, normal shaped fonts, and then scale the
+% rest of the fonts in the same family by the same amount.
+%
+% David Jones has a psfonts.sty that sets up the standard PostScript fonts,
+% all scaled so that the x-heights match that of the Computer Modern medium
+% roman font. It is available via anonymous ftp from theory.lcs.mit.edu in
+% /pub/dmjones.
+%
+% IMPLEMENTATION:
+%
+% \scale@stdsizes has at its argument a scaling factor. It uses \font@scale
+% to define \scaled@sizes to be the macro whose argument is the name of a
+% font, and which expands to the definitions of the standard \LaTeX{} sizes
+% for New Font Selection Schemes \new@fontshape command.
+%
+\message{\space\space\fileversion\space\space\filedate
+ \space\space<tvz>}
+\@ifundefined{new@psfontshape}{}{\endinput}
+\def\font@scale#1#2#3{\dimen@=#2\dimen@=#3\dimen@
+ \edef\scaled@sizes##1{\scaled@sizes{##1}<#1>##1 at\number\dimen@ sp}}
+\def\scale@stdsizes#1{%
+ \edef\scaled@sizes##1{}%
+ \font@scale{5}{5pt}{#1}%
+ \font@scale{6}{6pt}{#1}%
+ \font@scale{7}{7pt}{#1}%
+ \font@scale{8}{8pt}{#1}%
+ \font@scale{9}{9pt}{#1}%
+ \font@scale{10}{10pt}{#1}%
+ \font@scale{11}{10.95pt}{#1}%
+ \font@scale{12}{12pt}{#1}%
+ \font@scale{14}{14.4pt}{#1}%
+ \font@scale{17}{17.28pt}{#1}%
+ \font@scale{20}{20.74pt}{#1}%
+ \font@scale{25}{24.88pt}{#1}}
+\def\new@psfontshape#1#2#3#4{%
+ \new@fontshape{#1}{#2}{#3}{\scaled@sizes{#4}}{}}
+\def\new@psfont[#1]#2#3#4#5{%
+ \scale@stdsizes{#1}%
+ \new@psfontshape{#2}{#3}{#4}{#5}}
+\def\newpsfont{%
+ \@ifnextchar [{\new@psfont}{\new@psfont[1]}}
+\def\newpsfamily{%
+ \@ifnextchar [{\new@psfamily}{\new@psfamily[1]}}
+\def\new@psfamily[#1]#2#3{%
+ \scale@stdsizes{#1}%
+ \@for\@tempa:=#3\do{%
+ \edef\@tempb{\noexpand\new@psfontshape{#2}\@tempa}
+ \@tempb}%
+ \extra@def{#2}{}{}}
+\def\showxheight#1{%
+ \font\@tempfont=#1 at 10pt%
+ \typeout{^^J x-height of #1 at 10pt is \the\fontdimen5\@tempfont}}
+% The commands are added to \@preamblecmds to save memory.
+\begingroup
+ \def\do{\noexpand\do\noexpand}
+ \xdef\@preamblecmds{\@preamblecmds
+ \do\font@scale
+ \do\scale@stdsizes
+ \do\scaled@sizes
+ \do\new@psfontshape
+ \do\new@psfont
+ \do\newpsfont
+ \do\newpsfamily
+ \do\new@psfamily}
+\endgroup
+\endinput
+%% END npsfont.sty
diff --git a/macros/latex/contrib/seminar/latex/sem-a4.sty b/macros/latex/contrib/seminar/latex/sem-a4.sty
new file mode 100644
index 0000000000..4a9a4e5b0c
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/sem-a4.sty
@@ -0,0 +1,21 @@
+%%
+%% 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.
+%%
+%% BEGIN sem-a4.sty
+%\def\paperwidth{210mm}
+%\def\paperheight{297mm}
+\paperwidth=210mm
+\paperheight=297mm
+\input sem-page.sty
+\slidewidth=222mm
+\slideheight=152mm
+\endinput
+%% END sem-a4.sty
diff --git a/macros/latex/contrib/seminar/latex/sem-dem.sty b/macros/latex/contrib/seminar/latex/sem-dem.sty
new file mode 100644
index 0000000000..e671c22498
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/sem-dem.sty
@@ -0,0 +1,96 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% sem-dem.sty --- General utility macros for these Seminar demonstration files
+%%
+%% Author : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+%% Created the : Sun Dec 9 21:49:38 2001
+%% Last mod. by : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+%% Last mod. the : Fri Apr 5 21:02:35 2002
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Identification of the file (constant parameters)
+\def\FileAuthor{Denis Girou}
+\def\FileInfoA{Seminar demonstration files}
+\def\FileName{\jobname}
+
+% Write identification in the PDF file (if one will be generated)
+\RequirePackage{hyperref}
+\newcommand{\HyperSetUp}{%
+\hypersetup{pdftitle={\FileInfoA{} - \FileInfoB},
+ pdfsubject={\FileName{}
+ [\FileDate{} - Version \FileVersion]},
+ pdfauthor={\FileAuthor},
+ pdfkeywords={\FileInfoB{} PSTricks Seminar slides}}}
+
+% Header/footer initialization
+\def\SeminarStandardHeaderFooterDemos{%
+\date{\HLa{\FileDate}}%
+\SeminarStandardHeaderFooter
+ {\LARGE\HLe{Demonstration of \MakeLowercase{\FileInfoB}}}
+ {\HLa{\FileInfoA{} -- \FileInfoB}}
+ {\HLa{Version \FileVersion{} -- }}
+ {\HLe{\FileAuthor}}}
+
+\SeminarStandardHeaderFooterDemos
+
+% General first slide for all the demonstration files
+\newcommand{\SeminarFirstSlide}{{%
+\SeminarSlideFrameBackground{SeminarBackgroundSolid}
+\begin{slide}
+ \ifx\SeminarPaperVersion\AnswerYes
+ \else
+ \vspace*{\stretch{1}} % Due to the special annotation for full screen mode
+ \fi
+
+ \begin{center}
+ \psframebox[fillstyle=solid,fillcolor=red,framearc=0.2]{%
+ \Large\bfseries\color{yellow}
+ \begin{tabular}{c}
+ Seminar demonstration files\\
+ \setlength{\pst@dimg}{\widthof{Seminar demonstration files}}%
+ \setlength{\pst@dimh}{\widthof{\FileInfoB}}%
+ \ifdim\pst@dimg>\pst@dimh
+ \rule[1mm]{\pst@dimg}{0.6mm}\\
+ \else
+ \rule[1mm]{\pst@dimh}{0.6mm}\\
+ \fi
+ \FileInfoB
+ \end{tabular}}
+
+ \vspace{1cm}
+ \psframebox[fillstyle=solid,fillcolor=LightBlue,
+ framesep=0.2,framearc=0.4]{%
+ \bfseries
+ \begin{tabular}{c}
+ \FileAuthor\\
+ \FileDate
+ \end{tabular}}
+
+ \ifx\SeminarPaperVersion\AnswerYes
+ \else
+ \vspace{\stretch{1}}
+ \hfill%
+ \rput[br](0.2,0){%
+ \psframebox[linewidth=0.02,framesep=0.05]{%
+ \footnotesize\bfseries
+ \shortstack[l]{%
+ With Acroread, \textcolor{red}{CTRL-L} switch\\[-1mm]
+ between full screen and window mode}}}
+ \fi
+ \end{center}
+\end{slide}}}
+
+% List of slides
+\newcommand{\SeminarListOfSlides}{{%
+% Background changing
+\ifx\SeminarColorVersion\AnswerYes
+ \renewcommand{\SeminarBackgroundGradientColorBegin}{PaleGreen}%
+ \renewcommand{\SeminarBackgroundGradientColorEnd}{green}%
+ \renewcommand{\SeminarBackgroundGradientAngle}{-90}%
+ \SeminarSlideFrameBackground{SeminarBackgroundGradient}
+\fi
+\renewcommand{\slidestretch}{0.7}% We compress the lines
+\begin{slide}
+ \listofslides
+\end{slide}}}
+
+\endinput
diff --git a/macros/latex/contrib/seminar/latex/sem-page.sty b/macros/latex/contrib/seminar/latex/sem-page.sty
new file mode 100644
index 0000000000..a013fcf3ad
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/sem-page.sty
@@ -0,0 +1,95 @@
+%% BEGIN sem-page.sty
+\def\fileversion{1.0}
+\def\filedate{93/04/01}
+%%
+%% Contains the page parameters for the `seminar' LaTeX document style.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%% 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.
+%%
+%%
+\def\slideleftmargin{.6in}
+\def\sliderightmargin{.6in}
+\def\slidetopmargin{.6in}
+\def\slidebottommargin{.6in}
+\ifarticle
+ \ifportrait
+ \twocolumn
+ \sloppy
+ \topmargin 0pt
+ \headheight 15pt
+ \headsep 25pt
+ \footskip 30pt
+ \footheight 15pt
+ \textheight\paperwidth\relax
+ \advance\textheight -1in
+ \advance\textheight -\headsep
+ \advance\textheight -\headheight
+ \advance\textheight -\footskip
+ \advance\textheight -\footheight
+ \advance\textheight -.5in
+ \textwidth\paperheight\relax
+ \advance\textwidth by -2in
+ \oddsidemargin 0pt
+ \evensidemargin 0pt
+ \leftmargini 2em
+ \leftmarginv .5em
+ \leftmarginvi .5em
+ \columnsep 40pt
+ \marginparwidth 0pt
+ \marginparsep 0pt
+ \else
+ \textwidth 5.5in
+ \oddsidemargin\paperwidth\relax
+ \advance\oddsidemargin -\textwidth
+ \divide\oddsidemargin 2
+ \advance\oddsidemargin -1in
+ \evensidemargin\oddsidemargin
+ \if@twoside
+ \advance\oddsidemargin -18pt
+ \advance\evensidemargin 18pt
+ \fi
+ \topmargin -20pt
+ \headheight 15pt
+ \headsep 25pt
+ \footskip 33pt
+ \footheight 15pt
+ \textheight\paperheight\relax
+ \advance\textheight -1in
+ \advance\textheight -\topmargin
+ \advance\textheight -\headsep
+ \advance\textheight -\headheight
+ \advance\textheight -\footskip
+ \advance\textheight -.5in
+ \fi
+\else
+ \oddsidemargin 0pt
+ \evensidemargin 0pt
+ \marginparwidth 0pt
+ \marginparsep 0pt
+ \ifportrait
+ \textwidth\paperwidth\relax
+ \textheight\paperheight\relax
+ \else
+ \textwidth\paperheight\relax
+ \textheight\paperwidth\relax
+ \fi
+ \advance\textwidth by -2in
+ \topmargin -1in
+ \headheight .5in
+ \headsep .5in
+ \advance\textheight by -2in
+ \footskip .75in
+ \footheight .25in
+\fi
+\endinput
+%% END sem-page.sty
diff --git a/macros/latex/contrib/seminar/latex/semcolor.sty b/macros/latex/contrib/seminar/latex/semcolor.sty
new file mode 100644
index 0000000000..84fc61986c
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/semcolor.sty
@@ -0,0 +1,77 @@
+%%
+%% This is file `semcolor.sty', version 1.01
+%%
+%% IMPORTANT NOTICE:
+%%
+%% semcolor.sty Copyright (C) 1993 Timothy Van Zandt
+%%
+%% This package may be distributed under the terms of the LaTeX Project
+%% Public License, as described in lppl.txt in the base LaTeX distribution.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\def\fileversion{1.02}
+\def\filedate{2014/01/17}
+%%
+%% LaTeX style option `semcolor.sty'.
+%% For use with LaTeX v2.09 and the `seminar' document style.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%% 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.
+%%
+%%
+%% You must install the PSTricks package v0.9 or later to use semcolor.sty.
+%%
+\@ifundefined{SemcolorFrameOps}{}{\endinput}
+\typeout{Style Option: `semcolor' for doc style `seminar'
+ \fileversion\space <\filedate> (tvz)}
+% RN modification begin -- 2004/05/04; Rolf.Niepraschk@ptb.de
+%\input{pstricks}
+\ProvidesFile{semcolor.sty}[\filedate\space v\fileversion\space (tvz)]
+%\RequirePackage{pstricks}
+\RequirePackage{pst-ovl}
+% RN modification end
+%
+% Set up the frame styles:
+\def\SemcolorFrameOps{\psset{%
+ fillstyle=none,%
+ linewidth=\slideframewidth,%
+ framesep=\slideframesep,%
+ cornersize=absolute,%
+ linearc=.5cm,%
+ shadowsize=2pt,%
+ shadowcolor=darkgray}}%
+\newslideframe{scplain}[\SemcolorFrameOps]{\psframebox{#1}}
+\newslideframe{scdouble}[\SemcolorFrameOps]{\psdblframebox{#1}}
+\newslideframe{scshadow}[\SemcolorFrameOps]{\psshadowbox{#1}}
+\slideframe{scplain}
+%
+% Rotation:
+\def\leftsliderotation#1{\rotateleft{#1}}
+\def\rightsliderotation#1{\rotateright{#1}}
+\sliderotation{left}
+%
+% Color:
+\addto@hook\after@slidepage{\pstVerb{0 setgray}}
+%
+% Overlays:
+\def\make@overlay#1{%
+ \setbox\@slidebox=\hbox{%
+ \pst@initoverlay{#1}%
+ \pst@Verb{ 0 \tx@BOL }%
+ \copy\@@slidebox
+ \pst@Verb{ -1 \tx@BOL }}}
+\def\@overlay{\pst@overlay}
+\addto@hook\before@newslide{\def\curr@overlay{0}}
+\@ifundefined{overlaystrue}{}{\ifarticle\else\overlaystrue\layerstrue\fi}
+%
+\endinput
+%% END semcolor.sty
diff --git a/macros/latex/contrib/seminar/latex/semhelv.sty b/macros/latex/contrib/seminar/latex/semhelv.sty
new file mode 100644
index 0000000000..cbb1ba1fe2
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/semhelv.sty
@@ -0,0 +1,193 @@
+%% BEGIN semhelv.sty
+\def\fileversion{1.4}
+\def\filedate{2000/05/08}
+%%
+%% LaTeX style option `semhelv.sty' for the `seminar' document class.
+%% For use with LaTeX2e.
+%%
+%% COPYRIGHT 1994, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%% 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.
+%%
+%% Edited by Sebastian Rahtz <sebastian.rahtz@oucs.ox.ac.uk>
+%% and Denis Girou <denis.girou@idris.fr>
+%% To use OT1-encoding 7t names
+%% ************************************************************************
+%% **** DESCRIPTION ****
+%% ************************************************************************
+%%
+% This file contains the external font information needed to load
+% the PostScript Helvetica fonts for use by seminar.cls.
+%
+% IMPORTANT:
+% As distributed, the following font file names are assumed for the
+% `standard' TeX encoding:
+%
+% Helvetica phvr7t
+% Helvetica-Oblique phvro7t
+% Helvetica-Bold phvb7t
+% Helvetica-BoldOblique phvbo7t
+% Courier pcrr7t
+% Courier-Bold pcrb7t
+% Courier-Oblique pcrro7t
+% Courier-BoldOblique pcrbo7t
+%
+% With the NFSS2 and LaTeX2e, you can also use the CORK encoding. The
+% assumed file names are as above, but with `8t' instead of `7t'
+%
+% This means, e.g., that phvr7t.tfm or phvr7t.vf must be the name of the
+% TeX .tfm or .vf (virtual font) file for the PostScript Helvetica font.
+% See the documentation of your dvi-to-ps driver for information on using
+% PostScript fonts.
+%
+% Fonts are scaled so that the x-heights match those of the cmr fonts;
+% this makes in-line math look acceptable.
+%
+% Note: The Courier font is not that great.
+%
+% Preliminaries:
+\csname semhelv@loaded\endcsname
+\let\semhelv@loaded\endinput
+\typeout{Style Option: `semhelv' for the `seminar' doc style
+ \fileversion\space <\filedate> (tvz)}
+\typeout{Modified by Stefan (see source for details)}
+\@ifundefined{selectfont}
+ {\@seminarerr{`semhelv' style option can only be used
+ with the New Font Selection Scheme}\@eha\endinput}{}
+%
+% Font definitions.
+
+\expandafter\ifx\csname DeclareSizeFunction\endcsname\relax
+
+% FOR NFSS:
+
+\@ifundefined{newpsfamily}{\input{npsfont.sty}}{}%
+
+% See npsfont.sty for the definition of \newpsfamily.
+
+\newpsfamily[.82]{helvetica}{
+ {m}{n}{phvr7t}, %Helvetica
+ {m}{it}{phvro7t}, %Helvetica-Oblique
+ {m}{sl}{phvro7t}, %Helvetica-Oblique
+ {bx}{n}{phvb7t}, %Helvetica-Bold
+ {bx}{it}{phvbo7t}, %Helvetica-BoldOblique
+ {bx}{sl}{phvbo7t}} %Helvetica-BoldOblique
+\newpsfamily[.985]{courier}{
+ {m}{n}{pcrr7t}, %Courier
+ {bx}{n}{pcrb7t}, %Courier-Bold
+ {m}{it}{pcrro7t}, %Courier-Oblique
+ {bx}{it}{pcrbo7t}} %Courier-BoldOblique
+
+% Use fonts or use \slidefonts:
+\ifarticle
+ \renewcommand{\slidefonts}{%
+ \renewcommand{\default@family}{helvetica}%
+ \renewcommand{\rmdefault}{helvetica}%
+ \renewcommand{\ttdefault}{courier}%
+ \renewcommand{\sfdefault}{helvetica}%
+ \family\default@family\selectfont}
+\else
+ \renewcommand{\default@family}{helvetica}%
+ \renewcommand{\rmdefault}{helvetica}%
+ \renewcommand{\ttdefault}{courier}%
+ \renewcommand{\sfdefault}{helvetica}%
+ \family\default@family\selectfont
+\fi
+
+\else
+
+% FOR NFSS2 OR LATEX2E:
+
+\def\helv@scale{.82}
+
+\DeclareFontFamily{T1}{helvetica}{}%
+\DeclareFontShape{T1}{helvetica}{m}{n}{<->s*[\helv@scale]phvr8t}{}%
+\DeclareFontShape{T1}{helvetica}{m}{it}{<->s*[\helv@scale]phvro8t}{}%
+\DeclareFontShape{T1}{helvetica}{m}{sc}{<->s*[\helv@scale]phvrc8t}{}%
+\DeclareFontShape{T1}{helvetica}{b}{n}{<->s*[\helv@scale]phvb8t}{}%
+\DeclareFontShape{T1}{helvetica}{b}{it}{<->s*[\helv@scale]phvbo8t}{}%
+\DeclareFontShape{T1}{helvetica}{m}{sl}{<->ssub * helvetica/m/it}{}%
+\DeclareFontShape{T1}{helvetica}{b}{sc}{<->sub * helvetica/m/sc}{}%
+\DeclareFontShape{T1}{helvetica}{b}{sl}{<->ssub * helvetica/b/it}{}%
+\DeclareFontShape{T1}{helvetica}{bx}{n}{<->ssub * helvetica/b/n}{}%
+\DeclareFontShape{T1}{helvetica}{bx}{it}{<->ssub * helvetica/b/it}{}%
+\DeclareFontShape{T1}{helvetica}{bx}{sc}{<->sub * helvetica/m/sc}{}%
+\DeclareFontShape{T1}{helvetica}{bx}{sl}{<->ssub * helvetica/b/it}{}%
+
+\DeclareFontFamily{OT1}{helvetica}{}%
+\DeclareFontShape{OT1}{helvetica}{m}{n}{<->s*[\helv@scale]phvr7t}{}%
+\DeclareFontShape{OT1}{helvetica}{m}{it}{<->s*[\helv@scale]phvro7t}{}%
+\DeclareFontShape{OT1}{helvetica}{m}{sc}{<->s*[\helv@scale]phvrc7t}{}%
+\DeclareFontShape{OT1}{helvetica}{b}{n}{<->s*[\helv@scale]phvb7t}{}%
+\DeclareFontShape{OT1}{helvetica}{b}{it}{<->s*[\helv@scale]phvbo7t}{}%
+\DeclareFontShape{OT1}{helvetica}{m}{sl}{<->ssub * helvetica/m/it}{}%
+\DeclareFontShape{OT1}{helvetica}{b}{sc}{<->sub * helvetica/m/sc}{}%
+\DeclareFontShape{OT1}{helvetica}{b}{sl}{<->ssub * helvetica/b/it}{}%
+\DeclareFontShape{OT1}{helvetica}{bx}{n}{<->ssub * helvetica/b/n}{}%
+\DeclareFontShape{OT1}{helvetica}{bx}{it}{<->ssub * helvetica/b/it}{}%
+\DeclareFontShape{OT1}{helvetica}{bx}{sc}{<->sub * helvetica/m/sc}{}%
+\DeclareFontShape{OT1}{helvetica}{bx}{sl}{<->ssub * helvetica/b/it}{}%
+
+\def\courier@scale{.985}
+
+% DG/SR modification begin - May. 13, 1998
+% Update some names (phvrq -> phvr7t etc.)
+% DG/SR modification end
+
+\DeclareFontFamily{T1}{courier}{\hyphenchar \font\m@ne}%
+\DeclareFontShape{T1}{courier}{m}{n}{<->s*[\courier@scale]pcrr8t}{}%
+\DeclareFontShape{T1}{courier}{m}{it}{<->s*[\courier@scale]pcrro8t}{}%
+\DeclareFontShape{T1}{courier}{m}{sc}{<->s*[\courier@scale]pcrrc8t}{}%
+\DeclareFontShape{T1}{courier}{b}{n}{<->s*[\courier@scale]pcrb8t}{}%
+\DeclareFontShape{T1}{courier}{b}{it}{<->s*[\courier@scale]pcrbo8t}{}%
+\DeclareFontShape{T1}{courier}{m}{sl}{<->ssub * courier/m/it}{}%
+\DeclareFontShape{T1}{courier}{b}{sc}{<->sub * courier/m/sc}{}%
+\DeclareFontShape{T1}{courier}{b}{sl}{<->ssub * courier/b/it}{}%
+\DeclareFontShape{T1}{courier}{bx}{n}{<->ssub * courier/b/n}{}%
+\DeclareFontShape{T1}{courier}{bx}{it}{<->ssub * courier/b/it}{}%
+\DeclareFontShape{T1}{courier}{bx}{sc}{<->sub * courier/m/sc}{}%
+\DeclareFontShape{T1}{courier}{bx}{sl}{<->ssub * courier/b/it}{}%
+
+\DeclareFontFamily{OT1}{courier}{\hyphenchar \font\m@ne}%
+\DeclareFontShape{OT1}{courier}{m}{n}{<->s*[\courier@scale]pcrr7t}{}%
+\DeclareFontShape{OT1}{courier}{m}{it}{<->s*[\courier@scale]pcrro7t}{}%
+\DeclareFontShape{OT1}{courier}{m}{sc}{<->s*[\courier@scale]pcrrc7t}{}%
+\DeclareFontShape{OT1}{courier}{b}{n}{<->s*[\courier@scale]pcrb7t}{}%
+\DeclareFontShape{OT1}{courier}{b}{it}{<->s*[\courier@scale]pcrbo7t}{}%
+\DeclareFontShape{OT1}{courier}{m}{sl}{<->ssub * courier/m/it}{}%
+\DeclareFontShape{OT1}{courier}{b}{sc}{<->sub * courier/m/sc}{}%
+\DeclareFontShape{OT1}{courier}{b}{sl}{<->ssub * courier/b/it}{}%
+\DeclareFontShape{OT1}{courier}{bx}{n}{<->ssub * courier/b/n}{}%
+\DeclareFontShape{OT1}{courier}{bx}{it}{<->ssub * courier/b/it}{}%
+\DeclareFontShape{OT1}{courier}{bx}{sc}{<->sub * courier/m/sc}{}%
+\DeclareFontShape{OT1}{courier}{bx}{sl}{<->ssub * courier/b/it}{}%
+
+% Use fonts or use \slidefonts:
+\ifarticle
+ \renewcommand{\slidefonts}{%
+ \renewcommand{\default@family}{helvetica}%
+ \renewcommand{\rmdefault}{helvetica}%
+ \renewcommand{\ttdefault}{courier}%
+ \renewcommand{\sfdefault}{helvetica}%
+ \fontfamily\default@family\selectfont}
+\else
+ \renewcommand{\default@family}{helvetica}%
+ \renewcommand{\rmdefault}{helvetica}%
+ \renewcommand{\ttdefault}{courier}%
+ \renewcommand{\sfdefault}{helvetica}%
+ \fontfamily\default@family\selectfont
+\fi
+
+\fi
+
+\endinput
+%% END semhelv.sty
+
diff --git a/macros/latex/contrib/seminar/latex/seminar.bg2 b/macros/latex/contrib/seminar/latex/seminar.bg2
new file mode 100644
index 0000000000..6f9a50078b
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/seminar.bg2
@@ -0,0 +1,600 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% seminar.bg2 --- Corrections for compatibility problems and new bugs
+%% found in the Seminar package, and few new additions
+%% to help overlays management for PDF output files.
+%% (see also the seminar.bug file in Seminar distribution)
+%%
+%% Disclaimer: this file is mine and doesn't engage TVZ!
+%%
+%% Note: insert it after \usepackage{graphicx} if you use `graphicx'
+%% and after \usepackage{longtable} if you use `longtable'
+%%
+%% Author : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+%% Created the : 1995
+%% Last mod. by : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+%% Last mod. the : Fri May 31 20:19:22 2002
+%%
+%% 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.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\FileVersion{2.3}
+\def\FileDate{2014/05/12}
+\typeout{seminar.bg2: various corrections for the Seminar document class^^J%
+ added since seminar.bug and few add-ons for overlays^^J%
+ (Version \FileVersion\space of <\FileDate> (DG, hv))}
+
+\RequirePackage{pst-ovl}
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+% 1 - To correct a bug in the note environment
+% (reported by Denis Girou (CNRS/IDRIS) <Denis.Girou@idris.fr> - 1995)
+\@savsf=1
+
+
+% 2 - To correct several bugs to generate a list of slides with subsection
+% entries
+% (reported by Denis Girou (CNRS/IDRIS) <Denis.Girou@idris.fr> - Jul. 18, 1995)
+% - To clear the subheading when a new heading is defined
+% (reported by Axel Thimm - <thimm@physik.fu-berlin.de> - June 5, 1997)
+% - To assure coherence between heading and subheading when used
+% in header/footer, for article mode
+% (reported by Axel Thimm - <thimm@physik.fu-berlin.de> - June 5, 1997)
+% - Improvements (\refstepcounter and \@addtoreset) by Jeremy Gibbons
+% <jgibbons@brookes.ac.uk> - Sep. 30, 1997
+
+% Used by the \slide@subheading macro but undefined
+\def\theslidesubsection{\theslidesection.\arabic{slidesubsection}}
+
+%% Requires main pst-ovl
+\ifx\PSTovlloaded\endinput\else\input pst-ovl \fi
+
+
+\def\slide@heading[#1]#2{%
+ \refstepcounter{slidesection}%
+ \@addtoreset{slidesubsection}{slidesection}
+ \addtocontents{los}{\protect\l@slide
+ {\the\c@slidesection}{\ignorespaces#1}{\@SCTR}}%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty\else
+ {\edef\@currentlabel{\csname p@slidesection\endcsname\theslidesection}%
+ \makeslideheading{#2}}%
+ \fi
+ \gdef\theslideheading{#1}%
+ \gdef\theslidesubheading{}%
+}
+
+\def\slide@subheading[#1]#2{%
+ \refstepcounter{slidesubsection}%
+ \addtocontents{los}{\protect\l@subslide
+ {\the\c@slidesubsection}{\ignorespaces#1}{\@SCTR}}%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty\else
+ {\edef\@currentlabel{\csname p@slidesubsection\endcsname
+ \theslidesubsection}\makeslidesubheading{#2}}%
+ \fi
+ \gdef\theslidesubheading{#1}%
+}
+% 3 - To correct a bug in the \slidecontents macro
+% (reported by Denis Roegel (LORIA) <Denis.Roegel@loria.fr> - Sep. 22, 1996)
+
+\long\def\@gobblethree #1#2#3{}
+
+\def\slide@contents{%
+ \def\l@slide##1##2##3{%
+ \slide@cline{\slidenumberline{##1}{##2}}{##3}}%
+ \let\l@subslide\@gobblethree
+ \@startlos}
+
+% 4 - To solve incompatibility between the `graphicx' package and Seminar.
+% The \espfslidesize Seminar macro work only with the old version of
+% the `epsfig' package, so with \includegraphics the PostScript files are
+% always scaled without the possibility to leave them to there natural
+% size. And also these files are not correctly scaled when we switch
+% from normal to article mode under Seminar. So, we must redefined the
+% \epsfslidesize macro of Seminar and modify few internal macros of
+% `graphicx'.
+% (Note: I consider only the `graphicX' package, not the 'graphicS' one)
+% (reported by Karl Tombre (LORIA) <Karl.Tombre@loria.fr> and
+% Denis Roegel (LORIA) <Denis.Roegel@loria.fr> - Jan. 16, 1997)
+
+\def\GraphicsNotScaled{%
+\ifx\Gin@viewport\undefined
+\else % Graphicx package detected
+\def\Gin@i{%
+ \def\Gin@req@sizes{%
+ \Gin@nat@height=\inverseslidesmag\Gin@nat@height
+ \Gin@nat@width=\inverseslidesmag\Gin@nat@width
+ \Gin@req@height\Gin@nat@height
+ \Gin@req@width\Gin@nat@width}%
+ \@ifnextchar[\Gin@ii{\Gin@ii[]}}
+\define@key{Gin}{width}{%
+\@tempdima=##1\@tempdima=\inverseslidesmag\@tempdima\def\Gin@ewidth{\@tempdima}}
+\define@key{Gin}{height}{%
+\@tempdima=##1\@tempdima=\inverseslidesmag\@tempdima\def\Gin@eheight{\@tempdima}}
+\define@key{Gin}{totalheight}{%
+\def\Gin@eresize{\totalheight}%
+\@tempdima=##1\@tempdima=\inverseslidesmag\@tempdima\def\Gin@eheight{\@tempdima}}
+\fi}
+
+\def\epsfslidesize{%
+\let\epsfsize\slide@epsfsize
+\GraphicsNotScaled}
+
+% 5 - To solve incompatibily between the LongTable package and Seminar
+% (reported by Bhaskar Manda (UIUC) <bhaskar@or4.me.uiuc.edu> - May 7, 1997)
+% - Problem in article format seen later
+% (reported by Axel Thimm <thimm@physik.fu-berlin.de> - June 5, 1997)
+
+% From seminar.cls
+\def\slide@outputLT{% (from \slide@output)
+ \@makeslide
+ \@testfalse
+ \ifnotesonly\else
+ \iflandscape
+ \ifnum\@landscapeonly>-1 \os@test\fi
+ \else
+ \ifnum\@landscapeonly<1 \os@test\fi
+ \fi
+ \fi
+ \if@test
+ \reset@slideoutput
+ \@@makeslideLT
+ \process@slide
+ \fi
+ \refstepcounter{slide}}
+\def\@@makeslideLT{% (from \@@makeslide)
+ \overfullslide@warning
+ \setbox\@slidebox\hbox{%
+ \vfuzz=\slidefuzz\relax
+ \vbox to\slide@vsize{%
+ \box\@outputbox
+ \ifcenterslides\vskip\z@ plus .0001fil \fi
+ \unvbox\@slidebox
+ \vskip\z@ plus .0001fil}%
+ \the\after@slidepage}%
+ \wd\@slidebox\textwidth}
+
+% From LongTable
+\def\LT@output{%
+ \ifnum\outputpenalty <-\@Mi
+ \ifnum\outputpenalty > -\LT@end@pen
+ \LT@err{floats and marginpars not allowed in a longtable}\@ehc
+ \else
+ \setbox\z@\vbox{\unvbox\@cclv}%
+ \ifdim \ht\LT@lastfoot>\ht\LT@foot
+ \dimen@\pagegoal
+ \advance\dimen@-\ht\LT@lastfoot
+ \ifdim\dimen@<\ht\z@
+ \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
+ \@makecol
+ \slide@outputLT
+ \setbox\z@\vbox{\box\LT@head}%
+ \fi
+ \fi
+ \global\@colroom\@colht
+ \global\vsize\@colht
+ \vbox
+ {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
+ \fi
+ \else
+ \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
+ \@makecol
+ \slide@outputLT
+ \copy\LT@head
+ \fi}
+
+% We must adjust \textheight. Sometimes, you must increase it a little by
+% something like \addtolength{\textheight}{5mm}
+% But if you use slides like \begin{slide*}[15cm,10cm]
+% you must define locally \textheight=15cm
+\addtolength{\textheight}{-\headheight}
+
+
+% 6 - To allow automatic changes of language dependent labels,
+% for instance by loading the `french' package after Seminar
+% (suggested by Bernard Gaulle (IDRIS) <gaulle@idris.fr> - Nov. 20, 1997)
+% From seminar.cls
+\def\slidename{Slide}
+\def\slidelabel{\bf\slidename{} \theslide}
+% From slidesec.sty
+\def\listslidename{List of Slides}%
+\def\listofslides{\section*{\listslidename%
+\@mkboth{\expandafter\MakeUppercase\listslidename}%
+ {\expandafter\MakeUppercase\listslidename}}%
+ \def\l@slide##1##2##3{%
+ \slide@undottedcline{\slidenumberline{##3}{##2}}{}}%
+ \let\l@subslide\l@slide
+ \@startlos}
+
+
+% 7 - There were several problems when doing a global change of color
+% outside the "slide"environment (using the \color{ColorName} macro
+% of the `color' package) if this change was not done globally
+% (that is to say before the "\begin{document}") but inside the document,
+% for a part of the slides.
+% These problems can be seen specially for screen presentations,
+% when we want to use a dark background, so a light foreground color
+% for the text.
+% First, the header (defining for instance with the `fancyhdr' package)
+% changed of color one slide later and was restored one slide later too
+% if the change of the color was mas inside a group for some slides,
+% and second, the black color was forced by the footer.
+% We solve the first problem by usage of the same technique than the one
+% used by Seminar for global changes based on \special macros and made
+% before the "\begin{document}". We save the \specials in the
+% \saved@specials box and insert it at the beginning of the \@slidebox box
+% with the \insert@specials macro, as for the first slide.
+% And we solve the second problem by suppression of the command in the
+% hook which force the black color (defined in the `semcolor' package).
+% (reported by Denis Girou (CNRS/IDRIS) <Denis.Girou@idris.fr> - 1999-2002)
+
+% Built from \save@srlidespecials (for all slides excepted the first one)
+\def\save@slidespecials@ii{%
+ \begingroup
+ \output{%
+ \global\setbox\saved@specials=\box\@cclv
+ \global\wd\saved@specials=\z@
+ \global\dp\saved@specials=\z@
+ \global\ht\saved@specials=\z@}%
+ \hbox{}\penalty-\@M
+ \endgroup}%
+
+% The first slide is already managed, so we will define \save@slidespecials@i
+% started to the second one only...
+\def\save@slidespecials@i{}%
+
+\ifarticle\else
+ \def\insert@specials{%
+ \ifvoid\saved@specials\else
+ \setbox\@slidebox\hbox{\box\saved@specials\box\@slidebox}%
+ \fi
+ \global\let\save@slidespecials@i\save@slidespecials@ii}
+\fi
+
+\addto@hook{\before@newslide}{\save@slidespecials@i}
+\after@slidepage={}
+
+% 7 - To vertically correctly center the footer, if defined
+% (this is mainly visible when using the `fancyhdr' package, and specially
+% when a footer rule line is defined)
+% (reported by Denis Girou (CNRS/IDRIS) - <Denis.Girou@idris.fr> - April 1998)
+
+% 8 - Add-on to allow "full screen" backgrounds.
+% Seminar originally support only partial backgrounds, which doesn't cover
+% the full page but only the place of the text. It cannot be easily
+% modified, as there are dependancies between the header and the text.
+% So, we choose to define new macros \SeminarNewSlideFrameBackground
+% and \SeminarSlideFrameBackground to manage the full screen backgrounds,
+% designed on the model of the \newslideframe and \slideframe ones.
+% (added by Denis Girou (CNRS/IDRIS) <Denis.Girou@idris.fr> - Jun. 30, 1999)
+
+\newbox\Seminar@SlideBoxBackground
+
+\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:
+ % Some page styles like to know \textwidth:
+ \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{%
+ \box\Seminar@SlideBoxBackground
+ \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
+ \hbox{%
+ \slideheadfont\relax\strut
+ \hbox to\textwidth{\@oddhead}}%
+ \kern\z@}%
+ \vfill
+ \hbox to\textwidth{\hss\box\@slidebox\hss}%
+ \vfill
+ \vbox to\footheight{%
+ \vfill
+ \hbox{%
+ \slidefootfont\relax\strut
+ \hbox to\textwidth{\@oddfoot}}%
+ \vfill}}%
+ \hss}%
+ \ifrotateheaders\@ifrotateslide\rotate@slide\fi
+ \insert@specials
+ \let\protect\noexpand
+ \shipout\box\@slidebox
+ \endgroup
+ \let\firstmark\botmark}
+ \@ifundefined{fancyput@flag}{\def\fancyput@flag{-1}}{}
+\fi
+
+\def\finish@slide{%
+ \theSlideFrameBackground
+ \theslideframe
+ \add@slidelabel\slidelabel}
+
+
+\def\SeminarNewSlideFrameBackground#1{%
+ \@ifnextchar[{\@SeminarNewSlideFrameBackground{#1}}%
+ {\@SeminarNewSlideFrameBackground{#1}[]}}
+\def\@SeminarNewSlideFrameBackground#1[#2]{%
+ \@namedef{semsfbops@#1}{#2}%
+ \@namedef{semsfb@#1}##1}
+
+\def\SeminarSlideFrameBackground{\Seminar@SlideFrameBackground{Slide}}
+\def\Seminar@SlideFrameBackground#1{%
+ \@ifstar{\@testtrue\Seminar@@SlideFrameBackground{#1}}%
+ {\@testfalse\Seminar@@SlideFrameBackground{#1}}}
+\def\Seminar@@SlideFrameBackground#1{%
+ \@ifnextchar[{\Seminar@@@SlideFrameBackground{#1}}%
+ {\Seminar@@@SlideFrameBackground{#1}[]}}
+\def\Seminar@@@SlideFrameBackground#1[#2]#3{%
+ \def\@tempa{none}%
+ \def\@tempb{#3}%
+ \ifx\@tempa\@tempb
+ \@namedef{the#1FrameBackground}{\relax}%
+ \else
+ \ifx\@tempb\@empty
+ \@namedef{the#1FrameBackground}{}%
+ \else
+ \@ifundefined{semsfb@#3}%
+ {\@seminarerr{Background slide frame `#3' undefined}\@eha}%
+ {\if@test
+ \Seminar@@@@SlideFrameBackground{#1}[#2]{#3}%
+ \else
+ \@namedef{the#1FrameBackground}{%
+ \setbox\Seminar@SlideBoxBackground=\hbox{{%
+ \@nameuse{semsfbops@#3}#2%
+ \@nameuse{semsfb@#3}{\box\Seminar@SlideBoxBackground}}}}%
+ \fi}%
+ \fi
+ \fi}
+\def\Seminar@@@@SlideFrameBackground#1[#2]#3{%
+ \expandafter\let\expandafter\@tempa\csname the#1FrameBackground\endcsname
+ \edef\next{%
+ \noexpand\def\expandafter\noexpand\csname the#1FrameBackground\endcsname}%
+ \expandafter\next\expandafter{\@tempa
+ \setbox\Seminar@SlideBoxBackground=\hbox{{%
+ \@nameuse{semsfbops@#3}%
+ #2%
+ \@nameuse{semsfb@#3}{\box\Seminar@SlideBoxBackground}}}}}%
+
+\SeminarSlideFrameBackground{none}
+
+
+% 9 - For screen presentations, and specially animated graphics,
+% we need more than 10 overlays. We increase the limit to 676 (26^2).
+% (added by Denis Girou (CNRS/IDRIS) <Denis.Girou@idris.fr> - Dec. 5, 2001)
+
+\def\overlay#1{%
+ \ifoverlays\ifx\@overlay\relax\nooverlays@err\fi\fi
+ \ifslide
+ \@tempcnta=#1
+ \@testfalse
+ \ifnum\@tempcnta>-2 \ifnum\@tempcnta<677 \@testtrue\fi\fi
+ \if@test
+ \c@overlay=\@tempcnta
+ \ifnum\c@overlay=0
+ \advance\c@slide by -1
+ \refstepcounter{slide}%
+ \else
+ \advance\c@overlay by -1
+ \refstepcounter{overlay}%
+ \ifoverlays
+ \xdef\overlay@list{\overlay@list,\the\c@overlay}%
+ \fi
+ \fi
+ \ifoverlays
+ \@overlay{\the\c@overlay}%
+ \fi
+ \else
+ \@seminarerr{\string\overlay\space argument must be
+ an integer between 0 and 676}\@eha
+ \fi
+ \else
+ \@seminarerr{\string\overlay\space can only be used
+ in slide environments}\@eha
+ \fi
+ \ignorespaces}
+
+\def\overlay@loop{%
+ \begingroup
+ \overlay@prep
+ \c@overlay=1
+ \@whilenum\c@overlay<677
+ \do{%
+ \test@member{\the\c@overlay}{\overlay@list}%
+ \if@test
+ \make@overlay{\the\c@overlay}%
+ \finish@slide
+ \output@slide
+ \fi
+ \layer@loop{\the\c@overlay}%
+ \advance\c@overlay by 1}%
+ \endgroup}
+
+\def\theoverlay{{%
+\ifnum\c@overlay>26
+ \@tempcnta=\c@overlay
+ \advance\@tempcnta\m@ne
+ \divide\@tempcnta by 26
+ \multiply\@tempcnta by 26
+ \@tempcntb=\c@overlay
+ \advance\@tempcntb-\@tempcnta
+ \@tempcnta=\c@overlay
+ \advance\@tempcnta\m@ne
+ \divide\@tempcnta by 26
+ \theslide-\@alph{\@tempcnta}\@alph{\@tempcntb}%
+\else
+ \theslide-\alph{overlay}%
+\fi}}
+
+
+% 10 - Addition for management of cumulative and progressive overlays.
+% Due to PSTricks, Seminar had since the beginning the required
+% capabilities to manage overlays in various ways. The only thing
+% to do is to redefine the PSTricks \pst@initoverlay macro in the
+% relevant way.
+% (added by Denis Girou (CNRS/IDRIS) <Denis.Girou@idris.fr> - 1999-2001)
+
+% From `semcolor'
+\def\make@overlay#1{%
+ \setbox\@slidebox=\hbox{%
+ \pst@initoverlay{#1}%
+ \pst@Verb{0 \tx@BOL }%
+ \copy\@@slidebox
+ \pst@Verb{-1 \tx@BOL }}}
+
+% We must redefine too the /BeginOL macro form pstricks.pro, as "all" is now -1
+% \def\pst@initoverlay#1{\pst@Verb{\tx@InitOL /TheOL (#1) def}}
+\def\pst@initoverlay#1{%
+\pst@Verb{
+/BeginOL {
+ dup -1 eq exch TheOL eq or
+ {IfVisible not
+ {Visible /IfVisible true def}
+ if}
+ {IfVisible
+ {Invisible /IfVisible false def}
+ if}
+ ifelse} def
+\tx@InitOL end
+/TheOL #1 def}}
+
+\def\pst@overlay#1{%
+\edef\curr@overlay{#1}%
+\pst@Verb{#1 \tx@BOL }%
+\aftergroup\pst@endoverlay}
+\def\pst@endoverlay{%
+\pst@Verb{\curr@overlay\space \tx@BOL }}
+
+% Cumulative overlays
+% ===================
+
+% Cumulative overlays, to force to print all preceding ones
+\def\SeminarCumulativeOverlays{%
+\def\pst@initoverlay##1{%
+\pst@Verb{
+/BeginOL {
+ dup -1 eq exch TheOL le or
+ {IfVisible not
+ {Visible /IfVisible true def}
+ if}
+ {IfVisible
+ {Invisible /IfVisible false def}
+ if}
+ ifelse} def
+\tx@InitOL end
+/TheOL ##1 def}}%
+}
+
+% Alternative method for same goal (needed when PSTricks nodes are used)
+\def\SeminarAltCumulativeOverlays{%
+\def\pst@initoverlay##1{%
+\pst@Verb{
+\tx@InitOL end
+/Visible {initclip} def
+/Invisible {CP newpath OLUnit itransform moveto clip newpath moveto} def
+/TheOL ##1 def}}
+}
+
+% Progressive overlays
+% ===================
+
+% Progressive overlays (at step i, only overlays 0 and i are shown)
+\def\SeminarProgressiveOverlays{%
+\def\pst@initoverlay##1{%
+\pst@Verb{%
+/BeginOL {%
+ /NumOL ED
+ NumOL -1 eq NumOL 0 eq NumOL TheOL eq or or
+ {IfVisible not
+ {Visible /IfVisible true def}
+ if}
+ {IfVisible
+ {Invisible /IfVisible false def}
+ if}
+ ifelse} def
+\tx@InitOL end
+/TheOL ##1 def}}}
+
+% Alternative method for the same goal (needed when PSTricks nodes are used)
+\def\SeminarAltProgressiveOverlays{%
+\def\pst@initoverlay##1{%
+\pst@Verb{%
+/BeginOL {%
+ /NumOL ED
+ NumOL -1 eq NumOL 0 eq NumOL TheOL eq or or
+ {IfVisible not
+ {Visible /IfVisible true def}
+ if}
+ {IfVisible
+ {Invisible /IfVisible false def}
+ if}
+ ifelse} def
+\tx@InitOL end
+/Visible {initclip} def
+/Invisible {CP newpath OLUnit itransform moveto clip newpath moveto} def
+/TheOL ##1 def}}}
+
+% Generation of the next overlay (minor add-on)
+% =============================================
+% (it increment automatically the number of the current overlay)
+\providecommand{\SeminarNextOverlay}[1]{%
+\addtocounter{overlay}{1}%
+\begin{overlay}{\the\c@overlay}#1\end{overlay}}
+
+% To force all items in the various list environments to appear
+% in their own overlay (minor add-on)
+% =============================================================
+\let\itemORIG\item
+
+\def\SeminarItemInOverlay{%
+\def\item{%
+\addtocounter{overlay}{1}%
+\overlay{\the\c@overlay}%
+\itemORIG}}
+
+\catcode`\@=\TheAtCode\relax
+\endinput
+%% END seminar.bg2
diff --git a/macros/latex/contrib/seminar/latex/seminar.bg3 b/macros/latex/contrib/seminar/latex/seminar.bg3
new file mode 100644
index 0000000000..33deadae09
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/seminar.bg3
@@ -0,0 +1,608 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% seminar.bg3 --- Corrections for compatibility problems and new bugs
+%% found in the Seminar package, and few new additions
+%% to help overlays management for PDF output files.
+%% (see also the seminar.bug file in Seminar distribution)
+%%
+%% Disclaimer: this file is mine and doesn't engage TVZ!
+%%
+%% Note: insert it after \usepackage{graphicx} if you use `graphicx'
+%% and after \usepackage{longtable} if you use `longtable'
+%%
+%% Author : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+%% Created the : 1995
+%% Last mod. by : Patrice MEGRET (FPMs - Belgium) <patrice.megret@fpms.ac.be>
+%% Last mod. the : Sunday February 29 2004
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\FileVersion{2.3}
+\def\FileDate{2014/05/12}
+\typeout{seminar.bg3: various corrections for the Seminar document class^^J%
+ added since seminar.bug and few add-ons for overlays^^J%
+ (Version \FileVersion\space of <\FileDate> (P.M.))}
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+% PM modification begin PM December 6, 2003
+% ce nouveau test permet de choisir entre un footer
+% verticalement centré \footervcenter = true (default)
+% ou non \footervcenter = false
+\newif\iffootervcenter \footervcentertrue
+% PM modification end December 6, 2003
+
+
+% 1 - To correct a bug in the note environment
+% (reported by Denis Girou (CNRS/IDRIS) <Denis.Girou@idris.fr> - 1995)
+\@savsf=1
+
+
+% 2 - To correct several bugs to generate a list of slides with subsection
+% entries
+% (reported by Denis Girou (CNRS/IDRIS) <Denis.Girou@idris.fr> - Jul. 18, 1995)
+% - To clear the subheading when a new heading is defined
+% (reported by Axel Thimm - <thimm@physik.fu-berlin.de> - June 5, 1997)
+% - To assure coherence between heading and subheading when used
+% in header/footer, for article mode
+% (reported by Axel Thimm - <thimm@physik.fu-berlin.de> - June 5, 1997)
+% - Improvements (\refstepcounter and \@addtoreset) by Jeremy Gibbons
+% <jgibbons@brookes.ac.uk> - Sep. 30, 1997
+
+% Used by the \slide@subheading macro but undefined
+\def\theslidesubsection{\theslidesection.\arabic{slidesubsection}}
+
+\def\slide@heading[#1]#2{%
+ \refstepcounter{slidesection}%
+ \@addtoreset{slidesubsection}{slidesection}
+ \addtocontents{los}{\protect\l@slide
+ {\the\c@slidesection}{\ignorespaces#1}{\@SCTR}}%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty\else
+ {\edef\@currentlabel{\csname p@slidesection\endcsname\theslidesection}%
+ \makeslideheading{#2}}%
+ \fi
+ \gdef\theslideheading{#1}%
+ \gdef\theslidesubheading{}%
+}
+
+\def\slide@subheading[#1]#2{%
+ \refstepcounter{slidesubsection}%
+ \addtocontents{los}{\protect\l@subslide
+ {\the\c@slidesubsection}{\ignorespaces#1}{\@SCTR}}%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty\else
+ {\edef\@currentlabel{\csname p@slidesubsection\endcsname
+ \theslidesubsection}\makeslidesubheading{#2}}%
+ \fi
+ \gdef\theslidesubheading{#1}%
+}
+
+
+% 3 - To correct a bug in the \slidecontents macro
+% (reported by Denis Roegel (LORIA) <Denis.Roegel@loria.fr> - Sep. 22, 1996)
+
+\long\def\@gobblethree #1#2#3{}
+
+\def\slide@contents{%
+ \def\l@slide##1##2##3{%
+ \slide@cline{\slidenumberline{##1}{##2}}{##3}}%
+ \let\l@subslide\@gobblethree
+ \@startlos}
+
+
+% 4 - To solve incompatibility between the `graphicx' package and Seminar.
+% The \espfslidesize Seminar macro work only with the old version of
+% the `epsfig' package, so with \includegraphics the PostScript files are
+% always scaled without the possibility to leave them to there natural
+% size. And also these files are not correctly scaled when we switch
+% from normal to article mode under Seminar. So, we must redefined the
+% \epsfslidesize macro of Seminar and modify few internal macros of
+% `graphicx'.
+% (Note: I consider only the `graphicX' package, not the 'graphicS' one)
+% (reported by Karl Tombre (LORIA) <Karl.Tombre@loria.fr> and
+% Denis Roegel (LORIA) <Denis.Roegel@loria.fr> - Jan. 16, 1997)
+
+\def\GraphicsNotScaled{%
+\ifx\Gin@viewport\undefined
+\else % Graphicx package detected
+\def\Gin@i{%
+ \def\Gin@req@sizes{%
+ \Gin@nat@height=\inverseslidesmag\Gin@nat@height
+ \Gin@nat@width=\inverseslidesmag\Gin@nat@width
+ \Gin@req@height\Gin@nat@height
+ \Gin@req@width\Gin@nat@width}%
+ \@ifnextchar[\Gin@ii{\Gin@ii[]}}
+\define@key{Gin}{width}{%
+\@tempdima=##1\@tempdima=\inverseslidesmag\@tempdima\def\Gin@ewidth{\@tempdima}}
+\define@key{Gin}{height}{%
+\@tempdima=##1\@tempdima=\inverseslidesmag\@tempdima\def\Gin@eheight{\@tempdima}}
+\define@key{Gin}{totalheight}{%
+\def\Gin@eresize{\totalheight}%
+\@tempdima=##1\@tempdima=\inverseslidesmag\@tempdima\def\Gin@eheight{\@tempdima}}
+\fi}
+
+\def\epsfslidesize{%
+\let\epsfsize\slide@epsfsize
+\GraphicsNotScaled}
+
+
+% 5 - To solve incompatibily between the LongTable package and Seminar
+% (reported by Bhaskar Manda (UIUC) <bhaskar@or4.me.uiuc.edu> - May 7, 1997)
+% - Problem in article format seen later
+% (reported by Axel Thimm <thimm@physik.fu-berlin.de> - June 5, 1997)
+
+% From seminar.cls
+\def\slide@outputLT{% (from \slide@output)
+ \@makeslide
+ \@testfalse
+ \ifnotesonly\else
+ \iflandscape
+ \ifnum\@landscapeonly>-1 \os@test\fi
+ \else
+ \ifnum\@landscapeonly<1 \os@test\fi
+ \fi
+ \fi
+ \if@test
+ \reset@slideoutput
+ \@@makeslideLT
+ \process@slide
+ \fi
+ \refstepcounter{slide}}
+\def\@@makeslideLT{% (from \@@makeslide)
+ \overfullslide@warning
+ \setbox\@slidebox\hbox{%
+ \vfuzz=\slidefuzz\relax
+ \vbox to\slide@vsize{%
+ \box\@outputbox
+ \ifcenterslides\vskip\z@ plus .0001fil \fi
+ \unvbox\@slidebox
+ \vskip\z@ plus .0001fil}%
+ \the\after@slidepage}%
+ \wd\@slidebox\textwidth}
+
+% From LongTable
+\def\LT@output{%
+ \ifnum\outputpenalty <-\@Mi
+ \ifnum\outputpenalty > -\LT@end@pen
+ \LT@err{floats and marginpars not allowed in a longtable}\@ehc
+ \else
+ \setbox\z@\vbox{\unvbox\@cclv}%
+ \ifdim \ht\LT@lastfoot>\ht\LT@foot
+ \dimen@\pagegoal
+ \advance\dimen@-\ht\LT@lastfoot
+ \ifdim\dimen@<\ht\z@
+ \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
+ \@makecol
+ \slide@outputLT
+ \setbox\z@\vbox{\box\LT@head}%
+ \fi
+ \fi
+ \global\@colroom\@colht
+ \global\vsize\@colht
+ \vbox
+ {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
+ \fi
+ \else
+ \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
+ \@makecol
+ \slide@outputLT
+ \copy\LT@head
+ \fi}
+
+% We must adjust \textheight. Sometimes, you must increase it a little by
+% something like \addtolength{\textheight}{5mm}
+% But if you use slides like \begin{slide*}[15cm,10cm]
+% you must define locally \textheight=15cm
+\addtolength{\textheight}{-\headheight}
+
+
+% 6 - To allow automatic changes of language dependent labels,
+% for instance by loading the `french' package after Seminar
+% (suggested by Bernard Gaulle (IDRIS) <gaulle@idris.fr> - Nov. 20, 1997)
+% From seminar.cls
+\def\slidename{Slide}
+\def\slidelabel{\bf\slidename{} \theslide}
+% From slidesec.sty
+\def\listslidename{List of Slides}%
+\def\listofslides{\section*{\listslidename%
+\@mkboth{\expandafter\MakeUppercase\listslidename}%
+ {\expandafter\MakeUppercase\listslidename}}%
+ \def\l@slide##1##2##3{%
+ \slide@undottedcline{\slidenumberline{##3}{##2}}{}}%
+ \let\l@subslide\l@slide
+ \@startlos}
+
+
+% 7 - There were several problems when doing a global change of color
+% outside the "slide"environment (using the \color{ColorName} macro
+% of the `color' package) if this change was not done globally
+% (that is to say before the "\begin{document}") but inside the document,
+% for a part of the slides.
+% These problems can be seen specially for screen presentations,
+% when we want to use a dark background, so a light foreground color
+% for the text.
+% First, the header (defining for instance with the `fancyhdr' package)
+% changed of color one slide later and was restored one slide later too
+% if the change of the color was mas inside a group for some slides,
+% and second, the black color was forced by the footer.
+% We solve the first problem by usage of the same technique than the one
+% used by Seminar for global changes based on \special macros and made
+% before the "\begin{document}". We save the \specials in the
+% \saved@specials box and insert it at the beginning of the \@slidebox box
+% with the \insert@specials macro, as for the first slide.
+% And we solve the second problem by suppression of the command in the
+% hook which force the black color (defined in the `semcolor' package).
+% (reported by Denis Girou (CNRS/IDRIS) <Denis.Girou@idris.fr> - 1999-2002)
+
+% Built from \save@srlidespecials (for all slides excepted the first one)
+\def\save@slidespecials@ii{%
+ \begingroup
+ \output{%
+ \global\setbox\saved@specials=\box\@cclv
+ \global\wd\saved@specials=\z@
+ \global\dp\saved@specials=\z@
+ \global\ht\saved@specials=\z@}%
+ \hbox{}\penalty-\@M
+ \endgroup}%
+
+% The first slide is already managed, so we will define \save@slidespecials@i
+% started to the second one only...
+\def\save@slidespecials@i{}%
+
+\ifarticle\else
+ \def\insert@specials{%
+ \ifvoid\saved@specials\else
+ \setbox\@slidebox\hbox{\box\saved@specials\box\@slidebox}%
+ \fi
+ \global\let\save@slidespecials@i\save@slidespecials@ii}
+\fi
+
+\addto@hook{\before@newslide}{\save@slidespecials@i}
+
+\after@slidepage={}
+
+
+% 7 - To vertically correctly center the footer, if defined
+% (this is mainly visible when using the `fancyhdr' package, and specially
+% when a footer rule line is defined)
+% (reported by Denis Girou (CNRS/IDRIS) - <Denis.Girou@idris.fr> - April 1998)
+
+% 8 - Add-on to allow "full screen" backgrounds.
+% Seminar originally support only partial backgrounds, which doesn't cover
+% the full page but only the place of the text. It cannot be easily
+% modified, as there are dependancies between the header and the text.
+% So, we choose to define new macros \SeminarNewSlideFrameBackground
+% and \SeminarSlideFrameBackground to manage the full screen backgrounds,
+% designed on the model of the \newslideframe and \slideframe ones.
+% (added by Denis Girou (CNRS/IDRIS) <Denis.Girou@idris.fr> - Jun. 30, 1999)
+
+\newbox\Seminar@SlideBoxBackground
+\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:
+ % Some page styles like to know \textwidth:
+ \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{%
+ \box\Seminar@SlideBoxBackground
+ \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
+ \hbox{%
+ \slideheadfont\relax\strut
+ \hbox to\textwidth{\@oddhead}}%
+ \kern\z@}%
+ \vfill
+ \hbox to\textwidth{\hss\box\@slidebox\hss}%
+ \vfill
+ \vbox to\footheight{%
+ \iffootervcenter
+ \vfill
+ \fi
+ \hbox{%
+ \slidefootfont\relax\strut
+ \hbox to\textwidth{\@oddfoot}}%
+ \vfill}}%
+ \hss}%
+ \ifrotateheaders\@ifrotateslide\rotate@slide\fi
+ \insert@specials
+ \let\protect\noexpand
+ \shipout\box\@slidebox
+ \endgroup
+ \let\firstmark\botmark}
+ \@ifundefined{fancyput@flag}{\def\fancyput@flag{-1}}{}
+\fi
+
+
+\def\finish@slide{%
+ \theSlideFrameBackground
+ \theslideframe
+ \add@slidelabel\slidelabel}
+
+
+\def\SeminarNewSlideFrameBackground#1{%
+ \@ifnextchar[{\@SeminarNewSlideFrameBackground{#1}}%
+ {\@SeminarNewSlideFrameBackground{#1}[]}}
+\def\@SeminarNewSlideFrameBackground#1[#2]{%
+ \@namedef{semsfbops@#1}{#2}%
+ \@namedef{semsfb@#1}##1}
+
+\def\SeminarSlideFrameBackground{\Seminar@SlideFrameBackground{Slide}}
+\def\Seminar@SlideFrameBackground#1{%
+ \@ifstar{\@testtrue\Seminar@@SlideFrameBackground{#1}}%
+ {\@testfalse\Seminar@@SlideFrameBackground{#1}}}
+\def\Seminar@@SlideFrameBackground#1{%
+ \@ifnextchar[{\Seminar@@@SlideFrameBackground{#1}}%
+ {\Seminar@@@SlideFrameBackground{#1}[]}}
+\def\Seminar@@@SlideFrameBackground#1[#2]#3{%
+ \def\@tempa{none}%
+ \def\@tempb{#3}%
+ \ifx\@tempa\@tempb
+ \@namedef{the#1FrameBackground}{\relax}%
+ \else
+ \ifx\@tempb\@empty
+ \@namedef{the#1FrameBackground}{}%
+ \else
+ \@ifundefined{semsfb@#3}%
+ {\@seminarerr{Background slide frame `#3' undefined}\@eha}%
+ {\if@test
+ \Seminar@@@@SlideFrameBackground{#1}[#2]{#3}%
+ \else
+ \@namedef{the#1FrameBackground}{%
+ \setbox\Seminar@SlideBoxBackground=\hbox{{%
+ \@nameuse{semsfbops@#3}#2%
+ \@nameuse{semsfb@#3}{\box\Seminar@SlideBoxBackground}}}}%
+ \fi}%
+ \fi
+ \fi}
+\def\Seminar@@@@SlideFrameBackground#1[#2]#3{%
+ \expandafter\let\expandafter\@tempa\csname the#1FrameBackground\endcsname
+ \edef\next{%
+ \noexpand\def\expandafter\noexpand\csname the#1FrameBackground\endcsname}%
+ \expandafter\next\expandafter{\@tempa
+ \setbox\Seminar@SlideBoxBackground=\hbox{{%
+ \@nameuse{semsfbops@#3}%
+ #2%
+ \@nameuse{semsfb@#3}{\box\Seminar@SlideBoxBackground}}}}}%
+
+\SeminarSlideFrameBackground{none}
+
+
+% 9 - For screen presentations, and specially animated graphics,
+% we need more than 10 overlays. We increase the limit to 676 (26^2).
+% (added by Denis Girou (CNRS/IDRIS) <Denis.Girou@idris.fr> - Dec. 5, 2001)
+
+\def\overlay#1{%
+ \ifoverlays\ifx\@overlay\relax\nooverlays@err\fi\fi
+ \ifslide
+ \@tempcnta=#1
+ \@testfalse
+ \ifnum\@tempcnta>-2 \ifnum\@tempcnta<677 \@testtrue\fi\fi
+ \if@test
+ \c@overlay=\@tempcnta
+ \ifnum\c@overlay=0
+ \advance\c@slide by -1
+ \refstepcounter{slide}%
+ \else
+ \advance\c@overlay by -1
+ \refstepcounter{overlay}%
+ \ifoverlays
+ \xdef\overlay@list{\overlay@list,\the\c@overlay}%
+ \fi
+ \fi
+ \ifoverlays
+ \@overlay{\the\c@overlay}%
+ \fi
+ \else
+ \@seminarerr{\string\overlay\space argument must be
+ an integer between 0 and 676}\@eha
+ \fi
+ \else
+ \@seminarerr{\string\overlay\space can only be used
+ in slide environments}\@eha
+ \fi
+ \ignorespaces}
+
+\def\overlay@loop{%
+ \begingroup
+ \overlay@prep
+ \c@overlay=1
+ \@whilenum\c@overlay<677
+ \do{%
+ \test@member{\the\c@overlay}{\overlay@list}%
+ \if@test
+ \make@overlay{\the\c@overlay}%
+ \finish@slide
+ \output@slide
+ \fi
+ \layer@loop{\the\c@overlay}%
+ \advance\c@overlay by 1}%
+ \endgroup}
+
+\def\theoverlay{{%
+\ifnum\c@overlay>26
+ \@tempcnta=\c@overlay
+ \advance\@tempcnta\m@ne
+ \divide\@tempcnta by 26
+ \multiply\@tempcnta by 26
+ \@tempcntb=\c@overlay
+ \advance\@tempcntb-\@tempcnta
+ \@tempcnta=\c@overlay
+ \advance\@tempcnta\m@ne
+ \divide\@tempcnta by 26
+ \theslide-\@alph{\@tempcnta}\@alph{\@tempcntb}%
+\else
+ \theslide-\alph{overlay}%
+\fi}}
+
+
+% 10 - Addition for management of cumulative and progressive overlays.
+% Due to PSTricks, Seminar had since the beginning the required
+% capabilities to manage overlays in various ways. The only thing
+% to do is to redefine the PSTricks \pst@initoverlay macro in the
+% relevant way.
+% (added by Denis Girou (CNRS/IDRIS) <Denis.Girou@idris.fr> - 1999-2001)
+
+% From `semcolor'
+\def\make@overlay#1{%
+ \setbox\@slidebox=\hbox{%
+ \pst@initoverlay{#1}%
+ \pst@Verb{0 \tx@BOL }%
+ \copy\@@slidebox
+ \pst@Verb{-1 \tx@BOL }}}
+
+\iffalse
+% We must redefine too the /BeginOL macro form pstricks.pro, as "all" is now -1
+\def\pst@initoverlay#1{%
+\pst@Verb{%
+/BeginOL {%
+ dup -1 eq exch TheOL eq or
+ {IfVisible not
+ {Visible /IfVisible true def}
+ if}
+ {IfVisible
+ {Invisible /IfVisible false def}
+ if}
+ ifelse} def
+\tx@InitOL end
+/TheOL #1 def}}
+
+\def\pst@overlay#1{%
+\edef\curr@overlay{#1}%
+\pst@Verb{#1 \tx@BOL }%
+\aftergroup\pst@endoverlay}
+\def\pst@endoverlay{%
+\pst@Verb{\curr@overlay\space \tx@BOL }}
+\fi
+
+% Cumulative overlays
+% ===================
+
+% Cumulative overlays, to force to print all preceding ones
+\def\SeminarCumulativeOverlays{%
+\def\pst@initoverlay##1{%
+\pst@Verb{%
+/BeginOL {%
+ dup -1 eq exch TheOL le or
+ {IfVisible not
+ {Visible /IfVisible true def}
+ if}
+ {IfVisible
+ {Invisible /IfVisible false def}
+ if}
+ ifelse} def
+\tx@InitOL end
+/TheOL ##1 def}}}
+
+% Alternative method for same goal (needed when PSTricks nodes are used)
+\def\SeminarAltCumulativeOverlays{%
+\def\pst@initoverlay##1{%
+\pst@Verb{%
+/BeginOL {%
+ dup -1 eq exch TheOL le or
+ {IfVisible not
+ {Visible /IfVisible true def}
+ if}
+ {IfVisible
+ {Invisible /IfVisible false def}
+ if}
+ ifelse} def
+\tx@InitOL end
+/Visible {initclip} def
+/Invisible {CP newpath OLUnit itransform moveto clip newpath moveto} def
+/TheOL ##1 def}}}
+
+% Progressive overlays
+% ====================
+
+% Progressive overlays (at step i, only overlays 0 and i are shown)
+\def\SeminarProgressiveOverlays{%
+\def\pst@initoverlay##1{%
+\pst@Verb{%
+/BeginOL {%
+ /NumOL ED
+ NumOL -1 eq NumOL 0 eq NumOL TheOL eq or or
+ {IfVisible not
+ {Visible /IfVisible true def}
+ if}
+ {IfVisible
+ {Invisible /IfVisible false def}
+ if}
+ ifelse} def
+\tx@InitOL end
+/TheOL ##1 def}}}
+
+% Alternative method for the same goal (needed when PSTricks nodes are used)
+\def\SeminarAltProgressiveOverlays{%
+\def\pst@initoverlay##1{%
+\pst@Verb{%
+/BeginOL {%
+ /NumOL ED
+ NumOL -1 eq NumOL 0 eq NumOL TheOL eq or or
+ {IfVisible not
+ {Visible /IfVisible true def}
+ if}
+ {IfVisible
+ {Invisible /IfVisible false def}
+ if}
+ ifelse} def
+\tx@InitOL end
+/Visible {initclip} def
+/Invisible {CP newpath OLUnit itransform moveto clip newpath moveto} def
+/TheOL ##1 def}}}
+
+% Generation of the next overlay (minor add-on)
+% =============================================
+% (it increment automatically the number of the current overlay)
+\providecommand{\SeminarNextOverlay}[1]{%
+\addtocounter{overlay}{1}%
+\begin{overlay}{\the\c@overlay}#1\end{overlay}}
+
+% To force all items in the various list environments to appear
+% in their own overlay (minor add-on)
+% ==================================
+\let\itemORIG\item
+
+\def\SeminarItemInOverlay{%
+\def\item{%
+\addtocounter{overlay}{1}%
+\overlay{\the\c@overlay}%
+\itemORIG}}
+
+\catcode`\@=\TheAtCode\relax
+\endinput
+%% END seminar.bg3
diff --git a/macros/latex/contrib/seminar/latex/seminar.bug b/macros/latex/contrib/seminar/latex/seminar.bug
new file mode 100644
index 0000000000..a0aafe664f
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/seminar.bug
@@ -0,0 +1,209 @@
+%%
+%% 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.
+%%
+%% BEGIN seminar.bug
+% LAST MODIFIED: December 1997
+% The latest version of this file can be obtained from Princeton.EDU.
+
+% This file list some bugs and latebreaking news for seminar.sty,
+% version 1.0, released April 1, 1993.
+
+% 1. Typo in the user's guide: \espfslidesize should be \epsfslidesize.
+
+% 2. fancyheadings.sty does not work well with slides.
+% WORKAROUND: Ignore the footnote in the User's Guide that discusses this.
+% Instead:
+%
+% - If you want the width of the header to be "\textwidth"
+% (the usual state of affairs), then put
+%
+% \renewcommand{\headwidth}{\textwidth}
+%
+% in the preamble and do not change "\headwidth" after that.
+%
+% - If you want to set the width to something else, then you have to scale
+% it appropriately. E.g., use
+%
+% \setslidelength{\headwidth}{<dim>}
+%
+% or, if are using the "fancy" page style with both the article and
+% slides formats, use
+% \ifarticle
+% \setartlength{\headwidth}{<dim1>}
+% \else
+% \setslidelength{\headwidth}{<dim2>}
+% \fi
+
+% 3. Some people prefer that the headers/footers automatically adjust their
+% size to the width of the framed slide (I don't, which I guess is why
+% seminar.sty does not work this way.) I have added an option for this.
+% Put the command
+%
+% \autoslidemarginstrue
+%
+% in the preamble. You must also input this file (seminar.bug), which
+% contains the patch.
+
+% 4. The optional argument in \twoup[int] does not work with the
+% portrait option and slides format.
+% PATCH: Input this file.
+
+% 5. Slide labels can come out in the wrong size font.
+% PATCH: Input this file.
+
+% 6. When \newslide is used inside a list environment, subsequent nested
+% list environments can have the wrong line width.
+% PATCH: Input this file.
+
+% 7. \overlaypagestyle and \layerpagestyle commands ignored.
+% PATCH: Input this file, AFTER inputting semlayer.sty.
+
+% 8. boxedEPS.tex won't work inside slide environments (because seminar.sty
+% erroneously modifies \read so that it is preceded by \immediate).
+% PATCH: Input this file.
+
+%%%% PATCHES
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+% 3.
+\newif\ifautoslidemargins
+\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:
+ % Some page styles like to know \textwidth:
+ \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{%
+ \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
+ \hbox{%
+ \slideheadfont\relax\strut
+ \hbox to\textwidth{\@oddhead}}%
+ \kern\z@}%
+ \vfill
+ \hbox to\textwidth{\hss\box\@slidebox\hss}%
+ \vfill
+ \vbox to\footheight{%
+ \hbox{%
+ \slidefootfont\relax\strut
+ \hbox to\textwidth{\@oddfoot}}%
+ \vfill}}%
+ \hss}%
+ \ifrotateheaders\@ifrotateslide\rotate@slide\fi
+ \insert@specials
+ \shipout\box\@slidebox
+ \endgroup
+ \let\firstmark\botmark}
+ \@ifundefined{fancyput@flag}{\def\fancyput@flag{-1}}{}
+\fi
+
+% 4.
+\ifarticle\else
+ \ifportrait
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@slidesmag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -3\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperwidth}{\paperheight}%
+ \target{\@magstep\@tempcntb}{\paperheight}{\paperwidth}%
+ \printlandscapetrue
+ \else
+ \@seminarerr{Slides magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\slidesmag##1{\@semtwoupmagerr\slidesmag}}
+ \fi
+\fi
+
+% 5.
+\def\reset@slideoutput{%
+ \let\par\@@par
+ \reset@font
+ \normalsize
+ \def\baselinestretch{1}%
+ \@nameuse{1\@ptsize @semptsize}%
+ \catcode`\ =10
+ \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii}
+
+% 6.
+\def\extraslideheight#1{%
+ \@tempdima #1\relax
+ \edef\X@SlideHeight{\number\@tempdima sp}
+ \ifslide\set@slideheight\fi}
+\def\set@slideheight{%
+ \iflandscape
+ \vsize=\inverseslidesmag\slideheight
+ \else
+ \vsize=\inverseslidesmag\slidewidth
+ \fi
+ \edef\slide@vsize{\number\vsize sp}%
+ \textheight\vsize
+ \advance\vsize\X@SlideHeight\relax}
+\def\newslide{%
+ \par\penalty-\@M
+ \def\do##1{\setcounter{##1}\z@}\slide@reset
+ \the\before@newslide}
+
+% 7. Must be input after semlayer.sty.
+\def\layer@prep{%
+ \ifarticle\else\pagestyle{\layer@pagestyle}\fi
+ \let\thepage\thelayer
+ \ifx\thelayerframe\@empty\else\let\theslideframe\thelayerframe\fi
+ \let\slidelabel\layerlabel}
+\def\overlay@prep{%
+ \ifarticle\else\pagestyle{\overlay@pagestyle}\fi
+ \let\thepage\theoverlay
+ \ifx\theoverlayframe\@empty\else\let\theslideframe\theoverlayframe\fi
+ \let\slidelabel\overlaylabel}
+
+
+\catcode`\@=\TheAtCode\relax
+\endinput
+%% END seminar.bug
diff --git a/macros/latex/contrib/seminar/latex/seminar.cls b/macros/latex/contrib/seminar/latex/seminar.cls
new file mode 100644
index 0000000000..b2d6bfeec0
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/seminar.cls
@@ -0,0 +1,1218 @@
+%% BEGIN seminar.cls
+%% LaTeX2e seminar class, derived by Sebastian Rahtz from
+%% LaTeX document style `seminar', for use with LaTeX v2.09.
+%% generated on <1993/10/8>.
+%% Fixes from David Carlisle, Denis Girou,
+%% and Frank Küster/Günter Milde (a4paper option fix)
+%%
+\def\fileversion{1.63}
+\def\filedate{2021/06/30}
+%%
+%% This is a style for typesetting notes and slides.
+%%
+%% COPYRIGHT 1993--, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%% 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.
+%%
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{seminar}[\filedate, \fileversion]
+\typeout{%
+ Documentclass: `seminar' v\fileversion \space <\filedate> (tvz,hv)}
+%%%%%%%%%%%%%%%% fix hv
+\def\tx@BOL{}
+%%%%%%%%%%%%%%%
+\def\test@member#1#2{%
+ \edef\@tempg{,#2,#1,}%
+ \edef\@temph{####1,#1,}%
+ \expandafter\def\expandafter\@temph\@temph##2\@nil{%
+ \def\@tempg{##2}%
+ \ifx\@tempg\@empty\@testfalse\else\@testtrue\fi}%
+ \expandafter\@temph\@tempg\@nil}
+\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
+\@ifundefined{reset@font}{\def\reset@font{\normalsize\rm}}{}
+\def\@seminarerr#1#2{%
+ \edef\@tempc{#2}\expandafter\errhelp\expandafter{\@tempc}%
+ \typeout{^^JSeminar.sty error.\space\space\space
+ Type \space H <return> \space for immediate help.^^J}%
+ \errmessage{#1^^J}}
+\def\notslide@err#1{\message{Cannot use \string#1 in slide environments}}
+\def\new@slidebox{\alloc@4\box\chardef\insc@unt}
+\RequirePackage{pst-ovl}
+%%
+%\RequirePackage{geometry}
+%\geometry{dvips,paperwidth=8.5in,paperheight=11in}
+\newdimen\slidewidth \slidewidth 8.5in
+\newdimen\slideheight \slideheight 6.3in
+\paperwidth=8.5in
+\paperheight=11in
+%%
+\def\addto@preamblecmds#1{%
+ \begingroup
+ \def\do{\noexpand\do\noexpand}%
+ \xdef\@preamblecmds{\@preamblecmds\do#1}%
+ \endgroup}
+\addto@preamblecmds{\addto@preamblecmds\do\@preamblecmds}
+\def\sem@temp#1{\@ifundefined{if#1}%
+ {\def\@tempa{\csname newif\endcsname}
+ \expandafter\@tempa\csname if#1\endcsname}{}}
+\sem@temp{article}{}
+\sem@temp{slidesonly}{}
+\sem@temp{notes}{}
+\sem@temp{notesonly}{}
+\sem@temp{notesonlystar}{}
+\sem@temp{portrait}{}
+\DeclareOption{article}{\articletrue}
+\DeclareOption{noxcomment}{\def\xcomment@hook{}}
+\DeclareOption{slidesonly}{\slidesonlytrue\notesfalse\notesonlyfalse}
+\DeclareOption{notes}{\notestrue\slidesonlyfalse\notesonlyfalse}
+\DeclareOption{notesonly}{\notesonlytrue\slidesonlyfalse\notesfalse}
+\DeclareOption{notesonly*}{%
+ \notesonlytrue\slidesonlyfalse\notesfalse\notesonlystartrue}
+\DeclareOption{portrait}{\portraittrue}
+\DeclareOption{a4}{%
+ \paperwidth 210mm
+ \paperheight 297mm
+% \geometry{paperwidth=210mm,paperheight=297mm}
+ \slidewidth 222mm
+ \slideheight 152mm\relax}
+\DeclareOption{a4paper}{\csname ds@a4\endcsname}%
+\DeclareOption{semrot}{\AtEndOfClass{\input{semrot.sty}}}
+\DeclareOption{semhelv}{\AtEndOfClass{\input{semhelv.sty}}}
+\DeclareOption{semcolor}{\AtEndOfClass{\input{semcolor.sty}}}
+\DeclareOption{semlcmss}{\AtEndOfClass{\input{semlcmss.sty}}}
+\DeclareOption{slidesec}{\AtEndOfClass{\input{slidesec.sty}}}
+\DeclareOption{semlayer}{\AtEndOfClass{\input{semlayer.sty}}}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions
+\ifnotesonly\else\notesonlystarfalse\fi
+\newdimen\footheight % seminar.sty v1.0 uses it, but its not in LaTeX2e.
+% Don't want these changed by article.cls:
+\let\sem@paperheight\paperheight
+\let\sem@paperwidth\paperwidth
+\let\paperheight\footheight
+\let\paperwidth\footheight
+\LoadClass{article}
+
+\RequirePackage{pst-ovl}% hv 20131224
+
+\renewcommand\normalsize{%
+ \@setfontsize\normalsize\@xpt\@xiipt
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@slide@listi}
+\let\paperheight\sem@paperheight
+\let\paperwidth\sem@paperwidth
+\RequirePackage{sem-page}
+\newtoks\before@document
+\newtoks\after@document
+\let\xcomment@hook\relax
+\before@document{\the\before@document}
+%\before@document{\endgroup\the\before@document\begingroup}
+\after@document{\the\after@document\xcomment@hook}
+\expandafter\@temptokena\expandafter{\document}
+\edef\document{\the\before@document\the\@temptokena\the\after@document}
+\before@document{}
+\after@document{}
+\newtoks\before@enddocument
+\before@enddocument{\the\before@enddocument}
+\expandafter\@temptokena\expandafter{\enddocument}
+\edef\enddocument{\the\before@enddocument\the\@temptokena}
+\before@enddocument{}
+\newif\ifprintlandscape
+\ifportrait
+ \ifarticle\printlandscapetrue\fi
+\else
+ \ifarticle\else\printlandscapetrue\fi
+\fi
+\addto@hook\before@document{\ifprintlandscape\printlandscape\fi}
+\addto@preamblecmds{\printlandscape}
+\def\printlandscape{\addto@hook\before@enddocument{%
+ \typeout{^^J%
+ *******************************************************^^J%
+ ***** !! PRINT THIS DOCUMENT IN LANDSCAPE MODE !! *****^^J%
+ *******************************************************}}}
+\def\slide{%
+ \NestedSlide@Error{slide}%
+ \landscapetrue
+ \@ifnextchar[{\begin@slide}{\begin@slide[\slidewidth,\slideheight]}}
+\def\endslide{\end@slide}
+\@namedef{slide*}{%
+ \NestedSlide@Error{slide*}%
+ \landscapefalse
+ \@ifnextchar[{\begin@slide}{\begin@slide[\slidewidth,\slideheight]}}%
+\@namedef{endslide*}{\end@slide}
+\newcounter{slide}
+\def\theslide{\arabic{slide}}
+\newcount\slide@count
+\newbox\@slidebox
+\newbox\not@slidebox
+\newif\ifslide
+\newif\iflandscape
+\def\@landscapeonly{0}
+\def\landscapeonly{\def\@landscapeonly{1}}
+\def\portraitonly{\def\@landscapeonly{-1}}
+\def\NestedSlide@Error#1{%
+ \ifslide
+ \endgroup
+ \@seminarerr{Nested slide environments. Perhaps missing
+ \string\end{\@currenvir}. May be fatal}\@ehd
+ \expandafter\end\expandafter{\@currenvir}%
+ \ifslide\expandafter\end\expandafter{\@currenvir}\fi
+ \begingroup
+ \def\@currenvir{#1}%
+ \fi}
+\def\begin@slide[#1,#2]{%
+ \slide@clearpage
+ \setlength\slidewidth{#1}%
+ \setlength\slideheight{#2}%
+ \begingroup
+ \ifarticle
+ \output{%
+ \advance\count@ 1
+ \global\setbox\not@slidebox\box\@cclv}%
+ \par\@@par\penalty-\@M
+ \fi
+ \output{\slide@output}%
+ \slidetrue
+ \ifarticle\global\slide@count=\z@\fi
+ \refstepcounter{slide}%
+ \ifnotesonlystar\xdef\first@slidemarker{\the\c@slide}\fi
+ \def\do##1{\setcounter{##1}\z@}\slide@reset
+ \ifarticle\else
+ \edef\page@textheight{\number\textheight sp}%
+ \edef\page@textwidth{\number\textwidth sp}%
+ \fi
+ \set@slidesize
+ \slidebox@restore
+ \the\slide@hook
+ \the\before@newslide
+ \everyslide}
+\def\end@slide{%
+ \par\penalty-\@M
+ \xdef\@tempg{\@currenvir}%
+ \endgroup
+ \ifslide
+ \@seminarerr{Perhaps missing `\string\end{\@tempg}',
+ \iffalse{\fi`\string}' or `\string\endgroup'}\@ehd
+ \def\next{\endgroup\ifslide\expandafter\next\fi}%
+ \next
+ \fi
+ \begingroup
+ \output{\setbox\@tempboxa\box\@cclv}%
+ \@@par\penalty-\@M
+ \endgroup
+ \global\advance\c@slide-1
+ \def\do##1{\setcounter{##1}{\@nameuse{saved@c@##1}}}%
+ \slide@reset
+ \ifarticle\outputloop@savedslides\fi
+ \the\after@slide}
+\let\slideclearpagetrue\relax
+\let\slideclearpagefalse\relax
+\ifarticle
+ \def\slide@clearpage{\par\penalty\z@}
+ \ifnotes
+ \def\slideclearpagetrue{\def\slide@clearpage{\clearpage}}
+ \def\slideclearpagefalse{\def\slide@clearpage{\par\penalty\z@}}
+ \else
+ \ifnotesonly
+ \def\slideclearpagetrue{\def\slide@clearpage{\clearpage}}
+ \def\slideclearpagefalse{\def\slide@clearpage{\par\penalty\z@}}
+ \fi
+ \fi
+\else
+ \def\slide@clearpage{\clearpage}
+\fi
+\newtoks\slide@hook
+\def\everyslide{}
+\newtoks\after@slide
+\def\slidebox@restore{%
+ \def\thepage{\theslide}%
+ \def\newpage{\newslide}%
+ \def\clearpage{\newslide}%
+ \def\thispagestyle##1{\notslide@err{\thispagestyle}}%
+ \pagestyle{\slide@pagestyle}%
+ \@twocolumnfalse
+ \def\twocolumn{\notslide@err{\twocolumn}}%
+ \def\onecolumn{\notslide@err{\onecolumn}}%
+ \def\marginpar##1{\notslide@err{\marginpar}}%
+ \def\thanks{\slidethanks}%
+ \def\maketitle{\slidemaketitle}%
+ \fix@floats
+ \fix@whatsits
+ \slide@footnotes
+ \def\do##1{\expandafter\xdef\csname
+ saved@c@##1\endcsname{\the\@nameuse{c@##1}}}%
+ \slide@reset
+ \topskip\z@ \maxdepth\z@
+ \slide@listparameters
+ \slidefonts
+ \def\baselinestretch{\slidestretch}%
+ \def\arraystretch{\slidearraystretch}%
+ \sem@ptsize{\slide@ptsize}}
+\def\date#1{\gdef\@date{#1}\gdef\thedate{#1}}
+\def\author#1{\gdef\@author{#1}\gdef\theauthor{#1}}
+\def\title#1{\gdef\@title{#1}\gdef\thetitle{#1}}
+\date{\today}
+\let\slidethanks\thanks
+\def\thethanks{\@thanks}%
+\def\slidemaketitle{%
+ \par
+ \begin{center}\bf
+ {\large \thetitle}\par\vskip 1ex
+ \begin{tabular}[t]{c} \theauthor \end{tabular}\par\vskip 1ex
+ \thedate
+ \end{center}%
+ \thethanks\par}
+\def\fix@floats{%
+ \def\@xfloat##1[##2]{%
+ \expandafter\let\csname end##1\endcsname\end@float
+ \par\medskip\vbox\bgroup\def\@captype{##1}\parindent\z@
+ \ignorespaces}%
+ \def\end@float{\par\vskip\z@\egroup\medskip}%
+ \def\@dblfloat{\@float}\def\end@dblfloat{\end@float}%
+ \def\endfigure{\end@float}\def\endtable{\end@float}}
+\let\normal@write\write
+\let\normal@read\read
+\let\normal@openout\openout
+\let\normal@closeout\closeout
+% changed as per DPC 1997/09/16
+\def\fix@whatsits{%
+ \long\def \protected@write##1##2##3{%
+ \begingroup
+ ##2%
+ \let\protect\noexpand
+ \immediate\normal@write##1{##3}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}%
+}
+% end change
+\newinsert\slide@footins
+\skip\slide@footins=\bigskipamount
+\count\slide@footins=1000
+\dimen\slide@footins=4in
+\def\theslidefootnote{\alph{footnote}}
+\def\slide@footnotes{%
+ \def\thefootnote{\theslidefootnote}%
+ \let\footins\slide@footins
+ \interfootnotelinepenalty\@M}
+\def\slidefonts{}
+\def\slidestretch{1.18}
+\def\slidearraystretch{1.2}
+\def\raggedslides{\@ifnextchar[{\@raggedslides}{\@raggedslides[1fil]}}
+\def\@raggedslides[#1]{%
+ \edef\slide@@rightskip{#1}%
+ \ifslide\slide@rightskip\fi}
+\def\slide@rightskip{%
+ \@rightskip\z@ plus \slide@@rightskip\relax \rightskip\@rightskip}
+\def\slide@@rightskip{1fil}
+\newcount\slide@listdepth
+\def\slide@listparameters{%
+ \let\@listdepth\slide@listdepth
+ \slide@listdepth\z@
+ \def\@listi{\slide@listi}%
+ \def\@listii{\slide@listii}%
+ \def\@listiii{\slide@listiii}%
+ \let\@listiv\relax\let\@listv\relax\let\@listvi\relax}
+\def\slide@listi{%
+ \leftmargin\leftmargini
+ \labelwidth\leftmargini \advance\labelwidth-\labelsep
+ \parsep\parskip \divide\parsep2
+ \partopsep\slidepartopsep\relax
+ \advance\partopsep-\parskip
+ \ifdim\partopsep<\z@\partopsep\z@\fi
+ \itemsep\slideitemsep\relax
+ \ifdim\parsep<\itemsep
+ \topsep\itemsep \advance\topsep-\parsep
+ \else
+ \itemsep\parsep \topsep\z@
+ \fi}
+\def\slide@listii{%
+ \leftmargin\leftmarginii
+ \labelwidth\leftmarginii \advance\labelwidth-\labelsep
+ \divide\itemsep2 \divide\parsep2
+ \divide\topsep2 \divide\partopsep2\relax}%
+\def\slide@listiii{%
+ \leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii \advance\labelwidth-\labelsep
+ \itemsep \z@ \parsep\z@ \topsep\z@}%
+\def\slideleftmargini{1.8em}
+\def\slideleftmarginii{1.4em}
+\def\slideleftmarginiii{1em}
+\def\slidelabelsep{.5em}
+\def\slideitemsep{.8ex minus .2ex}
+\def\slidepartopsep{1ex minus .2ex}
+\newbox\saved@specials
+\def\save@slidespecials{%
+ \begingroup
+ \output{%
+ \global\setbox\saved@specials=\box\@cclv
+ \global\wd\saved@specials=\z@
+ \global\dp\saved@specials=\z@
+ \global\ht\saved@specials=\z@}%
+ \hbox{}\penalty-\@M
+ \global\let\saved@texttop\@texttop
+ \gdef\@texttop{%
+ \ifvoid\saved@specials\else\box\saved@specials\nointerlineskip\fi
+ \saved@texttop
+ \global\let\@texttop\saved@texttop}%
+ \endgroup}
+\addto@hook\after@document{\save@slidespecials}
+\ifarticle\else
+ \def\insert@specials{%
+ \ifvoid\saved@specials\else
+ \setbox\@slidebox\hbox{\box\saved@specials\box\@slidebox}%
+ \fi
+ \global\let\insert@specials\relax}
+\fi
+\def\extraslideheight#1{%
+ \@tempdima #1\relax
+ \edef\X@SlideHeight{\number\@tempdima sp}
+ \ifslide\set@slidesize\fi}
+\extraslideheight{6pt}
+\def\set@slidesize{%
+ \iflandscape
+ \hsize=\inverseslidesmag\slidewidth
+ \vsize=\inverseslidesmag\slideheight
+ \else
+ \hsize=\inverseslidesmag\slideheight
+ \vsize=\inverseslidesmag\slidewidth
+ \fi
+ \edef\slide@vsize{\number\vsize sp}%
+ \textheight\vsize
+ \advance\vsize\X@SlideHeight\relax
+ \textwidth\hsize\columnwidth\hsize\linewidth\hsize}
+\def\newslide{%
+ \par\penalty-\@M
+ \def\do##1{\setcounter{##1}\z@}\slide@reset
+ \the\before@newslide
+ \set@slidesize}
+\newtoks\before@newslide
+\def\slide@reset{\do{footnote}}
+\def\slidereset#1{\def\slide@reset{}\addtoslidereset{#1}}
+\def\addtoslidereset#1{%
+ \edef\@tempa{#1}\expandafter\addto@slidereset\@tempa,\@nil,}
+\def\addto@slidereset#1,{%
+ \ifx\@nil#1\else
+ \@ifundefined{c@#1}%
+ {\@seminarerr{Counter `#1' not defined}\@ehd}%
+ {\expandafter\def\expandafter\slide@reset\expandafter{%
+ \slide@reset\do{#1}}}%
+ \expandafter\addto@slidereset
+ \fi}
+\def\slide@output{%
+ \@makeslide
+ \@testfalse
+ \ifnotesonly\else
+ \iflandscape
+ \ifnum\@landscapeonly>-1 \os@test\fi
+ \else
+ \ifnum\@landscapeonly<1 \os@test\fi
+ \fi
+ \fi
+ \if@test
+ \reset@slideoutput
+ \@@makeslide
+ \process@slide
+ \fi
+ \refstepcounter{slide}}
+\def\reset@slideoutput{%
+ \let\par\@@par
+ \reset@font
+ \def\baselinestretch{1}%
+ \@nameuse{1\@ptsize @semptsize}%
+ \catcode`\ =10
+ \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii}
+\newif\ifcenterslides
+\centerslidestrue
+\providecommand\@begindvi{} % added 1997/04/15 SPQR, to cope with very
+ % old LaTeXs
+\def\@makeslide{%
+ \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@}}
+\def\@@makeslide{%
+ \overfullslide@warning
+ \setbox\@slidebox\hbox{%
+ \vfuzz=\slidefuzz\relax
+ \vbox to\slide@vsize{%
+ \ifcenterslides\vskip\z@ plus .0001fil \fi
+ \unvbox\@slidebox
+ \vskip\z@ plus .0001fil}%
+ \the\after@slidepage}%
+ \wd\@slidebox\textwidth}
+\def\overfullslide@warning{%
+ \dimen@\ht\@slidebox
+ \advance\dimen@-\slide@vsize\relax
+ \ifdim\dimen@>\slidefuzz\relax
+ \@warning{Slide \theslide\space overfull by \the\dimen@}%
+ \fi}
+\def\slidefuzz{2pt}
+\newtoks\after@slidepage
+\newif\ifrotateheaders
+\def\sliderotation#1{\@ifundefined{semsr@#1}%
+ {\@latexerr{Slide rotation `#1' not defined.}\@eha}%
+ {\@nameuse{semsr@#1}}}
+\def\semsr@left{%
+ \def\rotate@slide{%
+ \setbox\@slidebox\hbox{\leftsliderotation{\box\@slidebox}}}}
+\def\semsr@right{%
+ \def\rotate@slide{%
+ \setbox\@slidebox\hbox{\rightsliderotation{\box\@slidebox}}}}
+\def\semsr@none{\let\rotate@slide\relax}
+\sliderotation{none}
+\def\leftsliderotation#1{%
+ \@seminarerr{\string\leftsliderotation\space has not been defined}%
+ \@ehd}
+\let\rightsliderotation\leftsliderotation
+\def\@ifrotateslide#1{%
+ \ifx\rotate@slide\relax\else
+ \iflandscape\ifportrait#1\fi\else\ifportrait\else#1\fi\fi
+ \fi}
+\def\process@slide{%
+ \slideframewidth=\inverseslidesmag\slideframewidth
+ \slideframesep=\inverseslidesmag\slideframesep
+ \fboxrule\slideframewidth
+ \fboxsep\slideframesep
+ \ifarticle
+ \@ifrotateslide\rotate@slide
+ \else
+ \ifrotateheaders\else\@ifrotateslide\rotate@slide\fi
+ \fi
+ \process@@slide}
+\def\process@@slide{\finish@slide\output@slide}
+\def\finish@slide{%
+ \theslideframe
+ \add@slidelabel\slidelabel}
+\ifarticle
+ \def\output@slide{%
+ \global\advance\slide@count1
+ \@ifundefined{slidebox@\the\slide@count}%
+ {{\globaldefs=1\expandafter
+ \new@slidebox\csname slidebox@\the\slide@count\endcsname}}{}%
+ \expandafter\global\expandafter\setbox\csname
+ slidebox@\the\slide@count\endcsname\box\@slidebox}
+\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\oddsidemargin\slideleftmargin
+ \setslidelength\evensidemargin\sliderightmargin
+ \setslidelength\headheight\slidetopmargin
+ \setslidelength\footheight\slidebottommargin
+ % Some page styles like to know \textwidth:
+ \textwidth=\@tempdima
+ \advance\textwidth-\oddsidemargin
+ \advance\textwidth-\evensidemargin
+ \setbox\@slidebox=\hbox to \@tempdima{%
+ \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
+ \hbox{%
+ \slideheadfont\relax\strut
+ \hbox to\textwidth{\@oddhead}}%
+ \kern\z@}%
+ \vfill
+ \hbox to\textwidth{\hss\box\@slidebox\hss}%
+ \vfill
+ \vbox to\footheight{%
+ \hbox{%
+ \slidefootfont\relax\strut
+ \hbox to\textwidth{\@oddfoot}}%
+ \vfill}}%
+ \hss}%
+ \ifrotateheaders\@ifrotateslide\rotate@slide\fi
+ \insert@specials
+ \shipout\box\@slidebox
+ \endgroup
+ \let\firstmark\botmark}
+ \@ifundefined{fancyput@flag}{\def\fancyput@flag{-1}}{}
+\fi
+\newskip\slidesep
+\slidesep\intextsep
+\ifarticle
+ \def\fps@fslide{htbp}
+ \def\ftype@fslide{32}
+ \def\float@savedslide{%
+ \begingroup\@float{fslide}%
+ \centerline{\box\@slidebox}%
+ \end@float\endgroup}%
+ \@namedef{float*@savedslide}{%
+ \begingroup\@dblfloat{fslide}%
+ \centerline{\box\@slidebox}%
+ \end@dblfloat\endgroup}%
+ \def\center@slide{\hbox{%
+ \kern-\@totalleftmargin
+ \hbox to \columnwidth{\hss\box\@slidebox\hss}}}%
+ \def\onepercol@savedslide{%
+ \vbox to .996\textheight{\vss\center@slide\vss}\goodbreak}%
+ \def\twopercol@savedslide{%
+ \dimen@.5\textheight
+ \advance\dimen@-\slidesep
+ \ifdim\ht\@slidebox>\dimen@
+ \onepercol@savedslide
+ \else
+ \vbox to .498\textheight{\vss\center@slide\vss}\goodbreak
+ \fi}
+ \def\here@savedslide{%
+ \addvspace\slidesep\center@slide\addvspace\slidesep}
+ \@namedef{here*@savedslide}{%
+ \goodbreak \hrule \@height\z@ \nobreak \vskip\slidesep \nobreak
+ \center@slide
+ \nobreak \vskip\slidesep \nobreak \hrule\@height\z@ \goodbreak}
+\fi
+\ifarticle
+ \def\slideplacement#1{\@ifundefined{#1@savedslide}%
+ {\@seminarerr{Slide placement `#1' undefined}\@ehd}%
+ {\expandafter\let\expandafter\output@savedslide
+ \csname #1@savedslide\endcsname}}
+\else
+ \def\slideplacement#1{}
+\fi
+\ifarticle
+ \ifnotes
+ \ifportrait
+ \slideplacement{float}
+ \else
+ \slideplacement{float*}
+ \fi
+ \else
+ \ifportrait
+ \slideplacement{onepercol}
+ \else
+ \slideplacement{twopercol}
+ \fi
+ \fi
+\fi
+\ifarticle
+ \def\outputloop@savedslides{%
+ \global\maxdepth\@maxdepth
+ \ifvoid\not@slidebox\else
+ \dimen@=\dp\not@slidebox
+ \unvbox\not@slidebox
+ \hrule height\z@
+ \prevdepth\dimen@
+ \penalty\z@
+ \fi
+ \edef\slide@@count{\the\slide@count\relax}%
+ \slide@count\z@
+ \loop
+ \ifnum\slide@count<\slide@@count
+ \advance\slide@count1
+ \expandafter\setbox\expandafter\@slidebox\expandafter\box
+ \csname slidebox@\the\slide@count\endcsname
+ \output@savedslide
+ \repeat
+ \ifnotesonlystar\make@slidemarker\fi}
+\fi
+\def\make@slidemarker{%
+ \addvspace\slidesep
+ \moveleft\@totalleftmargin
+ \vbox{%
+ \hsize\columnwidth
+ \hrule height 1pt
+ \kern 8pt
+ \hbox to \columnwidth{%
+ \hss
+ \LARGE\bf\the@slidemarker
+ \hss}%
+ \kern 8pt
+ \hrule height 1pt}%
+ \addvspace\slidesep}
+\def\the@slidemarker{%
+ Slide%
+ \ifnum\c@slide=\first@slidemarker\else
+ s {\c@slide\first@slidemarker\relax\theslide} --\fi
+ { }\theslide}%
+\ifarticle
+ \let\c@note\c@page
+ \def\p@note{\p@page}
+ \def\thenote{\thepage}
+\else
+ \newcounter{note}
+ \def\thenote{\theslide-\arabic{note}}
+ \def\thepage{\thenote}
+ \addto@hook\after@slide{\setcounter{note}{1}}
+ \expandafter\def\expandafter\@outputpage\expandafter{%
+ \@outputpage\stepcounter{note}}
+\fi
+\ifarticle\else
+ \let\c@page\c@slide
+ \countdef\c@slide=0
+ \c@slide=0
+ \c@page=1
+\fi
+\ifarticle
+ \let\truepagenumbers\relax
+\else
+ \def\truepagenumbers{%
+ \let\c@slide\c@page
+ \countdef\c@page=0
+ \c@page=1
+ \c@slide=0
+ \let\truepagenumbers\relax}
+\fi
+\addto@preamblecmds{\truepagenumbers}
+\newdimen\slideframewidth \slideframewidth 4pt
+\newdimen\slideframesep \slideframesep .3in
+\def\newslideframe#1{%
+ \@ifnextchar[{\@newslideframe{#1}}{\@newslideframe{#1}[]}}
+\def\@newslideframe#1[#2]{%
+ \@namedef{semsfops@#1}{#2}%
+ \@namedef{semsf@#1}##1}
+\newslideframe{plain}{\fbox{#1}}
+\def\slideframe{\@slideframe{slide}}
+\def\@slideframe#1{%
+ \@ifstar{\@testtrue\@@slideframe{#1}}{\@testfalse\@@slideframe{#1}}}
+\def\@@slideframe#1{%
+ \@ifnextchar[{\@@@slideframe{#1}}{\@@@slideframe{#1}[]}}
+\def\@@@slideframe#1[#2]#3{%
+ \def\@tempa{none}%
+ \def\@tempb{#3}%
+ \ifx\@tempa\@tempb
+ \@namedef{the#1frame}{\relax}%
+ \else
+ \ifx\@tempb\@empty
+ \@namedef{the#1frame}{}%
+ \else
+ \@ifundefined{semsf@#3}%
+ {\@seminarerr{Slide frame `#3' undefined}\@eha}%
+ {\if@test
+ \@@@@slideframe{#1}[#2]{#3}%
+ \else
+ \@namedef{the#1frame}{\setbox\@slidebox=\hbox{{%
+ \@nameuse{semsfops@#3}#2\@nameuse{semsf@#3}{\box\@slidebox}}}}%
+ \fi}%
+ \fi
+ \fi}
+\def\@@@@slideframe#1[#2]#3{%
+ \expandafter\let\expandafter\@tempa\csname the#1frame\endcsname
+ \edef\next{%
+ \noexpand\def\expandafter\noexpand\csname the#1frame\endcsname}%
+ \expandafter\next\expandafter{\@tempa
+ \setbox\@slidebox=\hbox{{%
+ \@nameuse{semsfops@#3}%
+ #2%
+ \@nameuse{semsf@#3}{\box\@slidebox}}}}}%
+\slideframe{plain}
+\def\slidestyle#1{\@ifundefined{ss@#1}%
+ {\@seminarerr{Slide style `#1' undefined}\@eha}%
+ {\@nameuse{ss@#1}}}
+\def\ss@empty{\let\add@slidelabel\@gobble}
+\def\ss@left{\def\add@slidelabel##1{%
+ \setbox\@slidebox=\hbox{%
+ \vbox to \ht\@slidebox{\vss
+ \hbox to 0pt{\hss##1\hskip 15pt}%
+ \vss}\box\@slidebox}}}
+\def\ss@bottom{\def\add@slidelabel##1{%
+ \setbox\@slidebox=\vbox{\copy\@slidebox\vskip 9pt
+ \hbox to\wd\@slidebox{\hss##1\hss}}}}%
+\ifarticle
+ \ifportrait\slidestyle{bottom}\else\slidestyle{left}\fi
+\else
+ \slidestyle{empty}
+\fi
+\def\slidelabel{\bf Slide \theslide}
+\def\newpagestyle#1#2#3{%
+ \expandafter\newcommand\csname ps@#1\endcsname{%
+ \def\@oddhead{#2}\let\@evenhead\@oddhead
+ \def\@oddfoot{#3}\let\@evenfoot\@oddfoot}}
+\def\renewpagestyle#1#2#3{%
+ \expandafter\renewcommand\csname ps@#1\endcsname{%
+ \def\@oddhead{#2}\let\@evenhead\@oddhead
+ \def\@oddfoot{#3}\let\@evenfoot\@oddfoot}}
+\def\@ifgoodps#1{%
+ \@ifundefined{ps@#1}{\@seminarerr{Page style `#1' undefined}\@eha}}
+\def\slidepagestyle#1{%
+ \@ifgoodps{#1}%
+ {\ifslide\pagestyle{#1}\else\edef\slide@pagestyle{#1}\fi}}
+\def\ps@{}
+\slidepagestyle{}
+\ifarticle
+ \def\ps@align{}
+\else
+ \def\ps@align{%
+ \def\@oddhead{\thepage\hfil+}\let\@evenhead\@oddhead
+ \def\@oddfoot{+\hfil+}\let\@evenfoot\@oddfoot}
+\fi
+\def\slideheadfont{\scriptsize}
+\def\slidefootfont{\scriptsize}
+\def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or
+ 2074\or 2488\or 2986\or 3583\or 4300\or 5160\fi\relax}
+\def\magstepminus#1{%
+ \ifcase#1 \@m\or 833\or 694\or 579\or 482\or 401\fi\relax}
+\def\@magstep#1{%
+ \ifnum#1<\z@\magstepminus{-#1}\else\magstep#1\fi}
+{\catcode`\p=12\catcode`\t=12
+ \gdef\@@inv@@mag#1pt#2{\def#2{#1}}}
+\def\invert@mag#1{\@tempdima=1000pt
+ \divide\@tempdima by #1\relax
+ \expandafter\@@inv@@mag\the\@tempdima#1}
+\def\@slidesmag#1{%
+ \@tempcnta=#1\relax%
+ \ifnum\@tempcnta>0
+ \edef\inverseslidesmag{\the\@tempcnta}%
+ \invert@mag\inverseslidesmag
+ \ifarticle\else\mag\@tempcnta\fi
+ \else
+ \@seminarerr{\string\@slidesmag\space argument must be an
+ integer equal to 1000 times the magnification}\@eha
+ \fi}
+\def\@articlemag#1{%
+ \@tempcnta=#1\relax%
+ \ifnum\@tempcnta>0
+ \edef\inverseartmag{\the\@tempcnta}%
+ \invert@mag\inverseartmag
+ \ifarticle\mag\@tempcnta\fi
+ \else
+ \@seminarerr{\string\articlemag\space argument must be an
+ integer equal to 1000 times the magnification}\@eha
+ \fi}
+\addto@preamblecmds{\@slidesmag\do\@articlemag}
+\newdimen\semin
+\newdimen\semcm
+\def\@semmagerr#1{%
+ \@seminarerr{\string#1 argument must be an integer
+ between -5 and 9}\@eha}
+\def\slidesmag#1{%
+ \@tempcnta=#1\relax
+ \ifnum\@tempcnta>-6
+ \ifnum\@tempcnta<10
+ \edef\the@slidesmag{\the\@tempcnta}%
+ \@slidesmag{\@magstep\@tempcnta}%
+ \else
+ \@semmagerr\slidesmag
+ \fi
+ \else
+ \@semmagerr\slidesmag
+ \fi
+ \setslidelength\semin\seminlength
+ \setslidelength\semcm\semcmlength}
+\def\seminlength{1in}
+\def\semcmlength{1cm}
+\def\articlemag#1{%
+ \@tempcnta=#1\relax
+ \ifnum\@tempcnta>-6
+ \ifnum\@tempcnta<10
+ \edef\the@articlemag{\the\@tempcnta}%
+ \@articlemag{\@magstep\@tempcnta}%
+ \else
+ \@semmagerr\articlemag
+ \fi
+ \else
+ \@semmagerr\articlemag
+ \fi}
+\addto@preamblecmds{\slidesmag\do\articlemag}
+\def\setslidelength#1#2{%
+ #1=#2\relax
+ #1=\inverseslidesmag#1}%
+\def\addtoslidelength#1#2{%
+ \dimen@=#2\relax
+ \advance#1 by \inverseslidesmag\dimen@}
+\def\setartlength#1#2{%
+ #1=#2\relax
+ #1=\inverseartmag#1}
+\def\addtoartlength#1#2{%
+ \dimen@=#2\relax
+ \advance#1 by \inverseartmag\dimen@}
+\def\slide@epsfsize#1#2{%
+ \ifdim\epsfxsize=0pt
+ \ifdim\epsfysize=0pt
+ \inverseslidesmag#1%
+ \else
+ 0pt
+ \fi
+ \else
+ \inverseslidesmag\epsfxsize
+ \fi
+ \epsfysize
+ \ifdim\epsfysize=0pt
+ \ifdim\epsfxsize=0pt
+ \inverseslidesmag#2%
+ \else
+ 0pt
+ \fi
+ \else
+ \inverseslidesmag\epsfysize
+ \fi}
+\def\epsfslidesize{\let\epsfsize\slide@epsfsize}
+\slidesmag{4}
+\articlemag{0}
+\def\do@pageparameters{%
+ \do\oddsidemargin
+ \do\evensidemargin
+ \do\marginparwidth
+ \do\marginparsep
+ \do\topmargin
+ \do\headheight
+ \do\headsep
+ \do\textheight
+ \do\textwidth
+ \do\topskip
+ \do\footskip
+ \do\footheight}
+\ifarticle
+ \def\scale@pageparameters{%
+ \begingroup
+ \def\do##1{\global##1=\inverseartmag##1\relax}%
+ \do@pageparameters
+ \endgroup}
+\else
+ \def\scale@pageparameters{%
+ \begingroup
+ \def\do##1{\global##1=\inverseslidesmag##1\relax}%
+ \do@pageparameters
+ \endgroup}
+\fi
+\addto@hook\before@document{\scale@pageparameters}
+\addto@preamblecmds{\scale@pageparameters\do\do@pageparameters}
+\def\allversions{}
+\let\endallversions\relax
+\@namedef{allversions*}{\@bsphack\globaldefs=1}
+\@namedef{endallversions*}{\@esphack}
+\def\slide@list{slide,slide*,allversions,allversions*}
+\def\addtoslidelist#1{\xdef\slide@list{\slide@list,#1}}
+\addto@preamblecmds{\addtoslidelist}
+\ifslidesonly
+ \@ifundefined{xcomment@@@}{\@@input xcomment.sty }{}
+ \def\xcomment@hook{\@xcomment{@@@}{\slide@list}}
+ \newxcomment[]{note}
+\else
+ \def\note{\@bsphack}%
+ \def\endnote{\@esphack}%
+\fi
+\def\noxcomment{\def\xcomment@hook{}}
+\def\os@list{}
+\newif\if@os
+\def\onlyslides#1{\def\os@list{#1}\@ostrue
+ \def\os@warning{\@warning{\string\onlyslides\space argument
+ contains undefined references}}}
+\def\notslides#1{\def\os@list{#1}\@osfalse
+ \def\os@warning{\@warning{\string\notslides\space argument
+ contains undefined references}}}
+\addto@preamblecmds{\onlyslides\do\notslides}
+\addto@hook\after@document{%
+ \ifx\os@list\@empty\else\os@expandlist\fi}
+\def\os@expandlist{%
+ \let\os@@warning\relax
+ \begingroup
+ \def\ref##1{\@ifundefined{r@##1}{?}%
+ {\noexpand\@car\@nameuse{r@##1}\noexpand\@nil}}%
+ \edef\@tempd{\os@list}%
+ \xdef\os@list{}%
+ \@for\@tempc:=\@tempd
+ \do{\expandafter\os@expandrange\@tempc-:-:\@nil}%
+ \os@@warning
+ \endgroup
+ \let\os@expandrange\relax
+ \let\os@checknum\relax
+ \let\os@expandlist\relax}
+\def\os@expandrange#1-#2-#3\@nil{%
+ \def\@tempa{?}\def\@tempb{#1}%
+ \ifx\@tempa\@tempb
+ \let\os@@warning\os@warning
+ \else
+ \@tempcnta=#1\relax
+ \def\@tempb{#2}%
+ \ifx\@tempa\@tempb
+ \let\os@@warning\os@warning
+ \else
+ \def\@tempa{:}%
+ \ifx\@tempa\@tempb
+ \@tempcntb=\@tempcnta
+ \else
+ \@tempcntb=#2\relax
+ \fi
+ \advance\@tempcnta by -1
+ \advance\@tempcntb by 1
+ \ifx\os@list\@empty
+ \xdef\os@list{\the\@tempcnta+\the\@tempcntb}%
+ \else
+ \xdef\os@list{\os@list,\the\@tempcnta+\the\@tempcntb}%
+ \fi
+ \fi
+ \fi}
+\def\os@test{%
+ \@testtrue
+ \iflandscape
+ \ifnum\@landscapeonly=-1 \@testfalse\fi
+ \else
+ \ifnum\@landscapeonly=1 \@testfalse\fi
+ \fi
+ \if@test
+ \ifx\os@list\@empty\else
+ \if@os\@testfalse\fi
+ \@for\@tempa:=\os@list\do{\expandafter\os@testrange\@tempa\@nil}%
+ \fi
+ \fi}
+\def\os@testrange#1+#2\@nil{%
+ \ifnum\c@slide>#1
+ \ifnum\c@slide<#2
+ \if@os\@testtrue\else\@testfalse\fi
+ \fi
+ \fi}
+\def\onlynotestoo{%
+ \ifnotes\@testtrue\else\ifnotesonly\@testtrue\else\@testfalse\fi\fi
+ \if@test
+ \@ifundefined{xcomment@@@}{%
+ \edef\sem@temp{\the\catcode`\@}%
+ \catcode`\@=11
+ \@@input xcomment.sty
+ \catcode`\@=\sem@temp\relax}{}%
+ \def\xcomment@hook{\@xcomment{@@@}{\slide@list}}%
+ \addto@hook\after@slide\onlynotes@too
+ \fi}
+\def\onlynotes@too{%
+ \os@test
+ \if@test\gdef\do@end{}\else\gdef\do@end{\xc@begin}\fi}
+\addto@preamblecmds\onlynotestoo
+\def\ptsize#1{%
+ \@ifundefined{#1@semptsize}%
+ {\@seminarerr{\string\ptsize\space `#1' not valid.}\@eha}%
+ {\ifslide
+ \sem@ptsize{#1}\large\normalsize
+ \else
+ \edef\slide@ptsize{#1}%
+ \fi}}
+\edef\slide@ptsize{1\@ptsize}%
+\def\slidefontsizes{\ptsize} %For backwards compatibility??
+\def\slide@setsize#1#2#3#4{%
+ \@setsize{#1}{#2}{#3}{#4}%
+ \set@slideskip{#2}}
+\def\slide@@setsize#1#2#3#4{%
+ \slide@setsize{#1}{#2}{#3}{#4}\slidedisplayskips}
+\def\set@slideskip#1{%
+ \normallineskiplimit=#1
+ \advance\normallineskiplimit-\normalbaselineskip
+ \multiply\normallineskiplimit-1
+ \normallineskiplimit\slideskip\normallineskiplimit
+ \ifdim\normallineskiplimit<1pt\normallineskiplimit=1pt\fi
+ \normallineskip=\normallineskiplimit
+ minus \slideshrink\normallineskiplimit
+ \dimen@=\normalbaselineskip
+ \normalbaselineskip=\dimen@ minus \slideshrink\normallineskiplimit
+ \normalbaselines}
+\def\slideskip{.75}
+\def\slideshrink{.25}
+\def\slidedisplayskips{%
+ \abovedisplayskip 1.75ex minus .35ex
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip .2ex minus .2ex
+ \belowdisplayshortskip 1ex minus .2ex}
+\def\sem@ptsize#1{%
+ \@nameuse{#1@semptsize}%
+ \large\normalsize
+ \leftmargini\slideleftmargini\relax
+ \leftmarginii\slideleftmarginii\relax
+ \leftmarginiii\slideleftmarginiii\relax
+ \labelsep\slidelabelsep\relax
+ \parskip\slideparskip\relax
+ \parindent\slideparindent\relax
+ \slide@rightskip
+ \slide@listi
+ \skip\footins\slidefootins\relax
+ \footnotesep\slidefootnotesep\relax}
+\def\slidefootins{2ex minus .8ex}
+\def\slidefootnotesep{1.2ex}
+\def\slideparindent{\z@}
+\def\slideparskip{1ex minus .2ex}
+\@namedef{8@semptsize}{%
+ \def\normalsize{\slide@@setsize\normalsize{9.5pt}\viiipt\@viiipt}%
+ \def\small{\slide@@setsize\small{8pt}\viipt\@viipt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{8pt}\vipt\@vipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{7pt}\vipt\@vipt}%
+ \def\tiny{\slide@setsize\tiny{6pt}\vpt\@vpt}%
+ \def\large{\slide@setsize\large{12pt}\xpt\@xpt}%
+ \def\Large{\slide@setsize\Large{14pt}\xiipt\@xiipt}%
+ \def\LARGE{\slide@setsize\LARGE{17pt}\xivpt\@xivpt}%
+ \def\huge{\slide@setsize\huge{20pt}\xviipt\@xviipt}%
+ \def\Huge{\slide@setsize\Huge{25pt}\xxpt\@xxpt}}
+\@namedef{9@semptsize}{%
+ \def\normalsize{\slide@@setsize\normalsize{11pt}\ixpt\@ixpt}%
+ \def\small{\slide@@setsize\small{9.5pt}\viiipt\@viiipt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{8pt}\viipt\@viipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{7pt}\vipt\@vipt}%
+ \def\tiny{\slide@setsize\tiny{6pt}\vpt\@vpt}%
+ \def\large{\slide@setsize\large{12pt}\xpt\@xpt}%
+ \def\Large{\slide@setsize\Large{14pt}\xiipt\@xiipt}%
+ \def\LARGE{\slide@setsize\LARGE{17pt}\xivpt\@xivpt}%
+ \def\huge{\slide@setsize\huge{20pt}\xviipt\@xviipt}%
+ \def\Huge{\slide@setsize\Huge{25pt}\xxpt\@xxpt}}
+\@namedef{10@semptsize}{%
+ \def\normalsize{\slide@@setsize\normalsize{12pt}\xpt\@xpt}%
+ \def\small{\slide@@setsize\small{11pt}\ixpt\@ixpt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{9.5pt}\viiipt\@viiipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{8pt}\viipt\@viipt}%
+ \def\tiny{\slide@setsize\tiny{6pt}\vpt\@vpt}%
+ \def\large{\slide@setsize\large{14pt}\xiipt\@xiipt}%
+ \def\Large{\slide@setsize\Large{18pt}\xivpt\@xivpt}%
+ \def\LARGE{\slide@setsize\LARGE{22pt}\xviipt\@xviipt}%
+ \def\huge{\slide@setsize\huge{25pt}\xxpt\@xxpt}%
+ \def\Huge{\slide@setsize\Huge{30pt}\xxvpt\@xxvpt}}
+\@namedef{11@semptsize}{%
+ \def\normalsize{\slide@@setsize\normalsize{13.6pt}\xipt\@xipt}%
+ \def\small{\slide@@setsize\small{12pt}\xpt\@xpt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{11pt}\ixpt\@ixpt}%
+ \def\scriptsize{\slide@setsize\scriptsize{9.5pt}\viiipt\@viiipt}%
+ \def\tiny{\slide@setsize\tiny{7pt}\vipt\@vipt}%
+ \def\large{\slide@setsize\large{14pt}\xiipt\@xiipt}%
+ \def\Large{\slide@setsize\Large{18pt}\xivpt\@xivpt}%
+ \def\LARGE{\slide@setsize\LARGE{22pt}\xviipt\@xviipt}%
+ \def\huge{\slide@setsize\huge{25pt}\xxpt\@xxpt}%
+ \def\Huge{\slide@setsize\Huge{30pt}\xxvpt\@xxvpt}}
+\@namedef{12@semptsize}{%
+ \def\normalsize{\slide@@setsize\normalsize{14.5pt}\xiipt\@xiipt}%
+ \def\small{\slide@@setsize\small{13.6pt}\xipt\@xipt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{12pt}\xpt\@xpt}%
+ \def\scriptsize{\slide@setsize\scriptsize{9.5pt}\viiipt\@viiipt}%
+ \def\tiny{\slide@setsize\tiny{7pt}\vipt\@vipt}%
+ \def\large{\slide@setsize\large{18pt}\xivpt\@xivpt}%
+ \def\Large{\slide@setsize\Large{22pt}\xviipt\@xviipt}%
+ \def\LARGE{\slide@setsize\LARGE{25pt}\xxpt\@xxpt}%
+ \def\huge{\slide@setsize\huge{30pt}\xxvpt\@xxvpt}%
+ \let\Huge\huge}
+\@namedef{14@semptsize}{%
+ \def\normalsize{\slide@@setsize\normalsize{18pt}\xivpt\@xivpt}%
+ \def\small{\slide@@setsize\small{14.5pt}\xiipt\@xiipt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{13.6pt}\xipt\@xipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{12pt}\xpt\@xpt}%
+ \def\tiny{\slide@setsize\tiny{9.5pt}\viiipt\@viiipt}%
+ \def\large{\slide@setsize\large{22pt}\xviipt\@xviipt}%
+ \def\Large{\slide@setsize\Large{25pt}\xxpt\@xxpt}%
+ \def\LARGE{\slide@setsize\LARGE{30pt}\xxvpt\@xxvpt}%
+ \let\huge\LARGE
+ \let\Huge\LARGE}
+\@namedef{17@semptsize}{%
+ \def\normalsize{\slide@@setsize\normalsize{22pt}\xviipt\@xviipt}%
+ \def\small{\slide@@setsize\small{18pt}\xivpt\@xivpt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{14.5pt}\xiipt\@xiipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{13.6pt}\xipt\@xipt}%
+ \def\tiny{\slide@setsize\tiny{12pt}\xpt\@xpt}%
+ \def\large{\slide@setsize\large{25pt}\xxpt\@xxpt}%
+ \def\Large{\slide@setsize\Large{30pt}\xxvpt\@xxvpt}%
+ \let\LARGE\Large
+ \let\huge\Large
+ \let\Huge\Large}
+\def\twoup{\@ifnextchar[{\@twoup}{\@twoup[0]}}
+\ifarticle
+ \ifportrait
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@articlemag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -2\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperheight}{\paperwidth}%
+ \target{\@magstep\@tempcntb}{\paperwidth}{\paperheight}%
+ \targetlayout{topbottom}%
+ \printlandscapefalse
+ \else
+ \@seminarerr{Article magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\articlemag##1{\@semtwoupmagerr\articlemag}}
+ \else
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@articlemag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -2\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperwidth}{\paperheight}%
+ \target{\@magstep\@tempcntb}{\paperheight}{\paperwidth}%
+ \if@twoside
+ \targetlayout{twosided}%
+ \fi
+ \printlandscapetrue
+ \else
+ \@seminarerr{Article magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\articlemag##1{\@semtwoupmagerr\articlemag}}
+ \fi
+\else
+ \ifportrait
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@slidesmag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -3\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperwidth}{\paperheight}%
+ \advance\@tempcnta by -3
+ \target{\@magstep\@tempcnta}{\paperheight}{\paperwidth}%
+ \printlandscapetrue
+ \else
+ \@seminarerr{Slides magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\slidesmag##1{\@semtwoupmagerr\slidesmag}}
+ \else
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@slidesmag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -3\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperheight}{\paperwidth}%
+ \target{\@magstep\@tempcntb}{\paperwidth}{\paperheight}%
+ \targetlayout{topbottom}%
+ \printlandscapefalse
+ \else
+ \@seminarerr{Slides magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\slidesmag##1{\@semtwoupmargerr\slidesmag}}%
+ \fi
+\fi
+\def\@semtwoupmagerr#1{%
+ \@seminarerr{\string#1 must come before \string\twoup}\@eha}
+\addto@preamblecmds{\twoup\do\@twoup}
+%
+\InputIfFileExists{seminar.con}{}
+%\ifeof1\else\closein1 \relax\@@input seminar.con\fi
+%
+\endinput
+%%
+%% END `seminar.cls'.
+
diff --git a/macros/latex/contrib/seminar/latex/seminar.con b/macros/latex/contrib/seminar/latex/seminar.con
new file mode 100644
index 0000000000..6731d2b728
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/seminar.con
@@ -0,0 +1,1126 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% seminar.con --- Customization of the Seminar document class.
+%% We take care to do this for easy adaptations in other
+%% institutions and contexts.
+%%
+%% Author : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+%% Created the : 1993
+%% Last mod. by : hv
+%% Last mod. the : 2021-06-24 <hvoss@tug.org>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\fileversion{3.4}
+\def\filedate{2021/06/24}
+%
+\typeout{seminar.con file: example of customization of the Seminar
+ document class^^J%
+ (Version \fileversion\space of <\filedate> (DG,hv))}
+\ProvidesFile{seminar.con}[\filedate\space v\fileversion\space `seminar.con' (dg,hv)]
+
+% Packages used
+% -------------
+
+% General packages (all are on CTAN)
+\PassOptionsToPackage{pdffitwindow,colorlinks,pdfpagemode=UseNone,bookmarks,setpagesize=false}{hyperref}
+\PassOptionsToPackage{dvipsnames,svgnames}{xcolor}
+\usepackage{calc} % Simple computations with LaTeX variables
+\usepackage[hang]{caption} % Improved captions
+\usepackage{fancybox} % To have several backgrounds
+ % (must be loaded before `fancyvrb')
+\usepackage{fancyhdr} % Headers and footers definitions
+\usepackage{fancyvrb} % Fancy verbatim environments
+%\usepackage{pstricks} % PSTricks with the standard color package
+% % (before `graphicx' for the \scalebox macro)
+\usepackage{graphicx} % Standard graphics package
+\usepackage{multido} % General loop macro
+\usepackage{pifont} % Ding symbols (mainly for lists)
+\usepackage{pst-node} % PSTricks nodes
+\usepackage{semcolor} % Seminar colored slides
+\usepackage{semhelv} % Seminar helvetica fonts
+\usepackage{semlayer} % Seminar overlays
+\usepackage{slidesec} % Seminar sections and list of slides
+\usepackage{pst-grad} % PSTricks gradient mode
+\usepackage{pst-fr3d} % PSTricks 3D framed boxes
+\usepackage{pst-slpe} % Improved PSTricks gradients
+\usepackage{thumbpdf} % Thumbnails for PDF versions
+\usepackage[breakwords]{truncate}% To truncate a string at a specified length
+\usepackage{url} % Convenient URL typesetting
+
+
+\edef\SeminarAtCode{\the\catcode`\@}
+\catcode`\@=11\relax
+
+%\ifx\VTeXversion\@undefined
+ \input{seminar.bug} % Official bugs corrections
+ \input{seminar.bg2} % Unofficial bugs corrections
+ % (warning: you must load `longtable' before
+ % if you use it)
+\input{seminar.bg2}
+%\else
+% \input{/usr/local/vtex/texmf/vtex/config/seminar.con}% Adjust this path%%%%%%%%%%%%%%%%%%%
+ % As VTeX does not support the HSB color model, we make it identical
+ % to the RGB one. This will obviously produce strange color results,
+ % but this will allow to compile the sources using here our
+ % \PstFrameBoxThreeD macro.
+% \def\color@hsb#1#2{\c@lor@@hsb#2\@@#1}
+% \def\c@lor@@hsb#1,#2,#3\@@#4{%
+ % From the VTeX \c@lor@@rgb definition
+% \vtexdef@checkarg{#1}{1}{rgb}%
+% \vtexdef@fixedhex{#1}\vtexdef@hex@a
+% \vtexdef@checkarg{#2}{1}{rgb}%
+% \vtexdef@fixedhex{#2}\vtexdef@hex@b
+% \vtexdef@checkarg{#3}{1}{rgb}%
+% \vtexdef@fixedhex{#3}\vtexdef@hex@c
+% \edef#4{c"\vtexdef@hex@a\vtexdef@hex@b\vtexdef@hex@c}}%
+%\fi
+
+% Compatibility patch between `pst-key' and the \RequirePackage macro
+% to avoid later a LaTeX warning about the version of `keyval'
+% From pst-key.tex
+\def\next[#1]{\catcode`\@=11
+% D.G. modification begin - Apr. 25, 2002
+% \expandafter\let\csname ver@keyval.sty\endcsname\empty
+ \expandafter\xdef\csname ver@keyval.sty\endcsname{#1}%
+% D.G. modification end
+ \wlog{keyval: #1}}\next
+ [1998/07/23 v1.11 key=value parser (DPC)]
+
+%%%%%%%%%% begin hv 2021-6-24 %%%%%%%%%%%%%%
+
+\providecommand\theHslide{\arabic{slide}}
+\usepackage{hyperref} % Hyperlinks for PDF versions
+ % (to load after `slidesec', seminar.bg2, etc.)
+\@ifpackageloaded{slidesec}{%
+ \providecommand\theHslidesection {\arabic{slidesection}}%
+ \providecommand\theHslidesubsection{%
+ \theHslidesection.\arabic{slidesubsection}%
+ }%
+ \def\slide@heading[#1]#2{%
+ \H@refstepcounter{slidesection}%
+ \@addtoreset{slidesubsection}{slidesection}%
+ \addtocontents{los}{%
+ \protect\l@slide{\the\c@slidesection}{\ignorespaces#1}%
+ {\@SCTR}{slideheading.\theslidesection}%
+ }%
+ \def\Hy@tempa{#2}%
+ \ifx\Hy@tempa\@empty
+ \else
+ {%
+ \edef\@currentlabel{%
+ \csname p@slidesection\endcsname\theslidesection
+ }%
+ \makeslideheading{#2}%
+ }%
+ \fi
+ \gdef\theslideheading{#1}%
+ \gdef\theslidesubheading{}%
+ \ifHy@bookmarksnumbered
+ \def\Hy@slidetitle{\theslidesection\space #1}%
+ \else
+ \def\Hy@slidetitle{#1}%
+ \fi
+ \ifHy@hypertexnames
+ \ifHy@naturalnames
+ \hyper@@anchor{slideheading.\theslidesection}{\relax}%
+ \Hy@writebookmark
+ {\theslidesection}%
+ {\Hy@slidetitle}%
+ {slideheading.\theslidesection}%
+ {1}%
+ {toc}%
+ \else
+ \hyper@@anchor{slideheading.\theHslidesection}{\relax}%
+ \Hy@writebookmark
+ {\theslidesection}%
+ {\Hy@slidetitle}%
+ {slideheading.\theHslidesection}%
+ {1}%
+ {toc}%
+ \fi
+ \else
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \hyper@@anchor{slideheading.\the\Hy@linkcounter}{\relax}%
+ \Hy@writebookmark
+ {\theslidesection}%
+ {\Hy@slidetitle}%
+ {slideheading.\the\Hy@linkcounter}%
+ {1}%
+ {toc}%
+ \fi
+ }%
+ \def\slide@subheading[#1]#2{%
+ \H@refstepcounter{slidesubsection}%
+ \addtocontents{los}{%
+ \protect\l@subslide{\the\c@slidesubsection}{\ignorespaces#1}%
+ {\@SCTR}{slideheading.\theslidesubsection}%
+ }%
+ \def\Hy@tempa{#2}%
+ \ifx\Hy@tempa\@empty
+ \else
+ {%
+ \edef\@currentlabel{%
+ \csname p@slidesubsection\endcsname\theslidesubsection
+ }%
+ \makeslidesubheading{#2}%
+ }%
+ \fi
+ \gdef\theslidesubheading{#1}%
+ \ifHy@bookmarksnumbered
+ \def\Hy@slidetitle{\theslidesubsection\space #1}%
+ \else
+ \def\Hy@slidetitle{#1}%
+ \fi
+ \ifHy@hypertexnames
+ \ifHy@naturalnames
+ \hyper@@anchor{slideheading.\theslidesubsection}{\relax}%
+ \Hy@writebookmark
+ {\theslidesubsection}%
+ {\Hy@slidetitle}%
+ {slideheading.\theslidesubsection}%
+ {2}%
+ {toc}%
+ \else
+ \hyper@@anchor{slideheading.\theHslidesubsection}{\relax}%
+ \Hy@writebookmark
+ {\theslidesubsection}%
+ {\Hy@slidetitle}%
+ {slideheading.\theHslidesubsection}%
+ {2}%
+ {toc}%
+ \fi
+ \else
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \hyper@@anchor{slideheading.\the\Hy@linkcounter}{\relax}%
+ \Hy@writebookmark
+ {\theslidesubsection}%
+ {\Hy@slidetitle}%
+ {slideheading.\the\Hy@linkcounter}%
+ {1}%
+ {toc}%
+ \fi
+ }%
+ \providecommand*{\listslidename}{List of Slides}%
+ \def\listofslides{%
+ \section*{%
+ \listslidename
+ \@mkboth{%
+ \expandafter\MakeUppercase\listslidename
+ }{%
+ \expandafter\MakeUppercase\listslidename
+ }%
+ }%
+ \def\l@slide##1##2##3##4{%
+ \slide@undottedcline{%
+ \slidenumberline{##3}{\hyperlink{##4}{##2}}%
+ }{}%
+ }%
+ \let\l@subslide\l@slide
+ \@startlos
+ }%
+ \def\slide@contents{%
+ \def\l@slide##1##2##3##4{%
+ \slide@cline{\slidenumberline{##3}{\hyperlink{##4}{##2}}}{##3}%
+ }%
+ \let\l@subslide\@gobblefour
+ \@startlos
+ }%
+ \def\Slide@contents{%
+ \def\l@slide##1##2##3##4{%
+ \ifcase\lslide@flag
+ \message{##1 ** \the\c@slidesection}%
+ \ifnum##1>\c@slidesection
+ \def\lslide@flag{1}%
+ {%
+ \large
+ \slide@cline{%
+ \slidenumberline{$\Rightarrow\bullet$}%
+ {\hyperlink{##4}{##2}}%
+ }{##3}%
+ }%
+ \else
+ {%
+ \large
+ \slide@cline{%
+ \slidenumberline{$\surd\;\bullet$}%
+ {\hyperlink{##4}{##2}}%
+ }{##3}%
+ }%
+ \fi
+ \or
+ \def\lslide@flag{2}%
+ {%
+ \large
+ \slide@cline{%
+ \slidenumberline{$\bullet$}%
+ {\hyperlink{##4}{##2}}%
+ }{##3}%
+ }%
+ \or
+ {%
+ \large
+ \slide@cline{%
+ \slidenumberline{$\bullet$}%
+ {\hyperlink{##4}{##2}}%
+ }{##3}%
+ }%
+ \fi
+ }%
+ \def\l@subslide##1##2##3##4{%
+ \ifnum\lslide@flag=1 %
+ \@undottedtocline{2}{3.8em}{3.2em}{\hyperlink{##4}{##2}}{}%
+ \fi
+ }%
+ \def\lslide@flag{0}%
+ \@startlos
+ }%
+}{}
+
+%%%%%%%%%%% end hv 2021-06-24 %%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\iffalse
+% Definition of new colors
+% ------------------------
+
+\definecolor{Apricot} {cmyk}{0,0.32,0.52,0}
+\definecolor{Aquamarine} {cmyk}{0.82,0,0.30,0}
+\definecolor{CadetBlue} {cmyk}{0.62,0.57,0.23,0}
+\definecolor{DarkGray} {gray}{0.2}
+\definecolor{DarkGreen} {rgb}{0,0.5,0}
+\definecolor{ForestGreen} {cmyk}{0.91,0,0.88,0.12}
+\definecolor{Gold} {rgb}{1.,0.84,0.}
+\definecolor{Goldenrod} {cmyk}{0,0.10,0.84,0}
+\definecolor{IndianRed} {rgb}{0.8,0.36,0.36}
+\definecolor{Lavender} {cmyk}{0,0.48,0,0}
+\definecolor{LemonChiffon}{rgb}{1.,0.98,0.8}
+\definecolor{LightBlue} {rgb}{0.68,0.85,0.9}
+\definecolor{LightCyan} {rgb}{0.88,1.,1.}
+\definecolor{LightGray} {gray}{0.92}
+\definecolor{LightYellow} {rgb}{1.,1.,0.88}
+\definecolor{Melon} {cmyk}{0,0.46,0.50,0}
+\definecolor{NavyBlue} {cmyk}{0.94,0.54,0,0}
+\definecolor{Orange} {rgb}{1.,0.65,0.}
+\definecolor{PaleGreen} {rgb}{0.6,0.98,0.6}
+\definecolor{PaleGreenB} {rgb}{0.9,1,0.9}
+\definecolor{Peach} {cmyk}{0,0.50,0.70,0}
+\definecolor{PeachPuff} {rgb}{1.0,0.85,0.73}
+\definecolor{PineGreen} {cmyk}{0.92,0,0.59,0.25}
+\definecolor{Pink} {rgb}{1.,0.75,0.8}
+\definecolor{RoyalBlue} {cmyk}{1,0.50,0,0}
+\definecolor{SeaGreen} {cmyk}{0.69,0,0.50,0}
+\definecolor{Salmon} {cmyk}{0,0.53,0.38,0}
+\definecolor{Sepia} {cmyk}{0,0.83,1,0.70}
+\definecolor{SlateBlue} {rgb}{0.42,0.35,0.8}
+\definecolor{Thistle} {rgb}{0.85,0.75,0.85}
+\definecolor{Turquoise} {cmyk}{0.85,0,0.20,0}
+\definecolor{Violet} {cmyk}{0.79,0.88,0,0}
+\definecolor{YellowOrange}{cmyk}{0,0.42,1,0}
+\fi
+
+% Definition of the (La)TeX string
+\newcommand{\AllTeX}{%
+{\textrm{(L\kern-.36em\raise.3ex\hbox{\textsc{%
+a}}\kern-.05em)T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}
+
+% "dinglist" environment
+% Redefinition of it to be able to use colored symbols
+\renewenvironment{dinglist}[2][black]
+{\begin{list}{\ding{#2}}{}}{\end{list}}
+% Symbol definitions for these lists
+\newcommand{\DingListSymbolA}{43}
+\newcommand{\DingListSymbolB}{243}
+\newcommand{\DingListSymbolC}{224}
+\newcommand{\DingListSymbolD}{219}
+
+% Captions customizations
+\setlength{\abovecaptionskip}{1.5mm}
+
+% Centered paragraph title
+\newcommand{\CenteredParagraphTitle}[2][LemonChiffon]{%
+\centerline{\psshadowbox[fillstyle=solid,fillcolor=#1]{\large\HLe{#2}}}}
+
+% Paragraph title
+\newcommand{\ParagraphTitle}[2][LemonChiffon]{%
+\noindent\psshadowbox[fillstyle=solid,fillcolor=#1]{\large\HLe{#2}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% `fancyvrb' customizations
+% -------------------------
+
+% Customized "Verbatim" environment
+\RecustomVerbatimEnvironment{Verbatim}{Verbatim}
+{commandchars=§µ¶,fontfamily=tt,frame=single,numbersep=2pt,framerule=0.15mm}
+
+% "OutputResults" environment to emphasize program outputs
+\DefineVerbatimEnvironment{OutputResults}{Verbatim}
+{commandchars=§µ¶,fontfamily=tt,frame=single,numbers=none,
+rulecolor=\color{blue},framerule=1mm}
+
+% Not inside the preceding environments themselves, to allow
+% local redefinitions
+\fvset{baselinestretch=0.9,fontsize=\small,numbers=left}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Seminar macros redefinitions
+% ----------------------------
+
+\providecommand\theHslide{\arabic{slide}}% hv 2021-06-24
+
+
+
+
+
+% We redefine the format of entries of the list of slides
+\def\listofslides{%
+ \hfuzz=7pt % To avoid the "Overfull \hbox" messages
+ \def\l@slide##1##2##3##4{%
+ \slide@dottedcline{##1 -- \hyperlink{##4}{##2}}%
+ {\slidenumberline{##3}}}%
+ \def\l@subslide##1##2##3##4{%
+ \slide@dottedcline{\hspace{2mm}##1 -- \hyperlink{##4}{##2}}%
+ {\slidenumberline{##3}}}%
+ \@startlos}
+
+\def\slide@dottedcline{\@dottedtocline{1}{1.5em}{2.3em}}
+
+\def\slide@subheading[#1]#2{%
+ \H@refstepcounter{slidesubsection}%
+ \addtocontents{los}{%
+% D.G. modification begin - Jan. 2, 2002
+% \protect\l@subslide{\the\c@slidesubsection}{\ignorespaces#1}%
+ \protect\l@subslide{\the\c@slidesection.\the\c@slidesubsection}%
+ {\ignorespaces#1}%
+% D.G. modification end
+ {\@SCTR}{slideheading.\theslidesubsection}%
+ }%
+ \def\Hy@tempa{#2}%
+ \ifx\Hy@tempa\@empty
+ \else
+ {%
+ \edef\@currentlabel{%
+ \csname p@slidesubsection\endcsname\theslidesubsection
+ }%
+ \makeslidesubheading{#2}%
+ }%
+ \fi
+ \gdef\theslidesubheading{#1}%
+ \ifHy@hypertexnames
+ \ifHy@naturalnames
+ \hyper@@anchor{slideheading.\theslidesubsection}{\relax}%
+ \Hy@writebookmark
+ {\theslidesubsection}%
+ {#1}%
+ {slideheading.\theslidesubsection}%
+ {2}%
+ {toc}%
+ \else
+ \hyper@@anchor{slideheading.\theHslidesubsection}{\relax}%
+ \Hy@writebookmark
+ {\theslidesubsection}%
+ {#1}%
+ {slideheading.\theHslidesubsection}%
+ {2}%
+ {toc}%
+ \fi
+ \else
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \hyper@@anchor{slideheading.\the\Hy@linkcounter}{\relax}%
+ \Hy@writebookmark
+ {\theslidesubsection}%
+ {#1}%
+ {slideheading.\the\Hy@linkcounter}%
+ {1}%
+ {toc}%
+ \fi
+}%
+
+% We will need, for demonstration purposes, to define sections and subsections
+% without putting them in the list of slides
+\def\SlideHeadingsNoListOfSlides{%
+\def\slide@heading[##1]##2{%
+ \refstepcounter{slidesection}%
+ \@addtoreset{slidesubsection}{slidesection}
+% D.G. modification begin - Feb. 22, 2002
+% \addtocontents{los}{\protect\l@slide
+% {\the\c@slidesection}{\ignorespaces##1}{\@SCTR}}%
+% D.G. modification end
+ \def\@tempa{##2}%
+ \ifx\@tempa\@empty\else
+ {\edef\@currentlabel{\csname p@slidesection\endcsname\theslidesection}%
+ \makeslideheading{##2}}%
+ \fi
+ \gdef\theslideheading{##1}%
+ \gdef\theslidesubheading{}}
+%
+\def\slide@subheading[##1]##2{%
+ \refstepcounter{slidesubsection}%
+% D.G. modification begin - Feb. 22, 2002
+% \addtocontents{los}{\protect\l@subslide
+% {\the\c@slidesubsection}{\ignorespaces##1}{\@SCTR}}%
+% D.G. modification end
+ \def\@tempa{##2}%
+ \ifx\@tempa\@empty\else
+ {\edef\@currentlabel{\csname p@slidesubsection\endcsname
+ \theslidesubsection}\makeslidesubheading{##2}}%
+ \fi
+ \gdef\theslidesubheading{##1}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Seminar customizations
+% ----------------------
+
+% No default frame (really useful for old plastic slides only)
+\slideframe{none}
+
+% To center horizontally the headers and footers (see seminar.bug)
+\renewcommand{\headwidth}{\textwidth}
+
+% To adjust the frame length to the header and footer ones
+% \autoslidemarginstrue
+
+% Headers and footers, using the `fancyhdr' package
+
+\slidepagestyle{fancy}
+
+\newcommand{\SeminarHeader}[1]{\fancyhead[C]{\Large\textbf{\HLe{#1}}}}
+
+\newcommand{\SeminarStandardHeaderFooter}[4]{%
+\fancyhf{}%
+\fancyhead[R]{\theslide}
+\SeminarHeader{#1}
+\fancyfoot[L]{\raisebox{2.5mm}{\textbf{#2}}}
+\fancyfoot[R]{\raisebox{3mm}{\scriptsize#3 \@date}\\[-4.5mm]
+ {\tiny\textbf{#4}}}%
+% Change of the width of header and footer rules
+\def\headrulewidth{0.15mm}%
+\def\footrulewidth{0.15mm}%
+% Redefinition of the head line separator to have a double one
+\def\headrule{%
+\if@fancyplain\headrulewidth\plainheadrulewidth\fi
+\hrule\@height\headrulewidth\@width\headwidth \vskip 0.5mm
+\hrule\@height\headrulewidth\@width\headwidth \vskip -1mm}}
+
+% Customization of the headings and subheadings
+\renewcommand{\makeslideheading}[1]{%
+\CenteredParagraphTitle[red]{%
+\textcolor{white}{\textbf{\theslidesection{} -- #1}}}}
+\renewcommand{\makeslidesubheading}[1]{%
+\CenteredParagraphTitle{\theslidesubsection{} -- #1}}
+
+% For automatic definition of headers
+% ("Number - chapter : sub-chapter" or "Number - chapter" if no sub-chapter)
+% (we also suppress the first uppercase letter of the sub-chapter name,
+% if the optional "AsIs" keyword is not specified)
+\def\AsIs{AsIs}
+\def\SeminarStandardHeader@Separator{: }
+\newcommand{\SeminarStandardHeader}[1][]{%
+\SeminarHeader{%
+\ifx\theslidesubheading\empty
+ \theslidesection{} -- \theslideheading%
+\else
+ \edef\@tempa{#1}%
+ \ifx\@tempa\AsIs
+ \theslidesection{} -- \theslideheading{}\SeminarStandardHeader@Separator
+ \theslidesubheading%
+ \else
+ \theslidesection{} -- \theslideheading{}\SeminarStandardHeader@Separator %
+ \SeminarStandardHeader@i{\theslidesubheading}%
+ \fi
+\fi}}
+
+\def\SeminarStandardHeader@i#1{\expandafter\SeminarStandardHeader@ii#1\@nil}
+\def\SeminarStandardHeader@ii#1#2\@nil{\MakeLowercase{#1}#2}
+
+% Outline of the presentation
+\newcommand{\SeminarOutlinePresentation}[4]{%
+\ifx\SeminarColorVersion\AnswerYes
+ \begingroup
+ \SeminarHeader{#1}%
+ \def\SeminarOutlinePresentationBoolean{true}%
+ \renewcommand{\SeminarBackgroundCompositeColorFirst}{#2}%
+ \renewcommand{\SeminarBackgroundCompositeColorSecond}{#3}%
+ \SeminarSlideFrameBackground{SeminarBackgroundCompositeE}%
+ \pst@dimh=\slideleftmargin
+ \advance\pst@dimh by 35mm
+ \renewcommand{\slideleftmargin}{\the\pst@dimh}%
+ \setlength{\slidewidth}{289mm}%
+ \addtolength{\slidewidth}{-\slideleftmargin}%
+ \addtolength{\slidewidth}{-\sliderightmargin}%
+ \renewcommand{\slidestretch}{0}% To compact the list
+ \begin{slide}
+ \begingroup
+ \hypersetup{linkcolor=#4}%
+ \Slidecontents
+ \endgroup
+ \end{slide}
+ \endgroup
+\fi}
+
+% Backgrounds
+% -----------
+
+% Solid backgrounds
+
+% Default color
+\newcommand{\SeminarBackgroundSolidColor}{PeachPuff}
+
+\SeminarNewSlideFrameBackground{SeminarBackgroundSolid}{%
+\psframe[linestyle=none,fillstyle=solid,fillcolor=\SeminarBackgroundSolidColor]
+ (\SeminarPaperHeight,\SeminarPaperWidth)}
+
+% Gradient backgrounds
+
+% Default begin color, end color, angle and middle point
+\newcommand{\SeminarBackgroundGradientColorBegin}{LightYellow}
+\newcommand{\SeminarBackgroundGradientColorEnd}{Gold}
+\newcommand{\SeminarBackgroundGradientAngle}{0}
+\newcommand{\SeminarBackgroundGradientMidPoint}{0}
+
+\SeminarNewSlideFrameBackground{SeminarBackgroundGradient}{%
+\psframe[linestyle=none,fillstyle=gradient,
+ gradangle=\SeminarBackgroundGradientAngle,
+ gradmidpoint=\SeminarBackgroundGradientMidPoint,
+ gradbegin=\SeminarBackgroundGradientColorBegin,
+ gradend=\SeminarBackgroundGradientColorEnd]
+ (\SeminarPaperHeight,\SeminarPaperWidth)}
+
+% Default slope style, steps and center
+\newcommand{\SeminarBackgroundGradientSlopeStyle}{radslope}
+\newcommand{\SeminarBackgroundGradientSlopeSteps}{300}
+\newcommand{\SeminarBackgroundGradientSlopeCenter}{0.5 0.5}
+\newcommand{\SeminarBackgroundGradientSlopeAngle}{0}
+\newcommand{\SeminarBackgroundGradientSlopeRadius}{0}
+
+\SeminarNewSlideFrameBackground{SeminarBackgroundGradientSlope}{%
+\psframe[linestyle=none,fillstyle=\SeminarBackgroundGradientSlopeStyle,
+ slopebegin=\SeminarBackgroundGradientColorBegin,
+ slopeend=\SeminarBackgroundGradientColorEnd,
+ slopesteps=\SeminarBackgroundGradientSlopeSteps,
+ slopecenter=\SeminarBackgroundGradientSlopeCenter,
+ slopeangle=\SeminarBackgroundGradientSlopeAngle,
+ sloperadius=\SeminarBackgroundGradientSlopeRadius]
+ (\SeminarPaperHeight,\SeminarPaperWidth)}
+
+% Composite backgrounds
+
+% Default colors
+\newcommand{\SeminarBackgroundCompositeColorFirst}{LightBlue}
+\newcommand{\SeminarBackgroundCompositeColorSecond}{NavyBlue}
+\newcommand{\SeminarBackgroundCompositeColorThird}{RoyalBlue}
+
+% Utility macros for the composite backgrounds
+
+\newcount\PstFractal@DeepRecursion
+
+% The recursion macro used (from David Carlisle)
+\def\Recursion #1{%
+#1\relax
+ \expandafter\@firstoftwo
+\else
+ \expandafter\@secondoftwo
+\fi}
+
+% General definition of a fractal
+\def\PstFractal#1{%
+\ifx\PstFractalBegin\undefined
+\else
+ \PstFractalBegin
+\fi
+\Recursion
+ {\ifnum#1>\@ne\relax}
+ {\PstFractal@DeepRecursion=#1%
+ \advance\PstFractal@DeepRecursion\m@ne
+ \PstFractalRepeat{\PstFractal@DeepRecursion}}
+ {\PstFractalDefinition}}
+
+\def\PstSpiralSquare#1{%
+\def\PstFractalDefinition{\psframe(1,1)}%
+\def\PstFractalBegin{\PstFractalDefinition}%
+\def\PstFractalRepeat##1{%
+ % sqrt(0.2^2 + (1-0.2)^2)=0.824621
+ % arcsin(0.2/0.824621)=14.036246
+ \rput{-14.036246}(0,0.2){\psset{unit=0.824621}\PstFractal{##1}}}%
+\pspicture(1,1)
+ \PstFractal{#1}
+\endpspicture}
+
+% Composite background A
+\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeA}{{%
+\psframe[linestyle=none,
+ fillstyle=solid,fillcolor=\SeminarBackgroundCompositeColorFirst]
+ (\SeminarPaperHeight,\SeminarPaperWidth)%
+\rput(4truemm,190truemm){%
+ \psframe[linestyle=none,fillstyle=gradient,gradmidpoint=1,gradangle=90,
+ gradbegin=\SeminarBackgroundCompositeColorSecond,
+ gradend=\SeminarBackgroundCompositeColorFirst](8,0.2)}}
+\rput(293truemm,14truemm){%
+ \psframe[linestyle=none,fillstyle=gradient,gradmidpoint=1,gradangle=90,
+ gradbegin=\SeminarBackgroundCompositeColorFirst,
+ gradend=\SeminarBackgroundCompositeColorSecond](-8,0.2)}}
+
+% Composite background B
+\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeB}{{%
+\psframe[linestyle=none,
+ fillstyle=solid,fillcolor=\SeminarBackgroundCompositeColorFirst]
+ (\SeminarPaperHeight,\SeminarPaperWidth)%
+\rput(4truemm,190truemm){%
+ \psframe[linestyle=none,fillstyle=gradient,gradmidpoint=1,gradangle=90,
+ gradbegin=\SeminarBackgroundCompositeColorSecond,
+ gradend=\SeminarBackgroundCompositeColorFirst](-0.1,0)(5,0.2)
+ \psframe[linestyle=none,fillstyle=gradient,gradmidpoint=1,
+ gradbegin=\SeminarBackgroundCompositeColorSecond,
+ gradend=\SeminarBackgroundCompositeColorFirst](-0.1,0.03)(0.1,-5)}}
+\rput(293truemm,14truemm){%
+ \psframe[linestyle=none,fillstyle=gradient,gradmidpoint=1,gradangle=90,
+ gradbegin=\SeminarBackgroundCompositeColorFirst,
+ gradend=\SeminarBackgroundCompositeColorSecond](-5,0.2)(0.1,0)
+ \psframe[linestyle=none,fillstyle=gradient,gradmidpoint=1,
+ gradbegin=\SeminarBackgroundCompositeColorFirst,
+ gradend=\SeminarBackgroundCompositeColorSecond](-0.1,5)(0.1,0)}}
+
+% Composite background C
+\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeC}{{%
+\psframe[linestyle=none,
+ fillstyle=solid,fillcolor=\SeminarBackgroundCompositeColorFirst]
+ (\SeminarPaperHeight,\SeminarPaperWidth)}
+\psset{xunit=1.3333,linecolor=\SeminarBackgroundCompositeColorSecond}%
+\@tempdima=\SeminarPaperHeight
+\divide\@tempdima\tw@
+\@tempdimb=\SeminarPaperWidth
+\divide\@tempdimb\tw@
+\multido{\nLength=5.5+-0.2,\iAngle=0+1}{30}{%
+ \rput{\iAngle}(\@tempdima,\@tempdimb){%
+ \psframe(-\nLength,-\nLength)(\nLength,\nLength)}}}
+
+% Composite background D
+\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeD}{{%
+\psset{linestyle=none,fillstyle=gradient,gradmidpoint=0}%
+\psframe[gradbegin=\SeminarBackgroundCompositeColorFirst,
+ gradend=\SeminarBackgroundCompositeColorSecond]
+ (\SeminarPaperHeight,\SeminarPaperWidth)
+\multips(4truemm,50truemm)(10truemm,30truemm){3}{%
+ \psframe[gradbegin=\SeminarBackgroundCompositeColorSecond,
+ gradend=\SeminarBackgroundCompositeColorFirst]
+ (5truemm,180truemm)}
+\@tempdima=\SeminarPaperHeight
+\advance\@tempdima -29truemm
+\multips(\@tempdima,0)(10truemm,-30truemm){3}{%
+ \psframe[gradbegin=\SeminarBackgroundCompositeColorSecond,
+ gradend=\SeminarBackgroundCompositeColorFirst]
+ (5truemm,160truemm)}}}
+
+% Composite background E
+\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeE}{{%
+\psset{linestyle=none,fillstyle=gradient,gradmidpoint=0.5}%
+\psframe[gradbegin=\SeminarBackgroundCompositeColorFirst,
+ gradend=\SeminarBackgroundCompositeColorSecond]
+ (\SeminarPaperHeight,\SeminarPaperWidth)
+\psframe[gradbegin=\SeminarBackgroundCompositeColorSecond,
+ gradend=\SeminarBackgroundCompositeColorFirst]
+ (5truemm,0)(35truemm,\SeminarPaperWidth)
+\multips(10truemm,10truemm)(0,20truemm){11}{%
+ \psframe[gradangle=90,
+ gradbegin=\SeminarBackgroundCompositeColorFirst,
+ gradend=\SeminarBackgroundCompositeColorSecond]
+ (20truemm,10truemm)}}}
+
+% Composite background F
+\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeF}{{%
+\psset{linestyle=none,fillstyle=gradient,gradmidpoint=1,gradangle=90}%
+\psframe[gradbegin=\SeminarBackgroundCompositeColorFirst,
+ gradend=\SeminarBackgroundCompositeColorSecond]
+ (\SeminarPaperHeight,\SeminarPaperWidth)
+\@tempdima=\SeminarPaperWidth
+\advance\@tempdima -15truemm
+\psframe[gradbegin=\SeminarBackgroundCompositeColorSecond,
+ gradend=\SeminarBackgroundCompositeColorFirst]
+ (0,\@tempdima)(\SeminarPaperHeight,\SeminarPaperWidth)
+\psframe[gradbegin=\SeminarBackgroundCompositeColorSecond,
+ gradend=\SeminarBackgroundCompositeColorFirst]
+ (0,0)(\SeminarPaperHeight,15truemm)}}
+
+% Composite background G
+\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeG}{{%
+\psset{linestyle=none,fillstyle=gradient,gradmidpoint=0,gradangle=30}%
+\psframe[gradbegin=\SeminarBackgroundCompositeColorFirst,
+ gradend=\SeminarBackgroundCompositeColorSecond]
+ (\SeminarPaperHeight,\SeminarPaperWidth)
+\@tempdima=\SeminarPaperWidth
+\advance\@tempdima -15truemm
+\psframe[gradbegin=\SeminarBackgroundCompositeColorSecond,
+ gradend=\SeminarBackgroundCompositeColorFirst]
+ (15truemm,-15truemm)(\SeminarPaperHeight,\@tempdima)
+\psframe[gradbegin=\SeminarBackgroundCompositeColorFirst,
+ gradend=\SeminarBackgroundCompositeColorSecond]
+ (15truemm,0)(\SeminarPaperHeight,15truemm)}}
+
+% Composite background H
+\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeH}{{%
+\psset{linestyle=none,fillstyle=gradient,gradmidpoint=1}%
+\psframe[gradangle=0,gradbegin=\SeminarBackgroundCompositeColorFirst,
+ gradend=\SeminarBackgroundCompositeColorSecond]
+ (17mm,\SeminarPaperWidth)
+\@tempdima=\SeminarPaperWidth
+\advance\@tempdima -15mm
+\psframe[gradangle=90,gradbegin=\SeminarBackgroundCompositeColorFirst,
+ gradend=\SeminarBackgroundCompositeColorSecond]
+ (0,\@tempdima)(\SeminarPaperHeight,\SeminarPaperWidth)
+\advance\@tempdima 5mm
+\psframe*[linecolor=white,framearc=0.3](12mm,-20mm)(300mm,\@tempdima)
+\advance\@tempdima -5mm
+\psline[linestyle=solid,linewidth=0.3]{c-c}(4mm,\@tempdima)(90mm,\@tempdima)}}
+
+% Composite background I
+\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeI}{{%
+\psset{linestyle=none,unit=15,fillstyle=gradient,gradmidpoint=0,
+ gradbegin=\SeminarBackgroundCompositeColorSecond,
+ gradend=\SeminarBackgroundCompositeColorFirst}%
+\@tempdima=\SeminarPaperHeight
+\divide\@tempdima\tw@
+\@tempdimb=\SeminarPaperWidth
+\divide\@tempdimb\tw@
+\rput(\@tempdima,\@tempdimb){\PstSpiralSquare{15}}}}
+
+% Composite background J
+
+% Sierpinski carpet
+\newcommand{\PstSierpinskiCarpet}[1]{{%
+\def\PstFractalDefinition{%
+ \psframe(1,1)
+ \psframe[fillstyle=solid,fillcolor=white](0.3333,0.3333)(0.6667,0.6667)}%
+\def\PstFractalBegin{\PstFractalDefinition}%
+\def\PstFractalRepeat##1{%
+ \rput(0,0){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
+ \rput(0.3333,0){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
+ \rput(0.6667,0){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
+ \rput(0,0.3333){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
+ \rput(0.6667,0.3333){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
+ \rput(0,0.6667){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
+ \rput(0.3333,0.6667){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
+ \rput(0.6667,0.6667){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}}%
+\psset{dimen=middle}%
+\pspicture(1,1)
+ \PstFractal{#1}
+\endpspicture}}
+
+\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeJ}{{%
+\psset{linestyle=none,xunit=\SeminarPaperHeight,yunit=\SeminarPaperWidth,
+ fillstyle=solid,fillcolor=\SeminarBackgroundCompositeColorFirst}%
+\@tempdima=\SeminarPaperHeight
+\divide\@tempdima\tw@
+\@tempdimb=\SeminarPaperWidth
+\divide\@tempdimb\tw@
+\rput(\@tempdima,\@tempdimb){\PstSierpinskiCarpet{3}}}}
+
+% Composite background K
+
+% Sierpinski triangle
+\newcommand{\PstSierpinskiTriangle}[1]{{%
+\def\PstFractalDefinition{%
+ \pspolygon(1;0)(1;1)(1;2)
+ \rput{-2}(0,0){\pspolygon(0.5;0.5)(0.5;1.5)(0.5;2.5)}}%
+\def\PstFractalBegin{\PstFractalDefinition}%
+\def\PstFractalRepeat##1{%
+ \rput(0.5;0){\psset{unit=0.5}\PstFractal{##1}}
+ \rput(0.5;1){\psset{unit=0.5}\PstFractal{##1}}
+ \rput(0.5;2){\psset{unit=0.5}\PstFractal{##1}}}%
+\rput{90}(0,0){%
+ \SpecialCoor
+ \degrees[3]
+ \psset{dimen=middle}%
+ \PstFractal{#1}}}}
+
+\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeK}{{%
+\NormalCoor % Needed when \SpecialCoor is currently active
+\psset{linestyle=none,unit=6.8,fillstyle=gradient,gradmidpoint=0,
+ gradbegin=\SeminarBackgroundCompositeColorSecond,
+ gradend=\SeminarBackgroundCompositeColorFirst}%
+\@tempdima=\SeminarPaperHeight
+\divide\@tempdima\tw@
+\@tempdimb=\SeminarPaperWidth
+\divide\@tempdimb\tw@
+\advance\@tempdimb -35truemm
+\rput(\@tempdima,\@tempdimb){\PstSierpinskiTriangle{4}}}}
+
+% Backgrounds with external images
+
+% With image file name
+\newcommand{\SeminarBackgroundImageAngle}{0}
+\newcommand{\SeminarBackgroundImageFile}{Undefined}
+
+\SeminarNewSlideFrameBackground{SeminarBackgroundImage}{{%
+\@tempdima=\SeminarPaperHeight
+\divide\@tempdima\tw@
+\@tempdimb=\SeminarPaperWidth
+\divide\@tempdimb\tw@
+\rput(\@tempdima,\@tempdimb){%
+ \includegraphics[angle=\SeminarBackgroundImageAngle,
+ width=\SeminarPaperHeight,height=\SeminarPaperWidth]
+ {\SeminarBackgroundImageFile}}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% To choice color or black and white version
+% ------------------------------------------
+
+% Note: we do not use booleans because we want to manage three states:
+% true, false and undefined. We must be able to force the value in front
+% of the file, before the \documentclass macro. If this is not done,
+% a question will be asked interactively (this can be falsely interactivity,
+% using for instance a command like "echo y | latex ..." on Unix systems)
+
+\def\AnswerYes{y}
+\def\SeminarColorQuestion{y}
+\def\SeminarPaperQuestion{n}
+
+% Definition of the styles to enrich text (color or black and white version)
+\def\SeminarColorVersion{\SeminarColorQuestion}
+ \usepackage{hcolor}
+
+% Screen or paper version?
+\def\SeminarPaperVersion]{\SeminarPaperQuestion}
+ \def\special@paper{297mm,210mm}% A4 format
+
+% A4 format
+\usepackage{sem-a4}
+\setlength{\slidewidth}{281mm}
+\setlength{\slideheight}{170mm}
+\def\SeminarPaperWidth{210truemm}
+\def\SeminarPaperHeight{297truemm}
+
+% Letter format
+%\setlength{\slidewidth}{261mm}
+%\setlength{\slideheight}{176mm}
+%\def\SeminarPaperWidth{215.9truemm}
+%\def\SeminarPaperHeight{279.4truemm}
+
+% General size parameters for all formats
+\renewcommand{\slidetopmargin}{15.5mm}
+\renewcommand{\slidebottommargin}{13mm}
+\renewcommand{\slideleftmargin}{4mm}
+\renewcommand{\sliderightmargin}{4mm}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Some general PSTricks useful add-ons
+% ------------------------------------
+
+% Initialization of PSTricks parameters
+
+% As \psset, but, opposite to it, this version allow the following syntax:
+% \def\MyPstFrame#1{{%
+% \def\Temp{#1}%
+% \ifx\Temp\empty
+% \else
+% \PstSet{#1}
+% \fi
+% \begin{pspicture}(2,2)
+% \psframe(2,2)
+% \end{pspicture}}}
+%
+% \def\PstParams{linecolor=red,fillstyle=solid,fillcolor=yellow}
+% \MyPstFrame{\PstParams}
+%
+% The syntax \MyPstFrame{linecolor=cyan,fillstyle=vlines} still work,
+% as with \psset
+
+\def\PstSet#1{\PstSet@i#1,\@nil\ignorespaces}
+
+\def\PstSet@i#1,{%
+\expandafter\PstSet@ii#1,\@nil
+\@ifnextchar\@nil{\@gobble}{\PstSet@i}}
+
+\def\PstSet@ii#1,{%
+\PstSet@iii#1=\@nil
+\@ifnextchar\@nil{\@gobble}{\PstSet@ii}}
+
+\def\PstSet@iii#1=#2\@nil{\psset{#1=#2}}
+
+% \DoPerChar macro from Juergen Schlegelmilch
+% °°°°°°°°°°°°°°°°
+% (<schlegel@Informatik.Uni-Rostock.de> - posted on c.t.t. Jan. 27, 1998)
+\def\DoPerChar#1#2#3\@nil{%
+#1#2%
+\edef\@tempa{#3}%
+\ifx\@tempa\@empty
+\else
+ \DoPerChar#1#3\@nil
+\fi}
+
+% To write a text vertically (but with letters horizontal)
+% °°°°°°°°°°°°°°°°°°°°°°°°°°
+\def\TextTurn#1{\DoPerChar\TextTurn@CharacterTurn#1\@nil}
+\def\TextTurn@CharacterTurn#1{\rotateleft{\,\hbox to 0mm{\hss#1\hss}}\,}
+
+% To print a string in a framebox of a specified length
+% °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
+\def\PstTab{\@ifnextchar[{\PstTab@i}{\PstTab@i[]}}
+\def\PstTab@i[#1]#2#3{{%
+\psset{#1}%
+\psframebox[framesep=0.06,framearc=0.8,shadow=true,shadowangle=45,shadowsize=0.1]{%
+ \rule[-0.5mm]{0mm}{2.5mm}%
+ \truncate[.]{#3}{\hfil#2\hfil}}}}
+
+% To print tabs for the sections
+% °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
+\def\SeminarTabs#1#2#3#4{%
+% #1 = length for each tab, #2 = font specifications (if changed),
+% #3 = color of the current section,
+% #4 = color for all sections except the current one
+%
+% Temporary redefinition of the OvalFrame PostScript macro
+% for better look for a tab
+\pst@Verb{%
+/OvalFrame {
+ x1 x2 eq y1 y2 eq or
+ { pop pop x1 y1 moveto x2 y2 L }
+ { y1 y2 sub abs
+ x1 x2 sub abs
+ 2 copy gt { exch pop } { pop } ifelse
+ 2 div exch
+ { dup 3 1 roll mul exch } if
+ 2 copy lt { pop } { exch pop } ifelse
+ /b ED
+ x1 y1 y2 add 2 div moveto
+ x1 y2 x2 y2 b arcto
+ x2 y2 x2 y1 b arcto
+% D.G. modification begin - Mar. 20, 2002
+% x2 y1 x1 y1 b arcto
+% x1 y1 x1 y2 b arcto
+ x2 y1 x1 y1 0 arcto
+ x1 y1 x1 y2 0 arcto
+% D.G. modification end
+ 16 { pop } repeat
+ closepath }
+ ifelse } def}%
+%
+\def\l@slide##1##2##3##4{\l@slide@i##1##2\@nil##4\@@nil}%
+\def\l@slide@i##1\ignorespaces ##2\@nil##3\@@nil{%
+\pst@@killglue% To eat the end of line after the \l@slide macro
+\ifnum##1=\c@slidesection
+ \def\SeminarTabsCurrentSectionColor{#3}%
+\else
+ \def\SeminarTabsCurrentSectionColor{#4}%
+\fi
+#2% To be able to change the font size, serie, etc.
+\hyperlink{##3}{%
+ \PstTab[fillstyle=solid,fillcolor=\SeminarTabsCurrentSectionColor]
+ {##2}{#1}}}%
+\let\l@subslide\@gobblefour
+\@startlos}
+
+% General annotation macro
+% °°°°°°°°°°°°°°°°°°°°°°°°
+
+% To add annotations on a page (slide), specially when using overlays
+% This is specially useful to add comments on a set of equations
+% or on program lines on a listing
+
+\newdimen\PstAnnotation@BoxBaselineskipDim
+\define@key[psset]{}{AnnotationBoxBaselineskip}{\pssetlength{\PstAnnotation@BoxBaselineskipDim}{#1}}
+\define@key[psset]{}{AnnotationBoxCommand}{\def\PstAnnotation@BoxCommand{#1}}
+\define@key[psset]{}{AnnotationBoxJustification}{\def\PstAnnotation@BoxJustification{#1}}
+
+\newdimen\PstAnnotation@BoxLengthDim
+\define@key[psset]{}{AnnotationBoxLength}{\pssetlength{\PstAnnotation@BoxLengthDim}{#1}}
+\define@key[psset]{}{AnnotationBoxStyle}{\def\PstAnnotation@BoxStyle{#1}}
+\define@key[psset]{}{AnnotationConnectionCommand}{\def\PstAnnotation@ConnectionCommand{#1}}
+
+\define@key[psset]{}{AnnotationConnectionBasicStyle}{\def\PstAnnotation@ConnectionBasicStyle{#1}}
+
+\define@key[psset]{}{AnnotationConnectionSpecialStyle}{\def\PstAnnotation@ConnectionSpecialStyle{#1}}
+
+\define@key[psset]{}{AnnotationReferencePoint}{\def\PstAnnotation@ReferencePoint{#1}}
+
+\define@key[psset]{}{AnnotationTextStyle}{\def\PstAnnotation@TextStyle{#1}}
+
+\define@key[psset]{}{AnnotationPositionX}{\def\PstAnnotation@PositionX{#1}}
+
+\define@key[psset]{}{AnnotationPositionY}{\def\PstAnnotation@PositionY{#1}}
+
+% Default values
+\psset{%
+ AnnotationBoxBaselineskip=0.5mm,
+ AnnotationBoxCommand=\psframebox,
+ AnnotationBoxLength=4cm,
+ AnnotationBoxJustification=r,
+ AnnotationBoxStyle={linewidth=0.015,framesep=0.05},
+ AnnotationConnectionCommand=\ncline,
+ AnnotationConnectionBasicStyle={arrows=->,nodesep=0.1},
+ AnnotationConnectionSpecialStyle=,
+ AnnotationReferencePoint=l,
+ AnnotationTextStyle=\scriptsize,
+ AnnotationPositionX=13.45,
+ AnnotationPositionY=0}
+
+\SpecialCoor
+
+\def\PstAnnotation{\@ifnextchar[{\PstAnnotation@i}{\PstAnnotation@i[]}}
+\def\PstAnnotation@i[#1]#2#3{{%
+\psset{#1}%
+\PstAnnotation@TextStyle
+\rput(\PstAnnotation@PositionX,0 | #2){%
+ \rput[\PstAnnotation@BoxJustification](0,\PstAnnotation@PositionY){%
+ \rnode[\PstAnnotation@ReferencePoint]{AnnotationNodeTemp}{%
+ \ifx\PstAnnotation@BoxStyle\@empty
+ \else
+ \PstSet{\PstAnnotation@BoxStyle}
+ \fi
+ \PstAnnotation@BoxCommand{%
+ \normalbaselineskip=\PstAnnotation@BoxBaselineskipDim
+ \begin{minipage}{\PstAnnotation@BoxLengthDim}
+ #3
+ \end{minipage}}}}}
+\ifx\PstAnnotation@ConnectionBasicStyle\@empty
+\else
+ \PstSet{\PstAnnotation@ConnectionBasicStyle}
+\fi
+\ifx\PstAnnotation@ConnectionSpecialStyle\@empty
+\else
+ \PstSet{\PstAnnotation@ConnectionSpecialStyle}
+\fi
+\PstAnnotation@ConnectionCommand{AnnotationNodeTemp}{#2}}}
+
+% To put a right brace to point an annotation
+\newcommand{\RightBrace}[1]{{% #1 = number of lines to put the brace around
+\@tempdima=#1 pt
+\advance\@tempdima\m@ne pt
+\divide\@tempdima\tw@
+\ifx\BaseLineStretchBrace\@undefined
+ \@tempdimb=\normalbaselineskip
+\else
+ \@tempdimb=\BaseLineStretchBrace\normalbaselineskip
+\fi
+\@tempdimc=\strip@pt\@tempdima\@tempdimb
+\advance\@tempdimc-0.1\@tempdimb
+%
+\setbox\z@\hbox{A}%
+\ifdim\@tempdimc<0.5\ht\z@
+ \advance\@tempdimc0.75\ht\z@
+\fi
+%
+$\left \}\rule[-\@tempdimc]{0mm}{\@tempdimc}\right.$}}
+
+% Macros useful when using overlays with the `listings' package
+% -------------------------------------------------------------
+
+\def\pnodeLstDown#1{%
+\@tempdima=0.5\normalbaselineskip
+\setbox\z@\hbox{A}%
+\ifdim\@tempdima<0.5\ht\z@
+ \advance\@tempdima0.25\ht\z@
+\else
+ \advance\@tempdima-0.5\ht\z@
+\fi
+\pnode(0,-\@tempdima){#1}}
+\def\pnodeLstUp#1{\setbox\z@\hbox{A}\pnode(0,0.5\ht\z@){#1}}
+\def\rnodeLst#1#2#3{\rnode[#1]{#2}{#3}}
+
+\catcode`\@=\SeminarAtCode\relax
+\endinput
+% End seminar.con
diff --git a/macros/latex/contrib/seminar/latex/seminar.sty b/macros/latex/contrib/seminar/latex/seminar.sty
new file mode 100644
index 0000000000..a5f0f7d4c0
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/seminar.sty
@@ -0,0 +1,1167 @@
+%% BEGIN seminar.sty
+%%
+%% This is file `seminar.sty'
+%%
+\def\fileversion{1.71}
+\def\filedate{24/06/30}
+%%
+%% LaTeX document style `seminar', for use with LaTeX v2.09.
+%% This is a style for typesetting notes and slides.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%% 2021, by Herbert Voß
+%%
+%% 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.
+%%
+%%
+\@ifundefined{@seminarerr}{}{\endinput}
+\typeout{%
+ Document Style: `seminar' v\fileversion \space <\filedate> (tvz)}
+\providecommand\theHslide{\arabic{slide}}%
+\def\test@member#1#2{%
+ \edef\@tempg{,#2,#1,}%
+ \edef\@temph{####1,#1,}%
+ \expandafter\def\expandafter\@temph\@temph##2\@nil{%
+ \def\@tempg{##2}%
+ \ifx\@tempg\@empty\@testfalse\else\@testtrue\fi}%
+ \expandafter\@temph\@tempg\@nil}
+\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
+\@ifundefined{reset@font}{\def\reset@font{\normalsize\rm}}{}
+\def\@seminarerr#1#2{%
+ \edef\@tempc{#2}\expandafter\errhelp\expandafter{\@tempc}%
+ \typeout{^^JSeminar.sty error.\space\space\space
+ Type \space H <return> \space for immediate help.^^J}%
+ \errmessage{#1^^J}}
+\def\notslide@err#1{Cannot use \string#1 in slide environments}
+\def\new@slidebox{\alloc@4\box\chardef\insc@unt}
+\newdimen\slidewidth \slidewidth 8.5in
+\newdimen\slideheight \slideheight 6.3in
+\@ifundefined{paperwidth}{\def\paperwidth{8.5in}}{}
+\@ifundefined{paperheight}{\def\paperheight{11in}}{}
+\def\addto@preamblecmds#1{%
+ \begingroup
+ \def\do{\noexpand\do\noexpand}%
+ \xdef\@preamblecmds{\@preamblecmds\do#1}%
+ \endgroup}
+\addto@preamblecmds{\addto@preamblecmds\do\@preamblecmds}
+\def\sem@temp#1{\@ifundefined{if#1}%
+ {\def\@tempa{\csname newif\endcsname}
+ \expandafter\@tempa\csname if#1\endcsname}{}}
+\sem@temp{article}{}
+\sem@temp{slidesonly}{}
+\sem@temp{notes}{}
+\sem@temp{notesonly}{}
+\sem@temp{notesonlystar}{}
+\sem@temp{portrait}{}
+\def\ds@article{\articletrue}
+\def\ds@slidesonly{\slidesonlytrue\notesfalse\notesonlyfalse}
+\def\ds@notes{\notestrue\slidesonlyfalse\notesonlyfalse}
+\def\ds@notesonly{\notesonlytrue\slidesonlyfalse\notesfalse}
+\@namedef{ds@notesonly*}{\ds@notesonly\notesonlystartrue}
+\def\ds@portrait{\portraittrue}
+\@namedef{ds@a4}{%
+ \def\paperwidth{210mm}
+ \def\paperheight{297mm}
+ \slidewidth 222mm
+ \slideheight 152mm\relax}
+\@@input article.sty
+\ifnotesonly\else\notesonlystarfalse\fi
+\@@input sem-page.sty
+\newtoks\before@document
+\newtoks\after@document
+\let\xcomment@hook\relax
+%\before@document{\endgroup\the\before@document\begingroup}
+\before@document{\the\before@document}
+\after@document{\the\after@document\xcomment@hook}
+\expandafter\@temptokena\expandafter{\document}
+\edef\document{\the\before@document\the\@temptokena\the\after@document}
+\before@document{}
+\after@document{}
+\newtoks\before@enddocument
+\before@enddocument{\the\before@enddocument}
+\expandafter\@temptokena\expandafter{\enddocument}
+\edef\enddocument{\the\before@enddocument\the\@temptokena}
+\before@enddocument{}
+\newif\ifprintlandscape
+\ifportrait
+ \ifarticle\printlandscapetrue\fi
+\else
+ \ifarticle\else\printlandscapetrue\fi
+\fi
+\addto@hook\before@document{\ifprintlandscape\printlandscape\fi}
+\addto@preamblecmds{\printlandscape}
+\def\printlandscape{\addto@hook\before@enddocument{%
+ \typeout{^^J%
+ *******************************************************^^J%
+ ***** !! PRINT THIS DOCUMENT IN LANDSCAPE MODE !! *****^^J%
+ *******************************************************}}}
+\def\slide{%
+ \NestedSlide@Error{slide}%
+ \landscapetrue
+ \@ifnextchar[{\begin@slide}{\begin@slide[\slidewidth,\slideheight]}}
+\def\endslide{\end@slide}
+\@namedef{slide*}{%
+ \NestedSlide@Error{slide*}%
+ \landscapefalse
+ \@ifnextchar[{\begin@slide}{\begin@slide[\slidewidth,\slideheight]}}%
+\@namedef{endslide*}{\end@slide}
+\newcounter{slide}
+\def\theslide{\arabic{slide}}
+\newcount\slide@count
+\newbox\@slidebox
+\newbox\not@slidebox
+\newif\ifslide
+\newif\iflandscape
+\def\@landscapeonly{0}
+\def\landscapeonly{\def\@landscapeonly{1}}
+\def\portraitonly{\def\@landscapeonly{-1}}
+\def\NestedSlide@Error#1{%
+ \ifslide
+ \endgroup
+ \@seminarerr{Nested slide environments. Perhaps missing
+ \string\end{\@currenvir}. May be fatal}\@ehd
+ \expandafter\end\expandafter{\@currenvir}%
+ \ifslide\expandafter\end\expandafter{\@currenvir}\fi
+ \begingroup
+ \def\@currenvir{#1}%
+ \fi}
+\def\begin@slide[#1,#2]{%
+ \slide@clearpage
+ \setlength\slidewidth{#1}%
+ \setlength\slideheight{#2}%
+ \begingroup
+ \ifarticle
+ \output{%
+ \advance\count@ 1
+ \global\setbox\not@slidebox\box\@cclv}%
+ \par\@@par\penalty-\@M
+ \fi
+ \output{\slide@output}%
+ \slidetrue
+ \ifarticle\global\slide@count=\z@\fi
+ \refstepcounter{slide}%
+ \ifnotesonlystar\xdef\first@slidemarker{\the\c@slide}\fi
+ \def\do##1{\setcounter{##1}\z@}\slide@reset
+ \ifarticle\else
+ \edef\page@textheight{\number\textheight sp}%
+ \edef\page@textwidth{\number\textwidth sp}%
+ \fi
+ \set@slidesize
+ \slidebox@restore
+ \the\slide@hook
+ \the\before@newslide
+ \everyslide}
+\def\end@slide{%
+ \par\penalty-\@M
+ \xdef\@tempg{\@currenvir}%
+ \endgroup
+ \ifslide
+ \@seminarerr{Perhaps missing `\string\end{\@tempg}',
+ \iffalse{\fi`\string}' or `\string\endgroup'}\@ehd
+ \def\next{\endgroup\ifslide\expandafter\next\fi}%
+ \next
+ \fi
+ \begingroup
+ \output{\setbox\@tempboxa\box\@cclv}%
+ \@@par\penalty-\@M
+ \endgroup
+ \global\advance\c@slide-1
+ \def\do##1{\setcounter{##1}{\@nameuse{saved@c@##1}}}%
+ \slide@reset
+ \ifarticle\outputloop@savedslides\fi
+ \the\after@slide}
+\let\slideclearpagetrue\relax
+\let\slideclearpagefalse\relax
+\ifarticle
+ \def\slide@clearpage{\par\penalty\z@}
+ \ifnotes
+ \def\slideclearpagetrue{\def\slide@clearpage{\clearpage}}
+ \def\slideclearpagefalse{\def\slide@clearpage{\par\penalty\z@}}
+ \else
+ \ifnotesonly
+ \def\slideclearpagetrue{\def\slide@clearpage{\clearpage}}
+ \def\slideclearpagefalse{\def\slide@clearpage{\par\penalty\z@}}
+ \fi
+ \fi
+\else
+ \def\slide@clearpage{\clearpage}
+\fi
+\newtoks\slide@hook
+\def\everyslide{}
+\newtoks\after@slide
+\def\slidebox@restore{%
+ \def\thepage{\theslide}%
+ \def\newpage{\newslide}%
+ \def\clearpage{\newslide}%
+ \def\thispagestyle{\notslide@err{\thispagestyle}}%
+ \pagestyle{\slide@pagestyle}%
+ \@twocolumnfalse
+ \def\twocolumn{\notslide@err{\twocolumn}}%
+ \def\onecolumn{\notslide@err{\onecolumn}}%
+ \def\marginpar{\notslide@err{\marginpar}}%
+ \def\thanks{\slidethanks}%
+ \def\maketitle{\slidemaketitle}%
+ \fix@floats
+ \fix@whatsits
+ \slide@footnotes
+ \def\do##1{\expandafter\xdef\csname
+ saved@c@##1\endcsname{\the\@nameuse{c@##1}}}%
+ \slide@reset
+ \topskip\z@ \maxdepth\z@
+ \slide@listparameters
+ \slidefonts
+ \def\baselinestretch{\slidestretch}%
+ \def\arraystretch{\slidearraystretch}%
+ \sem@ptsize{\slide@ptsize}}
+\def\date#1{\gdef\@date{#1}\gdef\thedate{#1}}
+\def\author#1{\gdef\@author{#1}\gdef\theauthor{#1}}
+\def\title#1{\gdef\@title{#1}\gdef\thetitle{#1}}
+\date{\today}
+\let\slidethanks\thanks
+\def\thethanks{\@thanks}%
+\def\slidemaketitle{%
+ \par
+ \begin{center}\bf
+ {\large \thetitle}\par\vskip 1ex
+ \begin{tabular}[t]{c} \theauthor \end{tabular}\par\vskip 1ex
+ \thedate
+ \end{center}%
+ \thethanks\par}
+\def\fix@floats{%
+ \def\@xfloat##1[##2]{%
+ \expandafter\let\csname end##1\endcsname\end@float
+ \par\medskip\vbox\bgroup\def\@captype{##1}\parindent\z@
+ \ignorespaces}%
+ \def\end@float{\par\vskip\z@\egroup\medskip}%
+ \def\@dblfloat{\@float}\def\end@dblfloat{\end@float}%
+ \def\endfigure{\end@float}\def\endtable{\end@float}}
+\let\normal@write\write
+\let\normal@read\read
+\let\normal@openout\openout
+\let\normal@closeout\closeout
+\def\fix@whatsits{%
+ \def\write{\immediate\normal@write}%
+ \def\read{\immediate\normal@read}%
+ \def\openout{\immediate\normal@openout}%
+ \def\closeout{\immediate\normal@closeout}}
+\newinsert\slide@footins
+\skip\slide@footins=\bigskipamount
+\count\slide@footins=1000
+\dimen\slide@footins=4in
+\def\theslidefootnote{\alph{footnote}}
+\def\slide@footnotes{%
+ \def\thefootnote{\theslidefootnote}%
+ \let\footins\slide@footins
+ \interfootnotelinepenalty\@M}
+\def\slidefonts{}
+\def\slidestretch{1.18}
+\def\slidearraystretch{1.2}
+\def\raggedslides{\@ifnextchar[{\@raggedslides}{\@raggedslides[1fil]}}
+\def\@raggedslides[#1]{%
+ \edef\slide@@rightskip{#1}%
+ \ifslide\slide@rightskip\fi}
+\def\slide@rightskip{%
+ \@rightskip\z@ plus \slide@@rightskip\relax \rightskip\@rightskip}
+\def\slide@@rightskip{1fil}
+\newcount\slide@listdepth
+\def\slide@listparameters{%
+ \let\@listdepth\slide@listdepth
+ \slide@listdepth\z@
+ \def\@listi{\slide@listi}%
+ \def\@listii{\slide@listii}%
+ \def\@listiii{\slide@listiii}%
+ \let\@listiv\relax\let\@listv\relax\let\@listvi\relax}
+\def\slide@listi{%
+ \leftmargin\leftmargini
+ \labelwidth\leftmargini \advance\labelwidth-\labelsep
+ \parsep\parskip \divide\parsep2
+ \partopsep\slidepartopsep\relax
+ \advance\partopsep-\parskip
+ \ifdim\partopsep<\z@\partopsep\z@\fi
+ \itemsep\slideitemsep\relax
+ \ifdim\parsep<\itemsep
+ \topsep\itemsep \advance\topsep-\parsep
+ \else
+ \itemsep\parsep \topsep\z@
+ \fi}
+\def\slide@listii{%
+ \leftmargin\leftmarginii
+ \labelwidth\leftmarginii \advance\labelwidth-\labelsep
+ \divide\itemsep2 \divide\parsep2
+ \divide\topsep2 \divide\partopsep2\relax}%
+\def\slide@listiii{%
+ \leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii \advance\labelwidth-\labelsep
+ \itemsep \z@ \parsep\z@ \topsep\z@}%
+\def\slideleftmargini{1.8em}
+\def\slideleftmarginii{1.4em}
+\def\slideleftmarginiii{1em}
+\def\slidelabelsep{.5em}
+\def\slideitemsep{.8ex minus .2ex}
+\def\slidepartopsep{1ex minus .2ex}
+\newbox\saved@specials
+\def\save@slidespecials{%
+ \begingroup
+ \output{%
+ \global\setbox\saved@specials=\box\@cclv
+ \global\wd\saved@specials=\z@
+ \global\dp\saved@specials=\z@
+ \global\ht\saved@specials=\z@}%
+ \hbox{}\penalty-\@M
+ \global\let\saved@texttop\@texttop
+ \gdef\@texttop{%
+ \ifvoid\saved@specials\else\box\saved@specials\nointerlineskip\fi
+ \saved@texttop
+ \global\let\@texttop\saved@texttop}%
+ \endgroup}
+\addto@hook\after@document{\save@slidespecials}
+\ifarticle\else
+ \def\insert@specials{%
+ \ifvoid\saved@specials\else
+ \setbox\@slidebox\hbox{\box\saved@specials\box\@slidebox}%
+ \fi
+ \global\let\insert@specials\relax}
+\fi
+\def\extraslideheight#1{%
+ \@tempdima #1\relax
+ \edef\X@SlideHeight{\number\@tempdima sp}
+ \ifslide\set@slidesize\fi}
+\extraslideheight{6pt}
+\def\set@slidesize{%
+ \iflandscape
+ \hsize=\inverseslidesmag\slidewidth
+ \vsize=\inverseslidesmag\slideheight
+ \else
+ \hsize=\inverseslidesmag\slideheight
+ \vsize=\inverseslidesmag\slidewidth
+ \fi
+ \edef\slide@vsize{\number\vsize sp}%
+ \textheight\vsize
+ \advance\vsize\X@SlideHeight\relax
+ \textwidth\hsize\columnwidth\hsize\linewidth\hsize}
+\def\newslide{%
+ \par\penalty-\@M
+ \def\do##1{\setcounter{##1}\z@}\slide@reset
+ \the\before@newslide
+ \set@slidesize}
+\newtoks\before@newslide
+\def\slide@reset{\do{footnote}}
+\def\slidereset#1{\def\slide@reset{}\addtoslidereset{#1}}
+\def\addtoslidereset#1{%
+ \edef\@tempa{#1}\expandafter\addto@slidereset\@tempa,\@nil,}
+\def\addto@slidereset#1,{%
+ \ifx\@nil#1\else
+ \@ifundefined{c@#1}%
+ {\@seminarerr{Counter `#1' not defined}\@ehd}%
+ {\expandafter\def\expandafter\slide@reset\expandafter{%
+ \slide@reset\do{#1}}}%
+ \expandafter\addto@slidereset
+ \fi}
+\def\slide@output{%
+ \@makeslide
+ \@testfalse
+ \ifnotesonly\else
+ \iflandscape
+ \ifnum\@landscapeonly>-1 \os@test\fi
+ \else
+ \ifnum\@landscapeonly<1 \os@test\fi
+ \fi
+ \fi
+ \if@test
+ \reset@slideoutput
+ \@@makeslide
+ \process@slide
+ \fi
+ \refstepcounter{slide}}
+\def\reset@slideoutput{%
+ \let\par\@@par
+ \reset@font
+ \def\baselinestretch{1}%
+ \@nameuse{1\@ptsize @semptsize}%
+ \catcode`\ =10
+ \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii}
+\newif\ifcenterslides
+\centerslidestrue
+\def\@makeslide{%
+ \setbox\@slidebox\vbox{%
+ \unvbox\@cclv
+ \ifvoid\slide@footins\else
+ \vskip\skip\slide@footins
+ \footnoterule
+ \unvbox\slide@footins
+ \fi
+ \vskip\z@}}
+\def\@@makeslide{%
+ \overfullslide@warning
+ \setbox\@slidebox\hbox{%
+ \vfuzz=\slidefuzz\relax
+ \vbox to\slide@vsize{%
+ \ifcenterslides\vskip\z@ plus .0001fil \fi
+ \unvbox\@slidebox
+ \vskip\z@ plus .0001fil}%
+ \the\after@slidepage}%
+ \wd\@slidebox\textwidth}
+\def\overfullslide@warning{%
+ \dimen@\ht\@slidebox
+ \advance\dimen@-\slide@vsize\relax
+ \ifdim\dimen@>\slidefuzz\relax
+ \@warning{Slide \theslide\space overfull by \the\dimen@}%
+ \fi}
+\def\slidefuzz{2pt}
+\newtoks\after@slidepage
+\newif\ifrotateheaders
+\def\sliderotation#1{\@ifundefined{semsr@#1}%
+ {\@latexerr{Slide rotation `#1' not defined.}\@eha}%
+ {\@nameuse{semsr@#1}}}
+\def\semsr@left{%
+ \def\rotate@slide{%
+ \setbox\@slidebox\hbox{\leftsliderotation{\box\@slidebox}}}}
+\def\semsr@right{%
+ \def\rotate@slide{%
+ \setbox\@slidebox\hbox{\rightsliderotation{\box\@slidebox}}}}
+\def\semsr@none{\let\rotate@slide\relax}
+\sliderotation{none}
+\def\leftsliderotation#1{%
+ \@seminarerr{\string\leftsliderotation\space has not been defined}%
+ \@ehd}
+\let\rightsliderotation\leftsliderotation
+\def\@ifrotateslide#1{%
+ \ifx\rotate@slide\relax\else
+ \iflandscape\ifportrait#1\fi\else\ifportrait\else#1\fi\fi
+ \fi}
+\def\process@slide{%
+ \slideframewidth=\inverseslidesmag\slideframewidth
+ \slideframesep=\inverseslidesmag\slideframesep
+ \fboxrule\slideframewidth
+ \fboxsep\slideframesep
+ \ifarticle
+ \@ifrotateslide\rotate@slide
+ \else
+ \ifrotateheaders\else\@ifrotateslide\rotate@slide\fi
+ \fi
+ \process@@slide}
+\def\process@@slide{\finish@slide\output@slide}
+\def\finish@slide{%
+ \theslideframe
+ \add@slidelabel\slidelabel}
+\ifarticle
+ \def\output@slide{%
+ \global\advance\slide@count1
+ \@ifundefined{slidebox@\the\slide@count}%
+ {{\globaldefs=1\expandafter
+ \new@slidebox\csname slidebox@\the\slide@count\endcsname}}{}%
+ \expandafter\global\expandafter\setbox\csname
+ slidebox@\the\slide@count\endcsname\box\@slidebox}
+\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\oddsidemargin\slideleftmargin
+ \setslidelength\evensidemargin\sliderightmargin
+ \setslidelength\headheight\slidetopmargin
+ \setslidelength\footheight\slidebottommargin
+ % Some page styles like to know \textwidth:
+ \textwidth=\@tempdima
+ \advance\textwidth-\oddsidemargin
+ \advance\textwidth-\evensidemargin
+ \setbox\@slidebox=\hbox to \@tempdima{%
+ \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
+ \hbox{%
+ \slideheadfont\relax\strut
+ \hbox to\textwidth{\@oddhead}}%
+ \kern\z@}%
+ \vfill
+ \hbox to\textwidth{\hss\box\@slidebox\hss}%
+ \vfill
+ \vbox to\footheight{%
+ \hbox{%
+ \slidefootfont\relax\strut
+ \hbox to\textwidth{\@oddfoot}}%
+ \vfill}}%
+ \hss}%
+ \ifrotateheaders\@ifrotateslide\rotate@slide\fi
+ \insert@specials
+ \shipout\box\@slidebox
+ \endgroup
+ \let\firstmark\botmark}
+ \@ifundefined{fancyput@flag}{\def\fancyput@flag{-1}}{}
+\fi
+\newskip\slidesep
+\slidesep\intextsep
+\ifarticle
+ \def\fps@fslide{htbp}
+ \def\ftype@fslide{32}
+ \def\float@savedslide{%
+ \begingroup\@float{fslide}%
+ \centerline{\box\@slidebox}%
+ \end@float\endgroup}%
+ \@namedef{float*@savedslide}{%
+ \begingroup\@dblfloat{fslide}%
+ \centerline{\box\@slidebox}%
+ \end@dblfloat\endgroup}%
+ \def\center@slide{\hbox{%
+ \kern-\@totalleftmargin
+ \hbox to \columnwidth{\hss\box\@slidebox\hss}}}%
+ \def\onepercol@savedslide{%
+ \vbox to .996\textheight{\vss\center@slide\vss}\goodbreak}%
+ \def\twopercol@savedslide{%
+ \dimen@.5\textheight
+ \advance\dimen@-\slidesep
+ \ifdim\ht\@slidebox>\dimen@
+ \onepercol@savedslide
+ \else
+ \vbox to .498\textheight{\vss\center@slide\vss}\goodbreak
+ \fi}
+ \def\here@savedslide{%
+ \addvspace\slidesep\center@slide\addvspace\slidesep}
+ \@namedef{here*@savedslide}{%
+ \goodbreak \hrule \@height\z@ \nobreak \vskip\slidesep \nobreak
+ \center@slide
+ \nobreak \vskip\slidesep \nobreak \hrule\@height\z@ \goodbreak}
+\fi
+\ifarticle
+ \def\slideplacement#1{\@ifundefined{#1@savedslide}%
+ {\@seminarerr{Slide placement `#1' undefined}\@ehd}%
+ {\expandafter\let\expandafter\output@savedslide
+ \csname #1@savedslide\endcsname}}
+\else
+ \def\slideplacement#1{}
+\fi
+\ifarticle
+ \ifnotes
+ \ifportrait
+ \slideplacement{float}
+ \else
+ \slideplacement{float*}
+ \fi
+ \else
+ \ifportrait
+ \slideplacement{onepercol}
+ \else
+ \slideplacement{twopercol}
+ \fi
+ \fi
+\fi
+\ifarticle
+ \def\outputloop@savedslides{%
+ \global\maxdepth\@maxdepth
+ \ifvoid\not@slidebox\else
+ \dimen@=\dp\not@slidebox
+ \unvbox\not@slidebox
+ \hrule height\z@
+ \prevdepth\dimen@
+ \penalty\z@
+ \fi
+ \edef\slide@@count{\the\slide@count\relax}%
+ \slide@count\z@
+ \loop
+ \ifnum\slide@count<\slide@@count
+ \advance\slide@count1
+ \expandafter\setbox\expandafter\@slidebox\expandafter\box
+ \csname slidebox@\the\slide@count\endcsname
+ \output@savedslide
+ \repeat
+ \ifnotesonlystar\make@slidemarker\fi}
+\fi
+\def\make@slidemarker{%
+ \addvspace\slidesep
+ \moveleft\@totalleftmargin
+ \vbox{%
+ \hsize\columnwidth
+ \hrule height 1pt
+ \kern 8pt
+ \hbox to \columnwidth{%
+ \hss
+ \LARGE\bf\the@slidemarker
+ \hss}%
+ \kern 8pt
+ \hrule height 1pt}%
+ \addvspace\slidesep}
+\def\the@slidemarker{%
+ Slide%
+ \ifnum\c@slide=\first@slidemarker\else
+ s {\c@slide\first@slidemarker\relax\theslide} --\fi
+ { }\theslide}%
+\ifarticle
+ \let\c@note\c@page
+ \def\p@note{\p@page}
+ \def\thenote{\thepage}
+\else
+ \newcounter{note}
+ \def\thenote{\theslide-\arabic{note}}
+ \def\thepage{\thenote}
+ \addto@hook\after@slide{\setcounter{note}{1}}
+ \expandafter\def\expandafter\@outputpage\expandafter{%
+ \@outputpage\stepcounter{note}}
+\fi
+\ifarticle\else
+ \let\c@page\c@slide
+ \countdef\c@slide=0
+ \c@slide=0
+ \c@page=1
+\fi
+\ifarticle
+ \let\truepagenumbers\relax
+\else
+ \def\truepagenumbers{%
+ \let\c@slide\c@page
+ \countdef\c@page=0
+ \c@page=1
+ \c@slide=0
+ \let\truepagenumbers\relax}
+\fi
+\addto@preamblecmds{\truepagenumbers}
+\newdimen\slideframewidth \slideframewidth 4pt
+\newdimen\slideframesep \slideframesep .3in
+\def\newslideframe#1{%
+ \@ifnextchar[{\@newslideframe{#1}}{\@newslideframe{#1}[]}}
+\def\@newslideframe#1[#2]{%
+ \@namedef{semsfops@#1}{#2}%
+ \@namedef{semsf@#1}##1}
+\newslideframe{plain}{\fbox{#1}}
+\def\slideframe{\@slideframe{slide}}
+\def\@slideframe#1{%
+ \@ifstar{\@testtrue\@@slideframe{#1}}{\@testfalse\@@slideframe{#1}}}
+\def\@@slideframe#1{%
+ \@ifnextchar[{\@@@slideframe{#1}}{\@@@slideframe{#1}[]}}
+\def\@@@slideframe#1[#2]#3{%
+ \def\@tempa{none}%
+ \def\@tempb{#3}%
+ \ifx\@tempa\@tempb
+ \@namedef{the#1frame}{\relax}%
+ \else
+ \ifx\@tempb\@empty
+ \@namedef{the#1frame}{}%
+ \else
+ \@ifundefined{semsf@#3}%
+ {\@seminarerr{Slide frame `#3' undefined}\@eha}%
+ {\if@test
+ \@@@@slideframe{#1}[#2]{#3}%
+ \else
+ \@namedef{the#1frame}{\setbox\@slidebox=\hbox{{%
+ \@nameuse{semsfops@#3}#2\@nameuse{semsf@#3}{\box\@slidebox}}}}%
+ \fi}%
+ \fi
+ \fi}
+\def\@@@@slideframe#1[#2]#3{%
+ \expandafter\let\expandafter\@tempa\csname the#1frame\endcsname
+ \edef\next{%
+ \noexpand\def\expandafter\noexpand\csname the#1frame\endcsname}%
+ \expandafter\next\expandafter{\@tempa
+ \setbox\@slidebox=\hbox{{%
+ \@nameuse{semsfops@#3}%
+ #2%
+ \@nameuse{semsf@#3}{\box\@slidebox}}}}}%
+\slideframe{plain}
+\def\slidestyle#1{\@ifundefined{ss@#1}%
+ {\@seminarerr{Slide style `#1' undefined}\@eha}%
+ {\@nameuse{ss@#1}}}
+\def\ss@empty{\let\add@slidelabel\@gobble}
+\def\ss@left{\def\add@slidelabel##1{%
+ \setbox\@slidebox=\hbox{%
+ \vbox to \ht\@slidebox{\vss
+ \hbox to 0pt{\hss##1\hskip 15pt}%
+ \vss}\box\@slidebox}}}
+\def\ss@bottom{\def\add@slidelabel##1{%
+ \setbox\@slidebox=\vbox{\copy\@slidebox\vskip 9pt
+ \hbox to\wd\@slidebox{\hss##1\hss}}}}%
+\ifarticle
+ \ifportrait\slidestyle{bottom}\else\slidestyle{left}\fi
+\else
+ \slidestyle{empty}
+\fi
+\def\slidelabel{\bf Slide \theslide}
+\def\newpagestyle#1#2#3{%
+ \expandafter\newcommand\csname ps@#1\endcsname{%
+ \def\@oddhead{#2}\let\@evenhead\@oddhead
+ \def\@oddfoot{#3}\let\@evenfoot\@oddfoot}}
+\def\renewpagestyle#1#2#3{%
+ \expandafter\renewcommand\csname ps@#1\endcsname{%
+ \def\@oddhead{#2}\let\@evenhead\@oddhead
+ \def\@oddfoot{#3}\let\@evenfoot\@oddfoot}}
+\def\@ifgoodps#1{%
+ \@ifundefined{ps@#1}{\@seminarerr{Page style `#1' undefined}\@eha}}
+\def\slidepagestyle#1{%
+ \@ifgoodps{#1}%
+ {\ifslide\pagestyle{#1}\else\edef\slide@pagestyle{#1}\fi}}
+\def\ps@{}
+\slidepagestyle{}
+\ifarticle
+ \def\ps@align{}
+\else
+ \def\ps@align{%
+ \def\@oddhead{\thepage\hfil+}\let\@evenhead\@oddhead
+ \def\@oddfoot{+\hfil+}\let\@evenfoot\@oddfoot}
+\fi
+\def\slideheadfont{\scriptsize}
+\def\slidefootfont{\scriptsize}
+\def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or
+ 2074\or 2488\or 2986\or 3583\or 4300\or 5160\fi\relax}
+\def\magstepminus#1{%
+ \ifcase#1 \@m\or 833\or 694\or 579\or 482\or 401\fi\relax}
+\def\@magstep#1{%
+ \ifnum#1<\z@\magstepminus{-#1}\else\magstep#1\fi}
+{\catcode`\p=12\catcode`\t=12
+ \gdef\@@inv@@mag#1pt#2{\def#2{#1}}}
+\def\invert@mag#1{\@tempdima=1000pt
+ \divide\@tempdima by #1\relax
+ \expandafter\@@inv@@mag\the\@tempdima#1}
+\def\@slidesmag#1{%
+ \@tempcnta=#1\relax%
+ \ifnum\@tempcnta>0
+ \edef\inverseslidesmag{\the\@tempcnta}%
+ \invert@mag\inverseslidesmag
+ \ifarticle\else\mag\@tempcnta\fi
+ \else
+ \@seminarerr{\string\@slidesmag\space argument must be an
+ integer equal to 1000 times the magnification}\@eha
+ \fi}
+\def\@articlemag#1{%
+ \@tempcnta=#1\relax%
+ \ifnum\@tempcnta>0
+ \edef\inverseartmag{\the\@tempcnta}%
+ \invert@mag\inverseartmag
+ \ifarticle\mag\@tempcnta\fi
+ \else
+ \@seminarerr{\string\articlemag\space argument must be an
+ integer equal to 1000 times the magnification}\@eha
+ \fi}
+\addto@preamblecmds{\@slidesmag\do\@articlemag}
+\newdimen\semin
+\newdimen\semcm
+\def\@semmagerr#1{%
+ \@seminarerr{\string#1 argument must be an integer
+ between -5 and 9}\@eha}
+\def\slidesmag#1{%
+ \@tempcnta=#1\relax
+ \ifnum\@tempcnta>-6
+ \ifnum\@tempcnta<10
+ \edef\the@slidesmag{\the\@tempcnta}%
+ \@slidesmag{\@magstep\@tempcnta}%
+ \else
+ \@semmagerr\slidesmag
+ \fi
+ \else
+ \@semmagerr\slidesmag
+ \fi
+ \setslidelength\semin\seminlength
+ \setslidelength\semcm\semcmlength}
+\def\seminlength{1in}
+\def\semcmlength{1cm}
+\def\articlemag#1{%
+ \@tempcnta=#1\relax
+ \ifnum\@tempcnta>-6
+ \ifnum\@tempcnta<10
+ \edef\the@articlemag{\the\@tempcnta}%
+ \@articlemag{\@magstep\@tempcnta}%
+ \else
+ \@semmagerr\articlemag
+ \fi
+ \else
+ \@semmagerr\articlemag
+ \fi}
+\addto@preamblecmds{\slidesmag\do\articlemag}
+\def\setslidelength#1#2{%
+ #1=#2\relax
+ #1=\inverseslidesmag#1}%
+\def\addtoslidelength#1#2{%
+ \dimen@=#2\relax
+ \advance#1 by \inverseslidesmag\dimen@}
+\def\setartlength#1#2{%
+ #1=#2\relax
+ #1=\inverseartmag#1}
+\def\addtoartlength#1#2{%
+ \dimen@=#2\relax
+ \advance#1 by \inverseartmag\dimen@}
+\def\slide@epsfsize#1#2{%
+ \ifdim\epsfxsize=0pt
+ \ifdim\epsfysize=0pt
+ \inverseslidesmag#1%
+ \else
+ 0pt
+ \fi
+ \else
+ \inverseslidesmag\epsfxsize
+ \fi
+ \epsfysize
+ \ifdim\epsfysize=0pt
+ \ifdim\epsfxsize=0pt
+ \inverseslidesmag#2%
+ \else
+ 0pt
+ \fi
+ \else
+ \inverseslidesmag\epsfysize
+ \fi}
+\def\epsfslidesize{\let\epsfsize\slide@epsfsize}
+\slidesmag{4}
+\articlemag{0}
+\def\do@pageparameters{%
+ \do\oddsidemargin
+ \do\evensidemargin
+ \do\marginparwidth
+ \do\marginparsep
+ \do\topmargin
+ \do\headheight
+ \do\headsep
+ \do\textheight
+ \do\textwidth
+ \do\topskip
+ \do\footskip
+ \do\footheight}
+\ifarticle
+ \def\scale@pageparameters{%
+ \begingroup
+ \def\do##1{\global##1=\inverseartmag##1\relax}%
+ \do@pageparameters
+ \endgroup}
+\else
+ \def\scale@pageparameters{%
+ \begingroup
+ \def\do##1{\global##1=\inverseslidesmag##1\relax}%
+ \do@pageparameters
+ \endgroup}
+\fi
+\addto@hook\before@document{\scale@pageparameters}
+\addto@preamblecmds{\scale@pageparameters\do\do@pageparameters}
+\def\allversions{}
+\let\endallversions\relax
+\@namedef{allversions*}{\@bsphack\globaldefs=1}
+\@namedef{endallversions*}{\@esphack}
+\def\slide@list{slide,slide*,allversions,allversions*}
+\def\addtoslidelist#1{\xdef\slide@list{\slide@list,#1}}
+\addto@preamblecmds{\addtoslidelist}
+\ifslidesonly
+ \@ifundefined{xcomment@@@}{\@@input xcomment.sty }{}
+ \def\xcomment@hook{\@xcomment{@@@}{\slide@list}}
+ \newxcomment[]{note}
+\else
+ \def\note{\@bsphack}%
+ \def\endnote{\@esphack}%
+\fi
+\def\noxcomment{\def\xcomment@hook{}}
+\def\os@list{}
+\newif\if@os
+\def\onlyslides#1{\def\os@list{#1}\@ostrue
+ \def\os@warning{\@warning{\string\onlyslides\space argument
+ contains undefined references}}}
+\def\notslides#1{\def\os@list{#1}\@osfalse
+ \def\os@warning{\@warning{\string\notslides\space argument
+ contains undefined references}}}
+\addto@preamblecmds{\onlyslides\do\notslides}
+\addto@hook\after@document{%
+ \ifx\os@list\@empty\else\os@expandlist\fi}
+\def\os@expandlist{%
+ \let\os@@warning\relax
+ \begingroup
+ \def\ref##1{\@ifundefined{r@##1}{?}%
+ {\noexpand\@car\@nameuse{r@##1}\noexpand\@nil}}%
+ \edef\@tempd{\os@list}%
+ \xdef\os@list{}%
+ \@for\@tempc:=\@tempd
+ \do{\expandafter\os@expandrange\@tempc-:-:\@nil}%
+ \os@@warning
+ \endgroup
+ \let\os@expandrange\relax
+ \let\os@checknum\relax
+ \let\os@expandlist\relax}
+\def\os@expandrange#1-#2-#3\@nil{%
+ \def\@tempa{?}\def\@tempb{#1}%
+ \ifx\@tempa\@tempb
+ \let\os@@warning\os@warning
+ \else
+ \@tempcnta=#1\relax
+ \def\@tempb{#2}%
+ \ifx\@tempa\@tempb
+ \let\os@@warning\os@warning
+ \else
+ \def\@tempa{:}%
+ \ifx\@tempa\@tempb
+ \@tempcntb=\@tempcnta
+ \else
+ \@tempcntb=#2\relax
+ \fi
+ \advance\@tempcnta by -1
+ \advance\@tempcntb by 1
+ \ifx\os@list\@empty
+ \xdef\os@list{\the\@tempcnta+\the\@tempcntb}%
+ \else
+ \xdef\os@list{\os@list,\the\@tempcnta+\the\@tempcntb}%
+ \fi
+ \fi
+ \fi}
+\def\os@test{%
+ \@testtrue
+ \iflandscape
+ \ifnum\@landscapeonly=-1 \@testfalse\fi
+ \else
+ \ifnum\@landscapeonly=1 \@testfalse\fi
+ \fi
+ \if@test
+ \ifx\os@list\@empty\else
+ \if@os\@testfalse\fi
+ \@for\@tempa:=\os@list\do{\expandafter\os@testrange\@tempa\@nil}%
+ \fi
+ \fi}
+\def\os@testrange#1+#2\@nil{%
+ \ifnum\c@slide>#1
+ \ifnum\c@slide<#2
+ \if@os\@testtrue\else\@testfalse\fi
+ \fi
+ \fi}
+\def\onlynotestoo{%
+ \ifnotes\@testtrue\else\ifnotesonly\@testtrue\else\@testfalse\fi\fi
+ \if@test
+ \@ifundefined{xcomment@@@}{%
+ \edef\sem@temp{\the\catcode`\@}%
+ \catcode`\@=11
+ \@@input xcomment.sty
+ \catcode`\@=\sem@temp\relax}{}%
+ \def\xcomment@hook{\@xcomment{@@@}{\slide@list}}%
+ \addto@hook\after@slide\onlynotes@too
+ \fi}
+\def\onlynotes@too{%
+ \os@test
+ \if@test\gdef\do@end{}\else\gdef\do@end{\xc@begin}\fi}
+\addto@preamblecmds\onlynotestoo
+\def\ptsize#1{%
+ \@ifundefined{#1@semptsize}%
+ {\@seminarerr{\string\ptsize\space `#1' not valid.}\@eha}%
+ {\ifslide
+ \sem@ptsize{#1}\large\normalsize
+ \else
+ \edef\slide@ptsize{#1}%
+ \fi}}
+\edef\slide@ptsize{1\@ptsize}%
+\def\slidefontsizes{\ptsize} %For backwards compatibility??
+\def\slide@setsize#1#2#3#4{%
+ \@setsize{#1}{#2}{#3}{#4}%
+ \set@slideskip{#2}}
+\def\slide@@setsize#1#2#3#4{%
+ \slide@setsize{#1}{#2}{#3}{#4}\slidedisplayskips}
+\def\set@slideskip#1{%
+ \normallineskiplimit=#1
+ \advance\normallineskiplimit-\normalbaselineskip
+ \multiply\normallineskiplimit-1
+ \normallineskiplimit\slideskip\normallineskiplimit
+ \ifdim\normallineskiplimit<1pt\normallineskiplimit=1pt\fi
+ \normallineskip=\normallineskiplimit
+ minus \slideshrink\normallineskiplimit
+ \dimen@=\normalbaselineskip
+ \normalbaselineskip=\dimen@ minus \slideshrink\normallineskiplimit
+ \normalbaselines}
+\def\slideskip{.75}
+\def\slideshrink{.25}
+\def\slidedisplayskips{%
+ \abovedisplayskip 1.75ex minus .35ex
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip .2ex minus .2ex
+ \belowdisplayshortskip 1ex minus .2ex}
+\def\sem@ptsize#1{%
+ \@nameuse{#1@semptsize}%
+ \large\normalsize
+ \leftmargini\slideleftmargini\relax
+ \leftmarginii\slideleftmarginii\relax
+ \leftmarginiii\slideleftmarginiii\relax
+ \labelsep\slidelabelsep\relax
+ \parskip\slideparskip\relax
+ \parindent\slideparindent\relax
+ \slide@rightskip
+ \slide@listi
+ \skip\footins\slidefootins\relax
+ \footnotesep\slidefootnotesep\relax}
+\def\slidefootins{2ex minus .8ex}
+\def\slidefootnotesep{1.2ex}
+\def\slideparindent{\z@}
+\def\slideparskip{1ex minus .2ex}
+\@namedef{8@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{9.5pt}\viiipt\@viiipt}%
+ \def\small{\slide@@setsize\small{8pt}\viipt\@viipt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{8pt}\vipt\@vipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{7pt}\vipt\@vipt}%
+ \def\tiny{\slide@setsize\tiny{6pt}\vpt\@vpt}%
+ \def\large{\slide@setsize\large{12pt}\xpt\@xpt}%
+ \def\Large{\slide@setsize\Large{14pt}\xiipt\@xiipt}%
+ \def\LARGE{\slide@setsize\LARGE{17pt}\xivpt\@xivpt}%
+ \def\huge{\slide@setsize\huge{20pt}\xviipt\@xviipt}%
+ \def\Huge{\slide@setsize\Huge{25pt}\xxpt\@xxpt}}
+\@namedef{9@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{11pt}\ixpt\@ixpt}%
+ \def\small{\slide@@setsize\small{9.5pt}\viiipt\@viiipt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{8pt}\viipt\@viipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{7pt}\vipt\@vipt}%
+ \def\tiny{\slide@setsize\tiny{6pt}\vpt\@vpt}%
+ \def\large{\slide@setsize\large{12pt}\xpt\@xpt}%
+ \def\Large{\slide@setsize\Large{14pt}\xiipt\@xiipt}%
+ \def\LARGE{\slide@setsize\LARGE{17pt}\xivpt\@xivpt}%
+ \def\huge{\slide@setsize\huge{20pt}\xviipt\@xviipt}%
+ \def\Huge{\slide@setsize\Huge{25pt}\xxpt\@xxpt}}
+\@namedef{10@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{12pt}\xpt\@xpt}%
+ \def\small{\slide@@setsize\small{11pt}\ixpt\@ixpt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{9.5pt}\viiipt\@viiipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{8pt}\viipt\@viipt}%
+ \def\tiny{\slide@setsize\tiny{6pt}\vpt\@vpt}%
+ \def\large{\slide@setsize\large{14pt}\xiipt\@xiipt}%
+ \def\Large{\slide@setsize\Large{18pt}\xivpt\@xivpt}%
+ \def\LARGE{\slide@setsize\LARGE{22pt}\xviipt\@xviipt}%
+ \def\huge{\slide@setsize\huge{25pt}\xxpt\@xxpt}%
+ \def\Huge{\slide@setsize\Huge{30pt}\xxvpt\@xxvpt}}
+\@namedef{11@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{13.6pt}\xipt\@xipt}%
+ \def\small{\slide@@setsize\small{12pt}\xpt\@xpt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{11pt}\ixpt\@ixpt}%
+ \def\scriptsize{\slide@setsize\scriptsize{9.5pt}\viiipt\@viiipt}%
+ \def\tiny{\slide@setsize\tiny{7pt}\vipt\@vipt}%
+ \def\large{\slide@setsize\large{14pt}\xiipt\@xiipt}%
+ \def\Large{\slide@setsize\Large{18pt}\xivpt\@xivpt}%
+ \def\LARGE{\slide@setsize\LARGE{22pt}\xviipt\@xviipt}%
+ \def\huge{\slide@setsize\huge{25pt}\xxpt\@xxpt}%
+ \def\Huge{\slide@setsize\Huge{30pt}\xxvpt\@xxvpt}}
+\@namedef{12@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{14.5pt}\xiipt\@xiipt}%
+ \def\small{\slide@@setsize\small{13.6pt}\xipt\@xipt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{12pt}\xpt\@xpt}%
+ \def\scriptsize{\slide@setsize\scriptsize{9.5pt}\viiipt\@viiipt}%
+ \def\tiny{\slide@setsize\tiny{7pt}\vipt\@vipt}%
+ \def\large{\slide@setsize\large{18pt}\xivpt\@xivpt}%
+ \def\Large{\slide@setsize\Large{22pt}\xviipt\@xviipt}%
+ \def\LARGE{\slide@setsize\LARGE{25pt}\xxpt\@xxpt}%
+ \def\huge{\slide@setsize\huge{30pt}\xxvpt\@xxvpt}%
+ \let\Huge\huge}
+\@namedef{14@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{18pt}\xivpt\@xivpt}%
+ \def\small{\slide@@setsize\small{14.5pt}\xiipt\@xiipt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{13.6pt}\xipt\@xipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{12pt}\xpt\@xpt}%
+ \def\tiny{\slide@setsize\tiny{9.5pt}\viiipt\@viiipt}%
+ \def\large{\slide@setsize\large{22pt}\xviipt\@xviipt}%
+ \def\Large{\slide@setsize\Large{25pt}\xxpt\@xxpt}%
+ \def\LARGE{\slide@setsize\LARGE{30pt}\xxvpt\@xxvpt}%
+ \let\huge\LARGE
+ \let\Huge\LARGE}
+\@namedef{17@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{22pt}\xviipt\@xviipt}%
+ \def\small{\slide@@setsize\small{18pt}\xivpt\@xivpt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{14.5pt}\xiipt\@xiipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{13.6pt}\xipt\@xipt}%
+ \def\tiny{\slide@setsize\tiny{12pt}\xpt\@xpt}%
+ \def\large{\slide@setsize\large{25pt}\xxpt\@xxpt}%
+ \def\Large{\slide@setsize\Large{30pt}\xxvpt\@xxvpt}%
+ \let\LARGE\Large
+ \let\huge\Large
+ \let\Huge\Large}
+\def\twoup{\@ifnextchar[{\@twoup}{\@twoup[0]}}
+\ifarticle
+ \ifportrait
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@articlemag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -2\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperheight}{\paperwidth}%
+ \target{\@magstep\@tempcntb}{\paperwidth}{\paperheight}%
+ \targetlayout{topbottom}%
+ \printlandscapefalse
+ \else
+ \@seminarerr{Article magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\articlemag##1{\@semtwoupmagerr\articlemag}}
+ \else
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@articlemag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -2\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperwidth}{\paperheight}%
+ \target{\@magstep\@tempcntb}{\paperheight}{\paperwidth}%
+ \if@twoside
+ \targetlayout{twosided}%
+ \fi
+ \printlandscapetrue
+ \else
+ \@seminarerr{Article magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\articlemag##1{\@semtwoupmagerr\articlemag}}
+ \fi
+\else
+ \ifportrait
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@slidesmag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -3\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperwidth}{\paperheight}%
+ \advance\@tempcnta by -3
+ \target{\@magstep\@tempcnta}{\paperheight}{\paperwidth}%
+ \printlandscapetrue
+ \else
+ \@seminarerr{Slides magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\slidesmag##1{\@semtwoupmagerr\slidesmag}}
+ \else
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@slidesmag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -3\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperheight}{\paperwidth}%
+ \target{\@magstep\@tempcntb}{\paperwidth}{\paperheight}%
+ \targetlayout{topbottom}%
+ \printlandscapefalse
+ \else
+ \@seminarerr{Slides magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\slidesmag##1{\@semtwoupmargerr\slidesmag}}%
+ \fi
+\fi
+\def\@semtwoupmagerr#1{%
+ \@seminarerr{\string#1 must come before \string\twoup}\@eha}
+\addto@preamblecmds{\twoup\do\@twoup}
+\openin1 seminar.con
+\ifeof1\else\closein1 \relax\@@input seminar.con\fi
+\endinput
+%%
+%% End of file `seminar.sty'.
diff --git a/macros/latex/contrib/seminar/latex/semlayer.sty b/macros/latex/contrib/seminar/latex/semlayer.sty
new file mode 100644
index 0000000000..de15ca1d9e
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/semlayer.sty
@@ -0,0 +1,158 @@
+%% BEGIN semlayer.sty
+%%
+%% This is file `semlayer.sty', generated
+%% on <1993/4/2> with the docstrip utility (2.0r).
+%%
+%% The original source files were:
+%%
+%% semlayer.doc
+%%
+\def\fileversion{1.0}
+\def\filedate{93/04/01}
+%%
+%% LaTeX style option `semlayer.sty'.
+%% For use with LaTeX v2.09 and the `seminar' document style.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%% 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.
+%%
+%%
+\addto@hook\before@newslide{%
+ \global\def\overlay@list{}%
+ \setcounter{overlay}{0}}
+\newbox\@@slidebox
+\def\process@@slide{%
+ \ifx\overlay@list\@empty
+ \finish@slide
+ \output@slide
+ \else
+ \setbox\@@slidebox\box\@slidebox
+ \make@overlay{0}%
+ \finish@slide
+ \output@slide
+ {\let\theoverlay\theslide\layer@loop{0}}%
+ \overlay@loop
+ \fi}
+\def\overlay@loop{%
+ \begingroup
+ \overlay@prep
+ \c@overlay=1
+ \@whilenum\c@overlay<10
+ \do{%
+ \test@member{\the\c@overlay}{\overlay@list}%
+ \if@test
+ \make@overlay{\the\c@overlay}%
+ \finish@slide
+ \output@slide
+ \fi
+ \layer@loop{\the\c@overlay}%
+ \advance\c@overlay by 1}%
+ \endgroup}
+\def\layer@loop#1{%
+ \begingroup
+ \layer@prep
+ \@for\currlayer:=\layer@list\do{%
+ \test@member{#1-\currlayer}{\overlay@list}%
+ \if@test
+ \make@overlay{#1-\currlayer}%
+ \finish@slide
+ \output@slide
+ \fi}%
+ \endgroup}
+\def\layer@prep{%
+ \ifarticle\pagestyle{\layer@pagestyle}\fi
+ \let\thepage\thelayer
+ \ifx\thelayerframe\@empty\else\let\theslideframe\thelayerframe\fi
+ \let\slidelabel\layerlabel}
+\def\overlay@prep{%
+ \ifarticle\pagestyle{\overlay@pagestyle}\fi
+ \let\thepage\theoverlay
+ \ifx\theoverlayframe\@empty\else\let\theslideframe\theoverlayframe\fi
+ \let\slidelabel\overlaylabel}
+\def\layerframe{\@slideframe{layer}}
+\def\overlayframe{\@slideframe{overlay}}
+\def\thelayerframe{}
+\def\theoverlayframe{}
+\def\overlaylabel{\bf Overlay \theoverlay}
+\def\layerlabel{\bf Layer \thelayer}
+\@ifundefined{c@overlay}{\newcounter{overlay}}{}%%% hv 20131224
+%\newcounter{overlay}
+\def\theoverlay{\theslide-\alph{overlay}}
+\def\currlayer{}
+\def\thelayer{\theoverlay-\currlayer}
+\newif\ifoverlays
+\newif\iflayers
+\@ifundefined{@overlay}%
+ {\let\@overlay\relax}%
+ {\ifarticle\else\overlaystrue\layerstrue\fi}
+\def\nooverlays@err{%
+ \@seminarerr{You need to use additional macros for overlays,
+ e.g., semcolor.sty}\@ehd
+ \global\overlaysfalse
+ \global\layersfalse}
+\@ifundefined{@overlay}{}{}
+\def\overlay#1{%
+ \ifoverlays\ifx\@overlay\relax\nooverlays@err\fi\fi
+ \ifslide
+ \@tempcnta=#1
+ \@testfalse
+ \ifnum\@tempcnta>-1 \ifnum\@tempcnta<10 \@testtrue\fi\fi
+ \if@test
+ \c@overlay=\@tempcnta
+ \ifnum\c@overlay=0
+ \advance\c@slide by -1
+ \refstepcounter{slide}%
+ \else
+ \advance\c@overlay by -1
+ \refstepcounter{overlay}%
+ \ifoverlays
+ \xdef\overlay@list{\overlay@list,\the\c@overlay}%
+ \fi
+ \fi
+ \ifoverlays
+ \@overlay{\the\c@overlay}%
+ \fi
+ \else
+ \@seminarerr{\string\overlay\space argument must be
+ an integer between 0 and 9}\@eha
+ \fi
+ \else
+ \@seminarerr{\string\overlay\space can only be used
+ in slide environments}\@eha
+ \fi
+ \ignorespaces}
+\def\colorlayers#1{%
+ \edef\@tempc{#1}%
+ \edef\layer@list{\layer@list,#1}%
+ \def\@tempa##1{%
+ \@namedef{##1}{%
+ \iflayers\ifx\@overlay\relax\nooverlays@err\fi\fi
+ \ifslide
+ \iflayers
+ \xdef\overlay@list{\overlay@list,\the\c@overlay-##1}%
+ \@overlay{\the\c@overlay-##1}%
+ \fi
+ \else
+ \@seminarerr{Color layer `##1' can only be used in
+ slide environments}\@eha
+ \fi}}
+ \@for\@tempb:=\@tempc\do{%
+ \expandafter\@tempa\expandafter{\@tempb}}}
+\def\layer@list{}
+\def\overlaypagestyle#1{\@ifgoodps{#1}{\edef\overlay@pagestyle{#1}}}
+\def\layerpagestyle#1{\@ifgoodps{#1}{\edef\layer@pagestyle{#1}}}
+\overlaypagestyle{}
+\layerpagestyle{}
+
+\endinput
+%%
+%% End of file `semlayer.sty'.
diff --git a/macros/latex/contrib/seminar/latex/semlcmss.sty b/macros/latex/contrib/seminar/latex/semlcmss.sty
new file mode 100644
index 0000000000..8276f8f179
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/semlcmss.sty
@@ -0,0 +1,170 @@
+%% BEGIN semlcmss.sty
+\def\fileversion{1.0 (2e)}
+\def\filedate{94/02/01}
+%%
+%% LaTeX style option `semlcmss.sty' for the `seminar' document style.
+%% For use with LaTeX v2.09 and the New Font Selection Scheme (1 or 2)
+%% or (some day) with LaTeX2e.
+%%
+%% COPYRIGHT 1994, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%% 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.
+%%
+%%
+%% This file contains the external font information needed to load
+%% the SliTeX sans serif fonts for use by seminar.sty.
+%%
+\csname semlcmss@loaded\endcsname
+\let\semlcmss@loaded\endinput
+\typeout{Style Option: `semlcmss' \fileversion\space <\filedate> (tvz)}
+\@ifundefined{selectfont}
+ {\@seminarerr{`semlcmss' style option can only be used
+ with the New Font Selection Scheme}\@eha\endinput}{}
+%
+\expandafter\ifx\csname DeclareSizeFunction\endcsname\relax
+
+% First, the font definitions:
+\new@fontshape{lcmss}{m}{n}{%
+ <5>lcmss8 scaled 695%
+ <6>lcmss8 scaled 833%
+ <7>lcmss8 scaled 913%
+ <8>lcmss8 %
+ <9>lcmss8 scaled 1095%
+ <10>lcmss8 scaled 1200%
+ <11>lcmss8 scaled 1314%
+ <12>lcmss8 scaled 1440%
+ <14>lcmss8 scaled 1727%
+ <17>lcmss8 scaled 2074%
+ <20>lcmss8 scaled 2488%
+ <25>lcmss8 scaled 2986%
+ }{}
+\extra@def{lcmss}{}{}
+%
+\new@fontshape{lcmss}{m}{it}{%
+ <5>lcmssi8 scaled 695%
+ <6>lcmssi8 scaled 833%
+ <7>lcmssi8 scaled 913%
+ <8>lcmssi8 %
+ <9>lcmssi8 scaled 1095%
+ <10>lcmssi8 scaled 1200%
+ <11>lcmssi8 scaled 1314%
+ <12>lcmssi8 scaled 1440%
+ <14>lcmssi8 scaled 1727%
+ <17>lcmssi8 scaled 2074%
+ <20>lcmssi8 scaled 2488%
+ <25>lcmssi8 scaled 2986%
+ }{}
+\extra@def{lcmss}{}{}
+\subst@fontshape{lcmss}{m}{sl}{lcmss}{m}{it}
+%
+\new@fontshape{lcmss}{bx}{n}{%
+ <5>lcmssb8 scaled 695%
+ <6>lcmssb8 scaled 833%
+ <7>lcmssb8 scaled 913%
+ <8>lcmssb8 %
+ <9>lcmssb8 scaled 1095%
+ <10>lcmssb8 scaled 1200%
+ <11>lcmssb8 scaled 1314%
+ <12>lcmssb8 scaled 1440%
+ <14>lcmssb8 scaled 1727%
+ <17>lcmssb8 scaled 2074%
+ <20>lcmssb8 scaled 2488%
+ <25>lcmssb8 scaled 2986%
+ }{}
+\extra@def{cmssb}{}{}
+\subst@fontshape{lcmss}{bx}{it}{lcmss}{bx}{n}
+\subst@fontshape{lcmss}{bx}{sl}{lcmss}{bx}{n}
+
+%
+% Now define \slidefonts:
+\ifarticle
+ \def\slidefonts{%
+ \def\default@family{lcmss}%
+ \def\rmdefault{lcmss}%
+ \def\sfdefault{lcmss}%
+ \family\default@family\selectfont}
+\else
+ \def\default@family{lcmss}%
+ \def\rmdefault{lcmss}%
+ \def\sfdefault{lcmss}%
+ \family\default@family\selectfont
+\fi
+
+\else
+
+\DeclareFontFamily{OT1}{lcmss}{}{}
+\DeclareFontShape{OT1}{lcmss}{m}{n}{
+ <5>s*[1.1120]lcmss8
+ <6>s*[1.1107]lcmss8
+ <7>s*[1.0434]lcmss8
+ <8>lcmss8
+ <9>s*[0.9733]lcmss8
+ <10><10.95><12><14.4><17.28><20.74><24.88>s*[0.96]lcmss8}{}
+
+\DeclareFontShape{OT1}{lcmss}{m}{sl}{
+ <5>s*[1.1120]lcmssi8
+ <6>s*[1.1107]lcmssi8
+ <7>s*[1.0434]lcmssi8
+ <8>lcmssi8
+ <9>s*[0.9733]lcmssi8
+ <10><10.95><12><14.4><17.28><20.74><24.88>s*[0.96]lcmssi8}{}
+
+\DeclareFontShape{OT1}{lcmss}{bx}{n}{
+ <5>s*[1.1120]lcmssb8
+ <6>s*[1.1107]lcmssb8
+ <7>s*[1.0434]lcmssb8
+ <8>lcmssb8
+ <9>s*[0.9733]lcmssb8
+ <10><10.95><12><14.4><17.28><20.74><24.88>s*[0.96]lcmssb8}{}
+
+\DeclareFontShape{OT1}{lcmss}{m}{it}{<-> ssub * lcmss/m/sl }{}
+\DeclareFontShape{OT1}{lcmss}{bx}{it}{<-> sub * lcmss/bx/n }{}
+\DeclareFontShape{OT1}{lcmss}{bx}{sl}{<-> sub * lcmss/bx/n }{}
+
+% Now define \slidefonts:
+\ifarticle
+ \def\slidefonts{%
+ \def\default@family{lcmss}%
+ \def\rmdefault{lcmss}%
+ \def\sfdefault{lcmss}%
+ \fontfamily\default@family\selectfont}
+\else
+ \def\default@family{lcmss}%
+ \def\rmdefault{lcmss}%
+ \def\sfdefault{lcmss}%
+ \fontfamily\default@family\selectfont
+\fi
+
+\fi
+
+% Now set up a few things for seminar.sty:
+% These fonts are intended to be used with the 10pt font size
+% declarations (and \magstep4), slightly modified:
+\ptsize{10}\slidesmag{4}\articlemag{0}
+\@namedef{10@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{12pt}\xpt\@xpt}%
+ \def\small{\footnotesize}%
+ \def\footnotesize{\slide@@setsize\footnotesize{9.5pt}\viiipt\@viiipt}%
+ \def\scriptsize{\footnotesize}%
+ \def\tiny{\slide@setsize\tiny{6pt}\vpt\@vpt}%
+ \def\large{\slide@setsize\large{14pt}\xiipt\@xiipt}%
+ \def\Large{\slide@setsize\Large{18pt}\xivpt\@xivpt}%
+ \def\LARGE{\slide@setsize\LARGE{22pt}\xviipt\@xviipt}%
+ \def\huge{\slide@setsize\huge{25pt}\xxpt\@xxpt}%
+ \def\Huge{\huge}}
+\def\semlcmss@warning#1{%
+ \@warning{Can't use `\string#1' with the semlcmss option!}}
+\def\ptsize#1{\semlcmss@warning\ptsize}
+\def\slidesmag#1{\semlcmss@warning\slidesmag}
+\def\articlemag#1{\semlcmss@warning\articlemag}
+
+\endinput
+%% END semlcmss.sty
diff --git a/macros/latex/contrib/seminar/latex/semrot.sty b/macros/latex/contrib/seminar/latex/semrot.sty
new file mode 100644
index 0000000000..4b0d400a0d
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/semrot.sty
@@ -0,0 +1,80 @@
+%% BEGIN sem-rot.sty
+\def\fileversion{1.0}
+\def\filedate{93/04/01}
+%%
+%% LaTeX style option `semrot.sty'.
+%% For use with LaTeX v2.09 and the `seminar' document style.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%% 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.
+%%
+%%
+%% The following is just an interface for seminar.sty:
+\def\leftsliderotation#1{\@rotate[l]{#1}}
+\def\rightsliderotation#1{\@rotate[r]{#1}}
+\sliderotation{left}
+%%
+%% And the rest is rotate.sty, as distributed with Rokicki's dvips.
+%%
+% These macros allow you to rotate or flip a \TeX\ box. Very useful for
+% sideways tables or upsidedown answers.
+%
+% To use, create a box containing the information you want to rotate.
+% (An hbox or vbox will do.) Now call \@rotr\boxnum to rotate the
+% material and create a new box with the appropriate (flipped) dimensions.
+% \@rotr rotates right, \@rotl rotates left, \@rotu turns upside down, and
+% \@rotf flips. These boxes may contain other rotated boxes.
+%
+\newdimen\@rotdimen
+\newbox\@rotbox
+
+\def\@vspec#1{\special{ps:#1}}% passes #1 verbatim to the output
+\def\@rotstart#1{\@vspec{gsave currentpoint currentpoint translate
+ #1 neg exch neg exch translate}}% #1 can be any origin-fixing transformation
+\def\@rotfinish{\@vspec{currentpoint grestore moveto}}% gets back in synch
+%
+% First, the rotation right. The reference point of the rotated box
+% is the lower right corner of the original box.
+%
+\def\@rotr#1{\@rotdimen=\ht#1\advance\@rotdimen by\dp#1%
+ \hbox to\@rotdimen{\hskip\ht#1\vbox to\wd#1{\@rotstart{90 rotate}%
+ \box#1\vss}\hss}\@rotfinish}
+%
+% Next, the rotation left. The reference point of the rotated box
+% is the upper left corner of the original box.
+%
+\def\@rotl#1{\@rotdimen=\ht#1\advance\@rotdimen by\dp#1%
+ \hbox to\@rotdimen{\vbox to\wd#1{\vskip\wd#1\@rotstart{270 rotate}%
+ \box#1\vss}\hss}\@rotfinish}%
+%
+% Upside down is simple. The reference point of the rotated box
+% is the upper right corner of the original box. (The box's height
+% should be the current font's xheight, \fontdimen5\font,
+% if you want that xheight to be at the baseline after rotation.)
+%
+\def\@rotu#1{\@rotdimen=\ht#1\advance\@rotdimen by\dp#1%
+ \hbox to\wd#1{\hskip\wd#1\vbox to\@rotdimen{\vskip\@rotdimen
+ \@rotstart{-1 dup scale}\box#1\vss}\hss}\@rotfinish}%
+%
+% And flipped end for end is pretty ysae too. We retain the baseline.
+%
+\def\@rotf#1{\hbox to\wd#1{\hskip\wd#1\@rotstart{-1 1 scale}%
+ \box#1\hss}\@rotfinish}%
+%
+% Now the user interface for LaTeX: \rotate[type]{text} where
+% ``type'' is `l' for left, `r' for right, `u' for upside-down, or
+% `f' for flip. `l' is the default.
+%
+\def\rotate{\@ifnextchar[{\@rotate}{\@rotate[l]}}
+\def\@rotate[#1]#2{\setbox\@rotbox=\hbox{#2}\@nameuse{@rot#1}\@rotbox}
+\endinput
+%% END sem-rot.sty
diff --git a/macros/latex/contrib/seminar/latex/slidesec.sty b/macros/latex/contrib/seminar/latex/slidesec.sty
new file mode 100644
index 0000000000..a7dd283ef2
--- /dev/null
+++ b/macros/latex/contrib/seminar/latex/slidesec.sty
@@ -0,0 +1,198 @@
+%% BEGIN slidesec.sty
+\def\fileversion{v0.9}
+\def\filedate{92/05/07}
+%%
+%% Style option slidesec.sty, for use with LaTeX 2.09 or SliTeX.
+%%
+%% COPYRIGHT 1992, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%%
+%% 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.
+%%
+%%
+% DISCLAIMER:
+%
+% Someone who actually uses something like this should rewrite it.
+%
+% DESCRIPTION:
+%
+% This file contains macros for sections, headings, tables of contents,
+% and lists of slides, for slides. It can probably be used with your
+% favorite LaTeX slide package (e.g., seminar.sty).
+% However:
+%% If the counter used to keep track of slides is not slide ,
+%% then change the following line:
+\def\@SCTR{\theslide}
+%%
+% ACKNOWLEDGEMENTS:
+%
+% The idea comes from Young U. Ryu's lslides.sty.
+%
+% USAGE:
+%
+% \slideheading[#1]{#2}
+% * Analogous to \section.
+% * [#1] is optional; \slideheading{#1} is same as \slideheading[#1]{#2}.
+% * Advances slidesection counter.
+% * Sets \theslideheading to #1; can be used, e.g., in headers and footers.
+% * Adds #1 to slide contents file.
+% * If #2 is non-empty, invokes \makeslideheading{#2} to make a heading.
+% Default definition of \makeslideheading is
+% \begin{center}\large\bf #2 \end{center}
+% but you can redefine this to suit your tastes.
+%
+% \slidesubheading[#1]{#2}
+% * Analogous to \subsection.
+% * Like \slideheading, but add "sub" to all the names.
+%
+% \slideheading and \slidesubheading are meant to be used at most once in
+% a slide, but this is not a binding restriction.
+%
+% You may want to define abbreviated forms. E.g.,
+% \newcommand{heading}{\slideheading}
+% \newcommand{subheading}{\slidesubheading}
+%
+% \listofslides
+% * Analogous to \listoftables.
+%
+% \slidecontents
+% * Analogous to \tableofcontents
+%
+% \Slidecontents
+% * List \slidecontents, but puts some check marks and stuff to
+% indicate what you have covered so far and what is coming up.
+% Meant to be used in the middle of a presentation.
+%
+% To change fonts and otherwise customize what you get from \listofslides,
+% \slidecontents, and \Slidecontents, you have to hack at the definitions
+% of these macros.
+%
+% BUGS:
+%
+% These macros have not been tested very much.
+%
+% IMPLEMENTATION:
+%
+\@ifundefined{@startlos}{}{\endinput}
+\typeout{File `slidesec.sty' \fileversion\space\space
+ \filedate\space\space <tvz>}
+%
+% If we use \@starttoc{los} to read in \jobname.los, then its contents
+% are destroyed and we can't read it again. \@startlos is like \@starttoc,
+% but it sets the flae \los@flag to 1, and then we add a few commands
+% to \enddocument that open \filename.los if \los@flag=1.
+%
+\def\los@flag{0}%
+\def\@startlos{%
+ \begingroup\makeatletter\@input{\jobname.los}\endgroup
+ \gdef\los@flag{1}\global\@nobreakfalse}
+\newtoks\@temptokenb
+\@temptokena{%
+ \ifnum\los@flag=1\if@filesw
+ \newwrite\tf@los\immediate\openout\tf@los\jobname.los\relax
+ \fi\fi}
+\expandafter\@temptokenb\expandafter{\enddocument}
+\edef\enddocument{\the\@temptokena\the\@temptokenb}
+%
+\newcounter{slidesection}
+\newcounter{slidesubsection}
+\def\theslidesection{\arabic{slidesection}}
+\def\thesubslidesection{\theslidesection.\arabic{subslidesection}}
+%
+\def\slideheading{\@dblarg\slide@heading}%
+\def\slide@heading[#1]#2{%
+ \stepcounter{slidesection}%
+ \addtocontents{los}{\protect\l@slide
+ {\the\c@slidesection}{\ignorespaces#1}{\@SCTR}}%
+ \gdef\theslideheading{#1}%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty\else
+ {\edef\@currentlabel{\csname p@slidesection\endcsname\theslidesection}%
+ \makeslideheading{#2}}%
+ \fi}
+\def\slidesubheading{\@dblarg\slide@subheading}
+\def\slide@subheading[#1]#2{%
+ \stepcounter{slidesection}%
+ \addtocontents{los}{\protect\l@subslide
+ {\the\c@slidesubsection}{\ignorespaces#1}{\@SCTR}}%
+ \gdef\theslidesubheading{#1}%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty\else
+ {\edef\@currentlabel{\csname p@slidesubsection\endcsname
+ \theslidesubsection}\makeslideheading{#2}}%
+ \fi}
+\def\theslideheading{}\def\theslidesubheading{}
+%
+\def\makeslideheading#1{%
+ \begin{center}\large\bf #1\end{center}}
+\def\makeslidesubheading{\makeslideheading}
+%
+\def\@undottedtocline#1#2#3#4#5{\vskip \z@ plus .2pt
+ \bgroup
+ \leftskip #2\relax \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax \advance\leftskip \@tempdima
+ \hbox{}\hskip -\leftskip
+ #4\par
+ \egroup}
+\def\slide@dottedcline{\@dottedtocline{1}{1.5em}{2.3em}}
+\def\slide@undottedcline{\@undottedtocline{1}{1.5em}{2.3em}}
+\def\slide@cline{\slide@dottedcline}
+%
+\def\slidenumberline#1{\hbox to\@tempdima{\hss#1\hskip 1em}}
+%
+\def\listofslides{\section*{List of Slides%
+ \@mkboth{LIST OF SLIDES}{LIST OF SLIDES}}%
+ \def\l@slide##1##2##3{%
+ \slide@undottedcline{\slidenumberline{##3}{##2}}{}}%
+ \let\l@subslide\l@slide
+ \@startlos}
+%
+\def\slidecontents{\@ifstar%
+ {\def\slide@cline{\slide@undottedcline}\slide@contents}%
+ {\def\slide@cline{\slide@dottedcline}\slide@contents}}
+\def\slide@contents{%
+ \def\l@slide##1##2##3{%
+ \slide@cline{\slidenumberline{$\bullet$}{##2}}{##3}}%
+ \let\l@subslide\@gobbletwo
+ \@startlos}
+%
+\def\Slidecontents{\@ifstar%
+ {\def\slide@cline{\slide@undottedcline}\Slide@contents}%
+ {\def\slide@cline{\slide@dottedcline}\Slide@contents}}
+\def\Slide@contents{%
+ \def\l@slide##1##2##3{%
+ \ifcase\lslide@flag
+ \message{##1 ** \the\c@slidesection}
+ \ifnum##1>\c@slidesection
+ \def\lslide@flag{1}{\large\slide@cline{%
+ \slidenumberline{$\Rightarrow\bullet$}{##2}}{##3}}%
+ \else
+ {\large\slide@cline{%
+ \slidenumberline{$\surd\;\bullet$}{##2}}{##3}}%
+ \fi
+ \or
+ \def\lslide@flag{2}{\large\slide@cline{%
+ \slidenumberline{$\bullet$}{##2}}{##3}}%
+ \or
+ {\large\slide@cline{%
+ \slidenumberline{$\bullet$}{##2}}{##3}}%
+ \fi}%
+ \def\l@subslide##1##2##3{%
+ \ifnum\lslide@flag=1
+ \@undottedtocline{2}{3.8em}{3.2em}{##2}{}%
+ \fi}%
+ \def\lslide@flag{0}%
+ \@startlos}
+%
+\endinput
+%% END slidesec.sty
diff --git a/macros/latex/contrib/seminar/src/sem-code.tex b/macros/latex/contrib/seminar/src/sem-code.tex
new file mode 100644
index 0000000000..451baaeed7
--- /dev/null
+++ b/macros/latex/contrib/seminar/src/sem-code.tex
@@ -0,0 +1,110 @@
+%% BEGIN sem-code.tex.
+\def\FileVersion{1.0}
+\def\FileDate{93/04/01}
+%%
+%% For printing documented code for seminar.sty.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%%
+%% 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.
+%%
+%% This LaTeX file inputs seminar.doc and semlayer.doc,
+%% and prints the documented code.
+%%
+%% You must also have Frank Mittelbach's
+%% doc.sty and gind.ist
+%% (available from ftp.uni-stuttgart.de), as well as my
+%% tvz-hax.sty, tvz-code.sty and fancybox.sty
+%% (distributed with seminar.sty).
+%%
+%% gind.ist is for the index. I.e.,
+%% makeindex -s gind.ist sem-code.idx
+%%
+%% STYLE OPTIONS:
+%% `a4' : For A4 paper.
+%% `twoside' : For two-sided printing.
+%% `2up' : For two-up printing. (Uses non-standard font magnifications.
+%% See 2up.doc for details.)
+
+\documentstyle{tvz-code}
+
+\CheckVersion{seminar.doc}
+
+% Comment out to suppress generation of .idx file. Speeds things up.
+\MakeIndex
+
+% Include to suppress checksums for drafts:
+% \def\StopEventually#1{\let\Finale\relax}
+
+\MakeShortVerb\"
+
+\ShortMeta
+
+\begin{document}
+
+\def\thetitle{{\tt seminar.sty}: Documented Code}
+
+\begingroup
+ \renewcommand{\thefootnote}{\fnsymbol{footnote}}
+ \thispagestyle{empty}
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \setcounter{page}{0}
+ \null
+ \vfill
+ \begin{center}
+ {\Huge\bf seminar.sty}\\[10pt]
+ {\huge\bf A \bLaTeX{} style for slides and notes}\\[18pt]
+ {\huge\bf Documented Code}\par
+ \vskip 1cm
+ \large Timothy Van Zandt\\[2pt]
+ {\normalsize\tt Timothy.VAN-ZANDT@insead.edu}
+ \vskip 1cm
+ {\large \thefiledate\\ Version \fileversion\par}
+ \end{center}
+ \par
+\endgroup
+
+\vfill
+\begin{quote}
+"seminar.sty" is a \LaTeX{} document style for typesetting slides or
+transparencies, and accompanying notes.
+
+This is the documented code. There is also a {\em User's Guide}, which
+contains installation instructions.
+\end{quote}
+\vfill
+
+\clearpage
+
+\pagenumbering{roman}
+\thispagestyle{empty}
+\tableofcontents
+\clearpage
+\pagenumbering{arabic}
+
+\StopEventually{}
+\DocInput{seminar.doc}
+\Finale
+\clearpage
+
+\StopEventually{}
+\DocInput{semlayer.doc}
+\Finale
+\clearpage
+
+\DeleteShortMeta
+
+\PrintIndex
+
+\end{document}
+%% END sem-code.tex
diff --git a/macros/latex/contrib/seminar/src/sem-make.tex b/macros/latex/contrib/seminar/src/sem-make.tex
new file mode 100644
index 0000000000..4a2f81365c
--- /dev/null
+++ b/macros/latex/contrib/seminar/src/sem-make.tex
@@ -0,0 +1,27 @@
+%% BEGIN sem-make.tex
+%%
+%% A batch file for extracting the code from seminar.doc and semlayer.doc,
+%% using Frank Mittelbach's docstrip.tex utility.
+%% Tested with docstrip.tex V2.0r. Might not work with other versions.
+%%
+%% Run with TeX or LaTeX.
+%%
+%% 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.
+%%
+%%
+\def\batchfile{sem-make.tex}
+\input docstrip
+\preamble
+\endpreamble
+\processFile{seminar}{doc}{sty}{t}
+\processFile{semlayer}{doc}{sty}{t}
+%%
+%% END sem-make.tex
diff --git a/macros/latex/contrib/seminar/src/seminar.doc b/macros/latex/contrib/seminar/src/seminar.doc
new file mode 100644
index 0000000000..5813afc3b8
--- /dev/null
+++ b/macros/latex/contrib/seminar/src/seminar.doc
@@ -0,0 +1,2048 @@
+% BEGIN seminar.doc
+%%
+\def\fileversion{1.0}
+\def\filedate{93/04/01}
+%%
+%% LaTeX document style `seminar', for use with LaTeX v2.09.
+%% This is a style for typesetting notes and slides.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%%
+%% 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.
+%%
+%%
+% **************************************************************************
+% This is `seminar.doc', the documented code for `seminar.sty'.
+% You can copy this to `seminar.sty' and use it as is.
+% You can also create a stripped input file `seminar.sty' using sem-make.tex.
+% You can print the documented code using sem-code.tex.
+% sem-make.tex and sem-code.tex are distributed with seminar.sty.
+% **************************************************************************
+%
+% \EndDocPreamble
+%
+% \CheckSum{3062}
+% \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 \~}
+%
+%
+% \section{Overview}
+%
+% In principle, a slides style is a simple matter; just a question of
+% resetting the magnification and changing a few page parameters. However,
+% allowing notes and slides to be put in the same file but treated
+% differently, and allowing everything to be printed in various formats,
+% complicates things a bit.
+%
+% The code starts by checking that the file is not loaded, and announcing the
+% file on the terminal.
+% \begin{macrocode}
+\@ifundefined{@seminarerr}{}{\endinput}
+\typeout{%
+ Document Style: `seminar' v\fileversion \space <\filedate> (tvz)}
+% \end{macrocode}
+%
+%
+% \section{Useful hacks}
+%
+% \begin{macro}{\test@member}
+% The second argument to "\test@member" is a comma-separated list.
+% "\test@member" checks whether the first argument is a member of this list
+% (after expanding both the list and the first argument), setting "\if@test"
+% appropriately.
+% \begin{macrocode}
+\def\test@member#1#2{%
+ \edef\@tempg{,#2,#1,}%
+ \edef\@temph{####1,#1,}%
+ \expandafter\def\expandafter\@temph\@temph##2\@nil{%
+ \def\@tempg{##2}%
+ \ifx\@tempg\@empty\@testfalse\else\@testtrue\fi}%
+ \expandafter\@temph\@tempg\@nil}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addto@hook}
+% The first argument of "\addto@hook" is a token register. "\addto@hook" adds
+% its second argument to this register. This is a standard macro in the Mainz
+% distribution,.
+% \begin{macrocode}
+\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\reset@font}
+% "\reset@font" is part of later releases of \LaTeX.
+% \begin{macrocode}
+\@ifundefined{reset@font}{\def\reset@font{\normalsize\rm}}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@seminarerr}
+% "\@seminarerr" is analogous to "\@latexerr".
+% \begin{macrocode}
+\def\@seminarerr#1#2{%
+ \edef\@tempc{#2}\expandafter\errhelp\expandafter{\@tempc}%
+ \typeout{^^JSeminar.sty error.\space\space\space
+ Type \space H <return> \space for immediate help.^^J}%
+ \errmessage{#1^^J}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\notslide@err}
+% \begin{macrocode}
+\def\notslide@err#1{Cannot use \string#1 in slide environments}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\new@slidebox}
+% Since "\newbox" is "\outer".
+% \begin{macrocode}
+\def\new@slidebox{\alloc@4\box\chardef\insc@unt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slidewidth,\slideheight}
+% \begin{macrocode}
+\newdimen\slidewidth \slidewidth 8.5in
+\newdimen\slideheight \slideheight 6.3in
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\paperwidth,\paperheight}
+% "\paperwidth" and "\paperheight" are used by "sem-page.sty" to set the page
+% parameters. "\twoup" also uses the values.
+% \begin{macrocode}
+\@ifundefined{paperwidth}{\def\paperwidth{8.5in}}{}
+\@ifundefined{paperheight}{\def\paperheight{11in}}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addto@preamblecmds}
+% Various commands used in this style are added to "\@preamblecmds". This
+% macros makes it easier to do this as we go along. Argument is a list of
+% commands separated by "\do".
+% \begin{macrocode}
+\def\addto@preamblecmds#1{%
+ \begingroup
+ \def\do{\noexpand\do\noexpand}%
+ \xdef\@preamblecmds{\@preamblecmds\do#1}%
+ \endgroup}
+\addto@preamblecmds{\addto@preamblecmds\do\@preamblecmds}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Auxilary files and style options}
+%
+% The formats and selections are specified using style options, but these do
+% not correspond to independent files.
+% It is possible to set the flags before inputting "seminar.sty".
+% \begin{macrocode}
+\def\sem@temp#1{\@ifundefined{if#1}%
+ {\def\@tempa{\csname newif\endcsname}
+ \expandafter\@tempa\csname if#1\endcsname}{}}
+\sem@temp{article}{}
+\sem@temp{slidesonly}{}
+\sem@temp{notes}{}
+\sem@temp{notesonly}{}
+\sem@temp{notesonlystar}{}
+\sem@temp{portrait}{}
+\def\ds@article{\articletrue}
+\def\ds@slidesonly{\slidesonlytrue\notesfalse\notesonlyfalse}
+\def\ds@notes{\notestrue\slidesonlyfalse\notesonlyfalse}
+\def\ds@notesonly{\notesonlytrue\slidesonlyfalse\notesfalse}
+\@namedef{ds@notesonly*}{\ds@notesonly\notesonlystartrue}
+\def\ds@portrait{\portraittrue}
+\@namedef{ds@a4}{%
+ \def\paperwidth{210mm}
+ \def\paperheight{297mm}
+ \slidewidth 222mm
+ \slideheight 152mm\relax}
+% \end{macrocode}
+% This style is based in part on the \LaTeX{} "article" style, which we now
+% input. "article.sty" takes care of executing the options.
+% \begin{macrocode}
+\@@input article.sty
+\ifnotesonly\else\notesonlystarfalse\fi
+\@@input sem-page.sty
+% \end{macrocode}
+%
+% \section{Document hooks}
+%
+% \begin{macro}{\document}
+% "\document" is redefined to incorporate hooks, in the following order:
+% \begin{LVerbatim}
+% \endgroup
+% \the\before@document
+% \begingroup
+% \document
+% \the\after@document
+% \xcomment@hook
+% \end{LVerbatim}
+% "\before@document" and "\after@document" are token registers that can be
+% added to using "\addto@hook". These will be used for things like invoking
+% "\landscape". "\xcomment@hook" is a command sequence that will be used to
+% invoke the "xcomment" macros for commenting out the notes in the
+% "slidesonly" selection.
+%
+% Messing with the definition of "\document" creates potential conflicts with
+% other optional style files that do the same. However, we add these commands
+% in a very friendly way: (i) it shouldn't cause problems even if "\document"
+% does not have its standard definition, and (ii) if some other macros
+% subsequently change the definition of "\document" in the same way,
+% "seminar.sty" should not break. Styles designed specifically for use with
+% "seminar.sty" should use "\before@document" and "\after@document" to add
+% their own modifications to the "\document" command. \codelabel{document}
+%
+% In the code below, "\before@document" and "\after@document" are used as
+% temporary token registers during the modification of "\document".
+% \begin{macrocode}
+\newtoks\before@document
+\newtoks\after@document
+\let\xcomment@hook\relax
+\before@document{\endgroup\the\before@document\begingroup}
+\after@document{\the\after@document\xcomment@hook}
+\expandafter\@temptokena\expandafter{\document}
+\edef\document{\the\before@document\the\@temptokena\the\after@document}
+\before@document{}
+\after@document{}
+% \end{macrocode}
+% \codelabel*{document*}
+% \end{macro}
+%
+% \begin{macro}{\enddocument}
+% Now we do something similar with "\end@document", adding the token register
+% "\before@enddocument" to the beginning of the definition of "\enddocument".
+% This might be used, for example, to warn the user to print in landscape
+% mode.
+% \begin{macrocode}
+\newtoks\before@enddocument
+\before@enddocument{\the\before@enddocument}
+\expandafter\@temptokena\expandafter{\enddocument}
+\edef\enddocument{\the\before@enddocument\the\@temptokena}
+\before@enddocument{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\landscape}
+% "\printlandscape" is invoked at the beginning of landscape documents. It is
+% defined here to warn the user to print in landscape mode.
+% \begin{macrocode}
+\newif\ifprintlandscape
+\ifportrait
+ \ifarticle\printlandscapetrue\fi
+\else
+ \ifarticle\else\printlandscapetrue\fi
+\fi
+\addto@hook\before@document{\ifprintlandscape\printlandscape\fi}
+\addto@preamblecmds{\printlandscape}
+\def\printlandscape{\addto@hook\before@enddocument{%
+ \typeout{^^J%
+ *******************************************************^^J%
+ ***** !! PRINT THIS DOCUMENT IN LANDSCAPE MODE !! *****^^J%
+ *******************************************************}}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Slide-making macros}
+%
+% \begin{macro}{\slide,\endslide,\slide*,\endslide*}
+% Let's start from the outside and move in.
+% \begin{macrocode}
+\def\slide{%
+ \NestedSlide@Error{slide}%
+ \landscapetrue
+ \@ifnextchar[{\begin@slide}{\begin@slide[\slidewidth,\slideheight]}}
+\def\endslide{\end@slide}
+\@namedef{slide*}{%
+ \NestedSlide@Error{slide*}%
+ \landscapefalse
+ \@ifnextchar[{\begin@slide}{\begin@slide[\slidewidth,\slideheight]}}%
+\@namedef{endslide*}{\end@slide}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\theslide}
+% "slide" is the counter for slides. "slide@count" keeps track of the number
+% of slides in the current slide environment.
+% \begin{macrocode}
+\newcounter{slide}
+\def\theslide{\arabic{slide}}
+\newcount\slide@count
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@slidebox}
+% Each slide is stored in the box "\@slidebox". The current page of notes
+% might be saved in "\not@slidebox".
+% \begin{macrocode}
+\newbox\@slidebox
+\newbox\not@slidebox
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifslide,\iflandscape}
+% "\ifslide" is true in any slide environment. This allows commands to be
+% active only in slide environments (important for overlays, for example).
+% "\iflandscape" is true for landscape slides, and false for portrait slides.
+% This allows embellishments to customize their behavior, although it is not
+% actually used by any of the macros defined in "seminar.sty".
+% \begin{macrocode}
+\newif\ifslide
+\newif\iflandscape
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@landscapeonly,\landscapeonly,\portraitonly}
+% "\@landscapeonly" is defined to be "1" if only landscape slides should be
+% printed, "-1" if only portrait slides should be printed, and "0" if both
+% orientations should be printed.
+% \begin{macrocode}
+\def\@landscapeonly{0}
+\def\landscapeonly{\def\@landscapeonly{1}}
+\def\portraitonly{\def\@landscapeonly{-1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\NestedSlide@Error}
+% We will check for nested slide environments, and attempt to recover the best
+% we can. Otherwise, forgetting the end of a slide environment could cause
+% \TeX{} to procede to the end of the document without generating any input,
+% and then give unlightening error messages.
+% \begin{macrocode}
+\def\NestedSlide@Error#1{%
+ \ifslide
+ \endgroup
+ \@seminarerr{Nested slide environments. Perhaps missing
+ \string\end{\@currenvir}. May be fatal}\@ehd
+ \expandafter\end\expandafter{\@currenvir}%
+ \ifslide\expandafter\end\expandafter{\@currenvir}\fi
+ \begingroup
+ \def\@currenvir{#1}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\begin@slide}
+% This is the meat of "\slide" and "\slide*".
+% \begin{macrocode}
+\def\begin@slide[#1,#2]{%
+ \slide@clearpage
+ \setlength\slidewidth{#1}%
+ \setlength\slideheight{#2}%
+% \end{macrocode}
+% The current contents of the page is saved in "\not@slidebox", and then the
+% output routine is set to "\slide@output".
+% \begin{macrocode}
+ \begingroup
+ \ifarticle
+ \output{%
+ \advance\count@ 1
+ \global\setbox\not@slidebox\box\@cclv}%
+ \par\@@par\penalty-\@M
+ \fi
+ \output{\slide@output}%
+% \end{macrocode}
+% The flag "\ifslide" is set, and the counter "\slide@count", which keeps
+% track of the number of slides in the current slide environment, is
+% initialized.
+% \begin{macrocode}
+ \slidetrue
+ \ifarticle\global\slide@count=\z@\fi
+ \refstepcounter{slide}%
+ \ifnotesonlystar\xdef\first@slidemarker{\the\c@slide}\fi
+ \def\do##1{\setcounter{##1}\z@}\slide@reset
+% \end{macrocode}
+% Save current "\textheight" and "\textwidth", to be used later by the output
+% routine in the "slides" format.
+% \begin{macrocode}
+ \ifarticle\else
+ \edef\page@textheight{\number\textheight sp}%
+ \edef\page@textwidth{\number\textwidth sp}%
+ \fi
+ \set@slidesize
+% \end{macrocode}
+% Now we finish customizing the slide environment.
+% \begin{macrocode}
+ \slidebox@restore
+ \the\slide@hook
+ \the\before@newslide
+ \everyslide}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\end@slide}
+% This is "\endslide" and "\endslide*". We first make sure that there are
+% balanced groups so that the normal output routine is restored.
+% \begin{macrocode}
+\def\end@slide{%
+ \par\penalty-\@M
+ \xdef\@tempg{\@currenvir}%
+ \endgroup
+ \ifslide
+ \@seminarerr{Perhaps missing `\string\end{\@tempg}',
+ \iffalse{\fi`\string}' or `\string\endgroup'}\@ehd
+ \def\next{\endgroup\ifslide\expandafter\next\fi}%
+ \next
+ \fi
+% \end{macrocode}
+% If there is anything on the page, it was inserted with "\aftergroup" and
+% should be discarded. (This can happen with color commands, for example.)
+% \begin{macrocode}
+ \begingroup
+ \output{\setbox\@tempboxa\box\@cclv}%
+ \@@par\penalty-\@M
+ \endgroup
+% \end{macrocode}
+% The slide counter was stepped when the last slide was output. Now we need to
+% set it back one. With the "article" format, we now have to output all the
+% acculumulated slides.
+% \begin{macrocode}
+ \global\advance\c@slide-1
+ \def\do##1{\setcounter{##1}{\@nameuse{saved@c@##1}}}%
+ \slide@reset
+ \ifarticle\outputloop@savedslides\fi
+ \the\after@slide}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slideclearpagetrue,\slideclearpagefalse,\slide@clearpage}
+% \begin{macrocode}
+\let\slideclearpagetrue\relax
+\let\slideclearpagefalse\relax
+\ifarticle
+ \def\slide@clearpage{\par\penalty\z@}
+ \ifnotes
+ \def\slideclearpagetrue{\def\slide@clearpage{\clearpage}}
+ \def\slideclearpagefalse{\def\slide@clearpage{\par\penalty\z@}}
+ \else
+ \ifnotesonly
+ \def\slideclearpagetrue{\def\slide@clearpage{\clearpage}}
+ \def\slideclearpagefalse{\def\slide@clearpage{\par\penalty\z@}}
+ \fi
+ \fi
+\else
+ \def\slide@clearpage{\clearpage}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slide@hook,\everyslide,\after@slide}
+% "\slide@hook" and "\everyslide" are hooks for modifying the slide
+% environments. "\slide@hook" is a token register. Commands can be added to it
+% without destroying previously added commands using the "\addto@hook"
+% command.
+% "\everyslide" is an ordinary command sequence to be used by users.
+% "\after@slide" can be used to initialize things for notes.
+% \begin{macrocode}
+\newtoks\slide@hook
+\def\everyslide{}
+\newtoks\after@slide
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{$\setminus$slidebox@restore\label{everyslide}}
+%
+% \begin{macro}{\slidebox@restore}
+% "\slidebox@restore" sets up the spacing parameters at the beginning of every
+% slide. The component commands are defined following this macro.
+% \begin{macrocode}
+\def\slidebox@restore{%
+ \def\thepage{\theslide}%
+ \def\newpage{\newslide}%
+ \def\clearpage{\newslide}%
+ \def\thispagestyle{\notslide@err{\thispagestyle}}%
+ \pagestyle{\slide@pagestyle}%
+ \@twocolumnfalse
+ \def\twocolumn{\notslide@err{\twocolumn}}%
+ \def\onecolumn{\notslide@err{\onecolumn}}%
+ \def\marginpar{\notslide@err{\marginpar}}%
+ \def\thanks{\slidethanks}%
+ \def\maketitle{\slidemaketitle}%
+ \fix@floats
+ \fix@whatsits
+ \slide@footnotes
+ \def\do##1{\expandafter\xdef\csname
+ saved@c@##1\endcsname{\the\@nameuse{c@##1}}}%
+ \slide@reset
+ \topskip\z@ \maxdepth\z@
+ \slide@listparameters
+ \slidefonts
+ \def\baselinestretch{\slidestretch}%
+ \def\arraystretch{\slidearraystretch}%
+ \sem@ptsize{\slide@ptsize}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\thedate,\theauthor,\thetitle,\thethanks}
+% The "\date", "\author" and "\title" commands are redefined so that they save
+% their information in accessible command sequences, "\thedate", "\theauthor"
+% and "\thetitle". "\thanks" is saved so that it can be restored during slide
+% environments. "\thethanks" is set to "\@thanks" so that it is easier to
+% redefine "\slidemaketitle" in the preamble.
+% \begin{macrocode}
+\def\date#1{\gdef\@date{#1}\gdef\thedate{#1}}
+\def\author#1{\gdef\@author{#1}\gdef\theauthor{#1}}
+\def\title#1{\gdef\@title{#1}\gdef\thetitle{#1}}
+\date{\today}
+\let\slidethanks\thanks
+\def\thethanks{\@thanks}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slidemaketitle}
+% \begin{macrocode}
+\def\slidemaketitle{%
+ \par
+ \begin{center}\bf
+ {\large \thetitle}\par\vskip 1ex
+ \begin{tabular}[t]{c} \theauthor \end{tabular}\par\vskip 1ex
+ \thedate
+ \end{center}%
+ \thethanks\par}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fix@floats}
+% Floats are neutralized, but the captions work as usual. This makes it easier
+% to just transfer a float from some other document to a slide. This only
+% works if end of floating environment is "\def"ined to be "\end@float",
+% rather than "\let" to be "\end@float", or if "\@float{foo}" is ended by
+% "\endfoo". This should get 99\% of the cases.
+% \begin{macrocode}
+\def\fix@floats{%
+ \def\@xfloat##1[##2]{%
+ \expandafter\let\csname end##1\endcsname\end@float
+ \par\medskip\vbox\bgroup\def\@captype{##1}\parindent\z@
+ \ignorespaces}%
+ \def\end@float{\par\vskip\z@\egroup\medskip}%
+ \def\@dblfloat{\@float}\def\end@dblfloat{\end@float}%
+ \def\endfigure{\end@float}\def\endtable{\end@float}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fix@whatsits}
+% The whatsits "\write", "\openout" and "\closeout" are problematic in slides
+% for two reasons:
+% \begin{enumerate}
+% \item First, an otherwise empty vertical list with a whatsit is not empty.
+% Thus, if a slide begins with a "\write" command, followed by a line a text,
+% "\parskip" is inserted before the text. This can be quite noticable in a
+% slide environment, since by default "\parskip" is about 2.5\% of the height
+% of a slide. This problem is likely to arise because it is convenient to put
+% a slide's "\label" command first.
+% \item Second, the slides are omitted in the "notesonly" selection, but we
+% want to preserve cross-referencing.
+% \end{enumerate}
+% We solve both problems by making the three whatsits mentioned above
+% "\immediate" within the slide environments. This might cause unforeseen
+% problems for some macros. It also introduces a known problem: slide
+% cross-references may not be accurate if \TeX\ is doing the page breaking
+% automatically.
+% \begin{macrocode}
+\let\normal@write\write
+\let\normal@read\read
+\let\normal@openout\openout
+\let\normal@closeout\closeout
+\def\fix@whatsits{%
+ \def\write{\immediate\normal@write}%
+ \def\read{\immediate\normal@read}%
+ \def\openout{\immediate\normal@openout}%
+ \def\closeout{\immediate\normal@closeout}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slide@footins,\theslidefootnote,\slide@footnotes}
+% We want to set up a parallel footnote system for slides. It acts just like
+% regular footnotes, but
+% \begin{LVerbatim}
+% \interfootnotelinepenalty\@M
+% \end{LVerbatim}
+% means that footnotes will not be split across pages.
+% \begin{macrocode}
+\newinsert\slide@footins
+\skip\slide@footins=\bigskipamount
+\count\slide@footins=1000
+\dimen\slide@footins=4in
+\def\theslidefootnote{\alph{footnote}}
+\def\slide@footnotes{%
+ \def\thefootnote{\theslidefootnote}%
+ \let\footins\slide@footins
+ \interfootnotelinepenalty\@M}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slidefonts,\ifslidefonts}
+% "\slidefonts" should set up any special fonts for the slides.
+% \begin{macrocode}
+\def\slidefonts{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slidestretch,\slidearraystretch}
+% \begin{macrocode}
+\def\slidestretch{1.18}
+\def\slidearraystretch{1.2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\raggedslides}
+% "\ragggedslides[0pt]" means justified, "\raggedslides[1fil]" means
+% "\raggedright". Ideally, we would also like a version that breaks lines the
+% same way as with justified text, but then doesn't stretch any glue to
+% justify the margin. This is impossible, but "\raggedslides[1em]", e.g., is
+% meant to be an intermediate case.
+% \begin{macrocode}
+\def\raggedslides{\@ifnextchar[{\@raggedslides}{\@raggedslides[1fil]}}
+\def\@raggedslides[#1]{%
+ \edef\slide@@rightskip{#1}%
+ \ifslide\slide@rightskip\fi}
+\def\slide@rightskip{%
+ \@rightskip\z@ plus \slide@@rightskip\relax \rightskip\@rightskip}
+\def\slide@@rightskip{1fil}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\slide@listparameters}
+% The list parameters are generally tightened up, compared to the usual
+% spacing in "article.sty", to compensate for the large "\parskip" and
+% "\baselinestretch".
+% \begin{macrocode}
+\newcount\slide@listdepth
+\def\slide@listparameters{%
+ \let\@listdepth\slide@listdepth
+ \slide@listdepth\z@
+ \def\@listi{\slide@listi}%
+ \def\@listii{\slide@listii}%
+ \def\@listiii{\slide@listiii}%
+ \let\@listiv\relax\let\@listv\relax\let\@listvi\relax}
+\def\slide@listi{%
+ \leftmargin\leftmargini
+ \labelwidth\leftmargini \advance\labelwidth-\labelsep
+ \parsep\parskip \divide\parsep2
+ \partopsep\slidepartopsep\relax
+ \advance\partopsep-\parskip
+ \ifdim\partopsep<\z@\partopsep\z@\fi
+ \itemsep\slideitemsep\relax
+ \ifdim\parsep<\itemsep
+ \topsep\itemsep \advance\topsep-\parsep
+ \else
+ \itemsep\parsep \topsep\z@
+ \fi}
+\def\slide@listii{%
+ \leftmargin\leftmarginii
+ \labelwidth\leftmarginii \advance\labelwidth-\labelsep
+ \divide\itemsep2 \divide\parsep2
+ \divide\topsep2 \divide\partopsep2\relax}%
+\def\slide@listiii{%
+ \leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii \advance\labelwidth-\labelsep
+ \itemsep \z@ \parsep\z@ \topsep\z@}%
+\def\slideleftmargini{1.8em}
+\def\slideleftmarginii{1.4em}
+\def\slideleftmarginiii{1em}
+\def\slidelabelsep{.5em}
+\def\slideitemsep{.8ex minus .2ex}
+\def\slidepartopsep{1ex minus .2ex}
+% \end{macrocode}
+% \codelabel{defaultpar*}%
+% \end{macro}
+%
+% \section{Slide output routines: $\setminus$output}
+%
+% \begin{macro}{\save@slidespecials}
+% First, a trick to make sure that "\special"'s in the preamble end up on the
+% first page of the document, even if the first slide is omitted, or if the
+% first item in the document is a float (in which case \LaTeX\ discards
+% "\special"'s). "\@textop" is used to insert the specials if the first page
+% is processed by \LaTeX's usual output routines, and "\insert@specials" is
+% used to insert the specials if the first page is a slide in the "slides"
+% format (see the definition of "\output@slide" below).
+% \begin{macrocode}
+\newbox\saved@specials
+\def\save@slidespecials{%
+ \begingroup
+ \output{%
+ \global\setbox\saved@specials=\box\@cclv
+ \global\wd\saved@specials=\z@
+ \global\dp\saved@specials=\z@
+ \global\ht\saved@specials=\z@}%
+ \hbox{}\penalty-\@M
+ \global\let\saved@texttop\@texttop
+ \gdef\@texttop{%
+ \ifvoid\saved@specials\else\box\saved@specials\nointerlineskip\fi
+ \saved@texttop
+ \global\let\@texttop\saved@texttop}%
+ \endgroup}
+\addto@hook\after@document{\save@slidespecials}
+\ifarticle\else
+ \def\insert@specials{%
+ \ifvoid\saved@specials\else
+ \setbox\@slidebox\hbox{\box\saved@specials\box\@slidebox}%
+ \fi
+ \global\let\insert@specials\relax}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\extraslideheight}
+% This increases the height of a slide for the purpose of page-breaking. We
+% use unscaled dimensions so that \TeX's warnings about overfull "\vbox"'s
+% will be comparable.
+% \begin{macrocode}
+\def\extraslideheight#1{%
+ \@tempdima #1\relax
+ \edef\X@SlideHeight{\number\@tempdima sp}
+ \ifslide\set@slidesize\fi}
+\extraslideheight{6pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\set@slidesize}
+% In addition to setting "\hsize" and "\vsize", this sets the \LaTeX\
+% parameters such as "\textheight" and "\textwidth" so that slides seem like a
+% regular page, whatever format is being used.
+% \begin{macrocode}
+\def\set@slidesize{%
+ \iflandscape
+ \hsize=\inverseslidesmag\slidewidth
+ \vsize=\inverseslidesmag\slideheight
+ \else
+ \hsize=\inverseslidesmag\slideheight
+ \vsize=\inverseslidesmag\slidewidth
+ \fi
+ \edef\slide@vsize{\number\vsize sp}%
+ \textheight\vsize
+ \advance\vsize\X@SlideHeight\relax
+ \textwidth\hsize\columnwidth\hsize\linewidth\hsize}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newslide}
+% This includes things you want to initialize whenever a new page is started
+% \begin{macrocode}
+\def\newslide{%
+ \par\penalty-\@M
+ \def\do##1{\setcounter{##1}\z@}\slide@reset
+ \the\before@newslide
+ \set@slidesize}
+\newtoks\before@newslide
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slidereset,\addtoslidereset}
+% "\addto@slidereset{foo,bar}" sets "\slide@reset" to
+% \begin{quote}
+% "\slide@reset\do{foo}\do{bar}"
+% \end{quote}
+% \begin{macrocode}
+\def\slide@reset{\do{footnote}}
+\def\slidereset#1{\def\slide@reset{}\addtoslidereset{#1}}
+\def\addtoslidereset#1{%
+ \edef\@tempa{#1}\expandafter\addto@slidereset\@tempa,\@nil,}
+\def\addto@slidereset#1,{%
+ \ifx\@nil#1\else
+ \@ifundefined{c@#1}%
+ {\@seminarerr{Counter `#1' not defined}\@ehd}%
+ {\expandafter\def\expandafter\slide@reset\expandafter{%
+ \slide@reset\do{#1}}}%
+ \expandafter\addto@slidereset
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slide@output}
+% "\os@test" checks whether according to some "\onlyslides" or "\notslides"
+% command, this slide should not be output; "\os@test" is defined in Section
+% \ref{os}.
+% \begin{macrocode}
+\def\slide@output{%
+ \@makeslide
+ \@testfalse
+ \ifnotesonly\else
+ \iflandscape
+ \ifnum\@landscapeonly>-1 \os@test\fi
+ \else
+ \ifnum\@landscapeonly<1 \os@test\fi
+ \fi
+ \fi
+ \if@test
+ \reset@slideoutput
+ \@@makeslide
+ \process@slide
+ \fi
+ \refstepcounter{slide}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\reset@slideoutput}
+% Some things should be reset for the slide embellishments. E.g., you don't
+% want slide labels or headers and footers to be affected by the current font.
+% \begin{macrocode}
+\def\reset@slideoutput{%
+ \let\par\@@par
+ \reset@font
+ \def\baselinestretch{1}%
+ \@nameuse{1\@ptsize @semptsize}%
+ \catcode`\ =10
+ \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifcenterslides}
+% This is the flag for vertically centering slides.
+% \begin{macrocode}
+\newif\ifcenterslides
+\centerslidestrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makeslide,\@@makeslide}
+% Take care of footnotes and verticle positioning.
+% \begin{macrocode}
+\def\@makeslide{%
+ \setbox\@slidebox\vbox{%
+ \unvbox\@cclv
+ \ifvoid\slide@footins\else
+ \vskip\skip\slide@footins
+ \footnoterule
+ \unvbox\slide@footins
+ \fi
+ \vskip\z@}}
+\def\@@makeslide{%
+ \overfullslide@warning
+ \setbox\@slidebox\hbox{%
+ \vfuzz=\slidefuzz\relax
+ \vbox to\slide@vsize{%
+ \ifcenterslides\vskip\z@ plus .0001fil \fi
+ \unvbox\@slidebox
+ \vskip\z@ plus .0001fil}%
+ \the\after@slidepage}%
+ \wd\@slidebox\textwidth}
+\def\overfullslide@warning{%
+ \dimen@\ht\@slidebox
+ \advance\dimen@-\slide@vsize\relax
+ \ifdim\dimen@>\slidefuzz\relax
+ \@warning{Slide \theslide\space overfull by \the\dimen@}%
+ \fi}
+\def\slidefuzz{2pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\after@slidepage}
+% "\after@slidepage" is executed at the end of each page of a slide
+% environment during the slide output routine. It is meant to reset things
+% that might have been set by "\special"'s within the slide.
+% \begin{macrocode}
+\newtoks\after@slidepage
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Rotation}
+%
+% Rotation macros must be implemented by "\special"'s, such as in
+% "semcolor.sty". The interface for rotation is built into "seminar.sty",
+% however.
+%
+% \begin{macro}{\ifrotateheaders}
+% In the "slides" format, the slides can either be rotated before being placed
+% on the page, or the whole page can be rotated, including headers.
+% "\ifrotateheaders" controls which procedure is used.
+% \begin{macrocode}
+\newif\ifrotateheaders
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sliderotation}
+% \begin{macrocode}
+\def\sliderotation#1{\@ifundefined{semsr@#1}%
+ {\@latexerr{Slide rotation `#1' not defined.}\@eha}%
+ {\@nameuse{semsr@#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\semsr@none,\semsr@left,\semsr@right}
+% A slide rotation should define "\rotate@slide" to rotate "\@slidebox"..
+% \begin{macrocode}
+\def\semsr@left{%
+ \def\rotate@slide{%
+ \setbox\@slidebox\hbox{\leftsliderotation{\box\@slidebox}}}}
+\def\semsr@right{%
+ \def\rotate@slide{%
+ \setbox\@slidebox\hbox{\rightsliderotation{\box\@slidebox}}}}
+\def\semsr@none{\let\rotate@slide\relax}
+\sliderotation{none}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\leftsliderotation,\rightsliderotation}
+% \begin{macrocode}
+\def\leftsliderotation#1{%
+ \@seminarerr{\string\leftsliderotation\space has not been defined}%
+ \@ehd}
+\let\rightsliderotation\leftsliderotation
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@ifrotateslide}
+% \begin{macrocode}
+\def\@ifrotateslide#1{%
+ \ifx\rotate@slide\relax\else
+ \iflandscape\ifportrait#1\fi\else\ifportrait\else#1\fi\fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Slide output routines: $\setminus$process@slide\label{slideoutput}}
+%
+% This is the version-dependent stuff, where we decide what to do with the
+% slide.
+%
+% \begin{macro}{\process@slide}
+% "\process@@slide" is kept separate because it can be redefined for doing
+% overlays.
+% \begin{macrocode}
+\def\process@slide{%
+ \slideframewidth=\inverseslidesmag\slideframewidth
+ \slideframesep=\inverseslidesmag\slideframesep
+ \fboxrule\slideframewidth
+ \fboxsep\slideframesep
+ \ifarticle
+ \@ifrotateslide\rotate@slide
+ \else
+ \ifrotateheaders\else\@ifrotateslide\rotate@slide\fi
+ \fi
+ \process@@slide}
+\def\process@@slide{\finish@slide\output@slide}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\finish@slide}
+% \begin{macrocode}
+\def\finish@slide{%
+ \theslideframe
+ \add@slidelabel\slidelabel}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\output@slide}
+% In the "article" format, the slides are saved until the end of the slide
+% environment.
+% \begin{macrocode}
+\ifarticle
+ \def\output@slide{%
+ \global\advance\slide@count1
+ \@ifundefined{slidebox@\the\slide@count}%
+ {{\globaldefs=1\expandafter
+ \new@slidebox\csname slidebox@\the\slide@count\endcsname}}{}%
+ \expandafter\global\expandafter\setbox\csname
+ slidebox@\the\slide@count\endcsname\box\@slidebox}
+% \end{macrocode}
+% In the "slides" format, we use a modification of \LaTeX's "\@outputpage".
+% "\do@fancyput" is stuck in here in case "fancybox.sty" is being used.
+% "\fancyput@flag" is initialized in case it is not
+% \begin{macrocode}
+\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\oddsidemargin\slideleftmargin
+ \setslidelength\evensidemargin\sliderightmargin
+ \setslidelength\headheight\slidetopmargin
+ \setslidelength\footheight\slidebottommargin
+ % Some page styles like to know \textwidth:
+ \textwidth=\@tempdima
+ \advance\textwidth-\oddsidemargin
+ \advance\textwidth-\evensidemargin
+ \setbox\@slidebox=\hbox to \@tempdima{%
+ \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
+ \hbox{%
+ \slideheadfont\relax\strut
+ \hbox to\textwidth{\@oddhead}}%
+ \kern\z@}%
+ \vfill
+ \hbox to\textwidth{\hss\box\@slidebox\hss}%
+ \vfill
+ \vbox to\footheight{%
+ \hbox{%
+ \slidefootfont\relax\strut
+ \hbox to\textwidth{\@oddfoot}}%
+ \vfill}}%
+ \hss}%
+ \ifrotateheaders\@ifrotateslide\rotate@slide\fi
+ \insert@specials
+ \shipout\box\@slidebox
+ \endgroup
+ \let\firstmark\botmark}
+ \@ifundefined{fancyput@flag}{\def\fancyput@flag{-1}}{}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\output@savedslide}
+% Now we take care of the saved slides in the "article" format. Lots of things
+% can happen.
+% \begin{macrocode}
+\newskip\slidesep
+\slidesep\intextsep
+\ifarticle
+ \def\fps@fslide{htbp}
+ \def\ftype@fslide{32}
+ \def\float@savedslide{%
+ \begingroup\@float{fslide}%
+ \centerline{\box\@slidebox}%
+ \end@float\endgroup}%
+ \@namedef{float*@savedslide}{%
+ \begingroup\@dblfloat{fslide}%
+ \centerline{\box\@slidebox}%
+ \end@dblfloat\endgroup}%
+ \def\center@slide{\hbox{%
+ \kern-\@totalleftmargin
+ \hbox to \columnwidth{\hss\box\@slidebox\hss}}}%
+ \def\onepercol@savedslide{%
+ \vbox to .996\textheight{\vss\center@slide\vss}\goodbreak}%
+ \def\twopercol@savedslide{%
+ \dimen@.5\textheight
+ \advance\dimen@-\slidesep
+ \ifdim\ht\@slidebox>\dimen@
+ \onepercol@savedslide
+ \else
+ \vbox to .498\textheight{\vss\center@slide\vss}\goodbreak
+ \fi}
+ \def\here@savedslide{%
+ \addvspace\slidesep\center@slide\addvspace\slidesep}
+ \@namedef{here*@savedslide}{%
+ \goodbreak \hrule \@height\z@ \nobreak \vskip\slidesep \nobreak
+ \center@slide
+ \nobreak \vskip\slidesep \nobreak \hrule\@height\z@ \goodbreak}
+\fi
+\ifarticle
+ \def\slideplacement#1{\@ifundefined{#1@savedslide}%
+ {\@seminarerr{Slide placement `#1' undefined}\@ehd}%
+ {\expandafter\let\expandafter\output@savedslide
+ \csname #1@savedslide\endcsname}}
+\else
+ \def\slideplacement#1{}
+\fi
+\ifarticle
+ \ifnotes
+ \ifportrait
+ \slideplacement{float}
+ \else
+ \slideplacement{float*}
+ \fi
+ \else
+ \ifportrait
+ \slideplacement{onepercol}
+ \else
+ \slideplacement{twopercol}
+ \fi
+ \fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\outputloop@savedslides}
+% This is the loop that spits out each of the saved slides. We start by
+% reinserting whatever was on the current page when the slide environment
+% started.
+% \begin{macrocode}
+\ifarticle
+ \def\outputloop@savedslides{%
+ \global\maxdepth\@maxdepth
+ \ifvoid\not@slidebox\else
+ \dimen@=\dp\not@slidebox
+ \unvbox\not@slidebox
+ \hrule height\z@
+ \prevdepth\dimen@
+ \penalty\z@
+ \fi
+ \edef\slide@@count{\the\slide@count\relax}%
+ \slide@count\z@
+ \loop
+ \ifnum\slide@count<\slide@@count
+ \advance\slide@count1
+ \expandafter\setbox\expandafter\@slidebox\expandafter\box
+ \csname slidebox@\the\slide@count\endcsname
+ \output@savedslide
+ \repeat
+ \ifnotesonlystar\make@slidemarker\fi}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\make@slidemarker}
+% \begin{macrocode}
+\def\make@slidemarker{%
+ \addvspace\slidesep
+ \moveleft\@totalleftmargin
+ \vbox{%
+ \hsize\columnwidth
+ \hrule height 1pt
+ \kern 8pt
+ \hbox to \columnwidth{%
+ \hss
+ \LARGE\bf\the@slidemarker
+ \hss}%
+ \kern 8pt
+ \hrule height 1pt}%
+ \addvspace\slidesep}
+\def\the@slidemarker{%
+ Slide%
+ \ifnum\c@slide=\first@slidemarker\else
+ s {\c@slide\first@slidemarker\relax\theslide} --\fi
+ { }\theslide}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Page numbering in the {\tt slides} format}
+%
+% In the "slides" format, we let the "page" counter be stepped as usual by the
+% output routine, but we don't use it for anything except perhaps to keep
+% track of the absolute page number. Instead, we have a counter "note" to keep
+% track of the pages of notes, and "\thepage" is set to "\thenote" for notes
+% and "\theslide" for slides (and "\theoverlay" for overlays and "\thelayer"
+% for layers).
+%
+% \begin{macro}{\c@note}
+% The "note" counter has to be stepped by the output routine, and reset by the
+% slide environments. In the "article" format, we just make the "note" counter
+% the same as the "page" counter.
+% \begin{macrocode}
+\ifarticle
+ \let\c@note\c@page
+ \def\p@note{\p@page}
+ \def\thenote{\thepage}
+\else
+ \newcounter{note}
+ \def\thenote{\theslide-\arabic{note}}
+ \def\thepage{\thenote}
+ \addto@hook\after@slide{\setcounter{note}{1}}
+ \expandafter\def\expandafter\@outputpage\expandafter{%
+ \@outputpage\stepcounter{note}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% Which counter should the dvi driver pay attention to when numbering the
+% pages in the "slides" format? This makes a difference when using the dvi
+% driver to select pages. If the driver numbers pages by the slide number,
+% then it is easier to use the driver to print selected slides.
+% However, this can be cumbersome when there are many pages of notes or
+% overlays, especially if the driver cannot pick out the $n^{th}$ occurence of
+% a page, because many pages will have the same page number. In this case,
+% keeping track of physical page numbers may be preferred. We allow both
+% options.
+%
+% By default, the dvi driver pays attention to the slide counter; i.e., this
+% counter is assigned register 0
+% \begin{macrocode}
+\ifarticle\else
+ \let\c@page\c@slide
+ \countdef\c@slide=0
+ \c@slide=0
+ \c@page=1
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\truepagenumbers}
+% This switches back to having the driver recognize physical page numbers.
+% \begin{macrocode}
+\ifarticle
+ \let\truepagenumbers\relax
+\else
+ \def\truepagenumbers{%
+ \let\c@slide\c@page
+ \countdef\c@page=0
+ \c@page=1
+ \c@slide=0
+ \let\truepagenumbers\relax}
+\fi
+\addto@preamblecmds{\truepagenumbers}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Slide frames}
+%
+% \begin{macro}{\slideframewidth,\slideframesep}
+% \begin{macrocode}
+\newdimen\slideframewidth \slideframewidth 4pt
+\newdimen\slideframesep \slideframesep .3in
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newslideframe,\slideframe}
+% \begin{macrocode}
+\def\newslideframe#1{%
+ \@ifnextchar[{\@newslideframe{#1}}{\@newslideframe{#1}[]}}
+\def\@newslideframe#1[#2]{%
+ \@namedef{semsfops@#1}{#2}%
+ \@namedef{semsf@#1}##1}
+\newslideframe{plain}{\fbox{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slideframe,\@slideframe}
+% \begin{macrocode}
+\def\slideframe{\@slideframe{slide}}
+\def\@slideframe#1{%
+ \@ifstar{\@testtrue\@@slideframe{#1}}{\@testfalse\@@slideframe{#1}}}
+\def\@@slideframe#1{%
+ \@ifnextchar[{\@@@slideframe{#1}}{\@@@slideframe{#1}[]}}
+\def\@@@slideframe#1[#2]#3{%
+ \def\@tempa{none}%
+ \def\@tempb{#3}%
+ \ifx\@tempa\@tempb
+ \@namedef{the#1frame}{\relax}%
+ \else
+ \ifx\@tempb\@empty
+ \@namedef{the#1frame}{}%
+ \else
+ \@ifundefined{semsf@#3}%
+ {\@seminarerr{Slide frame `#3' undefined}\@eha}%
+ {\if@test
+ \@@@@slideframe{#1}[#2]{#3}%
+ \else
+ \@namedef{the#1frame}{\setbox\@slidebox=\hbox{{%
+ \@nameuse{semsfops@#3}#2\@nameuse{semsf@#3}{\box\@slidebox}}}}%
+ \fi}%
+ \fi
+ \fi}
+\def\@@@@slideframe#1[#2]#3{%
+ \expandafter\let\expandafter\@tempa\csname the#1frame\endcsname
+ \edef\next{%
+ \noexpand\def\expandafter\noexpand\csname the#1frame\endcsname}%
+ \expandafter\next\expandafter{\@tempa
+ \setbox\@slidebox=\hbox{{%
+ \@nameuse{semsfops@#3}%
+ #2%
+ \@nameuse{semsf@#3}{\box\@slidebox}}}}}%
+\slideframe{plain}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Slide styles\label{slidestyles}}
+%
+% \begin{macro}{\slidestyle}
+% \begin{macrocode}
+\def\slidestyle#1{\@ifundefined{ss@#1}%
+ {\@seminarerr{Slide style `#1' undefined}\@eha}%
+ {\@nameuse{ss@#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ss@empty,\ss@plain,\ss@plainbottom}
+% The "plain" slide style places the slide label on the left side of the
+% framed slide, centered vertically. The caption is set in a box with zero
+% width so that it does not affect the centering of the slide on the page. In
+% the "plainbottom" style, the label is centered at the bottom of the slide.
+% \begin{macrocode}
+\def\ss@empty{\let\add@slidelabel\@gobble}
+\def\ss@left{\def\add@slidelabel##1{%
+ \setbox\@slidebox=\hbox{%
+ \vbox to \ht\@slidebox{\vss
+ \hbox to 0pt{\hss##1\hskip 15pt}%
+ \vss}\box\@slidebox}}}
+\def\ss@bottom{\def\add@slidelabel##1{%
+ \setbox\@slidebox=\vbox{\copy\@slidebox\vskip 9pt
+ \hbox to\wd\@slidebox{\hss##1\hss}}}}%
+\ifarticle
+ \ifportrait\slidestyle{bottom}\else\slidestyle{left}\fi
+\else
+ \slidestyle{empty}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slidelabel}
+% \begin{macrocode}
+\def\slidelabel{\bf Slide \theslide}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Page styles}
+%
+% \begin{macro}{\newpagestyle,\renewpagestyle}
+% The next two commands allow one to define new pages styles in the preamble
+% of a document without playing around with the catcode of "@".
+% \begin{macrocode}
+\def\newpagestyle#1#2#3{%
+ \expandafter\newcommand\csname ps@#1\endcsname{%
+ \def\@oddhead{#2}\let\@evenhead\@oddhead
+ \def\@oddfoot{#3}\let\@evenfoot\@oddfoot}}
+\def\renewpagestyle#1#2#3{%
+ \expandafter\renewcommand\csname ps@#1\endcsname{%
+ \def\@oddhead{#2}\let\@evenhead\@oddhead
+ \def\@oddfoot{#3}\let\@evenfoot\@oddfoot}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slidepagestyle}
+% \begin{macrocode}
+\def\@ifgoodps#1{%
+ \@ifundefined{ps@#1}{\@seminarerr{Page style `#1' undefined}\@eha}}
+\def\slidepagestyle#1{%
+ \@ifgoodps{#1}%
+ {\ifslide\pagestyle{#1}\else\edef\slide@pagestyle{#1}\fi}}
+\def\ps@{}
+\slidepagestyle{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ps@align}
+% \begin{macrocode}
+\ifarticle
+ \def\ps@align{}
+\else
+ \def\ps@align{%
+ \def\@oddhead{\thepage\hfil+}\let\@evenhead\@oddhead
+ \def\@oddfoot{+\hfil+}\let\@evenfoot\@oddfoot}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slideheadfont,\slidefootfont}
+% \begin{macrocode}
+\def\slideheadfont{\scriptsize}
+\def\slidefootfont{\scriptsize}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Magnification}
+%
+% \begin{macro}{\magstep,\magstepminus}
+% We extend the definition of "\magstep"$n$ to $n=0,\ldots,9$, and define an
+% analogous macro for reduction. The argument of "\@magstep" {\em must be a
+% count register}.
+% \begin{macrocode}
+\def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or
+ 2074\or 2488\or 2986\or 3583\or 4300\or 5160\fi\relax}
+\def\magstepminus#1{%
+ \ifcase#1 \@m\or 833\or 694\or 579\or 482\or 401\fi\relax}
+\def\@magstep#1{%
+ \ifnum#1<\z@\magstepminus{-#1}\else\magstep#1\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\invert@mag}
+% If "\cs" is a command sequence (not a count register) that expands to an
+% integer $n>0$, then "\invert@mag\cs" sets "\cs" to $1000 n^{-1}$. E.g.,
+% after the commands
+% \begin{Ex}
+% "\def\mymag{\magstep2}"
+% "\invert@mag\mymag"
+% \end{Ex}
+% the meaning of "\mymag" is ".694444". We use dimension registers to access
+% \TeX's internal arithmetic routines.
+% \begin{macrocode}
+{\catcode`\p=12\catcode`\t=12
+ \gdef\@@inv@@mag#1pt#2{\def#2{#1}}}
+\def\invert@mag#1{\@tempdima=1000pt
+ \divide\@tempdima by #1\relax
+ \expandafter\@@inv@@mag\the\@tempdima#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@slidesmag,\@articlemag}
+% "\@slidesmag" and "\@articlemag" define "\inverseslidesmag" and
+% "\inverseartmag" for use by "\setslidelength", etc., using the "\invert@mag"
+% routine defined above. They also set the magnification of the document in
+% the "slides" or "article" format. Their arguments can be any magnification.
+% \begin{macrocode}
+\def\@slidesmag#1{%
+ \@tempcnta=#1\relax%
+ \ifnum\@tempcnta>0
+ \edef\inverseslidesmag{\the\@tempcnta}%
+ \invert@mag\inverseslidesmag
+ \ifarticle\else\mag\@tempcnta\fi
+ \else
+ \@seminarerr{\string\@slidesmag\space argument must be an
+ integer equal to 1000 times the magnification}\@eha
+ \fi}
+\def\@articlemag#1{%
+ \@tempcnta=#1\relax%
+ \ifnum\@tempcnta>0
+ \edef\inverseartmag{\the\@tempcnta}%
+ \invert@mag\inverseartmag
+ \ifarticle\mag\@tempcnta\fi
+ \else
+ \@seminarerr{\string\articlemag\space argument must be an
+ integer equal to 1000 times the magnification}\@eha
+ \fi}
+\addto@preamblecmds{\@slidesmag\do\@articlemag}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slidesmag,\articlemag}
+% "\slidesmag" and "\articlemag" are an interface to "\@slidesmag" and
+% "\@articlemag", and allow only "\magstep" type magnifications.
+% \begin{macrocode}
+\newdimen\semin
+\newdimen\semcm
+\def\@semmagerr#1{%
+ \@seminarerr{\string#1 argument must be an integer
+ between -5 and 9}\@eha}
+\def\slidesmag#1{%
+ \@tempcnta=#1\relax
+ \ifnum\@tempcnta>-6
+ \ifnum\@tempcnta<10
+ \edef\the@slidesmag{\the\@tempcnta}%
+ \@slidesmag{\@magstep\@tempcnta}%
+ \else
+ \@semmagerr\slidesmag
+ \fi
+ \else
+ \@semmagerr\slidesmag
+ \fi
+ \setslidelength\semin\seminlength
+ \setslidelength\semcm\semcmlength}
+\def\seminlength{1in}
+\def\semcmlength{1cm}
+\def\articlemag#1{%
+ \@tempcnta=#1\relax
+ \ifnum\@tempcnta>-6
+ \ifnum\@tempcnta<10
+ \edef\the@articlemag{\the\@tempcnta}%
+ \@articlemag{\@magstep\@tempcnta}%
+ \else
+ \@semmagerr\articlemag
+ \fi
+ \else
+ \@semmagerr\articlemag
+ \fi}
+\addto@preamblecmds{\slidesmag\do\articlemag}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setslidelength,\addtoslidelength}
+% \begin{macrocode}
+\def\setslidelength#1#2{%
+ #1=#2\relax
+ #1=\inverseslidesmag#1}%
+\def\addtoslidelength#1#2{%
+ \dimen@=#2\relax
+ \advance#1 by \inverseslidesmag\dimen@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setartlength,\addtoartlength}
+% \begin{macrocode}
+\def\setartlength#1#2{%
+ #1=#2\relax
+ #1=\inverseartmag#1}
+\def\addtoartlength#1#2{%
+ \dimen@=#2\relax
+ \advance#1 by \inverseartmag\dimen@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slide@epsfsize,\epsfslidesize}
+% \begin{macrocode}
+\def\slide@epsfsize#1#2{%
+ \ifdim\epsfxsize=0pt
+ \ifdim\epsfysize=0pt
+ \inverseslidesmag#1%
+ \else
+ 0pt
+ \fi
+ \else
+ \inverseslidesmag\epsfxsize
+ \fi
+ \epsfysize
+ \ifdim\epsfysize=0pt
+ \ifdim\epsfxsize=0pt
+ \inverseslidesmag#2%
+ \else
+ 0pt
+ \fi
+ \else
+ \inverseslidesmag\epsfysize
+ \fi}
+\def\epsfslidesize{\let\epsfsize\slide@epsfsize}
+% \end{macrocode}
+% \end{macro}
+%
+% Now the default magnifications are set:
+% \begin{macrocode}
+\slidesmag{4}
+\articlemag{0}
+% \end{macrocode}
+%
+%
+% \section{Page parameters\label{pageparameters}}
+%
+% When the the document begins, the page parameters are scaled depending on
+% the format and the magnification for that format, so that it is as if the
+% parameters were set with "true" dimensions. This allows a user to change the
+% magnification in the preamble without having to go back and rescale the page
+% parameters.
+%
+% \begin{macro}{\do@pageparameters}
+% First, we define "\do@pageparameters" like "\do@specials", but with all the
+% page parameters listed on page 163 of Lamport's \LaTeX{} User's Guide and
+% Reference Manual. Parameters can be added the same way commands are added to
+% "\@preamblecmds".
+% \begin{macrocode}
+\def\do@pageparameters{%
+ \do\oddsidemargin
+ \do\evensidemargin
+ \do\marginparwidth
+ \do\marginparsep
+ \do\topmargin
+ \do\headheight
+ \do\headsep
+ \do\textheight
+ \do\textwidth
+ \do\topskip
+ \do\footskip
+ \do\footheight}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scale@pageparameters}
+% Now we define "\scale@pageparameters", which is invoked at the beginning of
+% the document, to scale the page parameters.
+% \begin{macrocode}
+\ifarticle
+ \def\scale@pageparameters{%
+ \begingroup
+ \def\do##1{\global##1=\inverseartmag##1\relax}%
+ \do@pageparameters
+ \endgroup}
+\else
+ \def\scale@pageparameters{%
+ \begingroup
+ \def\do##1{\global##1=\inverseslidesmag##1\relax}%
+ \do@pageparameters
+ \endgroup}
+\fi
+\addto@hook\before@document{\scale@pageparameters}
+\addto@preamblecmds{\scale@pageparameters\do\do@pageparameters}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Omitting and including notes}
+%
+% \begin{macro}{\allversions,\endallversions,\allversions*,\endallversions*}
+% The "allversions" environments are processed in any version.
+% \begin{macrocode}
+\def\allversions{}
+\let\endallversions\relax
+\@namedef{allversions*}{\@bsphack\globaldefs=1}
+\@namedef{endallversions*}{\@esphack}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slide@list,\addtoslidelist}
+% "\slide@list" stores the list of environments that are to be included with
+% the "slidesonly" selection. Environments are added to it using the
+% "\addtoslidelist" command.
+% \begin{macrocode}
+\def\slide@list{slide,slide*,allversions,allversions*}
+\def\addtoslidelist#1{\xdef\slide@list{\slide@list,#1}}
+\addto@preamblecmds{\addtoslidelist}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\xcomment@hook}
+% The macro "\@xcomment", defined in "xcomment.sty", does the actual omitting
+% of notes in the "slidesonly" format. Only environments in "\slide@list" are
+% processed.
+% \begin{macrocode}
+\ifslidesonly
+ \@ifundefined{xcomment@@@}{\@@input xcomment.sty }{}
+ \def\xcomment@hook{\@xcomment{@@@}{\slide@list}}
+ \newxcomment[]{note}
+\else
+ \def\note{\@bsphack}%
+ \def\endnote{\@esphack}%
+\fi
+\def\noxcomment{\def\xcomment@hook{}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Omitting and including slides\label{os}}
+%
+% This is pretty bad code, but it works.
+%
+% \begin{macro}{\onlyslides,\notslides}
+% "\onlyslides" and "\notslides" store their arguments, which should expand to
+% a comma separated list of numbers and ranges, in the command sequence
+% "\os@list". It is not immediately expanded, because the argument may contain
+% references that are not yet defined; recall that the ".aux" file is
+% processed at the beginning of the document.
+% \begin{macrocode}
+\def\os@list{}
+\newif\if@os
+\def\onlyslides#1{\def\os@list{#1}\@ostrue
+ \def\os@warning{\@warning{\string\onlyslides\space argument
+ contains undefined references}}}
+\def\notslides#1{\def\os@list{#1}\@osfalse
+ \def\os@warning{\@warning{\string\notslides\space argument
+ contains undefined references}}}
+\addto@preamblecmds{\onlyslides\do\notslides}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\os@expandlist}
+% "\os@expandlist" is invoked at the beginning of the document, after the
+% ".aux" files has been processed.
+% \begin{macrocode}
+\addto@hook\after@document{%
+ \ifx\os@list\@empty\else\os@expandlist\fi}
+% \end{macrocode}
+% "\os@expandlist" first expands the list, and then processes each
+% comma-separated entry with "\os@expandrange".
+% \begin{macrocode}
+\def\os@expandlist{%
+ \let\os@@warning\relax
+ \begingroup
+ \def\ref##1{\@ifundefined{r@##1}{?}%
+ {\noexpand\@car\@nameuse{r@##1}\noexpand\@nil}}%
+ \edef\@tempd{\os@list}%
+ \xdef\os@list{}%
+ \@for\@tempc:=\@tempd
+ \do{\expandafter\os@expandrange\@tempc-:-:\@nil}%
+ \os@@warning
+ \endgroup
+ \let\os@expandrange\relax
+ \let\os@checknum\relax
+ \let\os@expandlist\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\os@expandrange}
+% "\os@expandrange" expands entries of the form $m$-$n$ to $(m-1)$+$(n+1)$,
+% which will simplify checking slide numbers against the list ("+" is used as
+% a separator instead of "-" to allow for negative numbers). Entries that
+% consist of a single number $n$ are treated like a range $n$-$n$.
+% \begin{macrocode}
+\def\os@expandrange#1-#2-#3\@nil{%
+ \def\@tempa{?}\def\@tempb{#1}%
+ \ifx\@tempa\@tempb
+ \let\os@@warning\os@warning
+ \else
+ \@tempcnta=#1\relax
+ \def\@tempb{#2}%
+ \ifx\@tempa\@tempb
+ \let\os@@warning\os@warning
+ \else
+ \def\@tempa{:}%
+ \ifx\@tempa\@tempb
+ \@tempcntb=\@tempcnta
+ \else
+ \@tempcntb=#2\relax
+ \fi
+ \advance\@tempcnta by -1
+ \advance\@tempcntb by 1
+ \ifx\os@list\@empty
+ \xdef\os@list{\the\@tempcnta+\the\@tempcntb}%
+ \else
+ \xdef\os@list{\os@list,\the\@tempcnta+\the\@tempcntb}%
+ \fi
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\os@test}
+% "\os@test" checks whether a slide should be processed. For each entry
+% $m$-$n$ in the list "\os@list", if the slide number is greater than $m$ and
+% less than $n$, "\if@test" is set to "\if@os". Recall that "\if@os" is
+% "\iftrue" is "\os@list" is a list of slides to be included, and is
+% "\iffalse" if "\os@list" is a list of slides to be excluded.
+% \begin{macrocode}
+\def\os@test{%
+ \@testtrue
+ \iflandscape
+ \ifnum\@landscapeonly=-1 \@testfalse\fi
+ \else
+ \ifnum\@landscapeonly=1 \@testfalse\fi
+ \fi
+ \if@test
+ \ifx\os@list\@empty\else
+ \if@os\@testfalse\fi
+ \@for\@tempa:=\os@list\do{\expandafter\os@testrange\@tempa\@nil}%
+ \fi
+ \fi}
+\def\os@testrange#1+#2\@nil{%
+ \ifnum\c@slide>#1
+ \ifnum\c@slide<#2
+ \if@os\@testtrue\else\@testfalse\fi
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\onlynotestoo}
+% \begin{macrocode}
+\def\onlynotestoo{%
+ \ifnotes\@testtrue\else\ifnotesonly\@testtrue\else\@testfalse\fi\fi
+ \if@test
+ \@ifundefined{xcomment@@@}{%
+ \edef\sem@temp{\the\catcode`\@}%
+ \catcode`\@=11
+ \@@input xcomment.sty
+ \catcode`\@=\sem@temp\relax}{}%
+ \def\xcomment@hook{\@xcomment{@@@}{\slide@list}}%
+ \addto@hook\after@slide\onlynotes@too
+ \fi}
+\def\onlynotes@too{%
+ \os@test
+ \if@test\gdef\do@end{}\else\gdef\do@end{\xc@begin}\fi}
+\addto@preamblecmds\onlynotestoo
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Font size declarations\label{fontsize}}
+%
+% \begin{macro}{\ptsize}
+% The "\ptsize{"$n$"}" command invokes a macro so that the font size
+% declarations are defined as in "art"$n$".sty", except that the font size
+% declarations only affect the sizes of fonts, and not the list or display
+% parameters. These parameters are set at the beginning of each slide
+% environment. "\ptsize" should only be used in slide environments.
+% \begin{macrocode}
+\def\ptsize#1{%
+ \@ifundefined{#1@semptsize}%
+ {\@seminarerr{\string\ptsize\space `#1' not valid.}\@eha}%
+ {\ifslide
+ \sem@ptsize{#1}\large\normalsize
+ \else
+ \edef\slide@ptsize{#1}%
+ \fi}}
+\edef\slide@ptsize{1\@ptsize}%
+\def\slidefontsizes{\ptsize} %For backwards compatibility??
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slide@setsize}
+% This is a variant of "\@setsize" that makes the minimum space between lines
+% be "\slideskip" times the extra space between lines.
+% \begin{macrocode}
+\def\slide@setsize#1#2#3#4{%
+ \@setsize{#1}{#2}{#3}{#4}%
+ \set@slideskip{#2}}
+\def\slide@@setsize#1#2#3#4{%
+ \slide@setsize{#1}{#2}{#3}{#4}\slidedisplayskips}
+\def\set@slideskip#1{%
+ \normallineskiplimit=#1
+ \advance\normallineskiplimit-\normalbaselineskip
+ \multiply\normallineskiplimit-1
+ \normallineskiplimit\slideskip\normallineskiplimit
+ \ifdim\normallineskiplimit<1pt\normallineskiplimit=1pt\fi
+ \normallineskip=\normallineskiplimit
+ minus \slideshrink\normallineskiplimit
+ \dimen@=\normalbaselineskip
+ \normalbaselineskip=\dimen@ minus \slideshrink\normallineskiplimit
+ \normalbaselines}
+\def\slideskip{.75}
+\def\slideshrink{.25}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\slidedisplayskips}
+% "\slidedisplayskips" sets the displays skips to smaller values than they
+% would usually have in the "article" document style.
+% \begin{macrocode}
+\def\slidedisplayskips{%
+ \abovedisplayskip 1.75ex minus .35ex
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip .2ex minus .2ex
+ \belowdisplayshortskip 1ex minus .2ex}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sem@ptsize}
+% \begin{macrocode}
+\def\sem@ptsize#1{%
+ \@nameuse{#1@semptsize}%
+ \large\normalsize
+ \leftmargini\slideleftmargini\relax
+ \leftmarginii\slideleftmarginii\relax
+ \leftmarginiii\slideleftmarginiii\relax
+ \labelsep\slidelabelsep\relax
+ \parskip\slideparskip\relax
+ \parindent\slideparindent\relax
+ \slide@rightskip
+ \slide@listi
+ \skip\footins\slidefootins\relax
+ \footnotesep\slidefootnotesep\relax}
+\def\slidefootins{2ex minus .8ex}
+\def\slidefootnotesep{1.2ex}
+\def\slideparindent{\z@}
+\def\slideparskip{1ex minus .2ex}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\8@semptsize}
+% \begin{macrocode}
+\@namedef{8@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{9.5pt}\viiipt\@viiipt}%
+ \def\small{\slide@@setsize\small{8pt}\viipt\@viipt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{8pt}\vipt\@vipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{7pt}\vipt\@vipt}%
+ \def\tiny{\slide@setsize\tiny{6pt}\vpt\@vpt}%
+ \def\large{\slide@setsize\large{12pt}\xpt\@xpt}%
+ \def\Large{\slide@setsize\Large{14pt}\xiipt\@xiipt}%
+ \def\LARGE{\slide@setsize\LARGE{17pt}\xivpt\@xivpt}%
+ \def\huge{\slide@setsize\huge{20pt}\xviipt\@xviipt}%
+ \def\Huge{\slide@setsize\Huge{25pt}\xxpt\@xxpt}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\9@semptsize}
+% \begin{macrocode}
+\@namedef{9@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{11pt}\ixpt\@ixpt}%
+ \def\small{\slide@@setsize\small{9.5pt}\viiipt\@viiipt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{8pt}\viipt\@viipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{7pt}\vipt\@vipt}%
+ \def\tiny{\slide@setsize\tiny{6pt}\vpt\@vpt}%
+ \def\large{\slide@setsize\large{12pt}\xpt\@xpt}%
+ \def\Large{\slide@setsize\Large{14pt}\xiipt\@xiipt}%
+ \def\LARGE{\slide@setsize\LARGE{17pt}\xivpt\@xivpt}%
+ \def\huge{\slide@setsize\huge{20pt}\xviipt\@xviipt}%
+ \def\Huge{\slide@setsize\Huge{25pt}\xxpt\@xxpt}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\10@semptsize}
+% \begin{macrocode}
+\@namedef{10@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{12pt}\xpt\@xpt}%
+ \def\small{\slide@@setsize\small{11pt}\ixpt\@ixpt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{9.5pt}\viiipt\@viiipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{8pt}\viipt\@viipt}%
+ \def\tiny{\slide@setsize\tiny{6pt}\vpt\@vpt}%
+ \def\large{\slide@setsize\large{14pt}\xiipt\@xiipt}%
+ \def\Large{\slide@setsize\Large{18pt}\xivpt\@xivpt}%
+ \def\LARGE{\slide@setsize\LARGE{22pt}\xviipt\@xviipt}%
+ \def\huge{\slide@setsize\huge{25pt}\xxpt\@xxpt}%
+ \def\Huge{\slide@setsize\Huge{30pt}\xxvpt\@xxvpt}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\11@semptsize}
+% \begin{macrocode}
+\@namedef{11@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{13.6pt}\xipt\@xipt}%
+ \def\small{\slide@@setsize\small{12pt}\xpt\@xpt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{11pt}\ixpt\@ixpt}%
+ \def\scriptsize{\slide@setsize\scriptsize{9.5pt}\viiipt\@viiipt}%
+ \def\tiny{\slide@setsize\tiny{7pt}\vipt\@vipt}%
+ \def\large{\slide@setsize\large{14pt}\xiipt\@xiipt}%
+ \def\Large{\slide@setsize\Large{18pt}\xivpt\@xivpt}%
+ \def\LARGE{\slide@setsize\LARGE{22pt}\xviipt\@xviipt}%
+ \def\huge{\slide@setsize\huge{25pt}\xxpt\@xxpt}%
+ \def\Huge{\slide@setsize\Huge{30pt}\xxvpt\@xxvpt}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\12@semptsize}
+% \begin{macrocode}
+\@namedef{12@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{14.5pt}\xiipt\@xiipt}%
+ \def\small{\slide@@setsize\small{13.6pt}\xipt\@xipt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{12pt}\xpt\@xpt}%
+ \def\scriptsize{\slide@setsize\scriptsize{9.5pt}\viiipt\@viiipt}%
+ \def\tiny{\slide@setsize\tiny{7pt}\vipt\@vipt}%
+ \def\large{\slide@setsize\large{18pt}\xivpt\@xivpt}%
+ \def\Large{\slide@setsize\Large{22pt}\xviipt\@xviipt}%
+ \def\LARGE{\slide@setsize\LARGE{25pt}\xxpt\@xxpt}%
+ \def\huge{\slide@setsize\huge{30pt}\xxvpt\@xxvpt}%
+ \let\Huge\huge}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\14@semptsize}
+% \begin{macrocode}
+\@namedef{14@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{18pt}\xivpt\@xivpt}%
+ \def\small{\slide@@setsize\small{14.5pt}\xiipt\@xiipt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{13.6pt}\xipt\@xipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{12pt}\xpt\@xpt}%
+ \def\tiny{\slide@setsize\tiny{9.5pt}\viiipt\@viiipt}%
+ \def\large{\slide@setsize\large{22pt}\xviipt\@xviipt}%
+ \def\Large{\slide@setsize\Large{25pt}\xxpt\@xxpt}%
+ \def\LARGE{\slide@setsize\LARGE{30pt}\xxvpt\@xxvpt}%
+ \let\huge\LARGE
+ \let\Huge\LARGE}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\17@semptsize}
+% \begin{macrocode}
+\@namedef{17@semptsize}{%
+ \def\@normalsize{\slide@@setsize\normalsize{22pt}\xviipt\@xviipt}%
+ \def\small{\slide@@setsize\small{18pt}\xivpt\@xivpt}%
+ \def\footnotesize{\slide@@setsize\footnotesize{14.5pt}\xiipt\@xiipt}%
+ \def\scriptsize{\slide@setsize\scriptsize{13.6pt}\xipt\@xipt}%
+ \def\tiny{\slide@setsize\tiny{12pt}\xpt\@xpt}%
+ \def\large{\slide@setsize\large{25pt}\xxpt\@xxpt}%
+ \def\Large{\slide@setsize\Large{30pt}\xxvpt\@xxvpt}%
+ \let\LARGE\Large
+ \let\huge\Large
+ \let\Huge\Large}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{The $\setminus$twoup macro}
+%
+% \begin{macro}{\twoup}
+% See "2up.sty" for details.
+% \begin{macrocode}
+\def\twoup{\@ifnextchar[{\@twoup}{\@twoup[0]}}
+\ifarticle
+ \ifportrait
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@articlemag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -2\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperheight}{\paperwidth}%
+ \target{\@magstep\@tempcntb}{\paperwidth}{\paperheight}%
+ \targetlayout{topbottom}%
+ \printlandscapefalse
+ \else
+ \@seminarerr{Article magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\articlemag##1{\@semtwoupmagerr\articlemag}}
+ \else
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@articlemag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -2\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperwidth}{\paperheight}%
+ \target{\@magstep\@tempcntb}{\paperheight}{\paperwidth}%
+ \if@twoside
+ \targetlayout{twosided}%
+ \fi
+ \printlandscapetrue
+ \else
+ \@seminarerr{Article magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\articlemag##1{\@semtwoupmagerr\articlemag}}
+ \fi
+\else
+ \ifportrait
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@slidesmag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -3\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperwidth}{\paperheight}%
+ \advance\@tempcnta by -3
+ \target{\@magstep\@tempcnta}{\paperheight}{\paperwidth}%
+ \printlandscapetrue
+ \else
+ \@seminarerr{Slides magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\slidesmag##1{\@semtwoupmagerr\slidesmag}}
+ \else
+ \def\@twoup[#1]{%
+ \@tempcnta=\the@slidesmag\relax
+ \@tempcntb=\@tempcnta
+ \advance\@tempcntb by #1\relax
+ \advance\@tempcntb by -3\relax
+ \ifnum\@tempcntb>-6\relax
+ \@@input 2up.tex
+ \source{\@magstep\@tempcnta}{\paperheight}{\paperwidth}%
+ \target{\@magstep\@tempcntb}{\paperwidth}{\paperheight}%
+ \targetlayout{topbottom}%
+ \printlandscapefalse
+ \else
+ \@seminarerr{Slides magnification is too low for
+ \string\twoup\space to handle}\@eha
+ \fi
+ \def\slidesmag##1{\@semtwoupmargerr\slidesmag}}%
+ \fi
+\fi
+\def\@semtwoupmagerr#1{%
+ \@seminarerr{\string#1 must come before \string\twoup}\@eha}
+\addto@preamblecmds{\twoup\do\@twoup}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Configuration file}
+%
+% \begin{macrocode}
+\openin1 seminar.con
+\ifeof1\else\closein1 \relax\@@input seminar.con\fi
+% \end{macrocode}
+%
+\endinput
+% END: seminar.doc
diff --git a/macros/latex/contrib/seminar/src/semlayer.doc b/macros/latex/contrib/seminar/src/semlayer.doc
new file mode 100644
index 0000000000..6cb020b8ea
--- /dev/null
+++ b/macros/latex/contrib/seminar/src/semlayer.doc
@@ -0,0 +1,271 @@
+% BEGIN semlayer.doc
+%%
+\def\fileversion{1.0}
+\def\filedate{93/04/01}
+%%
+%% LaTeX style option `semlayer.sty'.
+%% For use with LaTeX v2.09 and the `seminar' document style.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
+%%
+%% 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.
+%%
+%%
+% **************************************************************************
+% This is `semlayer.doc', which contains the documented code for
+% `semlayer.sty'. You can use it in this form as the input file
+% `semlayer.sty'. You can also create a stripped input file using
+% sem-make.tex. You can print the documented code using sem-code.tex.
+% sem-make.tex and sem-code.tex are distributed with seminar.sty.
+% **************************************************************************
+%
+% \EndDocPreamble
+%
+% \CheckSum{276}
+% \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 \~}
+%
+%
+% \section{Overlays}
+%
+% The main thing that the "\process@slide" macro does is successively send the
+% main slide and then each overlay and layer to a slide output routine. In
+% order to make the definition of that macro easier to understand, we first
+% set up the overlays interface.
+%
+% Overlays must be implemented by some extra macros, such as in
+% "semcolor.sty". Specifically, the commands "\@overlay" and "\make@overlay"
+% should be defined.
+%
+% The reason for including the interface in "seminar.sty" is to encourage
+% those who implement overlays to use a uniform interface, and to illustrate
+% how overlays work. To be honest, though, it may not be possible to implement
+% overlays without PostScript or a graphics language with similar capabilities
+% using the interface that is defined here and without rewriting the basic
+% slides macros.
+%
+% This system of overlays is so good and the system using invisible fonts is
+% so lousy, that no special provisions have been made for supporting the
+% latter. Actually, overlay should (and could easily) be implemented as \TeX{}
+% primitives, saving everyone a lot of trouble.
+%
+% The system for overlays is not explained here in great detail. See
+% "semcolor.sty" and "pstricks.tex" for an example of how overlays can be
+% implemented.
+%
+% \begin{macrocode}
+\addto@hook\before@newslide{%
+ \global\def\overlay@list{}%
+ \setcounter{overlay}{0}}
+% \end{macrocode}
+%
+% \begin{macro}{\process@slide,\overlay@loop,\layer@loop}
+% "\process@slide" is the beginning of the ``output'' routine for slides.
+% "\@slidebox" is copied to "\@@slidebox". The "\make@overlay#1" macro should
+% set "\@slidebox" to the contents of "\@@slidebox", but with only the
+% material for overlay "#1" visible.
+% \begin{macrocode}
+\newbox\@@slidebox
+\def\process@@slide{%
+ \ifx\overlay@list\@empty
+ \finish@slide
+ \output@slide
+ \else
+ \setbox\@@slidebox\box\@slidebox
+ \make@overlay{0}%
+ \finish@slide
+ \output@slide
+ {\let\theoverlay\theslide\layer@loop{0}}%
+ \overlay@loop
+ \fi}
+\def\overlay@loop{%
+ \begingroup
+ \overlay@prep
+ \c@overlay=1
+ \@whilenum\c@overlay<10
+ \do{%
+ \test@member{\the\c@overlay}{\overlay@list}%
+ \if@test
+ \make@overlay{\the\c@overlay}%
+ \finish@slide
+ \output@slide
+ \fi
+ \layer@loop{\the\c@overlay}%
+ \advance\c@overlay by 1}%
+ \endgroup}
+\def\layer@loop#1{%
+ \begingroup
+ \layer@prep
+ \@for\currlayer:=\layer@list\do{%
+ \test@member{#1-\currlayer}{\overlay@list}%
+ \if@test
+ \make@overlay{#1-\currlayer}%
+ \finish@slide
+ \output@slide
+ \fi}%
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\layer@prep,\overlay@prep}
+% \begin{macrocode}
+\def\layer@prep{%
+ \ifarticle\pagestyle{\layer@pagestyle}\fi
+ \let\thepage\thelayer
+ \ifx\thelayerframe\@empty\else\let\theslideframe\thelayerframe\fi
+ \let\slidelabel\layerlabel}
+\def\overlay@prep{%
+ \ifarticle\pagestyle{\overlay@pagestyle}\fi
+ \let\thepage\theoverlay
+ \ifx\theoverlayframe\@empty\else\let\theslideframe\theoverlayframe\fi
+ \let\slidelabel\overlaylabel}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\layerframe,\overlayframe}
+% \begin{macrocode}
+\def\layerframe{\@slideframe{layer}}
+\def\overlayframe{\@slideframe{overlay}}
+\def\thelayerframe{}
+\def\theoverlayframe{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\overlaylabel,\layerlabel}
+% \begin{macrocode}
+\def\overlaylabel{\bf Overlay \theoverlay}
+\def\layerlabel{\bf Layer \thelayer}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\theoverlay,\thelayer}
+% \begin{macrocode}
+\newcounter{overlay}
+\def\theoverlay{\theslide-\alph{overlay}}
+\def\currlayer{}
+\def\thelayer{\theoverlay-\currlayer}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifoverlays,\iflayers}
+% Overlays and layers can be turned on and off independently.
+% \begin{macrocode}
+\newif\ifoverlays
+\newif\iflayers
+\@ifundefined{@overlay}%
+ {\let\@overlay\relax}%
+ {\ifarticle\else\overlaystrue\layerstrue\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\nooverlays@err,\@overlay}
+% "\@overlay" is set to "\relax" if it is not defined, for easy error
+% detection.
+% \begin{macrocode}
+\def\nooverlays@err{%
+ \@seminarerr{You need to use additional macros for overlays,
+ e.g., semcolor.sty}\@ehd
+ \global\overlaysfalse
+ \global\layersfalse}
+\@ifundefined{@overlay}{}{}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\overlay}
+% The "\overlay" command starts by checking that the argument is a number
+% between 0 and 9. If so, "\@overlay" is invoked. Except for overlay 0, the
+% counter for cross-references is set to "overlay", and its value is set to
+% the argument of "\overlay".
+% \begin{macrocode}
+\def\overlay#1{%
+ \ifoverlays\ifx\@overlay\relax\nooverlays@err\fi\fi
+ \ifslide
+ \@tempcnta=#1
+ \@testfalse
+ \ifnum\@tempcnta>-1 \ifnum\@tempcnta<10 \@testtrue\fi\fi
+ \if@test
+ \c@overlay=\@tempcnta
+ \ifnum\c@overlay=0
+ \advance\c@slide by -1
+ \refstepcounter{slide}%
+ \else
+ \advance\c@overlay by -1
+ \refstepcounter{overlay}%
+ \ifoverlays
+ \xdef\overlay@list{\overlay@list,\the\c@overlay}%
+ \fi
+ \fi
+ \ifoverlays
+ \@overlay{\the\c@overlay}%
+ \fi
+ \else
+ \@seminarerr{\string\overlay\space argument must be
+ an integer between 0 and 9}\@eha
+ \fi
+ \else
+ \@seminarerr{\string\overlay\space can only be used
+ in slide environments}\@eha
+ \fi
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\colorlayers}
+% Color layers use the same mechanism as overlays; only the interface differs.
+% \begin{macrocode}
+\def\colorlayers#1{%
+ \edef\@tempc{#1}%
+ \edef\layer@list{\layer@list,#1}%
+ \def\@tempa##1{%
+ \@namedef{##1}{%
+ \iflayers\ifx\@overlay\relax\nooverlays@err\fi\fi
+ \ifslide
+ \iflayers
+ \xdef\overlay@list{\overlay@list,\the\c@overlay-##1}%
+ \@overlay{\the\c@overlay-##1}%
+ \fi
+ \else
+ \@seminarerr{Color layer `##1' can only be used in
+ slide environments}\@eha
+ \fi}}
+ \@for\@tempb:=\@tempc\do{%
+ \expandafter\@tempa\expandafter{\@tempb}}}
+\def\layer@list{}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\layerpagestyle,\overlaypagestyle}
+% \begin{macrocode}
+\def\overlaypagestyle#1{\@ifgoodps{#1}{\edef\overlay@pagestyle{#1}}}
+\def\layerpagestyle#1{\@ifgoodps{#1}{\edef\layer@pagestyle{#1}}}
+\overlaypagestyle{}
+\layerpagestyle{}
+% \end{macrocode}
+% \end{macro}
+%
+\endinput
+% END semlayer.doc