% \iffalse meta-comment
%
% Copyright (C) 1999-2012 by Vytas Statulevi\v{c}ius <vytas@vtex.lt>
% ---------------------------------------------------------------------------
% This work 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.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is Sigitas Tolu\v{s}is.
%
% This work consists of the files floatpag.dtx and floatpag.ins
% and the derived filebase floatpag.sty.
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{floatpag.dtx}
%</driver>
%% Copyright (C) 1999-2012 by Vytas Statulevi\v{c}ius <vytas@vtex.lt>
%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania
%% http://www.vtex.lt/tex/download/macros/
%% --------------------------------------------------------------------------
%% This work 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.
%% The latest version of this license is in
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% The macros, developed by Sigitas Tolu\v{s}is <sigitas@vtex.lt>,
%% were used in this package.
%%
%% The Current Maintainer of this work is Sigitas Tolu\v{s}is.
%%
%% PURPOSE: provides commands to apply different pagestyles
%%          to the full page floats.
%%
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{floatpag}
%<*package>
    [2012/05/29 v1.1 Different pagestyles on float pages]
%</package>
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{floatpag}[2012/05/29]
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
  \DocInput{floatpag.dtx}
  \PrintChanges
  \PrintIndex
\end{document}
%</driver>
% \fi
%
% \CheckSum{304}
%
% \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         \~}
%
%
% \changes{v1.1}{2012/05/29}{Converted to DTX file}
%
% \DoNotIndex{\newcommand,\newenvironment}
%
% \providecommand*{\url}{\texttt}
% \GetFileInfo{floatpag.dtx}
% \title{The \textsf{floatpag} package}
% \author{Vytas Statulevi\v{c}ius and Sigitas Tolu\v{s}is \\
% \url{vytas@vtex.lt}, \url{sigitas@vtex.lt}}
% \date{\fileversion~from \filedate}
%
% \maketitle
%
% \section{Introduction}
%
% Provides commands to apply different pagestyles to the full page floats.
%
% \section{Usage}
%
% \DescribeMacro{\floatpagestyle}
% \marg{foo}     will apply pagestyle \meta{foo} to all pages
%                          occupied by full page floats.
%
% \medskip
% \DescribeMacro{\rotfloatpagestyle}
% \marg{foo}  will apply pagestyle \meta{foo} to all pages
%                          occupied by sideways figures and tables
%                          produced with the help of |rotating|
%                          package (Sebastian Rahtz and Leonor Barroca).         
%
% \medskip
% \DescribeMacro{\thisfloatpagestyle}
% \marg{foo} will apply pagestyle \meta{foo} to a page where
%                          this command was used inside figure or table
%                          environment.
%
% \medskip
% \textbf{Default:} |\floatpagestyle{headings}| and |\rotfloatpagestyle{plain}|.
%
% \medskip
% The following commands from the LaTeX2e kernel were redefined:
% |\@xfloat|, |\@vtryfc|.
%
% \medskip
% The following command from the rotating.sty  was redefined:
% |\@xrotfloat|.
%
% \StopEventually{}
%
% \section{Implementation}
%
% \iffalse
%<*package>
% \fi
%
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{floatpag}
             [1999/04/29
                 FLOAT PAGESTYLE]
%    \end{macrocode}
%
% \begin{macro}{\floatpagestyle}
%    \begin{macrocode}
\def\floatpagestyle#1{\gdef\at@float@page{\thispagestyle{#1}}}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\rotfloatpagestyle}
%    \begin{macrocode}
\def\rotfloatpagestyle#1{%
  \gdef\@r@f@pagestyle{#1}%
  \gdef\at@rotfloat@page{\thispagestyle{#1}}%
  }
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
\floatpagestyle{headings}
\rotfloatpagestyle{plain}
%    \end{macrocode}
%
% \begin{macro}{\thisfloatpagestyle}
%
%    \begin{macrocode}
\def\thisfloatpagestyle#1{%
  \expandafter\expandafter\expandafter\gdef\expandafter
    \csname\number\@currbox @float\endcsname{\thispagestyle{#1}}\relax
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\@xfloat}
%
%% Modify |\x@float| - ordinary floats
%
%    \begin{macrocode}
\def\@xfloat #1[#2]{%
  \@nodocument
  \def \@captype {#1}%
   \def \@fps {#2}%
   \@onelevel@sanitize \@fps
   \def \reserved@b {!}%
   \ifx \reserved@b \@fps
     \@fpsadddefault
   \else
     \ifx \@fps \@empty
       \@fpsadddefault
     \fi
   \fi
   \ifhmode
     \@bsphack
     \@floatpenalty -\@Mii
   \else
     \@floatpenalty-\@Miii
   \fi
  \ifinner
     \@parmoderr\@floatpenalty\z@
  \else
    \@next\@currbox\@freelist
      {%
       \@tempcnta \sixt@@n
       \expandafter \@tfor \expandafter \reserved@a
         \expandafter :\expandafter =\@fps
         \do
          {%
           \if \reserved@a h%
             \ifodd \@tempcnta
             \else
               \advance \@tempcnta \@ne
             \fi
           \fi
           \if \reserved@a t%
             \@setfpsbit \tw@
           \fi
           \if \reserved@a b%
             \@setfpsbit 4%
           \fi
           \if \reserved@a p%
             \@setfpsbit 8%
           \fi
           \if \reserved@a !%
             \ifnum \@tempcnta>15
               \advance\@tempcnta -\sixt@@n\relax
             \fi
           \fi
           }%
       \@tempcntb \csname ftype@\@captype \endcsname
       \multiply \@tempcntb \@xxxii
       \advance \@tempcnta \@tempcntb
       \global \count\@currbox \@tempcnta
       \expandafter\expandafter\expandafter\gdef\expandafter
         \csname\number\@currbox @float\endcsname{\at@float@page}\relax
       }%
    \@fltovf
  \fi
  \global \setbox\@currbox
    \color@vbox
      \normalcolor
      \vbox \bgroup
        \hsize\columnwidth
        \@parboxrestore
        \@floatboxreset
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\e@xrotfloat}
%
%% 2e rotating.sty v. 2.10: 
%    \begin{macrocode}
\def\e@xrotfloat#1[#2]{%
  \@float{#1}[#2]%
  \thisfloatpagestyle{\@r@f@pagestyle}%
  \begin{lrbox}\rot@float@box
  \begin{minipage}\textheight
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\n@xrotfloat}
%% 2.09 rotating.sty v. 1.6
%    \begin{macrocode}
\def\n@xrotfloat#1[#2]{%
  \ifhmode 
    \@bsphack
    \@floatpenalty -\@Mii
  \else
   \@floatpenalty-\@Miii
  \fi
  \def\@captype{#1}%
  \ifinner
    \@parmoderr\@floatpenalty\z@
  \else
    \@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname
      \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n
      \@tfor \@tempa :=#2\do{%
        \if\@tempa h\advance\@tempcnta \@ne\fi
        \if\@tempa t\advance\@tempcnta \tw@\fi
        \if\@tempa b\advance\@tempcnta 4\relax\fi
        \if\@tempa p\advance\@tempcnta 8\relax\fi
        }%
      \global\count\@currbox\@tempcnta
      }%
    \@fltovf
  \fi
  \expandafter\expandafter\expandafter\gdef\expandafter
    \csname\number\@currbox @float\endcsname{\at@rotfloat@page}\relax
  \global\setbox\@currbox\vbox\bgroup
    \hsize\textheight 
    \@parboxrestore
  }
%    \end{macrocode}
%
%% Check for |rotating| version: 2e ar 209:
%% 1999.02.08 To be sure check at begin document.
%    \begin{macrocode}
\AtBeginDocument{%
\@ifpackageloaded{rotating}%
{\let\@xrotfloat\e@xrotfloat\let\n@xrotfloat\relax}%
{\let\@xrotfloat\n@xrotfloat\let\e@xrotfloat\relax}}%
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\spec@float}
%
%% "Hook" in the output procedure.
%    \begin{macrocode}
\def\spec@float#1{\expandafter\csname\number#1@float\endcsname
  \expandafter\expandafter\expandafter\gdef\expandafter\csname\number#1@float\endcsname{}%
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\@vtryfc}
%    \begin{macrocode}
\def\@vtryfc#1{%
  \global\setbox\@outputbox\vbox{}%
  \let\@elt\@wtryfc
  \@flsucceed
  \let\@elt\spec@float
  \@flsucceed
  \global\setbox\@outputbox \vbox to\@colht{%
    \vskip \@fptop
    \vskip -\@fpsep
    \unvbox \@outputbox
    \vskip \@fpbot
    }%
  \let\@elt\relax
  \xdef#1{\@failedlist\@flfail}%
  \xdef\@freelist{\@freelist\@flsucceed}%
  }
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode} 
%\endinput 
%    \end{macrocode} 
%
% \iffalse
%</package>
% \fi
%
% \Finale
