%%
%% This is file `totpages.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% totpages.dtx  (with options: `package')
%% 
%% Copyright (c) [2005] by Wilhelm Mueller. All rights reserved.
%% 
%% This file is part of the Totpages package
%% 
%% This program may be redistributed and/or modified under the terms
%% of the LaTeX Project Public License, either version 1.0 of this
%% license, or (at your option) any later version.
%% The latest version of this license is in
%%    CTAN:macros/latex/base/lppl.txt.
%% 
%% The Totpages package contains these files:
%% 
%%       totpages.dtx
%%       totpages.ins
%%       totexmpl.tex
%% 
%% Error Reports in case of UNCHANGED versions to
%% 
%%                         Wilhelm Mueller
%%                         Herbststrasse 66
%%                         D-28215 Bremen
%%                         muewi@ACM.org
%% 
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%% \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         \~}
%%
%% ===================================================================
%%  @LaTeX-style-file{
%%     author          = {Wilhelm M\"uller},
%%     version         = "2.00",
%%     date            = "19 September 2005",
%%     filename        = "totpages.sty",
%%     address         = {Wilhelm M\"uller
%%                        Herbststra\ss{}e 66
%%                        D-28215 Bremen
%%     telephone       = "+49-421-1692525",
%%     email           = "muewi@acm.org",
%%     codetable       = "ISO/ASCII",
%%     keywords        = "LaTeX, pages",
%%     supported       = "yes",
%%     docstring       = "LaTeX package which sets count1 to the total
%%                        number of pages in the document.
%%                        Uses the everyshi and keyval packages."
%%
%%  }
%% ===================================================================
\ProvidesPackage{totpages}
        [2005/09/19 v2.00 Totpages Package (muewi)]
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\RequirePackage{everyshi}[1994/12/09]
\RequirePackage{keyval}[1998/06/05]
\newif\ifTotPagesToDvi\TotPagesToDvitrue
\newif\ifPagesPerSheet\PagesPerSheetfalse
\newcommand{\TotPerSheet}{}
\define@key{Tot}{dvi}[x]{\TotPagesToDvitrue}
\define@key{Tot}{nodvi}[x]{\TotPagesToDvifalse}
\define@key{Tot}{nopagespersheet}[x]{\PagesPerSheetfalse}
\define@key{Tot}{pagespersheet}{%
  \lowercase{\def\Tot@temp{#1}}%
  \ifx\Tot@temp\@empty
  \else
    \def\Tot@no{no}
    \ifx\Tot@temp\Tot@no
    \else
      \edef\TotPerSheet{#1}
      \PagesPerSheettrue
    \fi
  \fi
}
\def\Tot@ptionsWithKV#1{%
  \let\@tempc\relax
  \let\Tot@tempa\@empty
  \def\Tot@tempopt##1=##2=##3\Tot@tempopt{%
    \@ifundefined{KV@#1@##1}%
    {}%
    {%
      \edef\Tot@tempa{\Tot@tempa,\CurrentOption,}%
      \@expandtwoargs\@removeelement\CurrentOption
        \@unusedoptionlist\@unusedoptionlist
    }%
  }%
  \@for\CurrentOption:=\@classoptionslist\do{%
    \expandafter\Tot@tempopt\CurrentOption==\Tot@tempopt
  }%
  \edef\Tot@tempa{%
    \noexpand\setkeys{#1}{%
      \Tot@tempa\@ptionlist{\@currname.\@currext}%
    }%
  }%
  \Tot@tempa
  \let\Tot@no\relax
  \let\Tot@temp\relax
  \let\Tot@tempa\relax
  \let\Tot@tempopt\relax
  \let\Tot@ptionsWithKV\undefined
}
\Tot@ptionsWithKV{Tot}%
\AtEndOfPackage{\let\@unprocessedoptions\relax}
\ifPagesPerSheet
  \ifnum 1 > \TotPerSheet
     \PackageError{totpages}{%
        The number of pages per sheet must be positive.}{%
        You cannot print less than one TeX page per sheet of paper.\MessageBreak
        The option pagespersheet has been disabled.}
     \PagesPerSheetfalse
  \fi
\fi
\ifTotPagesToDvi
  \countdef\c@TotPages=1 \c@TotPages=0
  \let\cl@TotPages\@empty
  \newcommand\theTotPages{\arabic{TotPages}}
\else
  \newcounter{TotPages}
\fi
\let\ifTotPagesToDvi\undefined
\let\TotPagesToDvitrue\undefined
\let\TotPagesToDvifalse\undefined
\EveryShipout{\stepcounter{TotPages}}
\AtBeginDocument{%
  \@ifpackageloaded{count1to}{%
    \PackageError{totpages}{%
      Can't use both, count1to and totpages}{%
      You should read the documentation of these packages and\MessageBreak
      decide which one is more appropriate for your intentions.}
  }{}%
  \@ifpackageloaded{lastpage}{%
    \PackageError{totpages}{%
      Can't use both, lastpage and totpages}{%
      You should read the documentation of these packages and\MessageBreak
      decide which one is more appropriate for your intentions.}
  }{}%
  \ifx\undefined\TotPages@putlabel
    \@ifpackageloaded{hyperref}{%
      \ifx\undefined\Hy@WarningNoLine
        \let\Hy@WarningNoLine\hyper@warn
      \fi
      \ifHy@pageanchor
      \else
        \Hy@WarningNoLine{%
          The \string\ref{TotPages} link will not provide hyperlinks\MessageBreak
          with disabled option `pageanchor'%
        }%
      \fi
      \if@filesw
        \def\TotPages@putlabel{%
          \addtocounter{page}{-1}%
          \begingroup
            \let\@number\@firstofone
            \ifHy@pageanchor
              \ifHy@hypertexnames
                \ifHy@plainpages
                  \def\Hy@temp{\arabic{page}}%
                \else
                  \let\textlatin\@firstofone
                  \edef\Hy@temp{\thepage}%
                \fi
              \else
                \def\Hy@temp{\the\Hy@pagecounter}%
              \fi
            \fi
            \immediate\write\@mainaux{%
              \string\newlabel
                {TotPages}{{\theTotPages}{\thepage}{}{%
                  \ifHy@pageanchor page.\Hy@temp\fi}{}}%
            }%
          \endgroup
          \addtocounter{page}{1}%
        }%
      \fi
    }{%
      \if@filesw
        \def\TotPages@putlabel{%
          \addtocounter{page}{-1}%
          \immediate\write\@mainaux{%
            \string\newlabel{TotPages}{{\theTotPages}{\thepage}}%
          }%
          \addtocounter{page}{1}%
        }%
      \fi
    }%
  \fi
  \ifPagesPerSheet
    \ifx\undefined\TotSheets
      \newcommand{\TotSheets}{0000}
    \fi
    \def\TotPages@putSheets{%
      \addtocounter{TotPages}{\TotPerSheet}
      \addtocounter{TotPages}{-1}
      \divide \value{TotPages} by \TotPerSheet
      \edef\Tot@temp{\arabic{TotPages}}
      \ifx\Tot@temp\TotSheets \else
        \PackageWarning{totpages}{%
          The number of sheets may have changed (\TotSheets => \Tot@temp).\MessageBreak
          You should run your document through the formatter again.}
      \fi
      \if@filesw
        \immediate\write\@mainaux{%
          \string\gdef\string\TotSheets{\Tot@temp}}%
      \fi
    }%
  \else
    \let\TotSheets\undefined
  \fi
  \if@filesw
    \AtEndDocument{%
      \clearpage
      \TotPages@putlabel
    }%
  \fi
  \ifPagesPerSheet
    \AtEndDocument{\TotPages@putSheets}
  \fi
  \let\ifPagesPerSheet\undefined
  \let\PagesPerSheettrue\undefined
  \let\PagesPerSheetfalse\undefined
}
\endinput
%%
%% End of file `totpages.sty'.
