head 1.2; access; symbols; locks WB:1.2; comment @# @; 1.2 date 95.07.12.22.44.09; author WB; state Exp; branches; next 1.1; 1.1 date 95.07.12.22.05.55; author WB; state Exp; branches; next ; desc @@ 1.2 log @*** empty log message *** @ text @%%%-*-diff-switches:"-U 0"; compile-command:"notangle tweb.tw>tweb.sty"-*- %%%===================================================================== %%% @@Noweb-file{ %%% author = "W\l{}odzimierz Bzyl", %%% version = "1.1", %%% date = "11 July 1995", %%% filename = "tweb.tw", %%% address = "Instytut Matematyki, %%% Uniwersytet Gda\'nski, %%% Wita Stwosza 57, %%% 80--952 Gda\'nsk, Poland", %%% email = "matwb@@halina.univ.gda.pl (Internet)", %%% abstract = "", %%% } %%%===================================================================== \title{TWEB.TW}{W\l{}odek Bzyl\hfil matwb@@halina.univ.gda.pl} %%%\printcontents @@ <<*>>= \newlinechar `^^J \def \savecat #1% {\expandafter\xdef\csname\string#1savedcat\endcsname{\the\catcode`#1}} \def \restorecat #1% {\catcode`#1=\csname\string#1savedcat\endcsname} \savecat\@@ \catcode`\@@ = 11 <> <> <> <> <> <> <> \restorecat\@@ @@ \section{Layout of a web source} <>= <> <> <> <> <> @@ <>= \font \chapterfont = cmbx10 at 20pt \font \titlefont = cmssbx10 at 17pt \font \authorfont = cmssbx10 at 12pt \font \sectionfont = cmbx10 at 12pt \font \tocfont = cmssbx10 at 12pt \font \tenbxit = cmbxti10 \def \bfit {\tenbxit} \font \tenss = cmss10 \font \tenssbf = cmssbx10 \font \ninerm = cmr9 \font \sevenrm = cmr7 \font \ninebf = cmbx9 \font \nineit = cmti9 \font \ninebxit = cmbxti10 at 8.5pt \font \ninett = cmtt9 \font \ninei = cmmi9 \font \seveni = cmmi7 \font \ninesy = cmsy9 \font \nineex = cmex9 @@ <>= \hoffset = 0.5in % extra space used to print code line numbers \hsize = 6.0in % less 0.5 than plain.tex value \vsize = 8.9in % default value <> @@ <>= \def \RCS {\relax} \def \RCSversion {Experimental} \newdimen\textsize \textsize=\hsize \def \pagenumber {\folio} \headline = {\hbox to \textsize{\strut% \ifnum\pageno>1 \tenss\filename\hfil Version \RCSversion% \hbox to 4em{\hfil\pagenumber}% \else \hfil\tenss\RCS% \fi}\hss} \footline = {\hfil} @@ <
>= \def \tocline #1#2% {\line{{\ignorespaces#1}\leaders\hbox to 3pt{.\hfil}\hfil \hbox to 15pt{\hss#2}}} \def \settocparms #1% {\count@@=#1 \ifnum\count@@<1 \def\tocskip {\vskip 3pt plus 1in \penalty-100 \vskip 0pt plus -1in^^J} \def\tocstyle{\tenssbf} \def\tocindent{\z@@} \else \def\tocskip{} \def\tocstyle{\tenss} \dimen@@=20pt \advance\count@@ by \m@@ne \dimen@@=\count@@\dimen@@ \edef\tocindent{\the\dimen@@} \fi} \def \topofcontents {\vskip2\baselineskip \leftline{\tocfont Contents} \vskip2ex \begingroup\rm} \def \botofcontents {\endgroup \semifilbreak{0.9} \vskip3\baselineskip} \def \printcontents {\topofcontents \Input{\jobname.toc} \botofcontents} @@ [[\startsection{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}{HEADING}]]\par \leavevmode% [[ #1 #2 #3 #4 #5 #6]]\par \medskip [[#1 LEVEL: ]] depth; e.g. chapter=0 sectino=1...\par [[#2 INDENT: ]] indentation of heading from left margin\par [[#3 BEFORESKIP: ]] skip before header\par [[#4 AFTERSKIP: ]] skip after header\par [[#5 STYLE: ]] style of heading; e.g. [[\bf]]\par [[#6 HEADING ]] @@ <>= \def \title #1#2% {\vglue4\baselineskip \noindent{\rightskip = 0in plus 4em \hyphenpenalty = 10000 \exhyphenpenalty = 10000 \baselineskip = 20pt \titlefont#1\par} \vskip 0.5\baselineskip \hrule height 2pt width \hsize \vskip 0.5\baselineskip \noindent \line{\authorfont #2} \vskip2\baselineskip} \def \startsection#1#2#3#4#5#6% {\ifnum#1<2 \semifilbreak{0.8} \fi \vskip #3 \def\titl@@{#6} \edef\themodtitle{\sanitize\titl@@} \message{[\themodtitle]} \settocparms{#1} {\edef\next {\noexpand\write\cont{\tocskip\string\tocline% {\hskip\tocindent\tocstyle\space\sanitize\themodtitle}% {\noexpand\the\pageno}}}% \next}% write to toc \vbox{\leftskip=#2 \rightskip=0.5true in plus 4em minus 0.5 true in \hyphenpenalty=9999 \exhyphenpenalty=9999 \noindent#5#6}% \nobreak \vskip#4} \def \gobblemeaning#1:->{} \def \sanitize {\expandafter\gobblemeaning\meaning} \def \chapter#1% {\vfil\eject\startsection{0}{\z@@}{\z@@}{6ex}{\chapterfont}{#1}} \def \section#1% {\startsection{1}{\z@@}{4ex}{2ex}{\sectionfont}{#1}} \def \subsection#1% {\startsection{2}{\z@@}{2ex}{1ex}{\tenbf}{#1}} \def \subsubsection#1% {\startsection{3}{\z@@}{1ex}{0ex}{\tenit}{#1}} \def \paragraph#1% {\startsection{4}{\z@@}{1.5ex}{0ex}{\tenit}{#1}} @@ \section{Indexes} The user sets the pagenumber style with the [[\pagenumbering{FOO}]] command, which sets the page counter to 1 and defines [[\thepage]] to be [[\FOO]]. For example, [[\pagenumbering{roman}]] causes pages to be numbered i, ii, etc. <>= \def \newwrite {\alloc@@7\write\chardef\sixt@@@@n} % remove \outer \def \@@nameuse#1% {\csname #1\endcsname} \def \arabic#1{\@@arabic{\@@nameuse{c@@#1}}} \def \roman#1{\@@roman{\@@nameuse{c@@#1}}} \def \Roman#1{\@@Roman{\@@nameuse{c@@#1}}} \def \alph#1{\@@alph{\@@nameuse{c@@#1}}} \def \Alph#1{\@@Alph{\@@nameuse{c@@#1}}} \def \@@arabic#1{\ifnum #1>0 \number #1\fi} \def \@@roman#1{\romannumeral #1} \def \@@Roman#1{\expandafter\uppercase\expandafter{\romannumeral #1}} \def \@@alph#1{\ifcase#1\or a\or b\or c\or d\else\@@ialph{#1}\fi} \def \@@ialph#1% {\ifcase#1\or \or \or \or \or e\or f\or g\or h\or i\or j\or k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else\@@ctrerr\fi} \def \@@Alph#1{\ifcase#1\or A\or B\or C\or D\else\@@Ialph{#1}\fi} \def \@@Ialph#1% {\ifcase#1\or \or \or \or \or E\or F\or G\or H\or I\or J\or K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else\@@ctrerr\fi} \def \pagenumbering#1% {\global\pageno \@@ne \gdef\thepage{\csname @@#1\endcsname\pageno}} \pagenumbering {arabic} @@ Environment [[\@@bsphack ... \@@esphack]] is used by macros such as [[\index]] that want to be invisible i.e., not leave any extra space when used in the middle of text. Such a macro should begin with [[\@@bsphack]] and end with [[\@@esphack]]. The macro in question should not create any text, nor change the mode. <>= \newdimen \@@savsk \newcount \@@savsf \def \@@bsphack {\@@savsk\lastskip\ifhmode\@@savsf\spacefactor\fi} \def \@@esphack {\relax% \ifhmode\spacefactor\@@savsf {}\ifdim \@@savsk >\z@@ \ignorespaces\fi \fi} @@ The command [[\@@sanitize]] changes the catcode of all special characters except for braces to `other'. It can be used for commands like [[\index]] that want to write their arguments verbatim. <>= \def \makeother #1{\catcode`#1=12\relax} \def \@@sanitize {\makeother\ \makeother\\\makeother\$% \makeother\&\makeother\#\makeother\^% \makeother\_\makeother\%\makeother\~\relax} @@ Default command name [[\indexentry]] is shortened to [[\E]]. This change will make input files for [[makeindex]] shorter. This would allow to process some indexes on MSDOS (there is no `big' version of [[makeindx.exe]]). Above change must be told to [[makeindex]] via style files, where the following line should be added: \begindisplay [[keyword "\\E"]]&\cr \enddisplay <>= \def \makeindex {\newwrite\@@indexfile \immediate\openout \@@indexfile = \jobname.idx \def\index {\@@bsphack\begingroup\@@sanitize\@@wrindex\@@indexfile} \message{^^J--> Writing index file \jobname.idx }} \def \@@wrindex#1#2% {\let \thepage = \relax% \xdef\gtempa {\write#1{\string\E{#2}{\thepage}}}% \endgroup\gtempa\@@esphack} \def \index {\@@bsphack\begingroup\@@sanitize\@@index} \def \@@index#1% {\endgroup\@@esphack} \def \makeglossary {\newwrite\@@glossaryfile \immediate\openout\@@glossaryfile=\jobname.glo \def\glossary{\@@bsphack\begingroup\@@sanitize\@@wrindex\@@glossaryfile} \message{Writing glossary file \jobname.glo }\fi} \def \glossary {\@@bsphack\begingroup\@@sanitize\index} \def \@@idxitem {\par\hangindent 20pt } \def \subitem {\par\hangindent 20pt \hskip 20pt } \def \subsubitem {\par\hangindent 20pt \hskip 30pt } \def \seeterm{see} \def \see#1#2% {{\it \seeterm\/} #1} <> @@ <>= \def \Input#1% {\openin1 #1 \ifeof1 \message{^^J--- I cannot find file #1 } \else \closein1 \input #1 \message{^^J<-- Reading file #1 } \fi} \def \indexspace {\relax} \def \printuserleveldefs {\singlecolumn \vfill\eject \Input{\jobname.und}} \def \printdefs {\singlecolumn \vfill\eject \Input{\jobname.dnd}} \def \printchunks {\singlecolumn \vfill\eject \let \pagenumber = \relax \Input{\jobname.chn}} \def \beginuserleveldefs {\begingroup <> \section{User-level definitions} \let\item\@@idxitem \triplecolumns \tt} \def \begindefs {\begingroup <> \section{Definitions} \let\item\@@idxitem \triplecolumns \tt} \def \beginchunks {\begingroup <> \parskip = 2\p@@ plus 2\p@@ \let\item\@@idxitem \section{Chunks} \bf} \def \endindex {\endgroup} \def \makeindexes {\par \newwrite\@@userleveldefsfile \immediate\openout\@@userleveldefsfile=\jobname.udx \def\udx{\@@bsphack\begingroup\@@sanitize\@@wrindex\@@userleveldefsfile} \message{^^J--> Writing index file \jobname.udx } \newwrite\@@defsfile \immediate\openout\@@defsfile=\jobname.ddx \def\ddx{\@@bsphack\begingroup\@@sanitize\@@wrindex\@@defsfile} \message{^^J--> Writing index file \jobname.ddx } \newwrite\@@chunkfile \immediate\openout\@@chunkfile=\jobname.chk \def\chk{\@@bsphack\begingroup\@@sanitize\@@wrindex\@@chunkfile} \message{^^J--> Writing index file \jobname.chk }} @@ <>= \textfont0 = \ninerm \scriptfont0 = \sevenrm% \textfont1 = \ninei \scriptfont1 = \seveni% \textfont2 = \sevensy% \textfont3 = \nineex% \def \rm {\fam0\ninerm} \rm% \def \it {\nineit}% \def \bfit {\ninebxit}% \def \bf {\ninebf}% \def \tt {\ninett}% \def \oldstyle {\fam\@@ne\ninei}% \chardef\\ = "5C% \parindent = \z@@ \parskip = \z@@% \hfuzz = \hsize % index pages are wider \baselineskip = 11pt \topskip = \baselineskip% <> @@ <>= \advance \vsize by 0.5\baselineskip \divide \vsize by \baselineskip \multiply \vsize by \baselineskip @@ \section{Multicolumn environment for index formatting} <>= \def \gobble#1{} \let \wlog = \gobble \newskip\abovecolumnskip \abovecolumnskip = \bigskipamount \newskip\belowcolumnskip \belowcolumnskip = \bigskipamount \newdimen \gutter \gutter = 2pc \newdimen \c@@lumnhsize \newdimen \pagegoal@@limit \newdimen \htp@@rtialpage \newtoks \previousoutput \newcount \number@@fcolumns \newbox \@@partialpage \newdimen \singlec@@lumnhsize \newdimen \singlec@@lumnvsize \newtoks \previousoutput \let \@@ndcolumns = \relax @@ We have a few synonymous ways to refer to multiple column modes. <>= \def \doublecolumns {\@@columns2} \def \triplecolumns {\@@columns3} \def \quadcolumns {\@@columns4} \def \singlecolumn {\@@ndcolumns\vskip\belowcolumnskip\nointerlineskip} \let \endcolumns = \singlecolumn \def \@@columns #1% {\@@ndcolumns% \begingroup \global\let\@@ndcolumns=\@@@@endcolumns \par % Shouldn't start in horizontal mode. \global\previousoutput = \expandafter{\the\output} \pagegoal@@limit = \pagegoal \advance \pagegoal@@limit by -5\baselineskip \ifdim\pagetotal > \pagegoal@@limit \vfill\eject \else \global\output = {\global\setbox\@@partialpage = \vbox{\unvbox255\vskip\abovecolumnskip}} \pagegoal = \pagetotal \eject % now expand the \output just above. \fi \global\number@@fcolumns=#1 \global\c@@lumnhsize = \hsize % if \hsize changed, get the new value. \global\advance\c@@lumnhsize by -#1\gutter \global\divide\c@@lumnhsize by #1 \global\output = {\c@@lumnoutput} \global\singlec@@lumnhsize = \hsize \global\singlec@@lumnvsize = \vsize \hsize = \c@@lumnhsize \htp@@rtialpage = \ht\@@partialpage \advance \htp@@rtialpage by 0.5\baselineskip \divide \htp@@rtialpage by \baselineskip \multiply \htp@@rtialpage by \baselineskip \ht\@@partialpage = \htp@@rtialpage \global\advance\vsize by -\htp@@rtialpage \global\vsize = #1\vsize } @@ When this is invoked [[\box 255]] should contain just the right amount of material, whether triggered by an output routine or a change in the number of columns. Because columns have to contain a whole number of lines of type, we take a bit of care with balancing the heights of the columns to prevent either losing material or having a very short last column. {\it Note:} when a page ends due to [[\bye]] or [[\eject]], [[\box255]] will contain lots of white space, so the columns will not look balanced. To fix this use [[\singlecolumn]] before ending the page. <>= \def \@@columnsplit {<> \global\setbox255 = \vbox{% see the last line on p.417 (wb) \unvbox\@@partialpage \ifnum\number@@fcolumns>0% \setbox1 = \vbox to \dimen0{\dimen2=\dp1 \unvbox1\kern-\dimen2\vfil} \ifnum\number@@fcolumns=1% \hbox to \singlec@@lumnhsize{\box1} \fi \fi \ifnum\number@@fcolumns>1% \setbox3 = \vbox to \dimen0{\dimen2=\dp3 \unvbox3\kern-\dimen2\vfil} \ifnum\number@@fcolumns=1% \hbox to \singlec@@lumnhsize{\box1\hfil\box3} \fi \fi \ifnum\number@@fcolumns>2% \setbox5 = \vbox to \dimen0{\dimen2=\dp5 \unvbox5\kern-\dimen2\vfil} \ifnum\number@@fcolumns=3% \hbox to\singlec@@lumnhsize{\box1\hfil\box3\hfil\box5} \fi \fi \ifnum\number@@fcolumns>3% \setbox7 = \vbox to \dimen0{\dimen2=\dp7 \unvbox7\kern-\dimen2\vfil} \ifnum\number@@fcolumns=4% \hbox to\singlec@@lumnhsize{\box1\hfil\box3\hfil\box5\hfil\box7} \fi \fi}} \def \c@@lumnoutput {\@@columnsplit \hsize = \singlec@@lumnhsize % local to the \output group \vsize = \singlec@@lumnvsize \the\previousoutput \global\vsize=\number@@fcolumns\singlec@@lumnvsize} \def \@@@@endcolumns {\global\let\@@ndcolumns=\relax% \par % Shouldn't start in horizontal mode. \global\output = {\global\setbox1 = \box255}% \pagegoal = \pagetotal \eject \global\setbox255 = \box1 \@@columnsplit \global\vsize = \singlec@@lumnvsize \global\output = \expandafter{\the\previousoutput}% \endgroup \unvbox255} @@ <>= \dimen0 = \ht255 \advance \dimen0 by \topskip \advance \dimen0 by -\baselineskip \divide\dimen0 by \number@@fcolumns \splittopskip = \topskip \begingroup \vbadness = 10000 \loop \setbox8=\copy255 \global\setbox1 = \vsplit8 to \dimen0 \global\setbox3 = \vsplit8 to \dimen0 \ifnum\number@@fcolumns>2% \global\setbox5 = \vsplit8 to \dimen0 \fi \ifnum\number@@fcolumns>3% \global\setbox7 = \vsplit8 to \dimen0 \fi \ifdim\ht8>\z@@ \global\advance\dimen0 by 1pt \repeat \endgroup @@ \section{Cross references} [[\ref{value}{name}]] gives value to [[name]]\par [[\pageref{name}]] writes [[\ref{]]\stress{page number}[[}{name}]] to [[.ref]] file \par [[\refpage{name}]] prints page number referenced by [[name]] \par [[\showmissestrue]] if you want to see missing references <>= \newcount\miscount % number of unknown references \newif\ifshowmisses \def \ref #1#2% {\xdef\temp{#1} \expandafter\dordef\csname#2\endcsname} \def \dordef #1% {\global\let#1\temp} \Input{\jobname.ref} \newwrite\refo \immediate\openout\refo=\jobname.ref \def \pageref #1% {\write\refo{\string\ref{\number\pageno}{#1}}} \def \refpage #1% {\expandafter\usedef\csname#1\endcsname} \def \usedef #1% {\ifx#1\relax% \ifshowmisses\showmiss #1 \fi% \global\advance\miscount by 1 ???% \else% #1% \fi} \def \showmiss #1% {{\escapechar=-1% \message{^^J*** WARNING: Undefined reference > #1<}}} \outer \def \bye {\write \cont {\string\restorecat\string\@@} \closeout\cont \ifnum\miscount>0 \message{^^J!!! \the\miscount\space % undefined reference(s) were present }% \fi \par\vfill\supereject \end} @@ \section{Web2tex macros} <>= {\obeyspaces\global\let = \ } % from texbook, p.381 {\catcode`\`=\active \gdef`{\relax\lq}} {\catcode`\^^I=\active \gdef^^I{\ \ \ }} {\obeyspaces\global\def\gobblespace#1{\ifx#1 \else#1\fi}} \def \setupmodname {\catcode`\$=3 \catcode`\&=4% \catcode`\#=6 \catcode`\%=14% \catcode`\~=13 \catcode`\_=8% \catcode`\^=7 \catcode`\ =10% \catcode`\^^M=5\relax} \def \LA {\begingroup\setupmodname$\langle\,$\bfit} \def \RA {\/$\,\rangle$\endgroup} \gdef \ttverbatim {\begingroup% \makeother\\\makeother\{\makeother\}\makeother\$% \makeother\&\makeother\#\makeother\%\makeother\~% \makeother\_\makeother\^\makeother\"% \obeyspaces\obeylines\tt} \newskip\ttglue \ttglue=.5em plus.25em minus.15em {\catcode`\|=\active \obeylines \gdef|{\ttverbatim \spaceskip\ttglue \let^^M=\ \let|=\endgroup}} \def \CODE% {\ttverbatim% \let\par=\endgraf% \parskip=\z@@% \leavevmode% \ttfinish}% written by web2tex script itself %%% {\catcode`\| = 0 |catcode`|\ = 12 % %%% |obeylines |gdef|ttfinish#1{|gobblespace#1|endgroup}} \def \NO #1% line numbers which appear in the margin {\noindent\llap{\ninei #1\qquad}\kern\parindent} \def \N #1#2% page number -- line number (indexes) {$#2_{\oldstyle#1}$} \def \BEGINCODE {\semifilbreak{0.9} \bigskip \begingroup \obeylines} \def \ENDCODE {\endgroup \semifilbreak{0.9}} \def \BEGINDOC {\bigskip \begingroup \catcode`\|=\active} \def \ENDDOC {\endgroup} \newif \iffullpages \newdimen \upperbound \def \semifilbreak #1% {\par \upperbound = #1\vsize %% 0.1\vsize \approx 5\baselineskip \ifdim\pagetotal > \pagegoal %% page already overfull; %% left to page builder \else \ifdim\pagetotal > \upperbound \vfill\eject \fi \fi} @@ \section{Macros used for web source formatting} <>= <> <> <> <> @@ <>= \def \oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant \def \hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant \def \oddline#1% {\cr \noalign{\nointerlineskip} \multispan{19}\hrulefill& \setbox0=\hbox{\lower 2.3pt\hbox{\hex{#1x}}}\smash{\box0}\cr \noalign{\nointerlineskip}} \def \evenline {\cr\noalign{\hrule}} \def \chartstrut {\lower4.5pt\vbox to14pt{}} \def \beginchart#1% {$$\postdisplaypenalty=-10000 \global\count@@=0 #1 \halign to\hsize\bgroup \chartstrut##\tabskip0pt plus10pt& &\hfil##\hfil&\vrule##\cr \lower6.5pt\null &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} \def \endchart {\raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$} \def \:{\setbox0=\hbox{\char\count@@}% \ifdim\ht0>7.5pt\reposition \else\ifdim\dp0>2.5pt\reposition\fi\fi \box0\global\advance\count@@ by1 } \def \reposition {\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}} \def \normalchart {&\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} @@ <>= \outer\def \begindisplay {\obeylines\startdisplay} {\obeylines\gdef\startdisplay#1 {\catcode`\^^M=5$$#1\halign\bgroup\indent##\hfil&&\qquad##\hfil\cr}} \outer\def\enddisplay{\crcr\egroup$$} @@ <>= \def \bold#{\bgroup\bf\let\next = } \def \ttt#{\bgroup\tt\let\next = }% typewriter \def \stress #1% {\begingroup \def \next {\def \next {\setbox 0 = \hbox {\nexttoken}% \ifdim \ht 0< \fontdimen 5 \font \it #1% \else \it #1\/% \fi}% \ifcat A\noexpand \nexttoken \next \else \ifcat 0\noexpand \nexttoken \next \else \ifcat \space \noexpand \nexttoken \else %%% \message {?: \meaning \nexttoken}% \fi \it #1\/% \fi \fi \endgroup}% \futurelet \nexttoken \next } @@ <>= \def \<#1>{\leavevmode\hbox{$\langle$#1\/$\rangle$}} \def \pt {\,{\rm pt}} % units of points, in math formulas \def \in {\,{\rm in}} % units of inches, in math formulas \def \em {\,{\rm em}} % units of em, in math formulas @@ <>= \raggedbottom \frenchspacing \fullpagesfalse \newwrite \cont \openout \cont = \jobname.toc \write \cont {\string\savecat\string\@@} \write \cont {\string\catcode`\string\@@=11} @ 1.1 log @Initial revision @ text @d5 2 a6 3 %%% version = "$Id: tweb.tw,v 2.74 1995/07/05 10:38:39 web Exp $", %%% date = "13 June 1995", %%% time = "17:34:59 MET", a7 1 %%% checksum = "11515 801 2110 24084", a11 1 %%% checksum = "61084 897 2387 27063", d80 1 a80 1 \def \RCS {\jobname.tw} \def \RCSversion {Experimental} @