%%
%% This is file `mathexample.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% texpower-doc.dtx  (with options: `mathexample,mathexample-src,end')
%% 
%% --------------------------------------------------------------
%% TeXPower bundle - dynamic online presentations with LaTeX
%% Copyright (C) 1999-2004 Stephan Lehmke
%% Copyright (C) 2003-2005 Hans Fredrik Nordhaug
%% 
%% 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.
%% --------------------------------------------------------------
%% 
%% The list of all files belonging to the TeXPower bundle is
%% given in the file `00readme.txt'.
%% 
\ProvidesFile{mathexample.tex}%
      [2005/04/07 TeXPower example file]
%-----------------------------------------------------------------------------------------------------------------
%
% Math example for the package texpower.sty.
%
%-----------------------------------------------------------------------------------------------------------------
% Enable all color emphasis and highlighting options. Use white background and slifonts.

\PassOptionsToPackage{coloremph,colormath,colorhighlight,whitebackground}{texpower}

% Input the generic preamble.

\input{__TPpreamble}

\usepackage{tpslifonts}

\hypersetup{pdftitle={texpower math example}}


%-----------------------------------------------------------------------------------------------------------------
% Packages and Preamble settings individual for this example.

% We write some aligned equations.

\usepackage{amsmath}
% Make nested braces grow.
\delimitershortfall-1sp

%-----------------------------------------------------------------------------------------------------------------
% Finally, everything is set up. Here we go...
%
\begin{document}
\begin{slide}
%-----------------------------------------------------------------------------------------------------------------
%
\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*}
  }%
  \newslide
\end{slide}
\end{document}
\endinput
%%
%% End of file `mathexample.tex'.
