% \iffalse meta-comment/*%    \end{macrocode}*/
%
% Copyright (C) 1999-2012 by Vytas Statulevi\v{c}ius <vytas@vtex.lt>
% Copyright (C) 2021 by Sigitas Tolu\v{s}is <sigitas@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
%<*internal>
\begingroup
%</internal>
%<*batchfile>
\input docstrip.tex
\keepsilent\askforoverwritefalse
\preamble
%%
%% This is file `floatpag.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% floatpag.dtx  (with options: `package')
%% 
\endpreamble
\generate{\file{floatpag.sty}{\from{floatpag.dtx}{package}}}
%</batchfile>
%<batchfile>\endbatchfile
%<*internal>
\generate{\file{floatpag.ins}{\from{floatpag.dtx}{batchfile}}}
\endgroup
%</internal>
%<*driver>
\ProvidesFile{floatpag.dtx}
%</driver>
%% Copyright (C) 1999-2012 by Vytas Statulevi\v{c}ius <vytas@vtex.lt>
%% Copyright (C) 2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
%% UAB VTeX, Mokslininkų 2A, LT-08412 Vilnius, Lithuania
%% --------------------------------------------------------------------------
%% 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>
    [2021/10/04 v2.0 Different pagestyles on float pages]

%</package>
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{floatpag}[2021/10/04]
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
  \DocInput{floatpag.dtx}
  \PrintChanges
  \PrintIndex
\end{document}
%</driver>
% \fi
%
% \CheckSum{216}
%
% \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}
% \changes{v2.0}{2021/10/04}{Removed latex209 compatibility; added rotated dblfloat support}
%
% \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 commands from the rotating.sty  was redefined:
% |\@xrotfloat|, |\@rotxdblfloat|.
%
% \StopEventually{}
%
% \section{Implementation}
%
% \iffalse
%<*package>
% \fi
%
% \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}}
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
\floatpagestyle{headings}
\rotfloatpagestyle{plain}
%    \end{macrocode}
%
% \begin{macro}{\thisfloatpagestyle}
%
%    \begin{macrocode}
\def\thisfloatpagestyle#1{%
  \global\@namedef{\number\@currbox @float}{\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
           \else\if \reserved@a t%
             \@setfpsbit \tw@
           \else\if \reserved@a b%
             \@setfpsbit 4%
           \else\if \reserved@a p%
             \@setfpsbit 8%
           \else\if \reserved@a !%
             \ifnum \@tempcnta>15
               \advance\@tempcnta -\sixt@@n\relax
             \fi
           \else
             \@latex@error{Unknown float option `\reserved@a'}%
             {Option `\reserved@a' ignored and `p' used.}%
             \@setfpsbit 8%
           \fi\fi\fi\fi\fi
           }%
       \@tempcntb \csname ftype@\@captype \endcsname
       \multiply \@tempcntb \@xxxii
       \advance \@tempcnta \@tempcntb
       \global \count\@currbox \@tempcnta
       \global\@namedef{\number\@currbox @float}{\at@float@page}\relax
       }%
    \@fltovf
  \fi
  \global \setbox\@currbox
    \color@vbox
      \normalcolor
      \vbox \bgroup
        \hsize\columnwidth
        \@parboxrestore
        \@floatboxreset
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\floatpag@@xrotfloat}
%
% rotating.sty v. $>$2.10: 
%    \begin{macrocode}
\def\floatpag@@xrotfloat#1[#2]{%
  \@float{#1}[#2]%
  \thisfloatpagestyle{\@r@f@pagestyle}%
  \begin{lrbox}\rot@float@box
  \begin{minipage}\textheight
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\floatpag@@rotxdblfloat}
%
% rotating.sty v. $>$2.10: 
%    \begin{macrocode}
\def\floatpag@@rotxdblfloat#1[#2]{%
  \@float{#1}[#2]%
  \thisfloatpagestyle{\@r@f@pagestyle}%
  \hsize\textwidth\linewidth\textwidth
  \begin{lrbox}\rot@float@box
  \begin{minipage}\textheight
}
%    \end{macrocode}
% \end{macro}
%
%
%    \begin{macrocode}
\AtBeginDocument{%
  \let\@xrotfloat\floatpag@@xrotfloat
  \let\@rotxdblfloat\floatpag@@rotxdblfloat
  }%
%    \end{macrocode}
%
%
% \begin{macro}{\spec@float}
%
%% "Hook" in the output procedure.
%    \begin{macrocode}
\def\spec@float#1{%
  \@nameuse{\number#1@float}%
  \global\@namedef{\number#1@float}{}%
  }
%    \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
