% __TPmath.tex,v 1.4 2002/11/14 20:46:00 hansfn Exp
%  
% TeXPower bundle - dynamic online presentations with LaTeX
% Copyright (C) 1999-2002 Stephan Lehmke
% 
% This program is free software; you can redistribute it and/or
% modify it under the terms of the GNU General Public License
% as published by the Free Software Foundation; either version 2
% of the License, or (at your option) any later version.
% 
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
%-----------------------------------------------------------------------------------------------------------------
% File: __TPmath.tex
%
% Code for the math example for the package texpower.sty.
% 
% This file is input by others. Don't compile it separately.
%
%-----------------------------------------------------------------------------------------------------------------
% Autor: Stephan Lehmke <Stephan.Lehmke@cs.uni-dortmund.de>
%
% v0.0.1 Mar 20, 2000: First version for the pre-alpha release of TeXPower.
%
% v0.0.2 Apr 19, 2000: Using \bstep instead of \boxedsteps.
%
% v0.0.3 Apr 27, 2000: Some small changes in preparation of the update to TeXpower v0.0.7.
%
% v0.0.4 May 24, 2000: texpower 0.0.8 now supports equation numbers in the argument of \stepwise, so align* was
%                      changed to align. 
%


%-----------------------------------------------------------------------------------------------------------------
%
\makeslidetitle{\macroname{stepwise} Example: An Aligned Equation}\label{Sec:ExEq}
% In the following, an aligned system of equations is built incrementally. We use the custom command \liststepwise to
% avoid glitches in vertical spacing.
%
\liststepwise%
{%
  %
  % This is just for compressing the equations so they can be squeezed on one slide.
  %
  \fontsize{7.8pt}{9pt}\selectfont
  \renewcommand{\arraystretch}{0}%
  \setlength{\arraycolsep}{0pt}%
  \setlength{\abovedisplayskip}{0pt}%
  \setlength{\belowdisplayskip}{0pt}%
  %
  % \highlightboxed will be used for underlaying some formulas with color. To minimize overlap, the width of the outer
  % frame is reduced.
  \setlength{\highlightboxsep}{1pt}%
  %
  \begin{align}
    \lefteqn
    {%
      \min
      \left(
        % The nested braces are filled `from outer to inner'. This means nesting a lot of steps inside each other...
        % The outermost brace is displayed from the outset.
        % The first step (which follows right here) displays the next inner brace (the first argument of \min), filled
        % with an almost `empty' array (apart from one comma and some dots).
        % \bstep is used to get appropriate white space when the step is not yet active.
        \bstep
        {\max
          \left(
            \begin{array}{l}
              % The next two steps fill in the lines of the array.
              \bstep{\min\left(F'(x),\min\left(F_1(x),G_1(y)\right)\right)},\\[-2ex]
              \vdots\\
              \bstep{\min\left(F'(x),\min\left(F_n(x),G_n(y)\right)\right)}
            \end{array}
          \right)
          },
        % After the first brace is filled, the next step provides the second argument of \min.
        \bstep{\min\left(G_i(y),H_i(z)\right)}
      \right)
      }
    &
    % The next couple of steps will create the remaining lines of the aligned equations. These need to be
    % insubstantial (as is the default for \liststepwise), because & can't go in a box.
    % As a consequence, the horizontal alignment cannot kick in until the last step is performed. This would make the
    % alignment `flicker' sidewise.
    % So we have to bite the bullet and duplicate the widest entry here (invisibly), so that the horizontal alignment
    % is constant during all steps. *sigh*
    \phantom
    {%
      {}=
      \min
      \left(
        F'(x),
        \min
        \left(
          \max
          \left(
            \begin{array}{l}
              \min\left(F_1(x),\min\left(G_1(y),G_i(y)\right)\right),\\[-1.5ex]
              \vdots\\[-.5ex]
              \min\left(F_n(x),\min\left(G_n(y),G_i(y)\right)\right)
            \end{array}
          \right),
          H_i(z)
        \right)
      \right)
      }
    % The next step displays two lines at a time, but incompletely, i.e. some parts are missing (which are inside
    % nested calls of \bstep).
    % This way, it is demonstrated how the arguments of the nested \min's are reordered.
    \step
    {%
      \\
      &=
      \max
      \left(
        % The macro \activatestep is used by \stepwise to `wrap' the argument of a \bstep command at the _first_ time
        % it appears.
        % Usually, it does nothing. Now, we redefine it to highlight its background, so it is easier to spot the
        % places where the additional arguments were inserted.
        \let\activatestep\highlightboxed
        \begin{array}{l}
          \min
          \left(
            % The inner \bstep's display the missing arguments, which are completely identical in both lines.
            % It is intended that all the missing arguments appear at the same time, so \rebstep is used for the
            % remaining arguments which have been left out.
            \min\left(\bstep{F'(x)},\min\left(\rebstep{F_1(x),G_1(y)}\right)\right),\min\left(G_i(y),H_i(z)\right)
          \right),\\[-2ex]
          \vdots\\[-1ex]
          \min
          \left(
            \min\left(\rebstep{F'(x)},\min\left(\rebstep{F_n(x),G_n(y)}\right)\right),\min\left(G_i(y),H_i(z)\right)
          \right)
        \end{array}
      \right)
      \\
      &=
      \max
      \left(
        \let\activatestep\highlightboxed
        \begin{array}{l}
          \min
          \left(
            \min\left(
              % Here are the remaining arguments of \min which are all to be displayed in one step (together with
              % those from the previous line). 
              \rebstep{F'(x)},\min\left(\rebstep{F_1(x)},\min\left(\rebstep{G_1(y)},G_i(y)\right)\right)
            \right),
            H_i(z)
          \right),\\[-2.5ex]
          \vdots\\[-1.5ex]
          \min
          \left(
            \min\left(
              \rebstep{F'(x)},\min\left(\rebstep{F_n(x)},\min\left(\rebstep{G_n(y)},G_i(y)\right)\right)
            \right),
            H_i(z)
          \right)
        \end{array}
      \right)
      }
    \step
    {%
      \\
      &=
      \min
      \left(
        F'(x),
        \min
        \left(
          \max
          \left(
            \begin{array}{l}
              \min\left(F_1(x),\min\left(G_1(y),G_i(y)\right)\right),\\[-1.5ex]
              \vdots\\[-.5ex]
              \min\left(F_n(x),\min\left(G_n(y),G_i(y)\right)\right)
            \end{array}
          \right),
          H_i(z)
        \right)
      \right)
      }
  \end{align}
  }%

%%% Local Variables: 
%%% mode: latex
%%% fill-column: 120
%%% TeX-master: "mathexample"
%%% End: 
