% nwmac.tex -- plain TeX support for noweb % DON'T read or edit this file! Use ...noweb-source/tex/support.nw instead. {\obeyspaces\global\let =\ } % from texbook, p 381 \def\nwdocspar{\par\semifilbreak} \def\nwbackslash{\char92} \def\nwlbrace{\char123} \def\nwrbrace{\char125} \catcode`\@=11 % scale cmbx10 instead of using cmbx12 because {\LaTeX} does, so fonts exist \font\twlbf=cmbx10 scaled \magstep1 \font\frtbf=cmbx10 scaled \magstep2 % These fonts don't work with xdvi! \advance\hoffset 0.5 true in \advance\hsize -1.5 true in \newdimen\textsize \textsize=\hsize \def\today{\ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi \space\number\day, \number\year} \long\def\ifundefined#1#2#3{% \expandafter\ifx\csname#1\endcsname\relax #2% \else#3% \fi} \ifundefined{myheadline} {\headline={\hbox to \textsize{\tentt\firstmark\hfil\tenrm\today\hbox to 4em{\hss\folio}}\hss}} {\expandafter\headline\expandafter{\myheadline}} \ifundefined{myfootline} {\footline={\hfil}} {\expandafter\footline\expandafter{\myfootline}} \def\semifilbreak{\vskip0pt plus1.5in\penalty-200\vskip0pt plus -1.5in} \raggedbottom % % \chapcenter macro to produce nice centered chapter titles % \def\chapcenter{\leftskip=0.5 true in plus 4em minus 0.5 true in \rightskip=\leftskip \parfillskip=0pt \spaceskip=.3333em \xspaceskip=.5em \pretolerance=9999 \tolerance=9999 \hyphenpenalty=9999 \exhyphenpenalty=9999} % \startsection{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}{HEADING} % #1 #2 #3 #4 #5 #6 % % LEVEL: depth; e.g. part=0 chapter=1 sectino=2... % INDENT: indentation of heading from left margin % BEFORESKIP: skip before header % AFTERSKIP: skip after header % STYLE: style of heading; e.g.\bf % HEADING: heading of the sectino % \def\startsection#1#2#3#4#5#6{\par\vskip#3 plus 2in \penalty-200\vskip 0pt plus -2in \noindent{\leftskip=#2 \rightskip=0.5true in plus 4em minus 0.5 true in \hyphenpenalty=9999 \exhyphenpenalty=9999 #5#6\par}\vskip#4% {\def\code##1{[[}\def\edoc##1{]]}\message{[#6]}} \settocparms{#1} \def\themodtitle{#6} %%%% {\def\code{\string\code}\def\edoc{\string\edoc}% \edef\next{\noexpand\write\cont{\tocskip \tocline{\hskip\tocindent\tocstyle\relax\themodtitle} {\noexpand\the\pageno}}}\next % write to toc %} } \def\settocparms#1{ \count@=#1 \ifnum\count@<1 \def\tocskip{\vskip3ptplus1in\penalty-100 \vskip0ptplus-1in}% \def\tocstyle{\bf} \def\tocindent{0pt} \else \def\tocskip{} \def\tocstyle{\rm} \dimen@=2em \advance\count@ by \m@ne \dimen@=\count@\dimen@ \edef\tocindent{\the\dimen@} \fi } \def\tocline#1#2{\line{{\ignorespaces#1}\leaders\hbox to .5em{.\hfil}\hfil \hbox to1.5em{\hss#2}}} \def\section#1{\par \vskip3ex\noindent {\bf #1}\par\nobreak\vskip1ex\nobreak} \def\chapter#1{\vfil\eject\startsection{0}{0pt}{6ex}{3ex}{\frtbf\chapcenter}{#1}} \def\section#1{\startsection{1}{0pt}{4ex}{2ex}{\twlbf}{#1}} \def\subsection#1{\startsection{2}{0pt}{2ex}{1ex}{\bf}{#1}} \def\subsubsection#1{\startsection{3}{0pt}{1ex}{0.5ex}{\it}{#1}} \def\paragraph#1{\startsection{4}{0pt}{1.5ex}{0ex}{\it}{#1}} % make \hsize in code sufficient for 88 columns \setbox0=\hbox{\tt m} \newdimen\codehsize \codehsize=91\wd0 % 88 columns wasn't enough; I don't know why \newdimen\codemargin \codemargin=0pt \newdimen\nwdefspace \nwdefspace=\codehsize % need to use \textwidth in {\LaTeX} to handle styles with % non-standard margins (David Bruce). Don't know why we sometimes % wanted \hsize. 27 August 1997. %% \advance\nwdefspace by -\hsize\relax \ifx\textwidth\undefined \advance\nwdefspace by -\hsize\relax \else \advance\nwdefspace by -\textwidth\relax \fi \chardef\other=12 \def\setupcode{% \chardef\\=`\\ \chardef\{=`\{ \chardef\}=`\} \catcode`\$=\other \catcode`\&=\other \catcode`\#=\other \catcode`\%=\other \catcode`\~=\other \catcode`\_=\other \catcode`\^=\other \catcode`\"=\other % fixes problem with german.sty \obeyspaces\Tt } \let\nwlbrace=\{ \let\nwrbrace=\} {\catcode`\^^M=\active % make CR an active character \gdef\newlines{\catcode`\^^M=\active % make CR an active character \def^^M{\par\startline}}% \gdef\eatline#1^^M{\relax}% } %%% DON'T \gdef^^M{\par\startline}}% in case ^^M appears in a \write \def\startline{\noindent\hskip\parindent\ignorespaces} \def\nwnewline{\ifvmode\else\hfil\break\fi} \def\setupmodname{% \catcode`\$=3 \catcode`\&=4 \catcode`\#=6 \catcode`\%=14 \catcode`\~=13 \catcode`\_=8 \catcode`\^=7 \catcode`\ =10 \catcode`\^^M=5 \let\{\nwlbrace \let\}\nwrbrace % bad news --- don't know what catcode to give " \Rm} \def\LA{\begingroup\maybehbox\bgroup\setupmodname\It$\langle$} \def\RA{\/$\rangle$\egroup\endgroup} \def\code{\leavevmode\begingroup\setupcode\newlines} \def\edoc{\endgroup} \let\maybehbox\relax \newbox\equivbox \setbox\equivbox=\hbox{$\equiv$} \newbox\plusequivbox \setbox\plusequivbox=\hbox{$\mathord{+}\mathord{\equiv}$} % \moddef can't have an argument because there might be \code...\edoc \def\moddef{\leavevmode\kern-\codemargin\LA} \def\endmoddef{\RA\ifmmode\equiv\else\unhcopy\equivbox\fi \nobreak\hfill\nobreak} \def\plusendmoddef{\RA\ifmmode\mathord{+}\mathord{\equiv}\else\unhcopy\plusequivbox\fi \nobreak\hfill\nobreak} \def\chunklist{% \errhelp{I changed \chunklist to \nowebchunks. I'll try to avoid such incompatible changes in the future.}% \errmessage{Use \string\nowebchunks\space instead of \string\chunklist}} \def\nowebchunks{\message{}} \def\nowebindex{\message{}} % here is support for the new-style (capitalized) font-changing commands % thanks to Dave Love \ifx\documentstyle\undefined \let\Rm=\rm \let\It=\it \let\Tt=\tt % plain \else\ifx\selectfont\undefined \let\Rm=\rm \let\It=\it \let\Tt=\tt % LaTeX OFSS \else % LaTeX NFSS \def\Rm{\reset@font\rm} \def\It{\reset@font\it} \def\Tt{\reset@font\tt} \def\Bf{\reset@font\bf} \fi\fi \ifx\reset@font\undefined \let\reset@font=\relax \fi \def\nwfilename#1{\vfil\eject\mark{#1}} \def\nwbegindocs#1{\filbreak} \def\nwenddocs{\par} \def\nwbegincode#1{\par\nobreak \begingroup\setupcode\newlines\parindent=0pt\parskip=0pt \let\oendmoddef=\endmoddef \let\oplusendmoddef=\plusendmoddef \def\endmoddef{\oendmoddef\par}\def\plusendmoddef{\oplusendmoddef\par}% \hsize=\codehsize\noindent\bchack} \def\nwendcode{\endgroup} {\catcode`\^^M=\active % make CR an active character \gdef\bchack#1^^M{\relax#1}% } \edef\contentsfile{\jobname.toc } % file that gets table of contents info \def\readcontents{\expandafter\input \contentsfile} \newwrite\cont \openout\cont=\contentsfile \write\cont{\string\catcode`\string\@=11}% a hack to make contents % take stuff in plain.tex \def\bye{% \write\cont{}% ensure that the contents file isn't empty \closeout\cont \vfil\eject\pageno=-1 % new page causes contents to be really closed \topofcontents\readcontents\botofcontents \vfil\eject\end} \def\topofcontents{\vfil\mark{{\bf Contents}}} \def\botofcontents{} \let\em=\it % used to produce an itemized (bulleted) list in plain {\TeX} % such lists can be nested % mostly useful with WEB % Usage: % \itemize % \item First thing % \item second thing % \enditemize \newcount\listlevel \listlevel=0 \newdimen\itemwidth \itemwidth=3em \def\itemize{\begingroup\advance\listlevel by1 \def\item{\par\noindent \raise2pt\llap{$\scriptstyle\bullet$\ }\ignorespaces}% \def\nameditem##1{\par\noindent \llap{\rlap{##1}\hskip\itemwidth}\ignorespaces}% \par\advance\leftskip by\itemwidth\advance\rightskip by0.5\itemwidth} \def\enditemize{\par\endgroup\noindent\ignorespaces} \let\begindocument=\relax \catcode`\@=12