%% %% This is file `moredefs.stq', %% generated with the docstrip utility. %% %% The original source files were: %% %% moredefs.sty %% %% This program is part of the Frankenstein bundle for LaTeX. %% %% Copyright (C) 1995-2001 Matthew Swift %% %% This file may have one of TWO names, either %% moredefs.sty or moredefs.stq. This %% LaTeX package will work ONLY if it is called moredefs.sty %% and placed in a proper directory. This file should have been %% distributed to you with a DIFFERENT file (also) called %% moredefs.sty which functions identically to this one %% but contains documentation in comments. This file works faster, %% but the other should be kept because it contains the documentation %% for this LaTeX package. Files called README and INSTALL should have %% also been distributed to you with this file; see them for more %% information. %% %% This program is free software; you may redistribute it and/or %% modify it under the conditions of the LaTeX Project Public %% License, either version 1.2 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.2 or later is %% part of all distributions of LaTeX version 1999/12/01 or later. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% LaTeX Project Public License for more details. %% %% \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 \~} \def\fileinfo{more defining commands (Frankenstein's brain)} \def\DoXPackageS {} \def\fileversion{v1.8} \def\filedate{2001/08/31} \def\docdate{2001/08/31} \edef\PPOptArg {% \filedate\space \fileversion\space \fileinfo } \makeatletter% A special comment to help create bst files. Don't change! \@ifundefined{JusTLoaDInformatioN} {% }{% ELSE (we know the compsci package is already loaded, too) \UndefineCS\JusTLoaDInformatioN \SaveDoXVarS \eExpand\csname DoXPackageS\endcsname\In {%use \csname in case it's undefined \usepackage{#1}% }% \RestoreDoXVarS \makeatother \endinput }% A special comment to help create bst files. Don't change! \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{moredefs}[\PPOptArg] %% \newcommand*\@ifundefined@cs [1] {% \edef\reserved@a{% \expandafter\@gobble\string #1% }% \@ifundefined\reserved@a \@firstoftwo \@secondoftwo } \newcommand\IfElement{} \def\IfElement #1\In#2{% \@tempswafalse \expandafter \@tfor \expandafter \sc@t@a \expandafter :% \expandafter =#2\do {% \ifx #1\sc@t@a \@tempswatrue \@break@tfor \else \fi }% \if@tempswa \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } \newcommand*\sc@star@nothing{} \newcommand*\sc@star@or@long [1] {% args: defining-command \@ifstar {% \let\l@ngrel@x\relax \def\sc@star@nothing {*}% #1% }{% ELSE \let\l@ngrel@x\long \def\sc@star@nothing {}% #1% }% } \newcommand\md@check@star {% \@ifstar {% \def\sc@star@nothing {*}% }{% ELSE \let\sc@star@nothing \ShortEmpty }% } \newcommand\requirecommand {% \sc@star@or@long\require@command } \newcommand\require@command [1] {% args: \csname \@ifundefined@cs{#1} {% \expandafter\newcommand\sc@star@nothing }{% ELSE \expandafter\CheckCommand\sc@star@nothing }% {#1}% } \newcommand\InitCS {% \@star@or@long\Init@CS } \newcommand\Init@CS [1] {% args: \csname \l@ngrel@x\def#1{}% } \newcommand\InitName {% \sc@star@or@long\Init@Name } \newcommand\Init@Name [1] {% args: csname \expandafter\DefName\sc@star@nothing{#1}{}{}% } \newcommand\ReserveCS {% \sc@star@or@long\Reserve@CS } \newcommand\Reserve@CS [1] {% args: \csname \expandafter\newcommand\sc@star@nothing{#1} {}% } \newcommand\ReserveName {% \sc@star@or@long\Reserve@Name } \newcommand\Reserve@Name [1] {% args: csname \expandafter\NewName\sc@star@nothing{#1}{} {}% } \InitCS*\ShortEmpty \InitCS\LongEmpty \ReserveCS\sc@t@a \ReserveCS\sc@t@b \ReserveCS\sc@t@c \ReserveCS\sc@t@d \ReserveCS\sc@t@e \ReserveCS\sc@t@f \ReserveCS\sc@t@g \newcommand\newtokens [1] {% args: \csname \@ifdefinable #1 {% \@nameuse{newtoks}#1% }% } \newcommand*\newlet [2] {% args: \csname-a \csname-b \@ifdefinable #1 {% \let #1#2% }% } \newcommand*\providetokens [1] {% args: \csname \@ifundefined@cs{#1} {% \@nameuse{newtokens}#1% }{% ELSE \FrankenInfo{moredefs}{\protect\providetokens\space is not reallocating token variable \protect#1.\MessageBreak The existing contents are [\the#1]}% }% } \newcommand*\providelength [1] {% args: \csname \@ifundefined@cs{#1} {% \newlength{#1}% }{% ELSE \FrankenInfo{moredefs}{\protect\providelength\space is not reallocating \protect#1.\MessageBreak The existing value is [\the#1]}% }% } \newcommand*\providesavebox [1] {% args: \csname \@ifundefined@cs{#1} {% \newsavebox{#1}% }{% ELSE \FrankenInfo{moredefs}{\protect\providesavebox\space is not reallocating box \protect#1.}% }% } \newcommand*\providecounter [1] {% args: string \@ifundefined{c@#1} {% \newcounter{#1}% }{% ELSE \FrankenInfo{moredefs}{\protect\providecounter\space is not reallocating counter #1.\MessageBreak The existing value is [\expandafter\number\csname c@#1\endcsname]}% }% } \requirecommand*\newboolean [1] {% args: string \expandafter \@ifdefinable\csname if#1\endcsname {% \expandafter\newif\csname if#1\endcsname }% } \@ifpackageloaded{ifthen} {% }{% ELSE \requirecommand*\provideboolean [1] {% args: string \@ifundefined {if#1} {% \newboolean{#1}% }{% ELSE \FrankenInfo{moredefs}{\protect\provideboolean\space is not reallocating \protect#1.\MessageBreak The value is [\@nameuse{if#1}TRUE\else FALSE\fi]}% }% }% } \newtokens\sc@toks@a \newtokens\sc@toks@b \newcommand\addto@macro [2] {% \sc@toks@a=\expandafter{#1#2}% \edef#1{% \the\sc@toks@a }% } \newcommand\lg@addto@macro [2] {% \sc@toks@a=\expandafter{#1#2}% \long\xdef#1{% \the\sc@toks@a }% } \newcommand\prependto@macro [2] {% \sc@toks@a={#2}% \sc@toks@b=\expandafter{#1}% \edef#1{% \the\sc@toks@a\the\sc@toks@b }% } \newcommand\g@prependto@macro [2] {% \sc@toks@a={#2}% \sc@toks@b=\expandafter{#1}% \xdef#1{% \the\sc@toks@a\the\sc@toks@b }% } \newcommand\lg@prependto@macro [2] {% \sc@toks@a={#2}% \sc@toks@b=\expandafter{#1}% \long\xdef#1{% \the\sc@toks@a\the\sc@toks@b }% } \newcommand\UndefineCS [1] {% args: \csname \let#1\@undefined } \newcommand\UndefineName [1] {% args: csname \expandafter\let\csname#1\endcsname\@undefined } \newcommand\defcommand {% \@star@or@long\def@command } \newcommand\def@command {% \let\@ifdefinable\@rc@ifdefinable \new@command } \newcommand\DefName {% \@star@or@long\def@name } \newcommand\def@name [3] {% args: arglist csname body \sc@global\l@ngrel@x\@namedef{#1}#2{#3}% } \newcommand\NewName {% \@star@or@long\new@name } \newcommand\new@name [3] {% args: arglist csname body \@ifundefined{#1} {% \sc@global\l@ngrel@x\@namedef{#1}#2{#3}% }{% ELSE \defcommand\reserved@a {% #1% }% \@notdefinable }% } \newcommand\sc@global {% \relax } \newcommand\Global {% \def\sc@global {% \global\let\sc@global\relax\global }% } \newcommand\CheckName {% \@star@or@long\check@name } \newcommand\check@name [3] {% args: arglist csname body \expandafter\DefName\sc@star@nothing{reserved@a}{#2}{#3}% \expandafter\@check@eq\csname #1\endcsname\reserved@a } \newcommand\RequireName {% \sc@star@or@long\require@name } \newcommand\require@name [3] {% args: arglist csname body \@ifundefined{#1} {% \expandafter\DefName\sc@star@nothing{#1}{#2}{#3}% }{% ELSE \expandafter \expandafter \expandafter \CheckName \expandafter \sc@star@nothing \csname #1\endcsname {#2}{#3}% }% } \newcommand\NewTextFontCommand [2] {% args: \csname font-command \NewRobustCommand#1[1]{% \ifmmode \nfss@text{#2##1}% \else \leavevmode {\text@command{##1}% #2\check@icl ##1\check@icr \expandafter}% \fi }% } \newcommand\NewRobustCommand {% \@star@or@long\new@robustcommand } \newcommand\new@robustcommand [1] {% \let\sc@t@a\relax \@ifdefinable #1 {% \def\sc@t@a {% \new@@robustcommand #1% }% }% \sc@t@a } \newcommand\new@@robustcommand [1] {% \edef\reserved@a {\string#1}% \def\reserved@b {#1}% \edef\reserved@b {% \expandafter\strip@prefix\meaning\reserved@b }% \edef#1{% \ifx\reserved@a\reserved@b \noexpand\x@protect \noexpand#1% \fi \noexpand\protect \expandafter\noexpand\csname \expandafter\@gobble\string#1 \endcsname }% \let\@ifdefinable\@rc@ifdefinable \expandafter\new@command\csname \expandafter\@gobble\string#1 \endcsname } \newcommand\Elet {% \expandafter\let\expandafter } \newcommand*\EElet {% \expandafter\expandafter\expandafter\let\expandafter\expandafter } \newcommand\NewUserInfo {% \sc@star@or@long\new@userinfo } \newcommand*\new@userinfo [2][] {% args: [\csname] \csname \expandafter\ReserveCS\sc@star@nothing{#2}% \def\sc@t@b {#1}% \ifx\sc@t@b\ShortEmpty \edef\sc@t@a {% \edef\noexpand\sc@t@b{% \E@cdr\string#2\@nil }% }% \lowercase\expandafter{\sc@t@a}% \else \edef\sc@t@b {\E@cdr\string#1\@nil}% \fi \edef\sc@t@a {% \noexpand\NewName\sc@star@nothing{\sc@t@b}{####1} {\noexpand\renewcommand\sc@star@nothing\noexpand#2{####1}} }% \sc@t@a } \newcommand\SaveCS [1] {% args: \csname \expandafter\newlet\csname MDSaved\E@cdr\string#1\@nil\endcsname#1% } \newcommand\RestoreCS [1] {% args: \csname \Elet#1\csname MDSaved\E@cdr\string#1\@nil\endcsname \UndefineName{MDSaved\E@cdr\string#1\@nil}% } \newcommand\SaveName [1] {% args: csname \ReserveName{MDSaved#1}% \EElet\csname MDSaved#1\endcsname \csname #1\endcsname } \newcommand\RestoreName [1] {% args: csname \EElet\csname #1\endcsname \csname MDSaved#1\endcsname \UndefineName{MDSaved#1}% } \newcommand\eExpand {% \sc@star@or@long\sc@eExpand } \NewName{sc@eExpand} {#1\In#2} {% args: object body \l@ngrel@x\edef\sc@t@a{#1}% \expandafter\defcommand\sc@star@nothing\sc@t@b [1] {#2}% \expandafter \sc@t@b \expandafter {\sc@t@a}% } \newcommand\EExpand {% \sc@star@or@long\sc@EExpand } \NewName{sc@EExpand}{#1\In#2} {% args: object body \let\sc@t@c\sc@star@nothing \expandafter \expandafter \expandafter \defcommand \expandafter \sc@t@c \expandafter \sc@t@a \expandafter {#1}% \expandafter\defcommand\sc@t@c\sc@t@b [1] {#2}% \expandafter\sc@t@b \expandafter{\sc@t@a}% } \newcommand\eExecute {% \sc@star@or@long\sc@eExecute } \newcommand\sc@eExecute [1] {% args: body \l@ngrel@x\edef\sc@t@a {#1}% \sc@t@a } \NewName{E@cdr} {#1\@nil} {% \expandafter\@cdr #1\@nil } \NewName{E@car} {#1\@nil} {% \expandafter\@car #1\@nil } \newlet\Gobble\@gobble \newlet\GobbleM\@gobble \newcommand\GobbleO {% \@ifnextchar [ \sc@gobbleO \relax } \newlet\GobbleMM\@gobbletwo \newcommand\GobbleOM {% \@ifnextchar [ \sc@gobbleOM \Gobble } \newcommand\GobbleMO [1] {% \@ifnextchar [ \sc@gobbleO \relax } \NewName{sc@gobbleOM} {[#1]#2} {} \NewName{sc@gobbleO} {[#1]} {} \newcommand\DeclareBooleanOptions [2] {% args: on off \newboolean{@#1@}% \DeclareOption{#1} {% \@nameuse{@#1@true} }% \DeclareOption{#2} {% \@nameuse{@#1@false} }% } \newcommand\DeclareBooleanUserOptions [2] {% args: on off \DeclareBooleanOptions{#1}{#2}% \ReserveName{#1}% \ReserveName{#2}% \EElet \csname#1\endcsname\csname @#1@true\endcsname \EElet \csname#2\endcsname\csname @#1@false\endcsname } \newcommand\ToggleBoolean [1] {% arg: boolean \csname if#1\endcsname \sc@global\csname #1false\endcsname \else \sc@global\csname #1true\endcsname \fi } \newcommand*\VerboseErrors [1][\@M] {% args: [number] \c@errorcontextlines #1% \showboxbreadth #1% \showboxdepth #1% } \newcommand*\GVerboseErrors [1][\@M] {% args: [number] \global\c@errorcontextlines #1% \global\showboxbreadth #1% \global\showboxdepth #1% } \ReserveCS\md@maybe@global \newcommand*\Debug {% \let\md@maybe@global\relax \md@debug } \newcommand*\GDebug {% \let\md@maybe@global\global \md@debug } \newcommand*\md@debug [1] {% args: debug-level \ifnum #1 > 0% \let\sc@t@a\@M \md@maybe@global\def\DTypeout ##1{% \typeout{##1}% }% \md@maybe@global\def\DGobbleM ##1{% \typeout{DGobbleM: [##1]}% }% \ifnum #1 > 1% \md@maybe@global\def\DDTypeout ##1{% \typeout{##1}% }% \ifnum #1 > 2% \md@maybe@global\def\DDDTypeout ##1{% \typeout{##1}% }% \fi \fi \else \let\sc@t@a\m@ne \md@maybe@global\let\DTypeout\GobbleM \md@maybe@global\let\DDTypeout\GobbleM \md@maybe@global\let\DDDTypeout\GobbleM \md@maybe@global\let\DGobbleM\GobbleM \fi \md@maybe@global\tracingoutput#1 % \md@maybe@global\tracingpages#1 % \md@maybe@global\tracingmacros#1 % \md@maybe@global\tracingcommands#1 % \ifx\md@maybe@global\relax \VerboseErrors[\sc@t@a]% \typeout{++++ Debugging [#1]\on@line}% \else \GVerboseErrors[\sc@t@a]% \typeout{++++ Global debugging [#1]\on@line}% \fi } \newlet\DTypeout\GobbleM \newlet\DDTypeout\GobbleM \newlet\DDDTypeout\GobbleM \newlet\DGobbleM\GobbleM \newcommand\FrankenWarning [2] {% args: package warning \GenericWarning % continuation message {(#1)\@spaces\@spaces\@spaces\@spaces\@spaces} {Frankenstein (#1) WARNING: #2}% } \newcommand\FrankenError [3] {% args: package error-message help-text \GenericError % args: continuation message where-help what-help {(#1)\@spaces\@spaces\@spaces\@spaces\@spaces} {Frankenstein (#1) error: #2} {See the documenation for the #1 package for more information.} {#3}% } \newcommand\FrankenInfo [2] {% args: package info \GenericInfo % continuation message {(#1)\@spaces\@spaces\@spaces\@spaces\@spaces} {Frankenstein (#1) says: #2}% } \endinput %% %% End of file `moredefs.stq'.