diff options
Diffstat (limited to 'Master/texmf-dist/tex/plain/tugboat/tugboat.cmn')
-rw-r--r-- | Master/texmf-dist/tex/plain/tugboat/tugboat.cmn | 1070 |
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. |