From 8fe42a1ed6634a816e74e6ad05b4c891fcc28b1d Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 25 Mar 2007 21:27:48 +0000 Subject: nag update, including nag.sty in runtime (dak mail 23mar07) git-svn-id: svn://tug.org/texlive/trunk@4083 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/nag/nag.sty | 461 ++++++++++++++++++++++++++++++++ 1 file changed, 461 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/nag/nag.sty (limited to 'Master/texmf-dist/tex/latex/nag') diff --git a/Master/texmf-dist/tex/latex/nag/nag.sty b/Master/texmf-dist/tex/latex/nag/nag.sty new file mode 100644 index 00000000000..302638cf3a3 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nag/nag.sty @@ -0,0 +1,461 @@ +%% +%% 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@users.sarovar.org +%% +%% Copyright (C) 2005, 2006 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}[2007/03/20 0.53 warning about old commands (ulmi)] +\let\@xa\expandafter +\let\@nx\noexpand +\newcounter{nag@c} +\newcounter{nag@sins} +\newcommand\nag@prepend[2]{% + \@ifundefined{#1}{% + % if it doesn't exist, don't do anything. + \PackageInfo{nag}{% + Command \@backslashchar#1\space not defined, skipping amendment + } + }{% + \@xa\let + \csname nag@@#1@\thenag@c\@xa\endcsname + \csname #1\endcsname + \@xa\nag@pr@p@nd\csname #1\@xa\endcsname + \csname nag@@#1@\thenag@c\endcsname{#2}% + \stepcounter{nag@c}% + } +} +\newcommand\nag@pr@p@nd[3]{% + \def#1{#3#2}% +} +\newcommand\nag@warn{% + \addtocounter{nag@sins}{1}% + \PackageWarning{nag}% +} +\newcommand\nag@warnNoLine{% + \addtocounter{nag@sins}{1}% + \PackageWarningNoLine{nag}% +} +\newcommand\ObsoleteCS[3][obsolete]{% + \AtBeginDocument{% + \nag@prepend{#2}{% + \nag@warn{% +Command \@backslashchar#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\ObsoleteClass[3][obsolete]{% + \AtEndDocument{% + \nag@ifcsname{ver@#2.cls}{% + \nag@warnNoLine{% + Class #2 is #1.\MessageBreak + Use #3 instead}% + }{}% + }% +} +\newif\ifnag@haslabel +\newif\ifnag@hascaption +\newcommand\nag@hackfloat[1]{% + \nag@prepend{#1}{% + \nag@prepend{endcenter}{% + \nag@warn% + {\lq center\rq\space environment in #1.\MessageBreak + Maybe you want \protect\centering\space instead} + }% + } + \nag@prepend{#1}{% + \@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 + }% + \global\nag@haslabelfalse\global\nag@hascaptionfalse + }% + \nag@prepend{end#1}{% + \ifnag@hascaption\relax\else + \nag@warn% +{#1 with no \protect\caption}% + \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. + \xdef\nag@envstack{% + \@nx{% + \@xa\@nx\csname #1\endcsname + \@nx{\the\inputlineno\@nx}% + \@nx}% + \@xa\@nx\nag@envstack + }% +} +\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 + \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'. -- cgit v1.2.3