diff options
Diffstat (limited to 'macros/ytex/yuser.mac')
-rw-r--r-- | macros/ytex/yuser.mac | 1351 |
1 files changed, 0 insertions, 1351 deletions
diff --git a/macros/ytex/yuser.mac b/macros/ytex/yuser.mac deleted file mode 100644 index 960b8aee07..0000000000 --- a/macros/ytex/yuser.mac +++ /dev/null @@ -1,1351 +0,0 @@ -% Copyright (c) 1985, 1986 Daniel C. Brotsky. All rights reserved. -% User interface for yTeX. See the file YTEX.MAC for details. - -% CONTENTS - -% ^L-page contents -% ---------------------------------------------------------------------- -% 1 %% User interface to YTEX macros -% 2 %% combinators -% 3 %% runners -% 4 %% glosses -% 5 %% paragraphs -% 6 %% textual displays -% 7 %% lisp programs -% 8 %% footnotes -% 9 %% figures -% 10 %% tables -% 11 %% equations -% 12 %% chapters and sections -% 13 %% special pages -% 14 %% 2 columns -% 15 %% indexes -% 16 %% citations -% 17 %% labels -% 18 %% initialization - -\message{combinators,} - -% verbatim word -\def\verb {% <token>#1<token> - \begingroup\tt\specials@ther\activespaces\ \v@rb} -\def\v@rb #1{% - \def\next##1#1{##1\endgroup}\next} - -% spread to the current hsize -\newspread\spread - \setup - \endnew -\let\@@spreadwidth=\spreadwidth \let\spreadwidth=\hsize - -% left-adjusted, center-adjusted, and right-adjusted titles -\newtitle\tleft - \box \vopen - \shape \titleleft{\z@}{\z@}% - \font - \setup - \begin - \end - \endnew -\newtitle\tcenter - \box \vopen - \shape \titlecenter{\z@}{\z@}% - \font - \setup - \begin - \end - \endnew -\newtitle\tright - \box \vopen - \shape \titleright{\z@}{\z@}% - \font - \setup - \begin - \end - \endnew - -% symbols -\newtextwrap\sy - \box \hopen - \setup \smltt - \before - \after - \begin - \end - \endnew -\newtextwrap\sybox - \box \hbox - \setup \smltt - \before - \after - \begin - \end - \endnew -\newtextwrap\ucsy - \box \hopen - \setup \smltt - \before - \after - \begin \uppercase\bgroup - \end \egroup - \endnew -\newtextwrap\ucsybox - \box \hbox - \setup \smltt - \before - \after - \begin \uppercase\bgroup - \end \egroup - \endnew - -\def\ignore #{% - \begingroup - \def\do ##1{\catcode`##1=12\relax}% - \dospecials % turn off all special chars - \catcode`\\=0\relax % need to see commands as single tokens - \catcode`\{=1\catcode`\}=2\relax % need to recognize balanced braces - \catcode`\%=14\relax % need to ignore comments - \let\par=\relax - \ignorereader} -\long -\def\ignorereader #1{% - \endgroup} - -\message{runners,} - -% contents of headers and footers -\newtoks\versoleftheader -\newtoks\versocenterheader -\newtoks\versorightheader -\newtoks\rectoleftheader -\newtoks\rectocenterheader -\newtoks\rectorightheader - -\newtoks\versoleftfooter -\newtoks\versocenterfooter -\newtoks\versorightfooter -\newtoks\rectoleftfooter -\newtoks\rectocenterfooter -\newtoks\rectorightfooter - -\newtoks\runnerfont - -\rectoheader={\the\runnerfont - \line{\hbox to\z@{\the\rectoleftheader\hss}\hfil - \hbox to\z@{\hss\the\rectocenterheader\hss}\hfil - \hbox to\z@{\hss\the\rectorightheader}}} -\versoheader={\the\runnerfont - \line{\hbox to\z@{\the\versoleftheader\hss}\hfil - \hbox to\z@{\hss\the\versocenterheader\hss}\hfil - \hbox to\z@{\hss\the\versorightheader}}} -\rectofooter={\the\runnerfont - \line{\hbox to\z@{\the\rectoleftfooter\hss}\hfil - \hbox to\z@{\hss\the\rectocenterfooter\hss}\hfil - \hbox to\z@{\hss\the\rectorightfooter}}} -\versofooter={\the\runnerfont - \line{\hbox to\z@{\the\versoleftfooter\hss}\hfil - \hbox to\z@{\hss\the\versocenterfooter\hss}\hfil - \hbox to\z@{\hss\the\versorightfooter}}} - -\versoleftheader={\bf\folio} -\rectoleftheader={\firstm@rk} -\rectorightheader={\bf\folio} - -\versocenterfooter={\bf\folio} -\rectocenterfooter={\bf\folio} - -% convenient runner settings: args are toklists -\let\fixedhead=\versorightheader -\let\runninghead=\rectoleftheader - -\message{glosses,} - -% top gloss: copyright -\newif\ifshowcopyright -\newtoks\copyrightholder -\def\copyrightpage {\ifshowcopyright\yestopgloss\fi} -\copyrightholder={by the author} -\topgloss={\regsize\bf - Copyright $\m@th\copyright$ \number\year~\the\copyrightholder\hfil - \shortdate \enspace[\daytime]} - -% drafts -\def\draft {% - \ymessage{{Draft}} - \overfullrule=5\p@ - \bottomgloss={\regsize\bf - DRAFT $\bullet$ DRAFT $\bullet$ DRAFT\hfil - \date \enspace [\daytime]} - \bottomglosstrue} - -\message{paragraphs,} - -% disciplined \rem@veindent -\newif\ifvpar -\def\vpar {% - \ifvpar \edef\next{\the\everypar}\ifx\next\empty \rem@veindent \fi\fi} -\def\unvpar {\everypar={}} - -% various paragraph shapes -\newpar\ivpar - \argtext - \setup - \vestindent \parindent - \starter \noindent - \endnew -\newpar\ipar - \argtext - \setup - \vestindent \parindent - \starter \indent - \endnew -\newdimen\partagsep -\newbox\partagbox -\newpar\ftpar - \argtext #1% - \setup \setbox\partagbox=\hbox{#1}% - \ifdim \wd\partagbox<\parindent - \setbox\partagbox=\hbox to\parindent{\unhbox\partagbox \hfil}% - \else - \setbox\partagbox=\hbox{\unhbox\partagbox \hskip\partagsep}\fi - \vestindent \parindent - \starter \noindent \box\partagbox \ignorespaces - \endnew -\newpar\atpar - \argtext #1% - \setup - \vestindent \parindent - \starter \noindent \hbox to\parindent {\hss #1\hskip\partagsep}\ignorespaces - \endnew -\newpar\vtpar - \argtext #1% - \setup \setbox\partagbox=\hbox{#1\hskip\partagsep}% - \vestindent 1\wd\partagbox - \starter \noindent \box\partagbox \ignorespaces - \endnew - -% bullet paragraphs and lists thereof -\newpar\bpar - \argtext - \setup - \vestindent \parindent - \starter \noindent \hbox to\parindent {$\m@th\bullet$\hfil}\ignorespaces - \endnew - -\newelement\bullets - \setup \unvpar - \above \minbreak \prebulletspenalty \abovebulletsskip - \below \dobreak \postbulletspenalty \belowbulletsskip \vpar - \begin - \end \endgraf - \endnew -\setskip\abovebulletsskip \dimen 2pt \glue \parskip \factor 500 -\setskip\belowbulletsskip \dimen 2pt \glue \parskip \factor 500 -\prebulletspenalty=-200 -\postbulletspenalty=-200 - -% quotes -\newtoks\quotefont -\newelement\quote - \setup \advance\leftskip\parindent \advance\rightskip\parindent - \unvpar \the\quotefont \offindent - \above \vskip\baselineskip \nobreak % compensate for smaller baseline - \begingroup \the\quotefont \vskip-\baselineskip \endgroup - \below \vpar - \begin - \end \endgraf - \endnew - -% ragged center (mostly from the TeXbook) -\def\raggedcenter {% - \leftskip=\z@ plus2em \rightskip=\leftskip - \spaceskip=.3333em \xspaceskip=.5em \parfillskip=\z@ - \pretolerance=9999 \tolerance=9999 \hbadness=9999 - \hyphenpenalty=9999 \exhyphenpenalty=9999 - \offindent} - -% ragged left -\def\raggedleft {% - \leftskip=\z@ plus2em \rightskip=\z@skip - \spaceskip=.3333em \xspaceskip=.5em \parfillskip=\z@ - \pretolerance=9999 \tolerance=9999 \hbadness=9999 - \hyphenpenalty=9999 \exhyphenpenalty=9999 - \offindent} - -\message{textual displays,} - -% nofill -\newelement\nofill - \setup \offindent \setupnofill - \above \vskip\parskip % compensate for loss of \parskip - \below \vpar - \begin - \end \endgraf - \endnew - -\newtext\text - \display - \setup \hsize=\displaywidth \advance\leftskip\displayindent \setupnofill - \begin - \end - \endnew -\newtext\textlines - \display \displaywidth=\hsize \displayindent=\z@ - \setup \setupnofill - \begin - \end - \endnew -\newtext\code - \display - \setup \hsize=\displaywidth \advance\leftskip\displayindent \tt \setupnofill - \begin - \end - \endnew -\newtext\codelines - \display \displaywidth=\hsize \displayindent=\z@ - \setup \tt \setupnofill - \begin - \end - \endnew - -% verbatim material -\def\beginverbatim {% - \par - \beginpgroup - \vskip\parskip - \setupverbatim - \re@dverbatim} -{\obeylines \catcode`\|=\@scape \catcode`\\=\@ther % - |gdef|re@dverbatim#1^^M#2\endverbatim{#1#2|endgroup}} - -\newverbatim\verb - \begincs \beginverb - \readcs \readv@rb - \endcsname endverb% - \display - \setup \hsize=\displaywidth \advance\leftskip\displayindent \tt - \begin - \end - \endnew -\newverbatim\verblines - \begincs \beginverblines - \readcs \readv@rblines - \endcsname endverblines% - \display \displaywidth=\hsize \displayindent=\z@ - \setup \tt - \begin - \end - \endnew - -\message{lisp programs,} - -% make semis active a la \obeylines -{\catcode`\;=\@ctive - \gdef\obeysemis {\catcode`\;=\@ctive\relax \let;=\lispsemi}} - -% \beginl@sp <body> \endl@sp -\def\beginl@sp {% - \beginpgroup - % semis start comments unless immediately followed by \pbrk - \def\lispsemi{\futurelet\next\l@spsemi}% - \def\l@spsemi{\ifx\next\pbrk \let\next=\relax - \else \let\next=\l@spcomment\fi - \next}% - \obeysemis - % spaces made active so they start paragraphs - % and so multiple spaces aren't collapsed to one. - \activespaces\ % - % nofill via every line a par, if spaces start next line - % we do a \noindent to make sure a par gets started. - % in addition, turn off interline skip and use struts - % to insure baseline spacing - \offinterlineskip - \parskip=\z@skip - \def\par{\ifhmode \nobreak\strut \fi \endgraf} - \obeylines - % compensate for loss of baseline spacing - \skip@=\dp\strutbox \advance\skip@ -\prevdepth - \ifdim \skip@>\z@ \vskip\skip@ \nobreak \fi - % make ',` do the right thing; make &, #, <> harmless - \makebqspecial - \makeandother - \makesharpother - \makelgtother - \vbox\bgroup} - -\def\endl@sp {% - \egroup - \endpgroup} - -{\obeylines % for defs that happen where ^^M is active -% each program is a box, preventing page splits, but we -% make the \pbrk macro work a la \noalign whose arg is -% the entire rest of the line. -\gdef\pbrk #1^^M{% - \egroup% - \def\next{#1}% - \ifx\empty\next% - \smallskip - \else \begingroup \activespaces\space \next\endgroup\fi% - \vbox\bgroup% - ^^M} % end with a CR since arg did -% semicolons start program comments which end with the end -% of the line. These comments are in roman, in an \hbox to -% avoid line breaking, <> become angle brackets, -% and ; becomes harmless -\gdef\l@spcomment {% - \begingroup% - \def\lispsemi{;\kern\p@}\obeysemis % this works even if ; already read - \def^^M{\egroup\endgroup^^M}% end with ^^M since line does - \leavevmode\hbox\bgroup \rm \strut;\kern\p@}% -} % end of def group - -\newtoks\lispfont -\newtext\lisp - \display - \setup \hsize=\displaywidth \advance\leftskip\displayindent - \the\lispfont - \begin \beginl@sp - \end \endl@sp - \endnew -\newtext\lisplines - \display \displaywidth=\hsize \displayindent=\z@ - \setup \the\lispfont - \begin \beginl@sp - \end \endl@sp - \endnew - -\message{footnotes,} - -\let\footdef=\relax -\let\footref=\relax - -\newfloat\footn@te - \type \botfloat - \floatsetup \setupfootnotefloat - \setup \setupfootnote - \floatabove - \floatbelow - \begin \startfootnote - \end \strut\endgraf - \endnew - -\def\setupfootnotefloat {% - \splittopskip=\ht\strutbox % top baseline for broken footnotes - \splitmaxdepth=\dp\strutbox - \floatingpenalty=\@M - \setupfootnotefloathook} -\def\setupfootnotefloathook {} - -\newtoks\footnotefont -\def\setupfootnote {% - \interlinepenalty=\interfootnotelinepenalty - \leftskip=\footnotemarkerwidth - \parfillskip=\filskip - \rightskip=\z@skip - \spaceskip=\z@skip - \xspaceskip=\z@skip - \the\footnotefont - \setupfootnotehook} -\def\setupfootnotehook {} - -% footnote markers -\newdimen\footnotemarkerwidth -\def\footstrut {\vbox to\splittopskip{}} -\def\startfootnote #1{% - \noindent \llap{#1}\footstrut} - -% hmode footnote invocation -\def\footnote #1{\let\@sf\empty - \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi - #1\@sf\beginfootn@te{#1}\futurelet\next\fo@t} -\def\@foot {\endfootn@te} - -% numbered hmode footnote -\def\nfootnote #1{\footnote{$\m@th^{#1}$}} - -% vmode footnote invocation -\def\vfootnote #1{\beginfootn@te{#1}\futurelet\next\fo@t} - -% general footnote invocation -\newfloat\footmatter - \type \botfloat - \floatsetup \setupfootnotefloat \leftskip=\z@skip - \setup \setupfootnote - \floatabove - \floatbelow - \begin \noindent \footstrut - \end \strut\endgraf - \endnew - -\message{figures,} - -\let\figdef=\relax -\let\figref=\relax - -% lines above and below figures -\newif\iffigureline -\newdimen\figurelinedrop -\def\figl@nabove {% - \iffigureline \hrule \vskip\figurelinedrop\relax \fi} -\def\figl@nbelow {% - \iffigureline \nobreak \vskip\figurelinedrop \hrule\relax \fi} - -% figure environment definitions -\newdimen\captionindent -\newtoks\captionfont -\def\setupcaption {% - \leftskip=\captionindent - \rightskip=\captionindent - \the\captionfont - \parskip=\z@skip - \everypar={}% - \vpar - \setupcaptionhook} -\def\setupcaptionhook {} - -\newelement\c@ption - \setup \setupcaption - \above \dobreak \prec@ptionpenalty \abovec@ptionskip - \below \dobreak \postc@ptionpenalty \belowc@ptionskip - \begin - \end \ifhmode \vrule width\z@ height\z@ depth\dp\strutbox \fi \endgraf - \endnew -\let\abovecaptionskip=\abovec@ptionskip -\let\belowcaptionskip=\belowc@ptionskip -\let\precaptionpenalty=\prec@ptionpenalty -\let\postcaptionpenalty=\postc@ptionpenalty - -\def\setupfigure {% - \let\begincaption=\beginc@ption - \let\endcaption=\endc@ption - \let\caption=\c@ption - \leftskip=\z@skip - \rightskip=\z@skip - \spaceskip=\z@skip - \xspaceskip=\z@skip - \parfillskip=\filskip - \everypar={}% - \setupfigurehook} -\def\setupfigurehook {} - -% figure type indicators -\newif\ifstationaryfigur@ -\newif\ifsectionfigur@ -\newif\iftopfigur@ -\newif\iffloatingfigur@ - -% stationary figures -\newelement\stationaryfigure - \setup \stationaryfigur@true \setupfigure - \above \minbreak \prestationaryfigurepenalty \abovestationaryfigureskip - \nointerlineskip - \below \dobreak \poststationaryfigurepenalty \belowstationaryfigureskip - \nointerlineskip - \begin \vbox\bgroup \figl@nabove - \end \figl@nbelow \egroup - \endnew -\abovestationaryfigureskip=\bigskipamount -\belowstationaryfigureskip=\bigskipamount -\prestationaryfigurepenalty=\z@ -\poststationaryfigurepenalty=-200 -\newpage\pagestationaryfigure - \setup \stationaryfigur@true \setupfigure - \glue - \begin \vbox to\vsize\bgroup \figl@nabove - \end \figl@nbelow \vskip \z@ plus\@M\p@ \egroup - \endnew -\def\stationaryfigures {% - \let\figure=\stationaryfigure - \let\pagefigure=\stationarypagefigure - \let\beginfigure=\beginstationaryfigure - \let\endfigure=\endstationaryfigure - \let\beginpagefigure=\beginstationarypagefigure - \let\endpagefigure=\endstationarypagefigure - \let\abovefigureskip=\abovestationaryfigureskip - \let\belowfigureskip=\belowstationaryfigureskip - \let\prefigurepenalty=\prestationaryfigurepenalty - \let\postfigurepenalty=\poststationaryfigurepenalty} - -% section figures -\newelement\sectionfigure - \setup \sectionfigur@true \setupfigure - \above \dobreak \presectionfigurepenalty \abovesectionfigureskip - \nointerlineskip - \below \dobreak \postsectionfigurepenalty \belowsectionfigureskip - \nointerlineskip - \begin \vbox\bgroup \figl@nabove - \end \figl@nbelow \egroup - \endnew -\abovesectionfigureskip=\z@skip -\belowsectionfigureskip=\fillskip -\presectionfigurepenalty=\@M -\postsectionfigurepenalty=-200 -\newpage\sectionpagefigure - \setup \sectionfigur@true \setupfigure - \glue - \begin \vbox to\vsize\bgroup \figl@nabove - \end \figl@nbelow \vskip \z@ plus\@M\p@ \egroup - \endnew -\def\sectionfigures {% - \let\figure=\sectionfigure - \let\pagefigure=\sectionpagefigure - \let\beginfigure=\beginsectionfigure - \let\endfigure=\endsectionfigure - \let\beginpagefigure=\beginsectionpagefigure - \let\endpagefigure=\endsectionpagefigure - \let\abovefigureskip=\abovesectionfigureskip - \let\belowfigureskip=\belowsectionfigureskip - \let\prefigurepenalty=\presectionfigurepenalty - \let\postfigurepenalty=\postsectionfigurepenalty} - -% floating top figures -\newskip\abovetopfigureskip \abovetopfigureskip=\z@skip -\newskip\belowtopfigureskip \belowtopfigureskip=\bigskipamount -\newcount\pretopfigurepenalty \pretopfigurepenalty=100 -\newcount\posttopfigurepenalty \posttopfigurepenalty=\z@ -\newfloat\topfigure - \type \topfloat - \floatsetup \floatingpenalty\posttopfigurepenalty - \splitmaxdepth\maxdimen \splittopskip\z@skip - \setup \topfigur@true \setupfigure - \floatabove \penalty\pretopfigurepenalty \vskip\abovetopfigureskip - \nointerlineskip - \floatbelow \nobreak \vskip\belowtopfigureskip - \begin \vbox\bgroup \figl@nabove - \end \figl@nbelow \egroup - \endnew -\newpagefloat\toppagefigure - \type \topfloat - \floatsetup \penalty\pretopfigurepenalty - \floatingpenalty\posttopfigurepenalty - \splitmaxdepth\maxdimen \splittopskip\z@skip - \setup \topfigur@true \setupfigure - \above - \below - \begin \vbox to\vsize\bgroup \figl@nabove - \end \figl@nbelow \vskip \z@ plus\@M\p@ \egroup - \endnew -\gdef\topfigures {% - \let\figure=\topfigure - \let\pagefigure=\toppagefigure - \let\beginfigure=\begintopfigure - \let\endfigure=\endtopfigure - \let\beginpagefigure=\begintoppagefigure - \let\endpagefigure=\endtoppagefigure - \let\abovefigureskip=\abovetopfigureskip - \let\belowfigureskip=\belowtopfigureskip - \let\prefigurepenalty=\pretopfigurepenalty - \let\postfigurepenalty=\posttopfigurepenalty} - -% inline/floating figures -\newskip\floatabovefloatingfigureskip -\newskip\floatbelowfloatingfigureskip -\newcount\floatprefloatingfigurepenalty -\newcount\floatpostfloatingfigurepenalty -\floatabovefloatingfigureskip=\z@skip -\floatbelowfloatingfigureskip=\bigskipamount -\floatprefloatingfigurepenalty=100 -\floatpostfloatingfigurepenalty=\z@ -\newskip\abovefloatingfigureskip \abovefloatingfigureskip=\bigskipamount -\newskip\belowfloatingfigureskip \belowfloatingfigureskip=\bigskipamount -\newcount\prefloatingfigurepenalty \prefloatingfigurepenalty=\z@ -\newcount\postfloatingfigurepenalty \postfloatingfigurepenalty=-200 -\newfitfloat\floatingfigure - \type \topfloat - \floatsetup \floatingpenalty\floatpostfloatingfigurepenalty - \splitmaxdepth\maxdimen \splittopskip\z@skip - \setup \floatingfigur@true \setupfigure - \floatabove \penalty\floatprefloatingfigurepenalty - \vskip\floatabovefloatingfigureskip - \nointerlineskip - \floatbelow \nobreak \vskip\floatbelowfloatingfigureskip - \above \penalty\prefloatingfigurepenalty - \vskip\abovefloatingfigureskip - \nointerlineskip - \below \penalty\postfloatingfigurepenalty - \vskip\belowfloatingfigureskip - \nointerlineskip \vpar - \begin \vbox\bgroup \figl@nabove - \end \figl@nbelow \egroup - \endnew -\newpagefloat\floatingpagefigure - \type \topfloat - \floatsetup \penalty\floatprefloatingfigurepenalty - \floatingpenalty\floatpostfloatingfigurepenalty - \splitmaxdepth\maxdimen \splittopskip\z@skip - \setup \floatingfigur@true \setupfigure - \above - \below - \begin \vbox to\vsize\bgroup \figl@nabove - \end \figl@nbelow \vskip \z@ plus\@M\p@ \egroup - \endnew -\gdef\floatingfigures {% - \let\figure=\floatingfigure - \let\pagefigure=\floatingpagefigure - \let\beginfigure=\beginfloatingfigure - \let\endfigure=\endfloatingfigure - \let\beginpagefigure=\beginfloatingpagefigure - \let\endpagefigure=\endfloatingpagefigure - \let\abovefigureskip=\abovefloatingfigureskip - \let\belowfigureskip=\belowfloatingfigureskip - \let\prefigurepenalty=\prefloatingfigurepenalty - \let\postfigurepenalty=\postfloatingfigurepenalty} - -\message{tables,} - -\let\tabdef=\relax -\let\tabref=\relax - -\newtable\table - \leftdelim [% - \rightdelim ]% - \before \vbox\bgroup - \after \egroup - \begin - \end - \endnew -\newtable\toptable - \leftdelim [% - \rightdelim ]% - \before \vtop\bgroup - \after \egroup - \begin - \end - \endnew -\newtable\centertable - \leftdelim [% - \rightdelim ]% - \before \vcenter\bgroup - \after \egroup - \begin - \end - \endnew -\newtable\opentable - \leftdelim [% - \rightdelim ]% - \before - \after - \begin - \end - \endnew -\newtable\displaytable - \leftdelim [% - \rightdelim ]% - \before \tablewidth=\hsize$$ - \after $$ - \begin - \end - \endnew - -\message{equations,} - -% equation numbering -\let\eqdef=\relax -\let\eqref=\relax - -% synonyms for $$ -\def\beginmath {$$} -\def\endmath {$$} -\def\math #1{$$#1$$} - -\message{chapters and sections,} - -\let\secref=\relax -\let\secdef=\relax - -% are section, etc. headings centered or left-flush -\newif\ifcenterheadings - -% chapters -\newtoks\chapterfont -\newtitle\chaptertitle - \box \vopen - \shape \ifcenterheadings \titlecenter{\z@}{\z@}\else - \titleleft{\z@}{\z@}\fi - \font \the\chapterfont - \setup \interlinepenalty=\@M - \begin - \end - \endnew - -\def\chaptersetup {% - \chaptersetuphook} -\def\chaptersetuphook {} - -\newelement\chapter - \setup \get@rg\endchapter \chaptersetup - \above \minbreak \prechapterpenalty \abovechapterskip - \below \dobreak \postchapterpenalty \belowchapterskip \vpar - \begin \get@rg - \end \ymessage{{Chapter: \the\toks@}}\chaptertitle{\the\toks@}% - \endnew -\setskip\abovechapterskip \dimen 36pt \glue \parskip \factor 3000 -\setskip\belowchapterskip \dimen 18pt \glue \parskip \factor 2000 -\prechapterpenalty=-500 -\postchapterpenalty=10000 - -\newelement\pchapter - \setup \get@rg\endpchapter \chaptersetup - \above \rectosupereject - \below \dobreak \postchapterpenalty \belowchapterskip \vpar - \begin \get@rg - \end \ymessage{{Chapter: \the\toks@}}\chaptertitle{\the\toks@}% - \endnew - -% starts sections. -\newtoks\sectionfont -\newtitle\sectiontitle - \box \vbottom - \shape \ifcenterheadings \titlecenter{\z@}{\z@}\else - \titleleft{\z@}{\z@}\fi - \font \the\sectionfont - \setup - \begin - \end - \endnew - -\def\sectionsetup {% - \sectionsetuphook} -\def\sectionsetuphook {} - -\newelement\section - \setup \get@rg\endsection \sectionsetup - \above \minbreak \presectionpenalty \abovesectionskip - \below \dobreak \postsectionpenalty \belowsectionskip \vpar - \begin \get@rg - \end \ymessage{{Section: \the\toks@}}\sectiontitle{\the\toks@}% - \endnew -\setskip\abovesectionskip \dimen 18pt \glue \parskip \factor 3000 -\setskip\belowsectionskip \dimen 9pt \glue \parskip \factor 2000 -\presectionpenalty=-200 -\postsectionpenalty=10000 - -\let\beginsubsection=\beginsection -\let\endsubsection=\endsection -\let\subsection=\section - -\let\beginsubsubsection=\beginsubsection -\let\endsubsubsection=\endsubsection -\let\subsubsection=\subsection - -% simple heading -\newtoks\headingfont -\newtitle\headingtitle - \box \vbottom - \shape \ifcenterheadings \titlecenter{\z@}{\z@}\else - \titleleft{\z@}{\z@}\fi - \font \the\headingfont - \setup - \begin - \end - \endnew - -\def\headingsetup {% - \headingsetuphook} -\def\headingsetuphook {} - -\newelement\heading - \setup \get@rg\endheading \headingsetup - \above \minbreak \preheadingpenalty \aboveheadingskip - \below \dobreak \postheadingpenalty \belowheadingskip \vpar - \begin \get@rg - \end \ymessage{{Heading: \the\toks@}}\headingtitle{\the\toks@}% - \endnew -\setskip\aboveheadingskip \dimen 9pt \glue \parskip \factor 1000 -\setskip\belowheadingskip \dimen 4pt \glue \parskip \factor 1000 -\preheadingpenalty=-200 -\postheadingpenalty=10000 - -\message{special pages,} - -% titling pages -\newsuperpage\titlingpage - \setup \norunners \copyrightpage - \glue \vfil - \begin - \end - \endnew - -% main title pages -\newelement\titlepage - \setup \titlepagedefs - \above - \below - \begin \begintitlingpage \global\pageno=\z@ \ymessage{{Main title}} - \end \endgraf \endtitlingpage \global\pageno=\@ne - \endnew - -% title pages for sub-parts of a book, etc. -\newelement\partpage - \setup \titlepagedefs - \above - \below - \begin \begintitlingpage \ymessage{{Part title}} - \end \endgraf \endtitlingpage - \endnew - -% titles and abstracts -\newtoks\titlefont -\newtoks\authorfont -\newtitle\title - \box \vbottom - \shape \titleleft{\z@}{\z@}% - \font \the\titlefont - \setup - \begin - \end - \endnew -\newtitle\ctitle - \box \vbottom - \shape \titlecenter{\z@}{\z@}% - \font \the\titlefont - \setup - \begin - \end - \endnew -\newtitle\author - \box \vbottom - \shape \titleleft{\z@}{\z@}% - \font \the\authorfont - \setup - \begin - \end - \endnew -\newtitle\cauthor - \box \vbottom - \shape \titlecenter{\z@}{\z@}% - \font \the\authorfont - \setup - \begin - \end - \endnew - -\newtoks\abstractfont -\newdimen\abstractindent -\newelement\abstract - \setup \the\abstractfont \parindent=2em% - \leftskip=\abstractindent \rightskip=\abstractindent - \above \minbreak \preabstractpenalty \aboveabstractskip - \below \dobreak \postabstractpenalty \belowabstractskip - \begin - \end \endgraf - \endnew - -\newtoks\bottomtextfont -\def\titlepagedefs {% - \newelement\bottomtext - \setup \the\bottomtextfont \offindent - \above \bigskip \vfill - \below - \begin - \end \endgraf - \endnew} - -\message{2 columns,} - -% N.B. this stuff mostly adapted from the TeXbook - -% parameters -\newdimen\columnskip - -\newbox\partialp@ge -\newdimen\onec@lhsize -\newdimen\onec@lvsize -\newtoks\onec@loutput -\newdimen\twoc@lvsize - -\def\setuptwocolumn {% - \trimpagesfalse - \onec@lfigfoot - \def\columneject{\vfil\penalty200}% - \baselinefactor={1.2}\setnormalbaselines - \spaceskip=.3333em plus .3333em minus .1666em - \xspaceskip=.3333em plus .6666em minus .0833em - \advance\parskip by 0pt plus 2pt - \setuptwocolumnhook} -\def\setuptwocolumnhook {} - -% make figures and footnotes be one column -\def\onec@lfigfoot {% - \topmag=2000% - \botmag=2000% - \addtodef\setupfigurehook{% - \iffloatingfigur@ - \errhelp={I will assume it doesn't float.}% - \errmessage{You can't use a floating figure in two-column text.}% - \fi - \iftopfigur@ \hsize=\onec@lhsize \fi - \vsize=\onec@lvsize}% - \addtodef\setupfootnotehook{\hsize=\onec@lhsize}} - -\def\begintwocolumntext {% - \begingroup - \onec@lhsize=\hsize - \onec@lvsize=\vsize - \onec@loutput=\output - \output={\global\setbox\partialp@ge=\vbox{\unvbox\@cclv}}% - \let\dosupereject=\twoc@lsupereject - \eject - \output={\twoc@lout}% - \hsize=.5\hsize \advance\hsize by-.5\columnskip - \vsize=2\vsize \advance\vsize by2pc\relax - \twoc@lvsize=\vsize - \advance\vsize by-2\ht\partialp@ge - \setuptwocolumn} - -\def\endtwocolumntext {% - \output={\balancec@ls}% - \eject - \global\output=\onec@loutput - \global\vsize=\onec@lvsize - \endgroup - \pagegoal=\vsize} - -\def\twocolumntext #1{\begintwocolumntext #1\endtwocolumntext} - -\def\twoc@lout {% - \dimen@=\onec@lvsize \advance\dimen@ by-\ht\partialp@ge - \advance\dimen@ by-\ht\topfloat \advance\dimen@ by-\dp\topfloat - \advance\dimen@ by-\ht\botfloat \advance\dimen@ by-\dp\botfloat - \ifdim \dimen@>\baselineskip - \dimen@i=\ht\@cclv \advance\dimen@i\dp\@cclv - \ifdim \dimen@i>\z@ - \splittopskip=\topskip \splitmaxdepth=\maxdimen - \setbox\z@=\vsplit\@cclv to\dimen@ - \setbox\@ne=\vsplit\@cclv to\dimen@ - \else - \setbox\z@=\box\voidb@x - \setbox\@ne=\box\voidb@x - \fi - \else - \setbox\z@=\box\voidb@x - \setbox\@ne=\box\voidb@x - \fi - \def\line{\hbox to\onec@lhsize}% - \let\pagebody=\twoc@lpagebody - \ytexoutput - \global\vsize=\twoc@lvsize - \unvbox\@cclv - \penalty\outputpenalty} - -\def\twoc@lsupereject {% - \ifnum\insertpenalties>\z@ % something is being held over - \hbox{}\kern-\topskip\nobreak\vskip 0pt plus.5\vsize\penalty-200% - \hbox{}\kern-\topskip\nobreak\vskip 0pt plus.5\vsize\supereject\fi} - -\def\twoc@lpagebody {% - \vbox{\twoc@lpagecontents}} - -\def\twoc@lpagecontents {% - \dimen@i=\ht\partialp@ge \advance\dimen@i\ht\z@ - \ifvoid\topfloat\else - \dimen@=\ht\topfloat \advance\dimen@\dp\topfloat - \unvbox\topfloat - \ifdim \dimen@>\z@ \ifdim\dimen@i>\z@ \the\topsep\fi\fi - \fi - \unvbox\partialp@ge - \wd\z@=\hsize \wd\@ne=\hsize - \hbox to\onec@lhsize{\box\z@\hfil\box\@ne} - \ifvoid\botfloat\else - \dimen@=\ht\botfloat \advance\dimen@\dp\botfloat - \ifdim \dimen@>\z@ \ifdim\dimen@i>\z@ \the\botsep\fi\fi - \unvbox\botfloat - \fi} - -\def\balancec@ls {% - \setbox\z@=\vbox{\unvbox\@cclv}% - \dimen@=\ht\z@ \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip - \divide\dimen@ by2 \splittopskip=\topskip \splitmaxdepth=\maxdimen - {\vbadness=10000 - \loop \global\setbox\tw@=\copy\z@ \global\setbox\@ne=\vsplit\tw@ to\dimen@ - \ifdim\ht\tw@>\dimen@ \global\advance\dimen@ by\p@ \repeat} - \setbox\z@=\vbox to\dimen@{\unvbox\@ne}% - \setbox\@ne=\vbox to\dimen@{\unvbox\tw@}% - \global\output={\balancing@rror} - \unvbox\partialp@ge - \wd\z@=\hsize \wd\@ne=\hsize - \hbox to\onec@lhsize{\box\z@\hfil\box\@ne}} - -\def\balancing@rror {% - \errhelp={Please change the page into one that works.}% - \errmessage{Page can't be balanced.}% - \def\line{\hbox to\onec@lhsize}% - \def\pagebody{\vbox{\unvbox\@cclv}}% - \ytexoutput} - -% complete double columns -\newif\iffirstc@l -\newbox\firstc@l -\newbox\secondc@l - -\def\setupdoublecolumn {% - \trimpagesfalse - \def\pageeject{% - \filpage\iffirstc@l \else \line{}\filpage \fi}% - \baselinefactor={1.2}\setnormalbaselines - \spaceskip=.3333em plus .3333em minus .1666em - \xspaceskip=.3333em plus .6666em minus .0833em - \advance\parskip by 0pt plus 2pt - \setupdoublecolumnhook} -\def\setupdoublecolumnhook {} - -\def\begindoublecolumn {% - \begingroup - \onec@lhsize=\hsize - \output={\box\@cclv=\voidb@x}% - \eject - \output={\doublec@lout}% - \global\firstc@ltrue - \hsize=.5\hsize \advance\hsize by-.5\columnskip - \setupdoublecolumn} - -\def\enddoublecolumn {% - \pageeject - \endgroup - \pagegoal=\vsize} - -\def\doublecolumn #1{\begindoublecolumn #1\enddoublecolumn} - -\def\doublec@lout {% - \iffirstc@l - \def\line{\hbox to\onec@lhsize}% - \global\setbox\firstc@l=\pagebody - \def\next{\global\firstc@lfalse} - \else - \def\line{\hbox to\onec@lhsize}% - \global\setbox\secondc@l=\pagebody - \wd\firstc@l=\hsize - \wd\secondc@l=\hsize - \def\pagecontents{\vbox{\line{\box\firstc@l\hfil\box\secondc@l}}}% - \def\next{\ytexoutput\global\firstc@ltrue}% - \fi - \next} - -\message{indexes,} - -\gdef\beginindex {% - \beginpgroup - \def\entry##1{% - \hangindent=2\parindent - \hangafter=\@ne - \noindent ##1\par} - \def\subentry##1{% - \hangindent=2\parindent - \hangafter=\@ne - \indent ##1\par} - \raggedright - \exhyphenpenalty=\@M - \tolerance=\@M - \interlinepenalty=\@M - \begintwocolumntext} - -\gdef\endindex {% - \endtwocolumntext - \endpgroup} - -\message {citations,} - -\def\writec@te {\write\m@ne} - -\def\setciteaux #1{% - \stripn@me{}#1% - \edef\writec@te{\expandafter\noexpand\csname write\next \endcsname}} - -\def\c@te #1{% - \expandafter\ifx \csname @cd-#1\endcsname \relax - \expandafter\let\csname @cd-#1\endcsname=\cite% - \writec@te{\string\citation{#1}}% - \fi - \expandafter\ifx \csname @cr-#1\endcsname \relax - \expandafter\def\csname @cr-#1\endcsname{??}% - \ywarning{{Citation #1 undefined}}% - \fi} - -\def\cite #1{% - \c@te{#1}% - \csname @cr-#1\endcsname} - -\def\explicitcite #1#2{% - \c@te{#1}% - #2} -\let\ecite=\explicitcite - -\def\citation #1{\relax} - -\def\bibcite #1#2{% - \expandafter\def\csname @cr-#1\endcsname{#2}} - -\def\setbibstyle #1{% - \toks@={#1}% - \immediate\writec@te{\string\bibstyle{\the\toks@}}} - -\def\bibstyle #1{\relax} - -\newcount\bibcount -\newskip\bibparskip -\newtoks\biblabelfont -\newtoks\bibsetup -\newif\ifbibopenform - -\def\setupbibliography #1{ - \bibcount=\z@ - \setbox\z@=\hbox{\the\biblabelfont [#1]\enspace}\parindent=\wd\z@ - \ifbibopenform \let\newblock=\linebreak \else \let\newblock=\relax \fi - \setupbibliographyhook}% - -\def\setupbibliographyhook {} - -\def\bibpar #1{\ftpar{\the\biblabelfont [#1]}} - -\def\bibitem {\futurelet\next\bib@tem} -\def\bib@tem {% - \if[\noexpand\next - \let\next=\bibit@m - \else - \let\next\b@bitem - \fi - \next} -\def\bibit@m [#1]#2{% - \toks@={#1}% - \immediate\writec@te{\string\bibcite{#2}{\the\toks@}}% - \bibpar{#1}} -\def\b@bitem #1{% - \advance\bibcount\@ne - \edef\next{\number\bibcount} - \immediate\writec@te{\string\bibcite{#1}{\next}}% - \bibpar{\number\bibcount}} - -\def\bibliography #1{% - \toks@={#1}% - \immediate\writec@te{\string\bibdata{\the\toks@}}% - \begingroup % for latex-like defs - \def\begin##1##2{\begingroup \setupbibliography{##2}}% - \def\end##1{\par\endgroup}% - \@input{\jobname.bbl}{\ywarning{{No file \jobname.bbl}}}% - \endgroup} - -\def\explicitbibliography #1#2{% - \toks@={#1}% - \writec@te{\string\bibdata{\the\toks@}} - \@input{#2.bbl}{\ywarning{{No file #2.bbl}}}} -\let\ebibligraphy=\explicitbibliography - -\def\bibdata #1{\relax} - -\message {labels,} - -\def\writel@bel {\write\m@ne} - -\def\setlabelaux #1{% - \stripn@me{}#1% - \edef\writel@bel{\expandafter\noexpand\csname write\next \endcsname}} - -\def\reference #1{% - \expandafter\ifx \csname @lr-#1\endcsname \relax - \expandafter\def\csname @lr-#1\endcsname{??}% - \ywarning{{Reference #1 undefined}}% - \else - \csname @lr-#1\endcsname - \fi} - -\def\pagereference #1{% - \expandafter\ifx \csname @lrp-#1\endcsname \relax - \expandafter\def\csname @lrp-#1\endcsname{??}% - \ywarning{{Page reference #1 undefined}}% - \else - \csname @lrp-#1\endcsname - \fi} - -\def\label #1#2{% - \edef\next{#2}% - \expandafter\ifx \csname @lr-#1\endcsname \relax - \ywarning{{Label #1 defined as \next}}% - \fi - \expandafter\let\csname @lr-#1\endcsname=\next - \writel@bel{\string\deflabel{#1}{\csname @lr-#1\endcsname}{\the\pageno}}} - -\def\deflabel #1#2#3{% - \expandafter\def\csname @lr-#1\endcsname{#2}% - \expandafter\def\csname @lrp-#1\endcsname{#3}} - -\message{initialization,} - -% output routine -\output={\fixsiz@ \ytexoutput} - -% page layout -\hsize=28pc \vsize=44pc -\onheaders -\offfooters -\twosidedfalse -\showcopyrightfalse -\columnskip=2pc - -% displays -\abovedisplayskip=3pt plus1pt minus2pt -\belowdisplayskip=3pt plus1pt minus2pt -\abovedisplayshortskip=0pt plus1pt -\belowdisplayshortskip=2pt plus1pt minus1pt - -% footnotes -\footnotemarkerwidth=10pt -\botsep={\vskip\bigskipamount \footnoterule} - -% figures -\figurelinefalse -\figurelinedrop=4pt -\topsep={} -\floatingfigures -\abovecaptionskip=\medskipamount -\captionindent=2em - -% tables -\tablewidth=0pt -\intabskip=\emskip -\pretabskip=\filskip -\posttabskip=\filskip - -% miscellany -\abstractindent=0pt -\centerheadingsfalse - -% citations and labels -\newaux\aux - \filename \perjob - \extension aux% - \endnew -\setciteaux\aux -\setlabelaux\aux -\bibsetup={} -\biblabelfont={} -\bibopenformfalse - -% fonts -\runnerfont={\smlsize\rm} -\footnotefont={\smlsize\rm} -\captionfont={\smlsize\rm} -\quotefont={\smlsize\rm} -\titlefont={\bigsize\bf} -\authorfont={\regsize\rm} -\abstractfont={\smlsize\rm} -\bottomtextfont={\smllsize\rm} -\chapterfont={\bigsize\bf} -\sectionfont={\regsize\bf} -\headingfont={\regsize\bf} -\lispfont={\regsize\tt} - -% running text -\vpartrue -\overfullrule=0pt -\parindent=2em -\partagsep=.5em -\parskip=1pt plus2pt minus1pt -\normallineskip=2pt -\normallineskiplimit=0pt -\def\singlespace {\baselinefactor={1.3}\setnormalbaselines} -\def\doublespace {\baselinefactor={2.6}\setnormalbaselines} -\singlespace -\clubpenalty=900 -\widowpenalty=900 - |