%%
%% This is file `nag.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% nag.dtx  (with options: `nag')
%% This is a generated file.
%% 
%% This file is part of the `nag' package.
%% The `nag' package has the LPPL maintenance status: maintained.
%% Current Maintainer is Ulrich M. Schwarz, ulmi@absatzen.de
%% 
%% Copyright (C) 2005-8 by Ulrich M. Schwarz.
%% 
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3a 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
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{nag}[2011/11/25 0.7 warning about old commands (ulmi)]
\let\@xa\expandafter
\let\@nx\noexpand
\newcounter{nag@c}
\renewcommand\thenag@c{\roman{nag@c}}%
\setcounter{nag@c}{1}%
\begingroup
  \let\@addtoreset\@gobbletwo
  \newcounter{nag@sins}%
\endgroup
\newcommand\nag@ifundefined[1]{%
  \begingroup
  \@ifundefined{#1}{\endgroup\@firstoftwo}{\endgroup\@secondoftwo}%
}
\newcommand\nag@prepend[2]{%
  \nag@ifundefined{#1}{%
    % if it doesn't exist, don't do anything.
    \PackageInfo{nag}{%
      Command \@backslashchar#1\space not defined, skipping amendment%
    }%
  }{%
    \nag@ifundefined{#1 }{%
      \let\nag@maybespace\@empty
    }{%
      \let\nag@maybespace\space
      %\PackageInfo{nag}{%
      %  Command \@backslashchar#1\space appears robust\MessageBreak
      %  Modifying `\@backslashchar#1\space' instead.
      %}%
    }%
    \@xa\let
    \csname nag@@#1@\thenag@c\@xa\endcsname
    \csname #1\nag@maybespace\endcsname
    \@xa\DeclareRobustCommand\csname nag@@warning@\thenag@c\@xa\endcsname{%
      #2%
    }%
    \@xa\nag@pr@p@nd\csname #1\nag@maybespace\@xa\endcsname
    \csname nag@@#1@\thenag@c\@xa\endcsname
    \csname nag@@warning@\thenag@c\@xa\endcsname
    \stepcounter{nag@c}%
  }%
}
\newcommand\nag@pr@p@nd[3]{%
  \def#1{#3#2}%
}
\DeclareRobustCommand\nag@warn{%
  \addtocounter{nag@sins}{1}%
  \PackageWarning{nag}%
}
\DeclareRobustCommand\nag@warnNoLine{%
  \addtocounter{nag@sins}{1}%
  \PackageWarningNoLine{nag}%
}
\providecommand\PackageInfoNoLine[2]{%
  \PackageInfo{#1}{#2\@gobble}%
}
\DeclareRobustCommand\nag@suggestNoLine[1]{%
  \PackageInfoNoLine{nag}{#1}%
}
\newcommand\ObsoleteCS[3][obsolete]{%
  \AtBeginDocument{%
    \nag@prepend{#2}{%
      \nag@warn{%
Command \@backslashchar#2 is #1.
\MessageBreak
Use #3 instead}%
    }%
  }%
}
\newcommand\ObsoleteEnv[3][obsolete]{%
  \AtBeginDocument{%
    \nag@prepend{#2}{%
      \nag@warn{%
Environment #2 is #1.
\MessageBreak
Use #3 instead}%
    }%
  }%
}
\newcommand\nag@ifcsname[3]{%
  \begingroup\@ifundefined{#1}{#3}{#2}\endgroup
}
\nag@ifcsname{ifcsname}{%
  \renewcommand*\nag@ifcsname[3]{%
    \begingroup
      % assume it won't be there.
      \let\tmp@a\@secondoftwo
      \ifcsname #1\endcsname
    % It still might be relax from some other test. Thanks to J\"org
    % Sommer for finding this bug.
      \expandafter\ifx\csname #1\endcsname\relax
      \else
        % it's there after all
        \let\tmp@a\@firstoftwo
      \fi
    \fi
    \tmp@a{#2}{#3}%
    \endgroup
  }%
  \global\let\nag@ifcsname\nag@ifcsname
}{}
\newcommand\ObsoletePackage[3][obsolete]{%
  \AtEndDocument{%
    \nag@ifcsname{ver@#2.sty}{%
    \nag@warnNoLine{%
      Package #2 is #1.\MessageBreak
      Use #3 instead}%
    }{}%
  }%
}
\newcommand\SuggestedPackage[2][might be useful to you]{%
  \AtEndDocument{%
    \nag@ifcsname{ver@#2.sty}{%
     % Attaboy!
    }{%
    \nag@suggestNoLine{%
      Not loaded: Package #2 #1}%
    }%
  }%
}%
\newcommand\IncompatiblePackages[4][are incompatible]{%
  \AtEndDocument{%
    \nag@ifcsname{ver@#2.sty}{%
      \nag@ifcsname{ver@#3.sty}{%
        \nag@warnNoLine{%
          Packages #2 and #3 #1.\MessageBreak
          #4}%
      }{}%
    }{}
  }%
}%
\newcommand\ObsoleteClass[3][obsolete]{%
  \AtEndDocument{%
    \nag@ifcsname{ver@#2.cls}{%
    \nag@warnNoLine{%
      Class #2 is #1.\MessageBreak
      Use #3 instead}%
    }{}%
  }%
}
\def\nag@quark{\nag@quark}
\ifx\@listfiles\@undefined
  % emulate a silent listfiles
  \def\@listfiles#1\@@{}%
\fi
\newcommand\BadFileLoadOrder[3][This might cause problems]{%
  \AtEndDocument{%
    \nag@ifLoadOrder{#2}{#3}{%
      \nag@warnNoLine{%
        `#3' loaded after `#2'.\MessageBreak
        #1}%
    }%
  }%
}
\def\nag@ifLoadOrder#1#2{%
  \def\nag@tmporder@a ##1#1##2\relax{%
    \ifx\nag@quark##2\nag@quark
      \noexpand\@gobble
    \else
      \nag@tmporder@b ##2,#2\relax
    \fi
  }%
  \def\nag@tmporder@b ##1#2##2\relax{%
    \ifx\nag@quark##2\nag@quark
      \noexpand\@gobble
    \else
      \noexpand\@firstofone
    \fi
  }%
  \@xa\protected@edef\@xa\nag@tmporder\@xa{\@xa\nag@tmporder@a\@filelist,,#1\relax}%
  \nag@tmporder
}
\newif\ifnag@haslabel
\newif\ifnag@hascaption\nag@hascaptiontrue
\newcommand\nag@hackfloat[1]{%
  \nag@prepend{#1}{%
    \global\nag@haslabelfalse\global\nag@hascaptionfalse
  }%
  \nag@prepend{end#1}{%
    \ifnag@hascaption\relax\else
      \nag@warn%
  {#1 with no \protect\caption}%
    \fi
    % labels outside floats shouldn't complain:
    \global\nag@hascaptiontrue
    % (we do this always because it needs to be global)
  }%
}
\AtBeginDocument{%
\g@addto@macro{\@preamblecmds}{%
  \@for\labelprovider:=\nag@labels\do{%
    \ifx\labelprovider\@empty\else
    \nag@prepend{\labelprovider}%
        {\nag@captioncheck\nag@haslabeltrue}%
    \fi
  }%
  \@for\captionprovider:=\nag@captions\do{%
    \ifx\captionprovider\@empty\else
      \nag@prepend{\captionprovider}{\global\nag@hascaptiontrue}%
    \fi
  }%
}%
}
\newcommand\nag@captioncheck{%
  \ifnag@hascaption\else
  \nag@warn{\protect\label\space in float, but not after
    \protect\caption}%
  \fi
}
\def\nag@floats{}
\def\nag@labels{}
\def\nag@captions{}
\newcommand\nag@floatsetup{%
  \@for\flo:=\nag@floats\do{%
    \ifx\flo\@empty\else
      \@xa\nag@hackfloat\@xa{\flo}%
    \fi
  }%
}
\AtBeginDocument{%
  \nag@floatsetup
}
\AtBeginDocument{%
  \AtEndDocument{%
    \ifnum\value{nag@sins}>0%
    \PackageWarningNoLine{nag}{\arabic{nag@sins} complaints
      in total}%
    \else
    \typeout{No complaints by nag.}%
    \fi
  }%
}
\DeclareRobustCommand\nag@ifCurrentEnvironment[3]{%
  \bgroup
  \def\tmp@a{#1}%
  \ifx\@currenvir\tmp@a
    #2%
  \else
    #3%
  \fi
  \egroup
}
\newcommand\NotAnEnvironment[1]{%
  \AtBeginDocument{%
    \nag@prepend{#1}{%
      \nag@ifCurrentEnvironment{#1}{%
        \nag@warn{%
          There is no environment ``#1''.\MessageBreak
          Maybe you want a grouped \@backslashchar#1
        }%
      }{% OK case.
      }%
    }%
  }%
}
\newcommand\nag@envstack{\relax}

\DeclareRobustCommand\nag@beginenv[1]{%
  % push a begin-entry onto the stack. Form is
  % |{\foo{lineno}}| for environment foo.
  \bgroup
    \@xa\toks@\@xa{\nag@envstack}%
    \xdef\nag@envstack{%
    \@nx{%
    \@xa\@nx\csname #1\endcsname
      \@nx{\the\inputlineno\@nx}%
    \@nx}%
    \the\toks@
    }%
  \egroup
}
\DeclareRobustCommand\nag@endenv[1]{%
  % extract the first entry.
  \@xa\nag@end@nv\nag@envstack\@nil #1\@nil
}

\def\nag@end@nv#1#2\@nil #3\@nil{%
  \def\tmp@a{#1}%
  \def\tmp@b{\relax}%
  \ifx\tmp@a\tmp@b
  % This was the end-of-stack flag.
  \nag@warn{``\@backslashchar end#3'' without matching
    ``\@backslashchar #3''}
  \else
    % We may assume this is a proper entry. See if the begin-token on
    % the stack matches what |\nag@endenv| was passed.
    \@xa\ifx\csname #3\@xa\endcsname\@firstoftwo #1%
      %OK case, just pop the entry.
      \gdef\nag@envstack{#2}%
    \else
    % error case
    \nag@warn{%
      You cannot close ``\@xa\string\@firstoftwo #1'' on line
      \@secondoftwo #1 with ``\@backslashchar end#3''%
    }%
    % leave it on the stack. Some case of misnesting will always cause
    % horrible amounts of follow-up errors. Also, scare them!
    \fi
  \fi
}
\AtEndDocument{%
  \@xa\@tfor\@xa\looseends\@xa:\@xa=\nag@envstack\do{%
    \@xa\ifx\looseends\relax\else
      \nag@warnNoLine{Unmatched
        ``\@xa\@xa\@xa\string\@xa\@firstoftwo\looseends''
        command on line
        \@xa\@xa\@xa\string\@xa\@secondoftwo\looseends%
      }%
    \fi
  }%
}
\newcommand\NotASwitch[1]{%
  \AtBeginDocument{%
    \nag@prepend{#1}{%
      \nag@beginenv{#1}%
    }%
    \nag@prepend{end#1}{%
      \nag@endenv{#1}%
    }%
  }%
}
\AtBeginDocument{%
  \nag@ifcsname{ver@subfig.sty}{%
    \PackageInfo{nag}{Attempting subfig hack\@gobble}%
    \nag@maybehacksubfig
  }{%
  }%
}
\def\nag@maybehacksubfig{%
  %
  % of course, i need to touch the single longest definition in
  % subfig.sty, to amend one single command...
  %
  % The definition is taken from subfig.sty 1.3 dated 2005/07/05 by
  % S.D. Chochran, where it is called sf@@@subfloat, and appears here
  % under the conditions of section 6 of the LPPL 1.3. The subfig
  % package is available on a CTAN mirror near you.
  %
  \long\def\nag@@original@@sf@@@subfloat##1[##2][##3]##4{%
    \@ifundefined{FBsc@max}{%
    }{%
      \FB@readaux{\let\FBsuboheight\relax}%
    }%
    \@tempcnta=\@ne
    \if@minipage
      \@tempcnta=\z@
    \else\ifdim \lastskip=\z@ \else
        \@tempcnta=\tw@
    \fi\fi
    \ifmaincaptiontop
      \sf@top=\sf@nearskip
      \sf@bottom=\sf@farskip
    \else
      \sf@top=\sf@farskip
      \sf@bottom=\sf@nearskip
    \fi
    \leavevmode
    \setbox\@tempboxa \hbox{%
      ##4}%
    \@tempdima=\wd\@tempboxa
    \@ifundefined{FBsc@max}{%
    }{%
      \global\advance\Xhsize-\wd\@tempboxa
      \dimen@=\ht\@tempboxa
      \advance\dimen@\dp\@tempboxa
      \ifdim\dimen@>\FBso@max
      \global\FBso@max\dimen@
      \fi
    }%
    \vtop\bgroup
      \vbox\bgroup
        \ifcase\@tempcnta
        \@minipagefalse
        \or
          \vskip\sf@top
        \or
          \ifdim \lastskip=\z@ \else
            \@tempskipb\sf@top\relax\@xaddvskip
          \fi
        \fi
        \sf@ifpositiontop{%
          \ifx \@empty##3\relax \else
            \sf@subcaption{##1}{##2}{##3}%
            \vskip\sf@capskip
            \vskip\sf@captopadj
          \fi\egroup
          \hrule width0pt height0pt depth0pt
          \box\@tempboxa
        }{%
          \@ifundefined{FBsc@max}{%
            \box\@tempboxa
          }{%
            \ifx\FBsuboheight\relax
              \box\@tempboxa
            \else
              \vbox to \FBsuboheight{\FBafil\box\@tempboxa\FBbfil}%
            \fi}%
          \egroup
        \ifx \@empty##3\relax \else
          \vskip\sf@capskip
          \hrule width0pt height0pt depth0pt
          \sf@subcaption{##1}{##2}{##3}%
        \fi
        }%
        \vskip\sf@bottom
      \egroup
      \@ifundefined{FBsc@max}{%
      }{%
        \addtocounter{FRobj}{-1}%
        \ifnum\c@FRobj=0\else
          \subfloatrowsep
        \fi
      }%
      \ifmaincaptiontop\else
        \global\advance\@nameuse{c@\@captype}\m@ne
      \fi
      \endgroup\ignorespaces}%
  %
  \expandafter\ifx\csname sf@@@subfloat\endcsname\nag@@original@@sf@@@subfloat
    % yup, that's it.
    \PackageInfo{nag}{OK, equivalent to subfig 1.3, redefining
      \@backslashchar sf@@@subfloat\@gobble}%
    \global\long\def\sf@@@subfloat##1[##2][##3]##4{%
      \@ifundefined{FBsc@max}{%
    }{%
      \FB@readaux{\let\FBsuboheight\relax}%
    }%
    \@tempcnta=\@ne
    \if@minipage
      \@tempcnta=\z@
    \else\ifdim \lastskip=\z@ \else
        \@tempcnta=\tw@
    \fi\fi
    \ifmaincaptiontop
      \sf@top=\sf@nearskip
      \sf@bottom=\sf@farskip
    \else
      \sf@top=\sf@farskip
      \sf@bottom=\sf@nearskip
    \fi
    \leavevmode
    \setbox\@tempboxa \hbox{%
      %% ulmi: new 2007/02/25: #4 may contain label command
      \csname nag@hascaptiontrue\endcsname
      %% and that was it.
      ##4}%
    \@tempdima=\wd\@tempboxa
    \@ifundefined{FBsc@max}{%
    }{%
      \global\advance\Xhsize-\wd\@tempboxa
      \dimen@=\ht\@tempboxa
      \advance\dimen@\dp\@tempboxa
      \ifdim\dimen@>\FBso@max
      \global\FBso@max\dimen@
      \fi
    }%
    \vtop\bgroup
      %% ulmi: new 2007/05/10: #2, #3 may contain label command
      \csname nag@hascaptiontrue\endcsname
      %% and that was it.
      \vbox\bgroup
        \ifcase\@tempcnta
        \@minipagefalse
        \or
          \vskip\sf@top
        \or
          \ifdim \lastskip=\z@ \else
            \@tempskipb\sf@top\relax\@xaddvskip
          \fi
        \fi
        \sf@ifpositiontop{%
          \ifx \@empty##3\relax \else
            \sf@subcaption{##1}{##2}{##3}%
            \vskip\sf@capskip
            \vskip\sf@captopadj
          \fi\egroup
          \hrule width0pt height0pt depth0pt
          \box\@tempboxa
        }{%
          \@ifundefined{FBsc@max}{%
            \box\@tempboxa
          }{%
            \ifx\FBsuboheight\relax
              \box\@tempboxa
            \else
              \vbox to \FBsuboheight{\FBafil\box\@tempboxa\FBbfil}%
            \fi}%
          \egroup
        \ifx \@empty##3\relax \else
          \vskip\sf@capskip
          \hrule width0pt height0pt depth0pt
          \sf@subcaption{##1}{##2}{##3}%
        \fi
        }%
        \vskip\sf@bottom
      \egroup
      \@ifundefined{FBsc@max}{%
      }{%
        \addtocounter{FRobj}{-1}%
        \ifnum\c@FRobj=0\else
          \subfloatrowsep
        \fi
      }%
      \ifmaincaptiontop\else
        \global\advance\@nameuse{c@\@captype}\m@ne
      \fi
      \endgroup\ignorespaces}%
    \else
        \PackageInfo{nag}{Not redefining sf@@@subfloat, it looks odd\@gobble}
    \fi
}
\newcommand*\NagDeclareFloat[1]{\g@addto@macro\nag@floats{,#1}}
\DeclareOption*{%
  \InputIfFileExists{nag-\CurrentOption.cfg}{%
    \PackageInfo{nag}{%
      Loaded nag-\CurrentOption.cfg
    }
  }{%
    \InputIfFileExists{\CurrentOption.nag}{%
      \PackageWarningNoLine{nag}{%
        Loaded old-style config file \CurrentOption.nag.\MessageBreak
        Consider renaming the file to nag-\CurrentOption.cfg
      }%
    }{%
      \PackageWarningNoLine{nag}{Required ruleset
        \CurrentOption, and it wasn't there}
    }%
  }
}
\ProcessOptions*
%%X Local Variables:
%%X mode: latex
%%X End:
\endinput
%%
%% End of file `nag.sty'.
