% MACROS PSIZZL - macros for use with Psizzl % % begin rewrite of PLAIN macros % end rewrite of PLAIN macros \hyphenation{mac-ro}% \catcode`\@=11 \chardef\l@tter=11 \chardef\@oline=5 \chardef\@ther=12 \chardef\c@ntrol=00 % unlock macro names with @ key \def\unlock{\catcode`\@=\l@tter}% @ character can be used in macro names % lock up the macros \def\lock{\catcode`\@=\@ther}% macros using this character are now locked % \def\c@tAactive{\catcode`\&=\active}% \def\c@tAalign{\catcode`\&=4}{\c@tAalign\gdef\h@tAalign{&}}% {\c@tAactive\gdef\l@tAalign{\let&\h@tAalign}}% \def\c@tAset{\c@tAactive\ifnum\c@tAactive\l@tAalign\fi}% % \def\c@tMother{\catcode`\^^M=\@ther}% \def\c@tMeoline{\catcode`\^^M=\@oline}% \def\c@tMactive{\catcode`\^^M=\active}% {\c@tMactive% \gdef\l@tMother{\let ^^M=\h@tMother}% \gdef\l@tMspace{\let ^^M=\space}% \gdef\h@tMactive{^^M}% }% {\c@tMother\gdef\h@tMother{^^M}}% \newlinechar`\^^M % \def\c@tVset{\ifnum\catcode`|=\active\l@tVother\fi}% \def\c@tVcontrol{\catcode`|=\c@ntrol}% \def\c@tVactive{\catcode`|=\active}% \def\c@tVother{\catcode`|=\@ther}% {\c@tVother\gdef\h@tVother{|}}% {\c@tVactive\gdef\l@tVother{\let|\h@tVother}\gdef\l@tVzero{\let|=0}}% % {\catcode`\%=\@ther\gdef\percent{%}}% \def\c@tBother{\catcode`\\=\@ther}% \def\c@tBactive{\catcode`\\=\active}% \def\c@tBcontrol{\catcode`\\=\c@ntrol}% \def\c@tLQactive{\catcode`\`=\active}% \def\c@tCactive{\catcode`\^=\active}% {\c@tCactive\gdef\l@tCzero{\let^=0}}% {% \outer plaintex macros not to be recognized during a \write \let\settabs=0\let\+=0\let\beginsection=0\let\proclaim=0\let\bye=0% \gdef\l@tplain{% all \outer and all that use \ifmmode \let\settabs=0\let\+=0\let\beginsection=0\let\proclaim=0\let\bye=0% \let~=0\let\footnote0% \let\strut0\let\dots0\let\ph@nt0\let\smash0% }% }% \def\l@twrite{\l@tplain\let\underscore=0}% % \def\Psizzl{% P% \kern-.30em\lower.70ex\hbox{s}% \kern-.08em\lower.0 ex\hbox{i}% \kern-.05em\lower.0 ex\hbox{z}% \kern-.17em\lower.5 ex\hbox{z}% \kern-.09em\lower.2 ex\hbox{l}% }% \def\fmtreset{}\def\fmtuser{my\fmtname\relax}% \def\fmtjob{% \CMS{CP SMSG GJMSINK PSIZZLLL \fmtversion\space\jobname}% \message{This is \fmtname, Version \fmtversion}% \fmtreset \input\fmtuser }% \everyjob={\fmtjob}% % % cute and otherwise desirable-to-have macros % \newif\iftemp % scratch if macro \newcount\tempcount% scratch count register \def\diagnostics{% %\tracingonline\@ne \tracingcommands\tw@\tracingstats\tw@ \tracingpages\@ne %\tracingoutput\@ne\tracinglostchars\@ne \tracingmacros\@ne\tracingparagraphs\@ne %\tracingrestores\@ne %\showboxbreadth\maxdimen\showboxdepth\maxdimen %\errorstopmode }% \def\adddef#1#2{% \toks\z@=\expandafter{#1}\toks\@ne={#2}% \xdef#1{\the\toks\z@\the\toks\@ne}% }% \def\logit#1{\immediate\write-1{\meaning#1}}% % \def\endp@ge{\par \vfill \eject}% \def\endle@f{\endp@ge\ifodd\pageno\else\hrule height\z@\endp@ge\fi}% \let\endpage\endp@ge\let\endleaf\endp@ge % \def\underscore#1{$\underline{\smash{\hbox{#1}}}$}% % \def\leaderfil{\leaders\hbox to 2em{\hss.\hss}\hfil}% % \def\centertitle#1{\par\noindent\hfil #1\hfil\par}% center text % \def\breaktitle{\hfil\par\noindent\hfil}% break text % \def\d@te{\the\day\tie\monthword\tie\the\year}% \def\monthdayyear{% alternate date format \gdef\d@te{\monthword\tie\the\day,\tie\the\year}% }% \def\date#1{\gdef\d@te{#1}}% \def\thedate{\d@te}% \chardef\vx@=60\newcount\hour\newcount\minute \def\fildec#1{\ifnum#1<10 0\fi\the#1}% \def\thetime{% \thetime -> 09:36 e.g.: `This job was run at \thetime.' \hour\time\divide\hour\vx@ \minute-\hour\multiply\minute\vx@\advance\minute\time \fildec\hour:\fildec\minute }% \def\bumpcount#1{% \ifnum#1<\z@\let\temp\m@ne\else\let\temp\@ne\fi \global\advance#1\temp }% \def\numorroman#1{% \ifnum#1<\z@\romannumeral-#1\else\number#1\fi }% \def\lapcomma{\llap{,}}% % characters and things % % macro to assist in breaking paragraphs, use in place of \par, or % blank line, terminating the paragraph in question. \def\padline#1{\line{\ #1\ }}% \def\thinhrule{\hrule height.4pt}% \def\thinvrule{\vrule width .4pt}% \def\loosepar{{\tolerance1000\par}}% \def\noraggedright{\rightskip\z@skip\spaceskip\z@skip\xspaceskip\z@skip}% \def\p@int{.}% \def\d@sh{--}% \def\hidenull#1{\setbox\z@=\vbox{#1}\ifdim\ht\z@=\z@\else#1\endline\fi}% \def\translate#1#2#3{%\translate{}{}{thing} \vbox to\z@{\offinterlineskip \kern-#2\hbox to\z@{\kern#1{#3}\hss}\vss }% }% % macros for the \CMS command: \write 15 \chardef\fift@@n=15 \global\chardef\CMSwrite=\fift@@n \wlog{\string\CMSwrite=\string\write\fift@@n}% \outer\def\newwrite{\alloc@7\write\chardef\fift@@n}% \def\CMS{\immediate\write\CMSwrite}% % macros to flag superseded commands \def\supercede#1#2{% \def#1{% \toks@\expandafter{\csname Instead of \string#1, you should use \string#2. \go@on \endcsname}% \errhelp\toks@ \errmessage{Psizzl: \string#1 has been superseded by \string#2}#2% }% }% \def\go@on{% Before you run this job again, please change your TeX source file. Do `CONSPIRE CHECK TEX' to see the new command syntax. This is just a warning: you may continue processing by giving a . }% % following macros flag superseded commands \supercede\memotopic\memosubject \supercede\group\memohead \def\sample#1{{\let\end\relax\input #1 \endpage}\listfile{#1}}%