# Re: powersem display option - bug?

Peter Riocreux wrote on 27 Feb 2001 10:48:09 +0000:
>
> Underfull \vbox (badness 10000) has occurred while \output is active

Yep, these over/underful vboxes are a pain ;-)

I hunted down this one (it was introduced by me when fixing
footnote handling for incrementally built slides), but generally,
seminar's output routine is a mess (stemming from 2.09 times
and since patched several times) and could do with a good
rewriting... (see below).

The patch will appear with the next release, but as I still
won't bet when that will occur (PhD still not handed in :-| ),
I'm attaching the current development version (untested).

> On a separate matter - as seminar is effectively unmaintained (in that
> new versions are not issued AIUI), and there are a number of fixes
> required to make it play happily with other packages, why not, with
> the author's permission, just reuse the seminar code (but fixed) and
> make powersem a whole class rather than merely a wrapper around
> seminar. Seminar.bug and .bg2 could be applied immediately and I
> imagine that the problem that causes the need for fixseminar could be
> solved. Backward compatability issues would be removed, because
> powersem is not yet a stable package, and changes could be made before
> it becomes so.

Yea, this is exactly what I'm planning to do.
But to be honest, currently powersem is no more than
a bundle of patches I absolutely need to go along
with developing TeXPower. I'll abstain from doing
anything more substantial before the first beta
release of TeXPower is out. This is more important
to me right now. TeXPower works with all classes, so
noone really needs to use powersem, it's just that

As soon as TeXPower is out of the phase of developing
the absolutely neccessary functionality, I'll start
earnestly with powersem.

But this is a non-trivial task, because seminar has so
much functionality which I don't ever use. I never use
notes or articles, so both are likely already broken
in powersem by some patch' to the main slide-making
parts.

Probably the first step will be to make a powersem light'
which has only the functionality for making presentations.

>
> On yet another note, I am developing material for printing and
> presenting, and it would be nice to be able to use \centerslidesfalse
> as a class option, and conversely, to be able to use the display
> option as a command. This latter would allow me to predicate use of
> display on whether I am processing for DVI or for PDF. I guess this
> may depend on integration of seminar.cls though.

I'm not sure I understand what you mean.

Could you post an example of what a document you desire would
look like and why the same isn't possible at the moment?

It shouldn't be too inconvenient to write

\documentclass{powersem}\centerslidesfalse

\documentclass[centerslidesfalse]{powersem}

regards
Stephan

--
Stephan Lehmke                 [EMAIL PROTECTED]
Fachbereich Informatik, LS I   Tel. +49 231 755 6434
Universitaet Dortmund          FAX              6555
D-44221 Dortmund, Germany

%-----------------------------------------------------------------------------------------------------------------
% File: powersem.cls
%
% Make seminar ready for the Third Millennium ;-)
% This class loads seminar and tries to fix some problems which occur when trying to
create dynamic presentations with
% the texpower package.
%
%
% This class is part of the TeXPower bundle, to be found at
%
% http://ls1-www.cs.uni-dortmund.de/~lehmke/texpower/
%
% The TeXPower bundle also contains a package fixseminar.sty which applies some more
fixes, in particular for
% hyperref. These can not be applied here because they have to be made after hyperref
%
%-----------------------------------------------------------------------------------------------------------------
% Autor: Stephan Lehmke <[EMAIL PROTECTED]>
%
% v0.1 Oct 18, 1999 First version. So far it doesn't do much more than load seminar.
%
% v0.2 Mar 28, 2000 Force seminar to treat \paperwidth and \paperheight in a sensible
manner.
%
% v0.3 May 10, 2000 Added option calcdimensions'.
%
% v0.4 Jun 16, 2000 Now separates text from footnotes when option display' is given.
%
% v0.5 Jun 26, 2000 \@colht is ignored by seminar, which is bad. Added a patch to
\set@slidesize.
%                   calcdimensions now handles slide frames.
%
% v0.5a Jul 03, 2000 The footnote patch with option display effectively disabled
setting \centerslidestrue. Fixed.
%
% v0.6  Mar 01, 2001 seminar's \output@slide kernel copied (from seminar.bg2) and
modified for better color handling
%                    and to remove some overfull \vbox warnings.
%                    There was another underfull vbox warning lurking in the footnote
patch. Removed.
%

\def\fileversion{0.6}
\def\filedate{2001/03/01}

\NeedsTeXFormat{LaTeX2e}

\ProvidesClass%
{powersem}%
[\filedate\space Create online Presentations with seminar. v\fileversion]

%--------------------------------------------------------------------------------------------------------------

\RequirePackage{ifthen}

%--------------------------------------------------------------------------------------------------------------
% The display option is understood by all relevant classes and packages from the
TeXPower bundle. It means that
% dynamic' features are to be turned on.
% There is a boolean register display (as defined in ifthen.sty) which is set by this
option and can be used to
% differentiate between slides for display and slides for printout.
% Notes are disabled automatically.

\newboolean{display}
\DeclareOption{display}{\setboolean{display}{true}\PassOptionsToClass{slidesonly}{seminar}}

%--------------------------------------------------------------------------------------------------------------
% The KOMA option tells powersem to load scrartcl (from the KOMA suite of document

\newboolean{KOMA@PS}
\DeclareOption{KOMA}{\setboolean{KOMA@PS}{true}}

%--------------------------------------------------------------------------------------------------------------
% We need to redefine the a4paper option which is broken in seminar.cls

\DeclareOption{a4paper}{\PassOptionsToClass{a4}{seminar}}

%--------------------------------------------------------------------------------------------------------------
% The calcdimensions option tells powersem to automatically calculate slidewidth and
slideheight from paper dimensions
% and margins.

\newboolean{calcdim@PS}
\DeclareOption{calcdimensions}{\setboolean{calcdim@PS}{true}}

%--------------------------------------------------------------------------------------------------------------

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{seminar}}

\ProcessOptions

%--------------------------------------------------------------------------------------------------------------
% Now we need to hack a little to make seminar load scrartcl instead of article (if
the option KOMA was given).

\providecommand{\baseclass}{scrartcl}

\ifthenelse{\boolean{KOMA@PS}}
{%
\def\article@PS{article}

% Make \PassOptionsToClass and \LoadClass use scrartcl...

\let\oldPOTC@PS=\PassOptionsToClass

\def\PassOptionsToClass#1#2{\edef\cls@PS{#2}\ifx\article@PS\cls@PS\oldPOTC@PS{#1}{\baseclass}\else\oldPOTC@PS{#1}{#2}\fi}
}
{}

% Furthermore, seminar redefines \paperheight and \paperwidth, saving their value in
\sem@paperheight and
% \sem@paperwidth. We undo this so the paper dimension calculation of typearea can be
used.

{%
\edef\cls@PS{#2}%
\ifx\article@PS\cls@PS
\let\paperheight\sem@paperheight\let\paperwidth\sem@paperwidth
\ifthenelse{\boolean{KOMA@PS}}{\oldLC@PS[#1]{\baseclass}}{\oldLC@PS[#2]{article}}
\portraittrue
\else
\oldLC@PS{#2}%
\fi
}%

%--------------------------------------------------------------------------------------------------------------
% Finally, the seminar class and some bug fixes are loaded.

\AtBeginDocument
{%
\input{seminar.bug}%
\input{seminar.bg2}%
}

\expandafter\def\expandafter\set@slidesize\expandafter
{\set@slidesize\@colht\vsize}

%-----------------------------------------------------------------------------------------------------------------
% Make some changes in the seminar kernel to hopefully get better handling of text
colors and avoid overfull box
% warnings when \slidetopmargin and \slidebottommargin are set too small.

\AtBeginDocument
{%
\ifarticle
\else
\def\output@slide{%
\begingroup
\hoffset=-\inverseslidesmag in
\voffset=-\inverseslidesmag in
\setslidelength\@tempdima{%
\ifportrait\paperwidth\else\paperheight\fi}%
\setslidelength\@tempdimb{%
\ifportrait\paperheight\else\paperwidth\fi}%
\@ifrotateslide{%
\dimen@=\@tempdima
\@tempdima=\@tempdimb
\@tempdimb=\dimen@}%
\fi
% used for scratch:
\setslidelength\oddsidemargin\slideleftmargin
\setslidelength\evensidemargin\sliderightmargin
\ifautoslidemargins
\textwidth=\wd\@slidebox
\oddsidemargin=\@tempdima
\divide\oddsidemargin 2
\else
\setslidelength\oddsidemargin\slideleftmargin
\setslidelength\evensidemargin\sliderightmargin
\textwidth=\@tempdima
\fi
\setbox\@slidebox=\hbox to \@tempdima{{%    All double {{ around box contents
added for better color handling (STL)
%
\kern\oddsidemargin
\vbox to\@tempdimb{{%
\ifnum\fancyput@flag>-1
\hbox{\kern-\oddsidemargin\do@fancyput}%
\fi
\let\label\@gobble
\let\index\@gobble
\let\glossary\@gobble
\vfill
\color@hbox
\normalcolor
\color@endbox
\kern\z@}}%
\vss
\hbox to\textwidth{{\hss\box\@slidebox\hss}}%
\vss
\vbox to\footheight{{%
\vfill
\color@hbox
\normalcolor
\slidefootfont\relax%\strut         Removed (STL)
\hb@xt@\textwidth{\@oddfoot}%
\color@endbox
\vfill}}%
}}\hss}}%
\insert@specials
\shipout\box\@slidebox
\endgroup
\let\firstmark\botmark
\stepcounter{page}% <=== This will seriously upset notes! (STL)
}%
\@ifundefined{fancyput@flag}{\def\fancyput@flag{-1}}{}%
\fi
}

%--------------------------------------------------------------------------------------------------------------
% When producing slides to be displayed interactively, we must make absolutely sure
that interactive building of slides
% doesn't move text which has already been set. So slides are not to be centered.

\ifthenelse{\boolean{display}}
{%
\centerslidesfalse
\def\@makeslide{%
\ifcenterslides
\setbox\@slidebox\vbox{{%
\unvbox\@cclv
\ifvoid\slide@footins\else
\vskip\skip\slide@footins
\footnoterule
\unvbox\slide@footins
\fi
\vskip\z@}}
\else
\setbox\@slidebox\vbox to \slide@vsize{{%
\unvbox\@cclv
\ifvoid\slide@footins\vfill\else
\vfil\vskip\skip\slide@footins
\footnoterule
\unvbox\slide@footins
\fi
\vskip\z@}}%
\fi
}%
}
{}

%--------------------------------------------------------------------------------------------------------------
% If powersem is asked to calculate the slide dimensions...

\def\relax@PS{\relax}

\ifthenelse{\boolean{calcdim@PS}}
{%
\AtBeginDocument
{%
\setlength{\slidewidth}{\paperwidth}%
\ifx\theslideframe\relax@PS
\else
\fi
\setlength{\slideheight}{\paperheight}%
\ifx\theslideframe\relax@PS
\else
\fi
}%
}
{}

% Local Variables:
% fill-column: 120
% TeX-master: t
% End:

%%
%% End of file powersem.cls'.