summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/plain/tugboat/tugboat.cmn
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/plain/tugboat/tugboat.cmn')
-rw-r--r--Master/texmf-dist/tex/plain/tugboat/tugboat.cmn1070
1 files changed, 1070 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/tugboat/tugboat.cmn b/Master/texmf-dist/tex/plain/tugboat/tugboat.cmn
new file mode 100644
index 00000000000..e8b7b771cae
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/tugboat/tugboat.cmn
@@ -0,0 +1,1070 @@
+%% @latexfile{
+%% filename = "tugboat.cmn",
+%% version = "1.14",
+%% date = "2004/07/12",
+%% time = "13:43:50 EDT",
+%% checksum = "02352 1070 2988 34579",
+%% filetype = "common macros for TUGboat",
+%% copyright = "Copyright (C) TeX Users Group.
+%% Copying of this file is authorized only if either:
+%% (1) you make absolutely no changes to your copy, OR
+%% (2) if you do make changes, you first rename it to some
+%% other name.",
+%% author = "TeX Users Group",
+%% address = "TeX Users Group,
+%% P.O.Box 2311,
+%% Portland, OR 97208-2311,
+%% USA",
+%% telephone = "415-982-8449",
+%% FAX = "415-982-8559",
+%% email = "TUGboat@tug.org",
+%% codetable = "ISO/ASCII",
+%% keywords = "tex users group, tugboat, common macros",
+%% abstract = "This file contains macros common to both
+%% the PLAIN and LaTeX style files for TUGboat,
+%% the Communications of the TeX Users Group.
+%% Among other things, it contains supplementary
+%% definitions for abbreviations and logos that
+%% appear in TUGboat.",
+%% docstring = "The checksum field above contains a CRC-16
+%% checksum as the first value, followed by the
+%% equivalent of the standard UNIX wc (word
+%% count) utility output of lines, words, and
+%% characters. This is produced by Robert
+%% Solovay's checksum utility.",
+%% }
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\fileversion{v1.14}
+\def\filedate{2004/07/12}
+
+\message{File `TUGBOAT.CMN' \fileversion \space\space <\filedate>}
+
+%
+% ***** TUGBOAT.CMN *****
+%
+% See the bottom of the file (after \endinput) for a list of
+% items defined.
+%
+
+% *************************************************************************
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% ***** helpful shorthand *****
+%
+
+% The following allow for easier changes of category. These require that
+% the character be addressed as a control-sequence: e.g. \makeescape\/ will
+% make the / an escape character.
+
+\def\makeescape#1{\catcode`#1=0 }
+\def\makebgroup#1{\catcode`#1=1 }
+\def\makeegroup#1{\catcode`#1=2 }
+\def\makemath#1{\catcode`#1=3 }
+\def\makealign#1{\catcode`#1=4 }
+\def\makeeol#1{\catcode`#1=5 }
+\def\makeparm#1{\catcode`#1=6 }
+\def\makesup#1{\catcode`#1=7 }
+\def\makesub#1{\catcode`#1=8 }
+\def\makeignore#1{\catcode`#1=9 }
+\def\makespace#1{\catcode`#1=10 }
+\def\makeletter#1{\catcode`#1=11 }
+\def\makeother#1{\catcode`#1=12 }
+\def\makeactive#1{\catcode`#1=13 }
+\def\makecomment#1{\catcode`#1=14 }
+
+\def\makeatletter{\catcode`\@=11 } % included for historical reasons
+\chardef\other=12
+\def\makeatother{\catcode`\@=\other}
+
+ % alternative to localization
+\def\savecat#1{%
+ \expandafter\xdef\csname\string#1savedcat\endcsname{\the\catcode`#1}}
+\def\restorecat#1{\catcode`#1=\csname\string#1savedcat\endcsname}
+
+
+\savecat\@
+\makeletter\@ % used, as in PLAIN, in protected control sequences
+
+ % for restoring meanings of global control sequences
+\def\SaveCS#1{%
+ \def\scratch{\expandafter\let\csname saved@@#1\endcsname}%
+ \expandafter\scratch\csname#1\endcsname}
+\def\RestoreCS#1{%
+ \def\scratch{\expandafter\let\csname#1\endcsname}%
+ \expandafter\scratch\csname saved@@#1\endcsname}
+
+
+% To distinguish between macro files loaded
+
+\def\plaintubstyle{plain}
+\def\latextubstyle{latex}
+\ifx\tugstyloaded@\undefined\let\tugstyloaded@\plaintubstyle\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% ***** abbreviations and logos *****
+%
+
+\def\acro#1{{\SMC #1}\spacefactor1000 }
+
+\def\AllTeX{(\La)\TeX}
+
+\def\AMS{American Mathematical Society}
+
+\def\AmS{{\the\textfont2 A}\kern-.1667em\lower.5ex\hbox
+ {\the\textfont2 M}\kern-.125em{\the\textfont2 S}}
+\def\AmSLaTeX{\AmS-\LaTeX}
+\def\AmSTeX{\AmS-\TeX}
+
+\def\aw{A\kern.1em-W}
+\def\AW{Addison\kern.1em-\penalty\z@\hskip\z@skip Wesley}
+
+\def\BibTeX{{\rm B\kern-.05em{\smc i\kern-.025emb}\kern-.08em\TeX}}
+
+\def\CandT{{\sl Computers \& Typesetting}}
+\def\ConTeXt{C\kern-.0333emon\-\kern-.0667em\TeX\kern-.0333emt}
+\def\CTAN{\acro{CTAN}}
+
+\def\DVItoVDU{DVIto\kern-.12em VDU}
+
+\def\eTeX{$\varepsilon$-\kern-.125em\TeX}
+
+\def\Hawaii{Hawai`i}
+\def\HTML{\acro{HTML}}
+
+\def\ISBN{\acro{ISBN} }
+\def\ISSN{\acro{ISSN} }
+
+% Japanese TeX
+\def\JTeX{\leavevmode\hbox{\lower.5ex\hbox{J}\kern-.18em\TeX}}
+
+\def\JoT{{\sl The Joy of \TeX}}
+
+\def\LAMSTeX{L\raise.42ex\hbox{\kern-.3em\the\scriptfont2 A}%
+ \kern-.2em\lower.376ex\hbox{\the\textfont2 M}\kern-.125em
+ {\the\textfont2 S}-\TeX}
+
+% note -- \LaTeX definition is from LATEX.TEX 2.09 of 7 Jan 86,
+% adapted for additional flexibility in TUGboat
+%\def\LaTeX{\TestCount=\the\fam \leavevmode L\raise.42ex
+% \hbox{$\fam\TestCount\scriptstyle\kern-.3em A$}\kern-.15em\TeX}
+% note -- broken in two parts, to permit separate use of La,
+% as in (La)TeX
+\def\La{\TestCount=\the\fam \leavevmode L%
+ \setbox\TestBox=\hbox{$\fam\TestCount\scriptstyle A$}%
+ \kern-.5\wd\TestBox\raise.42ex\box\TestBox}
+\def\LaTeX{\La\kern-.15em\TeX}
+\def\LaTeXe{\LaTeX{}\kern.05em2$_{\textstyle\varepsilon}$}
+
+\def\MathML{Math\acro{ML}}
+\def\MacOSX{Mac\,\acro{OS\,X}}
+
+% for Robert McGaffey
+\def\Mc{\setbox\TestBox=\hbox{M}M\vbox to\ht\TestBox{\hbox{c}\vfil}}
+
+\font\manual=logo10 % font used for the METAFONT logo, etc.
+\def\MF{{\manual META}\-{\manual FONT}\spacefactor1000 }
+\def\MP{{\manual META}\-{\manual POST}\spacefactor1000 }
+\def\mf{{\smc Metafont}}
+\def\MFB{{\sl The \slMF book}}
+
+% multilingual (INRS) TeX
+\def\mtex{T\kern-.1667em\lower.5ex\hbox{\^E}\kern-.125emX\spacefactor1000 }
+
+\def\NTStext{N\mkern-4mu \lower.5ex\hbox{$\cal T$}\mkern-2mu S}
+\def\NTS{{\ifmmode \cal\NTStext \else $\cal\NTStext $\fi}}
+
+\def\OCP{$\Omega$\acro{CP}}
+
+\def\PDF{\acro{PDF}}
+
+\def\pcMF{\leavevmode\raise.5ex\hbox{p\kern-.3ptc}MF\spacefactor1000 }
+\def\PCTeX{PC\thinspace\TeX}
+\def\pcTeX{\leavevmode\raise.5ex\hbox{p\kern-.3ptc}\TeX}
+
+\def\Pas{Pascal}
+
+\def\PiC{P\kern-.12em\lower.5ex\hbox{I}\kern-.075emC\spacefactor1000 }
+\def\PiCTeX{\PiC\kern-.11em\TeX}
+
+\def\plain{{\tt plain}}
+
+\def\POBox{P.\thinspace O.~Box }
+\def\POBoxTUG{\POBox\unskip~9506, Providence, RI~02940}
+
+\def\PS{{Post\-Script}}
+
+\def\SC{Steering Committee}
+
+\def\SGML{\acro{SGML}}
+
+\def\SliTeX{{\rm S\kern-.06em{\smc l\kern-.035emi}\kern-.06em\TeX}}
+
+\def\slMF{\MF}
+% Use \font\manualsl=logosl10 instead, if it's available,
+% for \def\slMF{{\manualsl META}\-{\manualsl FONT}\spacefactor1000 }
+
+% Atari ST (Klaus Guntermann)
+\def\stTeX{{\smc st\rm\kern-0.13em\TeX}}
+
+\def\TANGLE{{\tt TANGLE}\spacefactor1000 }
+
+\def\TB{{\sl The \TeX book}}
+\def\TP{{\sl \TeX\/}: {\sl The Program\/}}
+
+\def\TeX{T\kern-.1667em\lower.424ex\hbox{E}\kern-.125emX\spacefactor1000 }
+
+\def\TeXhax{\TeX hax}
+
+% Don Hosek
+\def\TeXMaG{\TeX M\kern-.1667em\lower.5ex\hbox{A}\kern-.2267emG%
+ \spacefactor1000 }
+
+%\def\TeXtures{\TestCount=\the\fam
+% \TeX\-\hbox{$\fam\TestCount\scriptstyle TURES$}}
+\def\TeXtures{{\it Textures}}
+\let\Textures=\TeXtures
+
+\def\TeXXeT{\TeX-{}-\XeT}
+
+\def\Thanh{H\`an~Th\^e\llap{\raise.5ex\hbox{\'{}}}~Th\`anh}
+
+\def\ttn{{\sl TTN}\spacefactor1000 }
+\def\TTN{{\sl \TeX{} and TUG NEWS}\spacefactor1000 }
+
+\def\tubfont{\sl} % redefined in other situations
+\def\TUB{{\tubfont TUGboat\/}}
+
+\def\TUG{\TeX\ \UG}
+
+\def\UG{Users Group}
+
+\def\UNIX{\acro{UNIX}}
+
+\def\VAX{V\kern-.12em A\kern-.1em X\spacefactor1000 }
+
+\def\VorTeX{V\kern-2.7pt\lower.5ex\hbox{O\kern-1.4pt R}\kern-2.6pt\TeX}
+
+\def\XeT{X\kern-.125em\lower.424ex\hbox{E}\kern-.1667emT\spacefactor1000 }
+\def\XML{\acro{XML}}
+
+\def\WEB{{\tt WEB}\spacefactor1000 }
+\def\WEAVE{{\tt WEAVE}\spacefactor1000 }
+
+
+
+%********************************************************************
+
+\newlinechar=`\^^J
+\normallineskiplimit=1pt
+
+\clubpenalty=10000
+\widowpenalty=10000
+
+\def\NoParIndent{\parindent=\z@}
+\newdimen\normalparindent \normalparindent=20pt % plain = 20pt
+\def\NormalParIndent{\global\parindent=\normalparindent}
+\NormalParIndent
+
+\def\BlackBoxes{\overfullrule=5pt }
+\def\NoBlackBoxes{\overfullrule=\z@ }
+\def\newline{\hskip\z@ plus \pagewd \break}
+\def\nohyphens{\hyphenpenalty\@M\exhyphenpenalty\@M}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% ***** utility registers and definitions *****
+%
+
+% test registers for transient use; paired - internal/external
+\newbox\T@stBox \newbox\TestBox
+\newcount\T@stCount \newcount\TestCount
+\newdimen\T@stDimen \newdimen\TestDimen
+\newif\ifT@stIf \newif\ifTestIf
+
+
+% \cs existence test, stolen from TeXbook exercise 7.7
+\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax }
+
+% LaTeX conventions which are also useful here.
+\ifx\tugstyloaded@\plaintubstyle
+ \let\@@input\input
+ \def\iinput#1{\@@input#1 }
+ \def\@inputcheck{\if\@nextchar\bgroup
+ \expandafter\iinput\else\expandafter\@@input\fi}
+ \def\input{\futurelet\@nextchar\@inputcheck}
+\fi
+
+% Smashes repeated from AMS-TeX; PLAIN implements only full \smash .
+\newif\iftop@ \newif\ifbot@
+\def\topsmash{\top@true\bot@false\smash@}
+\def\botsmash{\top@false\bot@true\smash@}
+\def\smash{\top@true\bot@true\smash@}
+\def\smash@{\relax\ifmmode\def\next{\mathpalette\mathsm@sh}%
+ \else\let\next\makesm@sh\fi \next }
+\def\finsm@sh{\iftop@\ht\z@\z@\fi\ifbot@\dp\z@\z@\fi\box\z@}
+
+
+% Vertical `laps'; cf. \llap and \rlap
+\long\def\ulap#1{\vbox to \z@{\vss#1}}
+\long\def\dlap#1{\vbox to \z@{#1\vss}}
+
+% And centered horizontal and vertical `laps'
+\def\xlap#1{\hbox to \z@{\hss#1\hss}}
+\long\def\ylap#1{\vbox to \z@{\vss#1\vss}}
+\long\def\zlap#1{\ylap{\xlap{#1}}}
+
+
+% Avoid unwanted vertical glue when making up pages.
+\def\basezero{\baselineskip\z@skip \lineskip\z@skip}
+
+
+% Empty rules for special occasions
+\def\nullhrule{\hrule height\z@ depth\z@ width\z@ }
+\def\nullvrule{\vrule height\z@ depth\z@ width\z@ }
+
+% Support ad-hoc strut construction.
+\def\makestrut[#1;#2]{\vrule height#1 depth#2 width\z@ }
+
+% Construct box for figure pasteup, etc.
+% height = #1, width = #2, rule thickness = #3
+\def\drawoutlinebox[#1;#2;#3]{\T@stDimen=#3
+ \vbox to#1{\hrule height\T@stDimen depth\z@
+ \vss\hbox to#2{\vrule width\T@stDimen
+ \hfil\makestrut[#1;\z@]%
+ \vrule width\T@stDimen}\vss
+ \hrule height\T@stDimen depth\z@}}
+
+
+% Today's date, to be printed on drafts. Based on TeXbook, p.406.
+
+\def\today{\number\day\space \ifcase\month\or
+ Jan \or Feb \or Mar \or Apr \or May \or Jun \or
+ Jul \or Aug \or Sep \or Oct \or Nov \or Dec \fi
+ \number\year}
+
+% Current time; this may be system dependent!
+\newcount\hours
+\newcount\minutes
+\def\SetTime{\hours=\time
+ \global\divide\hours by 60
+ \minutes=\hours
+ \multiply\minutes by 60
+ \advance\minutes by-\time
+ \global\multiply\minutes by-1 }
+\SetTime
+\def\now{\number\hours:\ifnum\minutes<10 0\fi\number\minutes}
+
+\def\Now{\today\ \now}
+
+\newif\ifPrelimDraft \PrelimDraftfalse
+
+\def\midrtitle{\ifPrelimDraft {{\tensl preliminary draft, \Now}}\fi}
+
+% Section heads. The following set of macros is used to set the large
+% TUGboat section heads (e.g. "General Delivery", "Fonts", etc.)
+
+\newdimen\PreTitleDrop \PreTitleDrop=\z@
+
+\newskip\AboveTitleSkip \AboveTitleSkip=12pt
+\newskip\BelowTitleSkip \BelowTitleSkip=8pt
+
+\newdimen\strulethickness \strulethickness=.6pt
+\def\sthrule{\hrule height\strulethickness depth \z@ }
+\def\stvrule{\vrule width\strulethickness }
+
+\newdimen\stbaselineskip \stbaselineskip=18pt
+
+\def\@sectitle #1{%
+ \par \SecTitletrue
+ \penalty-1000
+ \secsep
+ \vbox{
+ \sthrule
+ \hbox{%
+ \stvrule
+ \vbox{
+ \advance\hsize by -2\strulethickness
+ \raggedcenter
+ \def\\{\unskip\break}%
+ \sectitlefont
+ \makestrut[2\stfontheight;\z@]
+ #1\unskip
+ \makestrut[\z@;\stfontheight]\endgraf
+ }%
+ \stvrule }
+ \sthrule }
+ \nobreak
+ \vskip\baselineskip }
+
+% distance between articles which are run together
+\def\secsep{\vskip 5\baselineskip}
+
+\newif\ifSecTitle
+\SecTitlefalse
+
+
+
+% Registration marks; permit them to be invisible
+
+\newdimen\RegRuleThickness \RegRuleThickness=0.2pt
+
+\def\HorzR@gisterRule{\vrule height\RegRuleThickness depth \z@ width 0.5in }
+\def\DownShortR@gisterRule{%
+ \vrule height 0.2pt depth 1pc width\RegRuleThickness }
+\def\UpShortR@gisterRule{\vrule height 1pc depth \z@ width\RegRuleThickness }
+
+
+% ``T'' marks centered on top and bottom edges of paper
+
+\def\ttopregister{\dlap{%
+ \hbox to \trimwd{\HorzR@gisterRule \hfil \HorzR@gisterRule
+ \HorzR@gisterRule \hfil \HorzR@gisterRule}%
+ \hbox to \trimwd{\hfil \DownShortR@gisterRule \hfil}}}
+\def\tbotregister{\ulap{%
+ \hbox to \trimwd{\hfil \UpShortR@gisterRule \hfil}%
+ \hbox to \trimwd{\HorzR@gisterRule \hfil \HorzR@gisterRule
+ \HorzR@gisterRule \hfil \HorzR@gisterRule}}}
+
+\def\topregister{\ttopregister}
+\def\botregister{\tbotregister}
+
+
+
+% PLAIN's definition of \raggedright doesn't permit any stretch, and
+% results in too many overfull boxes. We also turn off hyphenation.
+\newdimen\raggedskip \raggedskip=\z@
+\newdimen\raggedstretch \raggedstretch=5em % ems of font set now (10pt)
+\newskip\raggedparfill \raggedparfill=\z@ plus 1fil
+
+\def\raggedspaces{\spaceskip=.3333em \relax \xspaceskip=.5em \relax }
+% Some applications may have to add stretch, in order to avoid
+% all overfull boxes.
+
+\def\raggedright{%
+ \nohyphens
+ \rightskip=\raggedskip plus\raggedstretch \raggedspaces
+ \parfillskip=\raggedparfill }
+\def\raggedleft{%
+ \nohyphens
+ \leftskip=\raggedskip plus\raggedstretch \raggedspaces
+ \parfillskip=\z@skip }
+\def\raggedcenter{%
+ \nohyphens
+ \leftskip=\raggedskip plus\raggedstretch
+ \rightskip=\leftskip \raggedspaces
+ \parindent=\z@ \parfillskip=\z@skip }
+
+\def\normalspaces{\spaceskip\z@skip \xspaceskip\z@skip }
+
+
+% Miscellaneous useful stuff
+
+\def\,{\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi}
+
+%\def~{\penalty\@M \ } % tie -- this is PLAIN value; it is reset in AMS-TeX
+\def~{\unskip\nobreak\ \ignorespaces} % AMS-TeX value
+
+\def\newbox{\alloc@4\box\chardef\insc@unt} % remove \outer
+\def\boxcs#1{\box\csname#1\endcsname}
+\def\setboxcs#1{\setbox\csname#1\endcsname}
+\def\newboxcs#1{\expandafter\newbox\csname#1\endcsname}
+
+\def\gobble#1{}
+
+\def\vellipsis{%
+ \leavevmode\kern0.5em
+ \raise1pt\vbox{\baselineskip6pt\vskip7pt\hbox{.}\hbox{.}\hbox{.}}
+ }
+
+\def\bull{\vrule height 1ex width .8ex depth -.2ex } % square bullet
+\def\cents{{\rm\raise.2ex\rlap{\kern.05em$\scriptstyle/$}c}}
+\def\Dag{\raise .6ex\hbox{$\scriptstyle\dagger$}}
+
+\def\careof{\leavevmode\hbox{\raise.75ex\hbox{c}\kern-.15em
+ /\kern-.125em\smash{\lower.3ex\hbox{o}}} \ignorespaces}
+\def\sfrac#1/#2{\leavevmode\kern.1em
+ \raise.5ex\hbox{\the\scriptfont\z@ #1}\kern-.1em
+ /\kern-.15em\lower.25ex\hbox{\the\scriptfont\z@ #2}}
+
+\def\thinskip{\hskip 0.16667em\relax}
+\def\endash{--}
+\def\emdash{\endash-}
+\def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces}
+\def\dash{\d@sh\nobreak\endash}
+\def\Dash{\d@sh\nobreak\emdash}
+\def\ldash{\d@sh\empty{\hbox{\endash}\nobreak}}
+\def\rdash{\d@sh\nobreak\endash}
+\def\Ldash{\d@sh\empty{\hbox{\emdash}\nobreak}}
+\def\Rdash{\d@sh\nobreak\emdash}
+
+% Hack to permit automatic hyphenation after an actual hyphen.
+
+\def\hyph{-\penalty\z@\hskip\z@skip }
+
+\def\slash{/\penalty\z@\hskip\z@skip } % "breakable" slash
+
+% Adapted from c.t.t posting by Donald Arseneau, 26 May 93.
+\def\nth#1{\TestCount=#1\relax
+ \ifnum\TestCount <0 \multiply\TestCount by\m@ne \fi % subdue negatives
+ \T@stCount=\TestCount
+ \divide\T@stCount by 100 \multiply\T@stCount by 100
+ \advance\TestCount by-\T@stCount % n mod 100
+ \ifnum\TestCount >20 \T@stCount=\TestCount
+ \divide\T@stCount by 10 \multiply\T@stCount by 10
+ \advance\TestCount by-\T@stCount % n mod 10
+ \fi
+ \T@stCount=\the\fam\relax
+ $\fam\T@stCount#1^{\fam\T@stCount
+ \ifcase\TestCount th% 0th
+ \or st% 1st
+ \or nd% 2nd
+ \or rd% 3rd
+ \else th% nth
+ \fi
+ }$}
+
+
+% Format information on reviewed items for book review articles.
+
+\def\Review:#1{\ifx[#1\@Rev[%
+ \else Book review:\enspace\sl #1%
+ \fi
+ }
+\def\@Rev[#1]{\ignorespaces#1\unskip:\enspace\ignorespaces\sl}
+\def\reviewitem{%
+ \def\revauth##1{\def\therevauth{##1, }\ignorespaces}%
+ \def\revtitle##1{\def\therevtitle{{\sl##1}. }\ignorespaces}%
+ \def\revpubinfo##1{\def\therevpubinfo{##1.}\ignorespaces}%
+ }
+\def\endreviewitem{{\noindent\interlinepenalty=10000
+ \therevauth\therevtitle\therevpubinfo\endgraf}%
+ \vskip\medskipamount
+ \ifx\tugstyloaded@\plaintubstyle
+ \DeleteOptionalSpacesandPars{\noindent\ignorespaces}%
+ \fi
+ }
+
+\def\booktitle#1{{\sl #1\/}}
+
+
+% Dates and other items which identify the volume and issue
+
+% To use: \vol 5, 2.
+% \issdate October 1984.
+% \issueseqno=10
+% For production, these are set in a separate file, TUGBOT.DATES,
+% which is issue-specific.
+
+\newcount\issueseqno \issueseqno=-1
+
+\def\v@lx{\gdef\volx{Volume~\volno~(\volyr), No.~\issno}}
+\def\volyr{}
+\def\volno{}
+\def\vol #1,#2.{\gdef\volno{#1\unskip}%
+ \gdef\issno{\ignorespaces#2\unskip}%
+ \setbox\TestBox=\hbox{\volyr}%
+ \ifdim \wd\TestBox > .2em \v@lx \fi }
+
+% Original issue date included month and year.
+\def\issdate #1#2 #3.{\gdef\issdt{#1#2 #3}\gdef\volyr{#3}%
+ \gdef\bigissdt{#1{\smc\uppercase{#2}} #3}%
+ \setbox\TestBox=\hbox{\volno}%
+ \ifdim \wd\TestBox > .2em \v@lx \fi }
+% Beginning in 2002, only year
+\def\issyear #1.{\gdef\issdt{#1}\gdef\volyr{#1}%
+ \gdef\bigissdt{#1}%
+ \setbox\TestBox=\hbox{\volno}%
+ \ifdim \wd\TestBox > .2em \v@lx \fi }
+
+\vol 0, 0. % volume, issue.
+\issdate Thermidor, 2001. % month, year of publication
+
+
+\ifx\tugstyloaded@\plaintubstyle
+ \def\tubissue#1(#2){\TUB~#1, no.~#2}
+\else
+ \def\tubissue#1#2{\TUB~#1, no.~#2}
+\fi
+
+\def\xEdNote{{\tenuit Editor's note:\enspace }}
+
+
+% TUGboat conventions include the issue number in the file name.
+% Permit this to be incorporated into file names automatically.
+% If issue number = 11, \Input filnam will read tb11filnam.tex.
+
+
+\def\infil@{\jobname}
+\def\Input #1 {\ifnum\issueseqno<0 \def\infil@{#1}%
+ \else \def\infil@{tb\number\issueseqno#1}\fi
+ \edef\jobname{\infil@}\@readFLN
+ \@@input \infil@\relax
+ \ifRMKopen\immediate\closeout\TBremarkfile\RMKopenfalse\fi}
+
+\newif\ifRMKopen \RMKopenfalse
+\newwrite\TBremarkfile
+\def\TBremarkON#1{%
+ \ifRMKopen\else\RMKopentrue\immediate\openout\TBremarkfile=\infil@.rmk \fi
+ \toks@={#1}%
+ \immediate\write\TBremarkfile{^^J\the\toks@}%
+ \immediate\write16{^^JTBremark:: \the\toks@^^J}}
+\def\TBremarkOFF#1{}
+\let\TBremark=\TBremarkOFF
+
+% for marking locations in articles that pertain to remarks
+% in another file of editorial comments
+\def\TUBedit#1{}
+
+% for using different filenames in Providence than those supplied
+% by authors
+
+\def\TUBfilename#1#2{\expandafter\def\csname file@@#1\endcsname{#2}}
+\newread\@altfilenames
+\def\@readFLN{\immediate\openin\@altfilenames=\jobname.fln
+ \ifeof\@altfilenames\let\@result\relax\else
+ \def\@result{\@@input\jobname.fln }\fi
+ \immediate\closein\@altfilenames
+ \@result}
+\@readFLN
+\everyjob=\expandafter{\the\everyjob\@readFLN}
+
+% Following needs to work entirely in TeX's mouth
+\def\@tubfilename#1{\expandafter\ifx\csname file@@#1\endcsname\relax
+ #1\else\csname file@@#1\endcsname\fi}
+
+\def\fileinput#1{\@@input\@tubfilename{#1} }
+
+% Write out (both to a file and to the log) the starting page number
+% of an article, to be used for cross references and in contents.
+% \pagexref is used for articles fully processed in the TUGboat run.
+% \PageXref is used for "extra" pages, where an item is submitted
+% as camera copy, and only running heads (at most) are run.
+
+\ifx\tugstyloaded@\plaintubstyle
+\def\pagexrefON#1{%
+ \write-1{\def\expandafter\noexpand\csname#1\endcsname{\number\pageno}}%
+ \write\ppoutfile{%
+ \def\expandafter\noexpand\csname#1\endcsname{\number\pageno}}%
+ }
+\def\PageXrefON#1{%
+ \immediate\write-1{\def\expandafter
+ \noexpand\csname#1\endcsname{\number\pageno}}%
+ \immediate\write\ppoutfile{\def\expandafter
+ \noexpand\csname#1\endcsname{\number\pageno}}}
+\else
+\def\pagexrefON#1{%
+ \write-1{\def\expandafter\noexpand\csname#1\endcsname{\number\c@page}}%
+ \write\ppoutfile{%
+ \def\expandafter\noexpand\csname#1\endcsname{\number\c@page}}%
+ }
+\def\PageXrefON#1{%
+ \immediate\write-1{\def\expandafter
+ \noexpand\csname#1\endcsname{\number\c@page}}%
+ \immediate\write\ppoutfile{\def\expandafter
+ \noexpand\csname#1\endcsname{\number\c@page}}}
+\fi
+
+\def\pagexrefOFF#1{}
+\let\pagexref=\pagexrefOFF
+\def\PageXrefOFF#1{}
+\let\PageXref=\PageXrefOFF
+
+\def\xreftoON#1{%
+ \ifundefined{#1}%
+ ???\TBremark{Need cross reference for #1.}%
+ \else\csname#1\endcsname\fi}
+\def\xreftoOFF#1{???}
+\let\xrefto=\xreftoOFF
+
+\def\TBdriver#1{}
+
+
+% Authors, addresses, signatures
+
+\def\theauthor#1{\csname theauthor#1\endcsname}
+\def\theaddress#1{\csname theaddress#1\endcsname}
+\def\thenetaddress#1{\csname thenetaddress#1\endcsname}
+
+\newcount\count@@
+\def\@defaultauthorlist{% % standard way of listing authors
+ \count@=\authornumber
+ \advance\count@ by -2
+ \count@@=0
+ \loop
+ \ifnum\count@>0
+ \advance\count@@ by 1
+ \ignorespaces\csname theauthor\number\count@@\endcsname\unskip,
+ \advance\count@ by -1
+ \repeat
+ \count@=\authornumber
+ \advance\count@ by -\count@@
+ \ifnum\authornumber>0
+ \ifnum\count@>1
+ \count@=\authornumber
+ \advance\count@ by -1
+ \ignorespaces\csname theauthor\number\count@\endcsname\unskip\ and
+ \fi
+ \ignorespaces\csname theauthor\number\authornumber\endcsname\unskip
+ \fi
+ }
+
+\def\signature#1{\def\@signature{#1}}
+\def\@signature{\@defaultsignature}
+
+\def\@defaultsignature{%
+ \count@=0
+ \loop
+ \ifnum\count@<\authornumber
+ \medskip
+ \advance\count@ by \@ne
+ \signaturemark
+ \theauthor{\number\count@}\\
+ \leavevmode\theaddress{\number\count@}\\
+ \leavevmode\thenetaddress{\number\count@}\\
+ \repeat
+ }
+
+\newdimen\signaturewidth \signaturewidth=12pc
+\def\makesignature{%
+ \par
+ \penalty9000
+ \vskip\medskipamount
+ \rightline{%
+ \vbox{\hsize\signaturewidth \ninepoint \raggedright
+ \parindent \z@ \everypar={\hangindent 1pc }
+ \parskip \z@skip
+ \netaddrat
+ \netaddrpercent
+ \def\|{\unskip\hfil\break}%
+ \def\\{\endgraf}%
+ \def\net{\tt}%
+ \def\phone{\rm Phone: } \rm
+ \@signature}}
+ }
+
+{\makeactive\@
+ \gdef\signatureat{\makeactive\@\def@{\char"40\discretionary{}{}{}}}
+ \makeactive\%
+ \gdef\signaturepercent{\makeactive\%\def%{\char"25\discretionary{}{}{}}}
+}
+
+\def\signaturemark{\leavevmode\llap{$\diamond$\enspace}}
+
+
+% some hyphenation exceptions:
+\hyphenation{Dijk-stra Eijk-hout Hara-lam-bous
+ Doc-Book Flor-i-da Ghost-script Ghost-view Open-Type Pfa-Edit
+ Post-Script True-Type
+ ap-pen-dix
+ bit-map bit-mapped bit-maps bool-ean
+ col-umns
+ data-base data-bases
+ fall-ing
+ half-way
+ long-est
+ ma-gyar man-u-script man-u-scripts
+ over-view
+ par-a-digm par-a-digm-atic par-a-digms
+ se-vere-ly spell-ing spell-ings stand-alone strong-est
+ time-stamp time-stamped
+ which-ever white-space white-spaces wide-spread wrap-around
+}
+
+
+\restorecat\@
+
+\endinput
+
+
+% *************************************************************************
+
+Contents and Notes
+------------------
+
+\makeescape, ..., \makecomment allow users to change category
+codes a little more easily.
+
+\savecat#1 and \restorecat#1 will save and restore the category
+of a given character. These are useful in cases where one doesn't
+wish to localize the settings and therefore be required to globally
+define or set things.
+
+\SaveCS#1 and \RestoreCS#1 save and restore `meanings' of control
+sequences. Again this is useful in cases where one doesn't want to
+localize or where global definitions clobber a control sequence which
+is needed later with its `old' definition.
+
+Abbreviations. Just a listing with indications of expansion where
+that may not be obvious. For full definitions, see real code above.
+
+\AllTeX (\La)\TeX
+\AMS American Mathematical Society
+\AmSTeX
+\aw A-W (abbreviation for Addison-Wesley)
+\AW Addison-Wesley
+\BibTeX
+\CandT Computers \& Typesetting
+\ConTeXt
+\Cplusplus C++
+\DVItoVDU
+\Hawaii Hawai`i
+\HTML HTML
+\ISBN ISBN
+\JTeX
+\JoT The Joy of \TeX
+\LaTeX
+\MacOSX Mac OS X
+\MathML
+\Mc M ``w/ raised c''
+\MF METAFONT
+\mf Metafont (using small caps)
+\MFB The Metafont book
+\MP METAPOST
+\mtex multilingual TeX
+\NTS
+\OCP \Omega CP
+\pcMF pcMF
+\PCTeX
+\pcTeX
+\Pas Pascal
+\PDF PDF
+\PiCTeX
+\plain plain (in typewriter font)
+\POBox P. O. Box
+\POBoxTUG TUG PO Box
+\PS PostScript
+\SC Steering Committee
+\SGML SGML
+\SliTeX
+\slMF Metafont (slanted)
+\stTeX TeX for the Atari ST
+\TANGLE
+\TB The \TeX book
+\TeX
+\TeXhax
+\TeXMaG
+\TeXtures
+\TeXXeT
+\Thanh Han The Thanh
+\TUB TUGboat
+\TUG TeX Users Group
+\UNIX
+\VAX
+\VorTeX
+\XeT
+\XML
+\WEB
+\WEAVE
+
+\NoBlackBoxes turns off marginal rules marking overfull boxes
+\BlackBoxes turns them back on
+\newline horizontal glue plus a break
+
+\ifundefined#1 checks argument with \csname against \relax
+
+\topsmash smashes above baseline (from AMSTeX)
+\botsmash smashes below baseline (from AMSTeX)
+\smash smashes both (from plain)
+
+\ulap lap upwards
+\dlap lap downwards
+\xlap reference point at center horizontally; 0 width
+\ylap reference point at center vertically; 0 height, depth
+\zlap combination \xlap and \ylap
+
+\basezero to avoid insertion of baselineskip and lineskip glue
+
+\nullhrule empty \hrule
+\nullvrule empty \vrule
+
+\makestrut[#1;#2] ad hoc struts; #1=height, #2=depth
+
+\today today's date
+\SetTime converts \time to hours, minutes
+\now displays time in hours and minutes
+\Now shows current date and time
+
+\ifPrelimDraft flag to indicate status as preliminary draft
+
+\rtitlex TUGboat volume and number info for running head
+\midrtitle information for center of running head
+
+\HorzR@gisterRule pieces of registration marks ("trimmarks")
+\DownShortR@gisterRule
+\UpShortR@gisterRule
+
+\ttopregister top registration line with `T' in center
+\tbotregister bottom registration line with inverted `T' in center
+\topregister register actually used
+\botregister
+
+
+\raggedskip parameters used for ragged settings
+\raggedstretch
+\raggedparfill
+\raggedspaces
+
+\raggedright
+\raggedleft
+\raggedcenter
+\normalspaces
+\raggedbottom
+
+\bull square bullet
+\cents ``cents'' sign
+\Dag superscripted dagger
+\careof c/o
+\sfrac slashed fraction
+
+\dash en-dash surrounded by thinspaces; only breakable AFTER
+\Dash em-dash, as above
+
+\hyph permit automatic hyphenation after an actual hyphen
+
+\slash "breakable" slash
+\nth for obtaining "1^{st}", "2^{nd}", 3^{rd}, etc.
+
+\tubissue gets \TUB followed by volume and issue numbers
+
+\xEdNote Editor's Note:
+
+\Review: Review: (for title of book review article)
+\reviewitem begin data for item being reviewed
+ \revauth with one argument, author(s) of item being reviewed
+ \revtitle with one argument, title of ...
+ \revpubinfo with one argument, other info pertaining to ...
+\endreviewitem end data for item being reviewed
+\booktitle with one argument, format book title in text
+
+\Input \input with some other bookkeeping for
+ case where multiple articles are put together
+
+\TBremark reminder to TUGboat editorial staff
+\TBremarkON
+\TBremarkOFF
+
+\pagexref used to write out page numbers to screen and
+\pagexrefON external files
+\pagexrefOFF
+\PageXref
+\PageXrefON
+\PageXrefOFF
+
+\xrefto used for symbolic cross-reference to other pages
+\xreftoON in TUGboat
+\xreftoOFF
+
+\TBdriver marks code which only takes effect when articles
+ are run together in a driver file
+
+\signatureat items for signatures
+\signaturepercent
+\signaturemark
+\signaturewidth
+
+
+% *************************************************************************
+
+% Change history
+
+Version Date Changes
+------- --------- ---------------------------------------------------
+1.14 21 Jun 04 added numerous name macros and hyphenation exceptions
+
+1.13l 15 Nov 03 updated header address to Portland, OR
+
+1.13k 28 Jun 03 added \RegRuleThickness to allow easy modification
+
+1.13j 16 Feb 03 added \issyear to handle removal of month
+
+1.13i 14 Oct 96 updated header and installed CRC-16 checksum
+
+1.13h 10 Nov 95 added \acro and converted all \SMC entries to use it
+ added acronyms \HTML and \PDF
+
+1.13g 4 Nov 95 added \MP for METAPOST
+
+1.13f 15 Apr 94 added \@Rev[...] to permit variable text for reviews
+
+1.13e 14 Mar 94 revised definition of \La to use actual width of A
+ added \LaTeXe definition
+
+1.13d 5 Jan 94 added {} to \TeX-{}-\Xet
+
+1.13c 11 Nov 93 removed extraneous " from header
+ added \AmSLaTeX, \CTAN, \ISSN
+
+1.13b 4 Nov 93 added \hyphenation{Eijk-hout}
+
+1.13a 18 Aug 93 corrected \nth to produce ordinal in current font
+
+1.13 27 May 93 upgraded \nth based on algorithm by Donald Arseneau
+ in comp.text.tex, 26 May 93
+
+1.12 19 Feb 93 added \spacefactor1000 to all replacement text that ends
+ with a capital letter, so that if these items end a
+ sentence, there will be a normal end-of-sentence space
+ removed \hbox from definitions of \TeX, etc.; no longer
+ needed
+ changed definition of \TeXXeT to use \XeT rather than
+ unique dimensions
+ installed new TUG address and phone number in header
+ reformatted change history, similar to tugboat.sty
+
+1.11c 29 Nov 92 added macros to format book review and related items for
+ review articles
+ added \SGML
+ changed def of \UNIX to use \SMC rather than \smc
+
+1.11b 20 Oct 92 added font code for \ISBN font ("big small caps")
+ added \Textures as the current form
+
+1.11a 6 Jun 92 added \drawoutlinebox
+
+1.11 15 Mar 92 added \ttn and \TTN
+
+1.10 8 Mar 92 added \AllTeX
+ changed file name from .COM to .CMN to avoid objection
+ that .COM files have a special significance on DOS
+ and other operating systems
+ added standard headers, prepared for archive installation
+
+1.09 5 May 91 inserted large penalty at top of \makesignature to
+ inhibit break between article and signature
+
+1.08 24 Oct 90 modified signature slightly (took \medskip out of box)
+ fixed bug in previous rendition of \@readFLN
+
+1.07 16 Oct 90 added \TUBedit to facilitate editorial marking
+ added \iinput variant from LaTeX; \input redefined now
+ as with LaTeX
+ added mechanism for local file names in Providence
+ (\TUBfilename, \fileinput, etc.)
+ \tugstyload@ defaults to plain if it's not defined
+
+1.06 3 Aug 90 added \leavevmode to \@defaultsignature so that
+ \everypar is not executed inside a group
+ dash routines modified and corrected (to suppress
+ insertion of discretionary node after -- and ---;
+ and to allow hyphenation of ensuing word)
+ changed \lDash to \Ldash and \rDash to \Rdash
+
+1.05 29 Mar 90 added \lDash and \rDash for `parenthetical' dashing
+ added \TP for TeX: The Program
+ added \relax after file input of \Input
+ added \relax before \ifmmode of \,
+
+1.04 28 Feb 90 modified pagexref macros to work in both plain and
+ latex styles (this should NOT affect authors)
+
+1.03 26 Feb 90 removed <tab>s and adjusted definition of \slMF
+
+1.02 25 Feb 90 added definitions of \plaintubissue, \latextubissue
+ added definition of \tubissue
+
+1.01 19 Feb 90 added \signaturewidth to allow for modification
+ added \nth to obtain 1^{st}, etc.