%% @texfile{
%% filename = "tbcont.def",
%% version = "see below \fileversion"
%% date = "see below \filedate",
%% filetype = "Plain TeX macros for TUGboat tables of contents",
%% copyright = "Copyright 1993-2016 TeX Users Group.
%% Unlimited copying and redistribution of this file
%% are permitted as long as this file is not
%% modified. Modifications (and redistribution of
%% modified versions) are also permitted, but only if
%% the resulting file is renamed."
%% author = "TeX Users Group",
%% email = "
[email protected]",
%% codetable = "ISO/ASCII",
%% keywords = "tex users group, tugboat, tables of contents",
%% abstract = "This file contains the plain-based macros
%% for preparing tables of contents for TUGboat,
%% the Communications of the TeX Users Group.",
%% }
%%
%% *********************************************************
%%
%% TeXing with this file also requires the following files:
%% TUGBOAT.STY (version 1.10+)
%% TUGBOAT.CMN (version 1.08+)
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% TBCONT.DEF
\def\fileversion{v1.10}
\def\filedate{2016/11/22}
\input tugboat.sty
% Make @ signs act like letters, for use in internal control sequences.
\makeatletter
% Define additional fonts.
\StretchyNinePointSpacing
% % Reset -- this font defaults to cmssbx10 in TUGBOT.STY.
% \font\manual=manfnt % font used for the METAFONT logo
\font\manualsl=logosl10
\font\twelverm=cmr10 scaled \magstep1
\font\twelvebf=cmbx10 scaled \magstep1
\font\twelvesl=cmsl10 scaled \magstep1
\font\twelveit=cmti10 scaled \magstep1
\let\twelvei=\twelveit
\font\twelvesy=cmsy10 scaled \magstep1
\font\twelvett=cmtt10 scaled \magstep1
\def\twelvepoint{\baselineskip 14pt
\def\rm{\fam0\twelverm}%
\textfont0=\twelverm \scriptfont0=\eightrm \scriptscriptfont0=\sixrm
\textfont1=\twelvei \scriptfont1=\eighti \scriptscriptfont1=\sixi
\textfont2=\twelvesy \scriptfont2=\eightsy \scriptscriptfont2=\sixsy
\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
\def\it{\fam\itfam\twelveit}%
\textfont\itfam=\twelveit
\def\sl{\fam\slfam\twelvesl}%
\textfont\slfam=\twelvesl
\def\bf{\fam\bffam\twelvebf}%
\textfont\bffam=\twelvebf \scriptfont\bffam=\eightbf
\scriptscriptfont\bffam=\sixbf
\def\smc{\tenrm}%
\def\tt{\twelvett}%
\rm }
%
\font\elevenrm=cmr10 scaled \magstephalf
\let\eleveni=\teni
\let\elevensy=\tensy
\font\fourteenrm=cmr10 scaled \magstep2
\font\fourteenit=cmti10 scaled \magstep2
\let\fourteeni=\fourteenit
\let\fourteensy=\tensy
\def\fourteenpoint{\baselineskip 16pt
\def\rm{\fam0\fourteenrm}%
\textfont0=\fourteenrm \scriptfont0=\elevenrm \scriptscriptfont0=\sevenrm
\textfont1=\fourteenit \scriptfont1=\eleveni \scriptscriptfont1=\seveni
\textfont2=\fourteensy \scriptfont2=\elevensy \scriptscriptfont2=\sevensy
\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
\def\smc{\elevenrm}%
\rm }
\font\sixteenrm=cmr10 scaled \magstep3
\font\sixteenbf=cmbx10 scaled \magstep3
\def\bigfont{\def\rm{\sixteenrm}\def\smc{\twelverm}%
\def\bf{\sixteenbf \def\smc{\twelvebf}}\rm }
\def\comment#1\endcomment{} % AMS-TeX not loaded
% Increase page length to accommodate long contents pages.
\normalcollgt=60pc
\collgt=\normalcollgt
\rheadlgt=0pt
\def\runhead{\hrule height 0pt depth 0pt width 10pt \vskip-2.5pc }
\rfootlgt=0pt \def\runfoot{}
\resetpagelgt
\onecol
%
% control sequences for contents page
\newskip\normalsecskip
\newskip\normalsecskipb
\newskip\secskipa \newskip\secskipb
\normalsecskip=5pt
\normalsecskipb=1pt
\secskipa=\normalsecskip
\secskipb=\normalsecskipb
\newdimen\secht \newdimen\secwd
\newif\ifnewsec
\newif\ifFirstR@nin \FirstR@nintrue
\newbox\SecBox
\def\sec #1<{\def\\{\unskip\cr}%
\setbox\SecBox=\vbox to \secht
{\bf\halign{\hfil ##\cr\strut#1\cr}\vss}%
\newsectrue \FirstR@nintrue }
\def\secsec #1\\#2<{\sec #1<%
\subsecnn {}\\#2<}
\newdimen\@secwd \@secwd=1.5in
\newdimen\@hangindwd % 2in
\newdimen\hangindif \hangindif=.3in
\@hangindwd=\@secwd \advance\@hangindwd by 2\hangindif
\newdimen\digitwidth
\def\setdigitwidth #1{\setbox\TestBox=\hbox{#1}%
\global\digitwidth=\wd\TestBox }
\setdigitwidth{99}
% Permit page ranges separated by hyphen (to support Nelson Beebe's
% citation builder), but print only the starting page number.
\def\strippageno#1-#2<{#1\unskip}
\def\newsubs@c#1#2{%
\ifnewsec \vskip\secskipa \newsecfalse \else \vskip\secskipb \fi
\noindent \hangindent=\@hangindwd
\leavevmode \hbox to \@secwd{\hss\box\SecBox \quad
\hbox to \digitwidth{\hss\strippageno#1-<}\quad}%
{\ignorespaces #2\unskip}}
% If either author or title absent, omit / separator.
% If this is a proceedings issue, reverse order of author / title.
\def\subsec #1\\#2\\#3<{\par
\TestCount=0 % case to set /
\setbox\TestBox=\hbox{#1\unskip}%
\ifdim\wd\TestBox < .2em \TestCount=1 % case to omit /
\else \setbox\TestBox=\hbox{#2\unskip}%
\ifdim\wd\TestBox < .2em \TestCount=1 \fi \fi
\newsubs@c{\ignorespaces#3}{\ifprocissue#1\else\ignorespaces#2\fi}%
\ifcase\TestCount
\hskip.5em\raise.3ex\hbox{\sevenrm/}\penalty-10\hskip.4em\fi
{\sl\let\acro\slacro \let\MF\slMF \let\MP\slMP
\ifprocissue\ignorespaces#2\else#1\fi\unskip}\endgraf}
%
\def\subseca #1\\#2<{\subsec #1\\#2\\ <}
\def\subsecnn #1\\#2<{\subsec \ifprocissue#1\fi\\%
\ifprocissue\else#1\fi\\#2<}
\def\subseci #1\\#2<{\subsecnn \hbox to \hangindif{}#1\\#2<}
\def\subsecii #1\\#2<{\subsecnn \hbox to 2\hangindif{}#1\\#2<}
\newdimen\subsecchang
\subsecchang=\@hangindwd
\advance\subsecchang by-\hangindif
\def\subsecc #1<{\noindent \kern\subsecchang
\hangindent=\subsecchang #1\unskip\endgraf }
\def\subsite #1<{\ifdim\wd\SecBox > .2em \subsec {}\\ \\ <%
\else \setbox\SecBox=\hbox{\eightrm$\cdot$\kern.25em#1}\fi }
\def\subsub #1<{\subsecnn #1\\ <}
\def\subquery #1\\#2\\#3<{%
\ifFirstR@nin \FirstR@ninfalse \newsubs@c{#3}{#2}%
\hangindent=\@secwd
\else \unskip ;\penalty-50\hskip.6em \ignorespaces #2\unskip
\fi
\setbox\TestBox=\hbox{#1\unskip}%
\ifdim\wd\TestBox > .2em \penalty-10\ ({\sl #1\/})\fi }
\def\and{\unskip{\rm\penalty 20\hskip.4em and\kern.06em}~}
\def\SetupContents{\onecol
% % page size may be reset in tbcv*.tex
\raggedstretch=.5\colwd % usual 5em isn't enough here
\raggedright
\hyphenpenalty=10000 % no hyphenation, none at all
\exhyphenpenalty=10000
\uchyph=0 }
\SetupContents
% To support cumulative contents, initialize size-specific
% features after type size has been chosen.
\def\looset@padjust{\topglue 1pc \relax}
\def\loosetopadjust{\let\t@padjust=\looset@padjust}
\def\tighttopadjust{\def\t@padjust{\relax\loosetopadjust}}
\let\t@padjust=\looset@padjust
% allow additional information for special issues
\newif\ifprocissue
\let\postissno\empty
%% 2002/10/21 added "date slashes" to handle double issues
\def\dateslash{/}
\def\TUBheaddateslash{\raise.25ex\hbox{\ninebf/}}
\def\TUBhead #1, #2, #3<{\setbox\TestBox=\hbox{()}\secht=\ht\TestBox
\sec \null <\newsecfalse % initialize section box
\procissuefalse
\t@padjust
\subsub{\bigfont\bf TUG{\smc BOAT}}<%
\vskip 10pt
\begingroup
\twelverm\baselineskip=15pt
\subsub
{\let\dateslash=\TUBheaddateslash
% \twelverm\baselineskip=15pt Volume #1, Number #2%
Volume #1, Number #2%
\hskip.5em\raise.25ex\hbox{\ninebf/}\hskip.4em #3}<%
\ifx\postissno\empty \global\procissuefalse
\else \subsub \postissno<%
\global\procissuetrue
\fi
\endgroup
\vskip 20pt }
% Restore @ to normal status.
\makeatother
\addto\tenpoint{\def\slSMC{\ninesl}}
\addto\ninepoint{\def\slSMC{\eightsl}}
\def\slacro#1{{\slSMC #1}\spacefactor1000 }
\def\slMF{{\manualsl META}\-{\manualsl FONT}\spacefactor1000 }
\def\slMP{{\manualsl META}\-{\manualsl POST}\spacefactor1000 }
% This is "camera copy".
\PrelimDraftfalse
\pageno=1
% Allow overlong lines.
\NoBlackBoxes
\endinput