%% %% 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. %% This file should have been distributed with the source listed above. %% %% Copyright (C) 1995 Matthew Swift %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% 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 %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; if not, write to the Free Software %% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. %% %% \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\fileversion{v1.01} \def\filedate{1996/03/25} \def\docdate{1996/03/25} \edef\PPOptArg {% \filedate\space \fileversion\space \fileinfo } \makeatletter \@ifundefined{JuStLoAdInFoRmAtIoN} {% }{% \@ifundefined{DoXNeeDME} {% }{% \usepackage{moredefs}% } \makeatother \endinput } \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{moredefs}[\PPOptArg] %% \newcommand*\@ifundefined@cs [1] {% \edef\reserved@a{% \expandafter\@gobble\string #1% }% \@ifundefined\reserved@a \@firstoftwo \@secondoftwo } \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\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 [1] {% args: \csname \newcommand{#1} {}% } \newcommand\ReserveName [1] {% args: csname \NewName{#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 \MonsterInfo{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 \MonsterInfo{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 \MonsterInfo{moredefs}{\protect\providesavebox\space is not reallocating box \protect#1.}% }% } \newcommand*\providecounter [1] {% args: string \@ifundefined{c@#1} {% \newcounter{#1}% }{% ELSE \MonsterInfo{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 \csname newif\expandafter\endcsname\csname if#1\endcsname } \newcommand*\provideboolean [1] {% args: string \@ifundefined {if#1} {% \newboolean{#1}% }{% ELSE \MonsterInfo{moredefs}{\protect\provideboolean\space is not reallocating \protect#1.\MessageBreak The value is [\@nameuse{if#1}TRUE\else FALSE\fi]}% }% } \newtokens\sc@toks@a \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=\expandafter{#1#2}% \edef#1{% \the\sc@toks@a }% } \newcommand\g@prependto@macro [2] {% \sc@toks@a=\expandafter{#1#2}% \global\edef#1{% \the\sc@toks@a }% } \newcommand\lg@prependto@macro [2] {% \sc@toks@a=\expandafter{#1#2}% \long\xdef#1{% \the\sc@toks@a }% } \newcommand\Undefine [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 \ReserveCS{#1}% \DeclareTextFontCommand{#1}{#2}% } \newcommand\NewRobustCommand {% \@star@or@long\new@robustcommand } \newcommand\new@robustcommand [1] {% \InitCS\sc@t@a \@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][] {% \expandafter\InitCS\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\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[1] {% args: body \eExpand#1\In{##1}% } \NewName{E@cdr} {#1\@nil} {% \expandafter\@cdr #1\@nil } \NewName{E@car} {#1\@nil} {% \expandafter\@car #1\@nil } \newlet\Gobble\@gobble \newlet\GobbleM\@gobble \NewName{GobbleO} {[#1]} {} \newlet\GobbleMM\@gobbletwo \newcommand\GobbleOM {% \@ifnextchar [ \sc@gobbleOM \Gobble } \NewName{sc@gobbleOM} {[#1]#2} {} \newcommand\GobbleMO [1] {% \@ifnextchar [ \GobbleO {}% } \newcommand*\VerboseErrors [1][\@M] {% args: [number] \c@errorcontextlines #1% \showboxbreadth #1% \showboxdepth #1% } \newcommand*\Debug[1] {% args: debug-level \ifnum #1 > 0% \let\sc@t@a\@M \else \let\sc@t@a\m@ne \fi \VerboseErrors[\sc@t@a]% \tracingoutput#1 % \tracingpages#1 % \tracingmacros#1 % \tracingcommands#1 % \typeout{++++ Debugging [#1] \on@line}% } \newcommand\MonsterWarning [2] {% args: package warning \GenericWarning % continuation message {(#1)\@spaces\@spaces\@spaces\@spaces\@spaces} {Frankenstein (#1) WARNING: #2}% } \newcommand\MonsterError [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\MonsterInfo [2] {% args: package info \GenericInfo % continuation message {(#1)\@spaces\@spaces\@spaces\@spaces\@spaces} {Frankenstein (#1) says: #2}% } \endinput %% %% End of file `moredefs.stq'.