summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/generic')
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.eight610
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.eleven317
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.five1108
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.four1052
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.nine235
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.one751
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.seven821
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.six528
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.ten1289
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.tex1802
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.three1898
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.twelve1709
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errata.two491
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errorlog.tex2946
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/logmac.tex107
-rw-r--r--Master/texmf-dist/source/generic/knuth/tex/glue.web421
-rw-r--r--Master/texmf-dist/source/generic/knuth/web/webman.tex1674
17 files changed, 0 insertions, 17759 deletions
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.eight b/Master/texmf-dist/source/generic/knuth/errata/errata.eight
deleted file mode 100644
index f7ceafd9f69..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.eight
+++ /dev/null
@@ -1,610 +0,0 @@
-% Bugs (sigh) in Computers \& Typesetting
-
-\input manmac
-\font\sltt=cmsltt10
-\font\niness=cmss9
-\font\ninessi=cmssi9
-\proofmodefalse
-\raggedbottom
-\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\today{\number\day\
- \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}
-
-\def\cutpar{{\parfillskip=0pt\par}}
-
-\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1992}}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
-\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
-\newcount\nn
-\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
-\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
-
-\tenpoint
-\noindent This is a list of all corrections made to {\sl Computers \&
-Typesetting\/} between 15 March 1992 and the publication of the final
-printed versions of those books.
-Corrections made to the softcover version of {\sl The \TeX book\/} are
-the same as corrections to Volume~A\null. Corrections to the softcover
-version of {\sl The \slMF\kern1ptbook\/} are the same as corrections
-to Volume~C\null. Changes to Volume~B refer to the fourth printing
-(1991), which differs markedly from earlier printings because it includes
-all the revisions for \TeX3.0. Changes to Volume~D refer to the third
-printing (1991), which differs markedly from earlier printings because
-it includes all the revisions for \MF\kern1pt2.0. Changes to the mini-indexes
-and master indexes of Volumes B and~D are not shown here unless they are
-not obviously derivable from what has been shown.
-\looseness=-1
-
- % volume A
-
-\bugonpage A23, line 14 (9/1/92)
-
-\tenpoint\noindent
-a command and you type `|tex|' or `|run| |tex|' or something like that.)
-
-\bugonpage A53, line 23 (7/7/92)
-
-\tenpoint\noindent
-{\sl scientiarum imperialis petropolitan\ae\/}
-became {\sl Akademi\t\i a Nauk SSSR, Doklady}.
-
-\bugonpage A146, line 2 from the bottom (2/25/93)
-
-|$\bigl|\|| |\||x|\||-|\||y|\|| \bigr|\||$|\hskip1.25in
- $\bigl\vert\vert x\vert-\vert y\vert\bigr\vert$
-
-\bugonpage A149, lines 3--5 (2/25/93)
-
-\noindent
-example, we used |\bigl| and |\bigr| to produce $\bigl\vert\vert x\vert-
-\vert y\vert\bigr\vert$ in one of the previous illustrations; |\left| and
-|\right| don't make things any bigger than necessary, so
-`|$\left|\||\left|\||x\right|\||-\left|\||y\right|\||\right|\||$|'
-yields only `$\left\vert
- \left\vert x\right\vert -\left\vert y\right\vert \right\vert$'.\cutpar
-
-\bugonpage A158, line 18 from the bottom (2/25/93)
-
-\ninepoint
-are four possibilities for each of these fields.
-A field can be
-
-\bugonpage A282, line 9 from the bottom (7/8/92)
-
-\ninepoint\noindent
-category~4) are intercepted by the alignment
-process, en route to \TeX's stomach, so\cutpar
-
-\bugonpage A293, new paragraph after line 15 (4/9/92)
-
-\ninepoint
-\textindent{$\bull$}|\unhbox|\<8-bit number>, |\unhcopy|\<8-bit number>.\enskip
-The specified box register must be void. Nothing happens.
-
-\bugonpage A309, line 23 (7/7/92)
-
-\ninepoint\noindent
-|petropolitan\ae\/} became {\sl Akademi\t\i a Nauk SSSR, Doklady}.|
-
-\bugonpage A320, line 11 (1/26/93)
-
-\ninepoint
-\ansno17.12:
-|$\bigl(x+f(x)\bigr) \big/ \bigl(x-f(x)\bigr)$|. \ Notice especially the\cutpar
-
-\bugonpage A349, second line from the bottom (7/8/92)
-
-\ninepoint\noindent
-expand to a ^\<number> en route to \TeX's
-``stomach''; |\multiply| wouldn't work, because\cutpar
-
-\bugonpage A358, bottom line (2/3/93)
-
-\ninepoint\noindent
-it is easy to define ^|\ldots| and ^|\cdots| macros that
-give the proper spacing in most\cutpar
-
-\bugonpage A370, lines 28 and 29 (9/1/92)
-
-\def\Russiantt#1{{\tt\hbox to.5em{\hss\eighttt\char#1\hss}}}
-\ninepoint\noindent
-example, if \TeX\ is implemented for
-a purely ^{Cyrillic} ^^{Russian} keyboard, the letter `\Russiantt5' should be
-assigned to code \oct{160} and `\Russiantt{`T}' to code \oct{164}, so that
-`\Russiantt5\Russiantt{`T}' still means `|pt|'; or else control\cutpar
-
-\bugonpage A377, lines 17--24 (5/4/92)
-
-\ninepoint
-\begintt
-\def\sanswitch{\let\n@xt\endsanity \ifx\next\endsanity
- \else\ifcat\noexpand\next\stoken\aftergroup\space\let\n@xt=\eat
- \else\ifcat\noexpand\next\bgroup\aftergroup{\let\n@xt=\eat
- \else\ifcat\noexpand\next\egroup\aftergroup}\let\n@xt=\eat
- \else\let\n@xt=\copytok\fi\fi\fi\fi \n@xt}
-\def\eat{\afterassignment\sanitize \let\next= }
-\long\def\copytok#1{\ifcat\noexpand#1\relax\aftergroup\noexpand\fi
- \ifcat\noexpand#1\noexpand~\aftergroup\noexpand\fi
-\endtt
-
-\bugonpage A455, line 25 (2/26/93)
-
-\ninepoint\noindent
-rent language'' is set equal to |\language|. Whenever a
-character is added to the cur-\cutpar
-
-\bugonpage A459, second line of entry for ampersand (3/22/92)
-
-\eightpoint\indent\qquad
-{\it231--248}, $\underline{282}$, {\it339}, 344, 385--386, 428.
-
-\bugonpage A461, right column (2/19/93)
-
-\eightpoint
-\newbox\astbox \setbox\astbox=\hbox to0pt{\hss\lower1pt\hbox{*}}
-\def\prim#1{\par\indent\copy\astbox{\tt\char`\\#1}}
-\prim{chardef}, 44, 121, 155, 210, 214, 215, 271,\par
-\indent\qquad $\underline{277}$, 336, {\it343}, {\it345}, {\it356}, 452.\par
-\indent\<chardef token>, $\underline{271}$, 283, 286, 289.
-
-\bugonpage A467, left column (2/25/93)
-
-\eightpoint
-Greek, 127--128, 137, 156, 164, 319,\par
-\indent\qquad 358, 430, 434.
-
-\bugonpage A470, left column (2/25/93)
-
-\eightpoint
-margins, {\sl see\/} |\hoffset|, |\hsize|, |\narrower|.
-
-\bugonpage A471, left column (2/19/93)
-
-\eightpoint
-\prim{mathchardef}, 155, 199, 214, 215, 271,\par
-\indent\qquad 277, 289, 336, {\it358}, {\it394}.\par
-\indent\<mathchardef token>, $\underline{271}$, 289.
-
-\bugonpage A474, right column (3/22/92)
-
-\eightpoint
-pound sterling, 54, {\it339}, 428.
-
-\bugonpage A477, right column (3/22/92)
-
-\eightpoint
-sterling, 54, {\it339}, 428.
-
-\bugonpage A480, left column (4/9/92)
-
-\eightpoint
-\prim{unhbox}, 120, 283, $\underline{285}$, 293, {\it354}, {\it356},
- {\it399}.\par
-\prim{unhcopy}, 120, 283, $\underline{285}$, 293, {\it353}.
-
-\bugonpage A481, left column (2/25/93)
-
-\eightpoint
-whatsits, 95, 110, 157, 226--229, 455.
-
-\bugonpage A483, lines 15--21 (2/25/93)
-
-{\tt P.O. Box 869\par
-Santa Barbara, CA 93102-0869 USA.\par
-|}|}
-\smallskip\noindent
-Don't delay, write today! That number again is
-
-\smallskip
-{\obeylines
-\TeX\ Users Group
-P.O. Box 869
-Santa Barbara, CA 93102-0869 USA.
-}
-
- % volume B
-\hsize=35pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage B2, line 10 from the bottom (2/27/93)
-
-\ninepoint\noindent\hskip10pt
-{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]TeX,\]Version\]3.1415\char'23}\quad
-$\{\,$printed when \TeX\ starts$\,\}$
-
-\bugonpage B89, line 12 (2/27/93)
-
-\tenpoint
-\noindent\hskip10pt
-In horizontal mode, the \\{prev\_graf} field is used for initial language data.
-
-\bugonpage B89, line 20 (2/27/93)
-
-\ninepoint
-\noindent\hskip20pt
-\\{pg\_field}, \\{ml\_field}: \\{integer}; \ \\{aux\_field}: \\{memory\_word};
-\par
-\noindent [Also delete the definitions of \\{lhmin} and \\{rhmin}, lines
-32 and 33.]
-
-\bugonpage B90, line 13 (2/27/93)
-
-\ninepoint
-\noindent\hskip10pt
-$\\{prev\_depth}\gets\\{ignore\_depth}$; \ $\\{mode\_line}\gets0$; \
-$\\{prev\_graf}\gets0$;
-
-\bugonpage B91, top three lines (2/27/93)
-
-\ninepoint
-\noindent\hskip20pt
-{\bf if\/} $m=\\{hmode}$ {\bf then if\/} $\\{nest}[p].\\{pg\_field}\ne
- \oct{40600000}$ {\bf then}\par\noindent\hskip40pt
-{\bf begin} \\{print}({\tt\char`\"\](language\char`\"}); \
- \\{print\_int}(\\{nest}[$p$].\\{pg\_field} {\bf mod} \oct{200000});\par
-\noindent\hskip40pt
- \\{print}({\tt\char`\":hyphenmin\char`\"}); \
- \\{print\_int}(\\{nest}[$p$].\\{pg\_field} {\bf div} \oct{20000000}); \
- \\{print\_char}({\tt\char`\",\char`\"});\par\noindent\hskip40pt
-\\{print\_int}((\\{nest}[$p$].\\{pg\_field} {\bf div} \oct{200000})
- {\bf mod} \oct{100}); \ \\{print\_char}({\tt\char`\")\char`\"});
-
-\bugonpage B344, lines 21 and 22 (2/27/93)
-
-\tenpoint\noindent\hskip10pt
-This code assumes that a \\{glue\_node} and a \\{penalty\_node} occupy the
-same number of \\{mem}~words.
-
-\bugonpage B344, line 30 (2/27/93)
-
-\ninepoint\noindent\hskip10pt
-$\\{link}(\\{tail})\gets\\{new\_param\_glue}(\\{par\_fill\_skip\_code})$; \
- $\\{init\_cur\_lang}\gets\\{prev\_graf}$ {\bf mod} \oct{200000};\par
-\noindent\hskip10pt
-$\\{init\_l\_hyf}\gets\\{prev\_graf}$ {\bf div} \oct{20000000}; \
-$\\{init\_r\_hyf}\gets(\\{prev\_graf}$ {\bf div} \oct{200000}) {\bf mod}
- \oct{100}; \
-\\{pop\_nest};
-
-\bugonpage B353, line 4 (2/27/93)
-
-\tenpoint\noindent\hskip10pt
-Kern nodes do not disappear at a line break unless they are \\{explicit}.
-
-\bugonpage B353, lines 15 and 16 (2/27/93)
-
-\ninepoint\noindent\hskip20pt
-\\{math\_node}: $\\{break\_width}[1]\gets\\{break\_width}[1]-\\{width}(s)$;\par
-\noindent\hskip20pt
-\\{kern\_node}: {\bf if\/} $\\{subtype}(s)\ne\\{explicit}$
- {\bf then goto} \\{done}\par\noindent\hskip30pt
-{\bf else} $\\{break\_width}[1]\gets\\{break\_width}[1]-\\{width}(s)$;
-
-\bugonpage B354, lines 6 and 7 (2/27/93)
-
-\tenpoint\noindent
-will be the background
-plus $l_1$, so the length from \\{cur\_p} to \\{cur\_p} should be
-$\gamma+l_0+l_1-l$.
-If the post-break text of the discretionary is empty, a break may also
-discard~$q$; in that unusual case we subtract the length of~$q$ and any
-other nodes that will be discarded after the discretionary break.
-
-\bugonpage B354, line 18 (2/27/93)
-
-\ninepoint\noindent\hskip20pt
-{\bf begin} $\langle\,$Add the width of node $s$ to \\{break\_width}{\sevenrm
- \kern.5em842}$\,\rangle$;
-
-\bugonpage B354, line 22 (2/27/93)
-
-\ninepoint\noindent\hskip10pt
-{\bf if\/} $\\{post\_break}(\\{cur\_p})=\\{null}$ {\bf then}
- $s\gets\\{link}(v)$;\quad$\{\,$nodes may be discardable after the break$\,\}$
-
-\bugonpage B355, top line (2/27/93)
-
-\ninepoint\noindent
-{\tenbf842.\quad}$\langle\,$Add the width of node $s$ to
- \\{break\_width}{\sevenrm\kern.5em842}$\,\rangle\equiv$
-
-\bugonpage B355, lines 9--14 (2/27/93)
-
-\ninepoint\noindent\hskip20pt
-$\\{hlist\_node},\\{vlist\_node},\\{rule\_node},\\{kern\_node}$:
- $\\{break\_width}[1]\gets\\{break\_width}[1]+\\{width}(s)$;\par
-\noindent\hskip20pt
-{\bf othercases} \\{confusion}({\tt\char`\"disc2\char`\"})\par
-\noindent\hskip20pt
-{\bf endcases}
-
-\bugonpage B364, line 10 (2/27/93)
-
-\tenpoint\noindent
-a glue node, penalty node, explicit kern node, or math node.
-
-\bugonpage B366, line 11 from the bottom (2/27/93)
-
-\ninepoint\noindent
-\\{kern\_node}: {\bf if\/} $\\{subtype}(\\{cur\_p})=\\{explicit}$
- {\bf then} \\{kern\_break}\par\noindent\hskip10pt
-{\bf else} $\\{act\_width}\gets\\{act\_width}+\\{width}(\\{cur\_p})$;
-
-\bugonpage B367, line 21 (2/27/93)
-
-\ninepoint\noindent\hskip20pt
-{\bf else if\/} \\{precedes\_break}(\\{prev\_p}) {\bf then}
- $\\{try\_break}(0,\\{unhyphenated})$\par\noindent\hskip20pt
-{\bf else if\/} $(\\{type}(\\{prev\_p})=\\{kern\_node})\land
- (\\{subtype}(\\{prev\_p})\ne\\{explicit})$ {\bf then}
- $\\{try\_break}(0,\\{unhyphenated})$;
-
-\bugonpage B372, lines 12 and 13 (2/27/93)
-
-\ninepoint\noindent\hskip20pt
-{\bf if\/} $\\{type}(q)=\\{kern\_node}$ {\bf then}\par\noindent\hskip30pt
-{\bf if\/} $\\{subtype}(q)\ne\\{explicit}$ {\bf then goto} \\{done1};
-
-\bugonpage B376, line 3 from the bottom (2/27/93)
-
-\ninepoint\noindent\hskip10pt
-$\\{cur\_lang}\gets\\{init\_cur\_lang}$; \
-$\\{l\_hyf}\gets\\{init\_l\_hyf}$; \
-$\\{r\_hyf}\gets\\{init\_r\_hyf}$;
-
-\bugonpage B377, lines 11 and 12 (2/27/93)
-
-\ninepoint\noindent
-$\\{cur\_lang},\\{init\_cur\_lang}$: \\{ASCII\_code};\quad
- $\{\,$current hyphenation table of interest$\,\}$\par\noindent
-$\\{l\_hyf},\\{r\_hyf},\\{init\_l\_hyf},\\{init\_r\_hyf}$: \\{integer};\quad
- $\{\,$limits on fragment sizes$\,\}$
-
-\bugonpage B378, line 5 from the bottom, overriding earlier change (2/27/93)
-
-\ninepoint\noindent\hskip30pt
-{\bf else if} $(\\{type}(s)=\\{kern\_node})\land(\\{subtype}(s)=\\{normal})$
- {\bf then}\par\noindent\hskip50pt
-{\bf begin} $\\{hb}\gets s$; \ $\\{hyf\_bchar}\gets\\{font\_bchar}[\\{hf}]$; \
- {\bf end}\par\noindent\hskip40pt
-{\bf else goto} \\{done3};
-
-
-\bugonpage B394, lines 12 and 13 (2/27/93)
-
-\ninepoint\noindent\hskip10pt
-{\bf var} $n$: $0\to64$;\quad$\{\,$length of current word; not always
- a \\{small\_number}$\,\}$\par\noindent\hskip20pt
-$j$: $0\to64$;\quad$\{\,$an index into \\{hc}$\,\}$
-
-\bugonpage B404, line 21 (2/27/93)
-
-\ninepoint\noindent\hskip10pt
-{\bf var} $k,l$: $0\to64$;\quad$\{\,$indices into \\{hc} and \\{hyf};
- not always in \\{small\_number} range$\,\}$
-
-\bugonpage B460, lines 21 and 22 (2/27/93)
-
-\ninepoint\noindent\hskip10pt
-\\{push\_nest}; \ $\\{mode}\gets\\{hmode}$; \ $\\{space\_factor}\gets1000$; \
- \\{set\_cur\_lang}; \ $\\{clang}\gets\\{cur\_lang}$;\par\noindent\hskip10pt
-$\\{prev\_graf}\gets(\\{norm\_min}(\\{left\_hyphen\_min})\ast\oct{100}+
- \\{norm\_min}(\\{right\_hyphen\_min}))\ast\oct{200000}+\\{cur\_lang}$;
-
-\bugonpage B492, line 6 from the bottom (2/27/93)
-
-\ninepoint\noindent\hskip10pt
-\\{unsave}; \ $\\{prev\_graf}\gets\\{prev\_graf}+3$;\par\noindent\hskip10pt
-\\{push\_nest}; \ $\\{mode}\gets\\{hmode}$; \ $\\{space\_factor}\gets1000$; \
- \\{set\_cur\_lang}; \ $\\{clang}\gets\\{cur\_lang}$;\par\noindent\hskip10pt
-$\\{prev\_graf}\gets(\\{norm\_min}(\\{left\_hyphen\_min})\ast\oct{100}+
- \\{norm\_min}(\\{right\_hyphen\_min}))\ast\oct{200000}+\\{cur\_lang}$;
-
- % volume C
-\hsize=29pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-
-\bugonpage C151, line 11 from the bottom (6/26/93)
-
-\ninepoint\indent
-\qquad scaled $1.42(1+\max(-\\{pen\_lft},\\{pen\_rt},\\{pen\_top},
- -\\{pen\_bot}))$
-
-\bugonpage C262, line 15 (6/26/93)
-
-\ninepoint\noindent
-|string base_name, base_version; base_name="plain"; base_version="2.71";|
-
-\bugonpage C262, line 29 (6/26/93)
-
-\ninepoint\noindent
-|def |^|gobble|| primary g = enddef; def |^|killtext|| text t = enddef;|
-
-\bugonpage C271, bottom line (6/26/93)
-
-\ninepoint\noindent
-| culldraw p enddef;|
-
-\bugonpage C272, three new lines for top of page (6/26/93)
-
-{\ninepoint\parindent=0pt
-|def |^|culldraw|| expr p = addto pic_ doublepath p.t_ withpen currentpen;|\par
-| cull pic_ dropping(-infinity,0) withweight default_wt_;|\par
-| addto_currentpicture also pic_; pic_:=nullpicture; killtext enddef;|\par
-}
-
-\bugonpage C272, replacement for former line 5 (6/26/93)
-
-\ninepoint\noindent
-| (cut_ scaled (1+max(-pen_lft,pen_rt,pen_top,-pen_bot))|
-
-\bugonpage C296, line 24 (2/3/93)
-
-\ninepoint\noindent
-the definition of |rp| is changed to `|]..tension 4..|',
-and if `|scaled|~|5pt|' is inserted\cutpar
-
-\bugonpage C299, line 3 (5/15/92)
-
-\ninepoint\noindent
-a Bernshte{\u\i}n polynomial of order $n-1$.)
-
-\bugonpage C347, left column (5/15/92)
-
-\eightpoint
-Bernshte{\u\i}n, Serge{\u\i} \thinspace Natanovich, 14.
-
-\bugonpage C348, left column (6/26/93)
-
-\eightpoint
-|culldraw|, {\it271}, $\underline{272}$.
-
-\bugonpage C350, left column (6/26/93)
-
-\eightpoint
-exponential, {\sl see\/} |mexp|.
-
-\bugonpage C352, left column (6/26/93)
-
-\eightpoint
-|killtext|, $\underline{262}$, {\it 272}.
-
-\bugonpage C352, right column (6/26/93)
-
-\eightpoint
-logarithm, {\sl see\/} |mlog|.
-
-\bugonpage C361, lines 14 and 15 (2/25/93)
-
-P.O. Box 869\par
-Santa Barbara, CA 93102-0869 USA.
-
-
- % Volume D
-\hsize=29pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage Dxiv, line 13 (4/19/96)
-
-\noindent preprocessor converts these into numeric constants that are
-256 or more. This\cutpar
-
-\bugonpage Dxiv, line $-1$ (4/19/96)
-
-\ninepoint\noindent This file contains one line per string, starting with
-string number 256, then number 257,\cutpar
-
-\bugonpage Dxv, lines 10 and 11 (4/19/96)
-
-\ninepoint\noindent
-In this case, occurrences of |""| in the |WEB| program will be replaced by
-256; occurrences of |"This longer string"| will be replaced by 257.
-The symbol |@$| stands for the numeric\cutpar
-
-\hsize=35pc
-\bugonpage D2, line $-17$ (8/7/98)
-
-\def\RQ/{{\char'23}} % right quote in a string
-\ninepoint\noindent
-{\bf define} $\\{banner}\equiv\hbox{\tt\RQ/This\]is\]METAFONT,\]%
- Version\]2.7182\RQ/}$\quad$\{\,$printed when \MF\ starts$\,\}$
-
-\bugonpage D50, line 26 (8/7/98)
-
-\ninepoint\noindent
-\quad{\bf if\/} $b>0$ {\bf then}
-
-\bugonpage D138, line 14 from the bottom (3/6/95)
-
-\tenpoint
-\textindent{$2'$)} Let $Z_k^{(j+1)}={1\over2}(Z_k^{(j)}+Z_{k+1}^{(j)})$, for
-$1\le k\le n-j$, for $1\le j<n$.
-
-\bugonpage D190, D191, D194, D195 (6/26/93)
-
-\noindent[Several changes to the code in sections 415, 416, 424, and 425
-were made to \MF\ version 2.71 in July~1991, too numerous to mention here.
-They are documented in file {\tt mf84.bug} as bug number 560. We also
-delete lines 4 and~5 of page D194.]
-
-\bugonpage D216, line 10 from the bottom (7/15/92)
-
-\tenpoint\noindent
-will be offset by $w_1$ or $w_2$, unless its slope drops to zero
-en route to the eighth octant; in the latter\cutpar
-
-\bugonpage D289, lines 9 and 10 (6/26/93)
-
-\ninepoint\noindent\hskip20pt
-$p\gets\\{dep\_list}(p)$; \ $r\gets\\{inf\_val}$;\par\noindent\hskip20pt
-{\bf repeat if\/} $\\{value}(\\{info}(p))\ge\\{value}(r)$ {\bf then}
-
-\bugonpage D296, lines 8 and 9 from the bottom (9/13/98)
-
-\ninepoint\noindent[Delete these spurious lines.]
-
-\bugonpage D297, mini-index (6/6/98)
-
-\eightpoint the meaning of {\it loc\/} should be `macro'
-
-\bugonpage D310, line 7 (8/7/98)
-
-\ninepoint\noindent
-\quad{\bf if\/} $(\\{loc}=k+1)\land(\\{length}(\\{buffer}[k])=1)$
- {\bf then} $\\{cur\_mod}:=\\{buffer}[k]$
-
-\bugonpage D363, lines 10 and 11 (3/1/95)
-
-\ninepoint\noindent
-\quad {\bf begin if\/} $(\\{max\_c}[\\{dependent}]$ {\bf div}
- $\oct{10000}\ge\\{max\_c}[\\{proto\_dependent}])$ {\bf then}
- $t\gets\\{dependent}$
-
-\bugonpage D512, line 13 (11/23/98)
-
-\ninepoint\noindent
-\quad \\{print\_int}(\\{round\_unscaled}(\\{internal}[\\{year}])); \
- \\{print\_char}(|"."|);
-
-\bugonpage D518, insert new material between lines 7 and 8 (3/20/95)
-
-\ninepoint\noindent
-\quad {\bf while} $\\{input\_ptr}>0$ {\bf do}\par\noindent
-\qquad {\bf if\/} \\{token\_state} {\bf then} \\{end\_token\_list}
- {\bf else} \\{end\_file\_reading};\par\noindent
-\quad {\bf while} $\\{loop\_ptr}\ne\\{null}$ {\bf do} \\{stop\_iteration};
-
-\bugonpage D518, line 18 (3/20/95)
-
-\ninepoint\noindent
-\qquad $\\{loop\_ptr}\gets\\{cond\_ptr}$; \
- $\\{cond\_ptr}\gets\\{link}(\\{cond\_ptr})$; \
- $\\{free\_node}(\\{loop\_ptr},\\{if\_node\_size})$;
-
-\bugonpage D546, left column (4/11/96)
-
-\eightpoint
-Stern, Moritz Abraham: \ 526.
-
- % volume E
-\hsize=29pc
-\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
-
-
- \bye
-
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.eleven b/Master/texmf-dist/source/generic/knuth/errata/errata.eleven
deleted file mode 100644
index 64d9f8ab457..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.eleven
+++ /dev/null
@@ -1,317 +0,0 @@
-% Bugs (sigh) in Computers \& Typesetting
-
-\input manmac
-\def\curl{\mathop{\rm curl}}
-\def\cycle{{\rm cycle}}\indent
-\def\dashto{\mathrel{\hbox{-\thinspace-\kern-.05em}}}
-\font\sltt=cmsltt10
-\font\niness=cmss9
-\font\ninessi=cmssi9
-\proofmodefalse
-\raggedbottom
-\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\today{\number\day\
- \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}
-
-\def\cutpar{{\parfillskip=0pt\par}}
-
-\def\rhead{Bugs in {\tensl Computers \& Typesetting, 2001}}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
-\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
-\newcount\nn
-\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
-\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
-
-\tenpoint
-\noindent This is a list of all substantial corrections made to {\sl Computers
-\& Typesetting\/} between the first ``Millennium edition'' of 2000 and the
-second such edition, which appeared late in 2001.
-(More precisely, it lists errors to the 16th, 7th, 6th, 4th, and 5th
-printings of Volumes A, B, C, D, and E, respectively, that were corrected
-in the 17th, 8th, 7th, 5th, and 6th printings.)
-Changes to the mini-indexes
-and master indexes of Volumes B, D, and~E are not shown here unless they are
-not obviously derivable from what has been shown.
-\looseness=-1
-
- % volume A
-
-\bugonpage A16, line 7 from the bottom (06/30/01)
-
-\font\magnifiedfiverm=cmr5 at 10pt
-\tenpoint\indent
-Ten-point type is different from%
- \magnifiedfiverm\ magnif{}ied f{}ive-point type.
-
-\bugonpage A17, line 7 (06/30/01)
-
-\ninepoint\indent
-fications that grow in geometric ratios---something like equal-tempered
-tuning\cutpar
-
-\bugonpage A51, lines 18--20 (06/30/01)
-
-\tenpoint\kern-6pt\noindent
-$$\openup1pt\halign{\indent#\hfil\cr
-|ff| yields ff\thinspace;$\!$\quad |fi| yields fi\thinspace;$\!$\quad
-|fl| yields fl\thinspace;$\!$\quad
-|ffi| yields ffi\thinspace;$\!$\quad |ffl| yields ffl\thinspace;\cr
-|``| yields``\thinspace;\qquad |''| yields ''\thinspace;\qquad
-|!||`| yields !`\thinspace;\qquad |?||`| yields ?`\thinspace;\cr
-|--| yields --\thinspace;\qquad |---| yields ---\thinspace.\cr}$$
-
-\bugonpage A52, line 7 from the bottom (06/30/01)
-
-\tenpoint\kern-6pt\noindent
-$$\halign{\indent\hbox to 50pt{#\hfil}&\hbox to 35pt{#\hfil}&#\hfil\cr
-|\ae,\AE|&\ae,\thinspace\AE&(Latin ligature and Scandinavian letter AE)\cr}$$
-
-\bugonpage A71, line 15 (06/30/01)
-
-\tenpoint\indent
-One of the interesting things that can happen when glue stretches and\cutpar
-
-\bugonpage A180, line 20 (06/30/01)
-
-\ninepoint\indent
-Challenge number 5:\enspace
-$\qquad\tenmath k=1.38065\times10^{-16}\rm\,erg\,K^{-1}$.
-
-\bugonpage A254, line 12 from the bottom becomes two lines (04/09/01)
-
-\ninepoint\noindent
-\begintt
-\output={\unvbox255
- \ifnum\outputpenalty<10000 \penalty\outputpenalty\fi}
-\endtt
-
-\bugonpage A292, lines 13--16 (06/30/01)
-
-\def\s{\hskip0pt plus1pt}
-\ninepoint\textindent{$\bull$}|\mathchoice|\s
-$\langle$filler$\rangle$\s|{|\s$\langle$math mode material$\rangle$\s|}|\s
-$\langle$filler$\rangle$\s|{|\s$\langle$math mode material$\rangle$\s|}|\break
-$\langle$filler$\rangle$|{|$\langle$math mode material$\rangle$|}|
-$\langle$filler$\rangle$|{|$\langle$math mode material$\rangle$|}|.
-Four math lists, which are defined as in the
-second alternative of a \<math field>, are
-recorded in a ``choice item'' that is appended to the current list.
-
-\bugonpage A306, line 7 (06/30/01)
-
-\ninepoint\noindent
-instead of a shelf{\kern0pt}ful.
-In fact, the latter idea---to
-insert an italic correction---is prefer-\cutpar
-
-\bugonpage A323, line 12 from the bottom (06/30/01)
-
-\ninepoint\noindent
-\hbox to\parindent{\bf\hss18.31.\enspace}%
-|$k=1.38065\times10^{-16}\rm\,erg\,K^{-1}$|.
-
-\bugonpage A451, line 15 (01/30/01)
-
-\tenpoint\noindent
-{\sl Connecticut Yankee\/} come out with only nine or
-ten bad hyphens:
-
-\bugonpage A451, line 23 (01/30/01)
-
-\tenpoint\noindent\begintt
- mo-er-der-mohren-mut-ter-mar-mor-mon-u-menten-macher.
-\endtt
-
-\bugonpage A454, lines 23--30 (06/30/01)
-
-\begingroup
-\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
-\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
-\ddanger If a suitable starting letter is found, let it be in font~$f$.
-Hyphenation is abandoned unless the |\hyphenchar| of~$f$ is a number
-between 0 and~255, inclusive.
-If this test is passed, \TeX\ continues to scan forward
-until coming to something that's not one of the following three
-``admissible items'': (1)~a character in font~$f$ whose |\lccode|
-is nonzero; (2)~a ligature formed entirely from characters of type~(1);
-(3)~an implicit kern. The first inadmissible item terminates this part of
-the process; the trial word consists of all the letters found in admissible
-items. Notice that all of these letters are in font~$f$.
-\par\endgroup
-
-\bugonpage A461, right column (07/08/01)
-
-\eightpoint\noindent
-\llap{*}|\char|, {\it 43--45}, 76, 86, 155, 283, $\underline{286}$,
-
-\bugonpage A466, left column (07/09/01)
-
-\eightpoint\noindent
-\llap{*}|\floatingpenalty|, $\underline{123}$--$\underline{124}$,
- 272, 281, {\it 363}.
-
-\bugonpage A473, left column (06/30/01)
-
-\eightpoint\noindent
-orphans, {\sl see\/} widow words.
-
- % volume B
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\hsize=35pc
-
-\bugonpage B8, line 2 (05/04/01)
-
-\tenpoint\noindent
-statements will be meaningful. We insert the label
-`\\{exit}' just before the `{\bf end}' of a procedure in\cutpar
-
-\bugonpage B30, line $-4$ (05/04/01)
-
-\ninepoint\noindent
-\quad{\bf begin} \\{update\_terminal};\quad$\{\,$now the user sees
- the prompt for sure$\,\}$
-
-\bugonpage B84, lines 22 and 27 (05/04/01)
-
-\ninepoint\noindent
-\quad$\\{ignore}=9$\quad$\{\,$characters to ignore ( |^^@| )$\,\}$\par
-\noindent
-\quad$\\{active\_char}=13$\quad$\{\,$characters that invoke
- macros ( |~| )$\,\}$
-
-\bugonpage B280, lines 23 and 24 (04/08/01)
-
-\tenpoint\noindent
-or unset nodes; in particular, each mlist item appears in the
-variable-size part of \\{mem}, so the \\{type} field is always present.
-
-\bugonpage B382, line 6 (01/01/01)
-
-\tenpoint\noindent
-between `fl' and `y', then $m=2$, $t=2$, and $y_1$ will
-be a ligature node for `fl' followed by an\cutpar
-
-\bugonpage B386, line 11 (04/08/01)
-
-\ninepoint\noindent
-\quad$\\{qi}(2),\\{qi}(6)$: {\bf begin} $\\{cur\_r}\gets\\{rem\_byte}(q)$;%
- \quad$\{\,$\||=:|, \||=:>|$\,\}$
-
-\bugonpage B475, line 12 (07/01/01)
-
-\ninepoint\noindent
-\qquad{\bf end};\quad$\{\,$now we are in vertical mode,
- working on the list that will contain the display$\,\}$
-
- % volume C
-\hsize=29pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\ddashto{\mathrel{\hbox{-\thinspace-\thinspace-\kern-.05em}}}
-\def\tension{\mathop{\rm tension}}
-\def\controls{\mathop{\rm controls}}
-\def\and{\,{\rm and}\,}
-
-\bugonpage C204, line 3 from the bottom (07/08/01)
-
-\ninepoint\noindent
-slightly. If $\\{autorounding}>1$,
-you get even more changes: Paths are perturbed slightly\cutpar
-
-\bugonpage C238, lines 9 and 8 from the bottom (07/08/01)
-
-\ninepoint\noindent
-tance is ${\rm length}(z_4-z_1)$. But there's a slicker solution:
-Just calculate
-$$\hbox{abs ypart$((z_1-z_2)\mathbin{\rm rotated}-{\rm angle}(z_3-z_2))$.}$$
-
-\bugonpage C313, bottom line (06/30/01)
-
-\rightline{\eightss--- LA ROCHEFOUCAULD, {\eightssi Maximes\/}\enspace(1665)}
-
-\bugonpage C352, left column (06/30/01)
-
-\eightpoint\noindent
-La Rochefoucauld, Fran\c cois VI, 313.
-
-\bugonpage C357, right column (07/08/01)
-
-\eightpoint\noindent
-\llap{*}|true|, 55, {\it64\/}--{\it65}, 170, 210.
-
- % Volume D
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\hsize=35pc
-
-\bugonpage D8, line 2 (05/04/01)
-
-\tenpoint\noindent
-statements will be meaningful. We insert the label
-`\\{exit}' just before the `{\bf end}' of a procedure in\cutpar
-
-\bugonpage D28, line $-8$ (05/04/01)
-
-\ninepoint\noindent
-\quad{\bf begin} \\{update\_terminal};\quad$\{\,$now the user sees
- the prompt for sure$\,\}$
-
-\bugonpage D101, line 21 (07/08/01)
-
-\ninepoint\noindent
-\quad{\bf define} $\\{subscr\_head\_loc}(\hbox{\tt\#})\equiv\hbox{\tt\#}+1$
-\quad$\{\,$where \\{value}, \\{subscr\_head}, and \\{attr\_head} are$\,\}$
-
-\bugonpage D180, lines 22 and 23 (01/26/01)
-
-\tenpoint\noindent
-$(y,-x)$ will appear in node~$p$. Similarly, a fourth-octant
-transformation will have been applied after the transition, so
-we will have $\\{x\_coord}(q)=\hbox{$-x$}$ and $\\{y\_coord}(q)=y$.
-
-\bugonpage D196, lines 7 and 8 (01/26/01)
-
-\tenpoint\noindent
-where $x'(t)\ge0$ we have $\\{right\_type}=%
-\\{first\_octant}$ or $\\{right\_type}=\\{eighth\_octant}$; in regions where
-$x'(t)\le0$,
-we have $\\{right\_type}=\\{fifth\_octant}$ or $\\{right\_type}=\\{fourth%
-\_octant}$.
-
-\bugonpage D511, line 17 (07/03/01)
-
-\tenpoint\noindent
-from appearing again.
-
- % volume E
-\hsize=29pc
-
-\newbox\shorthyf \setbox\shorthyf=\hbox{-\kern-.05em}
-\mathchardef\period=`\.
-{\catcode`\-=\active \global\def-{\copy\shorthyf\mkern3.9mu}
- \catcode`\.=\active \global\def.{\period\mkern3mu}}
-\def\8#1{\mathrel{\mathcode`\.="8000 \mathcode`\-="8000
- #1\unkern}} % `..' and `--'
-
-\bugonpage E9, line 9 (07/03/01)
-
-\tenpoint\indent
-|[92] [123] [124]) ) )|
-
- \bye
-
-
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.five b/Master/texmf-dist/source/generic/knuth/errata/errata.five
deleted file mode 100644
index 4e2982f109a..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.five
+++ /dev/null
@@ -1,1108 +0,0 @@
-% Bugs (sigh) in Computers \& Typesetting
-
-\input manmac
-\font\sltt=cmsltt10
-\font\niness=cmss9
-\font\ninessi=cmssi9
-\proofmodefalse
-\raggedbottom
-\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\today{\number\day\
- \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}
-
-\def\cutpar{{\parfillskip=0pt\par}}
-
-\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1989}}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
-\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
-\newcount\nn
-\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
-\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
-
-\tenpoint
-\noindent This is a list of all corrections made to {\sl Computers \&
-Typesetting}, Volumes \hbox{A--E}, between 20 February 1989 and
-30 September 1989 (when \TeX\ Version 3.0 and \MF\ Version 2.0 were
-fully defined). Corrections made to
-the softcover version of {\sl The \TeX book\/} are the same as corrections to
-Volume~A\null. Corrections to the softcover version of {\sl The
-\slMF\kern1ptbook\/} are the same as corrections to Volume~C\null.
-Some of these corrections have already been made in reprintings
-of the books. Several minor changes
-to Volumes A~and~C are not shown here because they simply
-make room for the more substantive changes needed to describe the new
-features of \TeX\ Version 3.0 and \MF\ Version 2.0. Hundreds of
-changes will soon be made to Volumes B~and~D because of the upgrades
-to \TeX\ and \MF\/; it will unfortunately be impossible to document all of those
-changes. Therefore, readers who need up-to-date information on the \TeX\ and
-\MF\ programs should refer to the |WEB| source files until new
-printings of Volumes B~and~D are issued.
-
- % volume A
-
-\buginvol A, in general (9/23/89)
-
-\ninepoint\noindent
-[Change `127' to `255' and `128' to `256' in contexts referring to character
-codes. This happens on pages 37(twice), 39, 41, 43, 44(twice), 48, 93, 154,
-277, 305(twice), 308(twice), 313, and 343. Also change `7-bit' to `8-bit' on
-pages 214 and 277.]
-
-\bugonpage A23, line 16 (9/23/89)
-
-|This is TeX, Version 3.0 (preloaded format=plain 89.7.15)|
-
-\bugonpage A34, new copy for bottom of page (9/23/89)
-
-\ddanger If you use \TeX\ format packages designed by others, your
-error messages may involve many inscrutable two-line levels of macro
-context. By setting ^|\errorcontextlines||=0| at the beginning of your file,
-you can reduce the amount of information that is reported;
-\TeX\ will show only the top and bottom pairs of context lines
-together with up to |\errorcontextlines| additional two-line items. \ (If
-anything has thereby been omitted, you'll also see `|...|'.) \ Chances
-are good that you can spot the source of an error even when most of a
-large context has been suppressed; if not, you can say
-`|I\errorcontextlines=100\oops|' and try again. \ (That will usually
-give you an undefined control sequence error and plenty of context.) \
-Plain \TeX\ sets |\errorcontextlines=5|.
-
-\bugonpage A45, lines 9--15 (9/23/89)
-
-\ninepoint\noindent
-|^^| has an internal code between 64 and 127, \TeX\
-subtracts 64 from the code; if the code is between 0 and 63, \TeX\
-adds~64. Hence code 127 can be typed |^^?|, and
-the dangerous bend sign can be obtained by saying
-|{\manual^^?}|. However, you must change the category code of character
-127 before using it, since this character ordinarily has category~15
-(^{invalid}); say, e.g., |\catcode`\^^?=12|.
-^^{double hat} ^^{hat hat}
-The |^^| notation is different from |\char|, because |^^| combinations are
-like single characters; for example, it would not be permissible to say
-|\catcode`\char127|, but |^^| symbols can even be used as letters within
-control words.
-
-\bugonpage A45, new copy before line 20 (9/23/89)
-
-\danger There's also a special convention in which |^^| is
-followed by {\sl two\/} ``lowercase hexadecimal digits,'' |0|--|9| or |a|--|f|.
-With this convention, all 256 characters are obtainable in a uniform
-way, from |^^00| to |^^ff|. Character 127 is |^^7f|.
-
-\noindent
-[Also remove one of the two dangerous bend signs on line 20.]
-
-\bugonpage A45, bottom paragraph and footnote (9/23/89)
-
-\ddanger People who install \TeX\ systems for use with non-American alphabets
-can make \TeX\ conform to any desired standard. For example, suppose
-you have a ^{Norwegian keyboard} containing the letter {\tt\ae}, which
-^^{Scandinavian letters} ^^{foreign languages}
-comes in as code~241 (say). Your local format package should define
-|\catcode`|{\tt\ae}|=11|; then you could have control sequences like
-|\s|{\tt\ae}|rtrykk|. Your \TeX\ input files could be made readable by
-American installations of \TeX\ that don't have your keyboard, by
-substituting |^^f1| for character~241. \ (For example, the stated control
-sequence would appear as |\s^^f1rtrykk| in the file; your American
-friends should also be provided with the format that you used, with its
-|\catcode`^^f1=11|.) \ Of course you should also arrange your fonts
-so that \TeX's character 241 will print as {\ae}; and you should
-change \TeX's hyphenation algorithm so that it will do correct
-Norwegian hyphenation. The main point is that such changes are not
-extremely difficult; nothing in the design of \TeX\ limits it to the
-American alphabet. Fine printing is obtained by fine tuning to the
-language or languages being used.
-^^{keyboards, non-ASCII}
-
-\ddanger European languages can also be accommodated effectively with
-only a limited character set.
-For example, let's consider Norwegian again, but suppose that\parfillskip=0pt
-
-\noindent [Now continue with the text on line 11 of page 46.]
-
-\bugonpage A47, lines 9--21 (9/23/89)
-
-\ddanger If \TeX\ sees a superscript character (category 7) in any state,
-and if that character is followed by another identical character, and if
-those two equal characters are followed by a character of code
-$c<128$, then they
-are deleted and 64 is added~to or subtracted from the code~$c$.
-\ (Thus, |^^A| is
-replaced by a single character whose code is~1, etc., as explained earlier.) \
-However, if the two superscript characters are immediately followed by two
-of the lowercase hexadecimal digits |0123456789abcdef|, the
-four-character sequence is replaced by a single character having the
-specified hexadecimal code.
-The replacement is carried out also if such a trio or quartet of
-characters is encountered during steps (b) or~(c) of the control-sequence-name
-scanning procedure described above. After the replacement is made, \TeX\
-begins again as if the new character had been present all the time.
-If a superscript character is not the first of such a trio or quartet, it is
-handled by the following rule.
-
-\ddanger If \TeX\ sees a character of categories 1, 2, 3, 4, 6, 8, 11, 12,
-or~13,
-or a character of category~7 that is not the first of a special
-sequence as just
-described, it converts the character to a token by attaching the category
-code, and goes into state~$M$. This is the normal case; almost every
-nonblank character is handled by this rule.
-
-\bugonpage A48, line 15 (9/23/89)
-
-\ninepoint\noindent
-the input line
-`| $x^2$~ \TeX ^^62^^6|'\thinspace?
-
-\bugonpage A54, third line from the bottom (9/23/89)
-
-\ninepoint\noindent
-For example, a well-designed \TeX\ font for ^{French}
-might well treat accents as lig-\cutpar
-
-\bugonpage A76, lines 3--5 from the bottom (9/23/89)
-
-\ninepoint\noindent
-\TeX\ does not assign any value to
-|\sfcode'042|.
-
-\bugonpage A107, new copy for top of page (9/23/89)
-
-\ddanger If you want to avoid overfull boxes at all costs without
-trying to fix them manually, you might be tempted to set
-|tolerance=10000|; this allows arbitrarily bad lines to be acceptable
-in tough situations. But infinite tolerance is a bad idea, because
-\TeX\ doesn't distinguish between terribly bad and preposterously
-horrible lines. Indeed, a tolerance of 10000 encourages \TeX\ to
-concentrate all the badness in one place, making one truly unsightly
-line instead of two moderately bad ones, because a single
-``write-off'' produces fewest total demerits according to the rules.
-There's a much better way to get the desired effect: \TeX\ has a
-parameter called ^|\emergencystretch| that is added to the assumed
-stretchability of every line when badness and demerits are computed,
-in cases where overfull boxes are otherwise unavoidable. If
-|\emergencystretch| is positive, \TeX\ will make a third pass over a
-paragraph before choosing the line breaks, when the first passes did
-not find a way to satisfy the ^|\pretolerance| and ^|\tolerance|.
-The effect of\/ |\emergencystretch| is to scale down the badnesses so
-that large infinities are distinguishable from smaller ones. By
-setting |\emergencystretch| high enough (based on |\hsize|) you can be
-sure that the |\tolerance| is never exceeded; hence overfull boxes
-will never occur unless the line-breaking task is truly impossible.
-
-\bugonpage A116, lines 11--15 (6/7/89)
-
-\danger If you have two or more |\topinsert| or |\pageinsert| commands in
-quick succession, \TeX\ may need to carry them over to several subsequent
-pages; but they will retain their relative order when they are
-carried over. For example, suppose you have pages that are nine inches
-tall, and suppose you have already specified 4~inches of text for some
-page, say page~25. Then suppose you make seven topinserts in a row, of%
-{\parfillskip=0pt\endgraf}\endgroup
-
-\bugonpage A125, lines 13--29 (9/23/89)
-
-\ddanger \looseness=-1
-When the best page break is finally chosen, \TeX\ removes everything after
-the chosen breakpoint from the bottom of the ``current page,'' and puts it
-all back at the top of the ``recent contributions.'' The
-chosen breakpoint itself is placed at the very top of the recent contributions.
-If it is a penalty item, the value of the penalty is recorded in
-^|\outputpenalty| and the penalty in the contribution list is changed
-to $10000$; otherwise |\outputpenalty| is set to 10000.
-The insertions that remain on the current page are of three kinds: For
-each class~$n$ there are unsplit insertions, followed possibly by
-a single split insertion, followed possibly by others. If
-^|\holdinginserts|$\null>0$, all insertions remain in place (so that
-they might be contributed again); otherwise they are all removed from
-the current page list as follows: The unsplit insertions
-are appended to |\box|$\,n$, with no interline glue between them. \
-(^{Struts} should be used, as in the |\vfootnote| macro of
-Appendix~B\null.) \
-If a split insertion is present, it is effectively |\vsplit| to the size
-that was computed previously in Step~4; the top part is treated as an
-unsplit insertion, and the remainder (if any) is converted to an insertion
-as if it had not been split. This remainder, followed by any other floating
-insertions of the same class, is held
-over in a separate place. \ (They will show up on the ``current page'' if
-^|\showlists| is used while an ^|\output| routine is active; the total
-number of such insertions appears in ^|\insertpenalties| during an
-|\output| routine.) %\
-Finally, the remaining items before the best break on the current page are put
-together in a |\vbox|\parfillskip=0pt
-
-\bugonpage A131, line 12 (9/22/89)
-
-\ninepoint\noindent
-work fine; but sometimes you want to have uniformity
-between different members of a\cutpar
-
-\bugonpage A155, lines 3--5 (9/23/89)
-
-\ninepoint\noindent
-when it encounters a character that
-is given explicitly as ^|\char|\<number>.
-
-\bugonpage A214, lines 19--24 (9/23/89)
-
-\ninepoint
-\textindent\bull |\the|\<special register>, where \<special register> is
-one of the integer quantities ^|\prevgraf|, ^|\deadcycles|, ^|\insertpenalties|,
-^|\inputlineno|, ^|\badness|,
-or ^|\parshape| (denoting only the number of lines of\/ |\parshape|); or
-one of the dimensions ^|\pagetotal|, ^|\pagegoal|, ^|\pagestretch|,
-^|\pagefilstretch|, ^|\pagefillstretch|, ^|\pagefilllstretch|, ^|\pageshrink|,
-^|\pagedepth|. In horizontal modes you can also refer to a special integer,
-|\the\spacefactor|; in vertical modes there's a special dimension,
-|\the\prevdepth|.
-
-\bugonpage A229, new copy after line 11 (9/23/89)
-
-\ddanger \TeX\ will report the badness of glue setting in a box if
-you ask for the numeric quantity
-^|\badness| after making a box. For example, you might say
-\begintt
-\setbox0=\line{\trialtexta}
-\ifnum\badness>250 \setbox0=\line{\trialtextb}\fi
-\endtt
-The badness is between 0 and 10000
-unless the box is overfull, when |\badness=1000000|.
-
-\bugonpage A271, lines 17--20 (9/23/89)
-
-\ninepoint
-\beginsyntax
- \alt<countdef token>\alt^|\count|<8-bit number>\alt<codename><8-bit number>
- \alt<chardef token>\alt<mathchardef token>\alt^|\parshape|\alt^|\inputlineno|
- \alt^|\hyphenchar|<font>\alt^|\skewchar|<font>\alt^|\badness|
-\endsyntax
-
-\bugonpage A272, lines 3--4 (9/23/89)
-
-\ninepoint\noindent
-value is between 0~and $2^8-1=255$; a ^\<4-bit number> is similar.
-
-\bugonpage A273, insert after lines 11, 20, 21, 21, 38 (9/23/89)
-
-\ninepoint
-\begindisplay
-|\holdinginserts|\quad(positive if insertions remain dormant in output box)\cr
-|\language|\quad(the current set of hyphenation rules)\cr
-|\lefthyphenmin|\quad(smallest fragment at beginning of hyphenated word)\cr
-|\righthyphenmin|\quad(smallest fragment at end of hyphenated word)\cr
-|\errorcontextlines|\quad(maximum extra context shown when errors occur)\cr
-\enddisplay
-
-\bugonpage A274, insert after line 4 (9/23/89)
-
-\ninepoint\indent
-|\emergencystretch|\quad(reduces badnesses on final pass of line-breaking)
-
-\bugonpage A275, line 13 (9/23/89)
-
-\ninepoint\noindent
-That makes a total of 103 parameters of all five kinds.
-
-\bugonpage A283, line 14 (9/23/89)
-
-\ninepoint
-\beginsyntax
- \alt^|\noboundary|\alt^|\unhbox|\alt^|\unhcopy|\alt^|\valign|\alt^|\vrule|
-\endsyntax
-
-\bugonpage A286, lines 3--12 from the bottom (9/23/89)
-
-\ninepoint
-\textindent{$\bull$}%
-\<letter>, \<otherchar>, \kern-1pt^|\char|\<8-bit number>, \<chardef token>,
-\kern-1pt^|\noboundary|.\enskip
-The most common commands of all are the character commands that tell
-\TeX\ to append a character to the current horizontal
-list, using the current font.
-If two or more commands of this type occur in succession, \TeX\ processes
-them all as a unit, converting to ligatures and/or
-inserting kerns as directed by the font information. \ (Ligatures and
-kerns may be influenced by invisible ``boundary'' characters at the left
-and right, unless |\noboundary| appears.) \ Each character
-command adjusts ^|\spacefactor|, using
-the ^|\sfcode| table as described in Chapter~12.
-In unrestricted horizontal mode, a
-`|\discretionary{}{}{}|' item is appended after a character whose code is
-the ^|\hyphenchar| of its font, or after a ligature formed from a sequence
-that ends with such a character.
-
-\bugonpage A287, insert after line 19 (9/23/89)
-
-\ninepoint
-\textindent{$\bull$}%
-|\setlanguage|\<number>.\enskip See the conclusion of Appendix H.
-
-\bugonpage A289, lines 9--14 from the bottom (9/23/89)
-
-\ninepoint\noindent
-$2^{15}-1$. This is done by replacing the character number by its
-^|\mathcode| value. If the
-|\mathcode| value turns out to be $32768=\null$\hex{8000}, however,
- the \<character>
-is replaced by an ^{active character} token having the original character
-code (0 to~255); \TeX\ forgets the original \<character> and expands this
-active character according to the rules of Chapter~20.
-
-\bugonpage A290, insert before 13th line from bottom (9/23/89)
-
-\ninepoint
-\textindent{$\bull$}%
-|\noboundary|. This command is redundant and therefore has no
-effect; boundary ligatures are automatically disabled in math modes.
-
-\bugonpage A296, line 16 from the bottom (9/22/89)
-
-\noindent[There should be a `|^|' just above the `|3|' in the line below.
-This was mistakenly dropped by the printer some time during 1985; it was
-correct in the first two printings and it has always been correct inside the
-computer!]
-
-\bugonpage A309, lines 3--5 (9/23/89)
-
-\ninepoint\noindent
-\hbox to\parindent{\bf\hss8.4.\enspace}\ignorespaces
-|$|$_{3}$ |x|$_{11}$ |^|$_7$ |2|$_{12}$ |$|$_{3}$ |~|$_{13}$ \]$_{10}$
-\cstok{TeX} |b|$_{12}$ |v|$_{12}$ \]$_{10}$. The final space comes from the
-\<return> placed at the end of the line. Code |^^6| yields |v| only
-when not followed by |0|--|9| or |a|--|f|.
-The initial space is ignored, because state~$N$
-governs the beginning of the line.
-
-\bugonpage A314, line 27 (9/23/89)
-
-\ninepoint\noindent
-The English word `eighteen' might deserve similar treatment.
-\TeX's hyphenation algorithm will not make such spelling changes automatically.
-
-\bugonpage A318, line 19 (3/3/89)
-
-\ninepoint
-|\def\clearnotenumber{\notenumber=0\relax}|
-
-\bugonpage A330, line 3 (8/25/89)
-
-\ninepoint\noindent
-\hbox to\parindent{\bf\hss20.10.\enspace}\ignorespaces
-|\def\overpaid{{\count0=\balance|
-
-\bugonpage A336, lines 4--8 from the bottom (9/23/89)
-
-\ninepoint\noindent
-badness rating of a
-box is at most 10000, except that the |\badness| of
-an overfull box is 1000000. |INITEX| initializes |\tolerance| to
-10000, thereby making all line breaks feasible. Penalties of 10000 or more
-prohibit breaks; penalties of $-10000$ or less make breaks mandatory. The
-cost of a page break is 100000, if the badness is 10000 and if the
-associated penalties are less than 10000 in magnitude (see Chapter~15).
-
-\bugonpage A337, lines 2--16 (9/23/89)
-
-\ninepoint\noindent
-ifies characters whose codes differ by~64
-from the codes of |?|, |@|, |A|; this convention applies only to
-characters with ASCII codes less than~128. There are 256 possible characters,
-hence 256 entries in each of the |\catcode|, |\mathcode|,
-|\lccode|, |\uccode|, |\sfcode|, and |\delcode| tables. All
-|\lccode|, |\uccode|, and |\char| values
-must be less than~256. A font has at most 256 characters. There are
-256~|\box| registers, 256~|\count| registers, 256~|\dimen| registers,
-256~|\skip| registers, 256~|\muskip| registers, 256~|\toks| registers,
-256~hyphenation tables.
-The ``at size'' of a font must be less than~$2048\pt$, i.e.,~$2^{11}\pt$.
-Math delimiters are encoded by multiplying the math~code of the ``small
-character'' by~$2^{12}$. The magnitude of
-a~\<dimen> value must be less than~$16384\pt$, i.e.,~$2^{14}\pt$;
-similarly, the \<factor> in a~\<fil dimen> must be less than~$2^{14}$.
-A~|\mathchar| or |\spacefactor| or |\sfcode| value must be less than~$2^{15}$;
-a~|\mathcode| or |\mag| value must be less than or equal to~$2^{15}$,
-and $2^{15}$ denotes an ``active'' math character. There
-are $2^{16}\rm\,sp$ per~pt. A~|\delcode| value
-must be less than~$2^{24}$; a~|\delimiter|, less than $2^{27}$.
-The |\end| command sometimes contributes
-a penalty of $-2^{30}$ to the current page. A~\<dimen> must be less than
-$2^{30}\rm\,sp$ in absolute value; a~\<number> must be
-less than $2^{31}$ in absolute value.
-
-\bugonpage A348, line 12 from the bottom (9/23/89)
-
-\ninepoint\noindent
-^|\showboxbreadth||=5 |^|\showboxdepth||=3 |^|\errorcontextlines||=5|
-
-\bugonpage A364, insert before line 18 from the bottom (9/23/89)
-
-\ninepoint\noindent
-^|\lefthyphenmin||=2 |^|\righthyphenmin||=3 % disallow x- or -xx breaks|
-
-\bugonpage A364, line 5 from the bottom (9/23/89)
-
-\ninepoint\noindent
-|\def|^|\fmtname||{plain}\def\fmtversion{3.0} % identifies the current format|
-
-\bugonpage A369, insert before line 5 from the bottom (9/23/89)
-
-\ninepoint
-Modern keyboards allow 256 codes to be input, not just 128; so \TeX\
-represents characters internally as numbers in the range 0--255 (i.e.,
-\oct{000}--\oct{377}, or \hex{00}--\hex{FF}). Implementations of \TeX\
-differ in which characters they will accept in input files and which
-they will transmit to output files; these subsets can be specified
-independently. A completely permissive version of \TeX\ allows full
-256-character input and output; other versions might ignore all
-but the visible characters of ASCII; still other versions might
-distinguish the tab character (code \oct{011}) from a space on input,
-but might output each tab as a sequence of three characters |^^I|.
-
-\bugonpage A370, lines 3--7 (9/23/89)
-
-\ninepoint\noindent
-close as possible to the ASCII conventions.
-\ (b)~Make sure that codes \oct{041}--\oct{046}, \oct{060}--\oct{071},
-\oct{141}--\oct{146}, and \oct{160}--\oct{171} are present and that
-each unrepresentable
-internal code $<\null$\oct{200} leads to a representable code when \oct{100} is
-added or subtracted; then all 256 codes can be input and output.
-\ (c)~Cooperate with everyone else who shares
-the same constraints, so that you all adopt the same policy.
-\ (See Appendix~J for information about the \TeX\ Users Group.)
-
-\bugonpage A370, bottom line (9/23/89)
-
-\ninepoint\noindent
-doesn't matter if these symbols have their plain
-\TeX\ meanings or not. \ (6)~There is a special convention for
-representing characters 0--255 in the hexadecimal forms
-|^^00|--|^^ff|, explained in Chapter~8. This convention is always
-acceptable as input, when |^| is any character of catcode~7. Text
-output is produced with this convention only when representing
-characters of code $\ge128$ that a \TeX\ installer has chosen not to
-output directly.
-
-\bugonpage A385, line 8 (5/14/89)
-
-\ninepoint
-|\def\beginbox{\setbox0=\hbox\bgroup}|
-
-\bugonpage A400, line 18 from the bottom (9/23/89)
-
-\ninepoint\noindent
-page prematurely if you want to pass a signal. \ (Set
-^|\holdinginserts| positive to pass a signal when the contents of\/
-|\box255| will be sent back through the page builder again, if any
-insertions are present.)
-
-\bugonpage A419, lines 4--6 (9/23/89)
-
-\ninepoint\noindent
-shortened or lengthened anyway;
-book preparation with \TeX, as with type, encourages interaction between
-humans and machines.) \
-The lines of the quotations are set ^{flush right} by using
-^|\obeylines| together with a stretchable ^|\leftskip|:
-
-\bugonpage A444, lines 21--26 (9/23/89)
-
-\ninepoint\noindent
-following one, using the specified family and the current size, then
-insert the ligature character and continue as specified by the font;
-two characters may collapse into one, or a new character may appear.
-Otherwise if the font information
-shows a kern between the current symbol and the next, insert a kern item
-after the current Ord atom and move to the next item after that.
-Otherwise (i.e., if no ligature or kern is specified between the present
-text symbol and the following character), go to Rule~17.
-
-\bugonpage A453, lines 12--14 from the bottom (9/23/89)
-
-\begingroup
-\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
-\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
-\ninepoint\noindent
-Exception: The character
-`|.|'~is treated as if it were a \<letter> of code~0
-when it appears in a pattern. Code~0 (which obviously cannot match a nonzero
-|\lccode|) is used by \TeX\ to represent the
-left or right edge of a word when it is being hyphenated.
-
-\endgroup
-
-\bugonpage A454, lines 7--15 from the bottom (9/23/89)
-
-\begingroup
-\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
-\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
-\ddanger If a trial word $l_1\ldots l_n$ has been found by this process,
-hyphenation will still be abandoned unless $n\ge\lambda+\rho$, where
-$\lambda=\max(1,\hbox{|\lefthyphenmin|})$ and
-$\rho=\max(1,\hbox{|\righthyphenmin|})$.
-\ (Plain \TeX\ takes $\lambda=2$ and $\rho=3$.) \ Furthermore, the items
-immediately following the trial word must consist of zero or more
-characters, ligatures, and implicit kerns, followed immediately by
-either glue or an explicit kern or a penalty item or a whatsit or an
-item of vertical mode material from ^|\mark|, ^|\insert|, or ^|\vadjust|.
-Thus, a box or rule or math formula or discretionary following too closely
-upon the trial word will inhibit hyphenation. (Since \TeX\ inserts
-empty discretionaries after ^{explicit hyphens}, these rules imply that
-already-hyphenated compound words will not be further hyphenated by
-the algorithm.)
-
-\endgroup
-
-\bugonpage A455, new copy after line 13 (9/23/89)
-
-\begingroup
-\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
-\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
-\ddanger \looseness=-1
-So far we have assumed that \TeX\ knows only one style of
-hyphenation at a time; but in fact \TeX\ can remember up to 256
-distinct sets of rules, if you have enough memory in your computer. An
-integer parameter called ^|\language| selects the rules actually used;
-every ^|\hyphenation| and ^|\patterns| specification appends new rules
-to those previously given for the current value of\/ |\language|.
-\ (If\/ |\language| is negative or greater than 255, \TeX\ acts as if
-|\language|$\null=0$.) \ All |\patterns| for all languages must be
-given before a paragraph is typeset, if |INITEX| is used for
-typesetting.
-
-\ddanger \TeX\ is able to work with several languages in the same
-paragraph, because it operates as follows. At the beginning of a
-paragraph the ``current language'' is defined to be~0. Whenever a
-character is added to the current paragraph (i.e., in unrestricted
-horizontal mode), the current language is compared to |\language|; if
-they differ, the current language is reset and a whatsit node
-specifying the new current language is inserted before the character.
-Thus, if you say `|\def\french{\language1...}|' and `|mix| |{\french
-franc/ais}| |with| |English|', \TeX\ will put whatsits before the |f|
-and the~|w|; hence it will use language~1 rules when hyphenating
-|franc/ais|, after which it will revert to language~0. You can insert
-the whatsit yourself (even in restricted horizontal mode) by saying
-^|\setlanguage|\<number>; this changes the current language but it
-does not change |\language|.
-
-\endgroup
-
-\bugonpage A459, right column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\badness|, 214, {\it229}, 271.
-
-\bugonpage A461, right column (9/23/89)
-
-\eightpoint
-caron, {\sl see\/} h\'a\v cek.
-
-\bugonpage A464, line 10 (5/15/89)
-
-\eightpoint
-displays, 87, 103, {\it139--145}, {\it166--167},
-
-\bugonpage A464, right column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\emergencystretch|, $\underline{107}$, 274.
-
-\bugonpage A465, left column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\errorcontextlines|, $\underline{34}$, 273, {\it348}.
-
-\bugonpage A466, entry for `fractions' (9/23/89)
-
-\eightpoint[Add page 332 to this entry.]
-
-\bugonpage A466, entry for `French'' (9/23/89)
-
-\eightpoint[Add page 455 to this entry.]
-
-\bugonpage A467, entry for `hexadecimal' (9/23/89)
-
-\eightpoint[Add pages 45, 47--48 to this entry.]
-
-\bugonpage A467, right column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\holdinginserts|, $\underline{125}$, 273, 400.
-
-\bugonpage A467, bottom line (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\hyphenation|, 277, {\it419}, $\underline{452}$--$\underline{453}$, 455.
-
-\bugonpage A468, right column (9/23/89)
-
-\eightpoint
-infinite badness, 97, 107, 111, 229, 317.
-
-\bugonpage A468, right column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\inputlineno|, 214, 271.
-
-\bugonpage A469, entry for kerns (9/23/89)
-
-\eightpoint[Add pages 286 and 444 to this entry.]
-
-\bugonpage A469, left column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\language| (hyphenation method), 273, $\underline{455}$.
-
-\bugonpage A469, right column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\lefthyphenmin|, 273, {\it364}, $\underline{454}$.
-
-\bugonpage A470, entry for ligatures (9/23/89)
-
-\eightpoint[Add pages 286 and 444 to this entry.]
-
-\bugonpage A472, left column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\noboundary|, 283, $\underline{286}$, 290.
-
-\bugonpage A473, right column (9/23/89)
-
-\eightpoint
-overfull boxes, 27--30, 94, 229, 238,\par
-\indent\qquad 302--303, 307, 400.\par
-\indent\quad avoiding, 107.
-
-\bugonpage A474, left column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\patterns|, 277, $\underline{453}$, 455.
-
-\bugonpage A476, left column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\righthyphenmin|, 273, {\it364}, $\underline{454}$.
-
-\bugonpage A476, right column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\setlanguage|, 287, $\underline{455}$.
-
-\bugonpage A476, right column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\showboxbreadth|, 273, $\underline{302}$, 303, {\it348}.\par
-\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\showboxdepth|, 79, 273, $\underline{302}$, 303, {\it348}.
-
-\bugonpage A479, left column (9/23/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\tolerance|, {\it29--30}, 91, 94, $\underline{96}$, 107, 272,\par
-\indent\qquad{\it317}, {\it333}, {\it342}, {\it348}, {\it364}, {\it451}.
-
-\bugonpage A481, right column, last six entries (9/23/89)
-
-\def\frac#1/#2{\leavevmode\kern.1em
- \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
- /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}%
-\eightpoint
-\frac1/2, 67, 332.\par
-1/2, in unslashed form, 141, 186.\par
-\<4-bit number>, $\underline{271}$.\par
-\<8-bit number>, $\underline{271}$, 276--278.\par
-\<15-bit number>, $\underline{271}$, 277, 289, 291.\par
-\<27-bit number>, $\underline{271}$, 289, 291.\par
-
-\bugonpage A483, lines 15 and 21 (9/23/89)
-
-\noindent[Delete these two lines, as TUG's address is no longer c/o AMS.]
-
- % volume B
-\hsize=35pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage Bvii, top two lines (4/21/89)
-
-{\hsize=29pc
-\tenpoint\noindent
-{\it {\sltt WEB} documentation for four utility programs that are
-often used in conjunction with \TeX: {\sltt POOLtype}, {\sltt TFtoPL},
-{\sltt PLtoTF}, and {\sltt DVItype}.}
-\par}
-
-\bugonpage B2, line 32 (6/20/89)
-
-\ninepoint\noindent\hskip10pt
-{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]TeX,\]Version\]2.991\char'23}\quad
-$\{\,$printed when \TeX\ starts$\,\}$
-
-\bugonpage B118, lines 2--4 (3/2/89)
-
-\ninepoint\noindent\hskip10pt
-{\bf begin if\/} $\\{cur\_level}>\\{level\_one}$ {\bf then}\par
-\noindent\hskip20pt{\bf begin} \\{check\_full\_save\_stack}; \
- $\\{save\_type}(\\{save\_ptr})\gets\\{insert\_token}$;\par
-\noindent\hskip20pt$\\{save\_level}(\\{save\_ptr})\gets\\{level\_zero}$; \
- $\\{save\_index}(\\{save\_ptr})\gets t$; \ \\{incr}(\\{save\_ptr});\par
-\noindent\hskip20pt{\bf end};
-
-\bugonpage B182, line 13 becomes two lines (6/20/89)
-
-\ninepoint\noindent
-$k,\\{kk}$: \\{small\_number};\quad
- $\{\,$number of digits in a decimal fraction$\,\}$\par\noindent
-$p,q$: \\{pointer};\quad
- $\{\,$top of decimal digit stack$\,\}$
-
-\bugonpage B182, line 15 from the bottom (6/20/89)
-
-\ninepoint\noindent\hskip10pt
-{\bf begin} $k\gets0$; $p\gets\\{null}$; \\{get\_token};\quad
- $\{\,$\\{point\_token} is being re-scanned$\,\}$
-
-\bugonpage B182, line 11 from the bottom (6/20/89)
-
-\ninepoint\noindent\hskip30pt
-{\bf begin} $q\gets\\{get\_avail}$; $\\{link}(q)\gets p$;
- $\\{info}(q)\gets\\{cur\_tok}-\\{zero\_token}$;
- $p\gets q$; $\\{incr}(k)$;
-
-\bugonpage B182, line 8 from the bottom (6/20/89)
-
-\ninepoint\noindent
-\\{done1}: {\bf for} $\\{kk}\gets k$ {\bf downto} 1 {\bf do}\par
-\noindent\hskip20pt
-{\bf begin} $\\{dig}[kk-1]\gets\\{info}(p)$; $q\gets p$; $p\gets\\{link}(p)$;
- $\\{free\_avail}(q)$;\par
-\noindent\hskip20pt{\bf end};\par
-\noindent\hskip10pt$f\gets\\{round\_decimals}(k)$;
-
-\bugonpage B332, lines 11 and 12 from the bottom (4/8/89)
-
-\ninepoint
-\noindent\hskip10pt
-{\bf begin if\/} $\\{cur\_align}=\\{null}$ {\bf then}
- \\{confusion}({\tt\char'23endv\char'23});\par\noindent\hskip10pt
-$q\gets\\{link}(\\{cur\_align})$; \ {\bf if\/} $q=\\{null}$ {\bf then}
- \\{confusion}({\tt\char'23endv\char'23});
-
-\bugonpage B466, line 5 becomes three lines (6/7/89)
-
-\ninepoint
-\noindent
-$\\{mmode}+\\{halign}$: {\bf if\/} \\{privileged} {\bf then}\par\noindent
-\hskip20pt{\bf if\/} $\\{cur\_group}=\\{math\_shift\_group}$
- {\bf then} \\{init\_align}\par\noindent\hskip20pt
-{\bf else} \\{off\_save};
-
-\bugonpage B518, line 25 (8/31/89)
-
-\ninepoint\noindent\hskip10pt
-$\\{undump}(\\{lo\_mem\_stat\_max}+1)(\\{lo\_mem\_max})(\\{rover})$; \
-$p\gets\\{mem\_bot}$; \ $q\gets\\{rover}$;
-
- % volume C
-\hsize=29pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-
-\buginvol C, in general (9/23/89)
-
-\ninepoint\noindent
-[Change `127' to `255' and `128' to `256' in contexts referring to character
-codes. This happens on pages 188(thrice) and 251.]
-
-\bugonpage C91, lines 12 and 13 (8/31/89)
-
-\begintt
-\mode=cheapo; input newface
-\endtt
-and the same file should also produce a high-resolution font if we start with
-
-\bugonpage C204, line 4 (8/18/89)
-
-\ninepoint\noindent
-so that
-\\{currenttransform} multiplies all $y$~coordinates by
-\\{aspect\_ratio}, when paths are\cutpar
-
-\bugonpage C212, lines 24--27 (9/30/89)
-
-\ninepoint
-\begindisplay
-{\it boundarychar}\quad&the right boundary character for ligatures and kerns\cr
-\enddisplay
-All of these quantities are numeric. They are initially zero at the
-start of a job, except for {\it year\/}, {\it month\/},
- {\it day\/}, and {\it time\/}, which
-are initialized to the time the run began; furthermore, {\it boundarychar\/} is
-initially~$-1$. A {\it granularity\/} of zero is equivalent to
- $\hbox{\it granularity\/}=1$.
-A preloaded base file like plain \MF\ will usually give nonzero values to
-several other internal quantities on this list.
-
-\bugonpage C259, lines 16 and 17 from the bottom (5/14/89)
-
-\tenpoint
-\noindent
-|screenchars|; \ |screenstrokes|; \ |imagerules|; \ |gfcorners|; \
-|nodisplays|;\hfil\break
-|notransforms|; \ |input| \<filename>.
-
-\bugonpage C282, the three lines following the chart (9/30/89)
-
-\tenpoint\noindent
-\MF\ can also be configured to accept any or all of the character codes
-128--255.
-However, \MF\ programs that make use of anything in addition to the 95
-standard ASCII characters cannot be expected to run on other systems, so
-the use of extended character sets is discouraged.
-
-\bugonpage C316, bottom 14 lines and top 30 of page C317 (9/30/89)
-
-\ninepoint
-Ligature information and kerning information is specified in short
-``^{ligtable programs}'' of a particularly simple form. Here's an example
-that illustrates most of the features (although it is not a serious
-example of typographic practice):
-\beginlines
-^|ligtable|| "f": "f" =: oct"013", "i" |\||=: oct"020", skipto 1;|
-|ligtable "o": "b": "p": "e" kern .5u#, "o" kern .5u#, "x" kern-.5u#,|
-| 1:: "!" kern u#;|
-\endlines
-This sequence of instructions can be paraphrased as follows:
-\smallskip
-\hangindent 3pc
-Dear \TeX, when you're typesetting an~`f' with this font, and when the
-following character also belongs to this font, look at it closely because
-you might need to do something special: If that following character is
-another~`f', replace the two f's by character code |oct"013"|
-[namely `\char'13'\kern.5pt];
-if it's an `i', retain the `f' but replace the `i' by character code
-|oct"020"| [a dotless `\char'20'\kern.5pt];
-otherwise skip down to label `|1::|' for further instructions.
-When you're typesetting an `o' or~`b' or~`p', if the next input to \TeX\ is
-`e' or~`o', add a half unit
-of space between the letters; if it's an `x', subtract a half unit; if it's an
-exclamation point, add a full unit. The last instruction applies also
-to exclamation points following~`f' (because of the label `|1::|').
-\smallskip\noindent
-When a character code appears in front of a colon, the colon ``labels''
-the starting place for that character's ligature and kerning program,
-which continues to the end of the ligtable statement. A double colon denotes
-a ``local label''; a |skipto| instruction advances to the next matching local
-label, which must appear before 128 ligtable steps intervene. The special
-label \|\||:| can be used to initiate ligtable instructions for an invisible
-``left boundary character'' that is implicitly present just before every
-word; an invisible ``right boundary character'' equal to {\it boundarychar\/} is
-also implicitly present just after every word, if {\it boundarychar\/}
- lies between
-0 and~255.
-
-The general syntax for ligtable programs is pretty easy to guess from
-these examples, but we ought to exhibit it for completeness:
-\beginsyntax \chardef\\=`\|
-<ligtable command>\is[ligtable]<ligtable program><optional skip>
-<ligtable program>\is<ligtable step>\alt<ligtable program>[,]<ligtable step>
-<optional skip>\is[,] [skipto]<code>\alt<empty>
-<ligtable step>\is<code><ligature op><code>
- \alt<code>[kern]<numeric expression>
- \alt<label><ligtable step>
-<ligature op>\is[=:]\alt[\\=:]\alt[\\=:>]\alt[=:\\]\alt[=:\\>]%
- \alt[\\=:\\]\alt[\\=:\\>]\alt[\\=:\\>>]
-<label>\is<code>[:]\alt<code>[::]\alt[\\\\:]
-<code>\is<numeric expression>\alt<string expression>
-\endsyntax
-A \<code> should have a numeric value between 0 and 255, inclusive,
-after having been rounded to the nearest integer; or it should be a
-string of length~1, in which case it denotes the corresponding
-^{ASCII} code (Appendix~C\null). For example, |"A"| and |64.61| both
-specify the code value 65. Vertical bars to the left or right of `|=:|'
-tell \TeX\ to retain the original left and/or right character that invoked a
-ligature. Additional `|>|' signs tell \TeX\ to advance its focus of attention
-instead of doing any further ligtable operations at the current
-character position.
-
-\bugonpage C338, lines 21 and 22 (9/30/89)
-
-\ninepoint\noindent
-and 127--255 have to be specified with the `|#|' option,
-on non-fancy installations of \TeX,
-and so does code 35 (which is the ASCII code of `|#|' itself).
-
-\bugonpage C346, left column, after line 14 (9/30/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-\||=:|, {\it316}, $\underline{317}$.\par
-\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-\||=:>|, $\underline{317}$.\par
-\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|=:|\|, $\underline{317}$.\par
-\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|=:|\||>|, $\underline{317}$.\par
-\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-\||=:|\|, $\underline{317}$.\par
-\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-\||=:|\||>|, $\underline{317}$.\par
-\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-\||=:|\||>>|, $\underline{317}$.\par
-
-\bugonpage C346, left column, after line 31 (9/30/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|::| (local label), $\underline{317}$.\par
-\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-\|\||:| (left boundary label), $\underline{317}$.\par
-
-\bugonpage C347, left column (9/30/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|boundarychar|, 212, 317.
-
-\bugonpage C352, left column (9/30/89)
-
-\eightpoint[Change `\<ligature replacement>' to `\<ligature op>'.]
-
-\bugonpage C354, left column (9/30/89)
-
-\eightpoint
-\<optional skip>, 217.
-
-\bugonpage C356, left column (9/30/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|skipto|, {\it316}, $\underline{317}$.
-
- % Volume D
-\hsize=35pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage Dvi, bottom two lines, and top lines of page vii (4/21/89)
-
-{\hsize=29pc \tenpoint
-\textindent\bull ``\MF\/ware'' by Donald~E. Knuth, Tomas~G. Rokicki, and
-Ar\-thur~L. Samuel, Stanford Computer Science Report 1255 (Stanford,
-California, April 1989), 207~pp. \ {\it The {\sltt WEB} programs for
-four utility programs that are often used in conjunction with
-\slMF\kern1pt: {\sltt GFtype}, {\sltt GFtoPK}, {\sltt GFtoDVI},
-and {\sltt MFT}.}
-\par}
-
-\bugonpage D63, line 9 (8/31/89)
-
-\tenpoint\noindent
-\\{mem}, so we
-allow pointers to assume any \\{halfword} value. The minimum memory
-index represents\cutpar
-
-\bugonpage D63, line 28 (8/31/89)
-
-\tenpoint\centerline{$\\{null}=\\{mem\_min}<\\{lo\_mem\_max}<
-\\{hi\_mem\_min}<\\{mem\_top}\le\\{mem\_end}\le\\{mem\_max}$.}
-
-\bugonpage D67, in the July 1987 printing (4/7/89)
-
-\ninepoint\noindent
-[Delete line 7, which has a redundant `{\bf if\/} $r=p$ {\bf then}';
- move line 8 to the left 10 points for alignment; and restore the following
- line (which was deleted by mistake after line 8):
-
- \noindent\hskip10pt
- $\\{node\_size}(p)\gets q-p$\quad$\{\,$reset the size in case it grew$\,\}$
-
- \noindent
- These corrections are needed only in the reprinting made July, 1987.]
-
-\bugonpage D228, in the July 1987 printing (4/7/89)
-
-\ninepoint\noindent
-[Delete lines 14--15, which were inserted erroneously from a previous errata
-list; and restore the following lines (which were deleted by mistake):
-
-\noindent\hskip20pt
-{\bf begin} \\{double}(\\{max\_coef}); \
-\\{double}(\\{x0}); \
-\\{double}(\\{x1}); \
-\\{double}(\\{x2});\par\noindent\hskip20pt
-\\{double}(\\{y0}); \
-\\{double}(\\{y1}); \
-\\{double}(\\{y2});\par\noindent\hskip20pt
-{\bf end}
-
-\noindent
-These corrections are needed only in the reprinting made July, 1987.]
-
-\bugonpage D248, in the July 1987 printing (4/7/89)
-
-\ninepoint\noindent
-[Delete line 16, which begins with `$d\gets\\{take\_fraction}$';
-and restore the following line (which was deleted by mistake after line 22):
-
-\noindent\hskip10pt
-{\bf if\/} $d<\\{alpha}$ {\bf then} $d\gets\\{alpha}$
-
-\noindent
-These corrections are needed only in the reprinting made July, 1987.]
-
-\bugonpage D389, line 10 (6/20/89)
-
-\ninepoint\noindent\hskip20pt
-\\{help1}({\tt\char'23
-The\]expression\]above\]should\]have\]been\]a\]number\]>=3/4.\char'23});
-
-\bugonpage D504, line 25 (8/31/89)
-
-\ninepoint\noindent\hskip10pt
-$\\{undump}(\\{lo\_mem\_stat\_max}+1)(\\{lo\_mem\_max})(\\{rover})$; \
-$p\gets\\{mem\_min}$; \ $q\gets\\{rover}$;
-
-\bugonpage D510, in the July 1987 printing (4/7/89)
-
-\ninepoint\noindent
-[Move the 7th-to-last line, which begins with `\\{internal}[\\{fontmaking}]',
-one line down, and indent it to the right by 10 more points.
-This correction is needed only in the reprinting made July, 1987.]
-
- % volume E
-\hsize=29pc
-\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
-
-\bugonpage Exiii, bottom four lines (5/5/89)
-
-{\hsize=29pc \tenpoint
-\textindent\bull ``Metamarks: Preliminary studies for a Pandora's Box of
-shapes'' by Neenie Billawala,
-Stanford Computer Science Report 1256 (Stanford,
-California, May 1989), 132~pp. \ {\it Lavishly illustrated studies in
-parameter variation, leading to the design of a new family of
-typefaces called Pandora.}
-\par}
-
-\bugonpage E401, bottom line (5/16/89)
-
-\ninepoint\noindent
-{\bf \def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}%
-math\_fit}$(-.3\\{cap\_height}\0*\\{slant}-.5u\0,\\{ic}\0)$;\par\noindent
-{\bf penlabels}$(1,2,3,4,5,6,7,8)$; {\bf endchar\/};
-\smallskip\noindent
-[some points and labels are missing at the tip of the tail on page 400]
- \bye
- Now here are some that I will make soon!
-
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.four b/Master/texmf-dist/source/generic/knuth/errata/errata.four
deleted file mode 100644
index 11d0435e749..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.four
+++ /dev/null
@@ -1,1052 +0,0 @@
-% Bugs (sigh) in Computers \& Typesetting
-
-\input manmac
-\font\sltt=cmsltt10
-\font\niness=cmss9
-\font\ninessi=cmssi9
-\proofmodefalse
-\raggedbottom
-\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\today{\number\day\
- \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}
-
-\def\cutpar{{\parfillskip=0pt\par}}
-
-\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1987--1988}}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
-\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
-\newcount\nn
-\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
-\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
-
-\noindent This is a list of all corrections made to {\sl Computers \&
-Typesetting}, Volumes A--E\null, between
-16 June 1987 and 20 February 1989. Corrections made to
-the softcover version of {\sl The \TeX book} are the same as corrections to
-Volume~A\null. Corrections to the softcover version of {\sl The
-\slMF\kern1ptbook\/} are the same as corrections to Volume~C\null.
-Some of these corrections have already been made in reprintings
-of the books. Some of these corrections affect the indexes and
-mini-indexes of Volumes B~and~D in ways not shown here. Corrections
-made up to 15 June 1987 appear in other files.
- % volume A
-
-\bugonpage A159, line 22 (2/15/88)
-
-\ninepoint\noindent
-`|\nolimits|' if the normal |\displaylimits|
-convention has been overridden; a Rad\cutpar
-
-\bugonpage A213, lines 34--35 (12/23/87)
-
-\ninepoint\noindent
-text will be a single control sequence token, defined to be like |\relax| if
-its meaning is currently undefined.
-
-\bugonpage A299, line 30 (7/6/88)
-
-\ninepoint\indent\tt
-Fatal format file error; I'm stymied.
-
-\bugonpage A326, line 12 (12/12/87)
-
-\ninepoint\noindent
-its natural width. The |\hbox| version also invokes |\everymath|.
-
-\bugonpage A359, line 2 (11/6/88)
-
-\ninepoint\noindent
-|\mathchardef\ldotp="613A\mathchardef\cdotp="6201\mathchardef\colon="603A|
-
-\bugonpage A359, lines 35--38 (5/24/88)
-
-\ninepoint\noindent
-|\def\updownarrow{\delimiter"326C33F } \def\arrowvert{\delimiter"033C000 }|%
- \par\noindent
-|\def\Updownarrow{\delimiter"326D377 } \def\Arrowvert{\delimiter"033D000 } |%
- \par\noindent
-|\def\vert{\delimiter"026A30C } \def\Vert{\delimiter"026B30D } |%
- \par\noindent
-|\def\backslash{\delimiter"026E30F } \def\bracevert{\delimiter"033E000 }|
-
-\bugonpage A364, line 35 (11/6/88)
-
-\ninepoint\noindent
-|\def\fmtname{plain}\def\fmtversion{2.94} % identifies the current format|
-
-\bugonpage A379, line 15 (10/12/87)
-
-\ninepoint
-|\def\deleterightmost#1{\edef#1{\expandafter\xyzzy#1\xyzzy}}|
-
-\bugonpage A383, lines 7--15 from the bottom (1/4/89)
-
-\begintt
- 209 strings out of 1685
- 1659 string characters out of 17636
- 27618 words of memory out of 52821
- 1172 multiletter control sequences out of 2500
-\endtt
-Consequently there was plenty of room for more macros: $52821-27618=
-25203$ unused cells of main memory, $2500-1172=1328$ of name memory,
-$1685-209=1476$ of string memory, and $17636-1659=15977$ of character memory.
-But a fairly large \TeX\ was being used, and only the macros of
-Appendices B and~E were loaded; in other circumstances it might have
-been necessary to conserve space.
-
-\bugonpage A454, lines 23--29 (8/13/87)
-
-\begingroup
-\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
-\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
-\ddanger If a suitable starting letter is found, let it be in font~$f$.
-Hyphenation is abandoned unless the |\hyphenchar| of~$f$ is between
-0 and~255, and unless a character of that number exists in the font.
-If this test is passed, \TeX\ continues to scan forward
-until coming to something that's not one of the following three
-``admissible items'': (1)~a character in font~$f$ whose |\lccode|
-is nonzero; (2)~a ligature formed entirely from characters of type~(1);
-(3)~an implicit kern. The first inadmissible item terminates this part of
-the process; the trial word consists of all the letters found in admissible
-items. Notice that all of these letters are in font~$f$.
-
-\endgroup % end the special hyphenation conventions
-
-\bugonpage A458, left column, line 19 (2/15/88)
-
-\eightpoint\indent
-|\|\| ( $\Vert$ ), {\it146--147}, {\it171}, $\underline{361}$, 435, 438.
-
-\bugonpage A462, left column, line 7 (10/9/87)
-
-\eightpoint\indent\qquad 152, 178, $\underline{360}$.
-
-\bugonpage A463, left column (4/17/88)
-
-\eightpoint\indent
-\hbox to0pt{\hss\lower1pt\hbox{*}}|\day|, 273, 349, {\it406}.
-
-\bugonpage A464, left column, under Displays (12/8/88)
-
-\eightpoint\indent\quad
-non-centered, 186, 326, 375--376, 420--421.
-
-\bugonpage A465, entry for {\tt\char`\\everymath} (12/12/87)
-
-\eightpoint\indent[Include also a reference to page 326.]
-
-\bugonpage A465, right column (7/6/88)
-
-\eightpoint\indent{\tt Fatal format file error}, 299.
-
-\bugonpage A473, entry for `page builder' (8/13/87)
-
-\eightpoint\indent\quad when exercised, 122, 280--283, 286--287.
-
-\bugonpage A474, left column (12/27/88)
-
-\eightpoint\indent
-\hbox to0pt{\hss\lower1pt\hbox{*}}|\parshape|, 101--102, 214, 271, 277, 283,
-
-\bugonpage A480, right column (2/15/88)
-
-\eightpoint\indent|\vdots| ( $\vdots$ ), {\it177}, $\underline{359}$.
-
-\bugonpage A481, right column (7/3/87)
-
-\eightpoint|\z@|, $\underline{347}$, 348.\par
-|\z@skip|, $\underline{347}$, 348.
- % volume B
-\hsize=35pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage B2, line 32 (2/20/89)
-
-\ninepoint\noindent\hskip10pt
-{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]TeX,\]Version\]2.97\char'23}\quad
-$\{\,$printed when \TeX\ starts$\,\}$
-
-\bugonpage B38, lines 7--9 from the bottom (11/6/88)
-
-\tenpoint\noindent[Delete this paragraph; it is being moved to page B214.]
-
-\bugonpage B38, line 5 from the bottom (12/14/88)
-
-\ninepoint\noindent\kern10pt
-{\bf begin if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{term\_and\_log}$
-
-\bugonpage B39, line 5 (12/14/88)
-
-\ninepoint\noindent\kern50pt
-{\bf if\/} \\{log\_opened} {\bf then} \\{error};
-
-\bugonpage B52, line 5 (8/13/87)
-
-\tenpoint\noindent
-cannot be done, i.e., if $\\{hi\_mem\_min}=\\{lo\_mem\_max}+1$,
-we have to quit.
-
-\bugonpage B54, lines 34--35 (7/9/88)
-
-\ninepoint\noindent\kern10pt
-{\bf begin if\/} $\\{hi\_mem\_min}-\\{lo\_mem\_max}\ge1998$
- {\bf then} $t\gets\\{lo\_mem\_max}+1000$\par\noindent\kern10pt
-{\bf else} $t\gets\\{lo\_mem\_max}+1+(\\{hi\_mem\_min}-\\{lo\_mem\_max})
-\,\mathbin{\bf div}\,2$;\quad\kern-4pt
-$\{\,\\{lo\_mem\_max}+2\le t<\\{hi\_mem\_min}\,\}$
-
-\bugonpage B108, new line after line 8 (5/24/88)
-
-\ninepoint\noindent\kern20pt
-$d$: \\{integer};\quad
-$\{\,$number of characters in incomplete current string$\,\}$
-
-\bugonpage B108, lines 31--33 (5/24/88)
-
-\ninepoint\noindent\kern10pt
-$\\{str\_room}(l)$; $d\gets\\{cur\_length}$;\par\noindent\kern10pt
-{\bf while} $\\{pool\_ptr}>\\{str\_start}[\\{str\_ptr}]$ {\bf do}
- \par\noindent\kern20pt
-{\bf begin} \\{decr}(\\{pool\_ptr});
- $\\{str\_pool}[\\{pool\_ptr}+l]\gets\\{str\_pool}[\\{pool\_ptr}]$;
- \par\noindent\kern20pt
-{\bf end};\quad$\{\,$move current string up to make room for another$\,\}$
-\par\noindent\kern10pt
-{\bf for} $k\gets j$ {\bf to} $j+l-1$ {\bf do} $\\{append\_char}(\\{buffer}[k])$;
-\par\noindent\kern10pt
-$\\{text}(p)\gets\\{make\_string}$; $\\{pool\_ptr}\gets\\{pool\_ptr}+d$;
-
-\bugonpage B115, line 12 (4/28/88)
-
-\ninepoint\noindent\hskip10pt
-$\\{group\_code}=0\to\\{max\_group\_code}$;\quad
- $\{\,$\\{save\_level} for a level boundary$\,\}$
-
-\bugonpage B141, line 19 (4/28/88)
-
-\ninepoint\noindent
-\\{par\_token}: \\{halfword};\quad
- $\{\,$token representing `|\par|'$\,\}$
-
-\bugonpage B150, line 24 (4/28/88)
-
-\tenpoint\noindent{\bf 358.\quad}%
-The present point in the program is reached only when the \\{expand}
-routine has inserted\cutpar
-
-\bugonpage B151, mini-index (4/28/88)
-
-\eightpoint\noindent
-Delete the entry for `\\{no\_expand}'; replace it by:
-
-\indent\\{expand}: {\bf procedure}, \S366.
-
-\bugonpage B154, lines 25, 29, 34 respectively (9/20/87)
-
-\ninepoint\noindent\hskip20pt
-$\\{cvl\_backup},\\{radix\_backup},\\{co\_backup}$: \\{small\_number};\quad
- $\{\,$to save \\{cur\_val\_level}, etc.$\,\}$\par\noindent\hskip10pt
-$\\{co\_backup}\gets\\{cur\_order}$;
- $\\{backup\_backup}\gets\\{link}(\\{backup\_head})$;\par\noindent\hskip10pt
-$\\{cur\_order}\gets\\{co\_backup}$;
- $\\{link}(\\{backup\_head})\gets\\{backup\_backup}$;
-
-\bugonpage B155, new entry for mini-index (9/20/87)
-
-\eightpoint\indent
-\\{cur\_order}: \\{glue\_ord}, \S447.
-
-\bugonpage B156, line 28 (12/23/87)
-
-\ninepoint\noindent\hskip20pt
-{\bf begin }$\\{eq\_define}(\\{cur\_cs},\\{relax},256)$;
-
-\bugonpage B157, mini-index (12/23/87)
-
-\eightpoint\noindent
-Delete the entries for `\\{eqtb}' and `\\{frozen\_relax}'; replace them
-by the following:
-
-\indent\\{eq\_define}: {\bf procedure}, \S227.\par
-$\\{relax}=0$, \S207.\par
-
-\bugonpage B162, lines 12--14 (4/30/88)
-
-\ninepoint\noindent\hskip10pt
-{\bf repeat} $\\{link}(\\{temp\_head})\gets\\{null}$;\par\noindent\hskip20pt
-{\bf if\/} $(\\{info}(r)>\\{match\_token}+127)\lor
- (\\{info}(r)<\\{match\_token})$ {\bf then}
- $s\gets\\{null}$\par\noindent\hskip20pt
-{\bf else begin} $\\{match\_chr}\gets\\{info}(r)-\\{match\_token}$; \
- $s\gets\\{link}(r)$; \ $r\gets s$; \ $p\gets\\{temp\_head}$; \
- $m\gets 0$;
-
-\bugonpage B177, bottom line before mini-index (7/13/88)
-
-\ninepoint\noindent\hskip10pt
-$\\{cur\_val}\gets0$; \
- $\\{cur\_val\_level}\gets\\{int\_val}$; \
- $\\{radix}\gets0$; \
- $\\{cur\_order}\gets0$;
-
-\bugonpage B181, line 31 (4/28/88)
-
-\ninepoint\noindent
-[Change `$x$ units per sp' to `$x$ sp per unit'! This change also
-should be made on line~1 of page B183 and line $-8$ of page B590.]
-
-\bugonpage B188, line 8 (5/25/88)
-
-\ninepoint\noindent
-{\bf function} $\\{str\_toks}(b:\\{pool\_pointer})$: \\{pointer};\quad
- $\{\,$changes the string \\{str\_pool}$[b\to\\{pool\_ptr}]$ to a token list$\,\}$
-
-\bugonpage B188, line 13 (5/25/88)
-
-\ninepoint\noindent\kern10pt
-{\bf begin} \\{str\_room}(1); $p\gets\\{temp\_head}$;
- $\\{link}(p)\gets\\{null}$; $k\gets b$;
-
-\bugonpage B188, line 20 (5/25/88)
-
-\ninepoint\noindent\kern10pt
-$\\{pool\_ptr}\gets b$; $\\{str\_toks}\gets p$;
-
-\bugonpage B188, new line after line 28 (5/25/88)
-
-\ninepoint\noindent\kern20pt
-$b$: \\{pool\_pointer};\quad$\{\,$base of temporary string$\,\}$
-
-\bugonpage B188, line 31 (5/25/88)
-
-\ninepoint\noindent\kern10pt
-{\bf else begin} $\\{old\_setting}\gets\\{selector}$;
- $\\{selector}\gets\\{new\_string}$; $b\gets\\{pool\_ptr}$;
-
-\bugonpage B188, line 41 (5/25/88)
-
-\ninepoint\noindent\kern20pt
-$\\{selector}\gets\\{old\_setting}$; $\\{the\_toks}\gets\\{str\_toks}(b)$;
-
-\bugonpage B190, lines 16--18 (5/25/88)
-
-\ninepoint\noindent\kern20pt
-$b$: \\{pool\_pointer};\quad$\{\,$base of temporary string$\,\}$\par
-\noindent\kern10pt
-{\bf begin} $c\gets\\{cur\_chr}$;
- $\langle\,$Scan the argument for command $c${\eightrm\kern.5em471}$\,\rangle$;
-\par\noindent\kern10pt
-$\\{old\_setting}\gets\\{selector}$;
-$\\{selector}\gets\\{new\_string}$; $b\gets\\{pool\_ptr}$;
-$\langle\,$Print the result of command~$c${\eightrm\kern.5em472}$\,\rangle$;
-\par\noindent\kern10pt
-$\\{selector}\gets\\{old\_setting}$;
-$\\{link}(\\{garbage})\gets\\{str\_toks}(b)$;
-$\\{ins\_list}(\\{link}(\\{temp\_head}))$;
-
-\bugonpage B210, line 36 (5/25/88)
-
-\ninepoint\noindent\kern10pt
-{\bf begin if} $(\\{pool\_ptr}+\\{name\_length}>\\{pool\_size})
- \lor(\\{str\_ptr}=\\{max\_strings})\lor(\\{cur\_length}>0)$ {\bf then}
-
-\bugonpage B211, new line of code before the mini-index (12/14/88)
-
-\ninepoint\noindent
-\\{log\_opened}: \\{boolean};\quad$\{\,$has the transcript file been opened?$\,\}$
-
-\bugonpage B212, line 5 (12/14/88)
-
-\ninepoint\noindent\kern10pt
-$\\{job\_name}\gets0$; \ $\\{name\_in\_progress}\gets\\{false}$; \
-$\\{log\_opened}\gets\\{false}$;
-
-\bugonpage B213, line 24 (12/14/88)
-
-\ninepoint\noindent\kern10pt
-$\\{log\_name}\gets\\{a\_make\_name\_string}(\\{log\_file})$; \
-$\\{selector}\gets\\{log\_only}$; \
-$\\{log\_opened}\gets\\{true}$;
-
-\bugonpage B214, lines 2 and 3 (12/14/88)
-
-\tenpoint\noindent
-messages or even to \\{show\_context}.
-The \\{prompt\_file\_name} routine can result in a \\{fatal\_error},
-but the \\{error}
-routine will not be invoked because \\{log\_opened} will be false.
-\par\noindent\hskip10pt
-The normal idea of \\{batch\_mode} is that nothing at all should be written
-on the terminal. However, in the unusual case that
-no log file could be opened, we make an exception and allow
-an explanatory message to be seen.
-
-\bugonpage B214, lines 7--11 reduce to a single line (12/14/88)
-
-\ninepoint\noindent\hskip10pt
-{\bf begin} $\\{selector}\gets\\{term\_only}$;
-
-\bugonpage B224, second-last line (4/28/87)
-
-\ninepoint\noindent
-\\{done}: {\bf if} \\{file\_opened} {\bf then} \\{b\_close}(\\{tfm\_file});\par
-\noindent\hskip10pt $\\{read\_font\_info}\gets g$;
-
-\bugonpage B229, lines 6--8 (11/17/87)
-
-\tenpoint\noindent
-than $2^{27}$.
-If $z<2^{23}$, the individual multiplications $b\cdot z$,
-$c\cdot z$, $d\cdot z$ cannot overflow; otherwise we will divide $z$ by 2,
-4, 8, or 16, to obtain a multiplier less than $2^{23}$, and we can
-compensate for this later. If $z$ has thereby been replaced by
-$z^\prime=z/2^e$, let $\beta=2^{4-e}$; we shall compute
-
-\bugonpage B229, lines 11--12 (11/17/87)
-
-\tenpoint\noindent
-if $a=0$, or the same quantity minus $\alpha=2^{4+e}z^\prime$ if $a=255$.
-This calculation must be done exactly, in order to guarantee portability
-of \TeX\ between computers.
-
-\bugonpage B230, lines 2--5 (11/17/87)
-
-\ninepoint
-\noindent\hskip10pt{\bf begin} $\\{alpha}\gets16$;\par
-\noindent\hskip10pt{\bf while} $z\ge\oct{40000000}$ {\bf do}\par
-\noindent\hskip20pt{\bf begin} $z\gets z\ {\bf div}\ 2$; \
- $\\{alpha}\gets\\{alpha}+\\{alpha}$; \ {\bf end};\par
-\noindent\hskip10pt$\\{beta}\gets256\ {\bf div}\ \\{alpha}$; \
- $\\{alpha}\gets\\{alpha}\ast z$;\par
-
-\bugonpage B245, new entry for mini-index (8/7/87)
-
-\eightpoint\indent
-\\{cur\_s}: \\{integer}, \S616.
-
-\bugonpage B254, line 29 (8/7/87)
-
-\ninepoint\noindent
-\\{cur\_s}: \\{integer};\quad
-$\{\,$current depth of output box nesting, initially $-1\,\}$
-
-\bugonpage B254, line 31 (8/7/87)
-
-\ninepoint\noindent
-[Remove the statement `$\\{cur\_s}\gets-1$;' and put it on page B244 at the
-end of line 31.]
-
-\bugonpage B259, line 13 (11/9/87)
-
-\ninepoint\noindent\hskip20pt
-{\bf begin }$\\{rule\_wd}\gets\\{rule\_wd}+10$;\quad
-$\{\,$compensate for floating-point rounding$\,\}$\par\noindent\hskip20pt
-$\\{edge}\gets\\{cur\_h}+\\{rule\_wd}$; $\\{lx}\gets0$;
-$\langle\,$Let \\{cur\_h} be the position of the first box, and set
-
-\bugonpage B259, line 17 (11/9/87)
-
-\ninepoint\noindent\hskip20pt
-$\\{cur\_h}\gets\\{edge}-10$; {\bf goto} \\{next\_p};
-
-\bugonpage B263, line 21 (11/9/87)
-
-\ninepoint\noindent\hskip20pt
-{\bf begin }$\\{rule\_ht}\gets\\{rule\_ht}+10$;\quad
-$\{\,$compensate for floating-point rounding$\,\}$\par\noindent\hskip20pt
-$\\{edge}\gets\\{cur\_v}+\\{rule\_ht}$; $\\{lx}\gets0$;
-$\langle\,$Let \\{cur\_v} be the position of the first box, and set
-
-\bugonpage B263, line 25 (11/9/87)
-
-\ninepoint\noindent\hskip20pt
-$\\{cur\_v}\gets\\{edge}-10$; {\bf goto} \\{next\_p};
-
-\bugonpage B266, line 8 (8/7/87)
-
-\ninepoint\noindent\hskip10pt
-\\{dvi\_out}(\\{eop}); \\{incr}(\\{total\_pages}); $\\{cur\_s}\gets-1$;
-
-\bugonpage B266, new code between lines 31 and 32 (8/7/87)
-
-\ninepoint
-\noindent\hskip10pt{\bf while} $\\{cur\_s}>-1$ {\bf do}\par
-\noindent\hskip20pt{\bf begin if} $\\{cur\_s}>0$ {\bf then}
- \\{dvi\_out}(\\{pop})\par
-\noindent\hskip20pt{\bf else begin} \\{dvi\_out}(\\{eop});
- \\{incr}(\\{total\_pages})\par
-\noindent\hskip30pt{\bf end};\par
-\noindent\hskip20pt\\{decr}(\\{cur\_s});\par
-\noindent\hskip20pt{\bf end};\par
-
-\bugonpage B285, line 21 (4/28/88)
-
-\noindent\tenpoint
-is subsidiary to the \\{nucleus} field of some noad; the dot is replaced by
-`|_|' or `|^|' or `|/|' or `|\|' if $p$ is\cutpar
-
-\bugonpage B338, second-last line (8/19/87)
-
-\ninepoint\noindent\kern10pt
-$q\gets\\{link}(\\{head})$; $s\gets\\{head}$;
-
-\bugonpage B339, line 4 (8/19/87)
-
-\ninepoint\noindent\kern20pt
-$s\gets q$; $q\gets\\{link}(q)$;
-
-\bugonpage B339, new code to insert after line 10 (8/19/87)
-
-\ninepoint
-\noindent\kern10pt{\bf if} $o\ne0$ {\bf then}\par
-\noindent\kern20pt{\bf begin} $r\gets\\{link}(q)$; $\\{link}(q)\gets\\{null}$;
- $q\gets\\{hpack}(q,\\{natural})$;\par
-\noindent\kern20pt$\\{shift\_amount}(q)\gets o$; $\\{link}(q)\gets r$;
- $\\{link}(s)\gets q$;\par
-\noindent\kern20pt{\bf end};\par
-\noindent[These new lines also imply changes to the index that aren't
- shown in this errata list.]
-
-\bugonpage B387, line 2 (5/24/88)
-
-\tenpoint\noindent
-is quite short. In the following code we set \\{hc}$[\\{hn}+2]$ to the
-impossible value 128, in order to\cutpar
-
-\bugonpage B387, line 8 (5/24/88)
-
-\ninepoint\noindent\kern10pt
-$\\{hc}[0]\gets127$; $\\{hc}[\\{hn}+1]\gets127$;
- $\\{hc}[\\{hn}+2]\gets128$;\quad$\{\,$insert delimiters$\,\}$
-
-\bugonpage B390, lines 17--18 (5/24/88)
-
-\ninepoint\noindent\kern10pt
-$\langle\,$Enter as many hyphenation exceptions as are listed, until coming
- to a right brace; then {\bf return\eightrm\kern.5em961}$\,\rangle$;
-
-\smallskip[The same change applies to lines 20--21, and
-to page~582.]
-
-\bugonpage B396, new line after line 34 (5/24/88)
-
-\ninepoint\noindent\kern10pt
-$\\{trie\_link}(\\{trie\_size})\gets0$;
-$\\{trie\_back}(0)\gets\\{trie\_size}$;\quad
-$\{\,$wrap around$\,\}$
-
-\bugonpage B396, bottom line (12/12/87)
-
-\ninepoint\noindent\hskip10pt
-$\\{trie\_link}(0)\gets0$; $\\{trie\_char}(0)\gets0$;
- $\\{trie\_op}(0)\gets\\{min\_quarterword}$;
-
-\bugonpage B397, lines 15--17 (5/24/88)
-
-\ninepoint\noindent\kern10pt
-{\bf begin} $c\gets\\{trie\_c}[p]$;\par\noindent\kern10pt
-{\bf if} $c<\\{trie\_min}$ {\bf then} $\\{trie\_min}\gets c$;\par\noindent\kern10pt
-{\bf if} $\\{trie\_min}=0$ {\bf then} $z\gets\\{trie\_link}(\\{trie\_size})$\par
-\noindent\kern10pt
-{\bf else} $z\gets\\{trie\_link}(\\{trie\_min}-1)$;\quad
-$\{\,$get the first conceivably good hole$\,\}$
-
-\bugonpage B400, lines 3--4 (5/24/88)
-
-\ninepoint\noindent
-$\langle\,$Enter all of the patterns into a linked trie, until coming
- to a right brace{\eightrm\kern.5em961}$\,\rangle\equiv$
-
-\smallskip[The same change applies to page B399, lines 29--30, and
-to page~582.]
-
-\bugonpage B402, line 10 (5/24/88)
-
-\ninepoint\noindent\kern10pt
-$r\gets\\{trie\_size}$;\quad
-$\{\,$finally, we will zero out the holes$\,\}$
-
-\bugonpage B406, line 9 from the bottom (1/23/89)
-
-\ninepoint\noindent\kern30pt
-$\\{shrink\_order}(r)\gets\\{normal}$; \ $\\{delete\_glue\_ref}(q)$; \
-$\\{glue\_ptr}(p)\gets r$; \ $q\gets r$;
-
-\bugonpage B417, line 10 (1/23/89)
-
-\ninepoint\noindent\kern10pt
-$q\gets\\{new\_skip\_param}(\\{top\_skip\_code})$; \quad
-$\{\,$now $\\{temp\_ptr}=\\{glue\_ptr}(q)\,\}$
-
-\bugonpage B418, line 14 (1/23/89)
-
-\ninepoint\noindent\kern30pt
-$\\{shrink\_order}(r)\gets\\{normal}$; \ $\\{delete\_glue\_ref}(q)$; \
-$\\{glue\_ptr}(p)\gets r$; \ $q\gets r$;
-
-\bugonpage B507, line 13 (12/14/88)
-
-\ninepoint\noindent\kern10pt
-{\bf if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{selector}+2$;
-
-\bugonpage B527, line 21 (12/14/88)
-
-\ninepoint\noindent\kern10pt
-{\bf if\/} \\{log\_opened} {\bf then}
-
-\bugonpage B528, line 5 (12/14/88)
-
-\ninepoint\noindent\kern10pt
-{\bf if\/} \\{log\_opened} {\bf then}
-
-\bugonpage B547, right column (9/20/87)
-
-\eightpoint
-\leftline{\\{co\_backup}:\quad $\underline{366}$.}
-
-\bugonpage B548, right column (9/20/87)
-
-\eightpoint
-\leftline{\\{cur\_order}:\quad 366, $\underline{447}$, 448, 454, 462.}
-
-\bugonpage B548, right column (8/7/87)
-
-\eightpoint
-\leftline{\\{cur\_s}:\quad 593, $\underline{616}$, 619, 629, 640, 642.}
-
-\bugonpage B551, both columns (12/23/87)
-
-\eightpoint[Remove `372' from \\{eqtb} and put it into \\{eq\_define}.]
-
-\bugonpage B552, left column (4/28/88)
-
-\eightpoint[Insert `358' into \\{expand}.]
-
-\bugonpage B554, left column (12/23/87)
-
-\eightpoint[Remove `372' from \\{frozen\_relax}.]
-
-\bugonpage B559, new entry (12/14/88)
-
-\eightpoint\noindent
-\\{log\_opened}, 92--93, $\underline{527}$, 528, 534--535, 1265, 1333--1334.
-
-\bugonpage B559, right column (8/13/87)
-
-\eightpoint[Delete the entry for \\{low\_mem\_max}.]
-
-\bugonpage B562, left column (4/28/88)
-
-\eightpoint[Remove `358' from \\{no\_expand}.]
-
-\bugonpage B565, left column (8/7/87)
-
-\eightpoint
-\leftline{\\{pop}:\quad 584--585, $\underline{586}$, 590, 601, 608, 642.}
-
-\bugonpage B567, left column (12/23/87)
-
-\eightpoint[Insert `372' into \\{relax}.]
-
-\bugonpage B568, left column (4/28/88)
-
-\eightpoint[Move `269' from \\{save\_index} to \\{save\_level}.]
- % volume C
-\hsize=29pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-
-\bugonpage C26, bottom line (7/18/87)
-
-\tenpoint\noindent
-What angle corresponds to the direction North-Northwest?
-
-\bugonpage C107, line 13 (10/7/87)
-
-{\bf pickup penrazor} xscaled \\{heavyline}
- rotated (angle$(z_{32}-z_{31})+90$);
-
-\bugonpage C164, line 10 (4/27/88)
-
-\ninepoint\indent
-\quad $y_{\$c}=\\{top}\,y_{\$l}$; \ $y_{\$d}=y_{\$r}$; \
- $x_{\$c}=x_{\$l}-\\{left\_jut}$; \ $x_{\$d}=x_{\$r}+\\{right\_jut}$;
-
-\bugonpage C175, line 23 (1/11/88)
-
-\ninepoint\noindent
-expand into a sequence of tokens. \
-(The language {\eightrm{SIMULA67}} demonstrated that it is\cutpar
-
-\bugonpage C241, line 11 (5/25/88)
-
-\ninepoint\indent
-{\bf numeric} $\\{ht}\0,\\{dp}\0$; \
- $\\{ht}\0=\\{body\_height}\0$; \
- $.5[\\{ht}\0,-\\{dp}\0]=\\{axis}\0$;
-
-\bugonpage C248, line 21 becomes two lines (1/24/89)
-
-\ninepoint\noindent
-which might not
-be numerically stable in the presence of rounding errors.)
-Another case, not really desirable, is $\\{left\_jut}=\\{right\_jut}=0$.
-
-\bugonpage C262, line 15 (12/23/88)
-
-\ninepoint\noindent
-|string base_name, base_version; base_name="plain"; base_version="1.7";|
-
-\bugonpage C271, line 12 (1/4/89)
-
-\ninepoint\noindent
-the user and \MF's primitive picture commands.
-First, some important program\cutpar
-
-\bugonpage C271, line 4 from the bottom (12/23/88)
-
-\ninepoint\noindent
-|def |^|cutdraw|| expr p = % caution: you may need autorounding=0|
-
-\bugonpage C272, lines 5 and 6 (12/23/88)
-
-\ninepoint\noindent
-| (cut_ scaled (1+max(pen_lft,pen_rt,pen_top,pen_bot))|\par\noindent
-| rotated theta shifted z)t_;|
-
-\bugonpage C273, lines 20 and 22 (9/26/88)
-
-\ninepoint\noindent
-| (z_+(0,pen_top))t_=round((z+(0,pen_top))t_); z_ enddef;|\par\noindent
-| (z_+(0,pen_bot))t_=round((z+(0,pen_bot))t_); z_ enddef;|
-
-\bugonpage C290, line 6 from the bottom (12/23/88)
-
-\ninepoint\noindent
-(2)~A throwaway variable,
-`\\{whatever}', nullifies an unwanted equation at the beginning\cutpar
-
-\bugonpage C331, just below the illustration (7/18/87)
-
-\ninepoint\noindent
-Such a pattern is, of course, rather unlikely to occur in a |gf| file,
-but |GFtoDVI| would\cutpar
-
-\bugonpage C337, line 11 (4/28/88)
-
-\ninepoint
-An online ``menu'' of the available test routines will be typed at your
-terminal\cutpar
-
-\bugonpage C346, entry for {\tt autorounding} (12/23/88)
-
-\eightpoint\indent\hskip20pt
-212, {\it262}, {\it264}, 271--272.
-
-\bugonpage C350, left column (7/6/88)
-
-\eightpoint\indent
-|Fatal| |base| |file| |error|, 226.
-
-\bugonpage C356, left column (1/11/88)
-
-\eightpoint
-SIMULA67 language, 175.
-
-\bugonpage C358, right column (2/15/88)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|yoffset|, 212, $\underline{220}$, 315, 324.
- % Volume D
-\hsize=35pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage D2, line 27 (12/14/88)
-
-\ninepoint\noindent\hskip10pt
-{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]METAFONT,\]Version\]1.7\char'23}\quad
-$\{\,$printed when \MF\ starts$\,\}$
-
-\bugonpage D36, lines 3--5 (11/6/88)
-
-\tenpoint\noindent[Delete this paragraph; it is being moved to page D349.]
-
-\bugonpage D36, line 7 (12/14/88)
-
-\ninepoint\noindent\kern10pt
-{\bf begin if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{term\_and\_log}$
-
-\bugonpage D36, line 16 (12/14/88)
-
-\ninepoint\noindent\kern50pt
-{\bf if\/} \\{log\_opened} {\bf then} \\{error};
-
-\bugonpage D66, lines 34--35 (7/9/88)
-
-\ninepoint\noindent\kern10pt
-{\bf begin if\/} $\\{hi\_mem\_min}-\\{lo\_mem\_max}\ge1998$
- {\bf then} $t\gets\\{lo\_mem\_max}+1000$\par\noindent\kern10pt
-{\bf else} $t\gets\\{lo\_mem\_max}+1+(\\{hi\_mem\_min}-\\{lo\_mem\_max})
-\,\mathbin{\bf div}\,2$;\quad\kern-4pt
-$\{\,\\{lo\_mem\_max}+2\le t<\\{hi\_mem\_min}\,\}$
-
-\bugonpage D347, new line of code after line 5 (12/14/88)
-
-\ninepoint\noindent
-\\{log\_opened}: \\{boolean};\quad$\{\,$has the transcript file been opened?$\,\}$
-
-\bugonpage D347, line 11 (12/14/88)
-
-\ninepoint\noindent\kern10pt
-$\\{job\_name}\gets0$; \
-$\\{log\_opened}\gets\\{false}$;
-
-\bugonpage D348, line 4 from the bottom (12/14/88)
-
-\ninepoint\noindent\kern10pt
-$\\{log\_name}\gets\\{a\_make\_name\_string}(\\{log\_file})$; \
-$\\{selector}\gets\\{log\_only}$; \
-$\\{log\_opened}\gets\\{true}$;
-
-\bugonpage D349, lines 6 and 7 (12/14/88)
-
-\tenpoint\noindent
-print error messages or even to \\{show\_context}.
-The \\{prompt\_file\_name} routine can result in a \\{fatal\_error},
-but the \\{error}
-routine will not be invoked because \\{log\_opened} will be false.
-\par\noindent\hskip10pt
-The normal idea of \\{batch\_mode} is that nothing at all should be written
-on the terminal. However, in the unusual case that
-no log file could be opened, we make an exception and allow
-an explanatory message to be seen.
-
-\bugonpage D349, lines 11--15 reduce to a single line (12/14/88)
-
-\ninepoint\noindent\hskip10pt
-{\bf begin} $\\{selector}\gets\\{term\_only}$;
-
-\bugonpage D420, bottom line (5/25/88)
-
-\ninepoint\noindent\kern30pt
-{\bf if\/} \\{txx} {\bf mod} $\\{unity}=0$ {\bf then}
-
-\bugonpage D441, delete line 2 and change line 12 as follows (5/25/88)
-
-\ninepoint\noindent
-\\{done}: {\bf if} $\\{eq\_type}(x)\ne\\{tag\_token}$ {\bf then}
- $\\{clear\_symbol}(x,\\{false})$;\par\noindent\kern10pt
-{\bf if} $\\{equiv}(x)=\\{null}$ {\bf then} $\\{new\_root}(x)$;
-\par\noindent\kern10pt
-$\\{scan\_declared\_variable}\gets h$;
-
-\bugonpage D444, line 8 from the bottom (12/14/88)
-
-\ninepoint\noindent\kern10pt
-{\bf if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{selector}+2$;
-
-\bugonpage D510, line 14 (12/14/88)
-
-\ninepoint\noindent\kern10pt
-{\bf if\/} \\{log\_opened} {\bf then}
-
-\bugonpage D511, line 11 (12/14/88)
-
-\ninepoint\noindent\kern10pt
-{\bf if\/} \\{log\_opened} {\bf then}
-
-\bugonpage D530, new entry (12/14/88)
-
-\eightpoint\noindent
-\\{log\_opened}, 87--88, $\underline{782}$, 783, 788--789, 1023, 1205, 1208.
-
-\bugonpage D545, left column (10/31/87)
-
-\eightpoint
-\leftline{{\bf zscaled} primitive:\quad $\underline{893}$.}
-\leftline{Zabala Salelles, Ignacio Andres:\quad 812.}
-
- % volume E
-\hsize=29pc
-\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
-
-\bugonpage E32, second-last line (9/20/87)
-
-\tenpoint\noindent
-after which comes `\\{math\_axis}\0; {\bf generate} |mathsy|' (which we
-won't bother to\cutpar
-
-\bugonpage E111, line 29 (10/16/88)
-
-\ninepoint\noindent
-$\\{lft}\,x_{11}={\rm hround}\,u$; \
- $x_{1l}-x_{11}=x_{2l}-x_{12}=x_{22}-x_{2r}={\rm hround}\,1.6\\{cap\_jut}$;
-
-\bugonpage E285, bottom line (12/1/87)
-
-\rightline{\eightssi Due to Technical Developments\/\enspace\eightss(1968)}
-
-\bugonpage E333, lines 9--11 (1/9/89)
-
-\ninepoint\noindent
-$\\{lft}\,x_{1l}={\rm hround}(2.5u-.5\\{mfudged.stem})$; \
- $x_{1l}=x_{1'l}=x_{2l}=x_{2'l}$;\par\noindent
-$\\{lft}\,x_{3l}={\rm hround}(.5w-.5\\{mfudged.stem})$; \
- $x_5-x_3=x_3-x_1$;\par
-\line{{\bf if\/} not \\{monospace}:
- $r:={\rm hround}(x_5+x_1)+r-w$; {\bf fi}\hfill
- \% change width for better fit}
-
-\bugonpage E353, lines 38--39 (8/12/87)
-
-\ninepoint
-\leftline{\kern10pt{\bf else}: {\bf fill} \\{diag\_end}$(6r,5r,1,1,5l,6l)
- \dashto.9[z_{5l},z_{6l}]$}
-\line{\kern30pt$.\,.\,\{z_5-z_6\}\,.1[z_{5r},z_{6r}]\dashto\rm cycle$;\hfil
- \% middle stem}
-
-\bugonpage E387, line 13 (8/12/87)
-
-\ninepoint
-\line{\kern10pt{\bf pickup} \\{tiny}.\\{nib}; \ \\{bulb}$(3,4,5)$;\hfil\% bulb}
-
-\bugonpage E413, lines 37--38 (8/12/87)
-
-\ninepoint
-\leftline{\kern10pt{\bf else}: {\bf fill} \\{diag\_end}$(6r,5r,1,1,5l,6l)
- \dashto.9[z_{5l},z_{6l}]$}
-\line{\kern30pt$.\,.\,\{z_5-z_6\}\,.1[z_{5r},z_{6r}]\dashto\rm cycle$;\hfil
- \% middle stem}
-
-\bugonpage E459, line 24 (8/7/87)
-
-\ninepoint\noindent[Delete the `$=$' sign between `\\{lft}' and `$x_5$'.]
-
-\bugonpage E471, line 5 (12/11/88)
-
-\ninepoint\noindent
-$x_2=\\{good}.x\,.5w$; \ $\\{center\_on}(x_2)$;
-
-\bugonpage E471, insert two lines below the rule at bottom of page (12/11/88)
-
-\ninepoint
-\line{{\bf def\/}
-\\{center\_on}({\bf expr} $x) =\null$
-{\bf if\/} not \\{monospace}:\hfill \% change width for symmetric fit}
-\leftline{\kern10pt
- $r:=r+2x-w$; \ $w:=2x$; \ {\bf fi} {\bf enddef};}
-
-\bugonpage E477, line 20 (12/11/87)
-
-\ninepoint\noindent
-$x_4=x_8=\\{good}.x\,.5w$; \ $\\{center\_on}(x_4)$; \
-$x_2=w-x_6=\\{good}.x(x_4+a)$;
-
-\bugonpage E483, third line of elementary division operator (12/11/88)
-
-\ninepoint\noindent
-$x_3-.5\\{dot\_size}={\rm hround}(.5w-.5\\{dot\_size})$; \
-$\\{center\_on}(x_3)$;
-
-\bugonpage E485, line 4 (8/7/87)
-
-\ninepoint\noindent[Delete the `$=$' sign between `\\{lft}' and `$x_5$'.]
-
-\bugonpage E487, line 17 (8/4/88)
-
-\ninepoint\line{%
-{\bf fill} \\{fullcircle} scaled$\,(\\{bold}+3.8\\{dw}+\\{eps})\,$%
- shifted$\,(.5[z_4,z_8])$;\hfill\% dot}
-\smallskip\noindent[Also remove page 487 from the index entry for
-\\{dot\_size}, and add it to the entries for \\{bold} and \\{dw}.]
-
-\bugonpage E515, lines 5 and 12 (12/11/88)
-
-\ninepoint\noindent
-$.5[x_1,x_2]=x_3=\\{good}.x\,.5w$; \
-$\\{center\_on}(x_3)$; \ $\\{lft}\,x_1={\rm hround}(.5w-u*{\rm sqrt}48)$;
-
-\bugonpage E515, line 21 (1/23/89)
-
-\ninepoint\noindent
-{\bf labels}$(5,6)$; \ \\{zero\_width}; \ {\bf endchar\/};
-\smallskip\noindent[Also put labels `{\tt5}' and `{\tt6}' on the
-upper right figure, page E514.]
-
-\bugonpage E521, lines 4 and 14 (12/12/88)
-
-\ninepoint\noindent
-$x_1=x_2=\\{good}.x\,.5w$; \
-$\\{center\_on}(x_1)$; \ $\\{lft}\,x_3={\rm hround}\,u$; \ $x_4=w-x_3$;
-
-\bugonpage E537, line 6 (12/11/88)
-
-\ninepoint\noindent
-$x_1=x_2=x_3=x_4$; \
-$x_1-.5\\{stem}={\rm hround}(.5w-.5\\{stem})$; \
-$\\{center\_on}(x_1)$;
-
-\bugonpage E537, line 19 (12/11/88)
-
-\ninepoint\noindent
-$x_1=x_2=x_3$; \
-$x_1-.5\\{stem}={\rm hround}(.5w-.5\\{stem})$; \
-$\\{center\_on}(x_1)$;
-
-\bugonpage E539, line 4 (12/11/88)
-
-\ninepoint\noindent
-$x_1=x_4=x_{30}=x_{33}=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$;
-
-\bugonpage E539, line 21 (12/11/88)
-
-\ninepoint\noindent
-$x_1=x_4=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$;
-
-\bugonpage E541, line 4 (12/11/88)
-
-\ninepoint\noindent
-$x_1=x_5=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$;
-
-\bugonpage E541, line 17 (12/11/88)
-
-\ninepoint\noindent
-$x_1=x_{10}=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$;
-
-\bugonpage E550, new line after line 23 (8/15/87)
-
-\ninepoint\noindent\kern10pt
-{\bf forsuffixes} $\hbox{\$}=\\{notch\_cut},\\{cap\_notch\_cut}$:
- {\bf if\/} $\hbox{\$}<3$: $\hbox{\$}:=3$; {\bf fi endfor}
-\smallskip\noindent
-[To make room for this, combine lines 38 and 39 into a single line.]
-
-\bugonpage E550, line 29 (7/9/88)
-
-\ninepoint\noindent\hskip10pt
-{\bf \def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}%
-define\_whole\_vertical\_blacker\_pixels}$(\\{vair},\\{bar},\\{slab},
- \\{cap\_bar},\\{cap\_band})$;
-
-\bugonpage E572, new entry at bottom (12/11/88)
-
-\eightpoint\noindent
-\\{center\_on}, $\underline{471}$, 477, 483, 515, 521, 537--541.
- \bye
- Now here are some that I will make soon!
-
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.nine b/Master/texmf-dist/source/generic/knuth/errata/errata.nine
deleted file mode 100644
index f562cb0bd8a..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.nine
+++ /dev/null
@@ -1,235 +0,0 @@
-% Bugs (sigh) in Computers \& Typesetting
-
-\input manmac
-\font\sltt=cmsltt10
-\font\niness=cmss9
-\font\ninessi=cmssi9
-\proofmodefalse
-\raggedbottom
-\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\today{\number\day\
- \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}
-
-\def\cutpar{{\parfillskip=0pt\par}}
-
-\def\rhead{Bugs in {\tensl Computers \& Typesetting A, 1996}}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
-\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
-\newcount\nn
-\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
-\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
-
-\tenpoint
-\noindent This is a list of all corrections made to {\sl Computers \&
-Typesetting}, Volume~A (also known as {\sl The \TeX book}),
-between 1992 and the publication of the final printed
-version of that book in September 1996.
-\looseness=-1
-
- % volume A
-
-\bugonpage A31, line 8 (3/6/95)
-
-\tenpoint\noindent
-\TeX\ begins its error messages with `|!|', and it shows what it was
-reading at the\cutpar
-
-\bugonpage A46, line 8 (1/22/95)
-
-\ninepoint\noindent
-out for
-the occasional times when the adjacent characters |aa|, |ae|, and |o/|
-should not be\cutpar
-
-\bugonpage A49, top (9/1/96)
-
-\eightpoint\noindent
-[The copy on pages 45 and 46 was significantly shortened
-in the seventeenth printing (October 1989 --- see {\tt errata.five}),
-and exercise 8.7 moved back to page 48 as a result. But the printer
-was not asked to change page 49; hence exercise 8.7 appeared twice,
-on pages 48 {\it and\/}~49, during a six-year period.]
-
-\bugonpage A282, lines 11 and 12 (4/18/96)
-
-\ninepoint\noindent
-unadorned \<box> command, except that the new box
-being appended to the vertical list is also shifted left or right by the
-specified amount.
-
-\bugonpage A285, lines 15--17 from the bottom (4/18/96)
-
-\ninepoint
-\textindent{$\bull$}|\raise|\<dimen>\<box>, |\lower|\<dimen>\<box>.\enskip
-This acts just like an unadorned \<box> command, except that the new box
-being appended to the horizontal list is also shifted up or down by the
-specified amount.
-
-\bugonpage A290, lines 4--6 from the bottom (4/18/96)
-
-\ninepoint
-\textindent{$\bull$}|\raise|\<dimen>\<box>, |\lower|\<dimen>\<box>.\enskip
-This acts just like an unadorned \<box> command, except that the new box
-being put into the nucleus is also shifted up or down by the specified amount.
-
-\bugonpage A331, bottom two lines (6/25/93)
-
-\ninepoint\noindent
-if you know that the
-enclosing box is sufficiently small; and |\leaders\vrule\vfill| works fine in
-vertical mode.
-
-\bugonpage A354, lines 19--22 (3/5/95)
-
-\ninepoint\noindent
-|\def\sett@b{\ifx\next\+\def\nxt{\afterassignment\s@tt@b\let\nxt}%|\par
-\noindent
-| \else\let\nxt=\s@tcols\fi|\par\noindent
-| \let\next=\relax \nxt} % turn off \outerness|\par\noindent
-|\def\s@tt@b{\let\nxt=\relax \us@false\m@ketabbox}|
-
-\bugonpage A356, lines 13--20 from the bottom (3/5/95)
-
-\ninepoint
-{\parindent=0pt
-|\def\oalign#1{\leavevmode\vtop{\baselineskip0pt \lineskip.25ex|\par
-| \ialign{##\crcr#1\crcr}}} \def\o@lign{\lineskiplimit=0pt \oalign}|\par
-|\def\ooalign{\lineskiplimit=-\maxdimen \oalign} % chars over each other|\par
-|\def\sh@ft#1{\dimen0=.00#1ex \multiply\dimen0 by\fontdimen1\font|\par
-| \kern-.0156\dimen0} % compensate for slant in lowered accents|\par
-|\def|^|\d||#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{10}.\hidewidth}}}|\par
-|\def|^|\b||#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}%|\par
-| \vbox to.2ex{\hbox{\char'26}\vss}\hidewidth}}}|\par
-}
-
-\bugonpage A357, lines 7--12 (8/1/95)
-
-\ninepoint\noindent
-|\def|^|\rightarrowfill||{$\m@th \smash- \mkern-7mu|\par\noindent
-| \cleaders\hbox{$\mkern-2mu \smash- \mkern-2mu$}\hfill|\par\noindent
-| \mkern-7mu \mathord\rightarrow$}|\par\noindent
-|\def|^|\leftarrowfill|%
- |{$\m@th \mathord\leftarrow \mkern-7mu|\par\noindent
-| \cleaders\hbox{$\mkern-2mu \smash- \mkern-2mu$}\hfill|\par\noindent
-| \mkern-7mu \smash-$}|
-
-\bugonpage A357, lines 16--20 (6/25/93)
-
-\ninepoint
-{\parindent=0pt
-| \setbox0=\hbox{$\braceld$}%|\par
-| \bracelu\leaders\vrule height\ht0 depth0pt\hfill\bracerd|\par
-| \braceld\leaders\vrule height\ht0 depth0pt\hfill\braceru$}|\par
-|\def|^|\downbracefill||{$\m@th|\par
-| \setbox0=\hbox{$\braceld$}%|\par
-| \braceld\leaders\vrule height\ht0 depth0pt\hfill\braceru|\par
-| \bracelu\leaders\vrule height\ht0 depth0pt\hfill\bracerd$}|\par
-\smallskip[Also delete lines 21 and 22, as the usage is no longer restricted.]
-}
-
-\bugonpage A359, line 25 (3/5/95)
-
-\ninepoint\noindent
-|\def|^|\skew||#1#2#3{{\muskip0=#1mu \mkern.5\muskip0|\par\noindent
-| #2{\mkern-.5\muskip0{#3}\mkern.5\muskip0}\mkern-.5\muskip0}{}}|
-
-\bugonpage A360, line 5 from the bottom (3/5/95)
-
-\ninepoint\noindent
-|\def\@vereq#1#2{\lower.5pt\vbox{\lineskiplimit\maxdimen \lineskip-.5pt|
-
-\bugonpage A361, lines 19 and 20 (3/5/95)
-
-\ninepoint\noindent
-|\def|^|\bmod||{\nonscript\mskip-\medmuskip \mkern5mu|\par\noindent
-| |^|\mathbin||{\rm mod} \penalty900 \mkern5mu \nonscript\mskip-\medmuskip}|
-
-\bugonpage A362, lines 14--18 (3/5/95)
-
-\ninepoint\noindent
-| |^|\everycr||{\noalign{\ifdt@p \global\dt@pfalse|%
- | \ifdim\prevdepth>-1000pt|\par\noindent
-| \vskip-\lineskiplimit \vskip\normallineskiplimit \fi|\par\noindent
-| \else \penalty|^|\interdisplaylinepenalty|| \fi}}}|\par\noindent
-|\def\@lign{\tabskip=0pt\everycr={}} % restore inside \displ@y|\par\noindent
-|\def|^|\displaylines||#1{\displ@y \tabskip=0pt|
-
-\bugonpage A363, lines 8--9 from the bottom (12/8/89)
-
-{\ninepoint\parindent=0pt
-| \if@mid \dimen@=\ht0 \advance\dimen@ by\dp\z@ |%
- |\advance\dimen@ by12\p@|\parbreak%
-| \advance\dimen@ by\pagetotal \advance\dimen@ by-\pageshrink|
-\par}
-
-\bugonpage A364, line 5 from the bottom (4/11/96)
-
-\ninepoint\noindent
-|\def\fmtname{plain}|\par\noindent
-|\def\fmtversion{3.141592} % identifies the current format|
-
-\bugonpage A374, line 3 (3/7/95)
-
-\ninepoint\indent
-|\begingroup\aftergroup\def\aftergroup\asts\aftergroup{|
-
-\bugonpage A410, line 23 (4/18/96)
-
-\ninepoint\noindent
-| Tema con variazione \(su un tema differente)|
-\smallskip\eightpoint\noindent
-(This implies a corresponding correction to page 411.)
-
-\bugonpage A451, line $16$ (8/8/93)
-
-\ninepoint\noindent
-But when plain \TeX\ is tried on the name of a famous ^{Welsh} village,
-
-\bugonpage A462, right column (3/5/95)
-
-\def\cong{\mathrel{\mathpalette\OvOreq\sim}} % congruence sign, index version
-\def\OvOreq#1#2{\lower.5pt\vbox{\baselineskip0pt\lineskip-.0pt
- \ialign{$#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}
-\eightpoint
-|\cong| ( $\cong$ ), 151, $\underline{360}$, 436.
-
-\bugonpage A463, right column (6/25/93)
-
-\eightpoint
-direct sum, {\sl see\/} |\oplus|.
-
-\bugonpage A464, left column (6/25/93)
-
-\eightpoint
-|\downbracefill| (\hbox to 4em{\downbracefill}), 225--226, $\underline{357}$.
-
-\bugonpage A483, lines 15--21 (4/29/96)
-
-\tenpoint
-\begintt
-email: {\tt TUG@tug.org}
-internet: {\tt http://www.tug.org/}
-}
-\endtt
-Don't delay, subscribe today! That address again is
-
-\smallskip
-{\obeylines
-\TeX\ Users Group
-email: {\tt TUG\char`\@ tug.org}
-internet: {\tt http://www.tug.org/}
-}
-
-\bye
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.one b/Master/texmf-dist/source/generic/knuth/errata/errata.one
deleted file mode 100644
index 471971958c3..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.one
+++ /dev/null
@@ -1,751 +0,0 @@
-% Bugs (sigh) in The TeXbook
-
-\input manmac
-\proofmodefalse
-\raggedbottom
-\output{\onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\rhead{Bugs in {\sl The \TeX book}, first printing}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule\line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule\nobreak\medskip}
-
-\noindent This is a list of all corrections made to {\sl The \TeX book\/}
-between the first and second printings. If your copy says `{\sl\kern-1pt Second
-printing (October 1984)\/}' on the copyright page, you've already got
-all of these things corrected. Otherwise, you're a lucky owner of the
-rare first edition; read on.
-
-\bugonpage 29, lines 31--32 (8/25/84)
-
-The underfull box that \TeX\ produces in the 1.5-inch case is really bad;
-with such narrow limits, an occasional wide space is unavoidable. But try
-
-\bugonpage 54, lines 5--6 (4/20/84)
-
-{\parfillskip=0pt
-\ddanger Appendix B shows that plain \TeX\ handles most of the accents
-by using \TeX's ^|\accent| primitive. For example, |\'#1| is equivalent
-to |{\accent19 #1}|, where\par}
-
-\bugonpage 63, seven lines below the first illustration (2/27/84)
-
-\line{points, a width of 5.5555 points, and a depth of zero;
-the letter `g' has a height}
-
-\bugonpage 72, line 35 (2/28/84)
-
-\ninepoint\noindent
-from |0pt|, but |0.00001filll| is infinitely greater than |16383.99999fill|.
-
-\bugonpage 79, line 12 (2/28/84)
-
-\ninepoint\indent
-|\hbox(6.25+1.94444)x312.0, glue set 0.5783, shifted 36.0 []|
-
-\bugonpage 98, line 24 (4/13/84)
-
-\ninepoint
-\line{and |\finalhyphendemerits=5000|. Demerits are in units of
- ``badness squared,'' so the}
-
-\bugonpage 101, lines 29--30 (3/13/84)
-
-{\parfillskip=0pt
-\danger It's possible to control the length of lines in a much more general
-way, if simple changes to |\leftskip| and |\rightskip| aren't
-flexible enough for your\par}
-
-\bugonpage 113, bottom two lines (3/13/84)
-
-{\parfillskip=0pt
-\ddanger Notice that the first ``|%| line'' of our example says |t=10.0|;
-this is a consequence of another parameter, called ^|\topskip|. Glue
-disappears at a page break, but\par}
-
-\bugonpage 124, eighth-last line (8/25/84)
-
-\ninepoint
-{\parfillskip=0pt\noindent
-discarded, |\box100| will
-be void after the |\vsplit|. And if\/ |\box100| was void before the\par}
-
-\bugonpage 131, display in exercise 16.8 (3/16/84)
-
-\indent
-|If$ x = y$, then $x$ is equal to $y.$|
-
-\bugonpage 170, table in middle of the page (2/12/84)
-
-\ninepoint
-$$\baselineskip0pt\lineskip0pt
-\halign to\hsize
- {\strut\hbox to\parindent{\it#\hfil}& % for the legend "Left atom"
- #\hfil\quad& % for the row labels
- #\hfil\tabskip 0pt plus 10pt& % for the rule at the left
- \hbox to 25pt{\tt\hss#\hss}& % for column 1
- \hbox to 25pt{\tt\hss#\hss}& % for column 2
- \hbox to 25pt{\tt\hss#\hss}& % for column 3
- \hbox to 25pt{\tt\hss#\hss}& % for column 4
- \hbox to 25pt{\tt\hss#\hss}& % for column 5
- \hbox to 25pt{\tt\hss#\hss}& % for column 6
- \hbox to 25pt{\tt\hss#\hss}& % for column 7
- \hbox to 25pt{\tt\hss#\hss}& % for column 8
- #\hfil\tabskip0pt\cr % for the rule at the right
-\noalign{\vskip-6pt} % it just happens that there's extra white space
-&&&&\multispan7\hss\it Right atom\hss\cr
-\noalign{\vskip3pt}
-&&&\rm Ord&\rm Op&\rm Bin&\rm Rel&\rm Open&\rm Close&\rm Punct&\rm Inner\cr
-\noalign{\vskip2pt}
-\omit&&\multispan{10}\leaders\hrule\hfil\cr
-\omit\vbox to 2pt{}&&\vrule&&&&&&&&&\vrule\cr
-&Ord&\vrule&0&1&(2)&(3)&0&0&0&(1)&\vrule\cr
-&Op&\vrule&1&1&*&(3)&0&0&0&(1)&\vrule\cr
-&Bin&\vrule&(2)&(2)&*&*&(2)&*&*&(2)&\vrule\cr
-Left&Rel&\vrule&(3)&(3)&*&0&(3)&0&0&(3)&\vrule\cr
-atom&Open&\vrule&0&0&*&0&0&0&0&0&\vrule\cr
-&Close&\vrule&0&1&(2)&(3)&0&0&0&(1)&\vrule\cr
-&Punct&\vrule&(1)&(1)&*&(1)&(1)&(1)&(1)&(1)&\vrule\cr
-&Inner&\vrule&(1)&1&(2)&(3)&(1)&0&(1)&(1)&\vrule\cr
-\omit\vbox to 2pt{}&&\vrule&&&&&&&&&\vrule\cr
-\omit&&\multispan{10}\leaders\hrule\hfil\cr}$$
-
-\bugonpage 173, line 11 (1/2/84)
-
-\indent|Clearly $a_i<b_i$ for~$i=1, 2, \ldots, n$.|
-
-\bugonpage 176, bottom two lines (7/20/84)
-
-\def\chapno{ 18} \exno=23 % for exercise 18.24!
-\dangerexercise Typeset the display \ \lower12pt\null
-$\tenpoint\smash{\displaystyle
-\left\lgroup\matrix{a&b&c\cr d&e&f\cr}\right\rgroup
- \left\lgroup\matrix{u&x\cr v&y\cr w&z\cr}\right\rgroup
-}$, \
-using ^|\lgroup| and ^|\rgroup|.
-
-\bugonpage 189, line 18 (2/13/84)
-
-\ninepoint\noindent
-{\parfillskip=0pt
-when there is an overlap.] \ If $e=0$ and if there is an |\leqno|,
-the equation number is\par}
-
-\bugonpage 204, line 31 (2/13/84)
-
-\ninepoint\noindent
-of\/ |\a| is delimited by a left brace.
-
-\bugonpage 212, line 23 (7/8/84)
-
-\ninepoint\noindent
-it equals~2.) \
-Similarly, ^|\tracingmacros||=2| will trace |\output|, |\everypar|, etc.
-
-\bugonpage 216, first five lines (8/25/84)
-
-\ddanger Expanded definitions that are made with |\edef| or |\xdef| continue
-to expand tokens until only unexpandable tokens remain, except that
-token lists produced by `^|\the|' are not expanded further. Furthermore
-a token following `^|\noexpand|' will not be expanded, since its ability
-to expand has been nullified. These two operations can be used to control
-^^{expansion, avoiding} what gets expanded and what doesn't.
-
-\bugonpage 219, simplification of line 18 (2/15/84)
-
-\ninepoint\indent
-| \advance\count0 by\count2 \hexdigit}}|
-
-\bugonpage 223, lines 3--4 (3/13/84)
-
-{\parfillskip=0pt
-\ddanger Chapters 24 to 26 present summaries of all \TeX's operations
-in all modes, and when those summaries mention a `\<box>' they mean one
-of the seven\par}
-
-\bugonpage 242, line 29 (1/2/84)
-
-\ninepoint\noindent
-{\parfillskip=0pt
-a relation, the solution is to insert `|{}|' ^^{lbrace rbrace}
-at the beginning of the right-hand formula; \TeX
-\par}
-
-\bugonpage 245, line 24 (2/15/84)
-
-\ninepoint\noindent
-of a box that spans columns $i$ through~$j$,
-hence the glue in such a box might shrink.
-
-\bugonpage 248, the fourth dangerous bend (2/15/84)
-
-{\parfillskip=0pt
-\ddanger You have to be careful with the use of |&| and ^|\span| and ^|\cr|,
-because these tokens are intercepted by \TeX's scanner even when it is
-not expanding macros.\par}
-
-\bugonpage 249, lines 20--26 (2/15/84)
-
-\ninepoint\noindent
-line (see Chapter~9).
-If you don't want a~|\cr| at the end of a certain line,
-just type `|%|' and the corresponding |\cr|
-will be ``commented out.'' ^^{percent} \ (This special mode doesn't
-work with ^|\+| lines, since |\+| is a macro whose argument is delimited
-by the token `|\cr|', not simply by a token that has the same meaning
-as~|\cr|. ^^{delimited arguments} But you can redefine |\+| to overcome
-this hurdle, if you want to. For example, define a macro |\alternateplus|
-that is just like |\+| except that its argument is delimited by the active
-character |^^M|; then include the command `|\let\+=\alternateplus|' as
-part of\/ |\obeylines|.)
-
-\bugonpage 253, lines 28--32 (4/25/84)
-
-\ninepoint\noindent
-vertical list at what it thinks is the best place, and at such times
-it enters internal vertical mode and begins to read the commands in the
-current |\output| routine. When the output routine begins, ^|\box255|
-contains the page that \TeX\ has completed; the output routine is supposed to
-do something with this vbox. When the output routine ends, the list of
-items that it has constructed in internal vertical mode is placed just%
-{\parfillskip=0pt\par}
-
-\bugonpage 254, lines 1--13 (3/13/84)
-
-\ddanger \TeX's primitive command |\shipout|\<box> is what actually
-causes output. It sends the contents of the box to the |dvi| file,
-which is \TeX's main output file; after \TeX\ has finished,
-the ^|dvi| file will contain a compact device-independent encoding of
-instructions that specify exactly what should be printed. When a
-box is shipped out, \TeX\ displays the values of\/ |\count0| through
-|\count9| on your terminal, ^^|\count0| as explained in Chapter~15; these
-ten counters are also recorded in the |dvi| file, where they can be used
-to identify the page. All of the ^|\openout|, ^|\closeout|, and ^|\write|
-commands that appear inside of the \<box> are performed in their natural
-order as that box is being shipped out. Since a |\write| command
-expands macros, as explained in Chapter~21, \TeX's scanning mechanism
-might detect syntax errors while a |\shipout| is in progress. If
-^|\tracingoutput| is nonzero at the time of a |\shipout|, the contents
-of the \<box> being shipped are written into your log file in symbolic
-form. You can say |\shipout| anywhere, not only in an output routine.
-
-\bugonpage 255, line 33 (4/25/84)
-
-\ninepoint\indent
-|\nointerlineskip|
-
-
-\bugonpage 256, starting with line $-17$ (11/1/83)
-
-\ninepoint
-\textindent{6)} Finally, the ^|\dosupereject| macro is designed to clear
-out any insertions that have been held over, whether they are illustrations
-or footnotes or both: ^^|\insertpenalties| ^^|\supereject|
-\begintt
-\ifnum\insertpenalties>0
- \line{} \kern-\topskip \nobreak
- \vfill\supereject\fi
-\endtt
-The mysterious negative ^|\kern| here cancels out the natural space of the
-^|\topskip| glue that goes above the empty |\line|; that empty line box
-prevents the ^|\vfill| from disappearing into a page break. The vertical
-list that results from |\dosupereject| is placed on \TeX's list of things
-to put out next, just after the straggling insertions have been
-reconsidered as explained in Chapter~15. Hence another super-eject will
-occur, and the process will continue until no insertions remain.
-
-\bugonpage 262, line 14 (2/12/84)
-
-\ninepoint\indent
-|\def\endindex{\mark{}\break\endgroup}|
-
-\bugonpage 262, lines 34 and 35 (2/12/84)
-
-\ninepoint\noindent
-if\/ |\next| is `|\endindex|',
-the next commands executed will be `|\vfill|\allowbreak
-|\mark{}|\allowbreak|\break|\allowbreak|\endgroup|';
-otherwise the line will be treated as a main entry.
-
-\bugonpage 269, line 23 becomes two lines (8/25/84)
-
-\ninepoint\noindent
-tokens like |+|$_{12}$;
-(3)~keywords like \[pt]; (4)~control sequence names like |\dimen|;
-or (5)~the special symbols |{|, |}|, |$|.
-
-\bugonpage 274, line 24 (2/15/84)
-
-\ninepoint\indent
-|\lineskip|\quad(interline glue if\/ |\baselineskip| isn't feasible)
-
-\bugonpage 289, slight clarification on lines 39--41 (3/10/84)
-
-\ninepoint
-A \<math character> defines a 15-bit number either by specifying it
-directly with ^|\mathchar| or in a previous ^|\mathchardef|, or by
-specifying a 27-bit |\delimiter| value; in the latter case, the least
-significant 12~bits are discarded.
-
-
-\bugonpage 307, a slightly more explicit answer (11/3/83)
-
-\ninepoint\noindent
-\hbox to\parindent{\bf\hss6.3.\enspace}%
-It represents the heavy bar that shows up in
-your output. \ (This bar wouldn't be present if\/ ^|\overfullrule| had been
-set to |0pt|, nor is it present in an underfull box.)
-
-\bugonpage 313, first four lines (3/13/84)
-
-{\ninepoint\parfillskip=0pt
-\ansno12.17:
- You get `A' at the extreme left and `puzzle.\null' at the extreme right,
-because the space between words has the only stretchability that is finite;
-the infinite stretchability cancels out. \ (In this case, \TeX's rule
-about ^{infinite glue} differs from what you would get in the limit if the
-value of $1\,{\rm fil}$ were finite but getting larger and larger.
-The true\par}
-
-\bugonpage 315, first three lines (3/13/84)
-
-\ninepoint
-\ansno14.14:
- Just say |\parfillskip|\stretch|=|\stretch|\parindent|. Of course,
-\TeX\ will not be able to find appropriate line breaks unless each
-paragraph is sufficiently long or sufficiently lucky; but with an
-appropriate text, your output will be immaculately
-symmetrical.{\parfillskip=\parindent\par}
-
-\bugonpage 324, line 16 (2/15/84)
-
-\ninepoint\noindent
-\hbox to\parindent{\bf\hss18.41.\enspace}%
-|$$\{\underbrace{\overbrace{\mathstrut a,\ldots,a}|
-
-\bugonpage 324, first line of answer 18.44 (4/11/84)
-
-\ninepoint
-\ansno18.44:
- |$$\mathop{{\sum}'}_{x\in A}f(x)\mathrel{\mathop=^{\rm def}}|
-
-\bugonpage 333, beginning of the final paragraph (12/19/83)
-
-\ninepoint
-{\sl Note:\/} The stated preamble solves the problem and demonstrates
-that \TeX's line-breaking capability can be used within tables. But this
-particular table is not really a good example of the use of\/ |\halign|,
-because \TeX\ could typeset it directly, using ^|\everypar| in an
-appropriate manner to set up the hanging indentation, and using |\par|
-instead of\/ |\cr|. For example, one could say
-
-\bugonpage 341, the bottom line was left out! (2/9/84)
-
-\line{Footline\quad\dotfill\quad Page 1009}
-
-\bugonpage 345, top three lines (1/26/84)
-
-\ninepoint{\noindent\parfillskip=0pt
-A mathcode is relevant only when the corresponding category code is
-11 or~12; therefore many of these codes will rarely be looked at. For
-example, the math code for |^^M| specifies the character |\oplus|,
-but it's hard to imagine a user who would want |^^M|\par}
-
-\bugonpage 345, line 31 (2/29/84)
-
-\ninepoint\noindent
-|\delcode`\<="26830A \delcode`\\="26E30F \delcode`\>="26930B|
-
-\bugonpage 347, lines 1 and 2 (3/16/84)
-
-\ninepoint\noindent
-|\count18=3 % this counter allocates math families 4, 5, 6, ...|\hfil\break
-|\count19=255 % this counter allocates insertions 254, 253, 252, ...|
-
-\bugonpage 350, line 9 from the bottom (3/16/84)
-
-\ninepoint\noindent
-font, whose information does not have to be loaded again.
-
-\bugonpage 354, line 5 (6/7/84)
-
-\ninepoint\noindent
-|\def\ialign{\everycr={}\tabskip=0pt \halign} % initialized \halign|
-
-\bugonpage 355, lines 19--21 (7/3/84)
-
-\ninepoint\noindent
-subdivision in a document; to use it, you say
-`|\beginsection|\<section title>' followed by a blank line (or~|\par|).
-The macro first emits glue and penalties, designed to start a new page
-if the present page is nearly full; then it makes a ^|\bigskip| and
-puts the section{\parfillskip=0pt\par}
-
-\bugonpage 355, lines 27--29 (7/3/84)
-
-\ninepoint\noindent
-|\outer\def\beginsection#1\par{\vskip0pt plus.3\vsize\penalty-250|
-\par\noindent
-| \vskip0pt plus-.3\vsize\bigskip\vskip\parskip|
-\par\noindent
-| \message{#1}\leftline{\bf#1}\nobreak\smallskip\noindent}|
-
-\bugonpage 355, line 37 (4/24/84)
-
-\ninepoint\noindent
-|\outer\def\proclaim #1. #2\par{\medbreak|
-
-\bugonpage 356, seven lines from the bottom (4/11/84)
-
-\ninepoint\noindent
-|\def|^|\TeX||{T\kern-.1667em \lower.5ex\hbox{E}\kern-.125em X}|
-
-\bugonpage 359, starting with line 2 (11/16/83)
-
-\ninepoint
-\beginlines
-|\mathchardef\ldotp="602E\mathchardef\cdotp="6201\mathchardef\colon="603A|
-|\def\ldots{\mathinner{\ldotp\ldotp\ldotp}}|
-|\def\cdots{\mathinner{\cdotp\cdotp\cdotp}}|
-|\def\vdots{\vbox{\baselineskip=4pt \lineskiplimit=0pt|
-| \kern6pt \hbox{.}\hbox{.}\hbox{.}}}|
-|\def\ddots{\mathinner{\mskip1mu\raise7pt\vbox{\kern7pt\hbox{.}}\mskip2mu|
-| \raise4pt\hbox{.}\mskip2mu\raise1pt\hbox{.}\mskip1mu}}|
-\endlines
-
-\bugonpage 359, starting with line 19 (11/3/83)
-
-{\ninepoint\parindent=0pt
-|\def|^|\overbrace|%
- |#1{\mathop{\vbox{\ialign{##\crcr\noalign{\kern3pt}|\parbreak%
-| \downbracefill\crcr\noalign{\kern3pt\nointerlineskip}|\parbreak%
-| $\hfil\displaystyle{#1}\hfil$\crcr}}}|^|\limits||}|
-
-|\def|^|\underbrace||#1{\mathop{\vtop{\ialign{##\crcr|\parbreak%
-| $\hfil\displaystyle{#1}\hfil$\crcr|%
- |\noalign{\kern3pt\nointerlineskip}|\parbreak%
-| \upbracefill\crcr\noalign{\kern3pt}}}}\limits}|
-}
-
-\bugonpage 359, seventh line from the bottom (2/29/84)
-
-\ninepoint\noindent
-|\def\backslash{\delimiter"026E30F } \def\bracevert{\delimiter"000033E }|
-
-\bugonpage 361, line 3 (8/17/84)
-
-\ninepoint\noindent
-
-|\def\buildrel#1\over#2{\mathrel{\mathop{\null#2}\limits^{#1}}}|
-
-\bugonpage 363, line 10 (4/26/84)
-
-\ninepoint\noindent
-| \ifhmode\edef\@sf{\spacefactor=\the\spacefactor}\/\fi|
-
-\bugonpage 364, starting with line 10 (11/1/83)
-
-{\ninepoint\parindent=0pt
-|\def\dosupereject{\ifnum\insertpenalties>0 % something is being held over|%
-\parbreak
-| \line{}\kern-\topskip\nobreak\vfill\supereject\fi}|
-}
-
-\bugonpage 364, line 28 (7/8/84)
-
-\ninepoint\noindent
-| \tracingmacros=2 \tracingparagraphs=1 \tracingrestores=1 |
-
-\bugonpage 370, line 7 (3/16/84)
-
-\ninepoint\noindent
-information about the \TeX\ Users Group.)
-
-\bugonpage 374, line 23 (7/8/84)
-
-\ninepoint
-\line{log file when |\tracingmacros=2| and
- |\tracingcommands=2|. One of the important ways}
-
-\bugonpage 379, line 1 (1/12/84)
-
-\ninepoint\noindent
-A particular item can be selected by its position number from the left:
-
-\bugonpage 381, line 6 (2/12/84)
-
-\ninepoint\indent
-|\newcount\lineno % the number of file lines listed|
-
-\bugonpage 381, lines 24 and 25 (12/15/83)
-
-\ninepoint
-{\parfillskip=0pt
-Instead of listing a file verbatim, you might want to define a |\verbatim|
-macro such that `|\verbatim{$this$|{\tt\ is }|{\it!}}|' yields
-`|$this$|{\tt\ is }|{\it!}|'. It's somewhat\par}
-
-\bugonpage 385, lines 22 and 23 (1/12/84)
-
-\ninepoint\noindent
-macro, a parameter, or a token list
-variable; (b)~when \TeX\ must determine whether the token
-|&|~or ^|\span| ^^{ampersand}
-or ^|\cr| or~^|\crcr| is the end of an entry within an ^{alignment}.
-
-\bugonpage 387, two paragraphs in right column (1/18/84)
-
-\setbox0=\vbox{
-\eightpoint
-\tolerance=9999
-\hbadness=2300
-\finalhyphendemerits=3000000
-\doublehyphendemerits=1000000
-\parskip=1pt
-\parindent=1.5em
-\frenchspacing
-\hsize=166.8125pt
-\def\\#1{\raise.5pt\hbox{$\scriptscriptstyle
- \ifx#1`\langle\!\langle\else\rangle\!\rangle\fi$}% Spanish quote marks
- \ifx#1`\nobreak\hskip0pt \fi} % allow hyphenation
-\item{A.} Exactamente. Pero los profesores son tan conservadores
-que temer\'\i an espantar al tipo de estudiante \\`apisonadora\\'
-que hace lo que le proponen para casa, obe\-dien\-te\-mente y de forma
-mec\'anica. Adem\'as, no creo que les gustase el trabajo adicional
-de calificar respuestas a preguntas abiertas.
-
-\item{}La forma tradicional es dejar la parte creativa para los cursos
-altos. Durante diecisiete a\~nos o m\'as se ense\~na al es\-tu\-diante a
-aprobar, luego de golpe, cerca de la graduaci\'on, se le pide que haga
-algo original.
-
-}\rightline{\box0}
-
-\bugonpage 395, lines 21 and 22 (1/12/84)
-
-\ninepoint\noindent
-{\parfillskip=0pt
-Notice that the macros need to do their own checking for ligatures, and
-they also take appropriate actions when a paragraph begins with an opening
-quote. Since |\kern|\par}
-
-\bugonpage 399, line 1 (1/10/84)
-
-\ninepoint
-{\parfillskip=0pt
-Inside the output routine, |\box\footins| will now be a vbox of hboxes, and
-\par}
-
-\bugonpage 399, line 9 (2/28/84)
-
-\ninepoint\indent
-|.\hbox(7.6359+0.0)x269.62617 []|
-
-\bugonpage 407, line 4 (6/10/84)
-
-\ninepoint\noindent
-|\beginlinemode| and |\beginparmode| are defined to initiate these
-modes; and another%
-{\parfillskip=0pt\par}
-
-\bugonpage 408, line 15 (12/14/83)
-
-\noindent
-| P. O. Box 1009, Haga Alto, CA 94321 USA}|
-
-\smallskip\noindent\ninepoint
-[Also change the ZIP code in the return address on the envelope
-illustrated at the bottom of page 405.]
-
-\bugonpage 409, line 5 (2/18/84)
-
-\ninepoint\noindent
-|\font\twelveit=cmti10 at 12pt % (a cheap substitute for cmti12)|
-
-\bugonpage 417, last six lines (8/25/84)
-
-\ninepoint\noindent
-^|\parskip|
-of |0pt| |plus|~|.8pt| between adjacent entries, and since there is room for
-more than 50 lines per column; therefore the |manmac| balancing routine tries
-to make both the top and bottom baselines agree at the end of the index.
-In applications where the glue is not so flexible it would be more
-appropriate to let the right-hand column be a little short; the best
-way to do this is probably to replace the command `|\unvbox3|' by
-`|\dimen2=|^|\dp||3| |\unvbox3| |\kern-\dimen2| ^|\vfil|'.
-
-\bugonpage 422, lines 24--26 (2/9/84)
-
-\ninepoint\noindent
-(The last two lines use |\d@nger| and |\dd@nger|, which are non-|\outer|
-equivalents of\/ |\danger| and |\ddanger|; such duplication is necessary
-because control sequences of type ^|\outer| cannot appear within a |\def|.)
-
-\bugonpage 428, in the table of sixteen basic fonts (12/19/83)
-
-\ninepoint\noindent
-[The special fonts called |cmi10| and |cmi7| and |cmi5| should really be
-called |cmmi10| and |cmmi7| and |cmmi5|.]
-
-\bugonpage 433, last eight lines (8/17/84)
-
-\noindent
-explained in Appendix~G\null. If you want to increase
-the number of parameters past the number that actually appear in a font's
-metric information file, you can assign new values immediately after that font
-has been loaded. For example, if some font |\ff| with seven parameters
-has just entered \TeX's memory, the command |\fontdimen13\ff=5pt| will set
-parameter number~13 to $5\pt$; the intervening parameters, numbers 8--12,
-will be set to zero. You can even give more than seven parameters to
-^|\nullfont|, provided that you assign the values before any actual fonts
-have been loaded.
-
-\bugonpage 445, line 6 (11/11/83)
-
-\ninepoint
-\line{if $(a-{1\over2}\theta)-
-\bigl(h(z)-v\bigr)<\varphi$, increase~$v$ by the difference. Finally
-construct a vbox of}
-
-\bugonpage 449, line 12 (1/18/84)
-
-\line{immediately clear why the `n' should
-be attached to the `e' in one case but not}
-
-\bugonpage 459, left column, line 2 (1/18/84)
-
-\eightpoint
-al-Khw\^arizm\^\i, abu Ja`far Mu\d{h}ammad
-
-\bugonpage 460, index entry for Beethoven (8/16/84)
-
-\eightpoint
-Change `von' to `van'.
-
-\bugonpage 461, third line in left column (8/25/84)
-
-\eightpoint The entry for |\box255| should not be indented.
-
-\bugonpage 461, index entry for boxed material (8/2/84)
-
-\eightpoint Add `{\it 420}'.
-
-\bugonpage 462, index entry for {\tt\char`\\colon} (11/16/83)
-
-\eightpoint Add page \underbar{359} to this list.
-
-\bugonpage 462, right column, third-last line (5/21/84)
-
-\eightpoint\indent
-[Change `crochets' to `crotchets'; then move this entry down two lines.]
-
-\bugonpage 463, right column, line 16 (5/20/84)
-
-\eightpoint\indent
-design size, 16--17, 213.
-
-\bugonpage 464, index entry for {\tt\char`\\dump} (1/10/84)
-
-\eightpoint Add page {\it 344\/} to this list.
-
-\bugonpage 464, right column, line 5 (1/5/84)
-
-\eightpoint
-Dvo\v r\'ak, Anton\'\i n Leopold, 409.
-
-\bugonpage 464, index entry for {\tt\char`\\end} (8/25/84)
-
-\eightpoint Page number 264 should be underlined.
-
-\bugonpage 465, index entry for {\tt\char`\\everydisplay} (8/25/84)
-
-\eightpoint Add page {\it 326\/} to this list.
-
-\bugonpage 465, index entry for {\tt\char`\\filbreak} (7/3/84)
-
-\eightpoint Delete the reference to page number 355.
-
-\bugonpage 466, index entry for {\tt\char`\\footnote} (4/26/84)
-
-\eightpoint Page number 363 should be underlined.
-
-\bugonpage 467, index entry for {\tt\char`\\hidewidth} (7/3/84)
-
-\eightpoint Page number 354 should be underlined.
-
-\bugonpage 468, index entry for insertions (8/25/84)
-
-\eightpoint Add pages 115--117, 122--125 to this list.
-
-\bugonpage 469, index entry for {\tt\char`\\kern} (11/1/83)
-
-\eightpoint Add page {\it 256\/} to this list.
-
-\bugonpage 470, index entry for {\tt\char`\\limits} (11/3/83)
-
-\eightpoint Add page {\it 359\/} to this list.
-
-\bugonpage 472, right column, lines 10--11 (7/9/84)
-
-{\eightpoint
-\indent
-|\normalbaselines|\kern1pt,
- {\it 325}, 349, $\underline{351}$, {\it 414--415}.\par
-\baselineskip=9.9pt
-\indent
-|\normalbaselineskip|\kern1pt,
- $\underline{349}$, {\it 414--415}.\par
-}
-
-\bugonpage 472, index entry for {\tt\char`\\null} (7/3/84)
-
-\eightpoint Page number 351 should be underlined.
-
-\bugonpage 472, right column, line 28 (1/3/84)
-
-\eightpoint\indent
-\hbox to0pt{\hss\lower1pt\hbox{*}}|\nullfont|, 14, 153, 271, 433.
-
-\bugonpage 476, a new index entry (8/25/84)
-
-\eightpoint\indent
-shifted output, {\sl see\/} |\hoffset|, |\voffset|.
-
-\bugonpage 476, index entry for shriek (8/25/84)
-
-\eightpoint It should not be capitalized.
-
-\bugonpage 478, index entry for \'Swierczkowski (9/15/84)
-
-\eightpoint
-The middle name should be `S\l awomir'.
-
-\bugonpage 479, last seven lines in the left column (8/23/84)
-
-\eightpoint
-{\baselineskip=9.9pt
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\tracingmacros|, $\underline{205}$, $\underline{212}$, 273, {\it329}.
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\tracingonline|, 121, 212, 273, $\underline{303}$.
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\tracingoutput|, $\underline{254}$, 273, {\it301--302}.
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\tracingpages|, {\it112--114}, 124, 273, $\underline{303}$.
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\tracingparagraphs|, {\it98--99}, 273, $\underline{303}$.
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\tracingrestores|, 273, $\underline{301}$, $\underline{303}$.
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\tracingstats|, 273, $\underline{300}$, $\underline{303}$, {\it383}.
-}
-
-\bugonpage 479, index entry for underlined text (8/2/84)
-
-\eightpoint Add `{\sl see also\/} |\underbar|'.
-
-\bugonpage 480, index entry for {\tt\char`\\vbox} (11/1/83)
-
-\eightpoint Delete page 256 from this list.
-
-\bye
-
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.seven b/Master/texmf-dist/source/generic/knuth/errata/errata.seven
deleted file mode 100644
index 0866189da51..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.seven
+++ /dev/null
@@ -1,821 +0,0 @@
-% Bugs (sigh) in Computers \& Typesetting
-
-\input manmac
-\font\sltt=cmsltt10
-\font\niness=cmss9
-\font\ninessi=cmssi9
-\proofmodefalse
-\raggedbottom
-\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\today{\number\day\
- \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}
-
-\def\cutpar{{\parfillskip=0pt\par}}
-
-\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1991}}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
-\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
-\newcount\nn
-\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
-\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
-
-\tenpoint
-\noindent This is a list of all corrections made to {\sl Computers \&
-Typesetting}, Volumes A,~B, C, and D\null, between 1 January 1991 and
-15 March 1992.
-Corrections made to the softcover version of {\sl The \TeX book\/} are
-the same as corrections to Volume~A\null. Corrections to the softcover
-version of {\sl The \slMF\kern1ptbook\/} are the same as corrections
-to Volume~C\null. Some of the corrections below have already been made in
-reprintings of the books. Changes to Volume~B refer to the fourth printing
-(1991), which differs markedly from earlier printings because it includes
-all the revisions for \TeX3.0. Changes to Volume~D refer to the third
-printing (1991), which differs markedly from earlier printings because
-it includes all the revisions for \MF\kern1pt2.0. Changes to the mini-indexes
-and master indexes of Volumes B and~D are not shown here unless they are
-not obviously derivable from what has been shown.
-Dozens of changes, too many to list
-here, have been made to Volume~E because of recent upgrades to the
-Computer Modern font source files.
-Those changes, which affect only the digitization at
-low resolution and the appearance of lowercase delta and
-some characters in the math symbols
-fonts (but not the {\tt TFM} files), are documented at
-the end of file {\tt cm85.bug}.
-\looseness=-1
-
- % volume A
-
-\bugonpage A96, lines 9--11 (9/18/91)
-
-\ninepoint
-Some ^{German} words traditionally change their spelling
-when they are split between lines. For example, `backen' becomes `bak-ken'
-and `Bettuch' becomes `Bett-tuch'. How can you instruct \TeX\ to produce
-such effects?
-
-\bugonpage A178, line 17 (11/19/91)
-
-\ninepoint
-If you say `|\phantom{|\<subformula>|}|' in any formula, plain
-\TeX\ will do its\cutpar
-
-\bugonpage A286, bottom two lines and continuing into A287 (11/21/91)
-
-\ninepoint\noindent
-stands for zero or more \<assignment>
-commands other than |\setbox|.
-If the assignments are not followed by a \<character>, where
-\<character> stands for any of the commands just discussed in the previous
-paragraph, \TeX\ treats |\accent| as if it were |\char|, except that
-the space factor is set to 1000. Otherwise the character that follows
-the assignment is accented by the character that corresponds to the
-\<8-bit number>. \ (The purpose of the intervening assignments is to
-allow the accenter and accentee to be in different fonts.) \ If the
-accent must be moved up or down, it is put into an hbox that is
-raised or lowered. Then the accent is effectively superposed on the
-character by means of kerns, in such a way that the width of the accent
-does not influence the width of the resulting horizontal list.
-Finally, \TeX\ sets |\spacefactor=1000|.
-
-\bugonpage A291, lines 6--8 (11/21/91)
-
-\ninepoint\noindent
-`|}|' may be followed by
-optional \<assignment> commands other than |\setbox|,
-after which `|$$|'~must conclude
-the display. \TeX\ will insert the |\abovedisplayskip| and
-|\belowdisplayskip| glue before and after the result of the alignment.
-
-\bugonpage A293, line 14 (9/18/91)
-
-\ninepoint\noindent
-explained in Appendix~G\null. \TeX\
-scans \<one optional space> after completing a displayed formula; this is
-usually the implicit space at the end of a line in the input file.
-
-\bugonpage A311, bottom four lines (9/18/91)
-
-\ninepoint
-\ansno12.7: 1000, except: 999 after |O|, |B|, |S|, |D|, and |J|; 1250 after the
-comma; 3000 after the exclamation point, the right-quote marks, and the
-periods. If a period had come just after the |B| (i.e., if the text had
-said `|B. Sally|'), the space factor after that period would have
-been~1000, not~3000.
-
-\bugonpage A314, lines 16--18 from the bottom (1/10/92)
-
-\ninepoint
-\ansno14.8: |ba\ck/en| and |Be\ttt/uch|, where the macros |\ck/| and |\ttt/|
-are defined by
-\begintt
-\def\ck/{\discretionary{k-}{k}{ck}}
-\def\ttt/{tt\discretionary{-}{t}{}}
-\endtt
-
-\bugonpage A354, line 8 (9/18/91)
-
-\ninepoint\noindent
-|\def\multispan#1{\omit\mscount=#1\relax\loop\ifnum\mscount>1 \sp@n\repeat}|%
-\kern-10pt\null
-
-\bugonpage A356, line 11 from the bottom (9/23/91)
-
-\ninepoint\noindent
-| \else{\ooalign{\unhbox0\crcr\hidewidth\char'30\hidewidth}}\fi}|
-
-\bugonpage A358, line 8 from the bottom (9/18/91)
-
-\ninepoint\noindent
-|\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow}|
-
-\bugonpage A359, line 13 (11/4/91)
-
-\ninepoint\noindent
-|\def\overrightarrow#1{\vbox{\m@th\ialign{##\crcr|
-
-\bugonpage A359, line 16 (11/4/91)
-
-\ninepoint\noindent
-|\def\overleftarrow#1{\vbox{\m@th\ialign{##\crcr|
-
-\bugonpage A359, line 19 (11/4/91)
-
-\ninepoint\noindent
-|\def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3pt}|
-
-\bugonpage A359, line 22 (11/4/91)
-
-\ninepoint\noindent
-|\def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr|
-
-\bugonpage A359, lines 7--14 from the bottom (1/11/92)
-
-\ninepoint\noindent
-|\def\lgroup{\delimiter"462833A } \def\rgroup{\delimiter"562933B }|%
-\par\noindent
-|\def\lmoustache{\delimiter"437A340 } \def\rmoustache{\delimiter"537B341 }|%
- \kern-2pt\null\par\noindent
-|\def\uparrow{\delimiter"3222378 } \def\Uparrow{\delimiter"322A37E }|%
-\par\noindent
-|\def\downarrow{\delimiter"3223379 } \def\Downarrow{\delimiter"322B37F }|%
-\par\noindent
-|\def\updownarrow{\delimiter"326C33F } \def\arrowvert{\delimiter"026A33C }|%
-\par\noindent
-|\def\Updownarrow{\delimiter"326D377 } \def\Arrowvert{\delimiter"026B33D } |%
-\par\noindent
-|\def\vert{\delimiter"026A30C } \def\Vert{\delimiter"026B30D } |%
-\par\noindent
-|\def\backslash{\delimiter"026E30F } \def\bracevert{\delimiter"077C33E }|
-
-\bugonpage A360, line 13 (11/19/91)
-
-\ninepoint\noindent
-|\phantom|, |\smash|, |\root|, and other
-operations. (Actually |\phantom| and |\smash| are not perfect: They
-assume that the current style is uncramped.)
-
-\bugonpage A360, line 2 from the bottom (11/4/91)
-
-\ninepoint\noindent
-|\def\c@ncel#1#2{\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}}|
-
-\bugonpage A361, top line (11/4/91)
-
-\ninepoint\noindent
-|\def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2pt|
-
-\bugonpage A364, line 5 from the bottom (11/4/91)
-
-\ninepoint\noindent
-|\def|^|\fmtname||{plain}\def\fmtversion{3.141}|
-
-\bugonpage A377, the bottom 17 lines (9/18/91)
-
-\eightpoint\noindent\hangindent\parindent\hangafter-3
-story: Macro |\stest| decides whether or not
-a given token list register begins with
-a \<space token> as defined in Chapter~24. If so, the macro
-decides whether the token is explicit and/or funny and/or active.
-\begintt
-\newif\ifspace \newif\iffunny \newif\ifexplicit \newif\ifactive
-\def\stest#1{\funnyfalse \expandafter\s\the#1! \stest}
-\def\s{\global\explicitfalse \global\activefalse \futurelet\next\ss}
-\def\ss{\ifcat\noexpand\next\stoken\let\nxt\sx\else\let\nxt\ns\fi\nxt}
-\def\sx{\spacetrue\ifx\next\stoken\let\nxt\sss\else\let\nxt=\ssss\fi\nxt}
-\long\def\sss#1 #2\stest{\def\next{#1}%
- \ifx\next\empty \global\explicittrue \else\testactive#1\s\fi}
-\long\def\ssss#1#2\stest{\funnytrue{\escapechar=\if*#1`?\else`*\fi\relax
- \if#1\string#1\uccode`#1=`~ % we assume that ~ is an active character
- \uppercase{\ifcat\noexpand#1}\noexpand~\global\activetrue
- \else\global\explicittrue\fi
- \else\testactive#1\s\fi}}
-\long\def\ns#1\stest{\spacefalse}
-\long\def\testactive#1#2\s{\expandafter\tact\string#1\s\tact}
-\long\def\tact#1#2\tact{\def\next{#2}\ifx\next\xs\global\activetrue
- \else\ifx\next\empty \global\activetrue\fi\fi} \def\xs{\s}
-\endtt
-
-\bugonpage A444, lines 15--26 (3/26/91)
-
-\ninepoint
-\textindent{\bf14.}If the current item is an Ord atom,
-go directly to Rule~17 unless
-all of the following are true: The nucleus is a symbol; the subscript
-and superscript are both empty; the very next item in the math list is an
-atom of type Ord, Op, Bin, Rel, Open, Close, or Punct; and the nucleus of the
-next item is a symbol whose family is the same as the family in the present
-Ord atom. In such cases the present symbol is marked as a text symbol.
-If the font information shows a ligature between this symbol and the
-following one, using the specified family and the current size, then
-insert the ligature character and continue as specified by the font;
-in this process, two characters may collapse into a single Ord
-text symbol, and/or new Ord text characters may appear. If the font information
-shows a kern between the current symbol and the next, insert a kern item
-following the current atom.
-As soon as an Ord atom has been fully processed for ligatures and kerns,
-go to Rule~17.
-
-\bugonpage A446, lines 5 and 6 from the bottom (1/13/92)
-
-\ninepoint\noindent
-are used to change the current style just as
-in the first pass, so that both passes have the same value of~$C$ when
-they work on any particular atom.
-
-\bugonpage A447, in the parameter usage table (1/13/92)
-
-\ninepoint\noindent[Delete the entry for `$\sigma_2$'; the entry for
-`$\sigma_{17}$' moves down to the bottom of the left column.]
-
-\bugonpage A447, line 2 after the parameter usage table (1/13/92)
-
-\ninepoint\noindent
-to parameters in arbitrary families:
-Rule~17 uses |\fontdimen| parameter~2 (space) to de-\cutpar
-
-\bugonpage A467, entry for {\tt\char`\\hss} (9/18/91)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt\char`\\hss}, 71--72, {\it82--83}, 233, 283, 285, 290, 442.
-
-\bugonpage A467, new subentry under hyphenation (9/18/91)
-
-\eightpoint\indent\quad
-suppressing, 93, 414, 424, 454.
-
-\bugonpage A476, right column (11/21/91)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt\char`\\setbox}, 66--67, 77, 81, $\underline{120}$, 276, 279, 286,\par
-\indent\qquad 291, {\it386--392}.
-
- % volume B
-\hsize=35pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage B2, line 10 from the bottom (1/11/92)
-
-\ninepoint\noindent\hskip10pt
-{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]TeX,\]Version\]3.141\char'23}\quad
-$\{\,$printed when \TeX\ starts$\,\}$
-
-\bugonpage B18, lines 21 and 22 (10/12/91)
-
-\tenpoint\noindent
-must have an \\{xchr} equivalent in the local
-character set. (This restriction applies only to preloaded strings,
-not to those generated dynamically by the user.)
-
-\bugonpage B26, new line before fourth line from bottom (1/24/92)
-
-\ninepoint\noindent\hskip20pt
-\\{nl}: \\{integer};\quad$\{\,$new-line character to restore$\,\}$
-
-\bugonpage B26, bottom line and top 3 lines of B27 (1/24/92)
-
-\ninepoint\noindent\hskip30pt
-{\bf else begin if\/} $\\{selector}>\\{pseudo}$ {\bf then}\par
-\noindent\hskip50pt
-{\bf begin} \\{print\_char}($s$); \ {\bf return};\quad
- $\{\,$internal strings are not expanded$\,\}$\par\noindent\hskip50pt
-{\bf end};\par\noindent\hskip40pt
-{\bf if\/} ($\langle\,$Character $s$ is the current new-line
- character{\sevenrm\kern.5em244}$\,\rangle$) {\bf then}\par\noindent\hskip50pt
-{\bf if\/} $\\{selector}<\\{pseudo}$ {\bf then}\par\noindent\hskip60pt
-{\bf begin} \\{print\_ln}; \ {\bf return}; \
-{\bf end};\par\noindent\hskip40pt
-$\\{nl}\gets\\{new\_line\_char}$; \ $\\{new\_line\_char}\gets-1$;\quad
- $\{\,$temporarily disable new-line character$\,\}$\par\noindent\hskip40pt
-$j\gets\\{str\_start}[s]$;\par\noindent\hskip40pt
-{\bf while} $j<\\{str\_start}[s+1]$ {\bf do}\par\noindent\hskip50pt
-{\bf begin} $\\{print\_char}(\\{so}(\\{str\_pool}[j]))$; \ $\\{incr}(j)$; \
-{\bf end};\par\noindent\hskip40pt
-$\\{new\_line\_char}\gets\\{nl}$; \ {\bf return};\par\noindent\hskip40pt
-{\bf end};
-
-\bugonpage B27, lines 9 and 10 (9/19/91)
-
-\tenpoint\noindent
-{\bf 60.\quad}%
-Control sequence names, file names, and strings constructed with
-{\tt\char`\\string} might contain \\{ASCII\_code} values that can't
-be printed using \\{print\_char}. Therefore we use
-\\{slow\_print} for them:
-
-\bugonpage B27, lines 13--26 (1/24/92)
-
-\ninepoint\noindent\hskip10pt
-{\bf var} $j$: \\{pool\_pointer};\quad$\{\,$current character code
- position$\,\}$\par\noindent\hskip10pt
-{\bf begin if\/} $(s\ge\\{str\_ptr})\lor(s<256)$ {\bf then} \\{print}(s)
-\par\noindent\hskip10pt {\bf else begin} $j\gets\\{str\_start}[s]$;\par
-\noindent\hskip20pt{\bf while} $j<\\{str\_start}[s+1]$ {\bf do}\par
-\noindent\hskip30pt{\bf begin} $\\{print}(\\{so}(\\{str\_pool}[j]))$; \
- $\\{incr}(j)$;\par\noindent\hskip30pt
-{\bf end};\par\noindent\hskip20pt
-{\bf end};\par\noindent\hskip10pt
-{\bf end};
-
-\bugonpage B28, line 8 (9/19/91)
-
-\ninepoint\noindent\hskip10pt
-{\bf else begin} \\{slow\_print}(\\{format\_ident}); \ \\{print\_ln};
-
-\bugonpage B33, line 3 (1/11/92)
-
-\tenpoint\noindent
-recursively. A similar interlock is provided by \\{set\_box\_allowed}.
-
-\bugonpage B33, new line to come after line 14 (1/11/92)
-
-\ninepoint\noindent
-\\{set\_box\_allowed}: \\{boolean};\quad
- $\{\,$is it safe to do a |\setbox| assignment?$\,\}$
-
-\bugonpage B33, new line to come after line 20 (1/11/92)
-
-\ninepoint\noindent\hskip10pt
-$\\{set\_box\_allowed}\gets\\{true}$;
-
-\bugonpage B36, line 12 (9/19/91)
-
-\ninepoint\noindent\hskip30pt
-{\bf begin} \\{print\_nl}({\tt\char`\"You\]want\]to\]edit\]file\]\char`\"});
- \ \\{slow\_print}(\\{input\_stack}[\\{base\_ptr}].\\{name\_field});
-
-\bugonpage B46, lines 9 and 10 (5/24/91)
-
-\tenpoint\noindent
-arithmetic; see {\sl TUGboat \bf3},1 (March 1982), 10--27. (But the
-routines cited there must be modified to allow negative glue ratios.)
-
-\bugonpage B47, lines 2 and 3 (5/24/91)
-
-\tenpoint\noindent
-structures on a \\{memory\_word}, which contains either a (signed) integer,
-possibly scaled, or a (signed) \\{glue\_ratio}, or a small number of
-fields that are one half or one quarter of the size used\cutpar
-
-\bugonpage B177, lines 10 and 11 (9/19/91)
-
-\ninepoint\noindent\hskip20pt
-{\bf begin} \\{print\_err}({\tt\char`\"Bad\]mathchar\char`\"});\par
-\noindent\hskip20pt
-\\{help2}({\tt\char`\"A\]mathchar\]number\]must\]be\]between\]0\]%
- and\]32767.\char`\"})
-
-\bugonpage B196, new lines after line 11 (1/13/92)
-
-\ninepoint\noindent\hskip20pt
-{\bf if\/} $\\{align\_state}<1000000$ {\bf then}\quad
- $\{\,$unmatched `|}|' aborts the line$\,\}$\par\noindent\hskip30pt
-{\bf begin repeat} \\{get\_token}; \ {\bf until} $\\{cur\_tok}=0$;\par
-\noindent\hskip30pt$\\{align\_state}\gets1000000$; \ {\bf goto} \\{done};\par
-\noindent\hskip30pt{\bf end};
-
-\bugonpage B208, line 21 (9/19/91)
-
-\ninepoint\noindent\hskip10pt
-{\bf begin} \\{slow\_print}($a$); \ \\{slow\_print}($n$); \
- \\{slow\_print}($e$);
-
-\bugonpage B214, line 14 (9/19/91)
-
-\ninepoint\noindent\hskip10pt
-{\bf begin} \\{wlog}(\\{banner}); \\{slow\_print}(\\{format\_ident}); \
- \\{print}({\tt\char`\"\]\]\char`\"}); \
- \\{print\_int}(\\{day}); \
- \\{print\_char}({\tt\char`\"\]\char`\"});
-
-\bugonpage B214, line 2 from the bottom (9/19/91)
-
-\ninepoint\noindent\hskip10pt
-\\{print\_char}({\tt\char`\"(\char`\"}); \
-\\{incr}(\\{open\_parens}); \
-\\{slow\_print}(\\{name}); \
-\\{update\_terminal}; \
-$\\{state}\gets\\{new\_line}$;
-
-\bugonpage B234, line 22 (9/19/91)
-
-\ninepoint\noindent\hskip20pt
-\\{print}({\tt\char`\"\]in\]font\]\char`\"}); \
-\\{slow\_print}(\\{font\_name}[$f$]); \
-\\{print\_char}({\tt\char`\"!\char`\"}); \
-\\{end\_diagnostic}(\\{false});
-
-\bugonpage B267, lines 7 and 8 (9/19/91)
-
-\ninepoint\noindent\hskip20pt
-\\{print\_nl}({\tt\char`\"Output\]written\]on\]\char`\"}); \
-\\{slow\_print}(\\{output\_file\_name});\par\noindent\hskip20pt
-\\{print}({\tt\char`\"\](\char`\"}); \
-\\{print\_int}(\\{total\_pages}); \
-\\{print}({\tt\char`\"\]page\char`\"});
-
-\bugonpage B296, new lines after line 8 of section 716 (1/11/92)
-
-\ninepoint\noindent\hskip10pt
-{\bf if\/} $f<0$ {\bf then}\par\noindent\hskip20pt
-{\bf begin} \\{decr}($n$); \ $f\gets f+\oct{200000}$;\par\noindent\hskip20pt
-{\bf end};
-
-\bugonpage B297, new lines after line 7 of section 717 (1/11/92)
-
-\ninepoint\noindent\hskip20pt
-{\bf if\/} $f<0$ {\bf then}\par\noindent\hskip30pt
-{\bf begin} \\{decr}($n$); \ $f\gets f+\oct{200000}$;\par\noindent\hskip30pt
-{\bf end};
-
-\bugonpage B348, bottom two lines (1/3/92)
-
-\tenpoint\noindent\hskip10pt
-Up to three passes might be made through the paragraph in an attempt to find at
-least one set of feasible breakpoints. On the first pass, we have
-$\\{threshold}=\\{pretolerance}$ and $\\{second\_pass}=$\cutpar
-
-\bugonpage B364, line 20 (1/3/92)
-
-\tenpoint\noindent
-{\bf 863.\quad}
-The `{\bf loop}' in the following code is performed at most
-thrice per call of \\{line\_break}, since\cutpar
-
-\bugonpage B377, insert new line after line 12 (9/19/91)
-
-\ninepoint\noindent
-\\{hyf\_bchar}:\enspace\\{halfword};\quad
- $\{\,$boundary character after $c_n\,\}$
-
-\bugonpage B378, line 12 from the bottom (9/19/91)
-
-\ninepoint\noindent\hskip30pt
-$\\{hyf\_bchar}\gets\\{character}(s)$; \
-$c\gets\\{qo}(\\{hyf\_bchar})$;
-
-\bugonpage B378, line 9 from the bottom (1/10/92)
-
-\ninepoint\noindent\hskip30pt
-$\\{hb}\gets s$; \ \\{incr}(\\{hn}); \ $\\{hu}[\\{hn}]\gets c$; \
-$\\{hc}[\\{hn}]\gets\\{lc\_code}(c)$; \
-$\\{hyf\_bchar}\gets\\{non\_char}$;
-
-\bugonpage B378, line 5 from the bottom (9/19/91)
-
-\ninepoint\noindent\hskip30pt
-{\bf else if} $(\\{type}(s)=\\{kern\_node})\land(\\{subtype}(s)=\\{normal})$
- {\bf then} $\\{hb}\gets s$\par\noindent\hskip40pt
- {\bf else goto} \\{done3};
-
-\bugonpage B379, line 6 (9/19/91)
-
-\ninepoint\noindent\hskip10pt
-$j\gets\\{hn}$; \ $q\gets\\{lig\_ptr}(s)$; \
-{\bf if\/} $q>\\{null}$ {\bf then} $\\{hyf\_bchar}\gets\\{character}(q)$;
-
-\bugonpage B379, new line between lines 14 and 15 (1/10/92)
-
-\ninepoint\noindent\hskip10pt
-{\bf if\/} $\\{odd}(\\{subtype}(s))$ {\bf then}
-$\\{hyf\_bchar}\gets\\{font\_bchar}[\\{hf}]$ {\bf else}
-$\\{hyf\_bchar}\gets\\{non\_char}$;
-
-\bugonpage B379, line 19 (9/19/91)
-
-\ninepoint\noindent\hskip10pt
-{\bf if\/} $\\{hn}<\\{l\_hyf}+\\{r\_hyf}$ {\bf then goto} \\{done1}; \
-\quad$\{\,$\\{l\_hyf} and \\{r\_hyf} are always $\ge1\,\}$
-
-\bugonpage B380, lines 9--11 from the bottom reduce to a single line (1/10/92)
-
-\ninepoint\noindent\hskip10pt
-$q\gets\\{link}(\\{hb})$; \ $\\{link}(\\{hb})\gets\\{null}$; \
-$r\gets\\{link}(\\{ha})$; \ $\\{link}(\\{ha})\gets\\{null}$; \
-$\\{bchar}\gets\\{hyf\_bchar}$;
-
-\bugonpage B436, lines 9 and 10 (3/15/92)
-
-\tenpoint
-$$\\{cur\_r}=\cases{\\{character}(\\{lig\_stack}),&if $\\{lig\_stack}>
- \\{null}$;\cr
- \\{font\_bchar}[\\{cur\_font}],&otherwise;\cr}$$
-except when $\\{character}(\\{lig\_stack})=\\{font\_false\_bchar}
- [\\{cur\_font}]$. Several additional global variables are needed.
-
-\bugonpage B438, line 13 from the bottom (3/15/92)
-
-\ninepoint\noindent\hskip10pt
-$\\{cur\_q}\gets\\{tail}$; \ $\\{cur\_l}\gets\\{character}(\\{lig\_stack})$;
-
-\bugonpage B507, line 6 of section 1241 (1/11/92)
-
-\ninepoint\noindent\hskip10pt
-\\{scan\_optional\_equals};\par\noindent\hskip10pt
-{\bf if\/} \\{set\_box\_allowed} {\bf then}
-$\\{scan\_box}(\\{box\_flag}+n)$\par\noindent\hskip10pt
-{\bf else begin} \\{print\_err}({\tt\char`\"Improper\]\char`\"});
-\ \\{print\_esc}({\tt\char`\"setbox\char`\"});\par\noindent\hskip20pt
-\\{help2}({\tt\char`\"Sorry,\]\char`\\setbox\]is\]not\]allowed\]after\]%
-\char`\\halign\]in\]a\]display,\char`\"})\par\noindent\hskip20pt
-({\tt\char`\"or\]between\]\char`\\accent\]%
-and\]an\]accented\]character.\char`\"});
-\ \\{error};\par\noindent\hskip20pt
-{\bf end};
-
-\bugonpage B511, new line inserted after line 3 (1/24/92)
-
-\ninepoint\noindent\hskip20pt
-\\{flushable\_string}: \\{str\_number};\quad
- $\{\,$string not yet referenced$\,\}$
-
-\bugonpage B512, new line inserted after line 3 of section 1260 (1/24/92)
-
-\ninepoint\noindent\hskip10pt
-$\\{flushable\_string}\gets\\{str\_ptr}-1$;
-
-\bugonpage B512, the former line 6 of section 1260 (1/24/92)
-
-\ninepoint\noindent\hskip30pt
-{\bf begin if\/} $\\{cur\_name}=\\{flushable\_string}$ {\bf then}
-\par\noindent\hskip40pt{\bf begin} \\{flush\_string}; \
- $\\{cur\_name}\gets\\{font\_name}[f]$; \ {\bf end};
-\par\noindent\hskip30pt{\bf if\/} $s>0$ {\bf then}
-
-\bugonpage B512, line 10 from the bottom (9/19/91)
-
-\ninepoint\noindent
-\\{set\_font}:\enspace{\bf begin}
-\\{print}({\tt\char`\"select\]font\]\char`\"}); \
-\\{slow\_print}(\\{font\_name}[\\{chr\_code}]);
-
-\bugonpage B514, line 9 (1/11/92)
-
-\ninepoint\noindent\hskip20pt
-$\\{set\_box\_allowed}\gets\\{false}$; \
-\\{prefixed\_command}; \
-$\\{set\_box\_allowed}\gets\\{true}$;
-
-\bugonpage B515, line 19 (9/19/91)
-
-\ninepoint\noindent\hskip10pt
-\\{slow\_print}($s$); \ \\{update\_terminal};
-
-\bugonpage B516, line 2 (9/19/91)
-
-\ninepoint\noindent\hskip10pt
-{\bf begin} \\{print\_err}({\tt\char`\"\char`\"}); \
- \\{slow\_print}($s$);
-
-\bugonpage B531, lines 19 and 20 (9/19/91)
-
-\ninepoint\noindent\hskip10pt
-\\{print\_nl}({\tt\char`\"Beginning\]to\]dump\]on\]file\]\char`\"}; \
-\\{slow\_print}(\\{w\_make\_name\_string}(\\{fmt\_file})); \
-\\{flush\_string};\par\noindent\hskip10pt
-\\{print\_nl}({\tt\char`\"\char`\"}); \
-\\{slow\_print}(\\{format\_ident})
-
-\bugonpage B533, line 29 (9/19/91)
-
-\ninepoint\noindent\hskip30pt
-{\bf begin} \\{print\_nl}({\tt\char`\"Transcript\]written\]on\]\char`\"}); \
-\\{slow\_print}(\\{log\_name}); \
-\\{print\_char}({\tt\char`\".\char`\"});
-
-\bugonpage B538, line 13 (9/19/91)
-
-\ninepoint\noindent
-10:\enspace\\{slow\_print}($n$);
-
-\bugonpage B577, left column (12/23/91)
-
-\eightpoint\noindent[Add 798 to the index entries for `system dependencies'.]
-
- % volume C
-\hsize=29pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-
-\bugonpage C262, line 15 (3/26/91)
-
-\ninepoint\noindent
-|string base_name, base_version; base_name="plain"; base_version="2.7";|
-
-\bugonpage C271, line 17 from the bottom (3/26/91)
-
-\ninepoint\noindent
-| currentpen_path shifted (z.t_) withpen penspeck enddef;|
-
-\bugonpage C347, Bront''e entry (1/29/91)
-
-\eightpoint\noindent
-[The accent was clobbered; her name should, of course, be Bront\"e.
-Fix the entries for D\"urer, M\"obius, and Stravinsky in the same way.]
-
-\bugonpage C348, left column (1/11/92)
-
-\eightpoint\indent
-compound statement, $\underline{155}$, 217.
-
-\bugonpage C353, right column (1/11/92)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt numeric}, 55, $\underline{56}$, {\it65}, 88.
-
-\bugonpage C354, miscellaneous entries in both columns (1/11/92)
-
-\eightpoint
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt openwindow}, $\underline{191}$--$\underline{193}$, 220, {\it277},
- {\it312--313}.
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt or}, {\it65}, $\underline{170}$, 210, 237, 288--289.
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt pair}, 55, $\underline{56}$, 65.
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt path}, 55, $\underline{56}$, 171.
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt pen}, 55, $\underline{56}$, {\it65}, 170.
-\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt picture}, 55, $\underline{56}$, {\it114}.
-
-\bugonpage C356, right column (1/11/92)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt string}, 55, $\underline{56}$, 69.
-
-\bugonpage C357, right column (1/11/92)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt transform}, 55, $\underline{56}$, 57, 141--143, {\it160}, 266.
-
- % Volume D
-\hsize=35pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage D2, last line of section 2 (1/24/92)
-
-\ninepoint\noindent\hskip10pt
-{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]METAFONT,\]Version\]2.71\char'23}\quad
-$\{\,$printed when \MF\ starts$\,\}$
-
-\bugonpage D102, line 15 from the bottom (11/1/91)
-
-\tenpoint\noindent
-Then
-$\\{eq\_type}(h(x))=\\{tag\_token}$ and $\\{equiv}(h(x))=p$,
-where $p$~is a two-word value
-node with\cutpar
-
-\bugonpage D188, lines 16 and 17 (1/24/92)
-
-\tenpoint\noindent
-errors. Our subroutines also obey the identity $t[a,b]+t[b,a]=a+b$.
-
-\bugonpage D190, new copy before bottom four lines (1/24/92)
-
-\ninepoint\noindent\hskip10pt
-{\bf if\/} $\\{x\_coord}(r)<\\{x\_coord}(\\{pp})$ {\bf then}
- $\\{x\_coord}(r)\gets\\{x\_coord}(\\{pp})$\par\noindent\hskip10pt
-{\bf else if\/} $\\{x\_coord}(r)>\\{dest\_x}$ {\bf then}
- $\\{x\_coord}(r)\gets\\{dest\_x}$;\par\noindent\hskip10pt
-{\bf if\/} $\\{left\_x}(r)>\\{x\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
-{\bf begin} $\\{left\_x}(r)\gets\\{x\_coord}(r)$; \
-{\bf if\/} $\\{right\_x}(\\{pp})>\\{x\_coord}(r)$ {\bf then}
-$\\{right\_x}(\\{pp})\gets\\{x\_coord}(r)$; \ {\bf end};\par\noindent\hskip10pt
-{\bf if\/} $\\{right\_x}(r)<\\{x\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
-{\bf begin} $\\{right\_x}(r)\gets\\{x\_coord}(r)$; \
-{\bf if\/} $\\{left\_x}(\\{qq})<\\{x\_coord}(r)$ {\bf then}
-$\\{left\_x}(\\{qq})\gets\\{x\_coord}(r)$; \ {\bf end};
-
-\bugonpage D191, new copy before bottom two lines of section 416 (1/24/92)
-
-\ninepoint\noindent\hskip10pt
-{\bf if\/} $\\{x\_coord}(s)<\\{x\_coord}(r)$ {\bf then}
- $\\{x\_coord}(s)\gets\\{x\_coord}(r)$\par\noindent\hskip10pt
-{\bf else if\/} $\\{x\_coord}(s)>\\{dest\_x}$ {\bf then}
- $\\{x\_coord}(s)\gets\\{dest\_x}$;\par\noindent\hskip10pt
-{\bf if\/} $\\{left\_x}(s)>\\{x\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
-{\bf begin} $\\{left\_x}(s)\gets\\{x\_coord}(s)$; \
-{\bf if\/} $\\{right\_x}(r)>\\{x\_coord}(s)$ {\bf then}
-$\\{right\_x}(r)\gets\\{x\_coord}(s)$; \ {\bf end};\par\noindent\hskip10pt
-{\bf if\/} $\\{right\_x}(s)<\\{x\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
-{\bf begin} $\\{right\_x}(s)\gets\\{x\_coord}(s)$; \
-{\bf if\/} $\\{left\_x}(\\{qq})<\\{x\_coord}(s)$ {\bf then}
-$\\{left\_x}(\\{qq})\gets\\{x\_coord}(s)$; \ {\bf end};
-
-\bugonpage D194, lines 4 and 5 (1/24/92)
-
-\tenpoint\noindent[Delete those two lines; I no longer believe that the
-assertion has been proved (although it might be true).]
-
-\bugonpage D194, lines 7--13 of section 424 (1/24/92)
-
-\ninepoint\noindent\hskip10pt
-{\bf if\/} $\\{y\_coord}(r)<\\{y\_coord}(p)$ {\bf then}
- $\\{y\_coord}(r)\gets\\{y\_coord}(p)$\par\noindent\hskip10pt
-{\bf else if\/} $\\{y\_coord}(r)>\\{dest\_y}$ {\bf then}
- $\\{y\_coord}(r)\gets\\{dest\_y}$;\par\noindent\hskip10pt
-{\bf if\/} $\\{x\_coord}(p)+\\{y\_coord}(r)>\\{dest\_x}+\\{dest\_y}$
-{\bf then} $\\{y\_coord}(r)\gets\\{dest\_x}+\\{dest\_y}-\\{x\_coord}(p)$;\par
-\noindent\hskip10pt
-{\bf if\/} $\\{left\_y}(r)>\\{y\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
-{\bf begin} $\\{left\_y}(r)\gets\\{y\_coord}(r)$; \
-{\bf if\/} $\\{right\_y}(p)>\\{y\_coord}(r)$ {\bf then}
-$\\{right\_y}(p)\gets\\{y\_coord}(r)$; \ {\bf end};\par\noindent\hskip10pt
-{\bf if\/} $\\{right\_y}(r)<\\{y\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
-{\bf begin} $\\{right\_y}(r)\gets\\{y\_coord}(r)$; \
-{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(r)$ {\bf then}
-$\\{left\_y}(q)\gets\\{y\_coord}(r)$; \ {\bf end};
-
-\bugonpage D194, lines 8--11 from the bottom (1/24/92)
-
-\ninepoint\noindent\hskip10pt
-{\bf if\/} $\\{right\_y}(r)<\\{y\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
-{\bf begin} $\\{right\_y}(r)\gets\\{y\_coord}(r)$; \
-{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(r)$ {\bf then}
-$\\{left\_y}(q)\gets\\{y\_coord}(r)$; \ {\bf end};
-
-\bugonpage D195, lines 3--9 of section 425 (1/24/92)
-
-\ninepoint\noindent\hskip10pt
-{\bf if\/} $\\{y\_coord}(s)<\\{y\_coord}(r)$ {\bf then}
- $\\{y\_coord}(s)\gets\\{y\_coord}(r)$\par\noindent\hskip10pt
-{\bf else if\/} $\\{y\_coord}(s)>\\{dest\_y}$ {\bf then}
- $\\{y\_coord}(s)\gets\\{dest\_y}$;\par\noindent\hskip10pt
-{\bf if\/} $\\{x\_coord}(r)+\\{y\_coord}(s)>\\{dest\_x}+\\{dest\_y}$
-{\bf then} $\\{y\_coord}(s)\gets\\{dest\_x}+\\{dest\_y}-\\{x\_coord}(r)$;\par
-\noindent\hskip10pt
-{\bf if\/} $\\{left\_y}(s)>\\{y\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
-{\bf begin} $\\{left\_y}(s)\gets\\{y\_coord}(s)$; \
-{\bf if\/} $\\{right\_y}(r)>\\{y\_coord}(s)$ {\bf then}
-$\\{right\_y}(r)\gets\\{y\_coord}(s)$; \ {\bf end};\par\noindent\hskip10pt
-{\bf if\/} $\\{right\_y}(s)<\\{y\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
-{\bf begin} $\\{right\_y}(s)\gets\\{y\_coord}(s)$; \
-{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(s)$ {\bf then}
-$\\{left\_y}(q)\gets\\{y\_coord}(s)$; \ {\bf end};
-
-\bugonpage D195, lines 3--7 from the bottom if section 425 (1/24/92)
-
-\ninepoint\noindent\hskip10pt
-{\bf if\/} $\\{right\_y}(s)<\\{y\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
-{\bf begin} $\\{right\_y}(s)\gets\\{y\_coord}(s)$; \
-{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(s)$ {\bf then}
-$\\{left\_y}(q)\gets\\{y\_coord}(s)$; \ {\bf end};
-
-\bugonpage D289, lines 9 and 10 (11/1/91)
-
-\ninepoint\noindent\hskip20pt
-$p\gets\\{dep\_list}(p)$; \ $r\gets\\{inf\_val}$;\par\noindent\hskip20pt
-{\bf repeat if\/} $\\{value}(\\{info}(p))\ge\\{value}(r)$ {\bf then}\par
-
-\bugonpage D486, line 18 (11/1/91)
-
-\tenpoint\noindent
-The \\{label\_loc}
-and \\{label\_char} arrays have been set up to record all the
-starting addresses; we have\cutpar
-
- % volume E
-\hsize=29pc
-\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
-
-
- \bye
-
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.six b/Master/texmf-dist/source/generic/knuth/errata/errata.six
deleted file mode 100644
index ad7444d8600..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.six
+++ /dev/null
@@ -1,528 +0,0 @@
-% Bugs (sigh) in Computers \& Typesetting
-
-\input manmac
-\font\sltt=cmsltt10
-\font\niness=cmss9
-\font\ninessi=cmssi9
-\proofmodefalse
-\raggedbottom
-\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\today{\number\day\
- \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}
-
-\def\cutpar{{\parfillskip=0pt\par}}
-
-\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1990}}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
-\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
-\newcount\nn
-\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
-\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
-
-\tenpoint
-\noindent This is a list of all corrections made to {\sl Computers \&
-Typesetting}, Volumes A,~C, and E\null, between 30 September 1989 (when
-the revisions for \TeX\ Version 3.0 and \MF\ Version 2.0 were made) and
-December 31, 1990.
-Corrections made to the softcover version of {\sl The \TeX book\/} are
-the same as corrections to Volume~A\null. Corrections to the softcover
-version of {\sl The \slMF\kern1ptbook\/} are the same as corrections
-to Volume~C\null. Some of the corrections below have already been made in
-reprintings of the books. Hundreds of changes, too many to list here,
-have been made to Volumes B~and~D because of the upgrades to \TeX\ and
-\MF\null. Readers who need up-to-date information on the \TeX\ and
-\MF\ programs should refer to the |WEB| source files until new
-printings of Volumes B~and~D are issued. \looseness=-1
-
- % volume A
-
-\bugonpage A99, line 4 from the bottom (2/22/90)
-
-\ninepoint\indent
-to be chosen because there was no feasible
-way to keep total demerits small.
-
-\bugonpage A124, lines 18--21 (9/5/90)
-
-\ninepoint\noindent
-Floating insertions can be accommodated
-as a special case of split insertions, by making each floating topinsert
-start with a small penalty, and by having
-zero as the associated |\floatingpenalty|; non-floating insertions
-like footnotes are accommodated by associating larger penalties with
-split insertions (see Appendix~B).
-
-\bugonpage A137, lines 2 and 3 from the bottom (11/9/90)
-
-{\eightssi
-\rightline{and you shouldn't even be reading this manual,}
-\rightline{which is undoubtedly all English to you.}
-}
-
-\bugonpage A141, line 15 from the bottom (10/18/90)
-
-\tenpoint\noindent
-Thus if you type `|$1\over2$|' (in a text) you get $1\over2$, namely style
-$S$ over style~$S'$;\cutpar
-
-\bugonpage A156, line 2 (11/18/89)
-
-\ninepoint
-Commands like |\mathchardef\alpha="010B| are used in
-Appendix~B to define\cutpar
-
-\bugonpage A165, lines 2--3 (8/13/90)
-
-\ninepoint
- Type the formula $\bf\bar x^{\rm T}Mx={\rm0}\iff x=0$,
-using as few keystrokes as possible.
-\ (The first `0' is roman, the second is bold. The superscript `T' is roman.)
-
-\bugonpage A171, lines 24--26 (3/13/90)
-
-\ninepoint\noindent
-formula produces a result exactly equivalent to
-`|\left(|\<subformula>|\right)|', when the \<subformula> doesn't end
-with Punct, except that the {delimiters} are forced to
-be of the |\big| size regardless of the height and depth of the subformula.
-
-\bugonpage A193, lines 16--18 (12/2/89)
-
-\ninepoint\noindent
-line if you insert
-`^|\noalign||{|^|\break||}|'
-after the |\cr| for that line. You can prohibit {\sl all\/} breaks
-in an |\eqalignno| if you set ^|\interdisplaylinepenalty||=10000|; or you
-can enclose the whole works in a ^|\vbox|:
-
-\bugonpage A233, bottom 9 lines, and top three on next page (12/2/89)
-
-\danger The |\+| macro in Appendix~B works
-by putting the \<text> for each column that's followed by~|&|
-into an hbox as follows:
-\begindisplay
-|\hbox to |\<column width>|{|\<text>|\hss}|
-\enddisplay
-The ^|\hss| means that the text is normally flush left, and that it can
-extend to the right of its box. Since |\hfill| is ``more infinite'' than
-|\hss| in its ability to stretch, it has the effect of right-justifying or
-centering as stated above. Note that |\hfill| doesn't shrink, but |\hss|
-does; if the text doesn't fit in its column, it will stick out at the right.
-You could cancel the shrinkability of |\hss| by adding ^|\hfilneg|; then
-an oversize text would produce an overfull box.
-You could also center some text by putting `|\hss|' before it and just
-`|&|' after it; in that case the text would be allowed to extend to the
-left and right of its column.
- The last column of a |\+|~line (i.e., the column entry that is
-followed by |\cr|) is treated differently: The
-\<text> is simply put into an hbox with its natural~width.\looseness=-1
-
-\bugonpage A254, line 5 from the bottom (10/5/89)
-
-\ninepoint\noindent
-|\vsize| hasn't changed, and if all insertions have been
-held in place, the same page break\cutpar
-
-\bugonpage A286, lines 30--32 (3/13/90)
-
-\ninepoint\noindent
-reading and expanding this \cstok{par}
-token, \TeX\ will see the \<vertical command> token again. \ (The current
-meaning of the control sequence ^|\par| will be used; \cstok{par} might no
-longer stand for \TeX's |\par| primitive.)
-
-\bugonpage A290, lines 12--13 (3/24/90)
-
-\ninepoint\noindent
-simply a single Ord atom without subscripts or superscripts,
-or an Acc whose nucleus is an Ord, the
-enclosing braces are effectively removed.
-
-\bugonpage A317, line 17 (5/17/90)
-
-\ninepoint
-|\pretolerance=9999 \tolerance=9999 \parindent=0pt|
-
-\bugonpage A321, lines 16--17 (8/13/90)
-
-\ninepoint\noindent
-\hbox to\parindent{\bf\hss18.6.\enspace}\ignorespaces
-|$\bf\bar x^{\rm T}Mx={\rm0}\iff x=0$|. \ (If you typed a space between
-|\rm| and~|0|, you wasted a keystroke; but don't feel guilty about it.)
-
-\bugonpage A340, nonblank line 11 (3/13/90)
-
-\tenpoint\noindent
-|\topglue 1in % This makes an inch of blank space (1in=2.54cm).|
-
-\bugonpage A342, line 6 (3/13/90)
-
-\tenpoint\noindent
-|\topglue| but not |\hglue|. It does not
-illustrate |\raggedright| setting of para-\cutpar
-
-\bugonpage A346, lines 20--21 (12/3/89)
-
-\ninepoint\noindent
-streams used by ^|\read| and ^|\write|, to math
-^{families} used by ^|\fam|, to sets of hyphenation rules used by
-^|\language|, and to insertions (which require
-^|\box|, ^|\count|, ^|\dimen|, and ^|\skip| registers all having the
-same number).
-
-\bugonpage A346, line 20 from the bottom (12/3/89)
-
-\ninepoint\noindent
-manent value. These macros use registers
-|\count10| through |\count20| to hold the\cutpar
-
-\bugonpage A346, lines 8--13 from the bottom (12/3/89)
-
-\ninepoint\noindent
-number was allocated. The inside story of how allocation is actually performed
-should be irrelevant when the allocation macros are used at a higher level;
-you mustn't assume that |plain.tex| really does allocation in any
-particular way.
-\beginlines
-|\count10=22 % this counter allocates \count registers 23, 24, 25, ...|
-\endgroup
-
-\bugonpage A347, lines 2--5 (12/3/89)
-
-\ninepoint{\parindent=0pt
-|\count19=0 % this counter allocates language codes 1, 2, 3, ...|\parbreak
-|\count20=255 % this counter allocates insertions 254, 253, 252, ...|\parbreak
-|\countdef\insc@unt=20 % nickname for the insertion counter|\parbreak
-|\countdef\allocationnumber=21 % the most recent allocation|\parbreak
-|\countdef|^|\m@ne||=22 \m@ne=-1 % a handy constant|\par}
-
-\bugonpage A347, new line after former line 17 (12/3/89)
-
-\ninepoint\noindent
-|\outer\def|^|\newlanguage||{\alloc@9\language\chardef\@cclvi}|
-
-\bugonpage A352, new line before line 6 from the bottom (3/13/90)
-
-\ninepoint\noindent
-|\def\topglue{\nointerlineskip \vglue-\topskip \vglue} % for top of page|
-
-\bugonpage A355, line 8 from the bottom (12/3/89)
-
-\ninepoint\noindent
-| \noindent{\bf#1.\enspace}{\sl#2\par}%|
-
-\bugonpage A363, lines 8--9 from the bottom (12/8/89)
-
-{\ninepoint\parindent=0pt
-| \if@mid \dimen@=\ht0 \advance\dimen@ by\dp\z@ |%
- |\advance\dimen@ by12\p@|\parbreak%
-| \advance\dimen@ by\pagetotal \advance\dimen@ by-\pageshrink|
-\par}
-
-\bugonpage A375, line 27 (10/30/89)
-
-\ninepoint\noindent
-depending on whether or not |\t|~contains
-an asterisk. \ (Do you see why?) \ And here's\cutpar
-
-\bugonpage A393, lines 3--5 from the bottom (12/3/89)
-
-\ninepoint
-|\hskip-.17em plus-3em minus.11em|\par
-|\vadjust{}\penalty10000|\par
-|\leaders\copy\dbox\hskip3.3\wd\dbox plus1fil minus.3\wd\dbox|
-
-\bugonpage A444, line 4 (3/13/90)
-
-\ninepoint\noindent
-Shift box~$x$ down by ${1\over2}\bigl(h(x)-d(x)\bigr)
--a$, where $a=\sigma_{22}$, so that the operator character\cutpar
-
-\bugonpage A450, line 8 (12/3/89)
-
-\def\\#1{$_{\kern\scriptspace#1}$}
-\ninepoint\indent
-{\qquad\tt\\0h\\0e\\0n\\5a\\0t\\0 \\1n\\0a\\0 \\0n\\2a\\0t\\0
- \\1t\\0i\\0o\\0 \\2i\\0o\\0 \\0o\\2n\\0}
-
-\bugonpage A450, line 14 (12/3/89)
-
-\ninepoint
-{\tt.\\0h\\0y$_3$p\\0h\\0e\\2n\\5a\\4t\\2i\\0o\\2n\\0.}
-
-\bugonpage A450, lines 19 and 20 (12/3/89)
-
-\ninepoint\vskip-10pt
-\begindisplay
-\tt\\0o\\2n\\0
-\\0o\\0n\\1c\\0
-\\1c\\0a\\0
-\\1n\\0a\\0
-\\0n\\2a\\0t\\0
-\\1t\\0i\\0o\\0
-\\2i\\0o\\0
-\\0o\\2n\\0
-\enddisplay
-and this yields `{\tt\\0c\\0o\\2n\\1c\\0a\\0t\\0e\\1n\\2a\\1t\\2i\\0o\\2n\\0}',
-i.e., `|con-cate-na-tion|'.
-
-\bugonpage A455, last lines before the quotes (11/30/89)
-
-\ninepoint\noindent
-sit yourself (even in restricted horizontal mode) by saying
-^|\setlanguage|\<number>;\break
- this changes the current language but it
-does not change |\language|. Each what-\break
-sit records the current
-|\lefthyphenmin| and |\righthyphenmin|.
-
-\bugonpage A467, right column (12/3/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\hfilneg|, 72, 100, 233, 283, 285, 290, 397.
-
-\bugonpage A468, right column (12/2/89)
-
-\eightpoint
-|\interdisplaylinepenalty|, {\it193}, 349, 362.
-
-\bugonpage A469, left column (12/3/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\language| (hyphenation method), 273, 346, $\underline{455}$.
-
-\bugonpage A469, right column (10/30/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\lefthyphenmin|, 273, {\it364}, $\underline{454}$, 455.
-
-\bugonpage A472, left column (12/3/89)
-
-\eightpoint
-|\newlanguage|, 346, $\underline{347}$.
-
-\bugonpage A476, left column (10/30/89)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-|\righthyphenmin|, 273, {\it364}, $\underline{454}$, 455.
-
-\bugonpage A479, new entry (3/13/90)
-
-\eightpoint
-|\topglue|, {\it340}, $\underline{352}$.
-
-\bugonpage A480, right column (3/13/90)
-
-\eightpoint
-|\vglue|, $\underline{352}$, {\it408}.
-
-\bugonpage A483, the Providence lines (10/8/89)
-
-\noindent[Change the first one to
-\begintt
-Providence RI 02940\kern.05em-9506, USA.
-\endtt
-Then the second one will be
-\begindisplay
-Providence RI 02940\kern.05em-9506, USA.
-\enddisplay
-The second line will also appear on page C361.]
-
- % volume B
-\hsize=35pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-
- % volume C
-\hsize=29pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-
-\bugonpage C11, replacement for second quotation at bottom of page (9/27/90)
-
-\begingroup
- \eightpoint \let\tt=\ninett
- \baselineskip 10pt
- \parfillskip \z@
- \interlinepenalty 10000
- \leftskip \z@ plus 40pc minus \parindent
- \let\rm=\eightss \let\sl=\eightssi
- \everypar{\sl}
- \def\par{\ifhmode\/\endgraf\fi}\obeylines
-To anyone who has lived in a modern American city (except Boston)
-at least one of the underlying ideas of ^{Descartes}' analytic geometry
-will seem ridiculously evident. Yet, as remarked,
-it took mathematicians all of two thousand years
-to arrive at this simple thing.
-\author ERIC TEMPLE ^{BELL}, {\sl Mathematics: Queen and Servant of %
- Science\/} (1951) % p123
-
-\endgroup
-
-\bugonpage C220, top line (3/13/90)
-
-\ninepoint\noindent
-modes you get into by hitting
-`|S|', `|R|', or `|Q|', respectively, in response to error messages\cutpar
-
-\bugonpage C252, line 16 (3/13/90)
-
-\ninepoint\indent
-| for i:=1 upto n_windows: display blankpicture inwindow i; endfor|
-
-\bugonpage C262, lines 19--21 (11/9/90)
-
-\ninepoint\noindent
-for commonly occurring idioms.
-For example, `{\bf stop} |"hello"|' displays `|hello|' on the terminal and waits
-until \<return> is typed.
-\beginlines
-|def |^|upto|| = step 1 until enddef; def |^|downto|| = step -1 until enddef;|
-\endgroup
-
-\bugonpage C264, lines 4--6 from the bottom (3/24/90)
-
-\ninepoint\noindent
-|vardef |^|counterclockwise|| primary c =|\par\noindent
-| if turningcheck>0:|\par\noindent
-| interim |^|autorounding||:=0;|\par\noindent
-| if |^|turningnumber|| c <= 0: reverse fi fi c enddef;|
-
-\bugonpage C306, line 6 (3/13/90)
-
-\ninepoint\noindent
-| ligtable "'": "'" =: oct"042", % close quotes|
-
-\bugonpage C309, second line from bottom (11/18/89)
-
-\ninepoint\noindent
-| define_whole_vertical_blacker_pixels(vair,slab,| $\cdots$ |);|
-
-\bugonpage C315, line 9 from the bottom (1/2/90)
-
-\ninepoint\noindent
-units of printer's points):
-
-\bugonpage C329, line 25 (12/29/90)
-
-\ninepoint\noindent
-which can be used to specify a nonstandard file area
-or directory name for the gray\cutpar
-
-\bugonpage C337, line 4 from the bottom (1/7/90)
-
-\ninepoint\noindent
-|\def\startfont{\font\testfont=\fontname \spaceskip=0pt|
-
-\bugonpage C347, left column (9/27/90)
-
-\eightpoint\noindent
-Bell, Eric Temple, 11.
-
-\bugonpage C349, left column (9/27/90)
-
-\eightpoint\noindent
-Descartes, Ren\'e, 6, 11, 19.
-
-\bugonpage C356, right column (9/27/90)
-
-\eightpoint\noindent
-[remove the entry for Rex Stout.]
-
-\bugonpage C358, right column (9/27/90)
-
-\eightpoint\noindent
-[remove the entry for Nero Wolfe.]
-
- % Volume D
-\hsize=35pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
- % volume E
-\hsize=29pc
-\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
-
-\bugonpage Exiii, replacement for last four lines (4/30/90)
-
-\textindent{\bull}``AMS Euler---A new typeface for mathematics''
- by Donald~E. Knuth
-and Hermann Zapf, {\sl Scholarly Publishing\/ \bf21} (1989), 131--157.
-\ {\it The story of a design project that helps bridge the gulf between
-mathematics and art.}
-
-\smallskip
-\textindent{\bull}``Meta-Marks:
- Preliminary studies for a Pandora's Box of shapes''
-by Neenie Billawala, Stanford Computer Science report 1259 (Stanford,
-California, July 1989), 132~pp.
-\ {\it Lavishly illus\-trated studies in parameter variation,
-leading to the design of a new typeface called Pandora.}
-
-
-
-\bugonpage E325, line 13 (3/13/90)
-
-\ninepoint\noindent
-{\bf if} \\{serifs}: $x_{3r}=\max(x_{1r},{\rm hround}(x_1+.5\\{dot\_diam}
- -.2\\{jut})-.5\\{tiny})$\par\noindent
-{\bf else}: $x_3=x_1-.5$ {\bf fi};
-
-\bugonpage E483, line 4 (3/13/90)
-
-\ninepoint
-\rightline{\% Character codes \oct{000}--\oct{100} and \oct{133}--\oct{177}
- are generated.}
-
-\bugonpage E544, line 5 (3/13/90)
-
-\ninepoint\noindent
-\hskip 3em\vdots\hskip2em\raise2pt\hbox{(the rest of the
- program for `$\gamma$' in |greekl| comes here)}
-
-\bugonpage E557, line 9 (3/13/90)
-
-\ninepoint
-\rightline{\sl`Nevermore---Ah nevermore.'\thinspace''}
-
-\bugonpage E558, line 21 (3/13/90)
-
-\eightpoint\noindent
-|Clasp a rare and radiant maiden whom the angels name Lenore."|
-
-\bugonpage E570, lines 27--28 look better with proper skewchars (3/13/90)
-
-\begingroup
-\tenpoint\bf
-\textfont0=\tenbf \scriptfont0=\sevenbf
-\font\boldi=cmmib10 \font\boldsy=cmbsy10
-\skewchar\boldi='177 \skewchar\boldsy='60
-\textfont1=\boldi
-\textfont2=\boldsy
-\noindent Here's some bold 10-point math:
-${\hat A}^\Gamma_0
-+{\check B}^\Delta_1
--{\tilde C}^\Theta_2
-\times{\acute D}^\Lambda_3
-/{\grave E}^\Xi_4
-\oplus{\dot F}^\Pi_5
-\ominus{\ddot G}^\Sigma_6
-\otimes{\breve H}^\Phi_7
-\oslash{\bar I}^\Psi_8
-\odot{\vec J}^{\,\Omega}_9$.
-\endgroup
-
- \bye
-
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.ten b/Master/texmf-dist/source/generic/knuth/errata/errata.ten
deleted file mode 100644
index 9efa2a3e503..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.ten
+++ /dev/null
@@ -1,1289 +0,0 @@
-% Bugs (sigh) in Computers \& Typesetting
-
-\input manmac
-\def\curl{\mathop{\rm curl}}
-\def\cycle{{\rm cycle}}\indent
-\def\dashto{\mathrel{\hbox{-\thinspace-\kern-.05em}}}
-\font\sltt=cmsltt10
-\font\niness=cmss9
-\font\ninessi=cmssi9
-\proofmodefalse
-\raggedbottom
-\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\today{\number\day\
- \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}
-
-\def\cutpar{{\parfillskip=0pt\par}}
-
-\def\rhead{Bugs in {\tensl Computers \& Typesetting, 2000}}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
-\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
-\newcount\nn
-\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
-\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
-
-\tenpoint
-\noindent This is a list of all substantial corrections made to {\sl Computers
-\& Typesetting\/} from the mid-1990s until the first ``Millennium edition'' was
-published at the end of the year 2000.
-Corrections made to the softcover version of {\sl The \TeX book\/} are
-the same as corrections to Volume~A\null. Corrections to the softcover
-version of {\sl The \slMF\kern1ptbook\/} are the same as corrections
-to Volume~C\null. Changes to the mini-indexes
-and master indexes of Volumes B, D, and~E are not shown here unless they are
-not obviously derivable from what has been shown.
-\looseness=-1
-
- % volume A
-
-\bugonpage A3, line 14 {(in certain printings only)} (9/6/00)
-
-\tenpoint\noindent
-that
-looks like {\tt\char'15} or {\tt\char'23}.
-
-\bugonpage A8, lines 14 and 15 (9/6/00)
-
-\tenpoint\noindent
-that is not to be ignored. Notice that |\|\] is a control
-sequence of the second kind, namely a control symbol, since there is a
-single nonletter (\]) following\cutpar
-
-\bugonpage A43, line $-17$ (8/4/98)
-
-\tenpoint\noindent
-into your manuscript, if the |b|-key on your keyboard is broken. \
-(An optional\cutpar
-
-\bugonpage A88, lines 14, 16, 18, and 21 (8/12/00)
-
-\tenpoint\noindent
-[Insert two blank spaces between `{\tt blank space}' and `{\tt\char`\}}']
-
-\bugonpage A96, lines 9 and 10 (8/6/98)
-
-\ninepoint\indent
-Before 1998, some ^{German} words changed their spelling
-when split between lines. For example, `backen' became `bak-ken'
-and `Bettuch' sometimes became `Bett-\cutpar
-
-\bugonpage A107, line 2 (8/5/98)
-
-\ninepoint
-\line{\indent\spaceskip=.4em minus.35em
-ually, you might be tempted to set
-|\tolerance=10000|; this allows arbitrarily bad}
-
-\bugonpage A115, line $-19$ (8/5/98)
-
-\ninepoint\noindent
-If there's no room for such an insertion on this page, \TeX\
-will insert it at the top of\cutpar
-
-\bugonpage A119, line 15 (8/5/98)
-
-\ninepoint\noindent
-of\/ |\dimen3|, assuming that |\dimen3| is positive.
-
-\bugonpage A182, middle line of the displayed commutative diagram (12/3/99)
-
-\ninepoint
-\def\mapright#1{\smash{
- \mathop{\longrightarrow}\limits^{#1}}}
-$$\matrix{
- 0&\mapright{}&{\cal O}_C&\mapright\pi&
- \pi_*{\cal O}_D&\mapright\delta&
- R^1f_*{\cal O}_V(-D)&\mapright{}&0\cr}$$
-
-\bugonpage A233, line $-2$ (8/5/98)
-
-\ninepoint\noindent
-could avoid this by adding |\hskip| |0pt| |minus-1fil|; then
-an oversize text would\cutpar
-
-\bugonpage A277, line 1 (8/5/98)
-
-\ninepoint\indent
-\<code assignment>\is\<codename>\<8-bit number>\<equals>\<number>
-
-\bugonpage A277, line $-11$ (8/5/98)
-
-\ninepoint\noindent
-[Move this line, which defines \<at clause>, up to the top of the page.]
-
-\bugonpage A289, line 24 (2/3/97)
-
-\ninepoint\indent
-\<math field>\is\<filler>\<math symbol>\alt\<filler>|{|\<math mode material>|}|
-
-\bugonpage A309, line 3 (8/12/97)
-
-\ninepoint
-\ansno8.4:
-|$|$_{3}$ |x|$_{11}$ |^|$_7$ |2|$_{12}$ |$|$_{3}$ |~|$_{13}$ \]$_{10}$
-\cstok{TeX} |b|$_{11}$ |v|$_{11}$ \]$_{10}$. The final space comes from
-the\cutpar
-
-\bugonpage A313, line 24 (9/19/00)
-
-\ninepoint\noindent
-stands for `|\par\vfill...|', so the next three commands are
-
-\bugonpage A313, line 27 (9/19/00)
-
-\ninepoint\indent
-|{vertical mode: \par}|
-
-\bugonpage A318, lines 12 and 13 (8/5/98)
-
-\ninepoint\noindent\hbox to\parindent{\hfil\bf15.8.\enspace}%
-|\advance\dimen2 by\ifnum\dimen2<0 -\fi.5\dimen3|\parbreak
-|\divide\dimen2 by\dimen3 \multiply\dimen2 by\dimen3|
-
-\bugonpage A325, line 22 (12/3/99)
-
-\ninepoint
-| 0&\mapright{}&{\cal O}_C&\mapright\pi&|
-
-\bugonpage A337, line 3 from the bottom (9/6/00)
-
-\rightline{\eightss DONALD E. KNUTH, {\eightssi The \TeX book\/} (1984)}
-
-\bugonpage A348, lines 14--16 (8/6/98)
-
-\ninepoint\noindent
-| \def\@if#1{true}{\let#1=\iftrue}%|\par\noindent
-| \expandafter\expandafter\expandafter|\par\noindent
-| \def\@if#1{false}{\let#1=\iffalse}%|\par\noindent
-
-\bugonpage A356, line 21 (8/6/98)
-
-\ninepoint\noindent
-|\def\AA{\leavevmode\setbox0=\hbox{!}\dimen@=\ht0 \advance\dimen@ by-1ex|
-
-\bugonpage A356, lines 9--21 from the bottom (8/6/98)
-
-\ninepoint
-{\parindent=0pt
-|\def\S{\mathhexbox278} \def\P{\mathhexbox27B} \def\Orb{\mathhexbox20D}|\par
-\smallskip
-|\def\oalign#1{\leavevmode\vtop{\baselineskip0pt \lineskip.25ex|\par
-| \ialign{##\crcr#1\crcr}}} \def\o@lign{\lineskiplimit=0pt \oalign}|\par
-|\def\ooalign{\lineskiplimit=-\maxdimen \oalign} % chars over each other|\par
-|{\catcode`p=12 \catcode`t=12 \gdef\\#1pt{#1}} \let\getf@ctor=\\|\par
-|\def\sh@ft#1{\dimen@=#1 \kern\expandafter\getf@ctor\the\fontdimen1\font|\par
-| \dimen@} % kern by #1 times the current slant|\par
-|\def\d#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-1ex}.\hidewidth}}}|\par
-|\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-3ex}%|\par
-| \vbox to.2ex{\hbox{\char'26}\vss}\hidewidth}}}|\par
-|\def\c#1{{\setbox0=\hbox{#1}\ifdim\ht0=1ex \accent'30 #1%|\par
-| \else\ooalign{\unhbox0\crcr\hidewidth\char'30\hidewidth}\fi}}|\par
-|\def\copyright{{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr\Orb}}}|\par
-}
-
-\bugonpage A364, line 9 (8/9/98)
-
-\ninepoint\noindent
-|\def\makefootline{\baselineskip=24pt \lineskiplimit=0pt|\par\noindent
-| \line{\the\footline}}|
-
-
-\bugonpage A364, line 4 from the bottom (8/6/98)
-
-\ninepoint\noindent
-|\def\fmtversion{3.1415926} % identifies the current format|
-
-\bugonpage A447, bottom line (6/3/98)
-
-\rightline{\eightss--- JOHN SMITH, {\eightssi The Printer's Grammar\/}\enspace
- (1755)}
-
-\bugonpage A450, lines 11--13 (4/12/98)
-
-\def\\#1{$_{\kern\scriptspace#1}$}%
-\tenpoint\noindent
-between `|e|' and `|n|' there are five relevant values
-in this case (2~from {\tt\\0h\\0e\\2n\\0},
-0~from {\tt\\0h\\0e\\0n\\0a\\4},
-0~from {\tt\\0h\\0e\\0n\\5a\\0t\\0},
-1~from {\tt\\1n\\0a\\0},
-and 0~from {\tt\\0n\\2a\\0t\\0}); the maximum of these is~2.
-The result of all the maximizations is
-
-\bugonpage A453, line 6 (8/5/98)
-
-\ninepoint\noindent
-tion dictionary, except that plain \TeX\ blocks hyphens after the
-very first letter or be-\cutpar
-
-\bugonpage A458, left column (9/6/00)
-
-\eightpoint
-\leavevmode{\tt\rlap<\char`\_}, 45, 135, 368--369; {\sl see also\/} |\le|.\par
-\leavevmode{\tt\rlap/=}, 45, 135, 368--369; {\sl see also\/} |\ne|.\par
-\leavevmode{\tt\rlap>\char`\_}, 45, 135, 368--369; {\sl see also\/} |\ge|.
-
-\bugonpage A458, right column (7/5/99)
-
-\eightpoint
-{\tt\char'13} and {\tt\char'14}, 135, 343, 368--369, 429;\par
-al-Khw\^arizm\^\i, abu `Abd All\^ah Mu\d{h}ammad ibn M\^us\^a, 53.
-
-\bugonpage A464, right column (8/6/98)
-
-\eightpoint
-\newbox\astbox \setbox\astbox=\hbox to0pt{\hss\lower1pt\hbox{*}}
-\def\prim#1{\par\indent\copy\astbox{\tt\char`\\#1}}
-\prim{edef}, {\it215--216}, 275, {\it328}, {\it373--374}.
-
-\bugonpage A466, right column (8/8/98)
-
-\eightpoint
-|\getfactor|, {\it356}, $\underline{375}$, {\it398}.
-
-\bugonpage A467, right column (8/5/98)
-
-\eightpoint
-\prim{hfilneg}, 72, 100, 283, 285, 290, 397.
-
-\bugonpage A469, left column (8/5/98)
-
-\eightpoint
-italic type, 13--14, 100, 127, 165, 409, 428, 430.
-
-\bugonpage A469--A477, passim (5/13/98)
-
-\eightpoint\noindent
-Add page 272 to the index entries for |\lastskip|, |\pagedepth|,
-|\pagefilllstretch|,\hfil\break |\pagefillstretch|, |\pagefilstretch|,
-|\pagegoal|, |\pageshrink|, |\pagestretch|, |\pagetotal|,\hfil\break
-|\parshape|, |\prevdepth|, and |\spacefactor|.\par
-\smallskip\noindent Also change `369' to `370' in the index entries for
-|\lbrack|, |\lq|, |\rbrack|, |\rq|, |\sb|, and |\sp|.\par
-\smallskip\noindent Also change `Luckombe, Philip' to `Smith, John'.\par
-
-\bugonpage A472, right column (8/6/98)
-
-\eightpoint
-\prim{noexpand}, $\underline{209}$, $\underline{213}$, 215, 216,
- {\it377}, {\it424}.
-
-\bugonpage A473, left column (8/6/98)
-
-\eightpoint
-|\Orb| ( \Orb\ ), $\underline{356}$.
-
- % volume B
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage Bix, line 16 (1/16/00)
-
-\tenpoint\textindent{\bull}``Word hy-phen-a-tion by com-put-er''
-by Franklin Mark Liang, Stan-\cutpar
-
-\bugonpage Bxiv, line 13 (4/19/96)
-
-\tenpoint\noindent preprocessor converts these into numeric constants that are
-256 or more. This\cutpar
-
-\bugonpage Bxiv, line $-1$ (4/19/96)
-
-\ninepoint\noindent This file contains one line per string, starting with
-string number 256, then number 257,\cutpar
-
-\bugonpage Bxv, lines 10 and 11 (4/19/96)
-
-\ninepoint\noindent
-In this case, occurrences of |""| in the |WEB| program will be replaced by
-256; occurrences of |"This longer string"| will be replaced by 257.
-The symbol |@$| stands for the numeric\cutpar
-
-\hsize=35pc
-\bugonpage B2, line $-10$ (3/8/95)
-
-\def\RQ/{{\char'23}} % right quote in a string
-\ninepoint\noindent\quad
-{\bf define} $\\{banner}\equiv\hbox{\tt\RQ/This\]is\]TeX,\]%
- Version\]3.14159\RQ/}$\quad$\{\,$printed when \TeX\ starts$\,\}$
-
-\bugonpage B169, line 13 (9/22/95)
-
-\tenpoint\noindent
-something in a ``muskip'' register, or to one of the
-three parameters \hbox{\tt\char`\\thinmuskip},
-\hbox{\tt\char`\\medmuskip},\cutpar
-
-\bugonpage B221, line 9 (3/4/95)
-
-\ninepoint\noindent
-\quad{\bf define} $\\{non\_address}=0$\quad
-$\{\,$a spurious \\{bchar\_label}$\,\}$
-
-\bugonpage B221, line 17 (3/4/95)
-
-\ninepoint\noindent
-\\{font\_params}: {\bf array}[\\{internal\_font\_number}] {\bf of}
- \\{font\_index};\quad$\{\,$how many font parameters are present$\,\}$
-
-\bugonpage B256, insert new line 12 before the bottom (3/7/95)
-
-\ninepoint\noindent\qquad
-\\{glue\_temp}: \\{real};\quad $\{\,$glue value before rounding$\,\}$
-
-\bugonpage B258, line 11 before the bottom becomes four lines (3/7/95)
-
-\ninepoint\noindent
-{\tenbf 625.}\quad{\bf define} $\\{billion}\equiv
- \\{float\_constant}(1000000000)$\par\noindent
-{\bf define} $\\{vet\_glue}(\hbox{\tt\char`\#})\equiv
- \\{glue\_temp}\gets\hbox{\tt\char`\#}$;\par\noindent
-\qquad{\bf if\/} $\\{glue\_temp}>\\{billion}$
- {\bf then} $\\{glue\_temp}\gets\\{billion}$\par\noindent
-\qquad{\bf else if\/} $\\{glue\_temp}<-\\{billion}$
- {\bf then} $\\{glue\_temp}\gets-\\{billion}$\smallskip\noindent
-$\langle\,$Move right or output leaders{\sevenrm\kern.5em625}$\,\rangle\equiv$
-
-\bugonpage B258, lines 3--6 from the bottom (3/7/95)
-
-\ninepoint\noindent
-\qquad\qquad{\bf begin} $\\{vet\_glue}(\\{float}(\\{glue\_set}
- (\\{this\_box}))*\\{stretch}(g))$;\par\noindent
-\qquad\qquad$\\{rule\_wd}\gets\\{rule\_wd}+
- \\{round}(\\{glue\_temp})$;\par\noindent
-\qquad\qquad{\bf end};\par\noindent
-\qquad\quad{\bf end}\par\noindent
-\qquad{\bf else if\/} $\\{shrink\_order}(g)=\\{g\_order}$
- {\bf then}\par\noindent
-\qquad\quad{\bf begin} $\\{vet\_glue}(\\{float}(\\{glue\_set}
- (\\{this\_box}))*\\{shrink}(g))$;\par\noindent
-\qquad\quad$\\{rule\_wd}\gets\\{rule\_wd}-\\{round}(\\{glue\_temp})$;
-
-\bugonpage B260, line 13 from the bottom (6/26/93)
-
-\ninepoint
-\noindent\hskip10pt
-$\\{doing\_leaders}\gets\\{outer\_doing\_leaders}$; \
-$\\{dvi\_v}\gets\\{save\_v}$; \
-$\\{dvi\_h}\gets\\{save\_h}$; \
-$\\{cur\_v}\gets\\{base\_line}$;
-
-\bugonpage B261, insert new line after line 7 (3/7/95)
-
-\ninepoint\noindent\qquad
-\\{glue\_temp}: \\{real};\quad $\{\,$glue value before rounding$\,\}$
-
-\bugonpage B262, lines 3--6 from the bottom (3/7/95)
-
-\ninepoint\noindent
-\qquad\qquad{\bf begin} $\\{vet\_glue}(\\{float}(\\{glue\_set}
- (\\{this\_box}))*\\{stretch}(g))$;\par\noindent
-\qquad\qquad$\\{rule\_ht}\gets\\{rule\_ht}+
- \\{round}(\\{glue\_temp})$;\par\noindent
-\qquad\qquad{\bf end};\par\noindent
-\qquad\quad{\bf end}\par\noindent
-\qquad{\bf else if\/} $\\{shrink\_order}(g)=\\{g\_order}$
- {\bf then}\par\noindent
-\qquad\quad{\bf begin} $\\{vet\_glue}(\\{float}(\\{glue\_set}
- (\\{this\_box}))*\\{shrink}(g))$;\par\noindent
-\qquad\quad$\\{rule\_ht}\gets\\{rule\_ht}-\\{round}(\\{glue\_temp})$;
-
-\bugonpage B264, line 22 (6/26/93)
-
-\ninepoint
-\noindent\hskip10pt
-$\\{doing\_leaders}\gets\\{outer\_doing\_leaders}$; \
-$\\{dvi\_v}\gets\\{save\_v}$; \
-$\\{dvi\_h}\gets\\{save\_h}$; \
-$\\{cur\_h}\gets\\{left\_edge}$;
-
-\bugonpage B297, line 11 (3/7/95)
-
-\ninepoint\noindent
-\qquad $\\{width}(p)\gets\\{mu\_mult}(\\{width}(p))$; \
- $\\{subtype}(p)\gets\\{explicit}$;
-
-\bugonpage B309, line 7 (9/22/95)
-
-\ninepoint\noindent
-\qquad {\bf if} $\\{cur\_style}<\\{text\_style}$ {\bf then}
- \quad$\{\,$display style$\,\}$
-
-\bugonpage B356, line $-5$ (3/4/95)
-
-\tenpoint\noindent
-$\\{hang\_after}=1$, and $\\{hang\_indent}=0$.
-Note that if $\\{hang\_indent}=0$, the value of $\\{hang\_after}$ is\cutpar
-
-\bugonpage B388, bottom line (3/4/95)
-
-\ninepoint\noindent
-\quad {\bf if\/} $\\{bchar\_label}[\\{hf}]\ne\\{non\_address}$ {\bf then}\quad
- $\{\,$put left boundary at beginning of new line$\,\}$
-
-\bugonpage B406, line 10 (5/1/98)
-
-\ninepoint\noindent
-\qquad$q\gets p$;\quad$\{\,$now node $q$ represents $p_1\ldots p_{l-1}\,\}$
-
-\bugonpage B503, line 12 (3/4/95)
-
-\tenpoint\noindent
-of the following procedure. (Exception: The tabskip
-glue isn't trapped while preambles are being scanned.)
-
-\bugonpage B529, line 12 (3/4/95)
-
-\ninepoint\noindent\quad
-\\{undump}(0)($\\{fmem\_ptr}-1$)(\\{bchar\_label}[$k$]);\par\noindent\quad
-\\{undump}(\\{min\_quarterword})(\\{non\_char})(\\{font\_bchar}[$k$]);
-
-\bugonpage B531, line 2 (11/23/98)
-
-\tenpoint\noindent
-from appearing again.
-
-\bugonpage B531, line 14 (11/23/98)
-
-\ninepoint\noindent
-\quad \\{print\_int}(\\{year}); \ \\{print\_char}(|"."|); \
- \\{print\_int}(\\{month}); \ \\{print\_char}(|"."|); \
- \\{print\_int}(\\{day});
-
-\bugonpage B534, insert new material between lines $-16$ and $-15$ (3/20/95)
-
-\ninepoint\noindent
-\quad {\bf while} $\\{input\_ptr}>0$ {\bf do}\par\noindent
-\qquad {\bf if\/} $\\{state}=\\{token\_list}$ {\bf then} \\{end\_token\_list}
- {\bf else} \\{end\_file\_reading};
-
-\bugonpage B534, line $-2$ (3/20/95)
-
-\ninepoint\noindent
-\qquad $\\{temp\_ptr}\gets\\{cond\_ptr}$; \
- $\\{cond\_ptr}\gets\\{link}(\\{cond\_ptr})$; \
- $\\{free\_node}(\\{temp\_ptr},\\{if\_node\_size})$;
-
-\bugonpage B535, line 9 (3/20/95)
-
-\ninepoint\noindent
-\qquad {\bf begin init for} $c\gets\\{top\_mark\_code}$ {\bf to}
- \\{split\_bot\_mark\_code} {\bf do}\par\noindent
-\qquad\qquad {\bf if\/} $\\{cur\_mark}[c]\ne\\{null}$ {\bf then}
- $\\{delete\_token\_ref}(\\{cur\_mark}[c])$;\par\noindent
-\qquad\quad \\{store\_fmt\_file}; \ {\bf return}; \ {\bf tini}
-
-\bugonpage B581, Zabala entry (8/19/00)
-
-\eightpoint\noindent
-Zabala Salelles, Ignacio Andr\'es:\quad 2.
-
- % volume C
-\hsize=29pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-
-\bugonpage C17, lines 12 and 13 (9/6/00)
-
-\tenpoint
-{\bf draw} $z_4\{\curl0\}\to z_2\{z_3-z_4\}\to\{\curl0\}\,z_3$;\par
-{\bf draw} $z_4\{\curl2\}\to z_2\{z_3-z_4\}\to\{\curl2\}\,z_3$
-
-\bugonpage C23, line $-7$ (8/5/98)
-
-\ninepoint\indent
-$x_1=ss=w-x_5$;\quad$y_3-y_1=\\{ygap}$
-
-\bugonpage C69, line 17 (9/6/00)
-
-\ninepoint\noindent
-|"abra"|, while
-$p_1$ is `$(0,0)\to(3,3)$' and $p_2$ is `$(0,0)\to(3,3)\to\cycle$'.
-
-\bugonpage C94, line $-11$ (3/4/95)
-
-\ninepoint\noindent
-put
-are assumed to have square pixels. But if, for
-example, the {\bf mode\_def} sets\cutpar
-
-\bugonpage C107, line 15 (3/4/95)
-
-\ninepoint
-{\bf labels}$(1a,1b,2a,2b,3a,3b,4a,4b,\,${\bf range} 1 {\bf thru} 36);
- \ {\bf endchar\/};
-
-\bugonpage C123, lines 21 and 22 (12/19/95)
-
-\chardef\circc=34 % rotated quartercircle
-\def\chapno{ 14} \exno=2 % for exercise 14.3!
-\dangerexercise
-Use a {\sl rotated\/} quarter-circle to produce `{\manual\circc}\kern1pt'
-in font position `{\tt c}'.
-
-\bugonpage C129, lines 6--17 (8/5/98)
-
-\ninepoint
-\beginsyntax
-<path primary>\is<pair primary>\alt<path variable>
- \alt[(]<path expression>[)]
- \alt[reverse]<path primary>
- \alt[subpath]<pair expression>[of]<path primary>
-<path secondary>\is<pair secondary>\alt<path primary>
- \alt<path secondary><transformer>
-<path tertiary>\is<pair tertiary>\alt<path secondary>
-<path expression>\is<pair expression>\alt<path tertiary>
- \alt<path subexpression><direction specifier>
- \alt<path subexpression><path join>[cycle]
-<path subexpression>\is<path expression>
- \alt<path subexpression><path join><path tertiary>
-\endsyntax
-
-\bugonpage C134, line 8 (3/4/95)
-
-\ninepoint\noindent
-of~$p$; if $t\le 0$, precontrol~$t$ of~$p$ is~$z_0$.
-In particular, if $t$ is an integer, postcontrol~$t$ of~$p$\cutpar
-
-\bugonpage C139, illustration (8/5/98)
-
-\eightpoint\noindent
-[Remove the labels {\tt 2r}, {\tt 2}, and {\tt 2l} below their dots.]
-
-\bugonpage C143, top two lines (3/4/95)
-
-\danger In order to have some transform variables to work with, it's necessary
-to `^{hide}' some declarations and commands before giving the next |expr|s:
-
-\bugonpage C147, lines 14, 16, and 19 (9/6/00)
-
-\noindent
-[Change `{\bf savepen}' to `{\it savepen}'.]
-
-\bugonpage C147, line 2 from the bottom (9/6/00)
-
-\ninepoint\noindent
-{\manual lmnj}'s {\bf penrazor} stands for
-`{\bf makepen} $\bigl((-.5,0)\dashto(.5,0)\dashto \cycle\bigr)$',
-and {\bf pensquare}\cutpar
-
-\bugonpage C171, line 19 (8/5/98)
-
-\ninepoint\noindent
-(\<path tertiary>) and
-(\<pair tertiary>). A pair expression is not considered to\cutpar
-
-\bugonpage C172, line 14 (8/5/98)
-
-\tenpoint\noindent
-been evaluated and changed to numeric tokens before being
-substituted for~$s$.\cutpar
-
-\bugonpage C175, line 23 (1/11/88)
-
-\ninepoint\noindent
-expand into a sequence of tokens. \
-(The language {\eightrm{SIMULA67}} demonstrated that it is\cutpar
-
-\bugonpage C206, minor changes to lines $-19$ to $-5$ (3/4/95)
-
-\vbox to70mm{\ninepoint
-\beginlines \advance\hsize.71pt
-|Path at line 15, before subdivision into octants:|
-|(1.53745,9.05345)..controls (1.53745,4.00511) and (5.75409,-0.00049)|
-| ..(10.85147,-0.00049)..controls (16.2217,-0.00049) and (20.46255,4.51297)|%
- \kern.5em\null
-| ..(20.46255,9.94655)..controls (20.46255,14.99713) and (16.23842,19.00049)|
- \kern-.71pt
-| ..(11.13652,19.00049)..controls (5.77066,19.00049) and (1.53745,14.48491)|%
- \kern.5em\null
-| ..cycle|
-\smallskip
-|Cycle spec at line 15, after subdivision:|
-|(1.53745,9.05345) % beginning in octant `SSE'|
-| ..controls (1.53745,6.58786) and (2.54324,4.371)|
-| ..(4.16621,2.74803) % segment 0|
-|% entering octant `ESE'|
-| ..controls (5.8663,1.04794) and (8.24362,-0.00049)|
-| ..(10.85147,-0.00049) % segment 0|
-|% entering octant `ENE'|
-\endlines
-$\ldots$ and so on; there are lots more numbers! What does this all mean?
-Well, the first segment of the curve, from $(1.53745,9.05345)$ to
-$(10.85147,-0.00049)$,
-has been\cutpar}
-
-\bugonpage C207, minor changes to lines 1--23 (3/4/95)
-
-\ninepoint
-\begingroup\let\HRULE=\hrule \def\hrule{\HRULE width\hsize}
-\beginlines
-|Cycle spec at line 15, after subdivision and autorounding:|
-|(2,9.05348) % beginning in octant `SSE'|
-| ..controls (2,6.50526) and (3.02194,4.22272)|
-| ..(4.6577,2.58696) % segment 0|
-|% entering octant `ESE'|
-| ..controls (6.2624,0.98225) and (8.45786,0)|
-| ..(10.85873,0) % segment 0|
-|% entering octant `ENE'|
-\endlines
-Point $(1.53745,9.05345)$, where there was a vertical tangent, has been
-rounded to $(2,9.05348)$; point $(10.85147,-.00049)$, where there was
-\vadjust{\goodbreak}%
-a horizontal tangent, has been rounded to $(10.85873,0)$; the intermediate
-control points have been adjusted accordingly. \ (Rounding of $x$~coordinates
-has been done separately from $y$~coordinates.) \ Finally, with
-$\\{autorounding}=2$, additional adjustments are made so that the
-$45^\circ$ transition point will occur at what \MF\ thinks is a good spot:
-\beginlines
-|Cycle spec at line 15, after subdivision and double autorounding:|
-|(2,9.05348) % beginning in octant `SSE'|
-| ..controls (2,6.6761) and (3.07103,4.42897)|
-| ..(4.78537,2.71463) % segment 0|
-|% entering octant `ESE'|
-| ..controls (6.46927,1.03073) and (8.62749,0)|
-| ..(10.85873,0) % segment 0|
-|% entering octant `ENE'|
-\endlines
-(Notice that $4.78537+2.71463=7.50000$; when the slope
-is~$-1$ at a transition point\cutpar
-\endgroup
-
-\bugonpage C210, line $-7$ (8/5/98)
-
-\ninepoint\indent\qquad\alt\<numeric token primary>
-
-\bugonpage C210, line $-2$ (8/5/98)
-
-\ninepoint\indent\<numeric token primary>\is\<numeric token>\thinspace
-{\tt/}\thinspace\<numeric token>
-
-\bugonpage C211, line 16 (8/5/98)
-
-\ninepoint\indent\qquad\alt\<numeric token primary not followed by
-{\tt+} or {\tt-} or a numeric token>
-
-\bugonpage C213, lines 17--27 (8/5/98)
-
-\ninepoint
-\beginsyntax
-<path primary>\is<pair primary>\alt<path variable>\alt<path argument>
- \alt[(]<path expression>[)]
- \alt[begingroup]<statement list><path expression>[endgroup]
- \alt[makepath]<pen primary>\alt[makepath]<future pen primary>
- \alt[reverse]<path primary>
- \alt[subpath]<pair expression>[of]<path primary>
-<path secondary>\is<pair secondary>\alt<path primary>
- \alt<path secondary><transformer>
-<path tertiary>\is<pair tertiary>\alt<path secondary>
-<path subexpression>\is<path expression>
- \alt<path subexpression><path join><path tertiary>
-\endsyntax
-
-\bugonpage C213, line $-4$ (8/5/98)
-
-\ninepoint\indent
-\<path expression>\is\<pair expression>\alt\<path tertiary>
-\endsyntax
-
-\bugonpage C234, line 6 (9/6/00)
-
-\ninepoint\noindent
-line~$z_1\to z_5$ that bisects $z_4\to z_2$, so it starts out in a
-south-by-southwesterly direction;\cutpar
-
-\bugonpage C246, line 5 of answer 14.15 (8/5/98)
-
-\ninepoint\indent
-\qquad/ length(postcontrol $t$ of $p$ $-$ point $t$ of $p$) {\bf enddef\/};
-
-\bugonpage C246, line 10 of answer 14.15 (8/5/98)
-
-\ninepoint\indent
-\qquad/ length(precontrol $t$ of $p$ $-$ point $t$ of $p$) {\bf enddef\/};
-
-\bugonpage C252, line $-6$ (8/5/98)
-
-\ninepoint\noindent
-$h+o$ and $\\{bot}\,y_4=-o$, so nothing needs to be done there.
-We should, however, say
-
-\bugonpage C257, large display on line 5 (3/4/95)
-
-\def\bb{$\,\left\{\vcenter\bgroup\halign\bgroup\hfil##\hfil\cr}
-\def\ee{\crcr\egroup\egroup\right\}\,$}
-\tenpoint\noindent
-\bb|boolean|\cr|numeric|\cr|pair|\cr|path|\cr
-|pen|\cr|picture|\cr|string|\cr|transform|\ee\<expression>; \
-\bb\<boolean>\cr\<numeric>\cr\<pair>\cr\<string>\cr\<transform>\ee
- \bb|<|\cr|<=|\cr|=|\cr|<>|\cr|>=|\cr|>|\ee
- \bb\<boolean>\cr\<numeric>\cr\<pair>\cr\<string>\cr\<transform>\ee;
-
-\bugonpage C261, line $-15$ (8/5/98)
-
-\tenpoint\textindent\bull {\it Hacks:\/} \ |gobble|, |gobbled|, |killtext|; \
-|capsule_def|; \ |numtok|.
-
-\bugonpage C286, line 15 (8/5/98)
-
-\ninepoint\noindent
-isn't entirely expanded by {\bf expandafter\/}; only \MF's first
-step in loop expansion\cutpar
-
-\bugonpage C299, line 2 (12/6/99)
-
-\ninepoint\noindent
-\begindisplay
-$\displaystyle t[u_1,\ldots,u_n]\;=\;\sum_{k=1}^n{n-1\choose k-1}
- (1-t)^{n-k}t^{k-1}u_k,$
-\enddisplay
-
-\bugonpage C299, swap lines 11 and 12 (8/5/98)
-
-\ninepoint\begintt
-def lbrack = hide(delimiters []) lookahead [ enddef;
-let [[[ = [; let ]]] = ]; let [ = lbrack;
-\endtt
-
-\bugonpage C306, line 1 (11/4/98)
-
-\ninepoint\noindent
-| ligtable oct"013": "i" =: oct"016", "l" =: oct"017", % ffi and ffl|
-
-\bugonpage C311, line 2 (8/5/98)
-
-\ninepoint\noindent
-$\\{fine}:=4-\\{eps}$, and $\\{breadth\_}[1]:=4-\\{eps}$.
-\ (A small amount~\\{eps} has been subtracted\cutpar
-
-\bugonpage C323, line $-3$ (8/5/98)
-
-\ninepoint\noindent
-statement occurs,
-the special string `|"title "|\thinspace\&\thinspace\<title>'
-is output. \ (This is how the\cutpar
-
-\bugonpage C332, lines 22--24 (8/5/98)
-
-\ninepoint
-\item{}be replicated so that the final
-proofs will be \\{rep} times bigger than usual, and the pattern will be clipped
-slightly at the edges so that discrete pixels can be seen plainly.
-
-
-\bugonpage C341, line 23 (10/10/96)
-
-\ninepoint
-\noindent|\def\:{\setbox0=\hbox{\noboundary\char\n\noboundary}%|
-
-\bugonpage C346, left column (9/6/00)
-
-\eightpoint
-|...| (bounded join), 18--19, 127, 248, $\underline{262}$.\par
-|...| (truncation of displayed context), 44.
-
-\bugonpage C346, and throughout the index (3/7/95)
-
-\eightpoint\noindent
-(Many index entries for rules of syntax in chapters 25--26
-should have been underlined)
-
-\bugonpage C350, left column (4/24/00)
-
-\eightpoint\noindent
-Evetts, Leonard Charles, 153.
-
-\bugonpage C351, right column (9/22/97)
-
-\eightpoint\noindent
-\llap{\lower1pt\hbox{*}}%
-|intersectiontimes|, $\underline{136}$, {\it178}, 213, {\it265}, {\it294},
-{\it298}.
-
-\bugonpage C353, right column (8/5/98)
-
-\eightpoint\noindent
-\<numeric token atom>, {\it delete this entry}.\par\noindent
-\<numeric token primary>, 72, $\underline{210}$.
-
-\bugonpage C354, left column (7/26/98)
-
-\eightpoint\noindent
-Orwell, George (= Blair, Eric Arthur), 85.
-
-\bugonpage C355, right column (3/7/95)
-
-\eightpoint\noindent
-|rt|, {\it23}, {\it77}, 80, {\it103}, 147, 151, $\underline{273}$.
-
-\bugonpage C361, lines 14--15 (4/29/97)
-
-\tenpoint
-\begintt
-email: {\tt TUG@tug.org}
-internet: {\tt http://www.tug.org/}
-}
-\endtt
-
-\bugonpage C361, bottom five lines (4/29/97)
-
-\begingroup \def\TeX{T\kern-.2em\lower.5ex\hbox{E}\kern-.000em X}
-\baselineskip10pt
-\rightline{\eightssi Don't delay, subscribe today! That address again is}
-\rightline{\eightssi \TeX\ Users Group}
-\rightline{\eightssi email: \eighttt TUG\char`\@ tug.org}
-\rightline{\eightssi internet: \eighttt http://www.tug.org/}
-\smallskip
-\rightline{\eightss DONALD E. KNUTH, {\eightssi The \TeX book\/} (1996)}
-\endgroup
-
- % Volume D
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage Dix, line ix (8/19/00)
-
-\tenpoint
-\textindent{\bull}``Interfacing with graphic objects'' by
-Ignacio Andr\'es Zabala Salelles,\cutpar
-
-\hsize=35pc
-
-\bugonpage D71, line 11 of section 178 (9/13/00)
-
-\ninepoint
-\noindent\quad\qquad\qquad$\{$ previous \\{mem\_end}, \\{lo\_mem\_max},
- and \\{hi\_mem\_min} $\}$
-
-\bugonpage D132, line 6 of section 291 (9/13/00)
-
-\tenpoint\noindent
-$$=v_n+w_n\theta_0-u_n\bigl(v_1+w_1\theta_0-u_1(v_2+\cdots
--u_{n-2}(v_{n-1}+w_{n-1}\theta_0-u_{n-1}\theta_0)\ldots{})\bigr),$$
-
-\bugonpage D213, line 7 (9/14/00)
-
-\tenpoint\noindent
-$(-y+\epsilon,
-x+y+\epsilon\delta)$. We should therefore round as if our skewed coordinates
-were $(x+\epsilon+\epsilon\delta,y-\epsilon)$\cutpar
-
-\bugonpage D349, line 4 of section 784 (9/14/00)
-
-\ninepoint\noindent
-{\bf procedure} \\{pack\_job\_name}($s\;$: \\{str\_number});\quad
- $\{$ $s={}$|".log"|, |".gf"|, |".tfm"|, or \\{base\_extension} $\}$
-
-\bugonpage D451, line 11 (9/14/00)
-
-\tenpoint\noindent
-{\bf 1040}.\qquad The value of \\{cur\_mod} controls the \\{verbosity} in
-the \\{print\_exp} routine: If it's \\{show\_code},\cutpar
-
-\bugonpage D464, bottom line (9/14/00)
-
-\ninepoint\noindent
-\\{long\_help\_seen}: \\{boolean};\quad$\{$ has the long {\bf errmessage}
- help been used? $\}$
-
-\bugonpage D551, Zabala entry (8/19/00)
-
-\eightpoint\noindent
-Zabala Salelles, Ignacio Andr\'es:\quad 812.
-
- % volume E
-\hsize=29pc
-\bugonpage Exiii, lines 3 and 4 from the bottom (7/17/98)
-
-\textindent{\bull}``Metamarks:
-Preliminary studies for a Pandora's Box of shapes''
-by Neenie Billawala, Stanford Computer Science report 1256 (Stanford,
-California,\cutpar
-
-\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
-\def\ddashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu
- \hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
-
-\bugonpage E87, bottom line (6/4/98)
-
-\rightline{\eightss--- JOHN SMITH, {\eightssi The Printer's Grammar\/}\enspace
- (1755)} % p129
-
-\bugonpage E95, line 16 (8/8/98)
-
-\ninepoint\noindent
-\quad$\dashto z_{1r}\dashto z_{1l}\dashto{}$%
- {\bf subpath} $(t,0)$ {\bf of\/} $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
-
-\bugonpage E95, line 11 from the bottom (8/8/98)
-
-\ninepoint\noindent
-\quad$\dashto z_{1r}\dashto z_{1l}\dashto{}$%
- {\bf subpath} $(t,0)$ {\bf of\/} $(z_{3r}\{z_9-z_3\}\,.\,.\,z_{5r})$
-
-\bugonpage E95, line 8 from the bottom (3/6/95)
-
-\ninepoint\noindent
-{\bf cmchar} |"Extensible vertical arrow--extension module"|;
-
-\bugonpage E97, line 8 from the bottom (3/6/95)
-
-\ninepoint\noindent
-{\bf cmchar} |"Extensible double vertical arrow--extension module"|;
-
-\bugonpage E113, line 9 (3/6/95)
-
-\ninepoint\noindent
-$x_5=.5[x_4,x_6]$; \ $x_4-x_6=1.2u$; \ $\\{lft}\,x_{5r}=\hbox{hround}
- (.5w-.5\\{curve})$;
-
-\bugonpage E113, line 10 from the bottom (3/6/95)
-
-\ninepoint\noindent
-$x_5=.5[x_4,x_6]$; \ $x_4-x_6=4.8u$; \ $\\{lft}\,x_{5r}=\hbox{hround}
- (.5w-.5\\{max\_size})$;
-
-\bugonpage E115, line 9 (3/6/95)
-
-\ninepoint\noindent
-$x_5=.5[x_4,x_6]$; \ $x_4-x_6=1.2u$; \ $\\{lft}\,x_{5r}=\hbox{hround}
- (.5w-.5\\{curve})$;
-
-\bugonpage E115, line 12 from the bottom (3/6/95)
-
-\ninepoint\noindent
-$x_5=.5[x_4,x_6]$; \ $x_4-x_6=4.8u$; \ $\\{lft}\,x_{5r}=\hbox{hround}
- (.5w-.5\\{max\_size})$;
-
-\bugonpage E147, lines 11--14 from the bottom (7/7/97)
-
-\ninepoint\noindent
-$\\{pos}_3(.8[\\{hair},\\{stem}],0)$; \ $\\{pos}_4(\\{vair},-90)$; \
- $\\{pos}_5(\\{hair},-180)$;\par\noindent
-$\\{pos}_6(\\{vair},-270)$; \ ${pos}_7(\\{stem},-360)$; \
- $\\{pos}_8(\\{vair},-450)$; \ ${pos}_9(\\{hair},-540)$;\par\noindent
-$x_0=x_1=x_9$; \ $\\{lft}\,x_{0l}=\hbox{hround}(1.5u-.5\\{hair})$; \
- $x_2=x_4=x_6=x_8=.5w-.25u$;\par\noindent
-$\\{rt}\,x_{3r}=\hbox{hround}(w-1.75u)$; \ $\\{rt}\,x_{7r}=\hbox{hround}(w-u)$;
-
-\bugonpage E147, line 8 from the bottom (7/7/97)
-
-\ninepoint\noindent
-$y_5=.5[y_4,y_6]$; \ $\\{top}\,y_{6r}-\\{bot}\,y_{4r}=\\{vstem}+\\{eps}$; \
-$\\{bot}\,y_8=-\\{oo}$; \ $y_7=y_9=.55[y_6,y_8]$;
-
-\bugonpage E165, line 6 (2/8/97)
-
-\ninepoint\noindent
-$y_1+.5\\{hair}=h$; \ $x_1=x_2+.75u$; \
- $\\{pos}_1(\\{hair}+\\{dw},\hbox{angle}(2(x_1-x_2),y_1-y_2)+90)$;
-
-\bugonpage E165, line 10 (2/8/97)
-
-\ninepoint\noindent
-$x_3=.5[x_2,x_4]$; \ $x_7-.25u=.5[x_6,x_8]$; \
- $\\{rt}\,x_{8r}=\hbox{hround}(w-.5u)$;
-
-\bugonpage E187, line 9 (3/6/95)
-
-\ninepoint\noindent
-$\\{lft}\, x_{1l}=\\{lft}\, x_{2l}=\hbox{hround}(.5w-.5\\{shaved\_stem})$; \
- $\\{top}\, y_1=h$; \ $\\{bot}\, y_2=0$;
-
-\bugonpage E189, line 8 (3/6/95)
-
-\ninepoint\noindent
-$\\{lft}\, x_{1l}=\\{lft}\, x_{2l}=\hbox{hround}(.5w-.5\\{shaved\_stem})$; \
- $\\{top}\, y_1=h$; \ $\\{bot}\, y_2=0$;
-
-\bugonpage E233, line 21 (3/6/95)
-
-\ninepoint\noindent
-{\bf path} $p$; \
-$\{\{${\bf interim} $\\{superness}:=\\{more\_super}$; \
- $p=\\{pulled\_super\_arc}_l(3,4)(\\{pull})\}\}$;
-
-\bugonpage E237, line 5 (8/6/98)
-
-\ninepoint\noindent
-$\\{lft}\,x_1={\rm hround}\,.5u$; \ $x_2=w-x_1$; \
- $y_1=y_2=\\{good}.y\,.7[\\{x\_height},\\{asc\_height}]$;
-
-\bugonpage E239, line 7 from the bottom (3/6/95)
-
-\ninepoint\noindent
-$\\{lft}\,x_{6r}=\hbox{hround}\, u$; \
-$x_7=3u$; \ $x_8=w-3.5u$; \ $\\{rt}\,x_{9l}=\hbox{hround}(w-u)$;
-
-\bugonpage E253, line 2 from the bottom (8/9/98)
-
-\ninepoint
-\line{\quad$.\,.\,z_{3e}\{\\{down}\}\,.\,.\,\{z_{5l}-z_{4l}\}z_{4e}
- \dashto z_{5e}\dashto z_{6e}$;\hfil \% stroke}
-
-\bugonpage E263, line 21 (5/10/98)
-
-\ninepoint\noindent
-{\bf path} $p$; \
-$\{\{${\bf interim} $\\{superness}:=\\{more\_super}$; \
- $p=\\{pulled\_super\_arc}_l(3,4)(\\{pull})\}\}$;
-
-\bugonpage E289, line 2 from the bottom (8/9/98)
-
-\ninepoint
-\line{\quad$.\,.\,z_{3e}\{\\{down}\}\,.\,.\,\{z_{5l}-z_{4l}\}z_{4e}
- \dashto z_{5e}\dashto z_{6e}$;\hfil \% stroke}
-
-\bugonpage E291, line 18 (3/6/95)
-
-\def\frac#1/#2{\leavevmode\kern.1em
- \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
- /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
-\ninepoint\noindent
-$x_4=\frac1/3[x_5,x_{3l}]$; \ $z_4=z_5+\\{whatever}*(15u,.1h)$;
-
-\bugonpage E297, line 17 (5/10/98)
-
-\ninepoint\noindent
-{\bf path} $p$; \
-$\{\{${\bf interim} $\\{superness}:=\\{more\_super}$; \
- $p=\\{pulled\_super\_arc}_l(3,4)(\\{pull})\}\}$;
-
-\bugonpage E303, line 17 (5/10/98)
-
-\ninepoint\noindent
-{\bf path} $p$; \
-$\{\{${\bf interim} $\\{superness}:=\\{more\_super}$; \
- $p=\\{pulled\_super\_arc}_l(3,4)(\\{pull})\}\}$;
-
-\bugonpage E309, line 7 from the bottom (5/8/98)
-
-\ninepoint\noindent
-\quad$y_{@0}=y_{@2l}-\\{bracket}-\\{eps}$;
-
-\bugonpage E313, line 7 from the bottom (5/8/98)
-
-\ninepoint\noindent
-\quad$y_{@0}=y_{@2l}+\\{bracket}+\\{eps}$;
-
-\bugonpage E319, line 8 (5/11/98)
-
-\ninepoint\noindent
-$\\{loop\_top}=$ {\bf if\/} \\{serifs}:
- Vround .77$[\\{vair},\\{fudged.stem}]$ {\bf else}: \\{vair} {\bf fi};
-
-\bugonpage E373, lines 5 and 6 from the bottom (7/13/97)
-
-\ninepoint\noindent
-\quad$\\{top}\,y_{1r}=\hbox{vround}\, .95h+\\{oo}$; \
-$\\{top}\,y_{2r}=h+\\{oo}$; \ $y_3=.5h$;\par\noindent
-\quad$\\{bot}\,y_{4r}=-\\{oo}$; \
-$\\{bot}\,y_{5r}=\hbox{vround}\,.08h-\\{oo}$; \
-$y_{5l}:=\\{good}.y\, y_{5l}$; \ $x_{5l}:=\\{good}.x\,x_{5l}$;
-
-\bugonpage E381, lines 11 and 12 from the bottom (7/13/97)
-
-\ninepoint\noindent
-\quad$\\{top}\,y_{1r}=\hbox{vround}\, .93h+\\{oo}$; \
-$\\{top}\,y_{2r}=h+\\{oo}$; \ $y_3=.5h$;\par\noindent
-\quad$\\{bot}\,y_{4r}=-\\{oo}$; \
-$\\{bot}\,y_{5r}=\hbox{vround}\,.07h-\\{oo}$;
-
-\bugonpage E389, bottom two lines (8/7/98)
-
-\ninepoint\noindent
-\quad {\bf numeric} $\\{aa\_},\\{bb\_},\\{cc\_}$;
- \ $\\{bb\_}=b/y$; \ $\\{cc\_}=c/y$;
- \ $\\{aa\_}=a*a-\\{bb\_}*\\{bb\_}$;\par\noindent
-\quad $(a*(\\{cc\_}\mathbin{++}\hbox{sqrt}\,\\{aa\_})-\\{bb\_}*\\{cc\_})/\\{aa\_}$
- {\bf enddef\/};
-
-\bugonpage E423, line 17 (8/8/98)
-
-\ninepoint\noindent\quad
-$x_{13}=x_{11}-.5$; \ $\\{top}\,y_{14r}=\min(\frac10/7\\{x\_height}+
- .5\\{bulb\_diam},h)+1$; \ $\\{top}\,y_{11}=\\{x\_height}$;
-
-\bugonpage E427, line 21 (8/8/98)
-
-\ninepoint\noindent\quad
-$x_{23}=x_{21}-.5$; \ $\\{top}\,y_{24r}=\min(\frac10/7\\{x\_height}+
- .5\\{bulb\_diam},h)+1$; \ $\\{top}\,y_{21}=\\{x\_height}$;
-
-\bugonpage E431, lines 18 and 19 (8/8/98)
-
-\ninepoint\noindent
-{\bf filldraw} $z_0\dashto(x_0,y_{2l})\dashto z_{1l}\{\\{right}\}\,.\,.\,
- \{\\{left}\}z_{1r}$\par
-\noindent\quad$\dashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{3r}\,.\,.\,\{2(x_0-x_3),y_0-y_3\}z_{5r})$
-
-\bugonpage E431, line 2 from the bottom (8/8/98)
-
-\ninepoint\line{\quad
-$\dashto z_{1l}\{\\{right}\}\,.\,.\,\{\\{left}\}z_{1r}\dashto
- (x_0,y_{2r})\dashto{}$cycle;\hfill\% arrowhead and stem}
-
-\bugonpage E433, lines 13 and 14 (8/8/98)
-
-\ninepoint\noindent
-{\bf filldraw} $z_0\dashto(x_0,y_{2l})\dashto z_{1l}\{\\{left}\}\,.\,.\,
- \{\\{right}\}z_{1r}$\par
-\noindent\quad$\dashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{3l}\,.\,.\,\{2(x_0-x_3),y_0-y_3\}z_{5r})$
-
-\bugonpage E433, line 2 from the bottom (8/8/98)
-
-\ninepoint\line{\quad
-$\dashto z_{1l}\{\\{left}\}\,.\,.\,\{\\{right}\}z_{1r}\dashto
- (x_0,y_{2r})\dashto{}$cycle;\hfill\% arrowhead and stem}
-
-\bugonpage E463, line 15 (8/8/98)
-
-\ninepoint\noindent\quad
-$\ddashto z_{1r}\,.\,.\,z_{1l}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{3r}\{z_9-z_3\}\,.\,.\,z_{5r})$
-
-\bugonpage E463, line 3 from the bottom (8/8/98)
-
-\ninepoint\noindent\quad
-$\ddashto z_{1r}\,.\,.\,z_{1l}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
-
-\bugonpage E465, line 16 (8/8/98)
-
-\ninepoint\noindent\quad
-$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{3r}\{z_9-z_3\}\,.\,.\,z_{5r})$
-
-\bugonpage E465, line 3 from the bottom (8/8/98)
-
-\ninepoint\noindent\quad
-$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
-
-\bugonpage E467, line 18 (8/8/98)
-
-\ninepoint\noindent\quad
-$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{3r}\{z_9-z_3\}\,.\,.\,z_{5r})$
-
-\bugonpage E467, line 3 from the bottom (8/8/98)
-
-\ninepoint\noindent\quad
-$\ddashto z_{11l}\,.\,.\,z_{12r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{13l}\{z_{19}-z_{13}\}\,.\,.\,z_{15r})$
-
-\bugonpage E483, lines 12--14 from the bottom (3/6/95)
-
-\ninepoint\noindent
-{\bf beginarithchar}(oct$\,$|"004"|); \
-{\bf pickup} \\{fine}.\\{nib}; \
-{\bf pickup} \\{rule}.\\{nib};\par
-\line{{\bf numeric} \\{del};
- \ $\\{del}=\\{dot\_size}-\\{currentbreadth}$;\hfill
- \% $\\{currentbreadth}=\\{fine}$}
-\noindent
-$x_3-.5\\{del}=\\{good}.x(.5w-.5\\{del})$;
- \ $\\{center\_on}(x_3)$;\par\noindent
-$y_3+.5del=\\{good}.y(\\{math\_axis}+\\{math\_spread}[.5\\{x\_height}
- ,.6\\{x\_height}]+.5\\{del})$;
-
-\bugonpage E485, bottom line (6/4/98)
-
-\rightline{\eightss--- JOHN SMITH, {\eightssi The Printer's Grammar\/}\enspace
- (1755)} % p80
-
-\bugonpage E489, line 4 (8/8/98)
-
-\ninepoint\noindent
-$\\{lft}\,x_6={\rm hround}\,u$; \ $x_2=w-x_6$; \ $\\{top}\,y_8=h$; \
- $y_8-y_4=x_2-x_6$;
-
-\bugonpage E489, line 10 (8/8/98)
-
-\ninepoint\noindent
-$\\{lft}\,x_6={\rm hround}\,u$; \ $x_2=w-x_6$; \ $\\{top}\,y_8=h$; \
- $y_8-y_4=x_2-x_6$; \ \\{circle\_points};
-
-\bugonpage E491, line 3 from the bottom (3/6/95)
-
-\def\SH{\raise.7ex\hbox{$\scriptstyle\#$}} % sharp sign for sharped units
-\ninepoint\noindent
-\quad $\\{spread}:=2\hbox{ceiling}(\\{spread}\SH*\\{hppp}/2)+\\{eps}$;
- \ {\bf enddef\/};
-
-\bugonpage E507, line 15 (8/8/98)
-
-\ninepoint\noindent\quad
-$\ddashto z_{1r}\,.\,.\,z_{1l}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{3r}\{z_9-z_3\}\,.\,.\,z_{5r})$
-
-\bugonpage E507, line 3 from the bottom (8/8/98)
-
-\ninepoint\noindent\quad
-$\ddashto z_{11r}\,.\,.\,z_{11l}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{13l}\{z_{19}-z_{13}\}\,.\,.\,z_{15r})$
-
-\bugonpage E509, line 17 (8/8/98)
-
-\ninepoint\noindent\quad
-$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
-
-\bugonpage E509, lines 3 and 4 from the bottom (8/8/98)
-
-\ninepoint\noindent\quad
-$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
-
-\bugonpage E511, line 17 (8/8/98)
-
-\ninepoint\noindent\quad
-$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
-
-\bugonpage E511, lines 3 and 4 from the bottom (8/8/98)
-
-\ninepoint\noindent\quad
-$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
- $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
-
-\bugonpage E541, bottom line (2/27/97)
-
-{\bf labels}\kern.05em$(1,2,3,5,6,7,8,9,10,11,12,13,14,15)$; \ {\bf endchar};
-
-\bugonpage E568, the example of {\tt cmtex8} (4/18/96)
-
-\eightpoint\indent
-(The word `{\tt logician}' should not be hyphenated.)
-
-\bugonpage E574, left column (3/6/95)
-
-\eightpoint\indent
-\\{currentbreadth}, 483, $\underline{545}$, 546.
-
-\bugonpage E575, right column (9/10/98)
-
-Holmes, Kris Ann, vi, vii.
-
-\bugonpage E576, right column (6/4/98)
-
-\eightpoint\noindent Delete the entry for Luckombe
-
-\bugonpage E579, left column (6/4/98)
-
-\eightpoint Smith, John, 87, 485.
-
- \bye
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.tex b/Master/texmf-dist/source/generic/knuth/errata/errata.tex
deleted file mode 100644
index 3a0d367f0ca..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.tex
+++ /dev/null
@@ -1,1802 +0,0 @@
-% Bugs (sigh) in Computers \& Typesetting --- the most recent errata
-
-\tracingpages=1
-\input manmac
-\def\.#1{\hbox{\tt#1}}
-\font\sltt=cmsltt10
-\font\niness=cmss9
-\font\ninessi=cmssi9
-\proofmodefalse
-\raggedbottom
-\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\today{\number\day\
- \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}
-
-\def\cutpar{{\parfillskip=0pt\endgraf}}
-
-\def\rhead{Bugs in {\tensl Computers \& Typesetting as of \today}}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
-\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
-\newcount\nn
-\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
-\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
-
-\tenpoint
-\noindent This is a list of all substantial corrections made to {\sl Computers
-\& Typesetting\/} since the beginning of 2014.
-(More precisely, it lists errors corrected
-since the 19th printing of Volume~A, the 9th printing
-of Volume~B, the 8th printing of Volume~C, the 6th printing of Volume~D,
-and the 7th printing of Volume~E. % 2012 for A-D, 2013 for E
-But it omits changes that are ``purely cosmetic.'')
-Corrections made to the softcover version of {\sl The \TeX book\/},
-beginning with its 32nd printing, are
-the same as corrections to Volume~A\null. Corrections to the softcover
-version of {\sl The \slMF\kern1ptbook}, beginning with its 11th printing,
-are the same as corrections to Volume~C\null. Changes to the mini-indexes
-and master indexes of Volumes B, D, and~E are not shown here unless they are
-not obviously derivable from what has been shown. Some (or all) of these
-errors have been corrected in the most recent printings.
-\looseness=-1
-
- % volume A
-
-\bugonpage A34, line 3 from the bottom (01/09/20)
-
-\ninepoint\noindent
-not, you can say
-`\.{I\char`\\errorcontextlines=100} \.{\char`\\oops}' and try again. \ (That
-will usually\cutpar
-
-\bugonpage A43, line 6 (07/24/14)
-
-\tenpoint\noindent
-keyboard, or that have been
-pre\"empted for formatting?
-
-\bugonpage A49, cummings quote (08/03/19)
-
-(delete the period at the end of the line)
-
-\bugonpage A66, line 3 from the bottom (08/26/17)
-
-\ninepoint
-Such displays of box contents will be discussed further in
-Chapters 12 and~27.\cutpar
-
-\bugonpage A105, lines 9--16 (01/16/21)
-
-\ddanger If you say \.{\char`\\vadjust\char`\{}$\langle\,$vertical
-mode material$\,\rangle$\.{\char`\}} within a
-paragraph, \TeX\ will use internal vertical mode to insert the specified
-material into the vertical
-list that encloses the paragraph, immediately after whatever line
-contained the position of the \.{\char`\\vadjust}. For example, you can say
-`\.{\char`\\vadjust\char`\{\char`\\kern1pt\char`\}}'
-to increase the amount of space between lines of a
-paragraph if those lines would otherwise come out too close together. \ (The
-\vadjust{\kern1pt}author
-did that in the current line, just to illustrate what happens.) \ Also,
-if you want to make sure that a page break will occur immediately after a
-certain line, you can say `\.{\char`\\vadjust\char`\{\char`\\eject\char`\}}'
-anywhere in that line.
-
-\bugonpage A122, lines 3--8 (11/24/19)
-
-\ninepoint\noindent
-\.{\char`\\count255}, \.{\char`\\dimen255}, \.{\char`\\skip255},
-\.{\char`\\muskip255}, and \.{\char`\\toks255} are
-traditionally kept available for such purposes. Furthermore, plain \TeX\
-reserves \.{\char`\\dimen0} to \.{\char`\\dimen9},
-\.{\char`\\skip0} to \.{\char`\\skip9}, \.{\char`\\muskip0} to
-\.{\char`\\muskip9}, and \.{\char`\\box0} to \.{\char`\\box9}
-for ``scratchwork''; these registers
-are never allocated by the \.{\char`\\new...}\null\ operations. We have seen that
-\.{\char`\\count0} through \.{\char`\\count9} are special,
-and \.{\char`\\box255} also turns out to
-be special; so those registers should be avoided unless you know what you
-are doing.
-
-\bugonpage A155, line 8 from the bottom (01/17/21)
-
-\ninepoint\indent
-\.{\char`\\mathopen\char`\{\char`\\hbox\char`\{\char`\$\char`\\left\char`\#1}%
-$\langle\,$strut$\,\rangle$\.{\char`\\right.\char`\$\char`\}\char`\}}
-
-\bugonpage A155, the bottom six lines (12/10/18)
-
-\ninepoint\noindent
-dividual symbols; \.{\char`\\left}$\,\ldots\,$\.{\char`\\right}
-constructions are treated as ``inner'' subformulas, which means that
-they will be surrounded by additional space in certain circumstances.
-All other subformulas are generally treated as ordinary symbols,
-whether they are formed by \.{\char`\\overline} or
-\.{\char`\\hbox} or \.{\char`\\vcenter} or
-by simply being enclosed in braces. Thus, \.{\char`\\mathord} isn't really
-a necessary part of the \TeX\ language; instead of typing
-`\.{\char`\$1\char`\\mathord,234\char`\$}' you can get the same
-effect from `\.{\char`\$1\char`\{,\char`\}234\char`\$}'.
-
-\bugonpage A158, line 19 (12/10/18)
-
-\ninepoint\indent
-Inner\quad is an inner atom produced by
- `\.{\char`\\left}$\,\ldots\,$\.{\char`\\right}';
-
-\bugonpage A170, lines 18 and 19 (12/10/18)
-
-\ninepoint\noindent
-subformulas delimited by \.{\char`\\left} and \.{\char`\\right}
-are treated as type~Inner. The following table is
-used to determine the spacing between pairs of adjacent atoms:
-
-\bugonpage A171, line 19 from the bottom (06/15/19)
-
-\ninepoint\noindent
-formula produces a result essentially equivalent to
-`\.{\char`\\left(}$\langle\,$subformula$\,\rangle$\.{\char`\\right)}',
-when\cutpar
-
-\bugonpage A215, line 16 from the bottom becomes two lines (10/13/20)
-
-\ninepoint
-\item\bull Just after a token such as \.{\char`\$}$_3$
-that begins math mode, to see if
-another token of category 3 follows.
-
-\bugonpage A222, lines 21--23 (01/16/21)
-
-\ninepoint
-\halign{\indent#\hfil&\quad(see Chapter #)\hfil\cr
-\.{\char`\\hbox}$\langle\,$box specification$\,\rangle$%
- \.{\char`\{}$\langle\,$horizontal mode material$\,\rangle$\.{\char`\}}&12\cr
-\.{\char`\\vbox}$\langle\,$box specification$\,\rangle$%
- \.{\char`\{}$\langle\,$vertical mode material$\,\rangle$\.{\char`\}}&12\cr
-\.{\char`\\vtop}$\langle\,$box specification$\,\rangle$%
- \.{\char`\{}$\langle\,$vertical mode material$\,\rangle$\.{\char`\}}&12\cr
-}
-
-\bugonpage A222, lines 11--13 from the bottom (01/16/21)
-
-\ninepoint\noindent
-ter~15. The \.{\char`\\vsplit} operation
-is also explained in Chapter~15. In math modes an additional
-type of box is available:
-\.{\char`\\vcenter}$\langle\,$box specification$\,\rangle$%
- \.{\char`\{}$\langle\,$vertical mode material$\,\rangle$\.{\char`\}}
-(see Chapter~17).
-
-\bugonpage A232, line 14 (01/10/21)
-
-\ninepoint\noindent
-tabs outside; `\.{\char`\\global\char`\\settabs}' will not do what
-you might think it should.
-
-\bugonpage A233, lines 3--5 (04/27/15)
-
-\tenpoint\noindent
-Only two tabs are set in this case, because only two \.{\char`\&}'s
-appear in the sample line. \ (A sample line usually
-ends with~\.{\char`\&\char`\\cr}, as it does here,
-because text material between the last tab and \.{\char`\\cr}
-isn't used for anything.)
-
-\bugonpage A252, lines 5--7 (12/25/20)
-
-\ninepoint\noindent
-blank, and
-the footline is normally a centered page number, but you can specify any
-headline and footline that you want by changing the token lists
-\.{\char`\\headline} and \.{\char`\\footline}. For example,
-
-\bugonpage A253, lines 7--9 from the bottom (10/27/20)
-
-\ninepoint\indent
-\.{\char`\\everypar} or \.{\char`\\errhelp}, except that \TeX\
-retains the begin-group symbol~`\.{\char`\{}' at the beginning
-and the end-group symbol~`\.{\char`\}}' at the end. These
-grouping characters
-help to keep the output routine from interfering with what
-\TeX\ was doing\cutpar
-
-\bugonpage A256, line 19 (08/28/15)
-
-\ninepoint\indent
-\tt \char`\\baselineskip=24pt \char`\\lineskiplimit=0pt
-
-\bugonpage A277, lines 9 and 10 from the bottom (08/26/17)
-
-\ninepoint\indent
-$\langle\,$hyphenation assignment$\,\rangle$\is
- \.{\char`\\hyphenation}$\langle\,$filler$\,\rangle$%
- \.{\char`\{}$\langle\,$hyphenations$\,\rangle$\.{\char`\}}\par
-\qquad \alt \.{\char`\\patterns}$\langle\,$filler$\,\rangle$%
- \.{\char`\{}$\langle\,$patterns$\,\rangle$\.{\char`\}}
-
-\bugonpage A286, bottom two lines {(and affecting the top lines
-of page 287)} (08/26/17)
-
-\ninepoint\noindent
-stands for zero or more \<assignment>
-commands other than \.{\char`\\setbox}, possibly with \<filler>.
-If the assignments are not followed by a \<character>, where
-\<character> stands\cutpar
-
-\bugonpage A287, lines 11--17 (04/22/20)
-
-\ninepoint
-\textindent{$\bull$} \.{\char`\\discretionary}%
- \<disc text>\<disc text>\<disc text>.\enskip
-A \<disc text> has the form
-`\<filler>\.{\char`\{}\<horizontal mode material>\.{\char`\}}',
-where the material is processed in restricted horizontal mode and
-should contain only fixed-width things.
-More precisely, the horizontal list formed by each
-\<disc text> must consist only of characters, ligatures,
-kerns, boxes, and rules; there should be no glue or penalty items, etc.
-This command appends a discretionary item to the current list; see
-Chapter~14 for the meaning of a discretionary item. The space factor is
-not changed.
-
-\bugonpage A292, lines 8--10 (04/22/20)
-
-\ninepoint
-\textindent{$\bull$} \.{\char`\\discretionary}%
- \<disc text>\<disc text>\<disc text>.\enskip
-This command has the same effect as in horizontal mode (see Chapter~25), but the
-third \<disc text> must produce an empty list.
-
-\bugonpage A299, line 11 from the bottom (11/01/20)
-
-\ninepoint\noindent
-is corrupted or was prepared for a different version of \TeX.
-
-\bugonpage A305, bottom line (06/30/20)
-
-\ninepoint\indent
-\tt \char`\\setbox0=\char`\\hbox\char`\{\char`\#1\char`\}%
-\char`\\advance\char`\\dimen0 by -\char`\\wd0 \char`\}\rm.
-
-\bugonpage A309, line 2 becomes two lines (12/06/20)
-
-\ninepoint\noindent
-represent text entered from the user's terminal, or with
-`\.{<insert>}', when they
-represent text inserted during error recovery).
-
-\bugonpage A316, lines 17 and 18 from the bottom (09/03/15)
-
-\ninepoint\noindent
-(The next line must also not be too tall.)
-Here \.{\char`\\specialstar} is a box of height zero and depth
-\.{\char`\\strutdepth},
-and it puts an asterisk in the left margin:
-
-\bugonpage A320, lines 5--9 from the bottom (06/27/15)
-
-\ninepoint\noindent
-{\bf 17.21.}\enspace Assigning \.{\char`\\delcode\char`\`\char`\{}
-would not work to allow `\.{\char`\\left\char`\{}', because
-the brace has category~1 and isn't a legal \<delim>.
-Allowing brace delimiters would be a bad idea because it would
-mess up other constructions, such as arguments to macros, and
-components of alignments. Moreover, a user who
-gets away with `\.{\char`\\left\char`\{}'
-is likely to try also `\.{\char`\\bigl\char`\{}', which
-fails miserably.
-
-\bugonpage A326, line 12 (08/26/17)
-
-\ninepoint\noindent
-its natural width. The \.{\char`\\hbox} version also invokes
-\.{\char`\\everyhbox} and \.{\char`\\everymath}.
-
-\bugonpage A329, line 3 of answer 20.7 (05/15/19)
-
-\ninepoint\noindent
-the three tokens \.{!1}, \.{\char`\#2}, \.{[}$_1$; the
-\<replacement text> consists of the six tokens
-\.{\char`\{}$_1$, \.{\char`\#}$_6$,\cutpar
-
-\bugonpage A329, line 6 of answer 20.7 (05/15/19)
-
-\ninepoint\noindent
-is otherwise irrelevant. Thus, `\.{\char`\\def\char`\\!!1\char`\#2\char
- `\#[\char`\{\char`\#\char`\#]!!\char`\#2]}'
-would produce an essentially\cutpar
-
-\bugonpage A329, line 5 from the bottom of answer 20.7 (05/15/19)
-
-\ninepoint\indent
-\.{!1<-x}
-
-\bugonpage A329, bottom line of answer 20.7 (05/15/19)
-
-\ninepoint\noindent
-final parameter in the parameter text;
-`\.{!1}' would have been rendered `\.{\char`\#1}'.
-
-\bugonpage A332, lines 13 and 14 (08/26/17)
-
-\ninepoint\noindent
-{\bf 21.10.}\enspace If you say
-`\.{\char`\{\char`\\let}\stretch
-\.{\char`\\the=0\char`\\edef}\stretch
-\.{\char`\\next}\stretch
-\.{\char`\{\char`\\write}\stretch
-\.{\char`\\cont}\stretch
-\.{\char`\{}\<token list>\.{\char`\}\char`\}\char`\\next}\stretch
-\.{\char`\}}',
-the \.{\char`\\write} will be exercuted after
-\.{\char`\\edef} expands everything except \.{\char`\\the}.
-
-\bugonpage A332, bottom line (11/15/19)
-
-\ninepoint\indent\quad
-\tt \char`\\+\char`\&\char`\{\char`\\bf end\char`\};\char`\\cr \
- \char`\%\ note that the semicolon isn't bold
-
-\bugonpage A342, lines 12 and 13 (08/14/20)
-
-\tenpoint\noindent
-of plain \TeX\ format; but some of them are primitive (built in),
-such as `\.{\char`\\par}' (end of
-paragraph), `\.{\char`\\noindent}' (beginning of
-non-indented paragraph), and `\.{\char`\/}' (italic\cutpar
-
-\bugonpage A345, lines 10--13 from the bottom (06/27/15)
-
-\ninepoint\noindent
-Braces are used for grouping, when supplying
-arguments to macros; so they cannot also be used as math delimiters, or as
-arguments to macros such as \.{\char`\\big}. (One could change their catcodes
-to~12, and use some other pair of characters for grouping; but that
-would not be plain \TeX.)
-
-\bugonpage A346, lines 10--22 (11/24/19)
-
-\ninepoint\noindent
-number identification.) \ (2)~The registers
-\.{\char`\\count255}, \.{\char`\\dimen255}, \.{\char`\\skip255},
-\.{\char`\\toks255}, and \.{\char`\\muskip255}
-are freely available in the same way.
-\ (3)~All assignments to the scratch registers whose numbers are
-1,~3, 5, 7, and~9 should be \.{\char`\\global}; all assignments to the
-other scratch registers (0,~2, 4, 6, 8,~255) should be non-\.{\char`\\global}.
-\ (This prevents the phenomenon of ``save stack buildup'' discussed
-in Chapter~27.)
-\ (4)~Furthermore, it's possible to
-use any register in a group, if you ensure that \TeX's grouping
-mechanism will restore the register when you're done with the group, and
-if you are certain that other macros will not make global assignments
-to that register when you need it. \ (5)~But when a register is used
-by several macros, or over long spans of time, it should be allocated
-by \.{\char`\\newcount}, \.{\char`\\newdimen}, \.{\char`\\newbox},
-etc. \ (6)~Similar remarks
-apply to input/output streams used by \.{\char`\\read} and \.{\char`\\write},
-to math families used by \.{\char`\\fam}, to sets of hyphenation rules used by
-\.{\char`\\language}, and to insertions (which require
-\.{\char`\\box}, \.{\char`\\count}, \.{\char`\\dimen},
-and \.{\char`\\skip} registers all having the
-same number).\looseness=-1
-
-\bugonpage A347, line 6 (06/30/20)
-
-\ninepoint\noindent
-\tt \char`\\def\char`\\wlog\char`\{\char`\\immediate\char`\\write-1 \char`\}
-\ \char`\%\ this will write on log file (only)
-
-\bugonpage A347, line 10 (11/24/19)
-
-\ninepoint\noindent
-\tt \char`\\outer\char`\\def\char`\\newmuskip\char`\{\char`\\alloc@3%
-\char`\\muskip\char`\\muskipdef\char`\\@cclv\char`\}
-
-\bugonpage A347, line 14 (11/24/19)
-
-\ninepoint\noindent
-\tt \char`\\outer\char`\\def\char`\\newtoks\char`\{\char`\\alloc@5%
-\char`\\toks\char`\\toksdef\char`\\@cclv\char`\}
-
-\bugonpage A350, lines 15 and 16 from the bottom (01/17/21)
-
-\ninepoint\noindent
-format; it shouldn't cost much for people to acquire all the
-fonts of plain \TeX\ in addition to the ones that they really want. Second, it
-is desirable on many computer systems to\cutpar
-
-\bugonpage A364, line 5 from the bottom (01/14/21)
-
-\ninepoint\noindent
-\tt \char`\\def\char`\\fmtversion\char`\{3.1415926535\char`\}
-\ \char`\%\ identifies the current format
-
-\bugonpage A370, lines 11 and 12 (08/26/17)
-
-\ninepoint\noindent
-close as possible to the ASCII conventions.
-\ (b)~Make sure that codes \oct{041}--\oct{046}, \oct{060}--\oct{071},
-\oct{136}, \oct{141}--\oct{146}, and \oct{160}--\oct{171} are present and that
-each unrepresentable in-\cutpar
-
-\bugonpage A373, lines 21 and 22 (01/17/21)
-
-\ninepoint\noindent
-and \.{\char`\\if...\char`\\fi}
-tests, as well as special operations like \.{\char`\\the}
-and \.{\char`\\input}, while the
-latter category includes the primitive commands listed in Chapters~24--26.
-The expansion of\cutpar
-
-\bugonpage A375, bottom three lines (06/30/20)
-
-\ninepoint\noindent
-|$$\generaldisplay$$| to be invoked, with |\eq| defined to be $\alpha$.
-Furthermore, when an equation number~$\beta$ is present, it should be stored
-in |\eqn|, and the test |\ifeqno| should be true.
-In such cases |\ifleqno| should distinguish |\leqno| from |\eqno|.
-Here\cutpar
-
-\bugonpage A398, lines 4 and 5 (08/26/17)
-
-\ninepoint\indent
-|\setbox2=\lastbox \setbox\footins=\vbox{\box2}|\par
-\smallskip\noindent
-since |\lastbox| will be the result of\/ |\rigidbalance|, which is an hbox.
-
-\bugonpage A407, line 5 from the bottom (06/30/20)
-
-\ninepoint\noindent\quad
-| \interlinepenalty5000\def\par{\endgraf\penalty5000 }}|
-
-\bugonpage A413, line 11 from the bottom (05/14/19)
-
-\ninepoint\indent
-The computer file |texbook.tex| that generated {\sl The \TeX book\/} begins
-with a\cutpar
-
-\bugonpage A418, line 4 (05/14/19)
-
-\ninepoint\noindent
-\TeX\ commands
-that look like this in the file |texbook.tex|:
-
-\bugonpage A420, line 11 (06/30/20)
-
-\ninepoint\noindent
-|\def\bull{\vrule height.9ex width.8ex depth-.1ex \relax} % square bullet|
-
-\bugonpage A423, line 16 (06/30/20)
-
-\ninepoint\noindent
-| \vrule height6pt depth2pt width0pt \relax} % a strut for \insert\margin|
-
-\bugonpage A445, lines 10--14 (12/10/18)
-
-\ninepoint
-\textindent{\bf 15e.} Enclose the vbox that was constructed in Rule 15c or 15d by
-delimiters $(\lambda,\rho)$
-whose height plus depth is at least $\sigma_{20}$, if $C>T$, and at
-least $\sigma_{21}$ otherwise. Shift the delimiters up or down so that they are
-vertically centered with respect to the axis. Replace the generalized
-fraction by an Ord atom whose nucleus is the resulting sequence of three boxes
-($\lambda$, vbox, $\rho$). Go to rule~19.
-
-\bugonpage A446, the bottom three lines of Rule 19 become four lines (01/10/21)
-
-\ninepoint\noindent
-atom and the right boundary item to
-a Close atom. The entire resulting list now becomes the nucleus of an
-Inner atom. \ (All of the calculations in this step are done with
-$C$ equal to the starting style of the math list; style items in the
-middle of the list do not affect the style of the right boundary item.)
-
-\bugonpage A454, lines 17 and 18 from the bottom (04/13/20)
-
-\ninepoint\noindent
-of the process; the trial word consists of all the letters found in admissible
-items, up to a maximum of~63. Notice that all of these letters are in font~$f$.
-
-\bugonpage A458 and following, selected amendments to the index (01/18/21)
-
-\eightpoint
-|[1]| (progress report), 23, $\underline{119}$.\par
-|\aa| ( \aa\ ), {\it52}, $\underline{356}$.\par
-|\AA| ( \AA\ ), {\it52}, $\underline{356}$.\par
-\<disc text>, $\underline{287}$, 292.\par
-\<general text>, $\underline{276}$, 279, 280.\par
-\<horizontal mode material>, 278, 285, 287.\par
-integral signs, {\sl see\/} |\int|, |\oint|, |\smallint|.\par
-\<math mode material>, 287, 289--293.\par
-|\null|, 311, {\it312}, {\it316}, {\it332}, {\it335}, $\underline{351}$, {\it354}, {\it360}--{\it362}, {\it419}.\par
-|\o| ( \o\ ), {\it52}, $\underline{356}$.\par
-|\O| ( \O\ ), {\it52}, $\underline{356}$.\par
-programs, for computers, 38, 165, {\it234}.\par
-repeating templates, {\sl see\/} periodic preambles.\par
-replacement text, {\it200}--{\it204}, 212, 280, 300, 329.\par
-right delimiters, {\sl see\/} closings.\par
-struts, $\underline{82}$, 125, 131, 142, 155, 178, 245--247, 255, 329, 416, 422, 423.\par
-\<vertical mode material>, 278, 280--282, 290.
-
-
- % volume B
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\dts{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage Bv {(formerly Bvii)}, bottom two lines (01/15/21)
-
-\eightpoint\noindent
-all of those changes.
-I~now believe that the final bug was discovered on 22 October 2020
-and removed in version 3.141592653. % on 12 January 2021
-The finder's fee has converged to \$327.68.
-
-\hsize=35pc
-
-\bugonpage B2, line 10 from the bottom (01/15/21)
-
-\ninepoint\noindent\hskip10pt
-{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]TeX,\]Version\]3.141592653\char'23}\quad
-$\{\,$printed when \TeX\ starts$\,\}$
-
-\bugonpage B4, line 8 of \S7 (04/02/17)
-
-\tenpoint\noindent
-diagnostic information for \.{\char`\\tracingparagraphs},
-\.{\char`\\tracingpages}, and \.{\char`\\tracingrestores}.
-
-\bugonpage B21, lines 33 and 34 (04/02/17)
-
-\def\Oct#1{\hbox{\rm\char'23\kern-.2em\it#1\/\kern.05em}} % octal constant
-\tenpoint\noindent
-$[\Oct{41}\to\Oct{46},\Oct{60}%
-\to\Oct{71},\Oct{136},\Oct{141}\to\Oct{146},\Oct{160}\to\Oct{171}]$ must be printable.
-Thus, at least 80 printable characters are needed.
-
-\bugonpage B28, lines 3 and 4 (04/02/17)
-
-\tenpoint\noindent
-not serious since we assume that this
-part of the program is system dependent.
-
-\bugonpage B28, line 2 from the bottom (04/02/17)
-
-\ninepoint\noindent\quad
-{\bf var} $k$: $0\dts23$;\quad$\{\,$index to current digit; we assume
- that $\vert n\vert<10^{23}\,\}$
-
-\bugonpage B35, line 2 of \S83 becomes two lines (06/27/20)
-
-\ninepoint\noindent\quad
-{\bf loop begin} \\{continue}: {\bf if} $\\{interaction}\ne\\{error\_stop\_mode}$
- {\bf then return};\par
-\noindent\qquad
-\\{clear\_for\_error\_prompt}; \ \\{prompt\_input}(\.{"?\]"});
-
-\bugonpage B36, line 11 of \S84 (07/03/20)
-
-\ninepoint\noindent\quad
-\.{"E"}: {\bf if} $\\{base\_ptr}>0$ {\bf then if}
- $\\{input\_stack}[\\{base\_ptr}].\\{name\_field}\ge256$ {\bf then}
-
-\bugonpage B36, line 5 of \S85 becomes two lines (07/03/20)
-
-\ninepoint\noindent\quad
-{\bf if} $\\{base\_ptr}>0$ {\bf then}\par
-\noindent\qquad
-{\bf if} $\\{input\_stack}[\\{base\_ptr}].\\{name\_field}\ge256$ {\bf then}
-\\{print}(\.{"E\]to\]edit\]your\]file."}
-
-\bugonpage B40, line 5 from the bottom (08/07/20)
-
-\ninepoint\noindent\qquad
-(\.{"Try\]to\]insert\]an\]instruction\]for\]me\](e.g.,\]%
- \char`\`I\char`\\showlists\char`\'),"})
-
-\bugonpage B58, lines 2 and 3 of \S136 (10/11/20)
-
-\tenpoint\noindent
-the values corresponding to `\.{\char`\\hbox\char`\{\char`\}}'.
-The \\{sub\_type}
-field is set to \\{min\_quarterword}, for historic reasons that are no
-longer relevant.
-
-\bugonpage B88, line 16 (10/22/20)
-
-\tenpoint\noindent
-The mode is temporarily set to zero while processing \.{\char`\\write} texts.
-
-\bugonpage B102, lines 3 and following of \S241 (12/11/20)
-
-\tenpoint\noindent
-information, something special
-is needed. The program here simply assumes that suitable values appear in
-the global variables \\{sys\_time}, \\{sys\_day}, \\{sys\_month}, and
-\\{sys\_year} (which are initialized to noon on 4 July 1776,
-in case the implementor is careless).
-\smallskip
-\ninepoint\noindent
-{\bf procedure} \\{fix\_date\_and\_time};\par
-\noindent\quad{\bf begin}
-$\\{sys\_time}\gets12\ast60$; \
-$\\{sys\_day}\gets4$; \
-$\\{sys\_month}\gets7$; \
-$\\{sys\_year}\gets1776$;\quad
-$\{\,$self-evident truths$\,\}$\par
-\noindent\quad$\\{time}\gets\\{sys\_time}$;\quad
- $\{\,$minutes since midnight$\,\}$\par
-\noindent\quad$\\{day}\gets\\{sys\_day}$;\quad$\{\,$day of the month$\,\}$\par
-\noindent\quad$\\{month}\gets\\{sys\_month}$;\quad$\{\,$month of the year$\,\}$\par
-\noindent\quad$\\{year}\gets\\{sys\_year}$;\quad$\{\,$Anno Domini$\,\}$\par
-\noindent\quad{\bf end};
-
-\bugonpage B103, replacement for \S246 (12/11/20)
-
-\tenpoint\noindent
-{\bf 246.}\quad Of course we had better declare a few more global variables,
-if the previous routines are going to work.
-\smallskip
-\ninepoint\noindent
-$\langle\,$Global variables {\sevenrm\kern.5em13}$\,\rangle+\equiv$\par
-\noindent\\{old\_setting}: $0\dts\\{max\_selector}$;\par
-\noindent\\{sys\_time}, \\{sys\_day}, \\{sys\_month}, \\{sys\_year}: \\{integer};
-\quad$\{\,$date and time supplied by external system$\,\}$
-
-\goodbreak
-\bugonpage B122, lines 9 and 10 of \S291 (10/12/20)
-
-\tenpoint\noindent\quad
-The enclosing \.{\char'173} and \.{\char'175} characters of a macro
-definition are omitted, but an output routine
-will be enclosed in braces.
-
-\bugonpage B143, lines 2, 3, 4 become four lines (01/15/17)
-
-\tenpoint\noindent
-routines that should be aborted, but we can sketch the
-ideas here: For a runaway definition or a runaway balanced text,
-we will insert a right brace; for a
-runaway preamble, we will insert a special \.{\char`\\cr} token and a right
-brace; and for a runaway argument, we will set \\{long\_state} to
-\\{outer\_call} and insert \.{\char`\\par}.
-
-\bugonpage B188, line 8 (04/02/17)
-
-\ninepoint\noindent
-{\bf function} \\{str\_toks}$(b:\\{pool\_pointer})$: \\{pointer};\quad
- $\{\,$converts \\{str\_pool}$[b\dts\\{pool\_ptr}-1]$ to a token list$\,\}$
-
-\bugonpage B192, line 17 (10/22/20)
-
-\ninepoint\noindent\quad
-{\bf label} \\{found}, \\{continue}, \\{done}, \\{done1}, \\{done2};
-
-\bugonpage B192, line 3 of \S474 (10/22/20)
-
-\ninepoint\noindent\qquad
-{\bf begin} \\{continue}: \\{get\_token};\quad$\{\,$set \\{cur\_cmd},
- \\{cur\_chr}, \\{cur\_tok}$\,\}$
-
-\bugonpage B193, line 4 of \S476 (05/20/20)
-
-\ninepoint\noindent\quad
-{\bf if} $\\{cur\_tok}<\\{left\_brace\_limit}$ {\bf then}
-
-\bugonpage B193, line 10 of \S476 becomes two lines (10/22/20)
-
-\ninepoint\noindent\qquad
-\\{help2}(\.{"I\char`\'m\]going\]to\]ignore\]the\]\#\]sign\]you\]just\]used,"})\par
-\noindent\qquad
-(\.{"as\]well\]as\]the\]token\]that\]followed\]it."});
-\\{error}; {\bf goto} \\{continue};
-
-\bugonpage B196, line 5 from the bottom (02/17/18)
-
-\ninepoint\noindent\qquad\quad
-\\{help1}(\.{"This\]\char`\\read\]has\]unbalanced\]braces."});
-$\\{align\_state}\gets1000000$;
-$\\{limit}\gets0$;
-\\{error};
-
-\bugonpage B199, lines 1--3 of \S494 (10/25/20)
-
-\tenpoint\noindent
-{\bf 494.} \ \ Here is a procedure that ignores text until coming to an \.{\char`\\or},
-\.{\char`\\else}, or \.{\char`\\fi} at the current level
-of $\.{\char`\\if}\ldots\.{\char`\\fi}$
-nesting. After it has acted, \\{cur\_chr} will indicate the token that
-was found, but \\{cur\_tok} will not be set (because this makes the
-procedure run faster).
-
-
-\bugonpage B214, lines 2--6 of \S536 (12/11/20)
-
-\ninepoint\noindent\quad
-{\bf begin} \\{wlog}(\\{banner});
-\\{slow\_print}(\\{format\_ident});
-\\{print}(\.{"\]\]"});
-\\{print\_int}(\\{sys\_day});
-\\{print\_char}(\.{"\]"});\par
-\noindent\quad
-$\\{months}\gets\.{\char`\'JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC\char`\'}$;\par
-\noindent\quad
-{\bf for} $k\gets3\ast\\{sys\_month}-2$ {\bf to} $3\ast\\{sys\_month}$
-{\bf do} \\{wlog}(\\{months}[$k$]);\par
-\noindent\quad
-\\{print\_char}(\.{"\]"});
-\\{print\_int}(\\{sys\_year});
-\\{print\_char}(\.{"\]"});
-\\{print\_two}(\\{sys\_time} {\bf div} 60);
-\\{print\_char}(\.{":"});\par
-\noindent\quad
-\\{print\_two}(\\{sys\_time} {\bf mod} 60);
-
-\bugonpage B214, line 2 of \S537 becomes two lines (10/29/20)
-
-\tenpoint\noindent
-command is being processed.
-Beware: For historic reasons, this code foolishly conserves a tiny bit
-of string pool space; but that can confuse the interactive `\.E' option.
-
-\bugonpage B214, bottom line (10/29/20)
-
-\ninepoint\noindent
-{\bf if} $\\{name}=\\{str\_ptr}-1$ {\bf then}
-\ $\{\,$conserve string pool space (but see note above)$\,\}$
-
-\bugonpage B219, lines 18--20 of \S545 (09/19/19)
-
-\tenpoint\noindent
-so-called boundary character of this font;
-the value of \\{next\_char} need not lie between \\{bc} and~\\{ec}.
-If the very last instruction of the \\{lig\_kern} array has $\\{skip%
-\_byte}=255$,
-there is a special ligature/kerning program for a boundary character at the
-left, beginning at location $256\ast\\{op\_byte}+$\cutpar
-
-\bugonpage B282, line 1 {(and change lines 20--23 accordingly)} (04/02/17)
-
-\tenpoint\noindent
-{\bf 682.} Each portion of a formula is classified as Ord, Op, Bin, Rel, Open,
-Close, Punct, or Inner, for\cutpar
-
-\bugonpage B299, line 4 from the bottom of \S722 (10/06/20)
-
-\ninepoint\noindent\qquad\quad
-{\bf begin} \\{char\_warning}(\\{cur\_f}, \\{qo}(\\{cur\_c}));
-$\\{math\_type}(a)\gets\\{empty}$;
-$\\{cur\_i}\gets\\{null\_character}$;
-
-\bugonpage B318, lines 16 and 17 of \S761 become one (03/25/19)
-
-\ninepoint\noindent
-\\{fraction\_noad}: $s\gets\\{fraction\_noad\_size}$;
-
-\bugonpage B333, line 5 of \S793 becomes two lines (01/10/20)
-
-\ninepoint\noindent\quad
-$\\{cur\_loop}\gets\\{link}(\\{cur\_loop})$;
-$\\{link}(p)\gets\\{new\_glue}(\\{glue\_ptr}(\\{cur\_loop}))$;\par
-\noindent\quad
-$\\{subtype}(\\{link}(p))\gets\\{tab\_skip\_code}+1$;
-
-\bugonpage B348, insert a new line after line 5 of \S826 (01/15/17)
-
-\ninepoint\noindent\qquad
-{\bf stat if} $\\{tracing\_paragraphs}>0$ {\bf then}
-\\{end\_diagnostic}(\\{true}); \ {\bf tats}
-
-\bugonpage B348, insert a new line to be the seventh line after the previous change (01/15/17)
-
-\ninepoint\noindent\qquad
-{\bf stat if} $\\{tracing\_paragraphs}>0$ {\bf then}
-\\{begin\_diagnostic}; \ {\bf tats}
-
-\bugonpage B377, line 6 (10/31/20)
-
-\ninepoint\noindent
-\\{hn}: $0\dts64$; \ $\{\,$the number of positions occupied in \\{hc};
- not always a \\{small\_number}$\,\}$
-
-\bugonpage B417, mini-index (04/02/17)
-
-\eightpoint\noindent
-The entry `\\{height}, \S981.' here and on many later
-odd-numbered pages should be `$\\{height}=\rm macro$, \S135.'
-
-\bugonpage B522, line 3 of \S1306. (10/25/20)
-
-\tenpoint\noindent
-to be in the range $a\le x\le b$.
-System error messages should be suppressed when undumping.
-
-\bugonpage B533, lines 5--8 of \S1333. (10/15/20)
-
-\tenpoint\noindent
-loop.
-(Actually there's one way to get error messages, via \\{prepare\_mag};
-but that can't cause infinite recursion.)\par
-\noindent\quad
-If \\{final\_cleanup} is bypassed, this program doesn't bother to
-close the input files that may still be open.
-
-\bugonpage B533, line 12 of \S1333. (11/29/20)
-
-\ninepoint\noindent\quad
-{\bf begin} $\langle\,$Finish the extensions{\sevenrm\kern.5em1378}$\,\rangle$;
-$\\{new\_line\_char}\gets-1$;
-
-\bugonpage B534, line 6 of \S1335. (11/29/20)
-
-\ninepoint\noindent\quad
-{\bf begin} $c\gets\\{cur\_chr}$;
-{\bf if} $c\ne1$ {\bf then} $\\{new\_line\_char}\gets-1$;
-
-\bugonpage B537, line 18 of \S1338 becomes two lines (10/05/20)
-
-\ninepoint\noindent\quad
-{\bf begin} \\{clear\_terminal};\par
-\noindent\quad
-{\bf loop}
-
-\bugonpage B537, lines 11 and 12 from the bottom of \S1338
- become three lines (04/02/17)
-
-\ninepoint\noindent\qquad\qquad
-{\bf begin goto} \\{breakpoint};\par
-\noindent\qquad\qquad\quad$\{\,$go to every declared label at least once$\,\}$\par
-\noindent\qquad\quad\\{breakpoint}: $m\gets0$;
- \.{@\char`\{\char`\'BREAKPOINT\char`\'@\char`\}}
-
-\bugonpage B600, the bottom five lines (05/14/19)
-
-\tenpoint\noindent
-they occupy in a typical production system
-(executable code size for dark blocks, global data size for light blocks).
-In this way the chart indicates a total of about
-$12\times22=264${\ninerm K} bytes of memory, plus
-$12\times10=120${\ninerm K} for the
-dynamic memory region not shown explicitly. The dynamic memory
-is often considerably larger in practice, because it is desirable to
-accommodate large macro packages and large pages.
-
-
- % volume C
-\hsize=29pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\dashto{\mathrel{\hbox{-\thinspace-\kern-.05em}}}
-\def\ddashto{\mathrel{\hbox{-\thinspace-\thinspace-\kern-.05em}}}
-\def\tension{\mathop{\rm tension}}
-\def\controls{\mathop{\rm controls}}
-\def\and{\,{\rm and}\,}
-
-\bugonpage Cx, line 4 from the bottom (06/14/20)
-
-\count255=1
-\def\diamondleaders{\global\advance\count255 by 1
- \ifodd\count255 \kern-10pt \fi
- \leaders\hbox to 20pt{\ifodd\count255 \kern13pt \else\kern3pt \fi
- .\hss}}
-\line{\strut
- \hbox to\parindent{\bf\hbox to 1em{\hss20}\hss}%
- \rm More About Macros\diamondleaders\hfil\hbox to 2em{\hss175}}
-
-\bugonpage C39, lines 10 and 11 become three lines (07/04/20)
-
-\tenpoint\noindent
-that has already been designed. All you'll see is
-`|(io.mf| |The| |letter| |O| |[79])|' or possibly only `|(io.mf| |[79])|',
-followed by~`|*|'. Now the fun starts: You should type
-
-\bugonpage C68, lines 9, 28, 35, 36, 38 (11/11/17)
-
-\ninepoint
-\halign{\indent\hbox to 160pt{\tt#\hfil}&\tt#\hfil\cr
-uniformdeviate -100&-36.1628\cr
-z slanted 1/6&(0.16667y+x,y)\cr
-(a,b)zscaled(3,4)&(-4b+3a,3b+4a)\cr
-(a,b)zscaled dir 30&(-0.5b+0.86603a,0.86603b+0.5a)\cr
-(a,b)dotprod(3,4)&4b+3a\cr
-}
-
-\bugonpage C72, lines 4--18 (07/16/20)
-
-\ninepoint\noindent
-\beginsyntax
-<numeric atom>\is<numeric variable>
- \alt<numeric token primary>
- \alt[(]<numeric expression>[)]
- \alt[normaldeviate]
- \alt[length]<string primary>
- \alt[length]<path primary>
- \alt[length]<pair primary>
- \alt[angle]<pair primary>
- \alt[xpart]<pair primary>
- \alt[ypart]<pair primary>
- \alt<numeric operator><numeric primary>
-<numeric token primary>\is<numeric token>[/]<numeric token>
- \alt<numeric token not followed by %
- `{\tt/}$\thinspace\langle$numeric token$\rangle$'\thinspace>
-<numeric primary>\is<numeric atom not followed by {[\char'133]<expression>[,]}>
- \alt<numeric atom>[\char'133]<numeric expression>%
- [,]<numeric expression>[\char'135]
-\endsyntax
-
-\bugonpage C76, lines 8--16 from the bottom (11/11/17)
-
-\newdimen\longesteq
-\setbox0=\hbox{\indent$z_{12}-z_{11}=z_{14}-z_{13}$\quad}
-\longesteq=\wd0
-\tenpoint\noindent \hangindent\longesteq \hangafter0
-tom edge of the type.
-\ (With plain \MF's {\bf beginchar} each
-character has a ``bounding box'' that runs from $(0,h)$
-at the upper left and $(w,h)$ at the upper right to $(0,-d)$ and~$(w,-d)$
-at the lower left and lower right; variable $d$ represents the depth of
-the type. The values of $w$, $h$, and~$d$ might change from character to
-character, since the individual pieces of type need not have the same size
-in a computer-produced font.)
-
-\bugonpage C80, line 14 (06/13/20)
-
-\tenpoint\indent
-\\{penpos}\<suffix>(\<unknown>,\thinspace\<known>).
-
-\bugonpage C83, line 16 (06/13/20)
-
-\ninepoint\indent
-|### 0.5a=-c-0.5b+1.5|
-
-\bugonpage C83, line 19 (06/13/20)
-
-\ninepoint\noindent
-the only
-dependent variable is now $d$, which equals $0.5c+0.75b+0.75$. \ (This is\cutpar
-
-\bugonpage C96, line 13 from the bottom (10/31/20)
-
-\tenpoint\noindent
-illustrates the
-use of $u\0$, $s\0$, $\\{ht}\0$, \\{logo\_pen}, \\{leftstemloc}, $o$,
-\\{xgap}, and \\{barheight}:
-
-\bugonpage C106, lines 19--21 (07/03/20)
-
-\ninepoint\noindent
-pixels. \ (Some typesetting
-systems use both of these device-dependent amounts to alter their current
-position on a page, just after typesetting each character. Other systems,
-like typical |dvi| software associated with \TeX, assume that $\\{chardy}=0$
-but use \\{chardx}\cutpar
-
-\bugonpage C113, lines 5--11 from the bottom (07/20/20)
-
-\def\cycle{\hbox{\rm cycle}}
-\ninepoint\noindent
-\begindisplay
-$s\0:=5\\{pt}\0$; \ {\bf define\_pixels}$(s)$; \ \% side of the square\cr
-$z_1=(0,0)$; \ $z_2=(s,0)$; \ $z_3=(0,s)$; \ $z_4=(s,s)$;\cr
-{\bf for} $k=1$ {\bf upto} 4:
- $z[k+4]=z[k]+({2\over3}s,{1\over3}s)$; \ {\bf endfor}\cr
-{\bf pickup pencircle} scaled $.4\\{pt}$; \
-{\bf draw} $z_5\dashto z_6\dashto z_8\dashto z_7\dashto \cycle$;\cr
-{\bf pickup pencircle} scaled $1.6\\{pt}$; \
-{\bf erase draw} $z_2\dashto z_4\dashto z_3$;\cr
-{\bf pickup pencircle} scaled $.4\\{pt}$; \
-{\bf draw} $z_1\dashto z_2\dashto z_4\dashto z_3\dashto \cycle$;\cr
-{\bf for} $k=1$ {\bf upto} 4:
- {\bf draw} $z[k]\dashto z[k+4]$; \ {\bf endfor}.\cr
-\enddisplay
-
-\bugonpage C114, line 7 (07/20/20)
-
-\ninepoint\indent
-{\bf for} $k=0$ {\bf upto} 4: \ $z[k]=\\{center}+(\\{radius},0)$
- rotated$(90+{360\over5}k)$; \ {\bf endfor}
-
-\bugonpage C128, lines 13 and 14 (06/13/20)
-
-\ninepoint\noindent
-changed. Plain \MF\ has a {\bf tensepath} operation
-that does this. For example, {\bf tensepath}~\\{unitsquare}~$=$
-$(0,0)\ddashto(1,0)\ddashto(1,1)\ddashto(0,1)\ddashto\cycle$.
-
-\bugonpage C136, lines 18 and 19 (07/17/20)
-
-\ninepoint\noindent
-only
-about 0.28 with respect to the initial and final directions; since \MF\ insists
-that tensions be at least~0.75, this anomalous path could never have arisen
-if the control\cutpar
-
-\bugonpage C155, line 7 (10/07/20)
-
-\tenpoint\indent
-\<program>\is\<statement list>\<statement>\thinspace|end|
-
-\bugonpage C160, lines 7--9 (06/25/20)
-
-\ninepoint\noindent
-might produce a transcript
-that includes the following diagnostic information:
-\begintt
-rotatedaround(EXPR0)(EXPR1)->
- shifted-(EXPR0)rotated(EXPR1)shifted(EXPR0)
-\endtt
-
-\bugonpage C165, lines 5--7 from the bottom (11/11/17)
-
-\ninepoint\noindent
-(i.e., parameters in parentheses),
-then we name zero or one or two undelimited parameters.
-Then comes an `$=$'~sign,
-followed by the replacement text, and {\bf enddef}. The `$=$'~sign might also
-be~`$:=$'\thinspace; both mean the same thing.
-
-\bugonpage C171, lines 18--20 (08/16/20)
-
-\ninepoint\indent
-Chapter~14's syntax rules for
-\<path primary>, via \<pair primary>.
-A pair expression is not considered to be
-of type {\bf path} unless the path interpretation is the only~possibility.
-
-\bugonpage C176, line 7 from the bottom (07/09/20)
-
-\ninepoint\indent
-\quad {\bf if} |@#|$(\\{x\_})\colon\ \\{tx\_} \ \hbox{\bf else}\colon\
- \\{fx\_}\ \hbox{\bf fi}$
- :=\ \\{x\_}\thinspace; {\bf endfor}
-
-\bugonpage C180, line 3 from the bottom (06/24/20)
-
-\ninepoint\indent
-`$=$' or `$:=$' following {\bf let}.
-
-\bugonpage C187, line11 from the bottom (07/12/20)
-
-\ninepoint\indent\qquad
-\alt|substring|\thinspace\<pair expression>\thinspace|of|\thinspace
- \<string primary>
-
-\bugonpage C189, line 14 (06/13/20)
-
-\ninepoint\noindent
-`|! |' and followed
-by~`|.|', followed by lines of context as in \MF's normal error\cutpar
-
-\bugonpage C200, line 12 from the bottom (08/27/20)
-
-\ninepoint\indent
-$y_1=y_2=\\{good.y}(.5[-d,h]+1.1\\{pt})$;
-
-\bugonpage C202, line 17 from the bottom (06/13/20)
-
-\ninepoint\noindent
-command,
-and it works only when the \\{penpos} angle is~0. If the \\{penpos} command
-is\cutpar
-
-\bugonpage C210, bottom eight lines, and top ten lines of page C211 (07/16/20)
-
-\ninepoint\noindent
-\beginsyntax
-<numeric atom>\is<numeric variable>\alt<numeric argument>
- \alt<numeric token primary>
- \alt<internal quantity>
- \alt[normaldeviate]
- \alt[(]<numeric expression>[)]
- \alt[begingroup]<statement list><numeric expression>[endgroup]
- \alt[length]<numeric primary>\alt[length]<pair primary>
- \alt[length]<path primary>\alt[length]<string primary>
- \alt[ASCII]<string primary>\alt[oct]<string primary>\alt[hex]<string primary>
- \alt<pair part><pair primary>\alt<transform part><transform primary>
- \alt[angle]<pair primary>
- \alt[turningnumber]<path primary>\alt[totalweight]<picture primary>
- \alt<numeric operator><numeric primary>
- \alt[directiontime]<pair expression>[of]<path primary>
-<numeric token primary>\is<numeric token>[/]<numeric token>
- \alt<numeric token not followed by %
- `{\tt/}$\thinspace\langle$numeric token$\rangle$'\thinspace>
-<numeric primary>\is<numeric atom not followed by {[\char'133]<expression>[,]}>
- \alt<numeric atom>[\char'133]<numeric expression>%
- [,]<numeric expression>[\char'135]
-\endsyntax
-
-\bugonpage C214, line 6 becomes two lines (07/17/20)
-
-\ninepoint\noindent
-\beginsyntax
-<future pen primary>\is<future pen argument>
- \alt[pencircle]
-\endsyntax
-
-\bugonpage C214, line 6 from the bottom (07/12/20)
-
-\ninepoint\noindent
-\beginsyntax
- \alt[substring]<pair expression>[of]<string primary>
-\endsyntax
-
-\bugonpage C217, lines 20--25 (10/07/20)
-
-\ninepoint\noindent
-\beginsyntax
-<program>\is<statement list><non-title statement>[end]
- \alt<statement list><non-title statement>[dump]
-<statement list>\is<empty>\alt<statement>[;]<statement list>
-<statement>\is<empty>\alt<title>
- \alt<equation>\alt<assignment>\alt<declaration>
- \alt<definition>\alt<compound>\alt<command>
-\endsyntax
-
-\bugonpage C219, line 25 (05/25/20)
-
-\ninepoint\noindent
-to see which of its subscripts and suffixes have occurred.
-For example, if you're\cutpar
-
-\bugonpage C224, lines 7--9 from the bottom (12/21/18)
-
-\tenpoint\indent
-|y4r=-0.9848thinn+259.00049|\par
-|x4r=-0.08682thinn+144|\par
-|y4=-0.4924thinn+259.00049|
-
-\bugonpage C226, lines 9 and 10 (11/01/20)
-
-\ninepoint\noindent
-This means that the preloaded base you have specified cannot be used,
-because it is corrupted or was prepared for a different version of
-\MF\kern-.03em.
-
-\bugonpage C228, line 27 (06/19/20)
-
-\ninepoint\indent
-|l.94 endfor|
-
-\bugonpage C228, line 4 from the bottom (07/12/20)
-
-\ninepoint\noindent
-might want to review now.) \
-You probably also have a |proof| mode diagram:
-
-\bugonpage C234, line 4 of answer 4.6 (07/20/20)
-
-\ninepoint\indent
-{\bf for} $k=1$ {\bf upto} 6: $z[k]'=.2[z[k],z_0]$; {\bf endfor}
-
-\bugonpage C241, line 2 (11/11/17)
-
-\ninepoint\indent
-|\mode=cheapo; input cheaplogo10|
-
-\bugonpage C242, line 11 of answer 13.7 (07/20/20)
-
-\ninepoint\indent
-{\bf for} $k=1$ {\bf upto} 4:
- $z[k+4]=z[k]+({2\over3}s,{1\over3}s)$; \ {\bf endfor}
-
-\bugonpage C243, lines 7 and 8 (11/08/15)
-
-\ninepoint\indent
-\indent {\bf draw} subpath$(k,k+1)$ of \\{star}; {\bf cullit};\par\indent
-\indent {\bf undraw} subpath$(k+2,k+3)$ of \\{star} {\bf withpen}
- \\{eraser}; {\bf cullit};
-
-\bugonpage C243, line 3 of answer 13.11 (06/17/20)
-
-\ninepoint\indent
-{\bf def overdraw expr} $c$ = {\bf begingroup save} \\{region};
-
-\bugonpage C243, lines 12--16 of answer 13.11 (05/24/20)
-
-\ninepoint\noindent
-\begindisplay
-{\bf beginchar}$(\hbox{\tt"M"},1.25\\{in}\0,.5\\{in}\0,0)$; \
- {\bf pickup pencircle} scaled .4\\{pt};\cr
-$z_1=(20,-13)$; \ $z_2=(30,-6)$; \ $z_3=(20,1)$; \ $z_4=(4,-7)$;\cr
-\indent $z_5=(-12,-13)$; \ $z_6=(-24,-4)$; \ $z_7=(-15,6)$;\cr
-{\bf path} $M$; $M=(\\{origin}\dts
- z_1\dts z_2\dts z_3\dts z_4\dts z_5\dts z_6\dts z_7\dts$\cr
-\indent$\\{origin}\dts -z_7\dts -z_6\dts -z_5\dts -z_4\dts
- -z_3\dts -z_2\dts -z_1\dts\cycle)$\cr
-\enddisplay
-
-\bugonpage C246, line 2 of answer 14.13 (08/16/20)
-
-\ninepoint\noindent
-path $z_0\dashto z_1$ is equivalent to `$z_0\dts
-\controls1/3[z_0,z_1]\and2/3[z_0,z_1]\dts z_1$', and the\cutpar
-
-\bugonpage C247, line 1 of answer 15.5 (06/13/20)
-
-\ninepoint\noindent
-\quad{\bf 15.5.}\enspace
-{\bf beginchar}$(126,25u\0,\\{h\_height}\0+\\{border}\0,0)$; \
-|"Dangerous left bend"|;
-
-\bugonpage C247, replacement for answer 15.7 (07/21/20)
-
-\ninepoint\noindent
-\quad{\bf 15.7.}\enspace
-Replace lines 10 and 11 by
-\begindisplay
-{\bf pickup pencircle} scaled 3/4\\{pt} yscaled 1/3 rotated $-60$;\cr
-{\bf draw} ($z_1\ldots p$) transformed $t$;\cr
-{\bf addto} \\{currentpicture} {\bf also} \\{currentpicture}\cr
-\qquad rotatedaround$\bigl((.5w,.5h)$ yscaled \\{aspect\_ratio}$,-180\bigr)$;\cr
-\enddisplay
-
-\bugonpage C249, line 1 of answer 18.9 (08/02/20)
-
-\ninepoint\noindent
-\quad{\bf 18.9.}\enspace
-{\bf beginchar}\kern1pt(|"H"|$,13u\0,"ht"\0,0)$; \
- {\bf pickup} \\{broad\_pen};
-
-\bugonpage C249, line 11 of answer 18.9 (08/02/20)
-
-\ninepoint\indent
-{\bf filldraw} $\\{bot\_serif\_edge}_4$
-
-\bugonpage C250, line 4 of answer 19.1 (04/19/20)
-
-\ninepoint\noindent
-because it saves a wee bit of time and because
-`;'\ often belongs before {\bf endfor}.
-
-\bugonpage C250, replacement for answer 19.3 (07/12/20)
-
-\ninepoint\noindent
-\quad{\bf 19.3.}\enspace
-Yes, if and only if $n-{1\over2}$ is an even integer.
-\ (Because ambiguous values are rounded upwards.)
-
-\bugonpage C251, replacement for answer 22.1 (07/12/20)
-
-\ninepoint\noindent
-\quad{\bf 22.1}\enspace
-(a) If and only if $n$ is an integer between 0 and 255.
-(b) If and only if $s$ is a string of length~1.
-
-\bugonpage C254, lines 10--13 from the bottom become five lines (06/26/20)
-
-\ninepoint\noindent
-\begintt
-? H
-I found no right delimiter to match a left one. So I've
-put one in, behind the scenes; this may fix the problem.
-|null
-?
-\endtt
-
-\bugonpage C260, the ``line'' after line 3 (06/14/20)
-
-\def\bb{$\,\left\{\vcenter\bgroup\halign\bgroup\hfil##\hfil\cr}
-\def\ee{\crcr\egroup\egroup\right\}\,$}
-\tenpoint\noindent
-\bb|font_size|\cr|font_slant|\cr|font_normal_space|\cr
- |font_normal_stretch|\cr|font_normal_shrink|\cr|font_x_height|\cr
- |font_quad|\cr|font_extra_space|\ee
-\bb|=|\cr\noalign{\kern-2pt}|:=|\cr\noalign{\kern-2pt}\<empty>\ee
-\<numeric$\0$>; \
-\bb|ligtable|\<ligs/kerns>\cr|charlist|\<codes>\cr|extensible|\<codes>\cr
- |fontdimen|\<info>\cr|headerbyte|\<info>\ee;\kern-10pt
-
-\bugonpage C261, lines 16 and 17 from the bottom (06/14/20)
-
-\tenpoint\noindent
-\bb|proofrule|\cr|screenrule|\ee|(|\<pair>|,|\<pair>|)|; \
-|makegrid(|\<numerics>|)(|\<numerics>|)|;\smallskip\noindent
-|proofrulethickness| \<numeric$\0$>; \ |proofoffset| \<pair>.
-
-\bugonpage C266, lines 19 and 20 (07/04/20)
-
-\ninepoint\noindent
-You can say either `|incr|~|x|' or `|incr|~|(x)|', within
-an expression; but neither of them are valid statements by themselves.
-
-\bugonpage C269, line 11 (01/10/21)
-
-\ninepoint\indent
-|\smode="specmode"; mag=|\<magnification>|; input |\<font file name>
-
-\bugonpage C277, lines 15--19 (03/06/17)
-
-\ninepoint\noindent
-|def openit = openwindow currentwindow from origen % and please correct|\par
-\noindent
-| to (screen_rows,screen_cols) at (-50,300) enddef; % "(-50,300)" too|\par
-\noindent
-|def showit_ = display currentpicture inwindow currentwindow enddef;|\par
-\noindent
-|def showit = openit; let showit=showit_; showit enddef; % first time only|\par
-\kern3pt\hrule\medskip\noindent
-Plain \MF\ has several other terse commands
-similar to `{\bf openit}' and `{\bf showit}':
-
-\bugonpage C279, line 1 (11/11/17)
-
-\ninepoint\noindent
-| blacker:=.1; % make pens a teeny bit blacker|
-
-\bugonpage C289, line 20 (10/07/20)
-
-\ninepoint\indent
-|if {{(pair x) cand x>(0,0)}}: A else: B fi.|
-
-\bugonpage C291, line 18 (07/24/20)
-
-\ninepoint\indent
-| save u_; setu_ u; let switch_ = if; if false: enddef.|
-
-\bugonpage C292, line 10 from the bottom (10/23/20)
-
-\ninepoint\noindent
-be known by saying `{\bf if} known $(p-q)$: $p=q$ {\bf else}:~{\bf false fi}';
-transforms could be handled\cutpar
-
-\bugonpage C293, lines 13 and 14 from the bottom (10/27/20)
-
-\ninepoint\noindent
-$f(-1)$ is false! When $c\rightarrow0$, the quantity $a^3+b^3$
-approaches $-\infty$ when $c$~is positive, $+\infty$ when $c$~is
-negative. An attempt to `\\{solve} $f(1,-1)$' will divide by zero and
-come\cutpar
-
-\bugonpage C295, line 2 (07/04/20)
-
-\ninepoint\noindent
-`interpolate $(1,1)\dts(3,2)\dts(15,4)$ of~7' the approximate value 3.37.
-
-\bugonpage C299, bottom four lines of code become five (08/06/20)
-
-\ninepoint\noindent
-\begintt
-primarydef t Bernshtein nn = begingroup save r; r =
- begingroup for n=nn downto 2:
- for k=1 upto n-1: u_[[[k]]]:=t[[[u_[[[k]]],u_[[[k+1]]] ]]];
- endfor endfor u_[[[1]]] endgroup; numeric u_[[[]]];
- r endgroup enddef;
-\endtt
-
-\bugonpage C299, line 5 after the code becomes two lines (08/06/20)
-
-\ninepoint\noindent
-brackets are nested inside of brackets.
-However, the auxiliary variables `|u_[[[|$k$|]]]|' must not remain
-independent at the end.
-
-\bugonpage C305, lines 14--18 (07/08/20)
-
-\ninepoint\noindent
-|width_adj#:=0pt#; % width adjustment for certain characters|\par
-\noindent
-|serif_fit#:=0pt#; % extra sidebar near lowercase serifs|
-\vskip-3pt\noindent\qquad\vdots\par\noindent
-|low_asterisk:=false; % should the asterisk be centered at the axis?|\par
-\noindent
-|math_fitting:=false; % should math-mode spacing be used?|
-
-\bugonpage C317, line 21 becomes two lines (11/11/17)
-
-\ninepoint\noindent
-\beginsyntax
-<label>\is<code label>\alt<code>[::]\alt[\\\\:]
-<code label>\is\<code>[:]
-\endsyntax
-
-\bugonpage C318, lines 10--16 from the bottom (11/11/17)
-
-\ninepoint\noindent
-\beginsyntax
- \alt<code label><labeled code>
-<extensible command>\is[extensible]<code label><four codes>
-<four codes>\is<code>[,]<code>[,]<code>[,]<code>
-\endsyntax
-Notice that a \<code label> can appear in a {\bf ligtable}, {\bf charlist}, or
-{\bf extensible} command.
- These appearances are mutually exclusive: No code may be
-used more than once as a label. Thus, for example, a character with a
-ligature/kerning program cannot also be {\bf extensible}, nor can it be
-in a {\bf charlist} (except as the final item).
-
-\bugonpage C333, line 29 (10/25/19)
-
-\ninepoint\noindent
-| "if charcode>0:currentpicture:=currentpicture scaled mg;fi;"|
-
-\bugonpage C333, bottom two lines become one (11/11/17)
-
-\ninepoint\noindent
-| if unknown scale: scale := max(1,round(pixels_per_inch/300)); fi|
-
-\bugonpage C339, line 3 (05/21/20)
-
-\ninepoint\noindent
-ing `\char'31', `\char'32',
-`\char'33', and~`\char'34') and the uppercase letters (including
-`\char'35', `\char'36', and~`\char'37') are\cutpar
-
-\bugonpage C341, line 14 from the bottom (11/11/17)
-
-\ninepoint\noindent
-prints the |\table| and the |\text|; ^|\bigtest| gives
-you the works, plus a mysterious word\cutpar
-
-\bugonpage C345 and following, selected amendments to the index (01/20/21)
-
-\eightpoint
-*|,| (comma), 57, 72, 73, 129, 155, 165--167, 171, 211--213, 218, 317, 318.\par
-`A', 10--11, 163, 164, 248, 302--303.\par
-\<addto command>, 118, $\underline{220}$.\par
-bell-shaped distribution, $\underline{183}$, 251.\par
-|black|, 270, 332--333.\par
-\<code> and \<code label>, $\underline{317}$.\par
-concatenation, of paths, {\it70}--{\it71}, {\it123}, 127--129, $\underline{130}$, 137, {\it245}, {\it266}.\par
-\quad of strings, {\it69}, 73, 84--85, $\underline{187}$, {\it278}, {\it286}, {\it312}.\par
-*|directiontime|, {\it135}, $\underline{\it136}$, 211, 245, 265, {\it298}.\par
-distance, 76, 84, {\sl see also\/} |length|.\par
-|dotprod|, {\it68}--{\it69}, 178, {\it238}, 265.\par
-efficiency, 39, 99, 116, 141, 144, 147, 228, 230, 234, 244, 264, 265, 277, 291, 297, 298.\par
-empty option in {\bf for\/} list, 171, $\underline{172}$, {\it299}.\par
-forbidden tokens, 173, $\underline{218}$--$\underline{219}$, 286.\par
-*|from|, $\underline{191}$, 220, {\it252}, {\it277}, {\it312}.\par
-Giotto di Bondone, 139.\par
-independent variables, $\underline{81}$--$\underline{83}$, 88, 224, 226, 299.\par
-|\init|, $\underline{337}$, 342.\par
-internal quantities, 54--55, 88, 218, 262, 265--266.\par
-*|inwindow|, $\underline{191}$, 220, {\it277}.\par
-\<keep or drop>, $\underline{118}$, 220.\par
-|labels|, {\it107}, $\underline{274}$, 327--328.\par
-*|length|, {\it66}, {\it69}, 72, 210, 238.\par
-*|ligtable|, {\it97}, {\it305}--{\it306}, $\underline{316}$--$\underline{317}$.\par
-loops, 169, 171--173, 179, 226--227, 259, 290--291, 299.\par
-`N', 184--185, 302--303.\par
-\<numeric token primary>, 72, $\underline{211}$.\par
-|o|, {\it23}, {\it34}, $\underline{93}$, 197, 200, 204, 240, 302.\par
-`O', 32--37, 161, 199, 302--303.\par
-overshoot, 23, 34, 93, 197, 200, 204, 302.\par
-|penpos|, {\it26}--{\it29}, 37, 80, {\it103}, {\it162}, $\underline{273}$, 310.\par
-pens, 21--29, 147--152, 297--298.\par
-*|rotated|, {\it21}--{\it22}, {\it25}, 27, 44, {\it68}, 73, {\it107}, {\it114}, {\it117}, $\underline{141}$, 213, {\it238}.\par
-|rule|, 274, 328.\par
-*|scaled|, {\it21}--{\it23}, {\it68}, 73, $\underline{141}$, 213, 244, 291.\par
-*|showstopping|, 211, 219, {\it227}, 230, {\it262}.\par
-string expressions, {\it69}, 187--189, 258, 286.\par
-\<suffix list>, $\underline{171}$, 236.\par
-sum, of vectors, 9, {\it68}.\par
-|test.mf|, 311--313.\par
-\TeX, 1, 34, 40, 91, 96, 98, 101--103, 315, 336--343, 361.\par
-text arguments, 219, 288--291, 299.\par
-|.tfm|, 39, 315--321, 333, 335.\par
-*|to|, $\underline{191}$, 220, {\it252}, {\it277}, {\it312}.\par
-undelimited suffix parameters, $\underline{167}$, 176, 266, 270.\par
-|undraw|, 113, 118, 120, {\it242}, $\underline{271}$.\par
-|unitsquare|, {\it116}, 123--124, 128, 132, 136, $\underline{263}$.\par
-*|unknown|, $\underline{170}$, 210.\par
-unknown quantities, nonnumeric, 84--85, 143.\par
-values, disappearance of, 56, 83, 88, 156--157, 177--178, 218, 239, 299.\par
-\<vardef heading>, 165, $\underline{178}$.\par
-*|xscaled|, {\it21}--{\it22}, {\it68}, 73, $\underline{141}$, 213, 244, 291.\par
-
-
-
- % Volume D
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage Dv, line 16 (01/16/21)
-
-\tenpoint\noindent
-\kern12.5mm I believe that the final bug in \MF\ was discovered on January\cutpar
-
-\bugonpage Dv, bottom two lines (01/16/21)
-
-\eightpoint\noindent
-corporates all of those changes.
-I~now believe that the final bug was discovered on 03 July 2020
-and removed in version 2.71828182. % on 16 January 2021
-The finder's fee has converged to \$327.68.
-
-\hsize=35pc
-
-\bugonpage D2, last line of \S2 (01/15/21)
-
-\ninepoint\noindent
-$$\hbox{{\bf define} $\\{banner}\equiv\.{\char`\'This\]is\]METAFONT,\]Version\]2.71828182\char`\'}$\quad
-$\{\,$printed when \MF\ starts$\,\}$}$$
-
-\bugonpage D14, line 1 of \S30 (05/05/14)
-
-\tenpoint\noindent
-{\bf 20.} \quad The \\{input\_ln} function brings the next line of input from the specified
-file into available\cutpar
-
-\bugonpage D21, line 8 of \S47 (10/11/20)
-
-\ninepoint\noindent\quad
-$g$: \\{str\_number};\quad$\{\,$the string just created$\,\}$
-
-\bugonpage D27, lines 3 and 4 of \S61 (04/02/17)
-
-\tenpoint\noindent
-is not serious since we assume that this
-part of the program is system dependent.
-
-\bugonpage D28, line 7 (04/02/17)
-
-\ninepoint\noindent\quad
-{\bf var} $k$: $0\dts23$;\quad$\{\,$index to current digit; we assume
- that $\vert n\vert<10^{23}\,\}$
-
-\bugonpage D32, line 2 of \S78 becomes two lines (06/27/20)
-
-\ninepoint\noindent\quad
-{\bf loop begin} \\{continue}: {\bf if} $\\{interaction}\ne\\{error\_stop\_mode}$
- {\bf then return};\par
-\noindent\qquad
-\\{clear\_for\_error\_prompt}; \ \\{prompt\_input}(\.{"?\]"});
-
-\bugonpage D32, line 11 of \S79 (07/03/20)
-
-\ninepoint\noindent\quad
-\.{"E"}: {\bf if} $\\{file\_ptr}>0$ {\bf then if}
- $\\{input\_stack}[\\{file\_ptr}].\\{name\_field}\ge256$ {\bf then}
-
-\bugonpage D33, line 5 of \S80 (07/03/20)
-
-\ninepoint\noindent\quad
-{\bf if} $\\{file\_ptr}>0$ {\bf then}\par
-\noindent\qquad
-{\bf if} $\\{input\_stack}[\\{file\_ptr}].\\{name\_field}\ge256$ {\bf then}
-\\{print}(\.{"E\]to\]edit\]your\]file."}
-
-\bugonpage D37, line 9 of \S93 (08/07/20)
-
-\ninepoint\noindent\qquad
-(\.{"Try\]to\]insert\]an\]instruction\]for\]me\](e.g.,\]%
- \char`\`I\]show\]x;\char`\'),"})
-
-\bugonpage D82, line 2 from the bottom (09/19/19)
-
-\ninepoint\noindent\quad
-{\bf define} $\\{boundary\_char}=41$\quad$\{\,$the boundary character for ligatures$\,\}$
-
-\bugonpage D85, lines 3 and 4 of \S194 {(and \S194 actually moves to page D86)} (12/11/20)
-
-\tenpoint\noindent
-information, something special
-is needed. The program here simply assumes that suitable values appear in
-the global variables \\{sys\_time}, \\{sys\_day}, \\{sys\_month}, and
-\\{sys\_year} (which are initialized to noon on 4 July 1776,
-in case the implementor is careless).
-
-\bugonpage D85, the final six lines of \S194 {(and \S194 actually moves to page D86)} (12/11/20)
-
-\ninepoint\noindent
-{\bf procedure} \\{fix\_date\_and\_time};\par
-\noindent\quad{\bf begin}
-$\\{sys\_time}\gets12\ast60$; \
-$\\{sys\_day}\gets4$; \
-$\\{sys\_month}\gets7$; \
-$\\{sys\_year}\gets1776$;\quad
-$\{\,$self-evident truths$\,\}$\par
-\noindent\quad$\\{internal}[\\{time}]\gets\\{sys\_time}\ast\\{unity}$;\quad
- $\{\,$minutes since midnight$\,\}$\par
-\noindent\quad$\\{internal}[\\{day}]\gets\\{sys\_day}\ast\\{unity}$;\quad$\{\,$day of the month$\,\}$\par
-\noindent\quad$\\{internal}[\\{month}]\gets\\{sys\_month}\ast\\{unity}$;\quad$\{\,$month of the year$\,\}$\par
-\noindent\quad$\\{internal}[\\{year}]\gets\\{sys\_year}\ast\\{unity}$;\quad$\{\,$Anno Domini$\,\}$\par
-\noindent\quad{\bf end};
-
-\bugonpage D86, replacement for \S196 (12/11/20)
-
-\tenpoint\noindent
-{\bf 196.}\quad Of course we had better declare a few more global variables,
-if the previous routines are going to work.
-\smallskip
-\ninepoint\noindent
-$\langle\,$Global variables {\sevenrm\kern.5em13}$\,\rangle+\equiv$\par
-\noindent\\{old\_setting}: $0\dts\\{max\_selector}$;\par
-\noindent\\{sys\_time}, \\{sys\_day}, \\{sys\_month}, \\{sys\_year}: \\{integer};
-\quad$\{\,$date and time supplied by external system$\,\}$
-
-\bugonpage D97, line 2 of \S221 (05/26/17)
-
-\tenpoint\noindent
-the definition of attribute nodes) that
-it is convenient to let $\\{info}(p)=0$ stand for `\.{[]}'.
-
-\goodbreak
-\bugonpage D148, line 7 (06/12/18)
-
-\tenpoint\noindent
-but the $\log n$ factor is buried in our
-implicit restriction on the maximum raster size.) The\cutpar
-
-\bugonpage D237, line 5 of \S513 (05/26/17)
-
-\ninepoint\noindent\quad
-{\bf for} $n\gets0$ {\bf to} $\\{n1}-\\{n0}-1$ {\bf do} $\\{env\_move}[n]\gets\\{mm0}$;
-
-\bugonpage D250, line 2 of \S534 (05/26/17)
-
-\tenpoint\noindent
-direction $\bigl(\\{right\_u}(p),\\{left\_v}(q)\bigr)$;
-and there's a line of length $\ge\\{delta}$ from vertex~$q$ to vertex~$r$,\cutpar
-
-\bugonpage D296, line 11 (06/23/20)
-
-\tenpoint\noindent
-\\{name} points to the \\{eqtb} address of the macro
-being expanded, if the current token list\cutpar
-
-\bugonpage D324, line 13 of \S713 (12/20/20)
-
-\ninepoint\noindent\qquad\quad
-\\{help2}(\.{"After\]\char`\`exitif\]<boolean\]expr>\char`\'\]I\]expect\]to\]see\]a\]%
-semicolon."})
-
-\bugonpage D326, line 5 from the bottom (06/23/20)
-
-\ninepoint\noindent\qquad\qquad
-$\{\,$invokes a user-defined sequence of commands$\,\}$
-
-\bugonpage D334, lines 1 and 2 of \S742 (10/25/20)
-
-\tenpoint\noindent
-{\bf 742.} \ Here is a procedure that ignores text until coming to an {\bf elseif},
-{\bf else}, or {\bf fi} at the current level of {\bf if}$\,\ldots\,${\bf fi}
-nesting. After it has acted, \\{cur\_mod} will indicate the token that
-was found.
-
-\bugonpage D339, line 4 of \S757 (06/16/20)
-
-\tenpoint\noindent\quad
-(A user who tries some shenanigan like `{\bf for} $\ldots$ {\bf let} {\bf endfor}'
-will be foiled by the \\{get\_symbol}\cutpar
-
-\bugonpage D351, lines 2--7 of \S536 become five lines (12/11/20)
-
-\ninepoint\noindent\quad
-{\bf begin} \\{wlog}(\\{banner});
-\\{slow\_print}(\\{format\_ident});
-\\{print}(\.{"\]\]"});
-\\{print\_int}(\\{sys\_day});
-\\{print\_char}(\.{"\]"});\par
-\noindent\quad
-$\\{months}\gets\.{\char`\'JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC\char`\'}$;\par
-\noindent\quad
-{\bf for} $k\gets3\ast\\{sys\_month}-2$ {\bf to} $3\ast\\{sys\_month}$
-{\bf do} \\{wlog}(\\{months}[$k$]);\par
-\noindent\quad
-\\{print\_char}(\.{"\]"});
-\\{print\_int}(\\{sys\_year});
-\\{print\_char}(\.{"\]"});
-\\{print\_two}(\\{sys\_time} {\bf div} 60);
-\\{print\_char}(\.{":"});\par
-\noindent\quad
-\\{print\_two}(\\{sys\_time} {\bf mod} 60);
-
-\bugonpage D352, line 2 of \S793 becomes two lines (10/29/20)
-
-\tenpoint\noindent
-command is being processed.
-Beware: For historic reasons, this code foolishly conserves a tiny bit
-of string pool space; but that can confuse the interactive `\.E' option.
-
-\bugonpage D352, line 5 from the bottom (10/29/20)
-
-\ninepoint\noindent
-{\bf if} $\\{name}=\\{str\_ptr}-1$ {\bf then}
-\ $\{\,$conserve string pool space (but see note above)$\,\}$
-
-\bugonpage D354, line 2 from the bottom (07/29/20)
-
-\tenpoint\noindent
-$\\{cur\_type}=\\{path\_type}$ means that \\{cur\_exp} points to the first
-node of
-a path; nobody else points\cutpar
-
-\bugonpage D469, lines 18--20 of \S1093 (09/19/19)
-
-\tenpoint\noindent
-so-called boundary character of this font;
-the value of \\{next\_char} need not lie between \\{bc} and~\\{ec}.
-If the very last instruction of the \\{lig\_kern} array has $\\{skip%
-\_byte}=255$,
-there is a special ligature/kerning program for a boundary character at the
-left, beginning at location $256\ast\\{op\_byte}+$\cutpar
-
-\bugonpage D469, line 30 of \S1093 (01/15/21)
-
-\tenpoint\noindent
-tional halt; no ligature or kerning command is performed.
-
-\bugonpage D471, lines 20 and 21 (08/07/20)
-
-\ninepoint\noindent
-\\{param}: {\bf array} $[1\dts\\{max\_font\_dimen}]$ {\bf of}
-\\{scaled};\quad$\{\,${\bf fontdimen} parameters$\,\}$\par\noindent
-\\{np}: $0\dts\\{max\_font\_dimen}$;\quad$\{\,$the largest {\bf fontdimen} parameter
-specified so far$\,\}$
-
-\bugonpage D474, line 2 from the bottom (08/07/20)
-
-\ninepoint\noindent\quad\qquad
-\\{help1}(\.{"A\]colon\]should\]follow\]a\]headerbyte\]or\]fontdimen\]location."});
-\\{back\_error};
-
-\bugonpage D508, line 3 of \S1189. (10/05/20)
-
-\tenpoint\noindent
-to be in the range $a\le x\le b$.
-System error messages should be suppressed when undumping.
-
-\bugonpage D516, line 6 (10/15/20)
-
-\tenpoint\noindent\quad
-If \\{final\_cleanup} is bypassed, this program doesn't bother to
-close the input files that may still be open.
-
-\bugonpage D519, line 17 (01/15/21)
-
-\ninepoint\noindent\quad
-\\{fix\_date\_and\_time};
-$\\{init\_randoms}(\\{sys\_time}+\\{sys\_day}*\\{unity})$;
-
-\bugonpage D520, line 18 of \S1212 becomes two lines (10/05/20)
-
-\ninepoint\noindent\quad
-{\bf begin} \\{clear\_terminal};\par
-\noindent\quad
-{\bf loop}
-
-\bugonpage D520, lines 11 and 12 from the bottom of \S1212
- become three lines (04/02/17)
-
-\ninepoint\noindent\qquad\qquad
-{\bf begin goto} \\{breakpoint};\par
-\noindent\qquad\qquad\quad$\{\,$go to every declared label at least once$\,\}$\par
-\noindent\qquad\quad\\{breakpoint}: $m\gets0$;
- \.{@\char`\{\char`\'BREAKPOINT\char`\'@\char`\}}
-
-\bugonpage D566, the bottom five lines (05/14/19)
-
-\tenpoint\noindent
-they occupy in a typical production system
-(executable code size for dark blocks, global data size for light blocks).
-In this way the chart indicates a total of about
-$8\times22=176${\ninerm K} bytes of memory, plus
-$8\times15=120${\ninerm K} for the
-dynamic memory region not shown explicitly. The dynamic memory
-is often considerably larger in practice, because it is desirable to
-accommodate large macro packages and large pictures.
-
-
- % volume E
-\hsize=29pc
-
-\newbox\shorthyf \setbox\shorthyf=\hbox{-\kern-.05em}
-\mathchardef\period=`\.
-{\catcode`\-=\active \global\def-{\copy\shorthyf\mkern3.9mu}
- \catcode`\.=\active \global\def.{\period\mkern3mu}}
-\def\8#1{\mathrel{\mathcode`\.="8000 \mathcode`\-="8000
- #1\unkern}} % `..' and `--'
-
-
- \bye
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.three b/Master/texmf-dist/source/generic/knuth/errata/errata.three
deleted file mode 100644
index d4a0afaccd8..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.three
+++ /dev/null
@@ -1,1898 +0,0 @@
-% Bugs (sigh) in Computers \& Typesetting
-
-\input manmac
-\font\sltt=cmsltt10
-\font\niness=cmss9
-\font\ninessi=cmssi9
-\proofmodefalse
-\raggedbottom
-\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\cutpar{{\parfillskip=0pt\par}}
-
-\def\rhead{Bugs in {\tensl Computers \& Typesetting}}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
-\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
-\newcount\nn
-\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
-\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
-
-\noindent This is a list of all corrections made to {\sl Computers \&
-Typesetting}, Volumes A--E\null, between the date of publication
-(May, 1986) and 15~June 1987.
-It also includes corrections made to
-the softcover version of {\sl The \TeX book}, beginning with the
-sixth printing (January 1986); these are the same as corrections to
-Volume~A\null. Corrections to the softcover version of {\sl The
-\slMF\kern1ptbook\/} are the same as corrections to Volume~C\null.
- % volume A
-\bugonpage A7, fourth line from the bottom (6/28/86)
-
-\tenpoint\line{%
-since control sequences of the second kind always have exactly one
-symbol after}
-
-\bugonpage A35, second-last line (1/31/87)
-
-\rightline{\eightssi He may run who reads.}
-\smallskip
-\rightline{\eightss--- HABAKKUK 2\thinspace:\thinspace2 (c.~600 B.C.)}
-\smallskip
-\rightline{\eightssi He that runs may read.}
-
-\bugonpage A43, lines 8--9 (8/23/86)
-
-\tenpoint\noindent
-of Appendix B\null, which defines |%| to be a special kind of symbol so that you
-can use it for comments, defines the control sequence |\%| to mean
-a percent sign.
-
-\bugonpage A45, lines 10--13 (8/23/86)
-
-\ninepoint\noindent
-\TeX\ adds~64. Hence
-code 127 can be typed |^^?|, and
-the dangerous bend sign can be obtained by saying
-|{\manual^^?}|. However, you must change the category code of character
-127 before using it, since this character ordinarily has category~15
-(^{invalid}); say, e.g., |\catcode`\^^?=12|.
-The |^^| notation is different from |\char|, because |^^|\cutpar
-
-\bugonpage A76, line 7 (8/23/86)
-
-\ninepoint
-\noindent
-and extra space; for example, these quantities are
-$3.33333\pt$, $1.66666\pt$, $1.11111\pt$,\cutpar
-
-\bugonpage A83, bottom line (5/19/87)
-
-\tenpoint\noindent[This line should be flush right.]
-
-\bugonpage A111, 7th-last line, right-hand column (2/15/87)
-
-\ninepoint
-if $b=10000$ and $-10000<p<10000$ and $q<10000$;
-
-\bugonpage A117, second-last line (6/10/87)
-
-\eightpoint
-marks; sometimes also |$\|\||$| ($\Vert$).
-You can say, e.g., `|\footnote\dag{...}|'.
-
-\bugonpage A124, lines 6--11 (2/26/87)
-
-\begingroup \def\n{\thinspace$n$}
-\ninepoint\noindent
-of insertion; an additional `|\penalty-10000|' item is assumed
-to be present at the end of the vertical list, to ensure that a legal
-breakpoint exists.) \ Let $u$ be the natural height plus depth of that
-least-cost box, and let $r$ be the penalty associated with the optimum
-breakpoint. Decrease $g$ by~$uf$, and increase $q$ by~$r$. \ (If
-|\tracingpages||=1|, the log file should now get a cryptic message that says
-`|% split|\n\ |to| $v$|,|$u$ |p=|$r$'. For~example,
-\begintt
-% split254 to 180.2,175.3 p=100
-\endtt
-\endgroup
-
-\bugonpage A158, lines 6--8 (2/20/87)
-
-\ninepoint\noindent the
-second atom, which has subscript~$i$; the superscripts are empty except for the
-last atom, whose superscript is~$\overline{n+1}$. This superscript is
-itself a math list consisting of one atom, whose nucleus is~$n+1$; and that
-nucleus is a math list consisting of three atoms.
-
-\bugonpage A171, line 20 (1/26/86)
-
-\ninepoint\line{%
-will be surrounded by more space than there would be
-if that subformula were enclosed}
-
-\bugonpage A176, line 1 (8/23/86)
-
-\ninepoint
-You can insert `|\noalign||{|$\langle$vertical mode
-material$\rangle$|}|' just after any \kern-1pt|\cr| within\cutpar
-
-\bugonpage A248, line 17 (6/17/86)
-
-\ninepoint
-`|&|' or `|\span|' or `|\cr|', it needs some way to decide which
-alignment is involved.\cutpar
-
-\bugonpage A249, line 20 (6/17/86)
-
-\ninepoint\noindent
-line (see Chapter~8).
-If you don't want a~|\cr| at the end of a certain line,
-just type\cutpar
-
-\bugonpage A276, line 19 (1/27/86)
-
-\ninepoint\vskip-3pt
-\beginsyntax
- \alt^|\font|<control sequence><equals><file name><at clause>
- \alt<global assignment>
-\endsyntax
-[The bottom line of p.~276 will now move to the top of p.~277.]
-
-\bugonpage A277, lines 31--32 (1/27/86)
-
-\ninepoint
-\beginsyntax
-<font assignment>\is^|\fontdimen|<number><font><equals><dimen>
-\endsyntax
-
-\bugonpage A286, sixth-last line (4/28/87)
-
-\ninepoint\noindent
-|\sfcode| table as described in Chapter~12; characters numbered 128
-to~255 set the\cutpar
-
-\bugonpage A287, line 19 (2/15/87)
-
-\ninepoint
-\textindent{$\bull$}|\-|.\enskip
-This ``discretionary hyphen'' command is defined in Appendix H.
-
-\bugonpage A292, lines 9--10 (2/15/87)
-
-\ninepoint
-\textindent{$\bull$}|\-|.\enskip
-This command is usually equivalent to `|\discretionary{-}{}{}|'; the `|-|' is
-therefore interpreted as a ^{hyphen}, not as a minus sign.
-\ (See Appendix~H.)
-
-\bugonpage A308, lines 25--26 (6/1/87)
-
-\ninepoint\indent
-|\def\appendroman#1#2#3{\edef#1{\csname|\parbreak
-| \expandafter\gobble\string#2\romannumeral#3\endcsname}}|
-
-\bugonpage A312, lines 10--14 (8/23/86)
-
-\ninepoint
-\ansno12.11: The interline glue will be zero, and the natural height is
-$1+1-3+2=1\pt$ (because the depth of\/ |\box2| isn't included in the natural
-height); so the glue will ultimately become |\vskip-1pt| when it's set.
-Thus, |\box3| is $3\pt$ high, $2\pt$ deep, $4\pt$ wide. Its reference
-point coincides with that of\/ |\box2|; to get to the reference point
-of\/ |\box1| you go up $2\pt$ and right $3\pt$.
-
-\bugonpage A312, line 21 (8/23/86)
-
-\ninepoint\noindent
-up $4\pt$ to get to the upper left corner of
-|\box4|; then down $-1.6\pt$, i.e., up $1.6\pt$, to\cutpar
-
-\bugonpage A319, line 20 (31/3/87)
-
-\ninepoint\noindent
-make ordinary periods act like |\cdot| symbols: Just define
-|\mathcode`.| to be |"0201|,\cutpar
-
-\bugonpage A328, lines 18--19 (5/14/87)
-
-\ninepoint\noindent
-not performed
-while the expansion is taking place, and the control sequences following
-|\def| are expanded; so the result is an infinite string
-\begintt
-A\def A\def A\def A\def A\def A\def A\def A\def A...
-\endtt
-
-\bugonpage A329, lines 14--15 (8/23/86)
-
-\ninepoint
-\ansno20.5: The |##| feature is indispensable when the replacement text of
-a definition contains other definitions. For example, consider
-
-\bugonpage A356, lines 6--7 (1/30/87)
-
-\ninepoint\noindent
-| \spaceskip=.3333em \xspaceskip=.5em\relax}|\hfil\break
-|\def\ttraggedright{\tt\rightskip=0pt plus2em\relax}|
-
-\bugonpage A356, line 33 (6/1/87)
-
-\ninepoint\noindent
-| \vbox to.2ex{\hbox{\char'26}\vss}\hidewidth}}|
-
-\bugonpage A357, tenth-last line (10/13/86)
-
-\ninepoint\noindent
-|\let\sp=^ \let\sb=_ {\catcode`\_=\active \global\let_=\_}|
-
-\bugonpage A357, third-last and second-last lines (2/17/87)
-
-\ninepoint\noindent
-|\def\pr@m@s{\ifx'\next\let\nxt\pr@@@s \else\ifx^\next\let\nxt\pr@@@t|%
-\hfil\break\strut
-| \else\let\nxt\egroup\fi\fi \nxt}|
-
-\bugonpage A364, fifth-last line (1/30/87)
-
-\ninepoint\noindent
-|\def\fmtname{plain}\def\fmtversion{2.3} % identifies the current format|
-
-\bugonpage A368, bottom line (2/26/86)
-
-\ninepoint
-\line{that includes the symbols
-{\tentex\char'30},~{\tentex\char1}, {\tentex\char'32}, {\tentex\char'34},
-and~{\tentex\char'35}, and he finds that this makes it much more}
-
-\bugonpage A396, line 13 (8/23/86)
-
-\ninepoint
-| \hyphenpenalty=10000 \exhyphenpenalty=10000|
-
-\bugonpage A414, line 10 (3/4/86)
-
-\ninepoint\noindent
-|\font\titlefont=cmssdc10 at 40pt % titles in chapter openings|
-
-\bugonpage A427, line 7 (2/23/86)
-
-\ninepoint\noindent
-the author's book
-{\sl Computer Modern Typefaces}.)
-
-\bugonpage A428, lines 18--20 (6/15/87)
-
-\tenpoint\noindent
-The first eight of these all have essentially the same layout;
-but |cmr5| needs no ligatures, and many of the symbols of |cmti10|
-have different shapes.
-For example, the ^{ampersand} becomes an `^{E.T.}', and the
-^{dollar} changes to ^{pound} ^{sterling}:
-
-\bugonpage A434, lines 25--28 (8/17/86)
-
-\tenpoint\noindent
-from |\nu|~($\nu$). Similarly,
-|\varsigma|~($\varsigma$) should not be confused with |\zeta|~($\zeta$).
-It turns out that |\varsigma| and |\upsilon| are almost never used in
-math formulas; they are included in plain \TeX\ primarily because they are
-sometimes needed in short Greek citations (cf.~Appendix~J).
-
-\bugonpage A447, line 32 (6/1/87)
-
-\ninepoint\noindent
-ters
-also affect mathematical typesetting:
-dimension parameters
- \hbox{|\delimitershortfall|}\cutpar
-
-\bugonpage A455, new paragraph to follow line 9 (2/15/87)
-
-\begingroup
-\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
-\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
-\ddanger The control sequence ^|\-| is equivalent to
-|\discretionary{\char|$\,h$|}{}{}|, where $h$ is the
-^|\hyphenchar| of the current font, provided that $h$ lies
-between 0 and~255. Otherwise |\-| is equivalent to |\discretionary{}{}{}|.
-
-\endgroup % end the special hyphenation conventions
-
-\bugonpage A457, left column, fifth-last line (2/17/87)
-
-\eightpoint\indent\qquad 155, 201, {\it 305}, 324, $\underline{357}$, 394--395;
-
-\bugonpage A458, left column, line 6 (2/15/87)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt\char`\\-} (discretionary hyphen), 95, 283, 287,\par
-\indent\qquad 292, $\underline{455}$.
-
-\bugonpage A458, left column, near the bottom (5/19/87)
-
-\eightpoint {\tt!} (exclamation point), 51,
-{\it 72}, 73, 75, {\it 169}.
-\nobreak\medskip\noindent[This saves a line that otherwise would make
-the index too long on page 481!]
-
-\bugonpage A458, right column, line 10 (11/27/86)
-
-\eightpoint {\tt\char`\~}
-(tilde), 38, 51, 343, $\underline{353}$; {\sl see also\/} ties.
-
-\bugonpage A458, right column (6/14/87)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt\char`\\accent} (general accent), 9, 54, 86, 283, $\underline{286}$.
-
-\bugonpage A461, entry for boxes (3/16/87)
-
-\eightpoint boxes, 63--67, 77--83, 221--229.
-
-\bugonpage A461, entry for {\tt\char`\\centering} (1/28/86)
-
-\eightpoint {\tt\char`\\centering}, $\underline{347}$, 348, 362.
-
-\bugonpage A462, entry for \<code assignment> (1/27/86)
-
-\eightpoint \<code assignment>, $\underline{277}$.
-
-\bugonpage A464, left column, line 3 (2/15/87)
-
-\eightpoint
-discretionary hyphens, 28, 95--96, 453, $\underline{455}$.
-
-\bugonpage A465, right column, line 8 (5/3/87)
-
-\eightpoint
-expansion of expandable tokens, 212--216, 238,
-
-\bugonpage A466, entry for {\tt\char`\\font}, second line (1/27/86)
-
-\eightpoint \indent\qquad 271, $\underline{276}$.
-
-\bugonpage A466, new entry (2/3/87)
-
-\eightpoint \indent\<fontdef token>, $\underline{271}$.
-
-\bugonpage A467, entry for {\tt\char`\\hideskip} (1/28/86)
-
-\eightpoint {\tt\char`\\hideskip}, $\underline{347}$, 348, 354.
-
-\bugonpage A468, left column line 2 (2/15/87)
-
-\eightpoint\indent\qquad 351, 395, {\it 414}, 454, 455.
-
-\bugonpage A470, entry for {\tt manfnt} (1/15/86)
-
-\eightpoint {\tt manfnt}, 44, 408, 414.
-
-\bugonpage A471, entry for {\tt\char`\\medbreak} (10/13/86)
-
-\eightpoint {\tt\char`\\medbreak}, 111, 113, $\underline{353}$,
- {\it355}, {\it419}, {\it422}.
-
-\bugonpage A471, entry for {\tt\char`\\moveright} (2/27/87)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt\char`\\moveright}, 80--81, {\it 221}, $\underline{282}$.
-
-\bugonpage A471, entry for Mozart, second line (3/19/86)
-
-\eightpoint \indent\qquad Gottlieb (= Theophilus = Amadeus), 409.
-
-\bugonpage A472, the entry for {\tt\char`\\not} (2/12/87)
-
-\eightpoint\noindent
-[The overprinting here is intentional, since {\tt\char`\\not} is a
-character of width zero. More than a dozen people have reported this
-as an error, but it is not!]
-
-\bugonpage A477, entry for {\tt\char`\\span} (5/3/87)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt\char`\\span}, 215, 238, $\underline{243}$, {\it244}, $\underline{245}$,
-248, 249,\par
-\indent\qquad 282, {\it330}, 385.
-
-\bugonpage A479, entry for ties, second line (11/27/86)
-
-\eightpoint \indent\qquad {\it173}, 353, {\it404}.
-
-\bugonpage A480, changes to various entries (6/14/87)
-
-\eightpoint
-\newbox\astbox \setbox\astbox=\hbox to0pt{\hss\lower1pt\hbox{*}}
-\def\prim#1{\par\indent\copy\astbox{\tt\char`\\#1}}
-\prim{underline}, {\it130--131}, 141, 291, $\underline{443}$.
-\prim{unhbox}, 120, 283, $\underline{285}$, {\it354}, {\it356}, {\it361},
- {\it399}.
-\prim{unhcopy}, 120, 283, $\underline{285}$, {\it353}.
-\prim{unkern}, $\underline{280}$.
-\prim{unpenalty}, $\underline{280}$.
-\prim{unskip}, 222--223, $\underline{280}$, 286, {\it313}, {\it392},
- {\it418--419}.
-\prim{unvbox}, 120, 254, $\underline{282}$, 286, {\it354}, {\it361},
- {\it363}, {\it364}, {\it392}, {\it399}, {\it417}.
-\prim{unvcopy}, 120, $\underline{282}$, 286, {\it361}.
-\prim{vadjust}, 95, 105, 109, 110, 117, 259, $\underline{281}$, 393, 454.
-\prim{valign}, 249, 283, $\underline{285}$--$\underline{286}$, 302,
- {\it335}, {\it397}.
-\prim{vcenter}, 150--151, 159, 170, 193, 222, 242,
-\prim{vfil}, 71, $\underline{72}$, 111, 256, 281, 286, 417.
-\prim{vfill}, 24, 25, 71, $\underline{72}$, 256--257, 281, 286.
-\prim{vfilneg}, $\underline{72}$, 111, 281, 286.\par
-|\voidb@x|, $\underline{347}$, 348.
-
-\bugonpage A481, left column (6/14/87)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt\char`\\vss}, 71, $\underline{72}$, {\it 255}, 281, 286.
-
- % volume B
-\hsize=35pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\buginvol B, in general (7/28/86)
-
-\tenpoint\noindent
-[A number of entries were mistakenly omitted from the mini-indexes
-on the right-hand pages. Here is a combined list of all the missing
-items; you can mount it inside the back cover, say, as a secondary mini-index
-when the first one fails\dots\ ]
-
-\nobreak\medskip
-\setbox0=\vbox{\eightpoint \hsize=11pc \catcode`\_=\active \let_=\_
- \rightskip=0pt plus 100pt minus 10pt
- \pretolerance 10000
- \hyphenpenalty 10000 \exhyphenpenalty 10000
- \noindent\vbox to1pt{}\par % 1pt = \topskip - \ninept
- \def\&#1{\hbox{\bf#1\/}} % boldface type for reserved words
- \obeylines
- \def\makeref #1 #2 #3#4
- {\nn=#2 \hangindent=1em \noindent\\{#1}%
- \if#3:: \else\unhcopy\eqbox \fi#4, \S\number\nn.\par}
- \makeref active_base 222 =$1$
- \makeref aux 213 =macro
- \makeref begin_name 515 :\&{procedure}
- \makeref big_switch 1030 =$60$
- \makeref choice_node 689 =$15$
- \makeref cur_boundary 271 :$0\to \\{save\_size}$
- \makeref cur_c 724 :\\{quarterword}
- \makeref cur_group 271 :\\{group\_code}
- \makeref cur_i 724 :\\{four\_quarters}
- \makeref cur_level 271 :\\{quarterword}
- \makeref do_extension 1348 :\&{procedure}
- \makeref dvi_buf 595 :\&{array}
- \makeref dvi_gone 595 :\\{integer}
- \makeref dvi_limit 595 :\\{dvi\_index}
- \makeref dvi_offset 595 :\\{integer}
- \makeref dvi_ptr 595 :\\{dvi\_index}
- \makeref end_graf 1096 :\&{procedure}
- \makeref error 82 :\&{procedure}
- \makeref error_stop_mode 73 =$3$
- \makeref font_base 12 =$0$
- \makeref font_info 549 :\&{array}
- \makeref get_token 365 :\&{procedure}
- \makeref glue_base 222 =$2626$
- \makeref half_buf 595 :\\{dvi\_index}
- \makeref handle_right_brace 1068 :\&{procedure}
- \makeref hash_base 222 =$258$
- \makeref head 213 =macro
- \makeref hyf_distance 921 :\&{array}
- \makeref hyf_next 921 :\&{array}
- \makeref hyf_num 921 :\&{array}
- \makeref index 302 =macro
- \makeref inf 448 :\\{boolean}
- \makeref init_col 788 :\&{procedure}
- \makeref init_span 787 :\&{procedure}
- \makeref input_ln 31 :\&{function}
- \makeref interaction 73 :$0\to 3$
- \makeref limit 302 =macro
- \makeref line_width 830 :\\{scaled}
- \makeref macro_call 389 :\&{procedure}
- \makeref main_control 1030 :\&{procedure}
- \makeref mem 116 :\&{array}
- \makeref mem_bot 12 =$0$
- \makeref mem_end 118 :\\{pointer}
- \makeref mem_top 12 =macro
- \makeref mlist_to_hlist 726 :\&{procedure}
- \makeref mode 213 =macro
- \makeref mode_line 213 =macro
- \makeref more_name 516 :\&{function}
- \makeref mu 448 :\\{boolean}
- \makeref name 302 =macro
- \makeref nest 213 :\&{array}
- \makeref off_save 1064 :\&{procedure}
- \makeref open_log_file 534 :\&{procedure}
- \makeref output_active 989 :\\{boolean}
- \makeref p 498 :\\{pointer}
- \makeref param_stack 308 :\&{array}
- \makeref pool_file 50 :\\{alpha\_file}
- \makeref pool_ptr 39 :\\{pool\_pointer}
- \makeref prefixed_command 1211 :\&{procedure}
- \makeref prev_depth 213 =macro
- \makeref prev_graf 213 =macro
- \makeref prev_prev_r 830 :\\{pointer}
- \makeref print_err 73 =macro
- \makeref r 960 :\\{trie\_pointer}
- \makeref reconstitute 906 :\&{function}
- \makeref resume_after_display 1200 :\&{procedure}
- \makeref save_ptr 271 :$0\to \\{save\_size}$
- \makeref save_stack 271 :\&{array}
- \makeref scan_dimen 448 :\&{procedure}
- \makeref scan_math 1151 :\&{procedure}
- \makeref short_display 174 :\&{procedure}
- \makeref show_node_list 182 :\&{procedure}
- \makeref start 302 =macro
- \makeref state 302 =macro
- \makeref str_pool 39 :\&{packed}\ \&{array}
- \makeref str_ptr 39 :\\{str\_number}
- \makeref str_start 39 :\&{array}
- \makeref tail 213 =macro
- \makeref trap_zero_glue 1229 :\&{procedure}
- \makeref trie 921 :\&{array}
- \makeref trie_char 921 =macro
- \makeref trie_link 921 =macro
- \makeref trie_op 921 =macro
- \makeref vlist_out 629 :\&{procedure}
- \makeref write_loc 1345 :\\{pointer}
- }
-\hbox{\nsize=\ht0 \advance\nsize-\topskip
- \divide\nsize by 3 \divide\nsize by\ninept
- \multiply\nsize by\ninept \advance\nsize\topskip
- \vsplit0 to\nsize \kern1pc
- \msize=\ht0 \advance\msize-\topskip
- \divide\msize by 2 \divide\msize by\ninept
- \multiply\msize by\ninept \advance\msize\topskip
- \vbox to\nsize{\vsplit0 to\msize\vss}\kern1pc
- \vbox to\nsize{\box0\vss}}
-
-\buginvol B, in general (4/6/87)
-
-\tenpoint\noindent[The percent signs in all the comments (for example,
-on pages 7 and 50) are in the wrong font! Change `{\tt\%}' to `\%'.]
-
-\bugonpage Bvi, bottom line, and top line of next page (10/12/86)
-
-{\hsize=29pc
-\tenpoint\noindent
-puter Science Report 1097 (Stanford, California, April 1986), 146~pp.
-\ {\it The {\sltt WEB} programs for four utility programs that are
-often used with \TeX: {\sltt POOLtype}, {\sltt TFtoPL},
-{\sltt PLtoTF}, and {\sltt DVItype}.}
-\par}
-
-\bugonpage B2, line 32 (4/22/87)
-
-\ninepoint\noindent\hskip10pt
-{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]TeX,\]Version\]2.2\char'23}\quad
-$\{\,$printed when \TeX\ starts$\,\}$
-
-\bugonpage B7, new line after line 25 (1/28/87)
-
-\ninepoint\noindent\hskip10pt
-{\bf if} $\\{max\_in\_open}\ge128$ {\bf then} $\\{bad}\gets6$;
-
-\bugonpage B13, first three lines (4/7/87)
-
-\tenpoint\noindent
-The `\\{name}' parameter, which is of type `{\bf packed array
-$[\langle\\{any}\rangle]$ of \\{char}}', stands for the name of
-the external file that is being opened for input or output.
-Blank spaces that might appear in \\{name} are ignored.
-
-\bugonpage B14, line 30 (4/7/87)
-
-\tenpoint\noindent
-{\bf 31.\quad}%
-The \\{input\_ln} function brings the next line of input from the specified
-file into available\cutpar
-
-\bugonpage B18, line 30 (5/22/86)
-
-\ninepoint\noindent
-\\{str\_ptr}: \\{str\_number};\quad
-$\{\,$number of the current string being created$\,\}$
-
-\bugonpage B21, first line of mini-index, right column (6/14/87)
-
-\eightpoint
-\indent\\{pool\_name}\unhcopy\eqbox|"string"|, \S11.
-
-\bugonpage B34, lines 5--6 (6/14/87)
-
-\tenpoint\noindent
-to delete a token, and/or if some fatal error
-occurs while \TeX\ is trying to fix a non-fatal one. But such recursion
-is never more than two levels deep.
-
-\bugonpage B55, lines 12--13 (4/21/87)
-
-\ninepoint\noindent\hskip10pt
-{\bf if} $r=p$ {\bf then if} $\\{rlink}(p)\ne p$ {\bf then}
- $\langle\,$Allocate entire node $p$ and {\bf goto} \\{found}%
- {\sevenrm\kern.5em129}$\,\rangle$;
-
-\bugonpage B57, lines 25--28 (6/14/87)
-
-\tenpoint\noindent
-The first of these has $\\{font}=\\{font\_base}$, and its \\{link}
-points to the second;
-the second identifies the font and the character dimensions.
-The saving feature about oriental characters is that most of them have
-the same box dimensions. The \\{character} field of the first \\{char\_node}
-is a ``\\{charext}'' that distinguishes between graphic symbols whose
-dimensions are identical for typesetting purposes. (See the \MF\ manual.)
-Such an extension of \TeX\ would not be difficult; further details are
-left to the reader.
-
-\bugonpage B58, second line of section 136 (7/23/86)
-
-\tenpoint\noindent
-the values corresponding to `|\hbox{}|'. The \\{subtype} field is set to
-\\{min\_quarterword}, since that's\cutpar
-
-\bugonpage B66, lines 2--8 (4/21/87)
-
-\tenpoint\noindent
-location is
-more efficient than dynamic allocation when we can get away with it. For
-example, locations \\{mem\_bot} to $\\{mem\_bot}+3$ are always used to store the
-specification for glue that is `\hbox{\tt 0pt plus 0pt minus 0pt}'. The
-following macro definitions accomplish the static allocation by giving
-symbolic names to the fixed positions. Static variable-size nodes appear
-in locations \\{mem\_bot} through \\{lo\_mem\_stat\_max}, and static
-single-word nodes appear in locations \\{hi\_mem\_stat\_min} through
-\\{mem\_top}, inclusive. It is harmless to let \\{lig\_trick} and
-\\{garbage} share the same location of \\{mem}.
-
-\bugonpage B67, line 23 (4/13/87)
-
-\ninepoint\noindent\hskip30pt
-$\{\,$previous \\{mem\_end}, \\{lo\_mem\_max}, and \\{hi\_mem\_min}$\,\}$
-
-\bugonpage B71, line 17 (4/15/87)
-
-\ninepoint\noindent\hskip10pt
-{\bf begin while} $p>\\{mem\_min}$ {\bf do}
-
-\smallskip\eightpoint\noindent[Now \\{null} can be removed from the mini-index.]
-
-\bugonpage B74, line 24 (4/15/87)
-
-\ninepoint\noindent
-{\bf procedure} \\{show\_node\_list}($p\;{:}\;\\{integer}$);\quad
-$\{\,$prints a node list symbolically$\,\}$
-
-\bugonpage B74, line 33 (4/15/87)
-
-\ninepoint\noindent\hskip10pt
-{\bf while} $p>\\{mem\_min}$ {\bf do}
-
-\bugonpage B84, line 12 (2/15/87)
-
-\ninepoint\noindent\hskip10pt
-{\bf define} $\\{relax}=0$\quad$\{\,$do nothing ( {\tt\char`\\relax} )$\,\}$
-
-\bugonpage B86, third line of section 210 (8/23/86)
-
-\tenpoint\noindent
-that their special nature is easily discernible.
-The ``expandable'' commands come first.
-
-\bugonpage B88, line 23 (5/22/86)
-
-\ninepoint\noindent
-{\bf procedure\/}\ $\\{print\_mode}(m:\\{integer})$;\quad
-$\{\,$prints the mode represented by $m\,\}$
-
-\bugonpage B93, lines 3--4 (8/17/86)
-
-{\tenpoint\parindent=1em
-In the first region we have 128 equivalents for ``active characters'' that
-act as control sequences, followed by 128 equivalents for single-character
-control sequences.
-\par}
-
-\bugonpage B130, ninth-last line (5/7/87)
-
-\tenpoint\noindent
-This variable has six possible values:
-
-\bugonpage B151, line 9 (4/22/87)
-
-\ninepoint\noindent\hskip20pt
-{\bf begin if} $(\\{end\_line\_char}<0)\lor(\\{end\_line\_char}>127)$
- {\bf then} \\{incr}(\\{limit});\par\noindent\hskip20pt
-{\bf if} $\\{limit}=\\{start}$ {\bf then}\quad
- $\{\,$previous line was empty$\,\}$
-
-\bugonpage B160, lines 17--20 (7/28/86)
-
-\tenpoint\noindent
-{\bf 389.\quad}%
-After parameter scanning is complete, the parameters are moved to the
-\\{param\_stack}. Then the macro body is fed to the scanner; in other words,
-\\{macro\_call} places the defined text of the control sequence at the
-top of\/ \TeX's input stack, so that \\{get\_next} will proceed to read it
-next.
-
-\bugonpage B200, top line (5/5/87)
-
-\tenpoint\noindent{\bf 495.\quad}%
- When we begin to process a new {\tt\char`\\if}, we set
-$\\{if\_limit}\gets\\{if\_code}$; then
-if\/ {\tt\char`\\or} or {\tt\char`\\else} or {\tt\char`\\fi}\cutpar
-
-\bugonpage B217, lines 15--16 (6/14/87)
-
-\tenpoint\noindent
-|DVI| format.
-
-\bugonpage B224, lines 4--7 of section 560 (10/22/86)
-
-\tenpoint\noindent
-name and area strings \\{nom} and \\{aire}, and the
-``at'' size~$s$. If $s$~is negative, it's the negative of a scale factor
-to be applied to the design size; $s=-1000$ is the normal case.
-Otherwise $s$ will be substituted for the design size; in this
-case, $s$ must be positive and less than $2048\rm\,pt$
-(i.e., it must be less than $2^{27}$ when considered as an integer).
-
-\bugonpage B224, second-last line (4/28/87)
-
-\ninepoint\noindent
-\\{done}: {\bf if} \\{file\_opened} {\bf then} \\{b\_close}(\\{tfm\_file});\par
-\noindent\hskip10pt $\\{read\_font\_info}\gets g$;
-
-\bugonpage B255, mini-index at the bottom (4/15/87)
-
-\eightpoint
-$\\{mag}=\rm macro$, \S236.
-
-\bugonpage B257, lines 11--13 (6/14/87)
-
-\ninepoint
-\noindent\hskip20pt{\bf if} $c\ge\\{qi}(128)$ {\bf then}
- \\{dvi\_out}(\\{set1});\par
-\noindent\hskip20pt\\{dvi\_out}(\\{qo}($c$));
-
-\bugonpage B260, lines 7--8 (4/15/87)
-
-\tenpoint\noindent\hskip10pt
-In the case of \\{c\_leaders} (centered leaders), we want to increase \\{cur\_h}
-by half of the excess space not occupied by the leaders; and in the
-case of \\{x\_leaders} (expanded leaders) we increase\cutpar
-
-\bugonpage B267, mini-index at the bottom (4/15/87)
-
-\eightpoint
-\\{cur\_s}: \\{integer}, \S616.
-$\\{mag}=\rm macro$, \S236.
-$\\{pop}=142$, \S586.
-
-\bugonpage B271, line 10 (8/23/86)
-
-\tenpoint\noindent
-which will be ignored in the calculations
-because it is a highly negative number.
-
-\bugonpage B285, lines 23 and 24 (5/4/87)
-
-\tenpoint\noindent
-the current string would be `{\tt.\char`\^.\char`\_/}'
-if $p$ points to the \\{ord\_noad} for $x$ in the (ridiculous) formula
-`{\tt\char`\$\char`\\sqrt\char`\{a\char`\^\char`\{\char`\\mathinner\char`\{%
-b\char`\_\char`\{c\char`\\over x+y\char`\}\char`\}\char`\}\char`\}\char`\$}'.
-
-\bugonpage B296, lines 3--5 (5/8/87)
-
-\tenpoint\noindent
-box~$b$ and
-changes it so that the new box is centered in a box of width~$w$.
-The centering is done by putting {\tt\char`\\hss} glue at the left and right
-of the list inside $b$, then packaging the new box; thus, the
-actual box might not really be centered, if it already contains
-infinite glue.
-
-\bugonpage B346, line 19 (5/19/87)
-
-\ninepoint\noindent
-\\{pass\_number}: \\{halfword};\quad
-$\{\,$the number of passive nodes allocated on this pass$\,\}$
-
-\bugonpage B350, lines 36 and 37 (1/28/87)
-
-\ninepoint\noindent
-$v$: \\{pointer};\quad
-$\{\,$points to a glue specification or a node ahead of \\{cur\_p}$\,\}$
-\par\noindent
-$t$: \\{integer};\quad
-$\{\,$node count, if \\{cur\_p} is a discretionary node$\,\}$
-
-\bugonpage B353, lines 8--22 (1/28/87)
-
-\ninepoint
-\noindent\hskip10pt$s\gets\\{cur\_p}$;\par
-\noindent\hskip10pt{\bf if} $\\{break\_type}>\\{unhyphenated}$ {\bf then}
- {\bf if} $\\{cur\_p}\ne\\{null}$ {\bf then}\par
-\noindent\hskip30pt$\langle\,$Compute the discretionary
- \\{break\_width} values{\sevenrm\kern.5em840}$\,\rangle$;\par
-\noindent\hskip10pt{\bf while} $s\ne\\{null}$ {\bf do}\par
-\noindent\hskip30pt\vdots\hskip30pt [as before, but indented one less notch]\par
-\noindent\hskip10pt{\bf end};
-
-\bugonpage B354, line 6 (1/28/87)
-
-\tenpoint\noindent
-will be the background plus $l_1$, so the length from \\{cur\_p} to \\{cur\_p}
-should be $\gamma+l_0+l_1-l$,
-minus the length of nodes that will be discarded after the discretionary break.
-
-\bugonpage B354, lines 12--18 (1/28/87)
-
-\ninepoint
-\noindent\hskip10pt{\bf begin} $t\gets\\{replace\_count}(\\{cur\_p})$;\kern5pt
- $v\gets\\{cur\_p}$;\kern5pt $s\gets\\{post\_break}(\\{cur\_p})$;\par
-\noindent\hskip10pt{\bf while} $t>0$ {\bf do}\par
-\noindent\hskip20pt{\bf begin} $\\{decr}(t)$;\kern5pt
- $v\gets\\{link}(v)$;\kern5pt
- $\langle\,$Subtract the width of node $v$ from \\{break\_width}%
- {\sevenrm\kern.5em841}$\,\rangle$;\par
-\noindent\hskip20pt{\bf end};\par
-\noindent\hskip10pt{\bf while} $s\ne\\{null}$ {\bf do}\par
-\noindent\hskip20pt{\bf begin} $\langle\,$Add the width of
- node $s$ to \\{break\_width} and increase $t$, unless it's
- discardable{\sevenrm\kern.5em842}$\,\rangle$;\par
-
-\bugonpage B354, new line after line 21 (1/28/87)
-
-\ninepoint\noindent\hskip10pt
-{\bf if} $t=0$ {\bf then} $s\gets\\{link}(v)$;\quad
- $\{\,$more nodes may also be discardable after the break$\,\}$
-
-\bugonpage B354, lines 26--34 (1/28/87)
-
-\ninepoint\noindent
-[Change `$s$' to `$v$' throughout this section (8 times).]
-
-\bugonpage B354, line 9 from the bottom (1/28/87)
-
-\tenpoint\noindent{\bf 842.\quad}%
-\ninepoint$\langle\,$Add the width of
- node $s$ to \\{break\_width} and increase $t$, unless it's
- discardable{\sevenrm\kern.5em842}$\,\rangle\equiv$
-
-\bugonpage B355, lines 1--3 (1/28/87)
-
-\ninepoint
-\noindent\hskip20pt$\\{hlist\_node},\\{vlist\_node},\\{rule\_node}$:
- $\\{break\_width}[1]\gets\\{break\_width}[1]+\\{width}(s)$;\par
-\noindent\hskip20pt\\{kern\_node}: {\bf if} $(t=0)\land
- (\\{subtype}(s)\ne\\{acc\_kern})$ {\bf then}
- $t\gets-1$\quad$\{\,$discardable$\,\}$\par
-\noindent\hskip30pt{\bf else} $\\{break\_width}[1]\gets
- \\{break\_width}[1]+\\{width}(s)$;\par
-\noindent\hskip20pt{\bf othercases}
- \\{confusion}({\tt\char'42 disc2\char'42})\par
-\noindent\hskip20pt{\bf endcases};\par
-\noindent\hskip10pt$\\{incr}(t)$
-
-\bugonpage B355, patches to mini-index at bottom (1/28/87)
-
-\eightpoint
-$\\{acc\_kern}=2$, \S155.\par
-$\\{incr}=\rm macro$, \S16.\par
-$t$: \\{integer}, \S830.\par
-$v$: \\{pointer}, \S830.
-
-\bugonpage B372, lines 12--14 (1/28/87)
-
-\ninepoint
-\noindent\hskip40pt$\langle\,$Change discretionary to compulsory
- and set $\\{disc\_break}\gets\\{true}${\sevenrm\kern.5em882}$\,\rangle$\par
-\noindent\hskip30pt{\bf else if\/} $(\\{type}(q)=\\{math\_node})\lor
- (\\{type}(q)=\\{kern\_node})$ {\bf then} $\\{width}(q)\gets0$;
-
-\bugonpage B380, fifth-last line (5/7/87)
-
-\begingroup\tenpoint\noindent\def\!{\kern-1pt}\def\.#1{\hbox{\tt#1}}
-\.b and \.c, the two patterns with and without hyphenation are
-$\.a\,\.b\,\.-\,\.{c\!d}\,\.{e\!f}$ and $\.a\,\.{b\!c}\,\.{d\!e}\,\.f$.
-Thus the\cutpar\endgroup
-
-\bugonpage B386, lines 2--4 (5/21/87)
-
-\tenpoint\noindent
-hyphenation,
-\TeX\ first looks to see if it is in the user's exception dictionary. If not,
-hyphens are inserted based on patterns that appear within the given word,
-using an algorithm due to Frank~M. Liang.
-
-\bugonpage B397, line 28 (5/21/87)
-
-\tenpoint\noindent
-$h=z-c$. It follows that location \\{trie\_max} will
-never be occupied in \\{trie}, and we will have\cutpar
-
-\bugonpage B415, the mini-index (4/6/87)
-
-\eightpoint\noindent[Delete the spurious entry for `$c$'.]
-
-\bugonpage B419, mini-index entry for \\{c} (4/6/87)
-
-\eightpoint $c$: \\{integer}, \S994.
-
-\bugonpage B422, line 24 (8/23/86)
-
-\ninepoint\noindent
-\hskip20pt\\{prev\_p}: \\{pointer};\quad
-$\{\,$predecessor of $p\,\}$
-
-\bugonpage B435, line 16 (10/12/86)
-
-\ninepoint\noindent
-\hskip20pt$\\{width}(p)\gets\\{font\_info}[k].\\{sc}$;\quad
-$\{\,$that's \\{space}$(f)\,\}$\par\noindent
-\hskip20pt$\\{stretch}(p)\gets\\{font\_info}[k+1].\\{sc}$;\quad
-$\{\,$and \\{space\_stretch}$(f)\,\}$\par\noindent
-\hskip20pt$\\{shrink}(p)\gets\\{font\_info}[k+2].\\{sc}$;\quad
-$\{\,$and \\{space\_shrink}$(f)\,\}$\par
-\smallskip\eightpoint\noindent
-[And the mini-index gets three new entries:
-$\\{space}=macro$, \S558.
-$\\{space\_shrink}=macro$, \S558.
-$\\{space\_stretch}=macro$, \S558.]
-
-\bugonpage B495, lines 18 and 19 (2/15/87)
-
-\ninepoint\noindent
-[delete these lines, since the cases cannot occur]
-
-\bugonpage B510, line 8 (12/15/86)
-
-\ninepoint\noindent\hskip30pt
-({\tt"Pretend\]that\]you're\]Hercule\]Poirot:\]Examine\]all\]clues,"})
-
-\bugonpage B527, new line to follow line 13 (6/17/86)
-
-{\tenpoint\parindent=1em
-This program doesn't bother to close the input files that may still be open.
-\par}
-
-\bugonpage B534, fourth-last line (5/4/87)
-
-\ninepoint\noindent\hskip10pt
-{\bf define} $\\{write\_stream}(\hbox{\tt\char`\#})\equiv\\{info}(
- \hbox{\tt\char`\#}+1)$\quad $\{\,$stream number (0 to 17)$\,\}$
-
-\bugonpage B544, left column (1/28/87)
-
-\eightpoint
-\leftline{\\{acc\_kern}:\quad$\underline{155}$, 191, 837, 842, 879, 1125.}
-
-\bugonpage B546, entry for \\{c} (4/6/87)
-
-\eightpoint\noindent[Add a reference to section $\underline{994}$.]
-
-\bugonpage B547, left column (4/7/87)
-
-\eightpoint
-\leftline{\\{char}:\quad 19, 26--27, 520, 534.}
-
-\bugonpage B547, left column (6/14/87)
-
-\eightpoint
-\leftline{Chinese characters:\quad 134, 585.}
-
-\bugonpage B553, entry for \\{font\_base} (6/14/87)
-
-\eightpoint\noindent[Insert a reference to section 134.]
-
-\bugonpage B555, right column, new entry (10/25/86)
-
-\eightpoint
-\leftline{{\tt Huge page...},\quad 641.}
-
-\bugonpage B556, entry for \\{incr} (1/28/87)
-
-\eightpoint\noindent[Add a reference to section 842.]
-
-\bugonpage B557, entry for \\{is\_char\_node} (1/28/87)
-
-\eightpoint\noindent[Delete the reference to section 881.]
-
-\bugonpage B557, right column (6/14/87)
-
-\eightpoint
-\leftline{Japanese characters:\quad 134, 585.}
-
-\bugonpage B560, right column (1/28/87)
-
-\eightpoint
-\leftline{\\{max\_in\_open}:\quad$\underline{11}$, 14, 304, 328.}
-
-\bugonpage B561, left column, line 10 (4/15/87)
-
-\eightpoint
-\leftline{\qquad 169--172, 174, 178, 182, 1249, 1312, 1334.}
-
-\bugonpage B561, left column (5/1/87)
-
-\eightpoint
-\leftline{{\tt Missing font identifier}:\quad 577.}
-
-\bugonpage B563, left column, line 2 (4/15/87)
-
-\eightpoint
-\leftline{\qquad 136, 145, 149--154, 164, 168--169, 175--176, 182,}
-
-\bugonpage B563, right column (6/14/87)
-
-\eightpoint
-\leftline{oriental characters:\quad 134, 585.}
-
-\bugonpage B569, right column, in appropriate places (10/12/86)
-
-\eightpoint
-\leftline{\\{space}:\quad 547, $\underline{558}$, 752, 755, 1042.}
-\leftline{\\{space\_shrink}:\quad 547, $\underline{558}$, 1042.}
-\leftline{\\{space\_stretch}:\quad 547, $\underline{558}$, 1042.}
-
-\bugonpage B570, third-last line (1/28/87)
-
-\eightpoint\noindent\qquad
- 786, 795, 809, 819--820, 822, 837, 842--844, 866,
-
-\bugonpage B571, right column (10/25/86)
-
-\eightpoint
-\leftline{{\tt The following...deleted},\quad 641, 992, 1121.}
-
-\bugonpage B571, right column (4/7/87)
-
-\eightpoint
-\leftline{\\{text\_char}:\quad $\underline{19}$, 20, 25, 47.}
-
-\bugonpage B573, right column (5/1/87)
-
-\eightpoint\noindent
-[Delete the entry for `{\tt Undefined font code}'.]
-
-\bugonpage B576, line 2 (1/28/87)
-
-\ninepoint\noindent
-$\langle\,$Add the width of
- node $s$ to \\{break\_width} and increase $t$, unless it's
- discardable{\sevenrm\kern.5em842}$\,\rangle$\par
-\noindent\qquad {\eightpoint Used in section 840.}
-
-\bugonpage B591, line 6 from the bottom (1/28/87)
-
-\ninepoint\noindent
- $\langle\,$Subtract the width of node $v$ from \\{break\_width}%
- {\sevenrm\kern.5em841}$\,\rangle$\quad
- {\eightpoint Used in section 840.}
-
- % volume C
-\hsize=29pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-
-\bugonpage C14, top two lines (3/16/87)
-
-\danger The recursive midpoint rule for curve-drawing was discovered in 1959
-by Paul de Casteljau, who showed that the curve could be described
-algebraically by the remarkably simple formula
-
-\bugonpage C54, sixth-last to fourth-last lines (10/13/86)
-
-\ninepoint Jonathan H. Quick (a student) used `|a.plus1|' as the name
-of a variable at the beginning of his program; later he said `|let|
-|plus=+|'. How could he refer to the variable `|a.plus1|' after that?
-
-\bugonpage C76, line 14 (10/13/86)
-
-\tenpoint
-\newdimen\longesteq
-\setbox0=\hbox{\indent$z_{12}-z_{11}=z_{14}-z_{13}$\quad}
-\longesteq=\wd0
-\noindent\hbox to \longesteq{\indent
- $x_4=w-.01\\{in}$\hfil}%
-Point 4 should be one-hundredth of an inch inside\cutpar
-
-\bugonpage C103, line 12 (10/12/86)
-
-\tenpoint
-$\\{ht}\0=\\{body\_height}\0$; \ $.5[\\{ht}\0,-\\{dp}\0]=\\{axis}\0$;
-
-\bugonpage C105, line 13 (10/13/86)
-
-\ninepoint
-The vertical line just to the right of the italic left parenthesis
-shows the italic\cutpar
-
-\bugonpage C113, lines 20--27 (8/23/86)
-
-{\catcode`\@=\active
-\def@#1@{\begingroup\def\_{\kern.04em
- \vbox{\hrule width.3em height .6pt}\kern.08em}%
- \ifmmode\mathop{\bf#1}\else\hbox{\bf#1\/}\fi\endgroup}
-\danger The command `@erase@ @fill@ $c$' is an abbreviation for
-`@cullit@; @unfill@~$c$; @cullit@'; this zeros out the pixel values inside
-the cyclic path~$c$, and sets other pixel values to~1 if they were positive
-before erasing took place. \ (It works because the initial @cullit@ makes
-all the values 0 or~1, then the @unfill@ changes the values inside~$c$
-to 0 or negative. The final @cullit@ gets rid of the negative values,
-so that they won't detract from future filling and drawing.) \ You can
-also use `@draw@', `@filldraw@', or `@drawdot@' with `@erase@'; for example,
-`@erase@ @draw@~$p$' is an abbreviation for `@cullit@; @undraw@~$p$;
-@cullit@', which uses the currently-picked-up pen as if it were an
-eraser applied to path~$p$.
-
-}
-
-\bugonpage C124, line 9 (6/17/86)
-
-\eightpoint
-\noindent\hskip1.8in
-$\\{branch}_2=\\{flex}((30,570),(10,590),(-1,616))$
-
-\bugonpage C130, 3rd-last line (9/25/86)
-
-\ninepoint\noindent
-{\sl Geometry\/ \bf 1} (1986), 123--140]: Given a sequence
-
-\bugonpage C144, sixth line of the program (8/23/86)
-
-\ninepoint\noindent\hbox to\parindent{\hfil\sevenrm6\ \ \ }%
-$y_2=.1h$; \ $\\{top}\,y_3=.4h$;
-
-\bugonpage C148, the line before the illustration (11/27/86)
-
-\ninepoint\noindent
-are polygons with 32 and 40 sides, respectively:
-
-\smallskip\noindent
-[New illustrations are needed here, since \MF\ version 1.3 improves
-the accuracy of pen polygons.]
-
-\bugonpage C149, 7th line after the illustration (10/24/86)
-
-\ninepoint
-\line{$(200,y+100\pm\alpha)$, where
-$\alpha=\sqrt5/4\approx0.559$. If we digitize these outlines and fill the}
-
-\bugonpage C178, second-last line (8/23/86)
-
-\ninepoint\noindent
-(If $t_3=t_1$~transum~$t_2$, then
-$z$~transformed~$t_3=z$~transformed~$t_1+z$~transformed~$t_2$,\cutpar
-
-\bugonpage C198, fifth-last and fourth-last lines (10/13/86)
-
-\ninepoint\vskip-3pt
-\begindisplay
-$\\{top}\,y_2={\rm round}(\\{top}\,\beta)$.
-\enddisplay
-Such operations occur frequently in practice, so plain \MF\ provides
-convenient\cutpar
-
-\bugonpage C212, lines 9--11 from the bottom (8/23/86)
-
-\ninepoint
-\qquad
- \alt\[point]\<numeric expression>\[of]\<path primary>\continuerule
- \alt\[precontrol]\<numeric expression>\[of]\<path primary>\continuerule
- \alt\[postcontrol]\<numeric expression>\[of]\<path primary>
-
-\bugonpage C233, lines 13--14 (2/15/87)
-
-\ninepoint\noindent
-one column of white
-pixels, if the character is $2a$ pixels wide, because the right edge of
-black pixels is specified here to have the $x$~coordinate $2a-1$.
-
-\bugonpage C247, lines 23--25 (11/27/86)
-
-\ninepoint
-\ansno 16.2:
- `{\bf pencircle} scaled 1.06060' is the diamond but
-`{\bf pencircle} scaled 1.06061' is~the square. \ (This assumes that
-$\\{fillin}=0$. If, for example, $\\{fillin}=.1$, the change doesn't
-occur until the diameter is 1.20204.) \ The next change is at diameter
-1.5, which\cutpar
-
-\bugonpage C262, lines 1--4 (7/28/86)
-
-\ninepoint
-When we come to macros whose use has not yet been explained---for
-example, somehow |softjoin| and |stop| never made it
-into Chapters 1 through~27---we shall consider them from a user's
-viewpoint. But most of the comments that follow are addressed to a
-potential base-file designer.
-
-\bugonpage C266, line 16 (8/17/86)
-
-\ninepoint\noindent
-variables; they have the side effect of changing the variable's value.
-
-\bugonpage C276, line 26 (6/23/86)
-
-\ninepoint
-\noindent
-| if charic<>0: r((w+charic*hppp,h.o_),(w+charic*hppp,.5h.o_)); fi|
-
-\bugonpage C286, lines 24--26 (10/13/86)
-
-\ninepoint\noindent
-but \MF\ won't let you. And even if this had worked, it wouldn't have
-solved the problem; it would simply have put |ENDFOR| into the
-replacement text of |ast|, because expansion is inhibited when the
-replacement text is being read.
-
-\bugonpage C290, line 1 (8/23/86)
-
-\ninepoint \noindent{\it 2.\enspace Fortuitous loops.\enspace}%
-The `^{max}' and `^{min}' macros in Appendix~B make use of the fact\cutpar
-
-\bugonpage C298, third-last line (8/23/86)
-
-\ninepoint
-$t[\,u_1,\ldots,u_n]\;=\;t\bigl[t[u_1,\ldots,u_{n-1}],t[u_2,\ldots,u_n]\,\bigr]$
-
-\bugonpage C304, 14th-last line (2/15/87)
-
-\ninepoint\noindent
-[replace this `|\smallskip|' by a |\smallskip| between lines!]
-
-\bugonpage C307, fifth-last line (12/7/86)
-
-\ninepoint
-{\def\_{\kern.04em
- \vbox{\hrule width.3em height .6pt}\kern.08em}%
-\bf adjust\_fit}(\<left sidebearing adjustment>,\thinspace
- \<right sidebearing adjustment>);
-
-\bugonpage C312, line 34 (10/12/86)
-
-\ninepoint\noindent
-|params[2] = "sans_params"; fontname[2] = "cmssbx10";|
-
-\bugonpage C316, lines 19--21 (8/17/86)
-
-\ninepoint\noindent
-example,
-`|(some| |charht| |values| |had| |to| |be| |adjusted| |by| |as| |much|
-|as| |0.12pt)|' means that~you had too many different nonzero heights, but
-\MF\ found a way to reduce the number to at most~15 by changing some of
-them; none of them had to be\cutpar
-
-\bugonpage C319, line 3 (8/23/86)
-
-\ninepoint\noindent
-specified by saying, e.g.,
-
-\bugonpage C321, line 6 (7/28/86)
-
-\ninepoint\noindent
-| special "identifier " & font_identifier_;|
-
-\bugonpage C334, line 2 (6/23/86)
-
-\ninepoint\noindent
-| currentpicture := currentpicture shifted-(1,1); pix := currentpicture;|
-
-\bugonpage C339, tenth-last line (2/4/87)
-
-\ninepoint\noindent
-| Jackie K\=aren {\L}au\.ra Mar{\'\i}a N\H{a}ta{\l}{\u\i}e {\O}ctave|
-
-\bugonpage C343, second-last line (8/23/86)
-
-\rightline{\eightssi
-the precise needs of a precise but limited intellectual goal.}
-
-\bugonpage C346, 2nd line of entry for `{\tt;}' (1/12/87)
-
-\eightpoint
-\qquad 217, 223--224, 263, 312.
-
-\bugonpage C348, line 6 (6/17/86)
-
-\eightpoint
-concatenation, of paths, {\eightit 70--71}, {\eightit 123}, 127,
-
-\bugonpage C348, just before `debugging' (3/16/87)
-
-\eightpoint
-de Casteljau, Paul de Faget, 14.
-
-\bugonpage C348, right column (3/16/87)
-
-\eightpoint\noindent
-[The entry for `|define_whole_vertical_blacker_pixels|' should be moved up
-before the entry for `|define_whole_vertical_pixels|'.]
-
-\bugonpage C352, left column (6/1/87)
-
-\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
-{\tt kern}, {\it 97}, {\it 316}, $\underline{317}$.
-
-\bugonpage C352, right column (3/8/87)
-
-\eightpoint\noindent
-[The entry for `|lowres|' belongs before the entry for `|lowres_fix|'.]
-
-\bugonpage C353, left column (3/8/87)
-
-\eightpoint\noindent
-[The entries for `|mode|' and `\<mode command>' belong before the entry
-for `|mode_def|'.]
-
-\bugonpage C353, entry for {\tt mode\char`\_def} (8/17/86)
-
-\eightpoint
-{\tt mode\char`\_def}, 94, 189, $\underline{\smash{\hbox{\it 270}}}$,
-{\it 278--279}.
-
-\bugonpage C355, right column (4/15/86)
-
-\eightpoint\noindent
-[The entry for `{\tt rulepen}' belongs before the entry for `rules'.]
-
-\bugonpage C355, right column (8/5/86)
-
-\eightpoint
-{\tt screenstrokes}, 191, $\underline{277}$.
-
-\bugonpage C355, 2nd line of entry for `semicolons' (1/12/87)
-
-\eightpoint
-\qquad 217, 223--224, 263, 312.
-
-\bugonpage C356, full names for the Stanfords (4/10/86)
-
-\eightpoint
-Stanford, Amasa Leland, 340.
-
-Stanford, Jane Elizabeth Lathrop, 340.
-
- % Volume D
-\hsize=35pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\buginvol D, in general (7/28/86)
-
-\tenpoint\noindent
-[A number of entries were mistakenly omitted from the mini-indexes
-on the right-hand pages. Here is a combined list of all the missing
-items; you can mount it inside the back cover, say, as a secondary mini-index
-when the first one fails\dots\ ]
-
-\nobreak\medskip
-\setbox0=\vbox{\eightpoint \hsize=11pc \catcode`\_=\active \let_=\_
- \rightskip=0pt plus 100pt minus 10pt
- \pretolerance 10000
- \hyphenpenalty 10000 \exhyphenpenalty 10000
- \noindent\vbox to1pt{}\par % 1pt = \topskip - \ninept
- \def\&#1{\hbox{\bf#1\/}} % boldface type for reserved words
- \obeylines
- \def\makeref #1 #2 #3#4
- {\nn=#2 \hangindent=1em \noindent\\{#1}%
- \if#3:: \else\unhcopy\eqbox \fi#4, \S\number\nn.\par}
- \makeref add_or_subtract 930 :\&{procedure}
- \makeref after 427 :\&{array}
- \makeref arg_list 720 :\\{pointer}
- \makeref b 580 :\\{pixel\_color}
- \makeref bad_exp 824 :\&{procedure}
- \makeref before 427 :\&{array}
- \makeref begin_name 770 :\&{procedure}
- \makeref bilin1 968 :\&{procedure}
- \makeref binary_mac 863 :\&{procedure}
- \makeref blank_rectangle 567 :\&{procedure}
- \makeref boc_c 1162 :\\{integer}
- \makeref boc_p 1162 :\\{integer}
- \makeref cf 298 :\\{fraction}
- \makeref clockwise 453 :\\{boolean}
- \makeref ct 298 :\\{fraction}
- \makeref cubic_intersection 556 :\&{procedure}
- \makeref cur_pen 403 :\\{pointer}
- \makeref cur_rounding_ptr 427 :$0\to \\{max\_wiggle}$
- \makeref cur_spec 403 :\\{pointer}
- \makeref cur_x 389 :\\{scaled}
- \makeref cur_y 389 :\\{scaled}
- \makeref dely 557 :\\{integer}
- \makeref dep_finish 935 :\&{procedure}
- \makeref dep_list 587 =macro
- \makeref dimen_head 1125 :\&{array}
- \makeref dx 495 :\\{integer}
- \makeref dy 495 :\\{integer}
- \makeref d1 464 :$0\to 1$
- \makeref end_name 772 :\&{procedure}
- \makeref eqtb 201 :\&{array}
- \makeref error_stop_mode 68 =$3$
- \makeref firm_up_the_line 682 :\&{procedure}
- \makeref get_next 667 :\&{procedure}
- \makeref gf_buf 1152 :\&{array}
- \makeref gf_offset 1152 :\\{integer}
- \makeref gf_ptr 1152 :\\{gf\_index}
- \makeref halfword 156 =$\\{min\_halfword}\to \\{max\_halfword}$
- \makeref hash 201 :\&{array}
- \makeref index 629 =macro
- \makeref input_ln 30 :\&{function}
- \makeref interaction 68 :$0\to 3$
- \makeref j 357 :$0\to \\{move\_size}$
- \makeref known_pair 872 :\&{procedure}
- \makeref limit 629 =macro
- \makeref m_spread 357 :\\{integer}
- \makeref materialize_pen 865 :\&{procedure}
- \makeref max_allowed 403 :\\{scaled}
- \makeref max_c 813 :\&{array}
- \makeref max_link 813 :\&{array}
- \makeref max_tfm_dimen 1130 :\\{scaled}
- \makeref mem_top 12 =macro
- \makeref mem 159 :\&{array}
- \makeref memory_word 156 =\&{record}
- \makeref more_name 771 :\&{function}
- \makeref m1 464 :\\{integer}
- \makeref n 580 :\\{screen\_col}
- \makeref n_sin_cos 145 :\&{procedure}
- \makeref name 629 =macro
- \makeref negate_dep_list 904 :\&{procedure}
- \makeref new_knot 871 :\&{function}
- \makeref node_to_round 427 :\&{array}
- \makeref n1 464 :\\{integer}
- \makeref octant_dir 395 :\&{array}
- \makeref o1 453 :\\{small\_number}
- \makeref o2 453 :\\{small\_number}
- \makeref paint_row 568 :\&{procedure}
- \makeref param 1096 :\&{array}
- \makeref param_stack 633 :\&{array}
- \makeref path_length 916 :\&{function}
- \makeref perturbation 1119 :\\{scaled}
- \makeref phi 542 :\\{angle}
- \makeref pool_ptr 38 :\\{pool\_pointer}
- \makeref post_head 843 :\\{pointer}
- \makeref pre_head 843 :\\{pointer}
- \makeref print_err 68 =macro
- \makeref print_macro_name 722 :\&{procedure}
- \makeref quarterword 156 =$0\to 255$
- \makeref recycle_value 809 :\&{procedure}
- \makeref row_transition 579 :\\{trans\_spec}
- \makeref scan_text_arg 730 :\&{procedure}
- \makeref scroll_mode 68 =$2$
- \makeref set_controls 299 :\&{procedure}
- \makeref sf 298 :\\{fraction}
- \makeref show_context 635 :\&{procedure}
- \makeref sorted 325 =macro
- \makeref st 298 :\\{fraction}
- \makeref start 629 =macro
- \makeref start_sym 1077 :\\{halfword}
- \makeref str_pool 38 :\&{packed}\ \&{array}
- \makeref str_ptr 38 :\\{str\_number}
- \makeref str_start 38 :\&{array}
- \makeref take_part 910 :\&{procedure}
- \makeref tfm_changed 1130 :\\{integer}
- \makeref tol 557 :\\{integer}
- \makeref tt 843 :\\{small\_number}
- \makeref tx 954 :\\{scaled}
- \makeref txx 954 :\\{scaled}
- \makeref txy 954 :\\{scaled}
- \makeref ty 954 :\\{scaled}
- \makeref tyx 954 :\\{scaled}
- \makeref tyy 954 :\\{scaled}
- \makeref unsorted 325 =macro
- \makeref uv 557 :$0\to \\{bistack\_size}$
- \makeref xy 557 :$0\to \\{bistack\_size}$
- \makeref x1 542 :\\{scaled}
- \makeref x2 542 :\\{scaled}
- \makeref x3 542 :\\{scaled}
- \makeref y1 542 :\\{scaled}
- \makeref y2 542 :\\{scaled}
- \makeref y3 542 :\\{scaled}
- }
-\hbox{\nsize=\ht0 \advance\nsize-\topskip
- \divide\nsize by 3 \divide\nsize by\ninept
- \multiply\nsize by\ninept \advance\nsize\topskip
- \vsplit0 to\nsize \kern1pc
- \msize=\ht0 \advance\msize-\topskip
- \divide\msize by 2 \divide\msize by\ninept
- \multiply\msize by\ninept \advance\msize\topskip
- \vbox to\nsize{\vsplit0 to\msize\vss}\kern1pc
- \vbox to\nsize{\box0\vss}}
-
-\buginvol D, in general (4/6/87)
-
-\tenpoint\noindent[The percent signs in all the comments (for example,
-on pages 7 and 42) are in the wrong font! Change `{\tt\%}' to `\%'.]
-
-\bugonpage Dvii, line 9 (9/25/86)
-
-{\tenpoint\noindent\hsize=29pc
-{\sl Discrete and Computational Geometry\/ \bf1} (1986), 123--140.
-\ \it Develops the theory\cutpar}
-
-\bugonpage D2, line 27 (6/17/86)
-
-\ninepoint\noindent\hskip10pt
-{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]METAFONT,\]Version\]1.3\char'23}\quad
-$\{\,$printed when \MF\ starts$\,\}$
-
-\bugonpage D18, line 30 (5/22/86)
-
-\ninepoint\noindent
-\\{str\_ptr}: \\{str\_number};\quad
-$\{\,$number of the current string being created$\,\}$
-
-\bugonpage D23, second line of mini-index, right column (6/14/87)
-
-\eightpoint
-\indent\\{pool\_name}\unhcopy\eqbox|"string"|, \S11.
-
-\bugonpage D30, lines 33--34 (6/14/87)
-
-\tenpoint\noindent
-to delete a token, and/or if some fatal error
-occurs while \MF\ is trying to fix a non-fatal one. But such recursion
-is never more than two levels deep.
-
-\bugonpage D63, lines 13--14 (5/5/87)
-
-\ninepoint\noindent
-[These two lines can be eliminated, since the variable \\{temp\_ptr}
-is no longer used! If you delete them, also remove \S158 from the
-list of sections where global variables are declared (pages D7 and D552),
-and remove \\{temp\_ptr} from the index on page D540.]
-
-\bugonpage D66, line 6 (5/22/86)
-
-\ninepoint\noindent
-{\bf function\/}\ $\\{get\_node}(s:\\{integer})$: \\{pointer};\quad
-$\{\,$variable-size node allocation$\,\}$
-
-\bugonpage D66, lines 31--32 (3/16/86)
-
-\tenpoint\noindent
-controlled
-growth helps to keep the \\{mem} usage consecutive when \MF\ is
-implemented on ``virtual memory'' systems.
-
-\bugonpage D67, lines 7--8 (4/21/87)
-
-\ninepoint\noindent\hskip10pt
-{\bf if} $r=p$ {\bf then if} $\\{rlink}(p)\ne p$ {\bf then}
- $\langle\,$Allocate entire node $p$ and {\bf goto} \\{found}%
- {\sevenrm\kern.5em171}$\,\rangle$;
-
-\bugonpage D86, second line of section 198 (2/27/87)
-
-\noindent
-Individual class numbers have no semantic
-or syntactic significance, except in a few instances\cutpar
-
-\bugonpage D101, line 2 (3/16/86)
-
-\tenpoint\line{%
-like `{\tt x}', or they can
-combine the structural properties of arrays and records, like `{\tt x20a.b}'.
-A}
-
-\bugonpage D102, line 24 (3/16/86)
-
-\tenpoint\line{\kern10pt
-In other words, variables have a hierarchical structure that includes
-enough threads running}
-
-\bugonpage D127, line 10 (5/5/87)
-
-\ninepoint\noindent
-[Variable $r$ can be eliminated, since it is not
-used in this procedure! If you delete it, also remove $\underline{280}$
-from the corresponding index entry on page D536.]
-
-\bugonpage D129, line 15 (5/5/87)
-
-\ninepoint\noindent
-[This line can be eliminated, since \\{sine} and \\{cosine} are not
-used in this procedure! If you delete them, also remove $\underline{284}$
-from the corresponding index entries on pages D538 and D521.]
-
-\bugonpage D142, line 23 (4/24/87)
-
-\tenpoint\noindent
-$(7-\sqrt{28}\,)/12$; the worst case
-occurs for polynomials like $B(0,28-4\sqrt{28},14-5\sqrt{28},42;t)$.)
-
-\bugonpage D178, third-last line (7/30/86)
-
-\tenpoint\line{\quad
-The following code maintains the invariant relations
-$0\le \\{x0}<\max(\\{x1},\\{x1}+\\{x2})$, $\vert\\{x1}\vert<2^{30}$,}
-
-\bugonpage D228, line 13 (7/30/86)
-
-\ninepoint\noindent\kern10pt
-{\bf while} $\\{max\_coef}<\\{fraction\_half}$ {\bf do}
-
-\smallskip\eightpoint\noindent
-The mini-index at the bottom of the next page should also receive the following
-new entry:
-\smallskip\indent
-$\\{fraction\_half}={\rm macro}$, \S105.
-
-\bugonpage D228, 10th-last line (5/5/87)
-
-\ninepoint\noindent\hskip20pt
-{\bf begin} $\\{right\_type}(p)\gets k$;
-\smallskip
-\noindent[Also eliminate `$q,$' seven lines above this, and delete
-$\underline{497}$ from the index entry for \\{q} on page D536.]
-
-\bugonpage D248, lines 16--21 (11/27/86)
-
-\ninepoint\noindent\kern10pt
-$\\{alpha}\gets\\{abs}(u)$;\kern5pt
- $\\{beta}\gets\\{abs}(v)$;\par\noindent\kern10pt
-{\bf if} $\\{alpha}<\\{beta}$ {\bf then}\par\noindent\kern20pt
-{\bf begin} $\\{alpha}\gets\\{abs}(v)$;\kern5pt
- $\\{beta}\gets\\{abs}(u)$;\kern5pt
-{\bf end};\quad$\{\,$now $\alpha=\max(\vert u\vert,\vert v\vert)$,
- $\beta=\min(\vert u\vert,\vert v\vert)\,\}$\par\noindent\kern10pt
-{\bf if} $\\{internal}[\\{fillin}]\ne0$ {\bf then}\par\noindent\kern20pt
-$d\gets d-\\{take\_fraction}(\\{internal}[\\{fillin}],
- \\{make\_fraction}(\\{beta}+\\{beta},\\{delta}))$;\par\noindent\kern10pt
-$d\gets\\{take\_fraction}((d+4)\;{\bf div}\;8,\\{delta})$;\kern5pt
-$\\{alpha}\gets\\{alpha}\;{\bf div}\;\\{half\_unit}$;
-
-\bugonpage D263, line 20 (3/16/86)
-
-\tenpoint\noindent
-instead of \\{false}, the other routines will simply log the fact
-that they have been called; they won't\cutpar
-
-\bugonpage D268, line 2 (4/28/87)
-
-\tenpoint\noindent
-Given the number~$k$ of an open window, the pixels of positive
-weight in \\{cur\_edges} will be shown\cutpar
-
-\bugonpage D301, line 6 of section 652 (5/5/87)
-
-\ninepoint\noindent
-[This line can be eliminated, since variable $s$ is not
-used in this procedure! If you delete it, also remove $\underline{652}$
-from the corresponding index entry on page D537; remove 652 from
-the index entries for \\{param\_size} and \\{param\_start} on page D534;
-and remove \\{param\_size} from the mini-index on page D301.]
-
-\bugonpage D376, lines 17 and 18 (11/14/86)
-
-\tenpoint\noindent
-[these two mysterious lines should be deleted]
-
-\bugonpage D380, line 11 (5/5/87)
-
-\ninepoint\noindent
-[Variables $q$ and $r$ can be eliminated, since they are not
-used in this procedure! If you delete them, also remove $\underline{862}$
-from the corresponding index entries on page D536.]
-
-\bugonpage D429, line 14 (5/5/87)
-
-\ninepoint\noindent\hskip10pt
-{\bf begin} $p\gets\\{cur\_exp}$;
-\smallskip
-\noindent[Also eliminate line 12, and delete $\underline{985}$ from the
-index entry for \\{vv} on page D543.]
-
-\bugonpage D455, line 5 (5/5/87)
-
-\ninepoint\noindent
-[This line can be eliminated, since variable $t$ is not
-used in this procedure! If you delete it, also remove $\underline{1059}$
-from the corresponding index entry on page D540; remove 1059 from
-the index entries for \\{small\_number} and \\{with\_option} on pages D539
-and D544; and remove \\{with\_option} from the mini-index on page D455.]
-
-\bugonpage D463, line 10 (12/15/86)
-
-\ninepoint\noindent\hskip30pt
-({\tt"Pretend\]that\]you're\]Miss\]Marple:\]Examine\]all\]clues,"})
-
-\bugonpage D465, lines 17--18 (6/14/87)
-
-\tenpoint\noindent
-[Delete these two lines.]
-
-\bugonpage D474, 5th-last line (3/16/86)
-
-\tenpoint\noindent
-depths, or italic corrections) are sorted;
-then the list of sorted values is perturbed, if necessary.
-
-\bugonpage D481, line 12 (6/17/86)
-
-\ninepoint\noindent\hskip10pt
-\\{print\_nl}({\tt\char`\"Font\]metrics\]written\]on\]\char`\"});\kern5pt
-\\{print}(\\{metric\_file\_name});\kern5pt
-\\{print\_char}({\tt\char`\".\char`\"});
-
-\noindent\hskip10pt\\{b\_close}(\\{tfm\_file})
-
-\smallskip\eightpoint\noindent
-The mini-index at the bottom of this page should also receive the following
-new entry:
-\smallskip\indent
-\\{print\_char}: {\bf procedure}, \S58.
-
-\bugonpage D510, new line to follow line 5 (6/17/86)
-
-{\tenpoint\parindent=1em
-This program doesn't bother to close the input files that may still be open.
-\par}
-
-\bugonpage D510, just before the fifth-last line (8/5/86)
-
-\ninepoint\noindent\hskip30pt$\\{internal}[\\{fontmaking}]\gets0$;\quad
-$\{\,$avoid loop in case of fatal error$\,\}$
-
-\bugonpage D520, right column (6/14/87)
-
-\eightpoint
-\leftline{Chinese characters:\quad 1147.}
-
-\bugonpage D526, left column, lines 1--2 (7/30/86)
-
-\eightpoint
-\leftline{\indent\\{fraction\_half}:\quad
- $\underline{105}$, 111, 152, 288, 408, 496, 543,}
-\leftline{\indent\qquad 1098, 1128, 1141.}
-
-\bugonpage D526, left column, lines 6--7 (7/30/86)
-
-\eightpoint
-\leftline{\indent\qquad 478, 497, 499, 503, 530, 540, 547, 549, 599, 603,}
-\leftline{\indent\qquad 612, 615, 815--816, 917, 1169--1170.}
-
-\bugonpage D528, right column (6/14/87)
-
-\eightpoint
-\leftline{Japanese characters:\quad 1147.}
-
-\bugonpage D530, right column, line 45 (7/30/86)
-
-\eightpoint
-\leftline{\indent\\{max}:\quad$\underline{539}$, 543.}
-
-\bugonpage D533, right column (6/14/87)
-
-\eightpoint
-\leftline{oriental characters:\quad 1147.}
-
-\bugonpage D535, right column, line 27 (6/17/86)
-
-\eightpoint
-\leftline{\indent\qquad 1134, 1163--1165, 1182, 1194, 1200, 1205, 1213.}
-
-\bugonpage D547, bottom two lines (11/27/86)
-
-\ninepoint\noindent
-[These lines, and the top two on the next page, should move down
-so that they appear in alphabetical order just before `Compute
-test coefficients'.]
- % volume E
-\hsize=29pc
-\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
-
-\bugonpage Exiii, lines 1--2 (7/28/86)
-
-\tenpoint\noindent
-February 11--13, 1984), 49.
-\ {\it An example meta-character of the Devanagari alphabet, worked out
-``online'' with the help of Matthew Carter.}
-
-\bugonpage Exiii, line 6 (7/28/86)
-
-\tenpoint\noindent
-{\it and western alphabets work also for Devanagari and Tamil.}
-
-\bugonpage E12, lines 15 and 19 (7/23/86)
-
-\tenpoint\noindent[change `17.32' to `17.28' in both places]
-
-\bugonpage E12, third-last line (12/18/86)
-
-\tenpoint\noindent[change `41' to `40']
-
-\bugonpage E13, lines 3, 4, and 20 (12/18/86)
-
-\tenpoint\noindent[change `40' to `41', `48' to `47', `17' to `7']
-
-\bugonpage E18, line 20 (7/23/86)
-
-\tenpoint\noindent[change `17.32' to `17.28']
-
-\bugonpage E18, line 29 (12/9/86)
-
-\tenpoint\noindent[change `236' to `212' in the {\tt cmss9} column]
-
-\bugonpage E170, top illustration (11/2/86)
-
-\tenpoint\noindent[There should be no ``dish'' or depression in the
-vicinity of point {\tt 3r}; the top edge of the character should be
-straight. This error appears also in the other uses of `\\{no\_dish\_serif}'
-throughout the book, since the illustrations were made before
-`\\{no\_dish\_serif}' was added to the program. See page
-E180~(twice at the top), E370~(twice), E374~(twice), E376~(twice), E378~(top),
-E390~(bottom), E398~(top), E402~(top), E406~(top), E453~(twice).]
-
-\bugonpage E179, new line to be inserted after line 6 (10/13/86)
-
-\ninepoint\noindent
-{\bf if} $\\{shaved\_stem}<\\{crisp}.\\{breadth}$:
- $\\{shaved\_stem}:=\\{crisp}.\\{breadth}$; {\bf fi}
-
-\bugonpage E219, line 29 (6/2/87)
-
-\ninepoint\line{\\{top} $y_1=h$; \ $x_1=x_2$; \
- {\bf filldraw stroke} $z_{1e}\dashto z_{2'e}$;\hfil\% stem}
-
-\bugonpage E279, seventh line from the bottom (7/20/86)
-
-\rightline{\eightssi that delicious but restrained humor which
- her readers found so irresistible.}
-
-\bugonpage E301, new line to be inserted after line 28 (5/15/87)
-
-\ninepoint\noindent
-\quad{\bf if} $\\{lower\_side}>1.2\\{upper\_side}$:
- $\\{upper\_side}:=\\{lower\_side}$; {\bf fi}
-
-\bugonpage E554, bottom half of page (12/18/86)
-
-\ninepoint\noindent[The letters will change slightly because of the
-corrections to {\tt cmr17} noted on pages 12 and 13.]
-
-\bugonpage E561, line 3 (12/9/86)
-
-\ninepoint\noindent[The numerals should be `\thinspace
-{\niness 0123456789}\thinspace' (i.e., 2/3 point less tall)
-because of the correction made to page 18.]
-
-\bugonpage E562, line 9 (12/9/86)
-
-\ninepoint\noindent[The numerals should be `\thinspace
-{\ninessi 0123456789\/}\thinspace' (i.e., 2/3 point less tall)
-because of the correction made to page 18.]
-
-\bugonpage E572, entry for {\it breadth} (10/13/86)
-
-\eightpoint
-{\it breadth}, 59, 75, 79, 91, 93, 179, 225, 233,
-
-\bugonpage E573, entry for {\tt cmcsc10} (8/17/86)
-
-\eightpoint
-{\tt cmcsc10}, $\underline{30}$--$\underline{31}$, 567.
-
-\bugonpage E576, tenth-last line (5/15/87)
-
-\eightpoint
-{\bf lowres\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em
- fix}, 550.
- \bye
- Now here are some that I will make soon!
-
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.twelve b/Master/texmf-dist/source/generic/knuth/errata/errata.twelve
deleted file mode 100644
index 8a7c291b490..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.twelve
+++ /dev/null
@@ -1,1709 +0,0 @@
-% Bugs (sigh) in Computers \& Typesetting
-
-\input manmac
-\def\.#1{\hbox{\tt#1}}
-\font\sltt=cmsltt10
-\font\niness=cmss9
-\font\ninessi=cmssi9
-\proofmodefalse
-\raggedbottom
-\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\today{\number\day\
- \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}
-
-\def\cutpar{{\parfillskip=0pt\endgraf}}
-
-\def\rhead{Bugs in {\tensl Computers \& Typesetting as of \today}}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
- \hrule width\hsize
- \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
- \nobreak\medskip}
-\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
-\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
-\newcount\nn
-\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
-\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
-
-\tenpoint
-\noindent This is a list of all substantial corrections made to {\sl Computers
-\& Typesetting\/} between the publication of the second ``Millennium Edition''
-at the close of the year 2001 and the beginning of the year 2014.
-(More precisely, it lists errors corrected
-in 16th to 19th printings of Volume~A, the 7th and 8th printings
-of Volume~B, the 6th and 7th printings of Volume~C, the 4th and 5th printings
-of Volume~D, and the 5th and 6th printings of Volume~E.)
-Corrections made to the softcover version of {\sl The \TeX book\/},
-beginning with its 32nd printing, are
-the same as corrections to Volume~A\null. Corrections to the softcover
-version of {\sl The \slMF\kern1ptbook}, beginning with its 11th printing,
-are the same as corrections to Volume~C\null. Changes to the mini-indexes
-and master indexes of Volumes B, D, and~E are not shown here unless they are
-not obviously derivable from what has been shown. All of these
-errors have supposedly been corrected in more recent printings, unless
-they were subsequently found to be wrong.
-\looseness=-1
-
- % volume A
-
-\bugonpage A7, line 4 from the bottom (01/15/04)
-
-\noindent
-since control sequences of the second kind always have exactly one
-symbol after\cutpar
-
-\bugonpage A123, line 7 from the bottom (02/27/08)
-
-\ninepoint\noindent
-that it won't make the natural height-plus-depth
-of\/ |\box|$\,n$ surpass |\dimen|$\,n$, when it~is\cutpar
-
-\bugonpage A124, lines 12 and 13 (02/27/08)
-
-\ninepoint\noindent
-means that \TeX\ has tried to split an |\insert254| to height $180.2\pt$;
-the natural height-plus-depth of the best such split is $175.3\pt$,
-and the penalty for breaking there is~100.)
-
-\bugonpage A153, line 7 (01/03/14)
-
-\ninepoint\noindent
-of three fonts: one for text size, one for
-script size, and one for scriptscript size. The\cutpar
-
-\bugonpage A206, lines 12--17 (05/21/07)
-
-\ninepoint\noindent
-or alignment template
-is also considered to be |\outer| in this sense; for example, a
-file shouldn't end in the middle of a definition. If you are designing a
-format for others to use, you can help them detect errors before too much
-harm is done, by using |\outer| with all control sequences that should
-appear only at ``quiet times'' within a document. For example, Appendix~B
-defines |\proclaim| to be |\outer|, since a user shouldn't be stating a
-theorem as part of a definition or argument or preamble.
-
-
-\bugonpage A216, line 3 from the bottom (12/20/07)
-
-\ninepoint\indent|\openin|\<number>|=|\<file name>
-
-\bugonpage A290, lines 25--26 (02/24/08)
-
-\ninepoint\textindent{$\bull$}
-\<leaders>\<box or rule>\<horizontal skip>.\enskip
-Here \<horizontal skip> refers to one of the first five glue-appending
-commands just mentioned; the formal syntax for \<leaders>\cutpar
-
-\bugonpage A292, line 15 (12/02/02)
-
-\ninepoint\noindent
-are defined as in the
-second alternative of a \<math field>, are
-recorded in a ``choice\cutpar
-
-\bugonpage A308, lines 25 and 26 (06/17/02)
-
-\ninepoint
-\begintt
-\def\appendroman#1#2#3{\expandafter\def\expandafter#1\expandafter
- {\csname\expandafter\gobble\string#2\romannumeral#3\endcsname}}
-\endtt
-
-\bugonpage A311, line 14 (12/02/02)
-
-\ninepoint\indent
-|\def\\{\if\space\next\ % assume that \next is unexpandable|
-
-\bugonpage A311, line 17 (12/29/07)
-
-\ninepoint\indent
-| \leavevmode\copy0\kern-\wd0\makelightbox}|
-
-\bugonpage A318, lines 24 and 25 (10/01/03)
-
-\ninepoint\noindent
-\hbox to\parindent{\bf\hss15.13.\enspace}%
-Yes, in severe circumstances. (1)~Previous footnotes might
- have left no room for any more footnotes on the page.
-(2)~If |\vadjust{\eject}| occurs on the same line\cutpar
-
-\bugonpage A364, lines 12--15 from the bottom (02/29/08)
-
-\ninepoint\noindent
-|\def\loggingall{\tracingcommands=2 \tracingstats=2|\par\noindent
-| \tracingpages=1 \tracingoutput=1 \tracinglostchars=1 |\par\noindent
-| \tracingmacros=2 \tracingparagraphs=1 \tracingrestores=1 |\par\noindent
-| \showboxbreadth=\maxdimen \showboxdepth=\maxdimen}|\par
-\noindent
-|\def\tracingall{\tracingonline=1 \loggingall}|
-
-\bugonpage A364, line 5 from the bottom (02/29/08)
-
-\ninepoint\noindent
-|\def\fmtversion{3.141592653} % identifies the current format|
-
-\bugonpage A373, lines 4 and 5 from the bottom (01/02/14)
-
-\ninepoint\noindent
-And here's another solution (which may be faster, because
-token list registers can be expanded more quickly than macros
-on some implementations, using |\the|):
-
-\bugonpage A373, line 2 from the bottom (01/02/14)
-
-\ninepoint\indent
-|\loop \ifnum\m>0 \t=\expandafter{\the\t*}\advance\m-1 \repeat|
-
-\bugonpage A399, line 18, through what used to be page A400, line 14 (02/26/08)
-
-\ninepoint
-Finally, the reformatting of\/ |\box\footins| can be achieved easily with
-an elegant technique suggested by David Kastrup, using the following
-\TeX\ code within the |\output| routine:
-\begindisplay
-|\def\makefootnoteparagraph{\unvbox\footins|\cr
-| \baselineskip=\footnotebaselineskip \removehboxes}|\cr
-|\def\removehboxes{\unskip\setbox0=\lastbox|\cr
-| \ifhbox0{\removehboxes}\unhbox0 \else\noindent \fi}|\cr
-\enddisplay
-The key idea here is |\removehboxes|, a macro that has the magical ability to
-take a vertical box such as `|\vbox{\box1\box2\box3\removehboxes}|' and
-transform it into
-`|\vbox{\noindent\unhbox1\unhbox2\unhbox3}|'\kern-1pt,
-if\/ |\box1|, \kern-2pt|\box2|, and
-|\box3| are hboxes. Notice how |\removehboxes| introduces braces so that
-\TeX's {save stack} will hold all of the hboxes before they are unboxed. Each
-level of recursion in this routine uses one cell of input stack space and
-three cells of save stack space; thus, it is generally safe to do more than
-100 footnotes without exceeding \TeX's capacity.
-
-In our application there is no interline glue within |\box\footins|,
-so the |\unskip| command could be deleted from |\removehboxes|.
-
-Incidentally, the |\unskip| and |\lastbox| operations have running
-times of the approximate form
-$a+mb$, where $m$~is the number of items on the
-list preceding the glue or box that is removed. Hence |\removehboxes| has a
-running time of order $n^2$ when it removes $n$~boxes.
-But the constant~$b$ is so small that
-for practical purposes it's possible to think of\/ |\unskip| and
-|\lastbox| as almost instantaneous.
-
-\bugonpage A416, lines 18--22 (06/08/07)
-
-\ninepoint\noindent\beginlines
-|\def\leftheadline{\hbox to \pagewidth{\spaceskip=0pt|
-| \vbox to 10pt{}% strut to position the baseline|
-| \llap{\tenbf\folio\kern1pc}% folio to left of text|
-| \tenit\rhead\hfil}} % running head flush left|
-|\def\rightheadline{\hbox to \pagewidth{\spaceskip=0pt\vbox to 10pt{}%|
-\endlines
-
-\bugonpage A418, line 8 from the bottom (12/13/11)
-
-\ninepoint\noindent\beginlines
-| \def\\{#3} \advance\hsize by -18mm|
-\endlines
-
-\bugonpage A418, line 3 from the bottom (12/13/11)
-
-\ninepoint\noindent\beginlines
-| \halign{\line{\titlefont\hss##}\\#4\unskip\\}|
-\endlines
-
-\bugonpage A442, lines 7 and 8 from the bottom (01/03/14)
-
-\def\rule#1.{\smallskip\textindent{\bf#1.}\ignorespaces}
-\ninepoint\textindent{\bf 3.}%
-If the current item is a style change, set $C$ to the specified
-style and move on to the next item.
-
-\bugonpage A450, lines 14--16 from the bottom (12/19/02)
-
-\begingroup\def\\#1{$_{\kern\scriptspace#1}$}
-\indent\qquad{\tt s\\1tic
- \\1exp x\\3p pi\\3a \\2i\\1a i\\2al \\2id \\1do \\1ci \\2io ou\\2 \\2us}
-\medskip\noindent
-(where subscripts that aren't shown are zero), and this yields
-$$\centerline{%
-\tt.\\0s\\0u\\1p\\0e\\0r\\1c\\0a\\0l\\1i\\0f\\0r\\0a\\0g\\1i\\0l\\4i%
-\\0s\\1t\\2i\\0c\\1e\\0x\\3p\\2i\\3a\\0l\\2i\\1d\\0o\\1c\\2i\\0o\\2u\\2s\\0.}$$
-\endgroup
-
-\bugonpage A458, left column (01/11/07)
-
-\eightpoint\noindent
-|\\|, 38, {\it356}, {\it378}, {\it418}.
-
-\bugonpage A459, left column (03/17/06)
-
-\eightpoint\noindent
-angle brackets ( $\langle\,\rangle$ ), 59, {\it146--147}, 150,~156,\par
-\noindent\qquad $\underline{268}$, 420, 437;
- {\sl see also\/} |\langle|, |\rangle|.
-
-\bugonpage A461, left column (02/24/08)
-
-\eightpoint\noindent
-|\boxit|, 223, 331.
-
-\bugonpage A468, right column (02/26/08)
-
-\eightpoint\noindent
-interline glue, 78--79, $\underline{80}$, 104, 105, 125, 221,\par
-\noindent\qquad 245, 263, 281--282, 335, 352, 399, 409.
-
-\bugonpage A469, left column (02/26/08)
-
-\eightpoint\noindent
-Kastrup, David Friedrich, 399.
-
-\bugonpage A470, left column (01/21/03)
-
-\eightpoint\noindent
-|\loggingall|, $\underline{364}$.
-
-\bugonpage A477, right column (06/08/07)
-
-\eightpoint\noindent
-\llap{*}|\spaceskip|, 76, 274, {\it317}, {\it356}, {\it416}, 429.
-
-\bugonpage A479, right column (09/11/07)
-
-\eightpoint\noindent
-|\undefined|, 350, 384.
-
-\bugonpage A483, line 5 from the bottom (11/18/03)
-
-\eightpoint
-\rightline{\eightss--- HIERONYMUS HORNSCHUCH, %
- {\eightrm'}$O\mkern-1mu\rho\mkern1mu\vartheta o\mkern1mu %
- \tau\upsilon\pi o\gamma\mkern-1mu %
- \rho\alpha\phi\acute\iota\alpha\varsigma$\enspace(1608)}
-
- % volume B
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage Bv, page number change (12/27/11)
-
-\eightpoint\noindent[For consistency with Volumes A, C, and E, the
-preface now begins on page v instead of page~vii. This change was first
-made in the ninth printing.]
-
-\bugonpage Bv {(formerly Bvii)}, bottom two lines (01/06/14)
-
-\eightpoint\noindent
-all of those changes.
-I~now believe that the final bug was discovered on 14 September 2008
-and removed in version 3.14159265.
-The finder's fee has converged to \$327.68.
-
-\bugonpage Bxiii {(formerly Bxv)}, line $-7$ (12/27/11)
-
-\ninepoint\noindent
-Format specs have no effect on the corresponding Pascal program, but they
-do influence\cutpar
-
-\hsize=35pc
-
-\bugonpage B2, line 10 from the bottom (01/02/14)
-
-\ninepoint\noindent\hskip10pt
-{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]TeX,\]Version\]3.14159265\char'23}\quad
-$\{\,$printed when \TeX\ starts$\,\}$
-
-\bugonpage B3, new paragraph to follow line 9 (12/20/02)
-
-\tenpoint\noindent\quad
-Incidentally, Pascal's standard \\{round} function can be problematical,
-because it disagrees with the IEEE floating-point standard.
-Many implementors have
-therefore chosen to substitute their own home-grown rounding procedure.
-
-\bugonpage B21, lines 33 and 34 (09/11/07)
-
-\def\Oct#1{\hbox{\rm\char'23\kern-.2em\it#1\/\kern.05em}} % octal constant
-\tenpoint\noindent
-$[\Oct{41}\to\Oct{46},\Oct{60}%
-\to\Oct{71},\Oct{136},\Oct{141}\to\Oct{146},\Oct{160}\to\Oct{171}]$ must be printable.
-Thus, at least 81 printable characters are needed.
-
-\bugonpage B109, line 16 (01/06/14)
-
-\ninepoint\noindent
-\qquad\qquad{\bf begin} $\\{print\_esc}(\.{"csname"})$;
-$\\{print\_esc}(\.{"endcsname"})$;
-$\\{print\_char}(\.{"\ "})$;
-{\bf end}
-
-\bugonpage B114, line 25 (09/11/07)
-
-\def\#{\hbox{\tt\char`\#}} % parameter sign
-\ninepoint\noindent
-{\bf define} $\\{save\_index}(\#)\equiv\\{save\_stack}[\#].\\{hh}.\\{rh}$\quad
- $\{\,$\\{eqtb} location or token or \\{save\_stack} location$\,\}$
-
-\bugonpage B139, line 20 (12/19/02)
-
-\ninepoint\noindent
-\quad{\bf begin while} $(\\{state}=\\{token\_list}) \land
- (\\{loc}=\\{null}) \land (\\{token\_type}\ne\\{v\_template})$ {\bf do}\par
-\noindent\qquad\\{end\_token\_list};\quad$\{\,$conserve stack space$\,\}$
-
-\bugonpage B144, line 14 (09/11/07)
-
-\ninepoint\noindent
-\quad\\{cat}: $0\to\\{max\_char\_code}$;\quad$\{\,$\\{cat\_code}(\\{cur\_char}), usually$\,\}$
-
-\bugonpage B153, lines 2 and 3 (09/11/07)
-
-\tenpoint\noindent
-In fact, these three procedures account for almost every use of \\{get\_next}.
-
-\bugonpage B161, line 19 (12/19/02)
-
-\ninepoint\noindent
-\quad{\bf while} $(\\{state}=\\{token\_list}) \land
- (\\{loc}=\\{null}) \land (\\{token\_type}\ne\\{v\_template})$ {\bf do}\par
-\noindent\qquad\\{end\_token\_list};\quad$\{\,$conserve stack space$\,\}$
-
-\bugonpage B163, line 29 (12/19/02)
-
-\ninepoint\noindent
-\quad$\\{long\_state}\gets\\{call}$;
-$\\{cur\_tok}\gets\\{par\_token}$;
-$\\{ins\_error}$;
-{\bf goto} \\{continue};
-
-\bugonpage B172, lines 2--6 from the bottom (09/11/07)
-
-\ninepoint\noindent
-{\bf else if\/} $m=\\{vmode}$ {\bf then} \\{scanned\_result}(\\{prev\_depth})(\\{dimen\_val})\par\noindent
-\quad{\bf else} \\{scanned\_result}(\\{space\_factor})(\\{int\_val})
-
-\bugonpage B178, line 4 (09/11/07)
-
-\ninepoint\noindent
-\quad$\\{cur\_val}\gets0$;
-$\\{cur\_val\_level}\gets\\{int\_val}$;
-$\\{radix}\gets0$;
-$\\{cur\_order}\gets\\{normal}$;
-
-\bugonpage B184, line 9 from the bottom (04/18/07)
-
-\tenpoint\noindent
-and denominator sum to 32768 or less.
-According to the definitions here, $\rm2660\,dd\approx1000.33297\,mm$;\kern-6.6pt\cutpar
-
-\bugonpage B206, line 14 (10/30/02)
-
-\tenpoint\noindent
-used input files like \.{webmac.tex}.
-
-\bugonpage B206, new paragraph to follow line 22 (12/20/02)
-
-\tenpoint\noindent\quad
-The following procedures don't allow spaces to be part of
-file names; but some users seem to like names that are spaced-out.
-System-dependent changes to allow such things should probably
-be made with reluctance, and only when an entire file name that
-includes spaces is ``quoted'' somehow.
-
-\bugonpage B227, new line to precede line 23 (09/11/07)
-
-\ninepoint\noindent
-{\bf if} $(\\{nw}=0)\lor(\\{nh}=0)\lor(\\{nd}=0)\lor(\\{ni}=0)$
- {\bf then} \\{abort};
-
-\bugonpage B256, line 25 (12/20/02)
-
-\ninepoint\noindent
-\qquad\\{cur\_glue}: \\{real};\quad$\{\,$glue seen so far$\,\}$\par\noindent
-\qquad\\{cur\_g}: \\{scaled};\quad$\{\,$rounded
- equivalent of \\{cur\_glue} times the glue ratio$\,\}$\par\noindent
-\quad{\bf begin} $\\{cur\_g}\gets0$;
- $\\{cur\_glue}\gets\\{float\_constant}(0)$;\par\noindent
-\quad$\\{this\_box}\gets\\{temp\_ptr}$;
- $\\{g\_order}\gets\\{glue\_order}(\\{this\_box})$;
- $\\{g\_sign}\gets\\{glue\_sign}(\\{this\_box})$;
-
-\bugonpage B258, line 5 from the bottom (12/20/02)
-
-\ninepoint\noindent
-\quad{\bf begin} $g\gets\\{glue\_ptr}(p)$;
- $\\{rule\_wd}\gets\\{width}(g)-\\{cur\_g}$;
-
-\bugonpage B258, bottom line (12/20/02)
-
-\ninepoint\noindent
-\qquad\qquad{\bf begin} $\\{cur\_glue}\gets\\{cur\_glue}+\\{stretch}(g)$;
- $\\{vet\_glue}(\\{float}(\\{glue\_set}(\\{this\_box}))*\\{cur\_glue})$;\par
-\noindent\qquad\qquad$\\{cur\_g}\gets\\{round}(\\{glue\_temp})$;
-
-\bugonpage B259, line 4 (12/20/02)
-
-\ninepoint\noindent
-\qquad\qquad{\bf begin} $\\{cur\_glue}\gets\\{cur\_glue}-\\{shrink}(g)$;
- $\\{vet\_glue}(\\{float}(\\{glue\_set}(\\{this\_box}))*\\{cur\_glue})$;\par
-\noindent\qquad\qquad$\\{cur\_g}\gets\\{round}(\\{glue\_temp})$;
-
-\bugonpage B259, new line to precede old line 7 (12/20/02)
-
-\ninepoint\noindent
-\quad$\\{rule\_wd}\gets\\{rule\_wd}+\\{cur\_g}$;
-
-\bugonpage B260, line 21 (12/19/02)
-
-\ninepoint\noindent
-\qquad{\bf else begin} $\\{lx}\gets\\{lr}$ {\bf div} $(\\{lq}+1)$;
-
-\bugonpage B261, line 9 (12/20/02)
-
-\ninepoint\noindent
-\qquad\\{cur\_glue}: \\{real};\quad$\{\,$glue seen so far$\,\}$\par\noindent
-\qquad\\{cur\_g}: \\{scaled};\quad$\{\,$rounded
- equivalent of \\{cur\_glue} times the glue ratio$\,\}$\par\noindent
-\quad{\bf begin} $\\{cur\_g}\gets0$;
- $\\{cur\_glue}\gets\\{float\_constant}(0)$;\par\noindent
-\quad$\\{this\_box}\gets\\{temp\_ptr}$;
- $\\{g\_order}\gets\\{glue\_order}(\\{this\_box})$;
- $\\{g\_sign}\gets\\{glue\_sign}(\\{this\_box})$;
-
-\bugonpage B262, line 10 from the bottom (12/20/02)
-
-\ninepoint\noindent
-\quad{\bf begin} $g\gets\\{glue\_ptr}(p)$;
- $\\{rule\_ht}\gets\\{width}(g)-\\{cur\_g}$;
-
-\bugonpage B262, line 6 from the bottom (12/20/02)
-
-\ninepoint\noindent
-\qquad\qquad{\bf begin} $\\{cur\_glue}\gets\\{cur\_glue}+\\{stretch}(g)$;
- $\\{vet\_glue}(\\{float}(\\{glue\_set}(\\{this\_box}))*\\{cur\_glue})$;\par
-\noindent\qquad\qquad$\\{cur\_g}\gets\\{round}(\\{glue\_temp})$;
-
-\bugonpage B262, line 2 from the bottom (12/20/02)
-
-\ninepoint\noindent
-\qquad\qquad{\bf begin} $\\{cur\_glue}\gets\\{cur\_glue}-\\{shrink}(g)$;
- $\\{vet\_glue}(\\{float}(\\{glue\_set}(\\{this\_box}))*\\{cur\_glue})$;\par
-\noindent\qquad\qquad$\\{cur\_g}\gets\\{round}(\\{glue\_temp})$;
-
-\bugonpage B263, new line to precede old line 2 (12/20/02)
-
-\ninepoint\noindent
-\quad$\\{rule\_ht}\gets\\{rule\_ht}+\\{cur\_g}$;
-
-\bugonpage B264, line 10 (12/19/02)
-
-\ninepoint\noindent
-\qquad{\bf else begin} $\\{lx}\gets\\{lr}$ {\bf div} $(\\{lq}+1)$;
-
-\bugonpage B266, line 29 (09/11/07)
-
-\tenpoint\noindent
-$\\{total\_pages}\ge65536$, the \.{DVI} file will lie. And if
-$\\{max\_push}\ge65536$, the user deserves whatever chaos might ensue.
-
-\bugonpage B279, line 19 (09/11/07)
-
-\ninepoint\noindent
-\qquad\\{p}: \\{pointer};\quad$\{\,$a new glue node$\,\}$
-
-\bugonpage B288, lines 18--20 (09/11/07)
-
-\ninepoint\noindent
-\\{left\_noad}: {\bf begin} \\{print\_esc}(\.{"left"});
- \\{print\_delimiter}(\\{delimiter}($p$));\par\noindent
-\quad{\bf end};\par\noindent
-\\{right\_noad}: {\bf begin} \\{print\_esc}(\.{"right"});
- \\{print\_delimiter}(\\{delimiter}($p$));
-
-\bugonpage B290, line 12 (09/11/07)
-
-\ninepoint\noindent
-\quad{\bf begin if\/} $s=\\{text\_size}$ {\bf then}
- \\{print\_esc}(\.{"textfont"});
-
-\bugonpage B299, line 9 (12/20/02)
-
-\ninepoint\noindent
-\qquad\qquad\quad{\bf if\/} $\\{type}(r)=\\{kern\_node}$ {\bf then}
- \quad$\{\,$unneeded italic correction$\,\}$
-
-\bugonpage B332, line 6 (12/19/02)
-
-\tenpoint\noindent
-is being scanned, or when no alignment preamble is active.
-
-\bugonpage B332, line 8 (12/19/02)
-
-\ninepoint\noindent
-\quad{\bf begin if\/} $(\\{scanner\_status}=\\{aligning}) \lor
- (\\{cur\_align}=\\{null})$ {\bf then}
-
-\bugonpage B336, line 11 from the bottom (10/13/03)
-
-\tenpoint\noindent
-$j-i+\\{min\_quarterword}$ in their
-\\{link} fields. The values of $w_{ii}$ were initialized to
-\\{null\_flag},\cutpar
-
-\bugonpage B342, lines 5 and 6 (09/11/07)
-
-\tenpoint
-In restricted horizontal mode, the \\{clang} part of \\{aux} is undefined;
-an over-cautious Pascal runtime system may complain about this.
-
-\bugonpage B343, line 25 (01/02/13)
-
-\noindent
-should begin in the
-sequence of line numbers, in case hanging indentation or \.{\char`\\parshape}
-is in\cutpar
-
-\bugonpage B416, line 22 (02/29/08)
-
-\ninepoint\noindent
-\qquad\qquad{\bf if\/} $\\{count}(t)=1000$ {\bf then} $t\gets\\{height}(r)$
-\par\noindent
-\qquad\qquad{\bf else} $t\gets\\{x\_over\_n}(\\{height}(r),1000)*\\{count}(t)$;
-\par\noindent
-\qquad\qquad\\{print\_scaled}$(t)$
-
-\bugonpage B438, lines 1--3 (09/11/07)
-
-\tenpoint\noindent
-{\bf1035.\quad}If \\{link}(\\{cur\_q}) is nonnull when \\{wrapup} is invoked,
-\\{cur\_q} points to
-the list of characters that were consumed while building the ligature
-character~\\{cur\_l}.
-
-\bugonpage B438, lines 19 and 20 (09/11/07)
-
-\ninepoint\noindent
-\qquad\qquad\qquad{\bf begin if\/} $\\{link}(\\{cur\_q})>\\{null}$ {\bf then}
-\par\noindent
-\qquad\qquad\qquad\quad{\bf if\/} $\\{character}(\\{tail})=\\{qi}(
- \\{hyphen\_char}[\\{main\_f}])$ {\bf then} $\\{ins\_disc}\gets\\{true}$;
-
-\bugonpage B438, line 4 from the bottom (09/11/07)
-
-\ninepoint\noindent
-\quad$\\{link}(\\{tail})\gets\\{lig\_stack}$;
-$\\{tail}\gets\\{lig\_stack}$\quad$\{\,$\\{main\_loop\_lookahead} is next$\,\}$
-
-\bugonpage B439, line 3 (09/11/07)
-
-\ninepoint\noindent
-\quad{\bf if\/} $\\{main\_p}>\\{null}$ {\bf then}
- \\{tail\_append}(\\{main\_p});\quad$\{\,$append a single character$\,\}$
-
-\bugonpage B440, new line to follow line 9 (09/11/07)
-
-\ninepoint\noindent
-\quad{\bf if\/} $\\{cur\_r}=\\{non\_char}$ {\bf then goto}
- \\{main\_loop\_wrapup};
-
-\bugonpage B452, line 18 (28/03/11)
-
-\noindent\\{hmode}, where the latter two are used to denote
- \.{\char`\\vbox} and \.{\char`\\hbox}, respectively.
-
-\bugonpage B455, lines 3 and 4 (09/11/07)
-
-\ninepoint\noindent
-\quad{\bf if\/} $((\\{cur\_cmd}=\\{hskip})\land(\\{abs}(\\{mode})\ne\\{vmode}))
- \lor ((\\{cur\_cmd}=\\{vskip})\land(\\{abs}(\\{mode})=\\{vmode}))$ {\bf then}
-
-\bugonpage B472, new paragraph to follow line 10 (12/20/02)
-
-\tenpoint\noindent\quad
-A devious user might force an \\{endv} command to occur just about anywhere;
-we must defeat such hacks.
-
-\bugonpage B472, replacement for what used to be line 13 (12/20/02)
-
-\ninepoint\noindent
-\quad{\bf begin} $\\{base\_ptr}\gets\\{input\_ptr}$;
- $\\{input\_stack}[\\{base\_ptr}]\gets\\{cur\_input}$;\par\noindent
-\quad{\bf while} $(\\{input\_stack}[\\{base\_ptr}].\\{index\_field}\ne
- \\{v\_template}) \land{}$\par\noindent
-\quad\qquad $(\\{input\_stack}[\\{base\_ptr}].\\{loc\_field}=
- \\{null}) \land {}$\par\noindent
-\quad\qquad $(\\{input\_stack}[\\{base\_ptr}].\\{state\_field}=
- \\{token\_list})$ {\bf do} \\{decr}(\\{base\_ptr});\par\noindent
-\quad{\bf if\/} $(\\{input\_stack}[\\{base\_ptr}].\\{index\_field}\ne
- \\{v\_template}) \lor {}$\par\noindent
-\quad\qquad $(\\{input\_stack}[\\{base\_ptr}].\\{loc\_field}\ne
- \\{null}) \lor {}$\par\noindent
-\quad\qquad $(\\{input\_stack}[\\{base\_ptr}].\\{state\_field}\ne
- \\{token\_list})$ {\bf then}\par\noindent
-\qquad\\{fatal\_error}(\hbox{\tt\char'23(interwoven\]alignment\]preambles\]%
- are\]not\]allowed)\char'23});\par\noindent
-\quad{\bf if\/} $\\{cur\_group}=\\{align\_group}$ {\bf then}
-
-\bugonpage B505, line 19 (09/11/07)
-
-\ninepoint\noindent
-\qquad(\.{"since\]the\]result\]is\]out\]of\]range."});\par\noindent
-\qquad{\bf if\/} $p\ge\\{glue\_val}$ {\bf then}
- \\{delete\_glue\_ref}(\\{cur\_val});\par\noindent
-\qquad\\{error}; {\bf return};
-
-\bugonpage B506, line 1 (10/13/03)
-
-\tenpoint\noindent
-{\bf 1237.\quad}Here we use the fact that the consecutive codes
-$\\{int\_val}\to\\{mu\_val}$ and
-$\\{assign\_int}\to$\cutpar
-
-\bugonpage B520, line 8 (06/25/04)
-
-\tenpoint\noindent
-says,
-for example, `\.{(preloaded format=plain 1982.11.19)}', showing the year,
-month, and day\cutpar
-
-\bugonpage B535, new line to follow line 11 (09/11/07)
-
-\ninepoint\noindent
-\qquad{\bf if\/} $\\{last\_glue}\ne\\{max\_halfword}$ {\bf then}
- \\{delete\_glue\_ref}(\\{last\_glue});
-
-\bugonpage B578, new entry (06/04/06)
-
-\eightpoint\noindent
-Trabb Pardo, Luis Isidoro, 2.
-
- % volume C
-\hsize=29pc
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\ddashto{\mathrel{\hbox{-\thinspace-\thinspace-\kern-.05em}}}
-\def\tension{\mathop{\rm tension}}
-\def\controls{\mathop{\rm controls}}
-\def\and{\,{\rm and}\,}
-
-\bugonpage Cxi, line 4 (05/20/07)
-
-\line{\hbox to\parindent{\bf\hbox to 1em{\hss27}\hss}%
- \rm Recovery from Errors\leaders\hbox to 20pt{\kern13pt.\hss}\hfil
- \hbox to 2em{\hss223}}
-
-\bugonpage C11, line 11 (10/11/01)
-
-\noindent
-the area below the bar to the area above it equal to
-$(\sqrt5+1)/2\approx1.61803$, the\cutpar
-
-\bugonpage C29, illustration for exercise 4.11 (09/09/01)
-
-\noindent
-[points 2 and 5 should not be labeled twice]
-
-\bugonpage C32, line 5 from the bottom (01/04/14)
-
-\noindent
-\hbox to\parindent{\hfil\sevenrm20\ \ }%
-| penpos1(stem,15); penpos2(.9stem,12); penpos3(stem,10);|
-
-\bugonpage C36, line 5 from the bottom (01/05/14)
-
-\noindent
-line~12, where it
-says `|x1l|', not `|x11|' or~`|xll|'); be sure to distinguish between\cutpar
-
-\bugonpage C55, lines 5 and 6 (01/05/14)
-
-\ninepoint\noindent
-suffixed or subscripted.
-Thus, the syntax rule for \<variable>
-should actually be replaced by a slightly more complicated pair of rules:
-
-
-\bugonpage C129, line 16 (02/21/08)
-
-\ninepoint\beginsyntax
-<path subexpression>\is<path expression not ending with direction specifier>\kern-5pt\null
-\endsyntax
-
-\bugonpage C130, lines 13--15 from the bottom (09/13/03)
-
-\ninepoint\noindent
-point but not after it, the
-nonempty one is duplicated in a similar way. A~basic path join
-`$\to\controls u\and v\to$' specifies explicit control points that
-override any direction specifiers that may immediately surround it.
-
-\bugonpage C137, lines 5--7 from the bottom (02/21/08)
-
-\danger Let's conclude this chapter by applying what we've learned about
-paths to a real-life example. The {\sl Journal of Algorithms\/} was
-published for many years by Academic Press, and its cover page carried the
-following logo, which was designed\cutpar
-\enddanger
-
-\bugonpage C137, bottom two lines (02/21/08)
-
-\ninepoint\noindent
-A \MF\ program to produce this logo made it possible for the editors
-of the journal to use it on letterheads in their correspondence.
-Here is one way to do that job,\cutpar
-% actually the MS now says "to write that program," and the
-% correction therefore extends to page C138
-
-\bugonpage C156, line 15 from the bottom (09/09/01)
-
-\ninepoint\noindent
-be the values they had upon entry to the group.)
-
-\bugonpage C159, lines 12--15 (12/01/06)
-
-\begintt
-def --- = ..tension infinity.. enddef;
-\endtt
-it makes `$z_1\ddashto z_2$' become
-`$z_1\to\tension\\{infinity}\to z_2$'.
-The {replacement text} can be any sequence of tokens not including
-`{\bf enddef}\kern1pt'; or it can include entire subdefinitions like
-`{\bf def}~$\ldots$~{\bf enddef}\kern1pt', according to certain rules
-that we shall explain later.
-
-\bugonpage C171, line 16 from the bottom (06/18/02)
-
-\tenpoint
-\<loop>\is\<loop header>|:|\<loop text> {\tt endfor}
-
-\bugonpage C179, line 7 from the bottom (09/09/01)
-
-\ninepoint\noindent
-next time \MF\ gets to the end of an input line, it will stop reading
-from the\cutpar
-
-\bugonpage C180, lines 14--16 (04/25/03)
-
-\ninepoint\noindent
-digits should be a
-file name that works in essentially the same way on all installations of
-\MF\kern-.03em\null. Uppercase letters are considered to be distinct from their
-lowercase counterparts, on many systems.
-
-\bugonpage C180, new line to be inserted 4 from the bottom (06/25/04)
-
-\ninepoint\item\bull
-When \MF\ is reading the symbolic tokens to be saved by {\bf save}.
-
-\bugonpage C203, line 12 from the bottom (04/25/03)
-
-\ninepoint\hbox to 237pt{point~3 at the right of the triangle
-might digitize into a}
-
-\bugonpage C213, line 26 (02/21/08)
-
-\ninepoint\beginsyntax
-<path subexpression>\is<path expression not ending with direction specifier>\kern-5pt\null
-\endsyntax
-
-\bugonpage C226, line 23 (02/21/08)
-
-\ninepoint\noindent following nineteen things will be mentioned:
-
-\bugonpage C226, new line to be second from the bottom (02/21/08)
-
-\ninepoint\indent|independent variables|\qquad(distinct numeric variables)
-
-\bugonpage C236, line 7 from the bottom (01/05/14)
-
-\ninepoint\noindent
-\hbox to\parindent{\hss\bf 7.4.\enspace}False.
-After `|newinternal x;|' you can't say `|x|\<tag>' in a \<suffix list>.
-
-\bugonpage C246, line 12 (02/21/08)
-
-\ninepoint\noindent
-is performed whenever \MF\ uses the last two alternatives
-in the definition\cutpar
-
-\bugonpage C250, lines 13 and 14 (02/19/08)
-
-\ninepoint\noindent\hbox to\parindent{\bf\hss19.3.\enspace}%
-Yes, if and only if $n-{1\over2}$ is a nonnegative even integer.
-\ (Because ambiguous values are rounded upwards.)
-
-\bugonpage C250, line 12 from the bottom (04/25/03)
-
-\ninepoint\noindent
-following \<boolean primary>.)
-
-\bugonpage C286, line 25 (09/09/01)
-
-\ninepoint\noindent
-problem; it would simply have put |ENDFOR| into the
-replacement text of |asts|, because\cutpar
-
-\bugonpage C289, line 7 (09/09/01)
-
-\vskip-6pt\ninepoint\begintt
-if if pair x: x>(0,0) else: false fi: A else: B fi.
-\endtt
-
-\bugonpage C292, line 10 from the bottom (09/09/01)
-
-\ninepoint\noindent
-be known by saying `{\bf if\/} known $p-q$: $p=q$ {\bf else}:~{\bf false}
-{\bf fi}'; transforms could be handled\cutpar
-
-\bugonpage C293, line 5 from the bottom (04/25/03)
-
-\ninepoint\noindent
-given angle~$\phi$. We can consider
-the common angle~$\theta$ of $z_{1r}-z_{1l}$ and $z_{0r}-z_{0l}$ to be\cutpar
-
-\bugonpage C315, line 15 from the bottom (04/25/03)
-
-\ninepoint\noindent
-`b' was shipped out.) \ The second letter,~`o', is placed
-in a second little box adjacent\cutpar
-
-\bugonpage C325, bottom line (02/29/08)
-
-\rightline{\eightss--- CAROLUS LINN\AE US,
- {\eightssi Philosophia Botanica\/}\enspace(1751)}
-
-\bugonpage C332, line 4 from the bottom (04/25/03)
-
-\ninepoint\noindent
-(The proofsheet resolution will be 50 pixels per inch, because {\it cheapo\/}
-has 200 pixels per\cutpar
-
-\bugonpage C346, left column (06/18/02)
-
-\eightpoint\noindent
-\llap{*}|:|, 169, 171, 317--319.
-
-\bugonpage C346, right column (07/09/01)
-
-\eightpoint\noindent
-\llap{*}|angle|, {\it29}, {\it67}, $\underline{72}$, {\it107},
-{\it135}, 211, {\it238}.
-
-\bugonpage C346, right column (10/04/04)
-
-\eightpoint\noindent
-arccosine, arcsine, arctangent, {\sl see\/} |angle|.
-
-\bugonpage C351, right column (02/21/08)
-
-\eightpoint\noindent
-independent variables, $\underline{81}$--$\underline{83}$, 88, 224, 226.
-
-\bugonpage C352, right column (02/29/08)
-
-\eightpoint\noindent
-Linn\'e, Carl von (= Linn\ae us, Carolus), 325.
-
-\bugonpage C355, right column (02/29/08)
-
-\eightpoint\noindent
-\llap{*}|save|, $\underline{155}$--$\underline{156}$, {\it160}, 173,
- {\it178}, 180, 218,\par
-\noindent\qquad{\it236}, {\it244}, {\it296}, 299.
-
- % Volume D
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-
-\bugonpage Dv, page number change (12/27/11)
-
-\eightpoint\noindent[For consistency with Volumes A, C, and E, the
-preface now begins on page v instead of page~vii. This change was first
-made in the sixth printing.]
-
-\bugonpage Dv {(formerly Dvii)}, bottom two lines (01/06/14)
-
-\eightpoint\noindent
-corporates all of those changes.
-I~now believe that the final bug was discovered on 03~June 2008,
-and removed in version 2.7182818.
-The finder's fee has converged to \$327.68.
-
-\bugonpage Dxiii {(formerly Dxv)}, line $-7$ (12/27/11)
-
-\ninepoint\noindent
-Format specs have no effect on the corresponding Pascal program, but they
-do influence\cutpar
-
-\hsize=35pc
-\parindent=1em
-
-\bugonpage D2, line $-17$ (01/03/14)
-
-\ninepoint\noindent
-{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]METAFONT,\]Version\]2.7182818\char'23}\quad
-$\{\,$printed when \MF\ starts$\,\}$
-
-\bugonpage D2, lines 4 and 5 from the bottom (12/23/02)
-
-\tenpoint\noindent
-types; there are no `{\bf var}' parameters, except in the case of files
-or in the system-dependent \\{paint\_row} procedure;
-there are no tag fields on variant records; there are no \\{real} variables;
-no procedures are declared local to other procedures.)
-
-\bugonpage D16, new paragraph to follow line 26 (06/25/04)
-
-The first line is special also because it may be read before \MF\ has
-input a base file. In such cases, normal error messages cannot yet
-be given. The following code uses concepts that will be explained later.
-(If the Pascal compiler does not support non-local {\bf goto}, the
-statement `{\bf goto} \\{final\_end}' should be replaced by something that
-quietly terminates the program.)
-
-\bugonpage D22, line 26 (09/11/07)
-
-\noindent
-ASCII codes $[\Oct{60}\to\Oct{71},%
-\Oct{136},\Oct{141}\to\Oct{146}]$
-must be printable.
-
-\bugonpage D31, line 29 (06/25/04)
-
-\noindent
-This is the only nontrivial {\bf goto} statement in the
-whole program. It is used when there is no\cutpar
-
-\bugonpage D42, replacement for lines 8--13 (12/23/02)
-
-\tenpoint\noindent\quad
-Notice that if 64-bit integer arithmetic were available,
-we could simply compute $(2^{29}*p+\nobreak q)\allowbreak\,
-\hbox{\bf div}\,(2*q)$.
-But when we are restricted to Pascal's 32-bit arithmetic we
-must either resort to multiple-precision maneuvering
-or use a simple but slow iteration. The multiple-precision technique
-would be about three times faster than the code adopted here, but it
-would be comparatively long and tricky, involving about sixteen
-additional multiplications and divisions.
-
-\bugonpage D43, line 20 (12/23/02)
-
-\tenpoint\noindent
-language or 64-bit substitute is advisable.
-
-\bugonpage D44, lines 24--26 (12/23/02)
-
-\tenpoint\noindent\quad
-Once again it is a good idea to use 64-bit arithmetic if
-possible; otherwise \\{take\_scaled} will use more than 2\% of the running time
-when the Computer Modern fonts are being generated.
-
-\bugonpage D58, line 16 from the bottom (06/25/04)
-
-\ninepoint\noindent
-\hskip5em{\bf if\/} $\\{j\_random}=0$ {\bf then} \\{new\_randoms}
- {\bf else} \\{decr}(\\{j\_random})
-
-\bugonpage D63, line 21 (06/25/04)
-
-Locations of \\{mem} between \\{mem\_min} and \\{mem\_top} may be dumped as
-part
-of preloaded base\cutpar
-
-\bugonpage D75, line 13 (06/25/04)
-
-\ninepoint\noindent
-\quad{\bf define} $\\{fi\_or\_else}=2$\quad$\{\,$delimiters for conditionals
- ({\bf elseif\/}, {\bf else}, {\bf fi})$\,\}$
-
-\bugonpage D76, line 5 (06/25/04)
-
-\ninepoint\noindent
-\quad{\bf define} $\\{type\_name}=30$\quad$\{\,$declare a type
- ({\bf numeric}, {\bf pair}, etc.)$\,\}$
-
-\bugonpage D77, line 16 (06/25/04)
-
-\ninepoint\noindent
-\quad{\bf define} $\\{lig\_kern\_token}=76$\quad$\{\,$the operators
- `{\bf kern}' and `\.{=:}' and `\.{=:\char'174}', etc.$\,\}$
-
-\bugonpage D98, bottom two lines (06/25/04)
-
-\noindent
-They consist of zero or more parameter tokens followed
-by a code for the type of macro.
-
-\bugonpage D101, line 3 (06/25/04)
-
-\noindent
-\MF\ user assigns a type to a variable like \.{x20a.b} by saying, for
-example, `\.{boolean} \.{x[]a.b}'.
-
-\bugonpage D102, lines 10--16 (06/25/04)
-
-\noindent
-variable that is relevant
-when no attributes are attached to the parent. The \\{attr\_head} node
-has the fields of either
-a value node, a subscript node, or an attribute node, depending on what
-the parent would be if it were not structured; but the subscript and
-attribute fields are ignored, so it effectively contains only the data of
-a value node. The \\{link} field in this special node points to an attribute
-node whose \\{attr\_loc} field is zero; the latter node represents a collective
-subscript `\.{[]}' attached to the parent, and its \\{link} field points to
-the first non-special attribute node (or to \\{end\_attr} if there are none).
-
-\bugonpage D102, lines 7 and 8 from the bottom (06/25/04)
-
-\noindent
-$\\{subscr\_head}(\\{q1})=\\{qq1}$;
-\\{qq} is a three-word ``attribute-as-value'' node with
-$\\{type}(\\{qq})=\break\\{numeric\_type}$
-(assuming that \.{x5} is numeric, because \\{qq} represents `\.{x[]}'
-with no further\break
- attributes), $\\{name\_type}(\\{qq})=\\{structured\_root}$,
-$\\{attr\_loc}(\\{qq})=0$, $\\{parent}(\\{qq})=p$,\cutpar
-
-\bugonpage D103, line 6 (06/25/04)
-
-\noindent
-The value of variable \.{x20b}
-appears in node~$\\{qqq2}=\\{link}(\\{qqq1})$, as you can well imagine.
-Similarly, the value of `\.{x.a}' appears in node $\\{q2}=\\{link}(\\{q1})$,
-where $\\{attr\_loc}(\\{q2})=h(a)$ and $\\{parent}(\\{q2})=p$.
-
-\bugonpage D114, line 12 (06/25/04)
-
-\noindent
-\qquad Such save stack entries are generated by {\bf save} commands.
-
-\bugonpage D120, line 3 (06/25/04)
-
-\ninepoint\noindent
-[delete the line `The code here \dots', since the
- code {\it doesn't\/} use the stated fact]
-
-\bugonpage D126, line 10 (06/25/04)
-
-\tenpoint\noindent
-If $\theta_0$ is supposed to have a given value $E_0$, we simply
-define $C_0=1$, $D_0=0$, and $R_0=E_0$.\cutpar
-
-\bugonpage D138, line 11 from the bottom (10/26/06)
-
-\tenpoint\noindent
-for the bisected interval are $z'_0=z_0$
-and $z''_0=z_0+(Z'_1+Z'_2+\cdots+Z'_n)/2^{l+1}$.
-
-\bugonpage D142, line 3 (06/25/04)
-
-\tenpoint\noindent
-out to hold if and only if $x_0\le x_1$ and $x_2\le x_3$, and either
-$x_1\le x_2$ or $(x_1-x_2)^2\le(x_1-x_0)(x_3-x_2)$.\cutpar
-
-\bugonpage D142, line 8 (10/26/06)
-
-\tenpoint\noindent\quad
-For example, if we start with $(x_1-x_0,x_2-x_1,x_3-x_2)=
-(X_1,X_2,X_3)=(7,-16,39)$, the\cutpar
-
-\bugonpage D142, lines 21--23 (06/25/04)
-
-\tenpoint\noindent
-monotonic
-cubic, then $B(x_0,x_1,x_2,x_3;{1\over2})$ is always between
-$.06[x_0,x_3]$ and $.94[x_0,x_3]$; and it is impossible for $\bar x$
-to be within~$\epsilon$ of such a number. Contradiction!
-(The constant .06 is actually $(2-\sqrt3\,)/4$; the worst case
-occurs for polynomials like $B(0,2-\sqrt3,1-\sqrt3,3;t)$.)
-
-\bugonpage D177, line 18 (06/25/04)
-
-\ninepoint\noindent
-$\\{cur\_x},\\{cur\_y}$: \\{scaled};\quad$\{\,$outputs of \\{skew},
- \\{unskew}, and a few other routines$\,\}$
-
-\bugonpage D182, lines 27--29 (06/25/04)
-
-\noindent
-{\bf399.\quad}If
- the segment numbers on the cycle are $t_1$, $t_2$, \dots, $t_m$,
-and if $m\le\\{max\_quarterword}$,
-we have $t_{k-1}\le t_k$ except for at most one value of~$k$. If there are
-no exceptions, $f$ will point to $t_1$; otherwise it will point to the
-exceptional~$t_k$.
-
-\bugonpage D184, line 18 (12/21/02)
-
-\ninepoint\noindent
-\qquad\\{chopped}: \\{integer};\quad
-$\{\,$positive if data truncated, negative if data dangerously large$\,\}$
-
-\bugonpage D184, line 25 (12/21/02)
-
-\ninepoint\noindent
-\quad{\bf if\/} $(\\{internal}[\\{autorounding}]>0)\land(\\{chopped}=0)$
- {\bf then} \\{xy\_round};
-
-\bugonpage D184, line 27 (12/21/02)
-
-\ninepoint\noindent
-\quad{\bf if\/} $(\\{internal}[\\{autorounding}]>\\{unity})\land
- (\\{chopped}=0)$ {\bf then} \\{diag\_round};
-
-\bugonpage D184, line 32 (12/21/02)
-
-\ninepoint\noindent
-\qquad{\bf if\/} $(\\{internal}[\\{autorounding}]\le0)\lor(\\{chopped}\ne0)$
- {\bf then} \\{print\_spec}({\tt\char`",\]after\]subdivision\char`"})
-
-\bugonpage D185, lines 15--19 (12/21/02)
-
-\ninepoint\noindent
-\quad{\bf define} \\{procrustes}({\tt\char`#})${}\equiv{}${\bf if\/}
- $\\{abs}(\.\#)\ge\\{dmax}$ {\bf then}\par\noindent
-\qquad\qquad\quad{\bf if\/} $\\{abs}(\.\#)>\\{max\_allowed}$ {\bf then}\par
-\noindent\qquad\qquad\qquad{\bf begin} $\\{chopped}\gets1$;\par\noindent
-\qquad\qquad\qquad{\bf if\/} $\.\#>0$ {\bf then} $\.\#\gets\\{max\_allowed}$
- {\bf else} $\.\#\gets-\\{max\_allowed}$;\par\noindent
-\qquad\qquad\qquad{\bf end}\par\noindent
-\qquad\qquad\quad{\bf else if\/} $\\{chopped}=0$ {\bf then}
- $\\{chopped}\gets-1$
-
-\bugonpage D185, old line 22 (12/21/02)
-
-\ninepoint\noindent
-\quad$p\gets\\{cur\_spec}$; $k\gets1$; $\\{chopped}\gets0$;
- $\\{dmax}\gets\\{half}(\\{max\_allowed})$;
-
-\bugonpage D185, old line 28 (12/21/02)
-
-\ninepoint\noindent
-\quad{\bf if\/} $\\{chopped}>0$ {\bf then}
-
-\bugonpage D196, lines 3--8 (06/25/04)
-
-The first job is to fix things so that $x(t)$ plus the horizontal
-pen offset is an integer multiple of the
-current ``granularity'' when the derivative $x'(t)$ crosses through zero.
-The given cyclic path contains regions where $x'(t)\ge0$ and regions
-where $x'(t)\le0$. The \\{quadrant\_subdivide} routine is called into action
-before any of the path coordinates have been skewed, but some of them
-may have been negated. In regions where $x'(t)\ge0$ we have $\\{right\_type}=%
-\\{first\_octant}$ or $\\{right\_type}=\\{eighth\_octant}$; in regions where
-$x'(t)\le0$,
-we have $\\{right\_type}=\\{fifth\_octant}$ or $\\{right\_type}=\\{fourth%
-\_octant}$.
-
-\bugonpage D196, lines 15 and 16 (06/25/04)
-
-\noindent
-current pen might be unsymmetric in such a way that $x$ coordinates
-should round dif-\break ferently in different parts of the curve.
-These considerations imply that round$(x_0)$\cutpar
-
-\bugonpage D200, line 4 (06/25/04)
-
-\noindent
-and that there are similar ways to address other important offsets.\par
-\smallskip\ninepoint
-[Also delete the definitions of \\{north\_south\_edge}, etc.,
-on lines 11--15; those definitions are never used.]
-
-\bugonpage D212, line 18 (06/25/04)
-
-\noindent
-at $(x_0,y_0)$ and ends at $(x_1,y_1)$, it's possible to
-prove (by induction on the length of the truncated\cutpar
-
-\bugonpage D216, bottom line (06/25/04)
-
-\noindent
-we list it twice (with coordinates
-interchanged, so as to make the second octant look like\cutpar
-
-\bugonpage D217, lines 2--10 (06/25/04)
-
-\noindent
-$$\tabskip\centering
-\halign to\hsize{$\hfil#\;\mapsto\;{}$\tabskip=0pt&
-$#\hfil$&\quad in the #\hfil\tabskip\centering\cr
-w_2\;w_2\;w_2&(-5,6)\;(-5,6)\;(-5,6)\cr
-\noalign{\vskip\belowdisplayskip
-\vbox{\noindent\strut as the list of transformed and skewed offsets to use
-when curves that travel in the second octant. Similarly, we will have\strut}
-\vskip\abovedisplayskip}
-w_2\;w_2\;w_2&(7,-6)\;(7,-6)\;(7,-6)&third;\cr
-w_2\;w_2\;w_3\;w_3&(-7,1)\;(-7,1)\;(-3,2)\;(-3,2)&fourth;\cr
-w_3\;w_3\;w_3&(3,-2)\;(3,-2)\;(3,-2)&fifth;\cr
-w_3\;w_3\;w_0\;w_0&(-3,1)\;(-3,1)\;(1,0)\;(1,0)&sixth;\cr
-w_0\;w_0\;w_0&(1,0)\;(1,0)\;(1,0)&seventh;\cr
-w_0\;w_0\;w_0&(-1,1)\;(-1,1)\;(-1,1)&eighth.\cr}$$
-
-\bugonpage D218, lines 2 and 3 (06/25/04)
-
-\noindent
-count followed by pointers to the eight offset lists, followed
-by an indication of the pen's range of values.
-
-\bugonpage D218, line 15 (06/25/04)
-
-The \\{link} field of a pen header node should be \\{null} if and only if
-the pen is a single point.
-
-\bugonpage D227, line 11 (06/25/04)
-
-\noindent
-\\{endpoint}. The cubics all have
-monotone-nondecreasing $x(t)$ and $y(t)$.
-
-\bugonpage D228, lines 4--7 from the bottom (06/25/04)
-
-\noindent
-In odd-numbered octants, the numerator and denominator of this fraction
-will be nonnegative; in even-numbered octants they will both be nonpositive.
-Furthermore we always have $0=s_0\le s_1\le\cdots\le s_n=\infty$. The goal of
-\\{offset\_prep} is to find an offset index~$k$ to associate with
-each cubic, such that the slope $s(t)$ of the cubic satisfies
-
-\bugonpage D231, line 7 (06/25/04)
-
-\ninepoint\noindent
-\quad{\bf if\/} $\\{abs}(\\{du})\ge\\{abs}(\\{dv})$ {\bf then}\quad $\{\,
- s_{k-1}\le1$ or $s_k\le1\,\}$
-
-\bugonpage D231, line 16 (06/25/04)
-
-\noindent
-and return towards $s_{k-1}$ or $s_k$,
-respectively, yielding another solution of $(*)$.
-
-\bugonpage D246, line 4 from the bottom (06/25/04)
-
-\noindent
-dinate fields. Hence, for example,
-the point $\bigl($$\\{x\_coord}(p)-\\{left\_v}(q),\\{y\_coord}(p)+%
-\\{right\_u}(p)$$\bigr)$
-also\cutpar
-
-\bugonpage D248, lines 14 and 15 (01/06/14)
-
-\noindent
-the $x$-axis at the point
-$\bigl((a^2-b^2)\sin\theta\cos\theta/\rho\bigr)+i\rho$, where
-\vadjust{\vskip1pt}%
-$\rho=\sqrt{(a\sin\theta)^2+(b\cos\theta)^2}$. It reaches
-furthest to the right of~the $y$-axis at the point
-$\sigma+i(a^2-b^2)\sin\theta\cos\theta/\sigma$, where
-$\sigma=$\cutpar
-
-\bugonpage D248, line 24 (06/25/04)
-
-\ninepoint\noindent
-\qquad{\bf else begin} $\\{beta}\gets\\{minor\_axis}$;
- $\\{gamma}\gets\\{major\_axis}$;
- $\\{theta}\gets0$;
-
-\bugonpage D251, line 1 (01/06/14)
-
-\noindent
-{\bf536.\quad}Only the coordinates need to be copied, not the class numbers
-and other stuff. At this point either $\\{link}(p)$ or
-$\\{link}(\\{link}(p))$ is \\{null}.
-
-\bugonpage D251, line 10 (01/06/14)
-
-\ninepoint\noindent
-\\{done1}: {\bf if\/} $(\\{link}(p)\ne\\{null})$ {\bf then}
-$\\{free\_node}(\\{link}(p),\\{knot\_node\_size})$;\hfil\break
-\null\quad$\\{link}(p)\gets s$;
-$\\{beta}\gets-\\{y\_coord}(h)$;
-
-\bugonpage D256, line 2 from the bottom (06/25/04)
-
-\noindent
-we have $2^lu_{\min}=2^lu_0+U_{\min}$, etc.; the condition for overlap
-reduces to
-
-\bugonpage D261, line 5 (06/25/04)
-
-\ninepoint\noindent
-\\{tol}: \\{integer};\quad$\{\,$bound on the uncertainty in the overlap test$\,\}$
-
-\bugonpage D262, lines 26 and 27 (06/25/04)
-
-\ninepoint\noindent
-\qquad\quad$\\{uv}\gets\\{uv}+\\{int\_packets}$;\quad$\{\,$switch
- from \\{l\_packets} to \\{r\_packets}$\,\}$\par\noindent
-\qquad\quad$\\{decr}(\\{cur\_tt})$;
- $\\{xy}\gets\\{xy}-\\{int\_packets}$;\quad$\{\,$switch
- from \\{r\_packets} to \\{l\_packets}$\,\}$
-
-\bugonpage D262, line 11 from the bottom (06/25/04)
-
-\ninepoint\noindent
-\qquad$\\{xy}\gets\\{xy}+\\{int\_packets}$;\quad$\{\,$switch
- from \\{l\_packets} to \\{r\_packets}$\,\}$
-
-\bugonpage D274, line 15 from the bottom (06/25/04)
-
-\ninepoint\noindent
-\qquad\qquad{\bf begin if\/} $\\{serial\_no}>\\{el\_gordo}-\\{s\_scale}$
- {\bf then}\par\noindent
-\qquad\qquad\quad$\\{overflow}(\.{"independent\]variables"},
- \\{serial\_no}\mathbin{\hbox{\bf div}}\\{s\_scale})$;\par\noindent
-\qquad\qquad$\\{type}(\#)\gets\\{independent}$;
- $\\{serial\_no}\gets\\{serial\_no}+\\{s\_scale}$;
- $\\{value}(\#)\gets\\{serial\_no}$;
-
-\bugonpage D309, line 21 (06/25/04)
-
-\noindent
-{\bf670.\quad}We go to \\{restart} instead of to \\{switch},
-because we might enter \\{token\_state} after the error\cutpar
-
-\bugonpage D314, line 6 from the bottom (06/25/04)
-
-\noindent
-\\{macro\_def} or \\{iteration}).
-
-\bugonpage D330, line 1 (06/25/04)
-
-\noindent
-{\bf728.\quad}A {\bf suffix} or {\bf text} parameter will have been scanned as
-a token list pointed to by \\{cur\_exp},\cutpar
-
-\bugonpage D354, lines 15 and 16 from the bottom (06/25/04)
-
-\noindent\hangindent 3em
-$\\{cur\_type}=\\{unknown\_boolean}$ means that \\{cur\_exp} points to a
-capsule node that is in
-a ring of equivalent booleans whose value has not yet been defined.
-
-\bugonpage D354, lines 11 and 12 from the bottom (06/25/04)
-
-\noindent\hangindent 3em
-$\\{cur\_type}=\\{unknown\_string}$ means that \\{cur\_exp} points to a
-capsule node that is in
-a ring of equivalent strings whose value has not yet been defined.
-
-\bugonpage D354, lines 7 and 8 from the bottom (06/25/04)
-
-\noindent\hangindent 3em
-$\\{cur\_type}=\\{unknown\_pen}$ means that \\{cur\_exp} points to a
-capsule node that is in
-a ring of equivalent pens whose value has not yet been defined.
-
-\bugonpage D355, lines 1 and 2 (06/25/04)
-
-\noindent\hangindent 3em
-$\\{cur\_type}=\\{unknown\_path}$ means that \\{cur\_exp} points to a
-capsule node that is in
-a ring of equivalent paths whose value has not yet been defined.
-
-\bugonpage D355, lines 5 and 6 (06/25/04)
-
-\noindent\hangindent 3em
-$\\{cur\_type}=\\{unknown\_picture}$ means that \\{cur\_exp} points to a
-capsule node that is in
-a ring of equivalent pictures whose value has not yet been defined.
-
-\bugonpage D355, lines 21 and 22 (06/25/04)
-
-\noindent
-$\\{cur\_type}=\\{token\_list}$ means that \\{cur\_exp} points to a linked list
-of tokens.
-
-\bugonpage D356, lines 2--3 (06/25/04)
-
-\noindent
-nodes have $\\{name\_type}=\\{capsule}$,
-and their \\{type} field is one of the possibilities for \\{cur\_type}
-listed above.
-Also $\\{link}\le\\{void}$ in capsules that aren't part of a token list.
-
-\bugonpage D368, line 13 (06/25/04)
-
-\ninepoint\noindent
-\qquad\\{my\_var\_flag}: $0\to\\{max\_command\_code}$;\quad$\{\,$initial
- value of \\{var\_flag}$\,\}$
-
-\bugonpage D378, line 9 from the bottom (06/25/04)
-
-\ninepoint\noindent
-\qquad\quad{\bf begin} $\\{cur\_type}\gets\\{known}$;
- $\\{cur\_exp}\gets0$;
- $\\{free\_node}(q,\\{dep\_node\_size})$;
-
-\bugonpage D380, line 12 (06/25/04)
-
-\ninepoint\noindent
-\qquad\qquad{\bf begin} $\\{type}(r)\gets\\{known}$;
- $\\{value}(r)\gets0$;
- $\\{free\_node}(p,\\{dep\_node\_size})$;
-
-\bugonpage D390, lines 2 and 3 (06/25/04)
-
-\noindent
-by a previous operation. We must maintain
-the value of $\\{right\_type}(q)$ in cases such as\break
-`|..{curl2}z{0,0\}..|'.
-
-\bugonpage D437, line 1 (06/25/04)
-
-\noindent
-{\bf996.\quad}And \\{do\_assignment} is similar to \\{do\_equation}:
-
-\bugonpage D439, line 10 becomes two lines (06/25/04)
-
-\ninepoint\noindent
-\qquad{\bf begin} $\\{nonlinear\_eq}(v,\\{cur\_exp},\\{false})$;
- $\\{cur\_type}\gets t$;
- {\bf goto} \\{done};
-
-\bugonpage D443, line 11 (06/25/04)
-
-\ninepoint\noindent
-\\{done}: {\bf if\/} $\\{eq\_type}(x)\mathbin{\hbox{\bf mod}}\\{outer\_tag}
- \ne\\{tag\_token}$ {\bf then}
- $\\{clear\_symbol}(x,\\{false})$;
-
-\bugonpage D452, line 9 (06/25/04)
-
-\noindent
-though they don't necessarily correspond to primitive tokens.
-
-\bugonpage D476, line 12 from the bottom (06/25/04)
-
-\ninepoint\noindent
-\quad{\bf if\/} $\\{nl}-\\{skip\_table}[c]>128$ {\bf then}
-
-\bugonpage D483, line 7 (06/25/04)
-
-\ninepoint\noindent
-\quad$\\{max\_tfm\_dimen}\gets16\ast\\{internal}[\\{design\_size}]-1
- -\\{internal}[\\{design\_size}]\mathbin{\hbox{\bf div}}\Oct{10000000}$;
-
-\bugonpage D483, lines 15--17 (06/25/04)
-
-\ninepoint\noindent
-\qquad{\bf if\/} $x>0$ {\bf then}
- $x\gets\\{max\_tfm\_dimen}$ {\bf else}
- $x\gets-\\{max\_tfm\_dimen}$;\par\noindent
-\qquad{\bf end};\par\noindent
-\quad$x\gets\\{make\_scaled}(x\ast16,\\{internal}[\\{design\_size}])$;
-
-\bugonpage D496, line 2 (06/25/04)
-
-\noindent
-a pointer to
-an edge structure. Its mission is to describe the positive pixels
-in \.{GF} form,\cutpar
-
-\bugonpage D500, line 16 (06/25/04)
-
-\ninepoint\noindent
-\quad$\\{selector}\gets\\{old\_setting}$;
- $\\{gf\_out}(\\{cur\_length})$;
- $\\{gf\_string}(0,\\{make\_string})$;
- $\\{decr}(\\{str\_ptr})$;
-
-\bugonpage D506, lines 8--10 (06/25/04)
-
-\noindent
-\MF\ it says,
-for example, `\.{(preloaded base=plain 1984.2.29)}', showing the year,
-month, and day that the base file was created. We have $\\{base\_ident}=0$
-before \MF's tables are loaded.
-
-\bugonpage D514, line 14 from the bottom (06/25/04)
-
-\noindent
-\.{CMMF}, should also be provided for commonly used bases such as \.{cmbase}.
-
- % volume E
-\hsize=29pc
-
-\newbox\shorthyf \setbox\shorthyf=\hbox{-\kern-.05em}
-\mathchardef\period=`\.
-{\catcode`\-=\active \global\def-{\copy\shorthyf\mkern3.9mu}
- \catcode`\.=\active \global\def.{\period\mkern3mu}}
-\def\8#1{\mathrel{\mathcode`\.="8000 \mathcode`\-="8000
- #1\unkern}} % `..' and `--'
-
-\bugonpage E1, line 3 (01/06/06)
-
-\tenpoint\noindent
-Zillions of alphabets can be generated by the programs in this book.
-All\cutpar
-
-\bugonpage E6, lines 16--19 (12/29/04)
-
-\textindent\bull
- {\it square\_dots\/} tells whether dots should be square, not rounded;\smallskip
-\textindent\bull
- {\it hefty\/} tells whether weight-reducing strategies should be used;\smallskip
-\textindent\bull\hangindent\parindent
- {\it monospace\/} tells whether the characters should all be forced to
- have the same width;
-
-\bugonpage E7, line 11 (12/21/02)
-
-\ninepoint\indent
-\\{hair}, \\{vair}, \\{stem}, \\{curve}, \\{ess}, \\{flare}, \\{dot\_size},
- \\{bar}, \\{slab},
-
-\bugonpage E7, line 14 (12/21/02)
-
-\ninepoint\indent
-\\{crisp}, \\{tiny}, \\{fine};
-\medskip\noindent
-and \\{thin\_join} should not be less than \\{fine}.
-
-\bugonpage E19, line 19 (11/07/01)
-
-\tenpoint
-\line{\\{cap\_notch\_cut}\hskip 0pt plus1.5fil46/36\hfil31/36\hfil25/36\hfil
-24/36\hfil22/36\hskip0pt plus3fil25/36}
-
-\bugonpage E41, line 8 (12/21/02)
-
-\ninepoint\noindent\mathchardef\AM="2026 % ampersand
-\quad$\\{extra\_endchar}\gets\\{extra\_endchar}\AM
- \.{\char`"charcode:=charcode+code\char`\_offset;"}$;
-
-\bugonpage E53, line 7 (12/21/02)
-
-\def\frac#1/#2{\leavevmode\kern.1em
- \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
- /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
-\ninepoint\noindent
-{\bf numeric} \\{mid\_thickness};
- $\\{mid\_thickness}={\rm Vround}$ \frac1/3[$\\{vair},\\{stem}$];
-
-\bugonpage E125, line 6 from the bottom (07/10/05)
-
-\ninepoint\noindent
-$\\{top}\,y_1=\\{top}\,y_6=h$; $z_2=.5[z_3,z_1]+\\{bend}$;
-
-\bugonpage E125, line 3 from the bottom (07/10/05)
-
-\ninepoint\noindent
-{\bf draw} $z_1-\\{flourish\_change}\{\\{up}\}+(0,.15\\{asc\_height})
- \{\\{up}\}$\par
-\line{\quad$\8{...}\{\\{right}\}(z_1+(2u,0))\8{---}z_6\8{...}\{\\{down}\}z_7$;
- \hfil\% upper bar}
-
-\bugonpage E146, also pages 164 and 540 (02/08/03)
-
-\eightpoint\noindent
-[The labels on the new illustrations of beta, omega, and spadesuit
-are too large, and the resolution of the shapes is too small.]
-
-\bugonpage E147, line 11 from the bottom (04/23/04)
-
-\ninepoint\noindent
-$x_0=x_1=x_9$; $\\{lft}\,x_{0r}={\rm hround}(1.5u-.5\\{hair})$;
-$x_2=x_4=x_6=x_8=.5w-.25u$;
-
-\bugonpage E147, line 8 from the bottom (04/23/04)
-
-\ninepoint\noindent
-$y_5=.5[y_4,y_6]$; $\\{top}\,y_{6r}-\\{bot}\,y_{4r}=\\{vstem}+\\{eps}$;
- $\\{bot}\,y_{8r}=-\\{oo}$; $y_7=y_9=.55[y_6,y_8]$;
-
-\bugonpage E149, line 8 from the bottom (04/23/04)
-
-\ninepoint\noindent
-$y_5+.1\\{x\_height}=y_7=.5[y_6,y_8]$; $\\{bot}\,y_{6r}=-\\{oo}$;
-
-\bugonpage E157, line 11 (02/29/08)
-
-\ninepoint\noindent
-\line{{\bf filldraw} $z_{1l}\8{--}z_{2l}\8{...}(x_3,y_{2l})\8{...}z\8{--}
- z_{1r}\8{--}\rm cycle$;\hfil\% stem}
-
-\bugonpage E161, line 7 from the bottom (04/23/04)
-
-\ninepoint\noindent
-$\\{top}\,y_{1r}=\\{x\_height}+\\{oo}$; $y_2=y_4=.5[y_1,y_3]$;
- $\\{bot}\,y_{3r}=-\\{oo}$;
-
-\bugonpage E209, line 3 (12/29/04)
-
-\ninepoint
-\rightline{\% This lowercase italic alphabet was prepared by D. E. Knuth
- in December, 1979,}
-
-\bugonpage E377, lines 3 and 4 from the bottom (12/22/02)
-
-\ninepoint\noindent
-\qquad {\bf path} \\{p\_}; $\\{p\_}=z_{\$\$l}\{z_{@1}-z_{\$\$l}\}\8{...}
- \\{darkness}[z_{@1},.5[z_{@2},z_{\$\$l}]]\8{...}z_{@2}$\par\noindent
-\qquad\quad$\8{---}z_{\$l}\8{--}z_{\$r}\8{--}z_{@0}\8{--}z_{\$\$r}\8{--}%
- {\rm cycle}$;\par\noindent
-\qquad{\bf if\/} $(y_{\$\$}>y_\$) \ne ({\rm ypart}\,\hbox{\bf precontrol}\,1
- \,\hbox{\bf of\/}\,\\{p\_} > {\rm ypart}\,\hbox{\bf postcontrol}\,1\,
- \,\hbox{\bf of\/}\,\\{p\_})$:\par\noindent
-\qquad\quad$\\{p\_}=z_{\$\$l}\{z_{@1}-z_{\$\$l}\}\8{...}
- \\{darkness}[z_{@1},.5[z_{@2},z_{\$\$l}]]$\par\noindent
-\qquad\qquad$\8{---}z_{\$l}\8{--}z_{\$r}\8{--}z_{@0}\8{--}z_{\$\$r}\8{--}%
- {\rm cycle}$;\ {\bf fi}\par\noindent
-\line{\qquad {\bf filldraw} \\{p\_};\hfil \% arm and beak}
-
-\bugonpage E379, lines 17 and 18 become one line (01/06/14)
-
-\ninepoint\noindent
-{\bf else}: $\\{rt}\,x_{6r}={\rm hround}(w-1.5u)$;
-$y_{6}=y_{5l}+\\{eps};$ {\bf fi}
-
-\bugonpage E379, bottom line of the program (01/06/14)
-
-\def\SH{\raise.7ex\hbox{$\scriptstyle\#$}} % sharp sign for sharped units
-\ninepoint\noindent
-{\bf math\_fit}$(0,\\{ic}\SH-2.5u\SH)$;
-{\bf penlabels}$(0,1,2,3,4,5,6,7)$;
-{\bf endchar};
-
-\bugonpage E489, bottom line (06/25/04)
-
-\ninepoint\noindent
-{\bf labels}$(1,2,3,4,5,6)$; {\bf endchar};\hfil\break
-[Labels `\.5' and `\.6' should also be added to
- the lower illustration on page E488.]
-
-\bugonpage E545, line 11 from the bottom (12/29/04)
-
-\parindent=36pt
-The most important general routine in |cmbase| is probably the {\it pos}\cutpar
-
-\bugonpage E551, line 3 from the bottom (12/29/04)
-
-\noindent quantities needed in the |calu|
-programs are also established at this time.
-
-
-\bugonpage E577, right column (12/23/02)
-
-\eightpoint\noindent
-\\{p\_}\kern1pt, 305, 377.\par\noindent
-{\bf padded}, 103--111, 117--121, $\underline{549}$.
-
-\bugonpage E578, left column (12/23/02)
-
-\eightpoint\noindent
-{\bf postcontrol}, 347, 377.\par\noindent
-{\bf precontrol}, 347, 377.
-
- \bye
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errata.two b/Master/texmf-dist/source/generic/knuth/errata/errata.two
deleted file mode 100644
index 74dde877267..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errata.two
+++ /dev/null
@@ -1,491 +0,0 @@
-% More bugs (sigh) in The TeXbook
-
-\input manmac
-\proofmodefalse
-\raggedbottom
-\output{\onepageout{\unvbox255\kern-\dimen@ \vfil}}
-
-\def\rhead{Bugs in {\tensl The \TeX book}, second printing}
-\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
- \hrule\line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule\nobreak\medskip}
-
-\noindent This is a list of all corrections made to {\sl The \TeX book\/}
-since the second printing. If your copy doesn't say `{\sl\kern-1pt Second
-printing (October 1984)\/}' on the copyright page, you should also look at
-the previous bug list. In fact, the most important corrections to the
-first printing were discovered first, so they've already been~made.
-
-\bugonpage 23, line 16 (10/13/84)
-
-\tenpoint\indent
-|This is TeX, Version 1.0 (preloaded format=plain 83.7.15)|
-
-\bugonpage 33, line 32 (10/21/84)
-
-The bottom line shows how far \TeX\ has gotten until now in the
-|story|{\parfillskip=0pt\par}
-
-\bugonpage 41, lines 7 and 8 (10/8/85)
-
-\ddanger The twin operations ^|\uppercase||{|\<token list>|}| and
-^|\lowercase||{|\<token list>|}| go through a given token list and convert
-all of the character tokens to their\parfillskip=0pt\enddanger
-
-\bugonpage 57, line 17 (1/6/86)
-
-|dd|\quad didot point ($\rm1157\,dd=1238\,pt$)
-
-\bugonpage 61, lines 17--19 (12/18/85)
-
-\ninepoint\noindent
-|depth|, |em|, |ex|,
-|fil|, |height|, |in|, |l|, |minus|, |mm|, |mu|, |pc|, |plus|,
-|pt|, |scaled|, |sp|, |spread|, |to|, |true|, |width|. ^^{reserved words}
-\ (See Appendix~I for references to the contexts in which each of these is
-recognized as a keyword.)
-
-\bugonpage 67, append a new exercise (1/19/85)
-
-\exno=5 \def\chapno{11}
-\gdef\frac#1/#2{\leavevmode\kern.1em
- \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
- /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
-
-\ddangerexercise Construct a |\frac| macro such that `|\frac1/2|' yields
-`\frac1/2'.
-
-\bugonpage 130, line 15 (4/17/85)
-
-\beginmathdemo
-|$y'''_3+g'^2$|&y'''_3+g'{}^2\cr
-\endmathdemo
-
-\bugonpage 170, line 5 (5/28/85)
-
-\ninepoint
-\line{tall, unslanted
-letter; and so on. But two of the examples involve corrections that were}
-
-\bugonpage 194, lines 13--15 should be centered better (10/22/84)
-
-\ninepoint
-$$\displaylines{\hfill x\equiv x;\hfill\llap{(1)}\cr
- \hfill\hbox{if}\quad x\equiv y\quad\hbox{then}\quad
- y\equiv x;\hfill\llap{(2)}\cr
- \hfill\hbox{if}\quad x\equiv y\quad\hbox{and}\quad
- y\equiv z\quad\hbox{then}\quad
- x\equiv z.\hfill\llap{(3)}\cr}$$
-
-\bugonpage 215, lines 9 and 10 from the bottom (12/23/84)
-
-\ninepoint\noindent
-general format
-is the same as for |\def| and |\gdef|, but \TeX\ blindly expands the tokens
-of the replacement text according to the expansion rules above. For
-example, consider
-
-\bugonpage 233, lines 15--19 (1/19/85)
-
-\medskip
-\settabs\+\indent&10\frac1/2 lbs.\qquad&\it Servings\qquad&\cr
-\+&\negthinspace\it Weight&\it Servings&
- {\it Approximate Cooking Time\/}*\cr
-\smallskip
-\+&8 lbs.&6&1 hour and 50 to 55 minutes\cr
-\+&9 lbs.&7 to 8&About 2 hours\cr
-\+&9\frac1/2 lbs.&8 to 9&2 hours and 10 to 15 minutes\cr
-\+&10\frac1/2 lbs.&9 to 10&2 hours and 15 to 20 minutes\cr
-
-\bugonpage 236, lines 18--21 (1/19/85)
-
-\ninepoint
-$$\vbox{\openup2pt
-\halign{\hfil\bf#&\quad\hfil\it#\hfil&\quad\hfil#\hfil&
- \quad\hfil#\hfil&\quad#\hfil\cr
-Squab&Poussin&2&\frac3/4 to 1&Broil, Grill, Roast\cr
-Broiler&Poulet Nouveau&2 to 3&1\frac1/2 to 2\frac1/2&Broil, Grill, Roast\cr
-Fryer&Poulet Reine&3 to 5&2 to 3&Fry, Saut\'e, Roast\cr
-Roaster&Poularde&5\frac1/2 to 9&Over 3&Roast, Poach, Fricassee\cr}}$$
-[This change should also be made at the bottom of page 237.]
-
-\bugonpage 236, fifth-last line (1/19/85)
-
-\ninepoint
-| Squab&Poussin&2&\frac3/4 to 1&Broil, Grill, Roast\cr|
-
-\bugonpage 237, line 25 (10/10/84)
-
-\ninepoint\noindent
-saying `^|\tabskip||=|\<glue>'. For example,
-let's do the poultry table again, but with the{\parfillskip=0pt\par}
-
-\bugonpage 265, bottom line (11/6/85)
-
-[insert a comma after `{\eightss LEONTIEF}'.]
-
-\bugonpage 271, line 8 (11/12/85)
-
-\ninepoint
-\beginsyntax
-<fil unit>\is[fil]\alt<fil unit>[l]
-\endsyntax
-
-\bugonpage 280, lines 7 and 8 (1/8/85)
-
-\ninepoint\noindent
-\<4-bit number>.\enskip
-The specified output stream is opened or closed, for use in |\write|
-commands, as explained in Chapter~21.
-
-\bugonpage 300, lines 5--10 [changed for version 1.3] (11/25/84)
-
-\ninepoint\noindent
-what part of \TeX's memory has become overloaded;
-one of the following fourteen things will be mentioned:
-\begindisplay
-|number of strings|\qquad(names of control sequences and files)\cr
-|pool size|\qquad(the characters in such names)\cr
-|main memory size|\qquad(boxes, glue, breakpoints, token lists,
- characters, etc.)\cr
-\enddisplay
-
-\bugonpage 300, lines 23--29 [changed for version 1.3] (11/25/84)
-
-\danger If you have a job that doesn't overflow \TeX's capacity, yet
-you want to see just how closely you have approached the limits,
-just set ^|\tracingstats| to a positive value before the end of your
-job. The log file will then conclude with a report on your actual
-usage of the first eleven things named above (i.e., the number of strings,
-\dots, the save size), in that order. ^^{stack positions}
-Furthermore, if you set |\tracingstats| equal to 2~or~more, \TeX\
-will show its current memory usage whenever it
-does a ^|\shipout| command. Such statistics are broken into two
-parts; `|490&5950|' means, for example, that 490 words are being used
-for ``large'' things like boxes, glue, and
-breakpoints, while 5950 words are being used for ``small'' things like
-tokens and characters.
-
-\bugonpage 302, line 14 (10/8/85)
-
-\begintt
-.\tenrm || (ligature ---)
-\endtt
-
-\bugonpage 305, line 26 (12/24/84)
-
-\ninepoint\noindent
-sentable as |^^M|. Asking \TeX\ to |\show\^^M|
-\looseness-1
-produces the response `|>| |\^^M=macro:->\|\]|.|'.
-
-\bugonpage 306, line 10 (7/1/85)
-
-\ninepoint\noindent
-no ``^{explicit kerns},'' and an italic correction is an
-explicit kern.) \ But the italic correction may be too much (especially in an
-italic font); |shelf{|^|\kern||0pt}ful| is often best.
-
-\bugonpage 308, line 25 (3/25/85)
-
-\ninepoint\indent
-|\def\appendroman#1#2#3{\edef#1{\def\noexpand#1{\csname|
-
-\bugonpage 311, insert a new answer (1/19/85)
-
-\ninepoint
-\ansno11.6:
- |\def\frac#1/#2{\leavevmode\kern.1em|\parbreak
-|\raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em|\parbreak
-|/\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}|
-
-\smallskip\noindent[This causes answer 12.8 to move to page 312;
-answer 12.16 also moves to page 313.]
-
-\bugonpage 320, lines 17--20 (8/10/85)
-
-\ninepoint
-\ansno17.16:
- |\def\sqr#1#2{{\vcenter{\vbox{\hrule height.#2pt|\parbreak
- | \hbox{\vrule width.#2pt height#1pt \kern#1pt|\parbreak
- | \vrule width.#2pt}|\parbreak
- | \hrule height.#2pt}}}}|
-
-\bugonpage 327, lines 26--33 (10/22/84)
-
-\ninepoint
-\ansno19.16:
- |$$\displaylines{\hfill x\equiv x;\hfill\llap{(1)}\cr|\parbreak
- | \hfill\hbox{if}\quad x\equiv y\quad\hbox{then}\quad|\parbreak
- | y\equiv x;\hfill\llap{(2)}\cr|\parbreak
- | \hfill\hbox{if}\quad x\equiv y\quad\hbox{and}\quad|\parbreak
- | y\equiv z\quad\hbox{then}\quad|\parbreak
- | x\equiv z.\hfill\llap{(3)}\cr}$$|\par\medskip\noindent
-There's also a trickier solution, which begins with
-\begintt
-$$\displaylines{x\equiv x;\hfil\llap{(1)}\hfilneg\cr
-\endtt
-
-\bugonpage 330, line 29 (11/15/85)
-
-\ninepoint\indent
-|\edef\next#1#2{\def#1{\b#2\d}} \next\a\c|
-
-\bugonpage 332, lines 17--24 (1/19/85)
-
-\ninepoint
-\begintt
-\settabs\+\indent&10\frac1/2 lbs.\qquad&\it Servings\qquad&\cr
-\+&\negthinspace\it Weight&\it Servings&
- {\it Approximate Cooking Time\/}*\cr
-\smallskip
-\+&8 lbs.&6&1 hour and 50 to 55 minutes\cr
-\+&9 lbs.&7 to 8&About 2 hours\cr
-\+&9\frac1/2 lbs.&8 to 9&2 hours and 10 to 15 minutes\cr
-\+&10\frac1/2 lbs.&9 to 10&2 hours and 15 to 20 minutes\cr
-\endtt
-
-\bugonpage 332, lines 33--35 (1/19/85)
-
-\ninepoint\noindent
-proofs. \ (You weren't supposed to think of this,
-but it has to be mentioned.) \ See exercise 11.\fracexno\ for the `|\frac|'
-macro; it's better to say `\frac1/2' than `$1\over2$', in a cookbook.\par
-Another way to treat this table would be to display it in a vbox, instead
-of including a first column whose sole purpose is to specify indentation.
-
-\bugonpage 337, line 28 (11/12/85)
-
-\ninepoint\noindent |\nextnumber|. Quick should put `|\relax|'
-at the end of his macro. \ (The {keywords} |l|,{\parfillskip=0pt\par}
-
-\bugonpage 357, lines 35 and 36 (1/8/85)
-
-\ninepoint\noindent
-|\def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}}|
-
-\bugonpage 357, last two lines (4/17/85)
-
-\ninepoint\noindent
-|\def\pr@m@s{\ifx'\next\let\next\pr@@@s|%
- | \else\ifx^\next\let\next\pr@@@t|\par\noindent
-| \else\let\next\egroup\fi\fi \next}|\par\noindent
-|\def\pr@@@s#1{\prim@s} \def\pr@@@t#1#2{#2\egroup}|
-
-\bugonpage 358, lines 8--12 (1/23/85)
-
-\ninepoint\noindent
-|\def\hbar{{\mathchar'26\mkern-9muh}}|\hfil\break\null
-|\def\surd{{\mathchar"1270}}|\hfil\break\null
-|\def\angle{{\vbox{\ialign{$\m@th\scriptstyle##$\crcr|\hfil\break\null
-| \not\mathrel{\mkern14mu}\crcr \noalign{\nointerlineskip}|\hfil\break\null
-| \mkern2.5mu\leaders\hrule height.34pt\hfill\mkern2.5mu\crcr}}}}|
-
-\bugonpage 359, lines 7--8 (1/22/85)
-
-\ninepoint\noindent
-|\def\ddots{\mathinner{\mkern1mu\raise7pt\vbox{\kern7pt\hbox{.}}\mkern2mu|%
-\hfil\break\null
-| \raise4pt\hbox{.}\mkern2mu\raise1pt\hbox{.}\mkern1mu}}|
-
-\bugonpage 360, line 22 (1/22/85)
-
-\ninepoint\noindent
-| \mkern5mu \raise.6\dimen@\copy\rootbox \mkern-10mu \box0}|
-
-\bugonpage 361, line 3 (3/27/85)
-
-\ninepoint\noindent
-|\def\buildrel#1\over#2{\mathrel{\mathop{\kern0pt #2}\limits^{#1}}}|
-
-\bugonpage 361, lines 19--20 (1/22/85)
-
-\ninepoint\noindent
-|\def\bmod{\mskip-\medmuskip \mkern5mu|\hfil\break\null
-| \mathbin{\rm mod} \penalty900 \mkern5mu \mskip-\medmuskip}|
-
-\bugonpage 361, line 27 (5/1/85)
-
-\ninepoint\noindent
-|\def\matrix#1{\null\,\vcenter{\normalbaselines\m@th|
-
-\bugonpage 361, bottom line (5/1/85)
-
-\ninepoint\noindent
-| \null\;\vbox{\kern\ht1\box2}\endgroup}|
-
-\bugonpage 362, line 9 (5/1/85)
-
-\ninepoint\noindent
-|\def\eqalign#1{\null\,\vcenter{\openup1\jot \m@th|
-
-\bugonpage 362, lines 17--29 (8/10/85)
-
-{\parindent=0pt\ninepoint
-|\def\@lign{\tabskip=0pt\everycr={}} % restore inside \displ@y|\par
-|\def|^|\displaylines||#1{\displ@y|\parbreak%
-| \halign{\hbox to\displaywidth{|%
- |$\hfil\@lign\displaystyle##\hfil$}\crcr|\parbreak%
-| #1\crcr}}|
-\smallbreak
-|\def|^|\eqalignno||#1{\displ@y \tabskip=|^|\centering|\parbreak%
-| \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip=0pt|\parbreak%
-| &$\@lign\displaystyle{{}##}$\hfil\tabskip=\centering|\parbreak%
-| &\llap{$\@lign##$}\tabskip=0pt\crcr|\parbreak%
-| #1\crcr}}|\par
-|\def|^|\leqalignno||#1{\displ@y \tabskip=\centering|\parbreak%
-| \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip=0pt|\parbreak%
-| &$\@lign\displaystyle{{}##}$\hfil\tabskip=\centering|\parbreak%
-| &\kern-\displaywidth\rlap{$\@lign##$}\tabskip=\displaywidth\crcr|\parbreak%
-| #1\crcr}}|
-\par}
-
-\bugonpage 363, line 9 (5/12/85)
-
-\ninepoint\noindent
-|\def\footnote#1{\let\@sf=\empty % parameter #2 (the text) is read later|
-
-\bugonpage 364, line 3 (3/23/85)
-
-\ninepoint\noindent
-|\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}%|
-
-\bugonpage 364, fifth-last line (9/15/85)
-
-\ninepoint\noindent
-|\def\fmtname{plain}\def\fmtversion{2.0} % identifies the current format|
-
-\bugonpage 399, eighth-last line (2/11/85)
-
-\ninepoint\noindent
-| \baselineskip=\footnotebaselineskip\noindent\unhbox0\par}|
-
-\bugonpage 401, line 5 (1/29/85)
-
-\ninepoint\noindent
-{|\fontdimen| parameters to qualify as a math symbol font).
-(2)~Set all the font identifiers\parfillskip=0pt\par}
-
-\bugonpage 414, line 10 (12/17/84)
-
-\ninepoint\noindent
-|\font\titlefont=cmssdc40 % titles in chapter openings|
-
-%\bugonpage 420, line 9 (10/3/85)
-%
-%\ninepoint\noindent
-%|\def\AmSTeX{$\cal A\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.075em|
-% that change comes under `font data', explained away below
-
-\bugonpage 444, bottom line (1/10/85)
-
-\ninepoint\noindent
-depth $d(z)+v$, consisting
-of box~$x$ followed by an appropriate kern followed by box~$z$.
-
-\bugonpage 461, entry for character codes (11/6/85)
-
-\eightpoint
-Add `{\sl see also\/} category codes'.
-
-\bugonpage 463, entries for {\tt dd}, Didot, and didot (1/6/86)
-
-\eightpoint
-Remove the circumflex accents.
-
-\bugonpage 466, left column (1/19/85)
-
-\eightpoint
-fractions, 67, 139--143, 152, 170, 179,\par
-\qquad 186, 444--445.\par
-\quad huge, 196.\par
-\quad slashed form, 67, 139--140, 233, 236.
-
-\bugonpage 467, index entry for {\tt\char`\\hsize} (6/14/85)
-
-\eightpoint
-Add a reference to page {\it 60}.
-
-\bugonpage 469, index entry for {\tt\char`\\kern} (7/1/85)
-
-\eightpoint
-Add a reference to page {\it 306}.
-
-\bugonpage 469, index entry for kerns (7/1/85)
-
-\eightpoint
-Add a reference to page 306.
-
-\bugonpage 469, new entry (11/12/85)
-
-\eightpoint
-|l| after |fil|, $\underline{271}$, 337.
-
-\bugonpage 469, second line on the right (9/13/85)
-
-\eightpoint
-%\def\LaTeX{L\kern-.25em\raise.7ex\hbox{a}\kern-.05em\TeX} % old style
-{L\kern -.36em\raise.6ex\hbox{\sixrm A}\kern-.15em\TeX}, 137.
-
-\bugonpage 470, index entries for {\tt\char`\\longleftarrow}
- thru {\tt\char`\\Longrightarrow} (10/5/84)
-
-\eightpoint
-The references to page 358 should be underlined (seven times).
-
-\bugonpage 475, index entry for punctuation in formulas (4/29/85)
-
-\eightpoint
-Add a reference to page 161.
-
-\bugonpage 476, index entry for {\tt\char`\\scriptspace} (8/10/85)
-
-\eightpoint
-Change `445' to `445--446'.
-
-\bugonpage 478, first and last lines (10/11/84)
-
-\noindent Delete the last line in the right-hand column
-(since it appears on page 479), and add the following line
-at the top of the left-hand column (since it was dropped by mistake
-from the second printing):
-
-\smallskip
-\eightpoint styles of math formatting, 140--141, 441--447.
-
-\bugonpage 478, new entry after tabbing (5/28/85)
-
-\eightpoint
-tables, {\sl see\/} alignments, tabbing.
-
-\bugonpage 478, tabskip entries (3/25/85)
-
-\eightpoint\noindent Instead of `237--239' and `237--238' it should say
-`$\underline{237}$--$\underline{239}$' twice.
-
-\bugonpage 481, the entry for {\tt\char`\\widetilde} (9/23/85)
-
-\eightpoint
-Page 359 should be underlined.
-
-\bugonpage 483, lines 16--17 (1/19/85)
-
-|P.O. Box 9506|\parbreak
-|Providence RI 02940-9506, USA.|
-
-\bugonpage 483, lines 22--23 (1/19/85)
-
-P.O. Box 9506\par
-Providence RI 02940-9506, USA.
-
-\bigskip
-\hrule
-\bigskip\noindent\tenrm
-Note: The next printing will use the ``real'' Computer Modern fonts
-instead of the ``almost'' Computer Modern fonts. Therefore many of
-the line breaks will be slightly different. Also, the font-related
-numerical data on pages 27, 29, 66, 75, 76, 79, 88, 98, 99, 112, 113, 310,
-314, 396, 399, 409, 420, and 459 will be different. However, these
-differences need not be listed here, because the old book was correct with
-respect to the old fonts.
-
-\bye
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errorlog.tex b/Master/texmf-dist/source/generic/knuth/errata/errorlog.tex
deleted file mode 100644
index dfb201b7377..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/errorlog.tex
+++ /dev/null
@@ -1,2946 +0,0 @@
-% Appendix to the Errors of TeX paper (updated)
-% Section numbers now adjusted to TeX 3.0 equivalents
-% NB: tab marks are significant in this file, they signal continuation lines
-%\magnification=\magstephalf
-%\pageno=35
-\input logmac
-* 10 Mar 1978
-L1. Rename a few external variables to make their first six letters unique.
-D2. Initialize \\{escape_char} to $-1$, not 0 [it will be set to the
- first character input]. @240
-L3. Fix bug: The test `$\\{id}<\O{200}$' was supposed to distinguish one-letter
- identifiers from longer (packed) ones, but negative values of
- \\{id} also pass this test. @356
-B4. Fix bug: I wrote `{\bf while} $\alpha\land(\beta\lor\gamma)$' when I meant
- `{\bf while} $(\alpha\land\beta)\lor\gamma$'. @259
-R5. Initialize the input routines in |INITEX| [at this time a short,
- separate program not under user control], in case errors occur. @1337
-E6. Don't initialize \\{mem} in |INITEX|, it wastes time. @164
-B7. Change `\\{new_line}' [which denotes a lexical scanning state] to
- `\\{next_line}' [which denotes
- \\{carriage_return} and \\{line_feed}] in print commands.
-F8. Include additional test `$\\{mem}[p] \ne 0\; \land$' in \\{check_mem}. @168
-M9. Fix inconsistency between the \\{eq_level} conventions of \\{macro_def} and
- \\{eq_define}. @277
-# About six hours of debugging time today.
-# |INITEX| appears to work,
- and the test routine got through \\{start_input},
- \\{chcode} [the \TeX78 command for assigning a \\{cat_code}],
- \\{get_next}, and \\{back_input} the first time.
-* 11 Mar 1978
-I10. Insert space before `|(|' on terminal when opening a new file. @537
-F11. Put `$p\gets \\{link}(p)$' into the loop of \\{show_token_list},
- so that it doesn't loop forever. @292
-L12. Shift the last item found by \\{scan_toks} into the \\{info} field.
- [With |SAIL| all packing of fields was done by arithmetic operations,
- not by the compiler.] @474
-B13\>12. Fix the previous bugfix: I shifted by the wrong amount. @474
-I14. Add a feature that prints a warning when the end of a file page occurs within
- a macro definition or call. [System dependent.] @336
-# Unintended bugs in my test routine [a format intended eventually to typeset
- {\sl The Art of Computer Programming\/}] helped check out the
- error recovery mechanisms.
- For example, I had `|\lft{#}|' instead of `|\lft{##}|' inside a macro,
- and three cases of improper |{|~and~|}| nesting.
-F15. Add the forgotten case `\\{set_font}:' to \\{eq_destroy}. @275
-C16. Change |\require| to |\input|. @376
-F17. Add code for the case $\\{cur_cmd}=0$ [later known as the case
- `$\,t\ge\\{cs_token_flag}$'] when scanning a tokenlist. @357
-# That's the first ``big'' error I've spotted so far.
-I18. Introduce a `|d|' option in the error routine, to facilitate debugging. @84
-L19. Assign a floating-point constant \\{ignore_depth} to \\{prev_depth},
- instead of assigning the integer constant \\{flag}
- [since \\{prev_depth} is type \\{real} in \TeX78]. @215
-I20. Improve the readability and spacing of \\{show_node_list} output. @182,187
-F21. Set the variable $v$ before using the {\bf case} construction in
- \\{show_node_list}, because there's one case where $v$
- didn't receive a value [as part of the field unpacking]. @182
-# About seven hours today.
-* 12 Mar 1978
-# One hour to enter yesterday's corrections and recompile.
-# At this point \TeX\ correctly located further unintended syntax errors
- in |acphdr| [the test file].
-I22. Insert \\{debug_help} into \\{succumb}, giving a chance to look at memory
- before the system dies. @93
-D23. Use \\{eq_destroy} wherever necessary in \\{unsave}. @283
-L24. Change `$t \gets (t-1)$ mod 8' to `$t \gets (t-1)$ land~7' in \\{id_name},
- since |SAIL| has $-1$~mod~$8 = -1$. [At this time, \\{id_name} is a
- routine that unpacks control sequence names, according to a scheme
- that will become obsolete after change \#422.]
-S25. Remove the space that appears at end of paragraph.
- (I hadn't anticipated that.) @816
-L26. Throw away unwanted \\{line_feed} after getting a \\{carriage_return}
- in response to \\{in_chr_w} [a system routine for
- input from the terminal]. @83
-B27. Delete spurious call to \\{flush_list} in \\{end_token_list}. @324
-# Why did I make such a silly mistake?
-F28. Fix bug in \\{get_x_token}: I forgot to say `\\{macro_call}' (which is the
- main point of that routine)! @380
-# While tracking that bug down, I found out incidentally that kerning is okay.
-# Also \TeX\ correctly caught an error |0p| for |0pt|.
-L29. Fix bug in \\{scan_spec} ({\bf while} instead of {\bf repeat}). @404
-M30. Make the table entries for |\hfill| and |\hskip| consistent with the
- program conventions. @1058
-L31. Disable unforeseen coercion: When \\{scan_spec} put \\{hsize} on
- \\{save_stack}, the value changed from \\{real} to \\{integer}. @645
-I32. Use `|*|' instead of `|-1.0|' for running dimensions
- of rules in \\{show_node_list}. @176
-D33. Clear \\{mem}[\\{head}] to null in \\{push_nest} [in \TeX82, this
- will be done by \\{get_avail}]. @216
-# A vrule link got clobbered because I forgot to do this.
-I34. Translate ASCII control codes to special form when displaying them. @48,68
-# Ligatures work, but \\{show_node_list} showed them funny.
-F35. Remember to clear parameters off \\{save_stack} in \\{package} routine. @1086
-# About eight hours today.
-* 13 Mar 1978
-D36. Introduce a new variable \\{hang_first} [later the sign of \\{hang_after}]. @849
-E37\>36. Simplify the new code, realizing that if $\\{hang_indent}=0$ then
- \\{hang_first} is irrelevant. @848
-# Time sharing is very slow today, so I'm mostly reading technical reports while
- waiting\/ {\bf three hours} for compiler, editor, and loading routine.
-# I'm not counting this as debugging time!
-# (Came back in the evening.)
-P38. Spruce up the comments in the \\{line_break} routine, which appears to be
- almost working. @813
-D39. Rethink the setting of \\{best_line}; it's 1 too high in many cases.
- [The final line of a paragraph was handled in a treacherous way.] @874
-D40. Compute proper initialization for
- \\{prev_depth} when beginning an |\hbox|
- with a paragraph inside. [This refers to a special `paragraph box'
- construction, used when an hbox of specified size becomes overfull;
- \TeX78 doesn't have the concept of internal vertical mode.] @1083
-D41. Also initialize \\{tail} in that case. @1083
-M42. Also put the result of line-breaking into the correct list.
-T43. Fix a typo in the \\{free_node} routine (`\\{link}' not `\\{llink}');
- by strange chance it had been harmless until today. @130
-F44. Fix bug: \\{post_line_break} forgot to set \\{adjust_tail}. @889
-D45. Update \\{act_width} properly when looking for end of word while
- line breaking. @866
-B46. Repair the ``tricky'' part of \\{get_node}: I used the \\{info} field
- when I meant to say \\{llink}. @127
-# Now the |\corners| macro of |acphdr| works! [See |\setcornerrules|
- in {\sl The \TeX book}, page 417.]
-D47. Reset \\{contrib_tail} properly in \\{build_page}. @995
-T48. Fix typo (|-| for |+|) in computation of \\{page_total}. @1004
-S49. Change the page-breaking logic: \TeX\ reached \\{fire_up} with
- $\\{best_page_break}=\\{null}$ in one case,
- since the badness was too bad. @1005
-M50. Perform the operation \\{delete_token_ref}(\\{top_mark}) only when
- $\\{top_mark}\ne0$. @1012
-F51. Make \\{scan_toks} omit the initial |{| of an |\output| routine. @473
-I52. Insert a comma to make memory usage statistics look better. @639
-# About seven good hours of debugging today.
-# Tomorrow will be first-output day (I hope).
-* 14 Mar 1978
-# (Came in evening after sleeping most of day, to get computer at better time.)
-# (Some day we will have personal computers and will live more normally.)
-# 8:30pm, began to enter corrections to yesterday's problems.
-I53. Issue an error message for non-character in filename or in font name. @771
-I54. Display `|...|' for omitted stuff in \\{show_context} routine. @643
-L55. Watch out for the |SAIL| syntax `$\alpha+\beta\mathbin{\rm lsh}\gamma$';
- it doesn't shift $\alpha+\beta$ left (only $\beta$). @464
-# That error was very hard to track down; it created a spurious link field
- and sent $\\{hash}[0]=\null$|\beta| to the scanner!
-# I could have found this bug an hour sooner if I had looked at the correct
- stack entries for \\{name} and \\{token_type}.
-D56. Show the correct page number when tracing pages before output is shipped. @638
-F57. Remember to nullify a box after using it. @1079
-I58. Issue an error message if\/ |\box255| isn't consumed by the output routine. @1015
-# I'm having trouble with the |BAIL| debugger;
- it makes an illegal memory reference and dies,
- when single-stepping past the entry to recursive procedures
- \\{hlist_out} and \\{vlist_out}. So I have to reload and be careful
- to go thru these procedures at high speed.
-P59. Fix bug in comment (memory parameter description said $\ge$ not $\le$). @11
-B60. Fix typo in definition of rule output (said $x,y$ not $\\{x0},\\{y0}$).
- [This part of the code went away when |DVI| files were introduced.]
-B61. Correct the embarrassing bug in shellsort, where I said `$\le\\{str}[k]$'
- not `$\le t$'.
- [The first \TeX\ had to sort all output by vertical position on page.]
-M62. Make \\{start_input} set up \\{job_name} in the form needed by \\{shipout};
- it uses obsolete conventions. @532,537
-L63. Insert |(| and |)| into the |SAIL| macro definition of \\{new_string}.
- [This macro was for pre-|DVI| output.]
-M64. Unscramble the parameters of \\{out_rule}:
- The declaration was $(\\{x0},\\{y0},\\{x1},\\{y1})$
- while the call was $(\\{x0},\\{x1},\\{y0},\\{y1})$.
-# 4:30am, \TeX's first page is successfully output!
-# (It was `|\titlepage\setcpage1\corners\eject\end|'.)
-* 15 Mar 1978
-# 10:30pm. Today I'm instrumenting the line-breaking routine and putting it
- through a bunch of tests.
-# (The inserted instrumentation had bugs that won't be mentioned here.)
-C65. Don't abort the job when \\{eq_destroy} redefines a
- \TeX\ control sequence. @275
-# The first word of a paragraph won't be hyphenated \dots\ so be it!
-T66. Fix the typo in \\{line_break} that spoils the test for
- `letters in the same font'. @896
-# The effect of that typo was to suppress all hyphenation attempts.
-B67\>25. Replace the space at paragraph end by fillglue, not by zero. @816
-L68. Pack the hyphen character properly into its node. @582
-T69. Fix a typo (`{\tentex\char'30}' for `|+|')
- in the computation of \\{break_width}. @838
-M70. Change the |\end| maneuver; the present code doesn't end the job,
- since I forgot that \\{back_input} uses \\{cur_tok}. @1054
-A71. Add a parameter to \\{try_break}, since the width is different at
- a discretionary hyphen. [This problem will be solved differently in \TeX82,
- when discretionaries become much more general.] @840
-F72. Bypass kern nodes in pre-hyphenation. @896
-F73. Supply code for the forgotten case `$<$ |"a"|' in pre-hyphenation.
- [This case was later generalized to a test of \\{lc_code}.] @897
-B74. Change $\\{mem}[q]$ to $\\{prev_break}(q)$ in the
- reverse-linking loop. @878
-# (Such blunders. Am I getting feeble-minded?)
-A75. Introduce special logic for \\{eject_penalty}; I was wrong
- to think that forced ejection was exactly like an
- infinitely negative penalty. @851
-A76. Use $(1+b)^2-p^2$ when computing demerits with $p<0$. @859
-# 6:30am. The line-breaking algorithm appears to be working fine
- and efficiently.
- On small measures (about 20 characters per line), it gives overfull boxes
- instead of spaced out ones. Surprising but satisfactory.
-* 16 Mar 1978
-# 9pm. The plan for tonight is to test page breaking and more paragraphing.
-G77. Insert `|\topskip|' glue at beginning of page. @1001
-I78. Add `|\pausing|' feature. @363
-M79. Fix discrepancy: In \\{make_accent} I called \\{vpackage}
- with a pointer to the first list item, but \\{vpackage} itself assumes
- that the parameter is a pointer to that pointer. [The
- \\{vpackage} of \TeX82 will be different.] @668
-# I checked for other lapses like that. Result: 14 calls OK, 12 NG.
-M80. Create a new temporary list head location, \\{hold_head}, since there's
- a case where \\{vpackage} is improperly called with
- parameter \\{temp_head}. [At this time \\{vpackage} uses \\{temp_head}
- to make a list of all insertions found.] @1014
-# 11:30pm. The machine is tied up again.
-F81. Write code to handle charnodes in vlists; I forgot that I'd decided
- to allow them. [Later I prohibited them again!] @669
-F82. Combine the page lists before pruning off glue
- in \\{fire_up}; otherwise the pruning doesn't go far enough. @1017
-B83\>25. Fix typo where line-breaking starts: `\\{fill_glue}' should be
- `\\{new_glue}(\\{fill_glue})'. @816
-I84. Add |/q| to |xspool| command (cosmetic change). [This changes a system
- command that causes \TeX\ output to be printed on the Xerox Graphics
- Printer (XGP), the progenitor of future laser printers;
- the |/q| option says that the queue of printing requests should be
- displayed on the user's terminal.] @642
-E85. Don't write a form feed after the last page of output. @642
-# To fix this, I reorganized \\{ship_out}, and it became simpler.
-T86. Correct a typo (`{\tentex\char'30}' for `|+|') in the \\{vlist_node} case
- within \\{hlist_out}. [The output routines were quite different
- at this time, because output went directly to the XGP.] @622
-I87. Change the message `|completed page|' to `|Completed for page|'. @638
-B88\>48. Fix yet another typo in the computation of \\{page_total}: My original
- code said $\\{stretch}(p)$ instead of $\\{stretch}(q)$ (terrible). @1004
-P89. Document the dirty trick about \\{bot_mark}'s reference count.
- [That trick is, fortunately, no longer useful.] @1016
-A90. Rethink the algorithm for contributing an insertion: The original code
- tests for a page break after incrementing the totals but
- before the \\{contrib_list} is updated. [\TeX78 handles insertions
- in a hardwired manner that will be greatly generalized in \TeX82.]
-F91. Fix \\{get_node} again:
- After the variable memory overflows, control falls through to \\{found}
- instead of going to the \\{overflow} call. @125
-# I spent several hours tracking down that data structure bug!
-B92. Change \\{new_line} to \\{next_line} in yet another print command (see \#7).
-A93\>75. Amend the line-breaking algorithm:
- |\break| in paragraph doesn't work with really bad breaks. @851
-# A problem to be diagnosed tomorrow: Each time I run the test program,
- the amount of memory in use grows by 13 cells not returned.
-# Seven hours tonight.
-* 17 Mar 1978
-G94. Introduce \\{dead_cycles} to keep |\end| active until \\{ship_out}
- occurs. @1054
-E95. Don't call \\{line_break} with an empty list. @1096
-S96. Take proper account of the (infinite) fillglue when computing
- the width of a paragraph line preceding a display. @1146
-M97. Add a new parameter to \\{hpack} so that \\{line_break} won't be called
- at the wrong time.
- [This is for the soon-to-be-obsolete feature described in \#40.]
-L98. Give a warning message if there's an |\hfill| in the middle of a paragraph;
- fillglue upsets the line breaker,
- because floating-point calculations don't have sufficient accuracy. @868
-# I spent an hour looking for another bug in \TeX, but the following one was in \MF:
- The \\{xgp_height} data in fonts had been supplied wrong.
-# It took two hours to recompile 32 fonts with proto-\MF.
-R99. Make \\{show_node_list} and \\{show_token_list}
- more robust in the presence of software bugs. @182
-D100\>97. Do not remove nodes with \\{eject_penalty},
- when the new parameter to \\{hpack} is \\{true}.
-E101\>97. Put a fast exit into \\{hpack}; e.g., at glue nodes, test `{\bf if}
- \\{paragraphing} $\land$ $\langle$current width is large$\rangle$'.
-# 2am. I have to go to bed ``early'' tonight.
-* 18 Mar 1978
-# 3:30pm. (Saturday)
-I102. Add a parameter to \\{check_mem} (to suppress display unless needed). @167
-G103. Introduce a user-settable parameter |\maxdepth|, and
- pass it as a parameter to \\{vpackage}. @668
-# I realized the need for |\maxdepth| while fixing insertions (see \#90).
-G104. Introduce a user-settable parameter for \\{line_break}: The constant
- 2.0 in my original algorithm becomes |\jpar|
- [later |\tolerance|], to be set like |\tracing|. @828
-D105. Reclaim the \\{eject_penalty} nodes removed during line-breaking. @879
-# (Those were the 13 extra nodes reported on Thursday.)
-# The \\{init_align} procedure worked right the first time!
-# Also \\{init_row}, \\{init_col}. But then\thinspace\dots
-S106. Rethink the command codes: \\{endv} in a token list has too high a
- code for the assumptions of \\{get_next}. @207
-A107. Add a \\{prev_cmd} variable for processing delimited macro parameters;
- the original algorithm loses track of braces.
- [The rules will change slightly in \TeX82, and
- \\{rbrace_ptr} will take on a similar function.] @400
-S108. Make the \\{get_next} routine intercept |&| and |\cr| tokens. @342
-# I'd thought I could just put |&| and |\cr| into
- \\{big_switch} [i.e., in the stomach of \TeX, not the eyes];
- that was a great big mistake.
-R109. Make more error checks on \\{endv}; e.g., it must not occur in
- a macro definition or call. @780
-S110\>108. No, rethink alignments again; the new program still fails! @768
-# For the first time I can glimpse the
- hairiness of alignment in general (e.g., `|\halign{\u#\v&...|'
- when |\u| and |\v| are defined to include |&|'s and possible
- alignments themselves).
-# I think there's a ``simple'' solution, by considering only whether
- an alignment is currently active [in \S342].
-# 11:30pm. Went to bed.
-* 19 Mar 1978
-# Woke up with ``better'' idea on how to handle |&| and |\cr|.
-# (Namely, to consider a special kind of\/ |\def| whose parameters don't interrupt
- on |&|'s and |\cr|'s.)
-# But replaced this by a much better idea (to introduce \\{align_state}).
-# 11pm. Began to use computer. Performed major surgery
- (inserting \\{align_state} and updating the associated routines
- and documentation).
-D111. Pop the alignment stacks in \\{fin_align}. @800
-T112\>110. Fix a (newly inserted) typo in \\{show_context}. @314
-D113\>110. Set \\{align_state} false when a live |&| or |\cr| is found.
- [Originally \\{align_state} was of type \\{boolean}.] @789
-I114. Insert |\cr| when `|}|' occurs prematurely in an alignment. @1132
-M115. Remember to record \\{glue_stretch} when packaging an unset node. @796
-# I had a mistake in |acphdr| definition of\/ |\quoteformat|; also extra spaces.
-# My first test programs, used before today, were contrived to test macro
- expansion, line-breaking, and page layout.
-# Next I'm using a test program based on Volume 2.
-C116. Make carriage-return, space, and tab equivalent for macro matching. @348
-F117. Omit the reference count node when displaying a mark. @176
-B118. Correct a silly slip: I wrote `\\{type_displacement}' instead of
- `\\{value_displacement}' when packing data in a penalty node. @158
-M119. Don't go to \\{build_page} after seeing |\noindent|; \TeX\ isn't
- ready for that.
- [In the original program, this was an instance of a bad {\bf goto}.] @1091
-# I had undesired spaces coming thru the scanner in my macro definitions
- of\/ |\tenpoint| [see {\sl The \TeX book}, page 414].
-# 4am. \TeX\ now knows enough to typeset page 1 of Volume 2!
-# Also it did its first ``math formula'' (namely `|$X$|') without crucial error.
-# (Except that the italic correction was missing for some reason.)
-D120. Remember to decrement \\{cur_level} in \\{fin_align}. [The routines will
- eventually become more general and use \\{unsave} here.] @800
-D121. Remember to increment \\{cur_level} in error corrections by
- \\{handle_right_brace}. [A better procedure will be adopted later.] @1069
-T122. Fix a typo: (`|{|' instead of `|}|') in error message for $\\{mmode}+
- \\{math_shift}$. @1065
-R123\>99. Make \\{show_noad_list} more robust and more like the new
- \\{show_node_list}. [The routines will be combined in \TeX82.] @690
-L124. Fix a typo in \\{char_box}: should say \\{font_info_real}.
- [In \TeX78 a single array
- is used for both \\{real} and \\{integer}; in \TeX82 things will be
- \\{scaled}.] @554
-B125. Fix typos in the definitions of \\{default_rule_thickness} and
- \\{big_op_spacing}; they shouldn't start at \\{mathex}(7). @701
-B126. Reverse the \\{before} and \\{after} conventions in math nodes. @1196
-# I had them backwards; this turned
- hyphenation on just before math, and off just after it!
-# Seven and a half hours debugging today.
- Got through the test program a little more.
- But \TeX\ blew up on `|$Y+1$|'; tomorrow I hope to find out why.
-* 20 Mar 1978
-# 8pm. I decided to work next on a super-hairy formula.
-C127. Change `|\ascii|' to `|\cc|' (character code). [This name will change again
- later, to `|\char|'.] @265
-E128. Don't bother to store a penalty node at the beginning of |$$| when
- the paragraph-so-far fits on a single line, since such a penalty
- has already been stored. [These conventions will change later, and
- the |\predisplaypenalty| will always be stored.] @1203
-S129. Avoid reference to \\{tail} in \\{build_page},
- if $\\{nest_ptr}>0$. @995
-B130. Correct a silly
- slip in \\{math_comp} (the exact opposite of what I did in \#118). @1158
-B131. Rectify my mental lapse in \\{make_fraction}; I said \\{nucleus} instead of
- \\{thickness}. @743
-F132. Mask off the math class when scanning delimiters. @1160
-C133. Allow an optional space after |\def{...}|. [This decision
- will be retracted later.] @473
-# My test example is so complicated it causes the semantic stacks to overflow!
-L134. Don't test for no pages output by looking at the channel status. @642
-T135. Fix typo in definition of\/ |\mathop| (\\{open_noad} not \\{op_noad}). @1156
-A136. Rewrite \\{fin_mlist}, because `|\left(...\above...\right)|' doesn't
- parse correctly; the |\left| goes into the numerator,
- the |\right| into the denominator. @1184
-B137. Correct the use of \\{depth_threshold} in \\{print_subsidiary_data}:
- Simple fields get shown while others look empty. @692
-I138\>78. Return the carriage before showing the first line of a new file
- when pausing. @538
-M139. Fix bug: The call \\{show_noad_list}(\\{mem}[|..|]) should be
- \\{show_noad_list}(|..|), in the \\{incompleat_noad} case
- of \\{show_activities}. @219
-# 3am. The whole messy formula has been parsed correctly into a tree.
-# The easy part is done, now comes the harder part.
-F140. Don't shift single characters down in \\{make_op}. @749
-D141. Make \\{clean_box} return a box (as its name implies), not an hlist. @720
-# Font info still isn't quite right, it has the wrong value of \\{quad}.
-A142. Retain the italic correction when doing \\{rebox};
- can make $\\{glue_set}\ne0$ a flag for this. [A better
- solution will be adopted later.] @715
-B143. Fix the bug that makes \\{rebox} bomb out: $\\{value}(p)$ should be
- $\\{value}(\\{mem}[p])$. @715
-# 6am; ten hours today. \TeX\ didn't do |$\pi\over2$| correctly, but was close.
-# I found that the \\{rebox} problem (\#142) went away when I fixed the
- \\{clean_box} problem (\#141); but I
- will leave the extra stuff about $\\{glue_set} \ne 0$
- in the program anyway, just for weird cases.
-E144. Omit extra levels of boxing when possible in \\{clean_box}. @721
-# (To do this, I need to face the \\{rebox} problem anyway.)
-* 21 Mar 1978
-# 10pm. The computer is rather heavily loaded tonight.
-F145. Don't forget \\{thickness} when making a square-root sign (see \#131).
- [The rule thickness will later be derived from the character height.] @737
-L146. Define $p$ local to the \\{make_fraction} routine. @743
-# Unwittingly using the global $p$ was a disaster.
-I147. Don't show the amount of \\{glue_set} when it's zero. @186
-D148\>142. Make \\{glue_set} nonzero in the result of \\{var_delimiter}. @706
-F149. Fix bug: The \\{math_glue} function didn't return any result. @716
-T150. Fix typo in \\{char_box} ($c$ not $w$); this caused a subscripted~$P$ to come
- out the same width as an unsubscripted~$P$. [Later changes in the rules
- will move this computation to \S755.] @709
-P151\>144. Revise \\{clean_box} to do operations that are needed
- often because of the \\{rebox} change. @720
-D152. Use the new \\{clean_box} to avoid a bug in |\sqrt{\raise...}|. @737
-Q153. Change the definition of\/ |\not| so that it's a relation
- (which will butt against the following relation). [All math
- symbols and Greek letters are defined in |INITEX| at this
- time, not in a changeable format definition.]
-I154. Give error message `{\tt Large delimiter must be
- in mathex font}', instead of calling \\{confusion},
- since the error can occur.
- [This particular error is impossible in \TeX82.] @706
-F155. Change the use of $p$ in \\{var_delimiter}; it isn't always set when I say
- {\bf goto} \\{found}. @706
-# Another font problem now surfaced: The mathex meta-font didn't compute \TeX\ info
- in a machine-independent way.
- (It took two hours to correct this.)
-D156. Don't forget to set $\\{type}(b)$ in all relevant cases of
- \\{var_delimiter}. @708
-B157. Use the correct sign convention for \\{shift_amount} in \\{hpackage}. @653
-F158. Always kern by \\{delta} when there's no superscript. @755
-M159. Declare \\{space_table} to be $[0\,.\,.\,6,0\,.\,.\,6]$
- not $[0\,.\,.\,7,0\,.\,.\,7]$; otherwise its entries are
- pre\-loaded into the wrong positions. [The \\{space_table} in \TeX78 is
- $7\times7$; it will become $8\times8$ in \TeX82,
- represented as a string called \\{math_spacing}.] @764
-C160. Use a negative value, not zero, to represent a null delimiter.
- [Actually zero will come back again later.] @685
-C161\>127. Change |\cc| to |\char|. @265
-L162. Don't use tricky subtraction on packed data when changing $q$ to
- an \\{ord_noad} in \\{mlist_to_hlist}; subtraction isn't always safe. @729
-B163. Fix two typos in the \\{space_table} (|*| for |0|). @764
-F164. Initialize \\{cur_size} everywhere (I forgot it in two places). @703
-A165. Reset \\{op_noad} before resetting \\{bin_noad}. @728
-F166. Treat $\\{display_style}+\\{cramped}$ the same as \\{display_style}
- inside \\{make_op}. @749
-B167. Shift the character correctly in the non-|\displaystyle| case of
- \\{make_op}. @749
-# Still another font problem: The italic corrections are wrong because
- the corresponding array was declared \\{real} in proto-\MF\ (and
- italic corrections were used in nonstandard way in |mathex|).
-B168. Use \\{depth} instead of \\{height} in \\{var_delimiter}.
- [Later, both were used.] @714
-Q169. Skew the accents according to the font \\{slant}. [Soon retracted.] @741
-# At this point I think nearly all the math routines have been exercised.
-# Tomorrow they should work!
-# Eight hours debugging today.
-* 22 Mar 1978
-# (Wednesday, but actually Thursday:
- I began at midnight because I was proofreading a paper.)
-# I checked out the font access tables, slowly (i.e., all the |\mathcode|
- and special-character name entries were catalogued).
-Q170\>169. Do {\bf not\/} consider slants after all in the math accent
- routine, since slanted math letters are put differently into fonts. @741
-B171. Don't use $q$ for two different things simultaneously
- in \\{make_math_accent}. @738
-F172. Fix bug in \\{compact_list} (I forgot to advance the loop variable).
- [This procedure became unnecessary in \TeX82.]
-M173. Avoid conflict between \\{var_delimiter} and \\{mlist_to_hlist}, which
- want to use \\{temp_head} simultaneously. @713
-T174. Fix bad typo in \\{overbar} routine ($b$ for $p$). @705
-# Finally \TeX\ got to \\{after_math} after dealing with that
- hairy formula\thinspace\dots
-T175. Fix another bad typo: $p$ for $b$ this time. @1199
-L176. Insert more parentheses (twice) because of `|lsh|' precedence
- in |SAIL|. @1199
-M177\>36. Use the new hanging-indentation conventions when formatting displayed
- equations. @1199
-Q178. Recompute penalties so that break is allowed after \\{punct_noad}s. @761
-F179. Center the large delimiters vertically. @749
-Q180. Round all rule sizes (up) before drawing them. @589
-Q181. Provide more space over $x$ in $\sqrt x$, and more space atop vincula.
- @705,737
-Q182. Make large delimiters large enough to cover formula height
- (important for subscripts, superscripts). @762
-I183. Insert |/ntn=33| on XGP prompt message so that complex math
- won't blow the device driver. [See \#84.]
-P184\>161. Update the comment about the meaning of\/ |\char|, since it
- can be used in math mode. @208
-# Six hours today.
-* 23 Mar 1978
-# 11pm, Maundy Thursday.
-C185\>104. Make |\tracing| and |\jpar| follow block structure. @283
-# It took me two hours to enter yesterday's corrections,
- because the changes were so numerous.
-M186. Fix bad call on \\{begin_token_list} when marks are to be scanned. @396
-# Now the formula looks like it should, modulo problems in fonts.
-Q187. Prevent an exponent from going below baseline + xheight/4. @758
-B188. Change \\{quad} to \\{math_quad} when finishing a display
- (several places). @1199
-A189. Don't use \\{append_to_vlist} when putting an |\eqno| box on a separate
- line, because the page shouldn't break at glue there.
- [Later, the \\{append} will be used but preceded by an
- infinite penalty.] @1205
-S190. Increase the input \\{stack_size}; \TeX\ may need to back up a lot. @11
-A191. Don't assume that $p$ always points to a glue node when
- a page is broken. @1017
-A192. Use \\{epsilon} in \\{scan_spec} (I had used a different
- small constant). [This was a kludge to avoid the extra
- parameter later called \\{exactly} or \\{additional}.] @645
-R193. Introduce a new procedure \\{scan_positive_length}, to prevent
- negative or zero lengths in \\{scan_rule_spec}.
- [This restrictive rule will be ``overruled'' later.] @463
-B194. Fix ridiculous bug in the leaders routine of \\{vlist_out}:
- I had the initialization {\sl inside\/} the loop! @635
-L195. Eliminate confusion between the two temp variables named $h$;
- one is \\{real} and the other is \\{integer}. @629
-F196. Include forgotten case (\\{leader_node}) in \\{hlist_out}.
- [Type \\{leader_node} will be absorbed
- into \\{glue_node} in \TeX82.] @622
-F197. Don't forget to compute \\{x0} in variable horizontal rules. @624
-# Seven and a half hours today.
-# \TeX\ seems to be ready to tackle my test file based on Volume 2.
-S198. Calculate \\{y00} in horizontal rules as an integer number of pixels
- from the baseline, so that the baseline doesn't jump. @589
-* 25 Mar 1978
-# 2am Saturday. (Might as well drop Friday.)
-D199\>185. Make \\{def_code} consistent with the new |\tracing| conventions.
- [Many tracing options are packed into a single
- parameter called |\tracing|.] @1233
-R200\>185. Don't allow users to change nonexistent things like |\catcode1000|. @1232
-F201\>110. Reset \\{align_state} at beginning of \\{init_align}. @774
-F202. Don't forget \\{scan_left_brace} after |\noalign|. @785
-F203\>110. Set $\\{cur_cs}\gets 0$ in \\{get_next}, after |\cr|
- causes a switch to the $\langle v_j\rangle$ template. @342
-# Ouch, that was a big bad bug, which took me three hours to find
- (since I thought \TeX's low-level scanning mechanism was working).
-# Note to myself: I\/ {\bf knew\/} it would be cleaner to define \\{get_next}
- so that it sets \\{cur_cs} to zero every time it begins [i.e.,
- in \S341, where this change will in fact be made in \TeX82].
- But I had avoided this on grounds of efficiency in the inner loop.
- Well, now I have earned this tiny bit of efficiency.
-D204. Prohibit the first word of an unavailable node from becoming negative.
- [The storage allocator of \TeX78 uses
- a negative value to signify a node that is available, just as
- `$\\{link}=\\{max_halfword}$' will signal availability in \TeX82.] @124
-# That was another bad one, it's not my night.
-# At least I'm developing more subtle diagnostic techniques.
-M205. Remember to un-negate the top \\{save_stack} entry
- when \\{handle_right_brace} finishes an \\{insert_group}.
- [This routine was completely revised in \TeX82.] @1100
-F206\>185. Initialize |\jpar| [i.e., |\tolerance|]. @240
-B207. Correct the display of insertion nodes by \\{show_node_list}. @188
-R208. Prevent \\{show_token_list} from generating really long strings
- when in a loop. @292
-D209. Increase the reference count of \\{bot_mark} when
- \\{vpackage} finds it. [This was later the job of \\{fire_up}.] @1016
-M210. Remember that the tokenlist for a mark ends with a |}|. @1101
-D211. Don't let \\{vpackage} lose the top insert. (It fails when
- the very first item is a |\topinsert|.) @1014
-A212. And when that stupid code is corrected, make it handle
- insertions first-in-first-out. @1018
-# Seven hours today.
-* 26 Mar 1978
-# Easter Sunday, will work till sunrise.
-I213. Add an `|i|' feature to the \\{error} recovery routine. @87
-I214. Include a prompt. @87
-C215. Ignore space after |\noalign{...}|. @1133
-# Otherwise, things are going well tonight;
- I'm finding more bugs in my test program than in \TeX.
-# The `|i|' feature is proving to be very helpful.
-# I increased the size of \\{mem}
- (now $\\{lo_mem_max}=3500$, $\\{mem_max}=10000$).
-# In fact I just needed to increase it again
- (now $\\{lo_mem_max}=4500$, $\\{mem_max}=11000$).
-R216. Make |INITEX| output \\{mem_top} for consistency checking. @1307
-A217. Calculate the size of delimiters by considering the enclosed formula's
- distance from the axis, not from the baseline. @762
-# I'm having trouble with a |SAIL| compiler bug; I must rearrange the program,
- more or less at random, until it
- compiles correctly. I hope the bug isn't more severe than it appears.
-D218\>210. Don't put a new group on \\{save_stack} if a null mark is expanded.
- [\TeX82 will remove the `|}|' from the mark text.] @386
-# I had to redo the typewriter-style font since its width tables were wrong.
-# And I increased low-memory size again to 5500, then 6500.
-# Finally the entire test program was \TeX ed. Happy Easter! Six hours today.
-* 27 Mar 1978
-# Beginning at 2:30am.
-A219. Move |\vcenter| processing to the first pass of \\{mlist_to_hlist};
- otherwise the height, depth, subscripts, etc., are way off. @733
-C220. Omit space after closing |$$|. @1200
-# Spacing is wrong in the formula $Y_1+\cdots+Y_k$; I have to rethink the use
- of three dots.
-G221. Make conditional thin space available to user as |\|{\tentex\char'34}.
- [Later will retract this.] @226
-Q222. Introduce |\dispaskip| and |\dispbskip| [later called
- |\abovedisplayshortskip| and |\belowdisplayshortskip|]. @226
-# Reminder: I need to test line-breaking with embedded math formulas.
-I223. Make sure that $\\{interaction}\ne\\{error_stop_mode}$
- in the `|Whoa|' error [\\{fatal_error}]. @93
-B224. Fix a big mistake in the \\{style_node} routine (which points to a glue spec,
- not to glue itself); somehow this didn't cause trouble yesterday.
- [In \TeX78, style nodes double as placeholders for math glue
- like thin spaces.] @732
-C225. Make |\fntfam| obey group structure. [\TeX78's |\fntfam| operation
- is a combination of \TeX82's
- |\textfont|, |\scriptfont|, and |\scriptscriptfont|.] @1234
-# At this point the test routine for Volume 2 works perfectly.
-# But I will change the page width in order to check harder cases.
-Q226\>178. Disable automatic line breaks after punctuation in math
- (e.g., consider $f(x,y)$). @761
-S227. Represent italic corrections as boxes, not glue, so that they won't be broken.
- [The |\kern| command doesn't exist yet.] @1113
-# Eight hours today.
-B228. Fix a bug that just clobbered the memory: Call \\{free_avail}, not
- \\{free_node}, in the \\{ins_node} case of \\{vpackage}.
- [This logic will change completely in \TeX82.] @1019
-* 29 Mar 1978
-# (Wednesday) Again beginning at 2:30am.
-Q229. Put still more space above and below fraction lines in displayed
- formulas. @746
-G230\>189. Install an infinite penalty feature, which positively suppresses breaks;
- use it in displayed formulas whose |\eqno| doesn't fit. @1205
-F231. Call \\{build_page} after finishing a display; and don't
- go to the |\noindent| routine because of the next remark. @1200
-S232. Put |\parskip| glue just before a paragraph, not just after
- (since it interferes with a penalty after). @1091
-# Although the test program gives correct output, it generates 46 locations
- of variable-size memory and 280 of one-word memory that are not freed.
-F233. Recycle the ulists and vlists in \\{fin_align}. @801
-M234\>25. Fix bug when deleting space at end of paragraph:
- \\{delete_glue_ref}(\\{cur_node}) not
- \\{delete_glue_ref}(\\{value}(\\{cur_node})). @816
-# There's also a more mysterious type of uncollected garbage,
- a \\{fraction_noad} corresponding to
- |$p\choose$|, an \\{incompleat_noad} not completed.
-# Couldn't find that one, so I recompiled with \#233 and \#234 corrected.
-# Now it gains just 10 locations of variable-size memory and 7 of the other kind.
-I235. Extend \\{search_mem} to search \\{eqtb} also. @255
-D236\>143. Fix bug in \\{rebox} when $\\{list_ptr}(b)=0$. @715
-# The seven one-word nodes were generated by this bug;
- \\{rebox}\kern-1pt\ put them onto a linked list starting with
- $\\{mem}[0]$, growing at the far end!
-D237. Remember to complete each \\{incompleat_noad}. @1184
-# This solved the other mystery. I had never noticed that my test output
- was actually wrong: |$p\choose k$| came out as `$k$'.
-# After these corrections, the test routine worked\thinspace\dots\ I feel
- that \TeX\ is now pretty well debugged
- (except perhaps for error recovery)---it's time to celebrate!
-* 1 Apr 1978
-I238. Don't quit after file lookup fails. @530
-* 2 Apr 1978
-P239. Add \\{\TeX_font_area}, so that it's easier to change the
- default library area associated with a device. @514
-* 3 Apr 1978
-L240. Insert parentheses again, to cope with the precedence of\/ |lsh|
- when packing data. (See \#55 and \#176.) @1114
-# I had never tried $\\{hmode}+\\{discretionary}$ before!
-M241. Remember that \\{back_error} requires \\{cur_tok} to be set.
- (Problem can arise during error recovery on parameter |#|$n$
- with $n$ out of range.) @476
-* 4 Apr 1978
-I242. Add a deletion feature to the \\{error} routine. @88
-* 5 Apr 1978
-Q243. Reset \\{space_factor} after |\/| [this was later rescinded]
- and after math in text. @1196
-* 10 Apr 1978
-G244\>104. Replace |\jpar| and |\tracing| by a new primitive |\chpar| for parameters.
- It allows a user to change those quantities as well as the penalties for
- hyphens, relations, binary ops, widows. @209
-* 14 May 1978
-# Beginning to typeset a real book (Volume 2, second edition), not just a test.
-Q245. Make math in text end with spacing as if it were
- followed by punctuation. [This rule will soon be rescinded.] @760
-F246. Insert |\times| into the hash table; I left it out by mistake.
- [It will eventually move into |plain.tex|.]
-C247. Change the names of Scandinavian accents from |\o|, |\oslash|,
- |\Oslash| to |\a|, |\o|, |\O|. [This will also move to |plain|.]
-* 17 May 1978
-B248. Fix a silly bug that hasn't been tweaked until today:
- `|\halign to size|' [obsolete in \TeX82] used \\{vsize}
- instead of \\{hsize}. @645
-* 19 May 1978
-G249. Add a |\topbaseline| feature [later called |\topskip|]. @1001
-Q250\>245. Subtract the math spacing change of May 14. @760
-A251. Skip past blanks in the \\{scan_math} procedure. [This blank-skipping
- will eventually go into \\{scan_left_brace}.] @403
-I252. Introduce a \\{missing_brace} routine [later generalized] to improve
- error recovery in $\\{mmode}+\\{math_shift}$, when the top
- of \\{save_stack} isn't a \\{math_shift_group}. @1065
-Q253. Adjust the math spacing between closing parentheses and
- Ord, Op, Open, Punct. @764
-Q254. Make the underline go further under. @735
-S255\>96. Compute the proper natural width when a displayed equation follows
- a paragraph whose fillglue has been deleted by \\{line_break}. @1146
-* 20 May 1978
-A256. Fix the spurious value of \\{prev_depth} inside alignments. @775
-S257. Consider (and defeat) the following scenario:
- The u and v lists are built in \\{init_align} using \\{temp_head};
- then while scanning `|\tabskip 2pt\rt{...}|' the macro |\rt| is expanded,
- clobbering \\{temp_head}. @779
-# That bug was more subtle than usual.
-Q258. Add the parameter \\{num3}, so that the positioning of\/ |\atop|
- can be different from that for fractions. @700
-Q259. Add new parameters \\{delim1} and \\{delim2}, so that
- |\comb| can use fixed size delimiters, not computed as with |\left|. @748
-* 22 May 1978
-C260\>221. Change |\|{\tentex\char'34} to |\|{\tentex\char'35} and introduce
- |\|{\tentex\char'34} as the negative of\/ |\|{\tentex\char'35}.
- [Later obsolete.] @226
-L261. Fix the display of negative penalty nodes; \\{show_node_list} is confused
- when a negative value has been packed into the middle of a word. @194
-# Memory overflow just occurred with $\\{lo_mem_max}=7500$ and $\\{mem_max}=16384$.
- So I have to go to 15-bit pointers. (A problem on 32-bit machines?)
-* 23 May 1978
-Q262. Add a new parameter \\{big_op_spacing5}, for
- extra space above and below limits of big displayed operators. @751
-F263. Initialize \\{incompleat_noad} in |$$\halign{...}$$|. @775
-# That was another heretofore-untested operation. How much of the code
- has not yet been exercised?
-F264\>238. Close the file when doing lookup-failure recovery. @27
-I265. Improve the error recovery for `|Extra &|'. @792
-R266. The top piece must be calculated mod 128 in \\{var_delimiter},
- to guarantee a valid subscript range. [Obsolete in \TeX82.] @546
-B267\>252. Fix a blunder in new \\{missing_brace} code. @1065
-B268\>262. Fix a blunder in new code for limits on display operators. @751
-* 26 May 1978
-Q269. Don't insert a new penalty after an explicit penalty in math mode. @767
-# The hash table overflowed; I ought to make it much bigger.
-R270\>110. Avoid possible bad memory references in alignment
- when there is erroneous input after |\cr|. [Instead of
- \\{extra_info}, the value of \\{cur_align} in \TeX78 is negated,
- because we need only distinguish |\cr| from |&|.] @789
-S271. Make the dimension parameters like |\hsize| all global, so that they can
- be set in the |\output| routine. @279
-# This led to major simplifications, also to major surgery.
-# [But it was a kludgy decision, overruled in \TeX82.]
-D272\>94. Don't forget to set the type of the new null box in the |\end| routine. @1054
-* 27 May 1978
-# The data overflowed memory again, both low and high, doing Section 3.3.2.
-R273\>184. Mask off extra bits of\/ |\char| in math mode,
- to avoid bad memory references. @1151
-B274. Zero out the negative |\medmuskip| in script styles. @732
-* 29 May 1978
-S275. Be prepared to handle an undefined control sequence during \\{get_x_token}.
- (Can fix this by brute force, using \\{get_token} instead of \\{get_next}.)
- @380
-D276. Correct the superscript shift when a single character is raised. @758
-R277\>184. Mask off all but 7 bits in |\char| routine,
- to avoid space-factor index out of range. @435
-# More memory capacity overflows.
-E278\>22. Fix \TeX's overflow stop so that I don't have to wait for loading of the
- |BAIL| debug routines. [System dependent.] @93
-F279. Remember to adjust the page number
- when a file page ends in mid-macro. [System dependent.] @306
-* 5 Jun 1978
-R280. Make sure that the arguments of positioning commands don't overflow
- their field size. @610
-I281. Report the excess amount when giving an overfull box warning. @666,677
-* 7 Jun 1978
-Q282. Use $\ge$ instead of $>$ as termination criterion in \\{var_delimiter}. @714
-R283. Disallow |\eject| in math mode. [In \TeX78, |\eject| is
- distinct from |\break|; in horizontal mode it includes
- \TeX82's `|\vadjust{\break}|'.] @1102
-Q284. Don't put too much clearance above |\sqrt| in text style. @737
-* 9 Jun 1978
-G285\>110. Make \\{align_state} an integer variable, not \\{boolean},
- so that |\eqalign| can be within another |\eqalign|. @309
-C286. A |\mark| should expand its input. @1101
-* 10 Jun 1978
-E287. Provide for preloading of fonts. @1320
-L288. Close the output file before switching to edit the input file with
- the `|e|' option. @84
-E289. Return adjustments found by \\{hpack} to free storage if
- they're not used. [Later, \\{hpack} will detach them only
- when they're used.] @655
-Q290. Strive for consistency between \\{make_under} and \\{make_over}.
- @735
-* 18 Jun 1978
-B291\>236. Fix a serious error in \\{rebox}
- (`$b$' instead of `$\\{list_ptr}(b)$'). @715
-# Strange that such a bug would now surface for the first time!
-C292. Remove |\deg| from |INITEX|, since macros suffice.
-Q293. Add an extra hyphenation penalty for two hyphenated lines in a row. @859
-* 19 Jun 1978
-S294. Introduce the `\\{no_new_control_sequence}' switch. Among other things,
- this will prevent an undefined control sequence following \\{scan_math}
- from clobbering the save stack. @259
-* 20 Jun 1978
-L295. Change the badness test
- `$\\{glue}\le0.0$' to `$\\{glue}\le0.0001$'. [\TeX82 will avoid such
- problems by calculating badness without floating point arithmetic.] @99
-R296. Force \\{badness} to be at most $10^{19}$. @108
-I297. Add \\{end_template} for better error recovery in alignments. @375
-E298\>287. Make |INITEX| more like the real \TeX; my simple scheme for
- font preloading was no good because it left thousands of `dead'
- words in memory. @8
-E299. Economize disk space by using internal arrays in load
- modules that aren't being reinitialized. [System dependent.]
-E300. Move the declaration of \\{mem} to the semantics module, so that the
- object code will be more efficient. [System dependent. The code of
- \TeX78 was divided into separately compiled modules for syntax,
- semantics, output, extensions, and general organization.]
-* 21 Jun 1978
-# Today I'm working on the user manual.
-C301. Disallow |\input| except in vertical mode. [I will change this in
- \TeX82, treating |\input| as a case of expansion.] @378
-I302. Add error recovery for \\{endv} and \\{par_end} occurring in math mode.
- @1047
-G303. Generalize |\ifT| to |\if T|. @506
-* 22 Jun 1978
-F304. Preload the |\bullet| [later done by |plain.tex|].
-D305\>256. Get the correct \\{prev_depth} at the beginning of an alignment. @775
-C306. Change |\eject| so that it ejects only once. @1000
-* 14 Jul 1978
-I307. Look in standard area if a file isn't found in the user's area. @537
-I308. Echo all online inputs in the transcript file. @71
-* 19 Jul 1978
-Q309. Equalize spacing when only one of numerator/denominator is big. @745
-Q310. Prevent subscript from getting too high above baseline. @757
-R311. Avoid infinite loop when stack overflows: \\{push_input} should say
- `{\bf if} $\\{input_ptr}\ge\\{stack_size}\;\land\;\\{interaction}=
- \\{error_stop_mode}$'. @321
-* 22 Jul 1978
-C312. Make |\quad| meaningful outside math mode. (All fonts must
- be generated again!) @558
-I313. Show the nesting level at the end of \\{show_activities}.
- [But I decided not to do this in \TeX82.] @218
-C314. Put in |\>| [namely, |\mskip\medmuskip|;
- \TeX78 already has |\|{\tentex\char'35}, for conditional |\thinmuskip|,
- as well as the negative amounts |\<|,~|\|{\tentex\char'34}].
- Change the name of vector accent from |\>| to |\b|. [Math spacing
- operators will become much more general in \TeX82.] @716
-* 25 Jul 1978
-Q315\>94. Give the correct |\hsize| and |\vsize| to the null boxes created
- at |\end|. @1054
-A316\>94. And don't ``append'' them. [Later this was changed, so
- that it would work better with generalized output routines.] @1054
-I317\>297. Remove the control sequence |\endv|,
- since error recovery is now better. @375
-I318. Define another mode of tracing: It says `|OK|' and stops after
- |\showlists|. @1298
-Q319\>244. Give better defaults to parameters. [Later done by |plain.tex|.] @209
-I320. Allow more bits in the packed representation of\/ |\showboxdepth|. @238
-I321. Scan past delimiters and/or dimensions when recovering from
- ambiguous fractions. @1183
-R322. Reduce accent numbers modulo 128 or 512, depending on the
- mode. @1165
-I323. Include a warning, `|(\end occurred on level ...)|'. @1335
-* 28 Jul 1978
-# (I'm writing Chapter 27 of the manual: `Recovery From Errors'.)
-I324. Improve the error message in \\{scan_digit}. [This procedure will change
- its name to \\{scan_eight_bit_int}, when the number of registers
- increases from 10 to~256.] @433
-I325. Don't report overfull boxes if they're less than .1~point
- over. @666,677
-I326. Give the user extra chances to define the font, if \\{read_font_info}
- is unsuccessful. @560
-I327. Change default recovery for bad parameter number from |#1| to |##|, since
- |#1| won't always work and since |##| is probably intended. @479
-I328. Omit the |"Negative?"| message on things like \\{scan_char_num}. @435
-I329. Improve error recovery when a large delimiter isn't in family~3.
- [Obsolete.]
-I330. Give a more appropriate error message when the input is `|$\right|'. @1192
-# Currently \TeX\ says `|Missing $|'!
-I331. Call \\{back_input} before the error message in \\{back_error},
- not afterwards. @327
-* 1 Aug 1978
-I332. Give an appropriate warning when there's no input file and the user
- types `|e|'. @84
-L333. Increase the system pushdownlist size so that the manual will compile.
- [Procedures \\{hlist_out} and \\{vlist_out} can recurse deeply.]
-# Yesterday I distributed 45 preliminary copies of the manual; today I
- took out the ``debugging hooks'' and put \TeX\ up as a system program.
-* 2 Aug 1978
-# I'm typing Volume 2 again (currently in Section 4.2.2). Culture shock!
-G334. Introduce a |\ragged| parameter, to indicate a degree of raggedness.
- [Previously, ragged-right setting was performed when the
- |\tolerance|/100 was odd! Eventually a better approach,
- with |\rightskip| and such things, will be discovered.] @886
-Q335. Omit the `widow penalty' in one-line paragraphs. @890
-* 5 Aug 1978
-G336. Generalize |\pageno| to |\count|\<digit>. @236
-D337\>285. Update \\{align_state} when recovering from `|Missing {|' and
- `|Extra }|' errors. @1069,1127
-I338. Show ``runaway'' tokens, making it easier to pinpoint an error. @306
-* 22 Aug 1978
-G339. Add |\predisplaypenalty|. @1203
-I340. Clarify error messages; they should indicate when something has been
- inserted, etc. @1064
-* 23 Aug 1978
-I341\>114. Substitute `|Extra }|' for the losing `|Missing \cr|' error message. @1069
-I342\>213. Go past online insertions in \\{show_context}. @311
-Q343. Exact no penalty for breaking one line before a display. @1145
-I344\>338. Check for runaways at end of file. @362
-I345. Give error message when a macro argument begins with |}|. @395
-* 24 Aug 1978
-L346\>213. Remove extra line-feed in \\{show_context} after printing insertions.
- [System dependent.] @318
-* 25 Aug 1978
-Q347. Leave no glue at top of page, even after |\eject|. @997
-* 27 Aug 1978
-P348. Adopt Guy Steele's new version of the \TeX\ source files. [He has
- recently made a copy and modified it by introducing
- compile-time switches for MIT conventions as an alternative to SUAI.
- This is the first time that \TeX\ is being ported to another site;
- additional switches for PARC, TENEX, TOPS10, and TOPS20 will be
- added later, using the Steele style.]
-* 1 Sep 1978
-Q349. Don't pass over leader nodes in the \\{try_break} background
- computation. [At this time, leaders have not yet been
- unified with glue.] @837
-Q350\>82. Prune away all penalties at the top of a page. @997
-* 4 Sep 1978
-I351\>338. Include `|\|' in error message about a runaway argument. @306
-* 8 Sep 1978
-# I just remade all the fonts, with increased ligature field size.
-B352\>350. Insert a necessary {\bf goto} statement in the first branch of
- the new penalty routine within \\{build_page}. @997
-* 30 Sep 1978
-M353\>338. Make the token list for runaway arguments meaningful outside
- of \\{macro_call}. (I just had a runaway argument ending with
- `|\lcm|', which turned out to be the
- control sequence in hashtable location 0.) @371
-R354. Avoid infinite loop when recovering from |$$| in
- restricted horizontal mode. @1138
-L355. Fix two hyphenation bugs related to |-ages|, |-ers|.
- [A completely new algorithm for hyphenation will go into \TeX82.]
-Q356. Add |-est| to hyphenation routine;
- also disable |puz-zled| and |rat-tled|, etc.
-* 4 Oct 1978
-G357. Add new primitive |\vtop|. @1087
-Q358. Treat implicit kerns properly after discretionary hyphens have been
- inserted. @914
-* 4 Nov 1978
-Q359. Forget the half quad originally required at left and right when
- centering displayed equations without equation numbers. @1202
-* 11 Nov 1978
-R360. Don't let the postamble come out empty. [This could occur if no fonts were
- selected.] @642
-* 15 Nov 1978
-C361. Allow optional space after digit in \\{scan_int} routine. @444
-* 17 Nov 1978
-R362. Make the \\{check_mem} procedure slightly more robust. @167
-* 20 Nov 1978
-C363. Make the |\par| in a |\def| match the |\par| that comes automatically with
- a blank line. (Suggested by Terry Winograd.) @351
-G364. Add new parameter |\mathsurround| for spacing before and after
- math in text. @1196
-G365. Extend |\advance| to allow increase by other than unity. [At this
- time it applies only to the ten |\count| registers, and it is
- called |\advcount|.] @1238
-* 25 Nov 1978
-G366. Add a new primitive: |\unskip|. @1105
-G367. Add new primitives |\uppercase| and |\lowercase|. @1288
-* 28 Nov 1978
-M368\>338. Don't let |\mark| and \\{macro_call} interfere with each other's
- \\{scanner_status}. @306
-M369. Omit extra |}| after \\{show_node_list} shows a |\mark|,
- since the right brace is already there. (See \#210.) @176
-G370. Add a new primitive suggested by Terry Winograd: |\xdef|. @1218
-* 29 Nov 1978
-S371. Delete a space following |\else{...}| also in the
- false case. [\TeX78 uses braces, not |\fi|, for conditionals.]
-D372\>320. Make |\tracing| set |\showboxbreadth| as advertised. @198
-F373. Account properly for kerns in width calculations of \\{line_break}.
- @866
-Q374\>364. Delete a \\{math_node} at the beginning of a line. @148
-A375\>339. Guarantee that |\predisplaypenalty=10000| will suppress page breaking
- before a display. @1005
-* 6 Dec 1978
-L376. Change the file opening statement to allow lines up to 150 characters long.
- [System dependent.]
-* 16 Jan 1979
-F377\>365. Initialize \\{negative} properly in the |\advance| routine
- with a |\count| as argument. @440
-* 20 Jan 1979
-R378. Try to keep complex, buggy preambles of alignments from
- crashing the program. @789
-* 17 Feb 1979
-I379\>376. Give more detailed information when warning about a
- long line being broken. [System dependent;
- the buffer size in \TeX78 is very limited.]
-L380. Declare $p$ local to \\{try_break}, for the ``rare'' case code.
- [My original program included the following comment:
- ``This case can arise only in weird circumstances due to
- changing line lengths, and the code may in fact never be executed.''
- Later Michael Plass will discover that variable line lengths require an
- entirely different algorithm, using \\{last_special_line}.]
- @847
-F381\>334. Don't omit the raggedness correction when the
- last line of paragraph has to shrink. [Obsolete in \TeX82.]
-* 22 Feb 1979
-F382\>363. Don't forget to return from \\{get_x_token} after finding |\par|. @351
-Q383. Add a new parameter: |\lineskiplimit|. @679
-C384. Change the syntactic sugar:
- `|\hbox par|' replaces `|\hjust to ...{overfull}|'. [This vastly improves on
- the old idea (see \#40), but there still is no internal vertical mode.]
-C385. Introduce new names |\hbox| and |\vbox| for |\hjust| and |\vjust|. @1071
-G386. Add a new condition: |\ifpos|. [It will later be
- generalized to |\ifnum| and |\ifdim|.] @513
-G387. Add |vu| and |\varunit|. [\TeX82 will eventually allow arbitrary
- internal dimensions as units of measure.] @453
-G388\>312. Add an |em| unit. @455
-C389. Legalize |\hbox spread |\<negative dimension> [since \\{scan_spec}
- no longer uses the sign as a flag]. @645
-* 10 Mar 1979
-C390\>370. Make \\{scan_toks} expand |\count| during |\xdef|. [This will
- change later when |\the| and |\number| are introduced.] @367
-* 23 Mar 1979
-Q391. Put only 100000\thinspace pt stretch at the end of a paragraph instead of
- 10000000000\thinspace pt.
- [In \TeX78, ``infinite'' glue is actually finite but large; in the
- language of \TeX82 we would say that |\parfillskip|, which is
- not yet user-settable, is being changed to be like |\hfil| instead of
- like |\hfill|.] @816
-Q392. Treat the last line of a paragraph more consistently with
- the other lines (e.g., when |\hfil| appears in mid-paragraph), by
- effectively inserting \\{inf_penalty} at the end. @816
-* 31 Mar 1979
-S393. Ensure that penalty nodes aren't wiped out, in weird cases where
- breaks occur at penalties that normally disappear. @879
-* 27 Apr 1979
-A394. Correct the page number count when files begin with an empty page.
- [System dependent.]
-G395. Allow the \\{math_code} table to be changeable via |\chcode|.
- [In \TeX82, |\chcode| will split into |\mathcode| and |\catcode|.] @1232
-I396\>332. Don't accept `|e|' after an error message if not
- inputting from a file. @84
-* 29 May 1979
-F397. Don't call \\{end_file_reading} if you haven't already invoked
- \\{begin_file_reading}; this could happen when trying to
- recover from an error in \\{start_input}.@537
-* 7 Jun 1979
-A398\>306. Be sure to eject two pages,
- when |\eject| comes just at the time another break is preferable
- (e.g., when the page has just become too full). @1005
-* 27 Jun 1979
-I399\>354. Don't say `|You can't do that in math mode|' when the user
- says `|$$|' in restricted horizontal mode! @1138
-* 30 Jun 1979
-G400. Add |wd|, |dp|, |ht| dimension units. @455
-I401\>307. Don't try the system area for file names whose area is explicitly
- indicated. @537
-* 1 Jul 1979
-G402. Allow letters as (ASCII) numbers [without the |`| marker introduced
- later]. @442
-* 2 Jul 1979
-F403. Fix a |\gdef| bug: If the control sequence was never defined before
- [this later became the \\{restore_zero} option],
- don't remove it at group end. @282
-* 16 Jul 1979
-I404\>320. Update \\{show_noad_list} to be like \\{show_node_list}.
- [The two routines, originally separate, will be merged in \TeX82.] @238
-* 18 Jul 1979
-G405. Extend capacity from 32 fonts to 64 fonts if desired. @134
-Q406. Add new \\{extra_space} parameter to all text fonts (requested
- by Frances Yao). @558
-F407. Make each \\{node_noad} print properly in \\{show_noad_list}. @183
-Q408. Make |\jpar| allow any break if it is 1000000 or more.
- [In \TeX82, a |\tolerance| of 10000 or more allows any break.] @851
-* 23 Jul 1979
-E409. Introduce new primitives |\hfil|, |\vfil|, |\hfilneg|, |\vfilneg|. @1058
-G410. Add |\ifmmode|. @501
-G411. Add |\firstmark|. @1012,1016
-C412. Allow break at leaders (horizontal mode only). @149
-* 25 Jul 1979
-I413\>213. Revise \\{error} so that online insertions work properly
- after end-of-file errors. @336
-B414\>411. Change `{\bf if} $\\{first_mark}\ne0$' to
- `{\bf if} $\\{first_mark}\ge0$' [because $-1$
- is used to indicate `not yet given a value']. @1012
-* 28 Jul 1979
-C415\>370. Stop |\xdef| from expanding control sequences after |\def|'s.
- [This decision will be rescinded later, after several more years of
- experience with macro expansion will suggest better ways to cure
- the problem.] @366
-I416. Change symbolic printout for control symbols. [System dependent.] @49
-L417\>308. Avoid linefeeds in the transcript file. [System dependent.]
-C418\>370. Expand |\topmark|, etc., in |\xdef|. @366
-* 4 Aug 1979
-B419\>413. Fix an error introduced recently: |\par| was suddenly
- omitted at end of page. [System dependent.]
-* 11 Aug 1979
-P420. Change error messages that use |SAIL| characters not in
- standard ASCII. @360
-* 28 Aug 1979
-D421\>411. Move the command `$\\{first_mark}\gets-1$' from \\{vpackage}
- to \\{fire_up}. @1012
-S422\>403. Correct a serious |\gdef| bug:
- Control sequences don't obey a last-in-first-out
- discipline, so \TeX\ loses things from the hash table when deleting a
- control sequence. @259
-# To fix this, I either need to restrict \TeX\ (so that
- |\gdef| can be used inside a group only for control sequences already
- defined on the outer level) or need to change the hash table algorithm.
- Although all applications of \TeX\ known to me will agree to the
- former restriction, I've chosen the latter alternative, because it gives me
- a chance to improve the language: Control sequences
- of arbitrary length will now be recognized.
-D423. Make sure that \\{unsave} cannot call \\{eq_destroy}
- with a value from the upper part of \\{eqtb}. @282
-# I noticed this long-standing bug while fixing \#422. It had very
- low probability of causing damage (e.g., it required a certain field
- of a floating-point number to have a certain value), but it would have
- been devastating on the day it first showed up!
-* 29 Aug 1979
-F424. Call \\{eq_destroy} when a control sequence is |\gdef|'ed
- after being |\def|'ed. @283
-F425\>418. Treat the first token consistently
- when |\topmark| and its cousins are expanded in \\{scan_toks}. @477
-# Now I've checked things pretty carefully and I think \TeX\ is ``fully debugged.''
-* 25 Jan 1980
-I426\>338. Display runaway alignment preambles. @306
-G427. Introduce active characters (one-stroke control sequences).
- [I don't yet go
- all the way: The meanings of `|x|' and `|\x|' have to be identical.] @344
-* 7 Feb 1980
-F428\>314. Fix a glaring omission: Op space |\>| was
- never implemented in math mode! @716
-* 25 Feb 1980
-G429. Add a new dimension `|ex|' (for units of xheight). @455
-* 3 Mar 1980
-C430\>427. Allow the control sequence |\:| to be redefined
- [it was the `select font' operator];
- this allows the character |:| to be active. [Obsolete.]
-* 23 Mar 1980
-# An extend-\TeX-for-the-eighties party:
-G431. Add a new |\copy| feature. @204
-G432. Add a new |\unbox| feature. @1110
-G433. Add a new |\open| feature [later |\openout|]. @1351
-G434. Add a new |\send| feature [later |\write|]. @1352
-G435. Add a new |\leqno| feature, requested by MDS. @1204
-G436. Add a new |\ifdimen| feature [later |\ifdim|]. @513
-C437. Make |\|\<space> in vertical mode begin a paragraph. @1090
-G438. Add a new |\font| feature [replacing the silly previous convention that
- a font must be defined when it is first selected]. @1256
-G439. Add new |\parval| and |\codeval| features [later
- |\the|\thinspace\<whatever>\thinspace]. @413
-C440\>427. Don't let active characters gobble the following space. @344
-G441\>208. Add a new parameter to govern amount of token list dumped. [Obsolete.] @295
-G442. Add a new |\linebreak| feature [later replaced by |\break|]. @831
-* 25 Mar 1980
-# (Still working on the above, also thought of more.)
-G443. Add a new |\mskip| feature. @716
-G444. Add a new |\newname| feature (soon changed to |\let|). @1221
-G445\>430. Allow any control sequence to be redefined. @275
-I446. Send the output to the user's current file area, even when
- input comes from elsewhere. @532
-* 27 Mar 1980
-Q447. Compute the xheight for accents in math mode from
- family~1, not family~3. [Obsolete.]
-* 28 Mar 1980
-Q448. Increase minimum clearance between subscript and superscript. @759
-* 29 Mar 1980
-Q449\>222. When a display follows a display, the second should have the
- `shortskip' glue. @1146
-* 4 Apr 1980
-A450\>445. Look at current token meanings when trying to recognize
- |\tabskip| in alignment preambles. @782
-* 23 Apr 1980
-I451. Estimate the length of printed output, for the new
- priority feature on our XGP device driver. [System dependent.]
-C452\>434. Break long |\send| lines
- into pieces so that the file can be read in again. [System dependent.]
-* 19 May 1980
-Q453\>182. Don't make |\left| and |\right| delimiters too large; they
- need to be only 90\% of the enclosed size. [This eventually
- became |\delimiterfactor|.] @762
-* 21 May 1980
-G454. Add a new |\pagebreak| feature [later |\vadjust{\break}|]. @655
-* 13 Jun 1980
-# Today I'm beginning to overhaul the line-breaking routine,
- and I'll also install miscellaneous goodies.
-G455. Allow a radical sign to be in different font positions. @737
-E456. Clear empty tokenlists off input stacks to allow deeper recursions
- (suggested by Jim Boyce's macros for chess positions). @325
-G457. Make |\spaceskip| and |\parfillskip| changeable. @1228
-G458. Add a new parameter |\rfudge| (per request of Zippel) [later |\mag|]. @288
-G459. Add a new parameter |\loose| [later |\looseness|];
- now parameters are allowed to take negative values. @875
-E460. Remove the variable \\{just_par}. [Obsolete; it was the \\{real} equivalent
- of an \\{integer}].
-* 14 Jun 1980
-Q461. Install new line-breaking routines, including |\parshape|.
- (These major changes are introduced as Michael Plass
- and I write our article.) @813
-G462. Add a new parameter |\exhyf| [later |\exhyphenpenalty|]. @869
-* 16 Jun 1980
-S463\>444. Change conventions in \\{eqtb} so that glue is distinguishable
- from other equivalents. @275
-A464\>444. Don't expand |\b| in |\xdef{\d\b{...}}| after |\let\d=\def|.
- [Obsolete.]
-D465\>444. Avoid creating dead storage when doing \\{unsave} in certain regions. @275
-* 17 Jun 1980
-C466. Allow negative dimensions in rules. @138
-* 19 Jun 1980
-B467\>463. Make the new test for glue at the outer level of \\{show_eqtb}. @252
-* 27 Jun 1980
-Q468\>453. Don't let |\left| and |\right| become too small for big matrices.
- [This eventually became |\delimitershortfall|.] @762
-* 3 Aug 1980
-Q469. Don't move extra-wide, numbered equations flush left unless
- they begin with glue. @1202
-* 15 Sep 1980
-M470\>461. Say `$\ge\\{fz}$' instead of `$>\\{fz}$' in the pre-hyphenation
- routine; I'd forgotten my definition of \\{fz} [a variable used to test
- for a sequence of lowercase letters in the same font]. @897
-R471\>395. Check the range of the index in |\chcode| before saving the old value.
- @1232
-* 18 Sep 1980
-D472\>457. Don't forget to increase the reference count to |\parfillskip|,
- or it will mysteriously vanish. @816
-* 19 Sep 1980
-C473\>412. Make leaders break like glue in both horizontal and vertical modes.
- @149
-Q474\>364. Make |\mathsurround| break properly at left and right end of lines.
- @879
-* 13 Oct 1980
-I475\>461. Remove spurious overfull boxes generated when the looseness criterion
- fails. [Obsolete.]
-A476\>461. Redesign the iteration for looseness; breakpoints were not chosen
- optimally. @875
-E477\>461. Avoid storing a lot of breakpoints when they are dominated by
- others. @836
-B478\>366. Don't say `\\{cur_node}' when you mean `\\{mem}[\\{cur_node}]'. @1105
-Q479\>461. Prefer the oldest break to the youngest break
- when two break nodes have the same total demerits. @836
-L480\>461. Don't make badness too big for floating-point calculations,
- when forced to make an overfull box. [Obsolete.]
-* 10 Dec 1980
-R481. Make it impossible to get unmatched `|}|' in a delimited macro
- argument. @392
-G482. Add new |\topsep| and |\botsep| features. [These are \TeX78's
- way to put space at the edge of inserts,
- replaced in \TeX82 by the |\skip| register corresponding
- to an |\insert| class.] @1009
-* 6 Jan 1981
-P483. Install new routines for reading the font metrics, using Ramshaw's
- |TFM| files instead of\/ |TFX| files. @539
-I484. Abort after reporting 100 errors, if not pausing on errors. @82
-G485. Add new |\spacefactor| and |\specskip| and |\skip| primitives.
- [At this time we write `|\specskip3=10pt|' and `|\skip3|' for what
- will become `|\skip3=10pt|' and `|\hskip\skip3|' in \TeX82.] @1060
-G486\>366. |\unskip| is now allowed in internal vertical mode. @1105
-* 26 Jan 1981
-B487\>482. Don't say `\\{mem}[$q$]' when you mean `$q$'. (See \#143 and \#478.) @1009
-* 27 Feb 1981
-I488\>417. Put some linefeeds back into the transcript file, in order
- to prevent overprinting in listings. [System dependent.]
-G489. Add a new |\dpenalty| feature [later |\postdisplaypenalty|]. @1205
-G490. Add the dimension |cc| for European users. @458
-C491. Make \\{scan_keyword} match uppercase letters as alternatives
- to lowercase ones (suggested by Barbara Beeton's experiments
- with |\uppercase|). @407
-I492. Add nonstop mode so that overnight batch processing is possible. @73
-* 2 Mar 1981
-S493\>422. Fix a still more serious |\gdef| bug: The generality
- of\/ |\gdef| almost makes it a crime to
- forget {\sl any\/} control sequence names, ever! (The previous bug was
- only the tip of an iceberg.) @259
-I494. Issue warning message at the end of a file page if nesting level isn't zero.
- [System dependent.]
-* 5 Mar 1981
-I495. Keep track of maximum memory usage, for statistical
- reporting. [Obsolete.] @125
-Q496\>350. Prune away glue and penalties at top of page after marks, sends,
- inserts. @1000
-G497. Allow |\mark| in horizontal mode. [Later it will
- be |\vadjust{\mark...}|.] @655
-C498. Allow optional space before a required left brace, e.g., |\if AA {...}|.
- [See \#251.] @403
-I499. Issue an incomplete |\if| error, to help catch a bad |\if|. @336
-* 17 Mar 1981
-I500\>494. Omit the warning message at end of a file page unless
- the nesting level has changed on that page. [System dependent.]
-Q501\>310. Fix the spacing when there is a very tall subscript with
- a superscript. @759
-* 20 Mar 1981
-S502\>371. Make space-eating after |\else| fully consistent between the
- true and false cases. [Obsolete.]
-* 24 Mar 1981
-B503\>496. Change \\{glue_spec_size} to \\{ins_spec_size}
- in \\{vpackage} [where insertions are done]. [Obsolete.]
-* 5 Apr 1981
-B504\>501. Fix a typo (`|+|' instead of `|-|') in the new subscript code;
- this shifted certain subscripts down instead of up. @759
-* 18 Apr 1981
-G505. Make leaders with rules of specified size act like variable rules.
- @626,635
-* 29 Apr 1981
-A506\>461. Don't consider $\\{badness}>\\{threshold}$ at a line |\break|
- except in an emergency. @854
-* 13 Jul 1981
-C507\>402. Allow other characters as numbers. @442
-R508\>294. Avoid dead storage if a \\{no_new_control_sequence} error occurs.
- [Obsolete.] @259
-G509. Add a new |\ifx| feature. @507
-G510. Add new features |\xleaders| and |\cleaders|. @626,635
-* 14 Jul 1981
-S511\>507. Amend the new code for constants;
- the `|.|' in `|.5|' is thought to mean \O{056}! @442
-L512\>507. And fix an egregious blunder in that code: New commands at the
- end of a procedure are ignored when earlier statements
- exit via {\bf return}. @442
-* 4 Aug 1981
-P513. Accept alphabetic codes for all online error recovery options,
- instead of insisting on control codes like line feed or form feed.
- [The original error-recovery codes were suggested by the
- conventions of the |SAIL| compiler.] @84
-G514. Add a new |\thebox| feature [later |\lastbox|]. @1079
-* 7 Aug 1981
-G515. Add |fil|, |fill|, and |filll| as units for glue stretching
- or shrinking. @454
-I516. Suppress the overfull box error when shrinkage amount is negative. @664
-* 9 Aug 1981
-Q517. Let unset boxes inherit the size of their parent in alignments. @810
-* 12 Apr 1982
-F518. Make |INITEX| dump out the \\{font_dsize} array needed by
- the new |DVI| output module. @1322
-* 1 May 1982
-S519\>151. Fix \\{clean_box} so that \\{mlist_to_hlist} cannot make
- $\\{link}(q)=0$ and $\\{type}(q)=\\{glue_node}$. @720
-# [That was the historic final change to \TeX78. All subsequent entries
- in this log refer to \TeX82.]
-* 15 Jul 1982
-# Finished draft of test program and began debugging about 1430
- [2:30\thinspace pm]. Taking my time.
-BX1. Change \\{eqtb}[\\{cur_font}] to \\{eqtb}[\\{cur_font_loc}]. @232
-# Not logging changes to the exposition.
-# Compile time is about 2 minutes CPU, times 5 for time-sharing;
- add another half minute for linking and loading.
-# Hash table and \\{get_next} seem to be working, with no changes needed!
-# Time out 1630--1815 for Jill's birthday party.
-LX2. Insert {\bf begin} \dots~{\bf end} around \\{dump_int} macro. @1305
-IX3. Print two blank spaces before date in \\{open_log_file}. @536
-AX4. Update $x$ and \\{var_used} outside the {\bf for} loop. @1311
-BX5. Change {\bf if} $=$ to {\bf if} $\ne$ as loop exit condition. @1315,1316
-# The |TRIP| test should preload more fonts.
-LX6. Insert {\bf begin} \dots~{\bf end} around statistics output. @1334
-FX7. Must \\{get_x_token} when scanning a number. @445
-IX8. Interactive \\{debug_help} needs to print a newline. @1338
-FX9. Include \\{ignore_spaces} and \\{math_accent} in \\{print_cmd_char} cases. @266
-IX10. Don't call \\{confusion} when \\{print_cmd_char} sees unknown code. @298
-# Compiler bug causes stack overflow. Retiring for the night at 2145.
-* 16 Jul 1982
-# Starting at 0700; DRF has fixed the compiler.
-RX11. Allow arbitrary integer parameters in diagnostic print routines. @237,699
-TX12. Say \\{cur_tok}, not \\{cur_val}, when you mean \\{cur_tok}. @440
-FX13. Make |\pause| effective also on first line of a file. @538
-FX14. Show context after online deletion. @88
-IX15. Bypass reference count when \\{debug_help} shows a token list. @1339
-BX16. Change `{\bf case} $p$' to `{\bf case} \\{type}($p$)'. @1000
-FX17. Fix timing of \\{print_ln} when scrolling help messages. @90
-PX18. Make \\{other_char} the default category for ASCII control codes too. @232
-AX19. Use special scanning method for font number in \\{new_font}. @1257
-# Eating lunch, 1020--1035, while the machine slowly recompiles everything.
-FX20. Don't forget to increase $k$ in the {\bf while} loop. @355
-DX21. Adjust \\{limit} properly after line changed when pausing. @363
-FX22. Remember to return a value in \\{new_spec} and \\{new_penalty}. @151,158
-# Now stepping through \\{line_break} in simple case.
-AX23. Don't prune unwanted nodes if $\\{cur_p}=\\{null}$. @877
-FX24. Print a closing parenthesis when displaying glue nodes. @189
-SX25. Use \\{last}, not \\{limit}, in \\{term_input}; else error prompt causes
- trouble when $\\{state}=\\{token_list}$. @71,87
-DX26. Set $\\{first}\gets\\{limit}+1$ after \\{init_terminal}. @331
-DX27. Make sure \\{set_trick_count} is always performed. @317
-* 17 Jul 1982
-IX28. Add new diagnostic feature |\tracingcommands|. @299,1031
-# Debugging of system-dependent code not shown in this log.
-# Tangling \TeX\ now takes 1.75 minutes; about 75K bytes, 108K tokens.
-# Redundant semicolon sends Pascal compiler into infinite loop!
-FX29. Initialize $\\{passive}\gets\\{null}$. @864
-AX30. Fix pseudoprinting when the line is empty. @318
-EX31. Merge adjacent free areas of dynamic memory before dumping. @131
-FX32. Print the word |mode| in \\{print_mode}. @211
-IX33. Improve message and help in case of weird error. @415
-GX34. Allow optional space after |\def| and similar constructions. @473
-MX35. Declare \\{alpha} to be integer in \\{read_font_info}. @560
-AX36. Fix timing of \\{back_input} in \\{scan_dimen}. @448
-IX37. Back up after missing number error. @446
-IX38. Show the `|at|' size that is considered improper. @1259
-IX39. Streamline the dialog in \\{debug_help}. @1338
-MX40. Take output of \\{the_toks} from the advertised place. @467,1297
-TX41. Say \\{trie_fix}($q$), not \\{trie_fix}($p$). @959
-SX42. Decrease low limit of \\{error_count} to $-1$. @76
-* 18 Jul 1982
-FX43. Clear initial reference count of macro definitions. @473
-AX44. Fix timing of \\{back_input} in \\{scan_glue}. @461
-BX45. Use \\{cur_val_level}, not \\{cur_val}, when checking levels. @461
-BX46. Multiply |fil| units by $2^{16}$ for correct scaling. @454
-BX47. Don't confuse \\{glue_base} with \\{skip_base}. @1237
-AX48. Fix \\{print_scaled} so that 0.01 doesn't come out |0.1|. @103
-IX49\>X28. Show mode changes when tracing commands. @299
-LX50. Don't say {\bf if} $(n=0)\lor(\,\ldots\;\hbox{\bf div}\;n)$ in Pascal. @105
-BX51. Don't confuse \\{box_flag} with \\{box_code}. @1075
-SX52. Reset \\{offset} on \\{print_ln} even in \\{no_print} mode. @57
-SX53. Fix restarting of interrupts after \\{big_switch}. @1031
-LX54. Don't loop {\bf for} $k\gets a$ {\bf to} $b-1$ when $b=0$ if $k$ is
- declared nonnegative.
-IX55. Put `|=|' sign into the \\{format_ident}. @1328
-SX56. Allow $r$ to be any integer in \\{get_node}. @125
-IX57. Don't put the output of \\{print_file_name} in quotes. @518
-IX58. Say `|dumped|' after dumping. @1311
-EX59. Eliminate unnecessary initialization code. @1332
-LX60. Get the file reading started right when beginning to undump. @1308
-IX61. Give forlorn message if format file can't be loaded. @1303
-FX62. Assign value to \\{cur_val} after glue arithmetic. @1239,1240
-* 19 Jul 1982
-LX63. Don't say {\bf if} $p>\\{max}\lor\\{free}[p]$ in Pascal. @169
-AX64. Fix memory-undump logic; loops are out of phase with input. @1312
-BX65. Undump \\{hyph_word}[$j$], not \\{hyph_word}[$k$]. @1325
-# At last |trip.fmt| loads without bombing out.
-PX66. Remove assignment of array to array, not allowed by IBM Pascal
- (Susan Plass). @167
-PX67. Simplify an expression that's too big for IBM Pascal (Susan Plass). @1009
-AX68. Go to \\{contribute}, not \\{done}, after insertions. @1000
-IX69. Decrease \\{depth_threshold} if there's not enough string space. @198
-IX70. Show rules as `{\tt\char`\|}' in short displays. @175
-IX71. Don't show null glue in short displays. @175
-SX72. Set $\\{job_name}\gets0$ as part of output initialization. @528
-SX73. Don't complain of infinite shrinkage on |0pt minus 0fil|. @825,976,1009
-IX74. Use different prompt at beginning when accepting a file name. @37
-FX75. Reset \\{last_glue} on nonglue nodes. @996
-BX76. Remember to call \\{error} after printing |OK|. @1293
-LX77. Insert {\bf begin} \dots{ \bf end} around program text of section. @1025
-FX78. Define the |\shipout| primitive. @1071,1073
-AX79. Introduce \\{write_loc} analogous to \\{par_loc}. @1344,1371
-FX80. Dump and undump \\{par_loc} and \\{write_loc}. @1313,1314
-FX81. Allow \\{the} in \\{scan_the} [later \\{scan_something_internal}]. @413
-EX82. Interchange command codes $\\{the}:=:\\{number}$ [later \\{convert}]. @210
-BX83. Don't confuse \\{breadth} with \\{depth}. @236
-IX84. Add string printing feature to \\{debug_help}. @1339
-FX85. Set $\\{state}\gets\\{mid_line}$ in \\{begin_file_reading}. @328
-# Time out 2105--2200 to pick up Jenny from driving lesson.
-LX86. Keep $c\le127$ when deleting 99 tokens. @88
-SX87. Don't check for \\{str_room} error when $\\{selector}=\\{new_string}$. @1328
-* 21 Jul 1982
-IX88. Gather more statistics: String usage, font info, hyphen exceptions, stacks. @1334
-DX89\>X79. Initialize \\{write_loc} from \\{cur_val}, not from \\{cs_ptr}. @1344
-FX90. Remember to pack file name for |\open|. @1374
-SX91\>X34. Defuse |\outer| test before scanning optional space after `|}|'. @473
-SX92. Don't allow \\{prepare_mag} to cause errors after \\{jump_out}. @84
-# The first page of |DVI| output is {\sl perfect\/}! Pause to play piano.
-BX93. Don't confuse \\{dimen_base} with \\{scaled_base}. @1237
-DX94. Initialize $\\{link}(\\{page_head})\gets\\{null}$ when beginning a page. @991
-SX95. Correct \\{cur_height} more often, since \\{max_depth} might be negative. @972,973
-AX96. Calculate page dimensions properly after vertical kerns. @973
-SX97. Install new \\{page_contents} logic to handle interaction between
- insertions and |\topskip|. @987,1008
-SX98. Allow \\{top_skip} glue to be a valid breakpoint. @1001
-FX99. Don't forget to count \\{dyn_used} in inner loop [erroneous analysis
- retracted later]. @1034
-FX100. Set $p\gets q$ after migration step. @655
-FX101. Clear \\{prev_graf} to zero at start of paragraph. @1091
-LX102. Put parens into negated \\{leader_flag} macro. @1078
-# Time out 1720--1920 for John's birthday dinner.
-DX103. Scale \\{best_height} when adjusting \\{page_goal}. @1010
-AX104. Simplify logic of split insertions; three states become two. @981,1019,1020
-MX105. Don't omit first character when showing a macro argument. @400
-RX106. Prevent clobberage if macros have too many parameters. @390
-* 22 Jul 1982
-IX107. Tell how many |DVI| bytes were output. @642
-IX108\>X88. Adjust for singular or plural statistics. @1320,1334
-SX109\>X98. Consider \\{page_head} a glue node, to inhibit unwanted break. @988
-DX110. Introduce \\{new_skip_param} to keep reference counts updated. @679,969,1001
-DX111. Record the correct size of new insertion after it's split. @1010
-DX112. Use \\{free_node}, not \\{flush_node_list}, when recycling insertion
- nodes. @1022
-SX113. Make online insertions work after \\{get_next} is interrupted. @87,324,343
-BX114. Print newline on interruption stop. @98
-SX115\>X34. Put space before \\{end_write_token}. @1371
-BX116. Don't confuse \\{glue_order} with \\{stretch_order}. @838
-TX117. Set $\\{max_dimen}\gets\hbox{\it'7777777777\/}$, not {\it'777777777}. @421
-MX118. Make |\global\textfont| legal. @1211
-BX119. Fetch |\the\textfont| with \\{equiv}, not \\{fam_font}. @415
-BX120. Call $\\{new_ligature}(f,l,\ldots)$ not $(f,c,\ldots)$. @1035
-RX121. Make \\{show_box} work on random garbage. @174,177
-DX122. Count reference to \\{zero_glue} from \\{cond_math_glue}. @1171
-* 23 Jul 1982
-RX123. Allow $\\{avail}=\\{null}$ when undumping. @1312
-BX124\>X110. Set $\\{width}(\\{glue_ptr}(p))$, not $\\{width}(p)$. @679
-AX125. Put \\{begin_file_reading} inside the \\{start_input} loop. @537
-BX126\>X116. Don't confuse \\{glue_stretch} with \\{stretch_order} [the previous
- fix went only half\-way]. @838
-BX127. Negate $x$ when calculating badness of shrinkage. @667,678
-LX128\>X121. Remove dangling {\bf else} that parses wrong. @174
-IX129\>X28. Print newline before |{|, not after |}|, when tracing commands. @299
-IX130. Remove colon from overfull box messages. @663,675
-DX131\>X97. Compute \\{page_goal} properly when the first box arrives after
- inserts. @1001
-BX132. Don't confuse \\{page_size} [now \\{page_goal}] with \\{best_size}. @1017
-AX133. Put heldover insertions at front of contribution list. @1023
-SX134\>X88. Output stats before closing |DVI| file, since the latter
- decreases \\{font_ptr}. @1333
-TX135. Don't call a |\vbox| an |\hbox|. @674
-TX136. Fix misplaced {\bf end} caused by editing error. @675
-* 24 Jul 1982
-DX137. Don't \\{eq_destroy} any paragraph shape when \\{par_shape} is null. @275
-IX138. Omit blank before |\message| at the beginning of a line. @1280
-AX139\>X104. Don't try to split an insertion when \\{best_node} isn't the
- split one. @1021
-LX140. Correct another case of `{\bf if} $x\land y$' misunderstood by Pascal.
- @1021
-IX141. Provide diagnostic info about insertions via |\showlists|. @986
-IX142. Add `|inside a group|' to clarify a warning message. @1335
-IX143. Report \\{prev_depth} on a separate line in |\showlists|. @219
-SX144. Back up input to avoid unexpected clobberage of \\{cur_tok}. @1090
-# Wow what a bug: \\{new_graf} calls \\{build_page}, which invokes the
- output routine, after which `\/{\bf goto} \\{reswitch}' is a {\sl disaster}.
-DX145. Add insertion glue to \\{page_so_far} instead of subtracting it from
- the goal. @1009
-IX146. Put extra blank line before overfull box warning. @660
-CX147. Define break at kern consistently between horizontal and vertical lists. @973,1000
-DX148. Renumber so that math nodes are nondiscardable. @147
-TX149. Correct the \\{char_kern} macro: |#|, not $f$. @557
-FX150. Decrease $l$ after reconstituting discretionary break. @916
-EX151. Simplify the hyphen routine, knowing that $\\{link}(s)=\\{null}$. @918
-FX152. Initialize $r\gets q$ in discretionary destruction routine. @883
-* 25 Jul 1982
-AX153. Don't add interline penalty after last line of paragraph. @890
-IX154. Adjust spacing in diagnostic messages. @245
-DX155. Avoid simultaneous use of \\{temp_head} by \\{prune_page_top} and the
- page builder. @1017
-FX156. Clear the \\{post_break} field of simple discretionaries. @916
-AX157. Split \\{offset} into independent variables \\{term_offset},
- \\{file_offset}. @54,57,58
-# Am freezing current program as version $-0.25$; a week of TUG lectures
- begins tomorrow.
-* 5 Aug 1982
-IX158. The `|.err|' file should be `|.log|' instead. @534
-GX159. Allow |\special| strings to contain more than 256 bytes. @585,1368
-MX160\>X99. Undo ``correction'' to a non-bug. @1034
-IX161. Suggest |\&| in help message for unexpected |&|. @1128
-GX162. Make `|E|' a standard option for exiting. @84
-GX163. Restore the use of dead cycles \`a la \TeX78. @1024,1054
-# The previous six changes were suggested during discussions with \TeX82 class.
-SX164. Fix global variable conflict between \\{open_log_file} and \\{new_font}. @1257
-CX165. Allow optional `|=|' when assign to font parameter. @1253
-FX166. Set \\{cur_val} after increasing the number of font parameters. @580
-DX167. Set \\{hash_brace} when matching `|{|'. @476
-IX168\>X88. Clarify meaning of statistics printed. @1334
-GX169. Change |DVI| format to include design size. @602,1260
-DX170. Introduce \\{def_ref} for \\{runaway} messages. @306
-MX171. Restore \\{cur_cs} before calling \\{scan_toks}. @1226
-AX172\>X157. Update \\{print_nl} to dual offset conventions. @62
-AX173\>X163. Move endgame logic inside \\{main_control}, because the output
- routine becomes active. @1054
-* 6 Aug 1982
-CX174. Allow |INITEX| to load format files. @1337
-EX175. Conserve input stack space by deleting finished token lists. @325
-IX176\>X74. Print the opening `|**|' in the transcript file. @534
-# Now ready to try breaking new ground in |TRIP|.
-SX177. Preserve \\{align_state} from tokens deleted online. @88
-DX178. Set $t$ in all branches of \\{scan_toks}. @473
-SX179. Change `$\\{cur_cmd}\le\\{right_brace}$' to `$\\{cur_tok}\le
- \\{right_brace_limit}$'; otherwise |\relax| gets through. @477
-CX180. Allow optional |=| when setting |\spacefactor|; disallow zero. @1243
-BX181. Change \\{vpackage}(\\{head}) to \\{vpackage}(\\{link}(\\{head})). @796
-# Shades of 1978!
-LX182. Insert missing {\bf begin} \dots{ \bf end}. @798
-* 7 Aug 1982
-LX183. Keep \\{trie_max} declared in non-|INITEX| [later rescinded]. @950
-DX184. Watch out for empty token list when copying. @466
-DX185. Free unused reference count slot when defining |\everypar|. @1226
-GX186\>X163. Introduce |\maxdeadcycles|. @1012
-# I believe the \\{line_break} routine has passed its test perfectly.
-SX187. Don't put discretionary after |-| inside a discretionary. @1039
-CX188. Change `|\minus|' to `|\minusthe|' [this feature retracted later]. @413
-BX189. Change \\{cur_p} to $r$ (three places). @875
-AX190. Increase range of \\{hc} to \\{halfword}; otherwise end-of-word mark
- might match a vacant entry in the trie. @892
-FX191. Initialize $b$ in \\{shift_case} routine. @1288
-EX192. Don't back up if a space follows a decimal fraction. @452
-BX193. Don't confuse \\{glue_base} with \\{dimen_base}. @1145
-LX194. Guard against anomalous floating-point values in glue display. @186
-* 8 Aug 1982
-SX195. Avoid infinite loop when |\outer| leads to runaways. @339
-# I worked on that problem about two hours before fixing it.
-IX196. Move final \\{debug_help} to \\{succumb}, except in batch mode. @93
-RX197. Insert kern after spanned box, to defeat access to floating point. @808
-* 9 Aug 1982
-CX198. Include |\leftskip| and |\rightskip| in displayed equations [rescinded
- later]. @1199
-IX199. Trace line-break computations if $\\{tracing_stats}>2$. @846,856
-DX200. Keep \\{prev_p} up to date when passing a string. @867
-# Now stepping through math stuff; a lot is working.
-DX201. Set $\\{link}(p)\gets z$ when making a fraction. @747
-CX202. Don't reset space factor when beginning |\valign|. @775
-IX203. Don't show glue setting if $\\{glue_sign}=\\{normal}$. @186
-DX204. Clear \\{glue_stretch} and \\{glue_shrink} when creating an unset box. @801
-BX205. Do \\{vpack} in hmode and vice versa when aligning. @804
-AX206. Remove fallacious call to \\{confusion} after alignment in display. @1206
-AX207. Don't test $\\{mode}=\\{vmode}$ in display, test $\\{nest_ptr}=1$. @1145
-FX208. Show an \\{inner_noad} as well as the other types. @690,696
-DX209. Renumber \\{mu_glue} and \\{cond_math_glue} so that the glue display logic
- works. @149
-BX210. Don't confuse \\{cur_size} with \\{cur_style}. @703
-FX211. Advance $p\gets q$ during second pass over mlist. @761
-IX212. Add helpful hint about |\tracingonline=1|. @1293
-TX213. Delete spurious statement left from sloppy editing. @710
-DX214. Change the subtype when \\{mskip} becomes \\{hskip}. @732
-FX215. Don't forget to use the remainder when computing math glue. @716
-IX216\>X199. Improve paragraph diagnostics using \\{short_display}. @857
-IX217\>X199. Introduce \\{artificial_badness} for better diagnostics. @854,856
-* 11 Aug 1982
-AX218. Introduce \\{char_box} subroutine so that \\{var_delimiter} adds italic
- correction. @709
-SX219. Save font and char in local variables of \\{make_math_accent}, since
- it can be recursive. @738
-FX220. Call \\{error} after decrying an invalid character. @346
-* 12 Aug 1982
-IX221\>X199. Install new format for showing break nodes. @846
-# I have been testing \\{line_break} and I think it's working fine.
-BX222. Change $q$ to $p$, in order to catch empty alignments. @812,1206
-SX223. Disallow third part of discretionary in math mode. @1120
-DX224. Don't change \\{tail} if discretionary third part is empty. @1120
-IX225. Say |nonscript|, not |non_script|. @189
-SX226. Inhibit math if |\scriptfont3| is improper. @1195
-IX227\>X199. Introduce {\tt\@}|firstpass| and {\tt\@}|secondpass| comments. @863
-TX228. Change $p$ to $r$ when you mean $r$. @1204
-IX229\>X108. Say |page|, not |pages|, if there's only |1|. @642
-IX230. Insert space before |[]| on truncated |\showlists|. @182
-* 28 Aug 1982
-# Back from vacation after having looked at hardcopy listing of |TRIP| test.
-GX231. Allow |dm| as a unit [later |.5dm1| will be |.5\dimen1|]. @455
-IX232\>X108. Singularize |prevgraf 1 lines|. @219
-IX233. Omit trailing zero count registers when showing completed page numbers. @638
-LX234. Avoid clobbering $a$ by introducing a new local variable $t$. @986
-DX235\>X216. Fix diagnostic printing of discretionaries. @858
-IX236. Don't show unset stretch/shrink that's zero. @185
-CX237\>X198. Make |\halign| in displays consistent with other displays. (Namely,
- ignore |\leftskip| and |\rightskip| in nonaligned displays;
- respect the paragraph shape in aligned displays.) @800,1199
-IX238. Parenthesize `|If you're confused ...|'. @403
-IX239. Say `|\fraction|', not `|\xabovex|'. @697
-FX240. Remember to {\bf return} when you should. @1153
-PX241. Use absolute value to make sure {\bf div} is unambiguous. @737
-BX242\>X218. Don't confuse depth with height. @709
-BX243. Use $\\{delta}-\\{height}$, not $\\{height}-\\{delta}$. @736
-BX244. Increase \\{shift_down} to increase the clearance. @745
-IX245. Don't back up after improper use of |\the|. @428
-IX246. Don't give |0pt| as the default result when looking for \\{tok_val}. @428
-FX247. Initialize \\{second_indent} in the easy case. @848
-FX248. Package the equation number. @1204
-QX249. Don't resort to $v\gets\\{max_dimen}$ when glue doesn't stretch or
- shrink. @1148
-IX250. Insert newline before showing current |\botmark|.
-FX251. Call \\{error} after giving error message. @784
-AX252. Change implementation of |\number|; it should \\{scan_int}, not
- something internal. @471
-PX253. Introduce symbolic constants like \\{format_area_length}. @524
-PX254. Change \\{quit} to \\{jump_out}, since some compilers treat \\{quit}
- as a reserved word. @81
-LX255. Add more parentheses to get proper parsing. @1260
-IX256. Say |please| in order to be friendly (or at least polite). @360
-BX257. Don't confuse \\{cur_vcmd} with \\{cur_chr}. @508
-IX258. Use |&| instead of |!| to specify a preloaded format. @1337
-TX259\>X177. Correct |s3| to |s4|. @88
-GX260. Introduce new primitive |\mathchardef|, to save space and time. @1224
-CX261. Use the |[]| convention for noads as well as nodes. @692
-TX262. Correct spelling in call to \\{primitive}: |\xatopx| should be |\xoverx|
- [later renamed, thank goodness]. @1178
-* 30 Aug 1982
-RX263. Don't fetch \\{link}(\\{null}) in malformed list. @175
-SX264. Initialize \\{align_state} at a better time so that \\{align_peek}
- doesn't see |&| or |\span|. @785,791
-SX265. Outlaw preamble interfering with $\\{align_state}=0$. @789
-CX266. Add level of grouping to alignment to tabskip locality. @774
-FX267. Check \\{align_state} when scanning $\langle u_j\rangle$. @783
-AX268. Move `\\{unsave}; \\{new_save_level}' from \\{main_control} into
- \\{fin_col}. @791,1131
-SX269\>X180. Remember \\{cur_chr} when you're looking for optional `|=|'. @1243
-TX270. Change $q$ to $r$ [in code now obsolete]. @804
-IX271. Disable interrupts during \\{back_error} so that help messages aren't
- clobbered. @327
-SX272. Introduce \\{slow_print} for printing control sequences. @60
-IX273. Initialize \\{del_code}(|"."|$)\gets0$ for error recovery. @240
-SX274. Call \\{end_file_reading} before calling \\{check_outer_validity}. @362
-IX275. Don't delete an extra `|}|' when |\par| will help find a runaway. @395
-* 31 Aug 1982
-BX276. Don't confuse \\{thin_muskip} with \\{thin_muskip_code}. @413
-FX277\>X266. Recover from error if new \\{align_group} ends abnormally. @1132
-IX278. Recover from error if |\par| occurs when $\\{align_state}<0$. @1094
-CX279. Make |\hskip\the\thinmuskip| and |\mskip\the\baselineskip| erroneous. @413
-GX280. Add |\muskip| and |\setmuskip| analogs to |skip| and |\setskip|. @413,1228
-EX281. Don't output |pop| right after |push|. @601
-# The |TRIP| test looks right; now to test for wasted memory.
-# When memory should be empty I find $\\{dyn_used}=18$, $\\{var_used}=267$.
-* 1 Sep 1982
-# Made special |MEMTEX| program, designed to track all memory allocation.
-DX282. Delete reference to \\{last_glue} when a page is packaged. @1017
-IX283. Include \\{save_stack} in the \\{search_mem} debugging routine. @285
-CX284. Disallow |\vfill| in restricted horizontal mode. @1095
-# Most of the memory locations I thought were wasted were actually in good use.
-# Total 192 hours (approx) debugging time so far since July 15.
-* 2 Sep 1982
-# Now looking at all zero counts in profile and extending |TRIP|.
-EX285. Simplify the creation of |vtop| boxes. @1087
-CX286. Set $\\{space_factor}\gets1000$ after |\hbox|. @1076
-PX287. Introduce preamble into |DVI| format. @617
-SX288. Give special \\{chr_code} to |\relax|. @265
-IX289. Don't show `|(null)|' when token list is null, just show nothing. @295
-EX290. Delete the procedure \\{write_name_string}, which is never used.
-CX291. Rename |\xabovex| to |\abovewithdelims|; do the same for
- |\xatopx| and |\xoverx|. @1178
-QX292. Improve \\{clean_box} so that it recognizes cleanliness better. @720
-IX293. Report a |Missing delimiter| more meaningfully. @1161
-RX294. Give \\{endv_token} a \\{chr} code of 128 so that it will end a file name. @289
-RX295. Test present of math fonts {\sl after\/} parsing an mlist, not
- before. @1138,1195
-IX296. Omit `|recent contributions|' and/or `|current page|' when they are
- empty. @218,986
-IX297. Display what \TeX\ has deleted after improper discretionary list
- has arisen. @1121
-IX298. Show what math character was undefined. @723
-IX299. Improve the |Incompatible magnification| error; break it into two lines. @288
-DX300. Put new cases into \\{flush_node_list}, to recycle mlist noads. @698
-* 6 Sep 1982
-FX301\>X300. Insert a necessary `{\bf goto} \\{done}' in that new material. @698
-# It took two hours to diagnose that {\bf goto} problem.
-TX302\>X295. Change `|2|' to `|3|' in help message for extension fonts. @1195
-IX303. Add a special note if material is being held over for the next output. @986
-RX304. Divide before multiplying in \\{make_left_right}, to avoid overflow. @762
-IX305. Introduce the \\{box_error} routine. @992
-FX306. Clear \\{arith_error} after overflow has been reported. @460
-BX307\>X249. Don't confuse \\{stretch} with \\{glue_stretch}. @1148
-DX308. Set $\\{glue_sign}\gets\\{normal}$ when packaging with glue ratio
- zero. @558,664
-AX309. Test for overflow before attaching the sign. @448
-# That all worked! Now trying |min_quarterword| negative.
-LX310. Take absolute value before applying {\bf mod} in \\{new_trie_op}. @944
-LX311. Say $\\{qi}(c)$, not $c$, when testing |TFM| flags [now obsolete]. @573
-LX312. Initialize \\{token_ref_count}(\\{def_ref}) to \\{null}, not zero. @473
-LX313. Change the type of \\{vsplit} parameter $n$ from \\{quarterword} to
- \\{eight_bits}. @977
-LX314. Initialize \\{null-delimiter} different form \\{null_character}. @685
-LX315. Insert \\{qi} twice in \\{scan_delimiter}. @1160
-FX316. Insert \\{qi} in \\{scan_math}. @1151
-FX317. Insert \\{qo} in \\{fetch}. @722,723
-FX318. Insert \\{qi} in \\{set_math_char}. @1155
-FX319. Insert \\{qi} in \\{math_ac}. @1165
-FX320. Insert \\{qo} in \\{mlist_to_hlist}. @755
-IX321. Use brackets around 8-bit characters in \\{print_ASCII}. @68
-IX322. Include \\{hyph_list} in the \\{search_mem} debugging routine. @933
-# Now compiling non-|INITEX| to try an industrial-strength version.
-LX323. Add {\bf return} to \\{final_cleanup}, because some Pascal compilers
- insist that each label be used. @1335
-DX324. Compute \\{par_token} when undumping. @1314
-* 11 Sep 1982
-IX325. Emit newline before file name, if near end of line. @537
-CX326. Define |\ifx| for arbitrary tokens. @507
-* 12 Sep 1982
-IX327. Don't ask users to type |x| twice before exiting. @84
-GX328. Install new features |\openin|, |\read|, |\ifeof|, |\closein|; rename
- existing |\open|, |\send|, |\close| to be |\openout|, |\write|,
- |\closeout|. @209,313,1275
-GX329. Install new feature |\expandafter|. @368
-PX330. Change the default file area from `|<TeX>|' to `|TeXinputs:|'. @574
-* 13 Sep 1982
-GX331. Install new feature |\string|. @472
-AX332. Remove spurious space printed by \\{sprint_cs}. @263
-# All tests passed now! But when I played with the system I found another bug
- (undetected by |TRIP|):
-FX333. Set $r\gets s$ after matching macro parameter tokens. @397
-* 16 Sep 1982
-IX334\>X199. Introduce serial numbers in line-break records, improving
- readability and independence. @846
-IX335. Don't abort when \\{file_name_size} is exceeded. @519
-* 17 Sep 1982
-IX336. Remove unwanted period from font capacity message. @567
-* 18 Sep 1982
-GX337\>X329. Make |\expandafter| more powerful by moving it from semantics
- to syntax [i.e., from stomach to mouth]. @368
-* 19 Sep 1982
-IX338. Improve error recovery for `|Missing number|'. @415
-* 22 Sep 1982
-QX339. Suppress italic correction between letters in math mode except in math
- fonts. @752
-* 24 Sep 1982
-PX340. Define $\\{null}=\\{mem_bot}$, not \\{min_halfword}, because there's
- a reference to \\{link}(\\{null}) in \\{try_break}. @115
-DX341. Initialize $\\{str_start}[0]\gets0$. @47
-IX342. Avoid blank space at beginning of line. @638
-DX343. Set type of new box in math mode to \\{ord_noad}, not \\{inner_noad}. @1076
-* 28 Sep 1982
-# Here are the first changes made to the preliminary listing of \TeX82 that was
- published by the \TeX\ project earlier this month.
-F520. Insert the missing cases \\{letter} and \\{other_char} after
- \\{x_token} looks ahead. @1038
-C521. Change `|\pause|' to `|\pausing|'. @236
-D522. Reset \\{overfull_rule} when determining tabskip glue. @804
-A523. Fix the logic for scanning |\ifcase| [in obsolete syntax---everything
- is still done with braces since `|\fi|' doesn't exist yet]. @509
-* 30 Sep 1982
-I524. Change |"0.0"| to |"?.?"| (suggested by DRF). @186
-* 2 Oct 1982
-Q525. Use conditional thin spacing next to `Inner' noads. @764
-Q526. Make thick spaces conditional. @766
-* 4 Oct 1982
-P527. Increase \\{trie_size} from 7000 to 8000, because of Frank Liang's improved
- (but longer) hyphenation patterns. @11
-* 6 Oct 1982
-F528\>X330. Change the string lengths to match the new \\{\TeX_format_default}. @520
-# Version 0 of \TeX\ is being released today!
-* 8 Oct 1982
-B529. Fix a blunder: I decreased $h$ mod a quarterword when it should have
- been decreased mod \\{trie_op_hash_size} (HWT). @944
-* 9 Oct 1982
-P530\>X258. Fix a typo (`|!|' not `|&|') in the |WEB| documentation. @524
-F531. Remember to call \\{initialize} if a different format was preloaded
- (Max D{\'\i}az). @1337
-# Version 0.1 incorporates the above changes.
-* 12 Oct 1982
-G532. Add the `|\immediate|' feature, by popular request. @1375
-# Version 0.2 incorporates this (somewhat extensive) change.
-* 13 Oct 1982
-P533. Introduce new |WEB| macros so that \\{glue_ratio} is more easily changed. @109
-# I began writing {\sl The \TeX book\/} today: edited the old preface and
- searched in the library for quotations.
-* 14 Oct 1982
-B534. Change the type of \\{hd} to \\{eight_bits}; it's
- not a \\{quarterword} (HWT). @649
-S535\>X281. Revise the optimization of\/ |DVI| commands: It's not always safe to eliminate
- \\{pop} when the preceding byte is \\{push}, since |DVI| commands
- have variable length! (Embarrassing oversight caught by DRF.) @601
-* 15 Oct 1982
-C536. Test `$\\{prev_depth}>\\{ignore_depth}$', not `$\ne$'. @679
-# Version 0.3 incorporates the above changes.
-* 16 Oct 1982
-P537. Omit definition of \\{align_size}; it's never used (Bill Scherlis). @11
-I538. Inhibit error messages when packaging box 255. @1017
-* 21 Oct 1982
-A539\>X145. Subtract $\\{width}(q)$ from \\{page_goal}, don't add it to
- $\\{page_so_far}[1]$. @1009
-# Version 0.4 incorporates the above changes.
-* 22 Oct 1982
-P540. Increase the amount of lower (variable-size) memory from 12000 to 13000,
- since the \TeX\ program listing now needs about 11500. [At this time
- there still is a fixed boundary between upper and lower memory.] @12
-G541. Add a new parameter |\boxmaxdepth|. @1086
-# Version 0.5 incorporates the above changes.
-* 26 Oct 1982
-B542. Fix an off-by-one error caught by Gabi Kuper and HWT.
- (I forgot `${}+1$'). @1317
-B543. Fix the spacing of displayed control sequences: \\{print_cs} should base its
- decision on $\\{cat_code}(p-\\{single_base})$, not $\\{cat_code}(p)$. @262
-# The |TRIP| test detected this bug, but I didn't notice.
-* 27 Oct 1982
-S544. Set \\{math_type} before saying $\\{fetch}(\\{nucleus}(q))$, since
- fetching can have a side effect. @752
-* 28 Oct 1982
-G545. Install a major change: Fonts now have identifiers instead of code letters.
- Eliminate the `|\:|' primitive, and give corresponding new
- features to `|\the|'. @209
-# Actually I began making these changes on October 26, but I needed two days
- to debug them and to put Humpty Dumpty together again.
-# At this time I'm also drafting macros for typesetting {\sl The \TeX book}.
-# The above changes have been incorporated into Version 0.6.
-* 30 Oct 1982
-# After years of searching, I've finally found a definitive definition of
- the printer's point; and (unfortunately) my previous conjecture was
- wrong. The truth is that $\rm83\,pc=35\,cm$, exactly;
- so I am changing \TeX\ to conform.
-C546. Revise unit definitions for the `real' printer's point. @458,617
-# Version 0.7 incorporates the above.
-* 1 Nov 1982
-# Oops! Retract error \#546, and retract \TeX\ Version 0.7;
- the source of my information about points was flaky after all.
- My original suppositions were correct,
- as confirmed by NBS Circular 570.
-* 4 Nov 1982
-C547. Revise the definition of |dd|, conforming to the definitive value
- shown me by Chuck Bigelow. @458
-R548\>545. Introduce ``frozen'' copies of
- font identifiers, to be returned by |\the\font|, so that font
- manipulation is more robust. @1257
-* 5 Nov 1982
-D549. Reset \\{looseness} and paragraph shape when beginning a |\vbox|. @1083
-* 6 Nov 1982
-D550. De-update \\{align_state} when braces are in constants. @442
-I551\>X294. Improve error recovery for bad alignments. @1127
-# Today I wrapped up Chapters 4 and 5.
-* 8 Nov 1982
-G552. Give more power to |\let|: the right-hand side needn't be a control
- sequence. @1221
-I553. Amend \\{show_context} to say
- `$(\\{base_ptr}=\\{input_ptr})\lor{}$'; otherwise undefined control
- sequences can be invisible in unusual cases (John Hobby). @312
-A554. Compute demerits more suitably by adding a penalty squared, instead of
- adding penalties before squaring. @859
-# Previously a slightly loose hyphenated line followed by a decent line
- was considered worse than a decent hyphenated line followed by
- a quite loose line.
-* 10 Nov 1982
-E555. Save a bit of buffer space by declaring \\{pool_file} only in
- |INITEX|. @50
-* 11 Nov 1982
-I556. Introduce a new context indicator to clarify \TeX's scanning state:
- A special type
- called \\{backed_up} is distinguished from other kinds of \\{inserted}
- lists; it is called `recently read' or `to be read again', while
- others are called `inserted'. @314
-I557. Append a comment, `|treated as zero|', to the missing-number message. @446
-I558. Ignore the settings of\/ |\hfuzz| or |\vfuzz| if\/ |\hbadness| or |\vbadness|
- is less than 100. @666,677
-* 13 Nov 1982
-# Major surgery on the program is planned for today, because of new ideas
- suggested by correspondence with MDS and other macro writers.
-G559. Introduce a new |\tokens| register; this will be useful and easy to add,
- since \TeX\ already can handle |\everypar| and |\output|. @1227
-C560\>X34. Change \\{get_x_token} to \\{get_token} when scanning an optional
- space; then a construction like
- |\def\foo{...}\foo| won't complain that |\foo| is undefined. @443
-# This change was retracted when it was being debugged, because it could
- cause \\{endv} to abort the job. Then it was re-established again
- when I found that \\{endv} needed to be more robust anyway.
- [But it was eventually rescinded again.]
-G561. Make |\span| mean `expand' in a preamble. @782
-E562. Use three separate {\bf if\/} tests instead of
- `$\land$' in the inner loop of \\{get_next}, to gain efficiency. @342
-R563. Introduce \\{get_r_token} so that assignments have uniform error
- messages and so that frozen equivalents cannot be changed. @1215
-# I gave a few variables more mnemonic names as I made these changes.
-C564. Move conditional statements from the semantics (`stomach') part of
- \TeX\ to the syntax (`mouth') part, by introducing `|\fi|'.
- Also introduce |\csname| and |\endcsname|. @372,489\hbox{--}500
-# This makes macros much more predictable and logical, but it is by far
- the most drastic change ever made to \TeX. The program began to come
- back to life only after three days of solid hacking.
-# Several other things were cleaned up as part of this change
- because it is now more natural to handle them differently.
- For example, a null control sequence has now become more logical.
-# The result of all this is called Version 0.8.
-* 18 Nov 1982
-# Today I resumed writing Chapter 8. Tomorrow I'm $\,2^{14}$ days old!
-* 21 Nov 1982
-F565. Declare $c$ as a local variable for hyphenation (DRF). @912
-E566. Omit the ``first pass'' and try hyphenations immediately,
- if\/ |\pretolerance| is negative (suggested by DRF). @863
-R567. Don't ship out incredibly huge pages; they might foul up
- |DVI| files. @641
-* 2 Dec 1982
-G568. Add new features |\everymath| and |\everydisplay|. @1139,1145
-G569. Add a new feature |\futurelet|. @1221
-# The changes above have been incorporated into Version 0.9 of \TeX.
-* 7 Dec 1982
-G570. Add a new |\endinput| primitive (suggested by FY). @362,378
-* 8 Dec 1982
-I571. Try \\{off_save}, if\/ |\par| occurs in restricted horizontal mode.
- (This avoids embarrassment if \TeX\ says `type a command or
- say |\end|', then when you type |\end| it says you can't!)
- [However, I soon retracted this change.] @1094
-* 21 Dec 1982
-A572. Redefine |\relax| so that its \\{chr} field exceeds 127. (This facilitates
- the test for end in \\{scan_file_name}.) @265
-F573\>566. Call \\{begin_diagnostic} when omitting
- the first pass of line breaking. @863
-A574. Fix the logic of glue scanning: In |\hskip-1pt plus2pt| the minus should
- apply only to the |1pt|. @461
-* 23 Dec 1982
-I575. Renumber the decimal codes in paragraph statistics for loose and tight
- lines; they were ordered backwards. @817
-C576. Treat a paragraph that ends with leaders like a paragraph that
- ends with glue. @816
-C577. Allow commas as alternates to radix points, for Europeans. @438
-C578. Change |\hangindent| to a normal dimension parameter. [It had been
- a combination of\/ |\hangindent| and |\hangafter|, with special
- syntax.] @247
-G579. Make |\prevgraf| accessible to users. @422,1244
-G580. Split |\clubpenalty| off from |\widowpenalty|. @890
-# I'm typing Chapter 14 while making these changes.
-* 24 Dec 1982
-S581. Use \\{back_input} instead of {\bf goto} \\{reswitch} when
- inserting |\par|, because |\par| may have changed. @1095
-* 25 Dec 1982
-# It's 10pm after a very Merry Christmas!
-I582\>X328. Don't prompt for a new file name if\/ |\openin| doesn't find a file. @1275
-G583. Add a new |\jobname| primitive. @472
-I584. Give the user a way to delete the dollar sign, when \TeX\ decides
- to insert one. @1047
-C585. Allow optional equals after |\parshape|, and implement |\the\parshape|.
- @423,1248
-* 26 Dec 1982
-I586. Add an \\{if_line_field} to the condition stack entries,
- so that more informative error messages can be given. @489
-D587\>549. Introduce a \\{normal_paragraph} procedure, since initialization is needed
- also within |\insert|, |\vadjust|, |\valign|, |\output|. @1070
-* 27 Dec 1982
-G588. Give users access to |\pagetotal| and |\pagegoal|. (Analogous to
- \#679 and \#585, but simpler.) @1245
-I589\>X199. Introduce |\tracingpages|, allowing users to see
- page-optimization calculations. Also split |\tracingparagraphs| off from
- |\tracingstats|. @987,1005,1011
-# The changes above have been incorporated into Version 0.91 of \TeX.
-* 31 Dec 1982
-P590. Break the \\{build_page} procedure into two parts, by extracting
- the section now called \\{fire_up}. [This is necessary because
- some Pascal compilers, notably for IBM mainframes, cannot
- deal with large procedures.] @1012
-S591\>564. Make |\ifodd1\else| legal by introducing \\{if_code}. @489
-Q592. Improve alignments when columns don't occur: Don't append null boxes
- for columns missing before |\cr|, and zero out the tabskip
- glue after nonpresent columns. @802
-I593. Make the error message about overfull alignment more intelligible.
- @801,804
-# The changes above have been incorporated into Version 0.92 of \TeX82,
- which was the last version of 1982,
- completed at 11:59pm on December 31.
-* 3 Jan 1983
-# Today I'm beginning to write Chapter 15, and
- planning the |\output| routine of |plain.tex|.
-C594\>X186. Change the logic of \\{its_all_over}; use \\{max_dead_cycles}
- here too, instead of the fixed constant~100. @1054
-F595\>X34. Don't forget to \\{pop_nest} when an insert is empty. Also disallow
- optional space after |\insert|$\,n\,$|{...}|. @1100
-* 4 Jan 1983
-C596\>541. Use the |\boxmaxdepth| that's declared inside a |\vbox| when packaging it.
- @1086
-C597. Rename |\groupbegin| and |\groupend| as |\begingroup| and
- |\endgroup|. @265
-G598\>594. Make |\deadcycles| accessible to users. @1246
-Q599. Base the split insertions on natural height plus depth, not
- on \\{delta}. @1010
-# The changes above have been incorporated into Version 0.93.
-* 6 Jan 1983
-D600. Add \\{push_math} to handle a case where I forgot
- to clear \\{incompleat_noad}. (This long-standing bug was
- unearthed today by Phyllis Winkler.) @1136
-G601\>588. Add |\pageshrink|, etc., too. @1245
-G602. Introduce new parameters |\floatingpenalty|, |\insertpenalties|. Also
- adopt a new internal representation of insertion nodes,
- so that |\floatingpenalty|, |\splittopskip| and |\splitmaxdepth|
- can be stored with each insertion. @140,1008
-* 7 Jan 1983
-Q603. Improve the rules for entering \\{new_line}, in particular
- when the end-of-line character is active. @343
-* 9 Jan 1983
-Q604. Distinguish between implicit and explicit kerns. @155,896
-C605. Change the name |\ignorespace| to |\ignorespaces|. @265
-C606\>560. Don't omit a blank space after |\def|, |\message|, |\mark|, etc.;
- the previous hodge-podge of rules is impossible to learn. @473
-# The above changes appear in Version 0.94.
-* 12 Jan 1983
-# Beginning to write the chapters on math today.
-G607. Add a new feature: active characters in math mode. @1151
-* 15 Jan 1983
-A608. Fix a surprise bug: `|$1-$|' treated the |-| as binary. @729
-D609. Initialize \\{space_factor} inside discretionaries. @1117
-* 16 Jan 1983
-F610. Fix an incredibly embarrassing bug: I forgot to update \\{spotless} in the
- \\{error} routine!
-# While fixing this, I decided to change
- \\{spotless} to a more general \\{history} variable, as suggested
- by IBMers who want a return code. @76,82,1335
-I611. Replace two calls of \\{confusion} by attempts at error recovery, in places
- where `|This can't happen|' could actually happen. @1027,1372
-* 18 Jan 1983
-R612. Introduce the \\{normalize_selector} routine
- to protect against startup anomalies
- when the transcript file isn't open. Also make \\{open_log_file}
- terminate in some cases. @92,535
-R613\>591. Insert |\relax|, not a blank space, to cure infinite
- loop like |\ifeof\fi| (LL). @510
-G614. Change the old |\limitswitch| to |\limits|, |\nolimits|, and
- |\displaylimits|. Incidentally, this fixes a bug in the former
- positioning of integral signs. @682,749
-C615. Give a |\char| in math mode its inherited |\mathcode|. @1151
-Q616\>525. Make underline, overline, radical, vcenter, accent noads and |{...}|
- all revert to type Ord instead of type Inner. Introduce a new primitive
- |\mathinner|. (This fixes the spacing, which
- got worse in some ways after change \#525.) @761
-# I'm working on Appendix G today.
-* 19 Jan 1983
-G617. Introduce a |\mathchoice| primitive. @1174
-C618. Move |\input| from the stomach to the mouth. @378
-C619\>X260. Introduce |\chardef|, analogous to |\mathchardef|. @1038,1224
-G620. Change |\unbox| to |\unhbox| and |\unvbox|; also add |\unhcopy|. @1110
-C621. Consider |\spacefactor|, |\pagetotal|, etc., as part of
- \\{prefixed_command}, even though they are always global. @1211
-* 20 Jan 1983
-C622. Switch modes when |\hrule| occurs in horizontal mode or |\vrule|
- in vertical. @1090,1094
-G623. Add a new |\globaldefs| feature. @1211
-* 21 Jan 1983
-E624. Optimize the code, in places where it's important (based on
- frequency counts of \TeX\ usage
- accumulated during the past week): Introduce \\{fast_get_avail}
- and \\{fast_store_new_token}; reduce procedure-call overhead
- in \\{begin_token_list}, \\{end_token_list}, \\{back_input},
- \\{flush_node_list}; change some tests from `{\bf if} $a\land b$' to
- `{\bf if}~$a$ {\bf then if}~$b$'. @122,371
-* 22 Jan 1983
-E625. Save space in math lists: Don't insert penalties within restricted
- horizontal mode; simplify trivial boxes. @721,1196
-S626. Fix a surprising oversight in the \\{rebox} routine:
- Ensure that $b$ isn't a vbox. @715
-C627\>545. Make |\nullfont| a primitive, so that \\{cur_font} always
- has a value. (This is a dramatic improvement over \TeX78, where a
- missing font was a fatal error called `|Whoa|'!) @552
-* 24 Jan 1983
-I628\>586. List all incomplete |\if|'s when the job ends. @1335
-* 29 Jan 1983
-C629\>552. Change initialization of \\{align_state} so that |\halign\bgroup|
- works. @777
-* 30 Jan 1983
-D630\>625. Be sure to test `\\{is_char_node}($q$)' when checking for a trivial
- box. @721
-# By extraordinary coincidence, this bug was caught when somebody
- used font number~11 ($=\\{kern_node}$) in the second character
- of a list of length~2!
-I631\>X168. Improve format for stats at end of run, as suggested by DRF. @1334
-# The changes above have been incorporated into Version 0.95.
-C632. Don't ignore the space after a control symbol (except `|\ |'). @354
-P633. Remove all trailing spaces at the right of input lines,
- so that there's perfect compatibility with IBM systems that
- extend short lines with spaces. @31
-* 3 Feb 1983
-I634. Assume that a \\{math_accent} was intended, after giving an error
- message in the case $\\{mmode}+\\{accent}$. @1165
-G635. Add new primitives |\iftrue| and |\iffalse|. @488
-* 6 Feb 1983
-A636\>X304. Improve the accuracy of fixed-point arithmetic when
- calculating sizes for |\left| and |\right|. (I had started by
- dividing \\{delimiter_factor}, not \\{delta1}, by 500.) @762
-* 12 Feb 1983
-C637. Change the name |\delimiterlimit| to |\delimitershortfall|. @248
-C638. Make |\abovewithdelims..| equivalent to |\above|; change the
- order of operands so that delimiters precede the dimension. @1182
-C639\>607. Remove the kludgy math codes introduced earlier;
- make |\fam| a normal integer parameter and allow |\mathcode|
- to equal $2^{15}$. @1233
-R640. Don't let |\spacefactor| become more than $2^{15}$. @1233,1243
-# I finished drafting Chapter 17 today.
-* 14 Feb 1983
-I641\>639. Replace octal output (\\{print_octal}) by hexadecimal (\\{print_hex})
- so that math codes are clearer. @67
-F642\>619. Don't forget \\{char_given} in the \\{math_accent} routine. @1124
-* 17 Feb 1983
-C643\>622. Switch modes when |\halign| occurs in horizontal mode, or |\valign|
- in vertical mode. @1090,1094
-* 18 Feb 1983
-I644. Add a new feature |\tracingrestores|. This requires a new procedure called
- \\{show_eqtb}, whose code can be
- interspersed with the \\{eqtb} definitions. @252
-* 25 Feb 1983
-I645\>622. Suggest using |\leaders| when the user tries a horizontal rule
- in restricted horizontal mode. @1095
-* 27 Feb 1983
-I646. Specify the range of source lines, when giving warning messages
- for underfull or overfull boxes in alignments. @662,675
-# Why did it take me all day to type the middle part of Chapter 18?
-* 4 Mar 1983
-G647. Introduce a new feature |\xcr| (suggested by LL). [Changed later to
- `|\crcr|'.] @785
-I648\>631. Subtract out \TeX's own string requirements from the stats. @1334
-* 6 Mar 1983
-G649. Add new features |\everyhbox| and |\everyvbox|. @1083,1167
-* 9 Mar 1983
-R650\>X295. Avoid accessing \\{math_quad} when the symbol fonts aren't known
- to be present. @1199
-P651\>533. Introduce \\{float} and \\{unfloat} macros to aid portability (HWT). @109
-C652. Introduce new names |\abovedisplayskip| and |\belowdisplayskip| for
- the old |\dispskip|; also |\abovedisplayshortskip| and
- |\belowdisplayshortskip| for the old |\dispaskip| and |\dispbskip|. @226
-* 10 Mar 1983
-C653. Unbundle |\romannumeral| from |\number| (suggested by FY). @468
-* 12 Mar 1983
-C654. Ignore leading spaces in \\{scan_keyword}. @407
-* 14 Mar 1983
-E655\>631. Use \\{write} and \\{write_ln} directly when printing stats. @1334
-* 16 Mar 1983
-Q656\>602. Refine the page-break cost function (introducing `\\{deplorable}',
- which is not quite `\\{awful_bad}'), after suggestion by LL. @974,1005
-# The changes above have been incorporated into Version 0.96.
-* 18 Mar 1983
-G657. Add a new feature |\everyjob| suggested by FY. @1030
-* 19 Mar 1983
-I658. Don't treat left braces specially when showing macros. @294
-C659. Ignore blanks that would otherwise become undelimited arguments. @393
-* 21 Mar 1983
-F660\>X280. Make |\lastskip| handle \\{mu_glue} as well as ordinary glue. @424
-C661\>561. Expand only one level in a preamble |\span|. @782
-* 22 Mar 1983
-C662. Let a single |#| suffice in |\tokens|, |\message|, etc. (The previous rule,
- in which |##| was always required as in macros, was a loser especially
- in |\write| where you had to say |####|!) @477
-C663\>X328. Require the keyword `|to|' in |\read|. (This will avoid the common error
- of an incomplete constant when no space appears
- before the |\cs|.) Also allow terminal
- I/O as a default when a stream number is out of range. @482,1225,1370
-* 26 Mar 1983
-C664. Replace |\ifeven|\<countnumber> by |\ifodd|\<number>, for better
- consistency of language. @504
-S665\>564. Introduce the \\{change_if_limit}, to overcome a big surprise
- bug relating to |\if\if aabc\fi|. @497
-# Such examples show that \\{cur_if} might not be current,
- in my original implementation.
-* 28 Mar 1983
-G666\>X326. Tolerate non-characters as arguments to |\if| and |\ifcat|. @506
-C667. Change `|absent|' to `|void|', a better word. @487
-C668. Clear the \\{shift_amount} in |\lastbox|, since I don't
- want to figure out what it means in all cases. @1081
-* 29 Mar 1983
-I669. Wake up the terminal before giving an error message. (This
- means a special \\{print_err} procedure is introduced.)
- (Suggested by DRF.) @34,73
-* 1 Apr 1983
-# Today I finished Chapter 21 (boxes) and began to draft Chapter 22 (alignments).
-G670. Allow periodic preambles in alignments. @793
-C671. Make |\leaders| line up according to the smallest
- enclosing box. @627,636
-Q672. Allow hyphenation after whatsits (e.g., after items for an index). @896
-* 2 Apr 1983
-Q673. Call \\{build_page} when |\par| occurs in vertical mode. @1094
-C674. Clear \\{aux} in \\{init_row}, for tidyness. @786
-* 4 Apr 1983
-C675. Let digits switch families in math mode. @232
-* 7 Apr 1983
-Q676\>602. Refine the test for not splitting an insertion. @1008
-* 8 Apr 1983
-C677\>647. Rename |\xcr| as |\crcr|, at LL's request. @780
-* 9 Apr 1983
-# Took a day off and had a chance to help print a sample page on
- a 150-year-old letterpress in Murphys, California.
-* 11 Apr 1983
-I678. Recover more sensibly after a runaway preamble. @339
-* 12 Apr 1983
-C679\>X328. Make |\read| span several input lines, if necessary to get
- balanced braces. @482
-* 14 Apr 1983
-S680. Fix a subtle bug found by JS: \S882 can make $q$ a \\{char_node},
- so we need to test `{\bf if} $\lnot\\{is_char_node}(q)$'.
- [Actually I discovered much later that the real bug was
- to omit `{\bf else}' at this point.] @881
-* 15 Apr 1983
-C681. Make |\uppercase| and |\lowercase| apply to all characters, regardless
- of category. @1289
-# 7:30am. After working all night, I completed a draft of the manual thru
- Chapter 22, for distribution to volunteer readers.
-# 5pm. The changes above have been incorporated into Version 0.97.
-* 17 Apr 1983
-R682. Change `\\{small_number}' to `$0\,.\,.\,65$' in the
- hyphenation routine (DRF). @901
-I683. Flush patterns in the input when the user tries |\patterns|
- outside of\/ |INITEX| (suggested by DRF). @1252
-# Tomorrow I fly to England, where I'll lecture and write a paper about
- `Literate Programming' [{\sl Comp.~J. \bf27} (1984), 97--111].
-* 14 May 1983
-I684\>663. Improve the behavior of\/ |\read| from terminal
- (suggested by Todd Allen at Yale).
- [I'd forgotten to implement the extended stream numbers in \#663.
- Also, the prompt is now omitted if $n<0$.] @484
-* 18 May 1983
-I685. Restrict |\write| $n$ to the transcript file only, if $n<0$. @1350
-C686\>X188. Unify the syntax for registers and internal quantities. (Remove
- primitives called `|\insthe|' and `|\minusthe|'; rename
- \\{scan_the} to \\{scan_something_internal}, and change its
- interface accordingly; clean up command codes generally.) @209,413
-G687. Introduce new parameters |\hoffset|, |\voffset|. @617
-* 24 May 1983
-G688. Introduce a new parameter |\everycr| (suggested by MDS). @774,799
-# Many macro writers and preliminary-manual readers have been requesting
- new features; I'll try to keep the language as concise and consistent
- as possible.
-* 25 May 1983
-G689. Introduce |\countdef|, |\dimendef|, etc.\ (suggested by DRF long ago,
- easy now in view of \#686). @1224
-G690. Introduce |\advance|, |\multiply|, |\divide| (suggested by FY). @1240
-G691. Introduce |\hyphenchar|; this requires a new command
- \\{assign_font_int}, plus minor changes to about 15 modules. @915
-G692. Introduce |\skewchar| (easy because of \#691). @741
-G693. Introduce |\noexpand|. (I had difficulty thinking of how to
- implement this one!) @358,369
-G694. Introduce |\meaning|. @296
-G695\>X231. Remove `|dm|' and `|vu|'; allow the more general `|.5\hsize|'. @455
-C696. Change `|\texinfo| $f$ $n$' to `|\fontdimen| $n$ $f$'. @578
-* 27 May 1983
-G697. Add a new feature |\afterassignment| (suggested by ARK). @1269
-C698\>619. Adjust the timing so that commands like `|\chardef\xx=5\xx|'
- behave sensibly. @1224
-* 28 May 1983
-C699. Ignore `|\relax|' as if it were a space, in math mode and in a few other
- places where |\relax| would otherwise be erroneous. @404
-Q700. Improve |\mathaccent| spacing with respect to subscripts
- and superscripts (suggested by HWT). @742
-* 30 May 1983
-C701\>598. Terminate a job only when $\\{dead_cycles}=0$. @1054
-# The changes above constitute Version 0.98.
-* 3 Jun 1983
-# I finished the draft of Chapter 23 (output routines) today.
-G702. Allow |\mark| and |\insert| and |\vadjust| in restricted
- horizontal mode, and also in math mode. (This is a comparatively
- big change, triggered by the fact that |\mark| in a display
- presently causes \TeX\ to crash with `|This can't happen|'!)
- The global variable \\{adjust_tail} is introduced. @796,888,1085
-* 6 Jun 1983
-G703\>695. Replace (and generalize) the previous uses of\/ |ht|, |wd|, and |dp|
- in dimensions by introducing the new control sequences
- |\ht|, |\wd|, and |\dp|. @1247
-I704. Display sub-parts of noads with the symbols |^| and |_| instead of
- |(| and~|[|. @696
-C705\>694. Allow |A..F| in hex constants to be \\{other_char} as well as
- \\{letter}. @445
-* 7 Jun 1983
-E706\>654. Remove an instance of \<Scan optional space>, since it's now
- redundant. @457
-C707. Legalize |\mkern\thinmuskip| and |\mkern5\thinmuskip|. @456
-C708. Clean up the treatment of optional spaces in numerical specifications. @455
-# A construction like |2.5\space\space\dimen0| was previously
- valid after `|plus|' or `|minus|' only!
-# I'm obviously working on Chapter~24 today.
-C709\>545. Allow `|\font|' as a \<font identifier> for the current font. @577
-C710\>623. Don't make |\gdef| global when $\\{global_defs}<0$. @1218
-E711. Produce \\{zero_glue} as the outcome of
- |\advance\spaceskip by-\spaceskip|. @1229
-I712. Make |\show| do something appropriate for every possible token. @1294
-G713\>559. Replace the (single) |\tokens| parameter by an array of
- 256 token registers. @230
-C714. Allow |\indent| in math mode; also make |\valign| in math mode produce the
- `|Missing|~|$|' error. @1046,1093
-E715. Remove redundant code: There's no need to check \\{cur_group}
- or call \\{off_save} when starting alignments or equation numbers
- in displays. @1130,1142
-* 8 Jun 1983
-C716. Disallow |\openout-1| and |\closeout-1|. @1350
-C717. Disallow |\lastbox| in math mode. @1080
-* 9 Jun 1983
-I718. Call \\{back_error}, not \\{error}, when |\leaders| aren't followed by
- proper glue. @1078
-D719. Initialize for a possible paragraph, after |\noalign|
- in a |\valign|. @785
-* 10 Jun 1983
-C720\>708. Expand the optional space after an ASCII constant. @442
-* 12 Jun 1983
-C721. Set $\\{space_factor}\gets1000$ after a rule or a
- constructed accent. @1056,1123
-* 14 Jun 1983
-D722. Correct a serious blunder: Set $\\{disc_width}\gets0$ before testing
- if $s$ is null (caught by JS). @869
-# This is a real bug that existed since the beginning!
- It showed up on page~37 of the
- Version~0 |TRIP| manual, but I didn't notice the problem.
-C723\>708. Make optional spaces after \<dimen> like those after \<number>. @448
-C724\>568. Insert \\{every_display} before calling \\{build_page}. @1145
-I725\>648. Report \TeX's capacity on overflow errors in a way that's
- fully consistent with other statistical reports. @42
-* 17 Jun 1983
-C726. Make all |\tracing| decisions on the basis of $\ge$ versus $<$,
- not $\ne$ versus~$=$. @581
-# Today I finished the draft of Chapter 27 (the last chapter)!
-# The changes above were released as Version 0.99 on June 19, 1983.
-* 20 Jun 1983
-C727. Set |\catcode`\%=14| in |INITEX|. @232
-C728\>587. Call \\{normal_paragraph} when |\par| occurs in vertical mode. @1094
-# Once again I'm retiring about 8am and awaking about 4pm.
-* 21 Jun 1983
-C729\>558. Don't append an overfull rule solely because of\/ |\hbadness|. @666
-R730. Don't allow the glue-ratio of shrinking to be less than~$-1$. @810,811
-* 22 Jun 1983
-B731\>653. Declare the parameter to \\{print_roman_int} to be of type \\{integer},
- instead of \\{nonnegative_integer} (found by Debby Clark). @69
-C732\>690. Make the keyword `|by|' optional (suggested by LL). @1236
-* 24 Jun 1983
-I733. Say `|preloaded|' when announcing \\{format_ident}. @1328
-* 25 Jun 1983
-R734. Add extra boxes and
- glue to the output of alignment. [This thwarts possible attempts
- at trickery by which system-dependent glue set values
- computed by |\span| could have gotten into \TeX's registers by
- things like |\valign| and |\vsplit|. It also has the advantage
- of perfect accuracy in alignment of vertical rules.] @809
-C735. Make leaders affect the height or width of the enclosing boxes. @656,671
-# Today I'm mainly installing a much-improved format for change files
- in |WEB| programs (suggested by DRF).
-* 28 Jun 1983
-C736. Permit |\unskip| in vertical mode when we know that it does nothing. @1106
-* 1 Jul 1983
-E737\>700. Avoid redundant boxes when things like `|{\bf A}|' occur in math. @1186
-G738. Add a `|scaled|' feature to |\font| input. @1258
-D739\>700. Remember to correct \\{delta} when an accented box changes. @742
-* 2 Jul 1983
-R740.Introduce \\{bypass_eoln}, to remove anomalous behavior on input files
- of length~1. (Suggested by DRF after the problem was discovered by LL). @31
-* 4 Jul 1983
-G741. Allow codes like |^^b| as well as |^^B|. @352,355
-G742. Introduce new parameters |\escapechar|, |\endlinechar|, |\defaulthyphenchar|,
- and |\defaultskewchar|, to make \TeX\ less dependent on the
- character set. (This affects many modules, since a lot of
- error messages must be broken up so that they use \\{print_esc}.)
-* 7 Jul 1983
-P743. Use a system-dependent function \\{erstat} when opening or closing
- files (suggested by DRF). @27
-* 11 Jul 1983
-# The computer is back up after more than 50 hours down time
- (due to air conditioning failure).
-I744. Show total glue in the output of\/ |\tracingpages|. @985
-R745. Guard against insertion into an hbox. @993
-C746. Legalize the assignment \<tokenvar>=\<tokenvar>. @1227
-I747. Introduce a new parameter |\errhelp|. @1283
-F748\>623. Don't forget to check \\{global_defs} when |\tabskip| is changed. @782
-* 12 Jul 1983
-C749. Allow an |\outer| macro to appear after |\string|, |\noexpand|,
- and |\meaning| (Todd Allen). @369,471
-C750. Make `|\the|' an expandable control sequence (i.e., move it
- from the stomach to the throat); this cleans up
- several annoying glitches. @367
-C751\>620. Allow |\unhbox| and |\unhcopy| in math mode if the box is void. @1110
-* 13 Jul 1983
-# I lectured for four hours at the TUG meeting today after very little sleep!
-* 16 Jul 1983
-# The following were suggested by TUG meeting discussions.
-L752. Round the value of \\{default_rule} more properly: It should be 26215. @463
-Q753\>700. Fix |\mathaccent| again; it's still not right!
- The final height should be the maximum of
- the height of accented letter without superscript and
- the height of unaccented letter with superscript. @742
-G754. Add a new feature |\newlinechar|. @59
-G755. Allow boxes and rules in discretionaries (suggested by somebody
- from Hewlett-Packard). @1121
-I756\>X28. Show all token expansions, not just macros,
- when |\tracingcommands|. @367
-C757. Allow |\char| in a |\hyphenation| list. @935
-G758. Introduce a new feature |\aftergroup|; it can be implemented with
- \\{save_stack}. @326
-C759. Run the running dimensions to alignment boundaries (suggested
- by ARK). @806
-* 17 Jul 1983
-R760. Zero out \\{hyf} values at the edges, so that
- weird pattern data cannot lead to Pascal range checks. @965
-R761\>X190. Decrease the |hc| codes for hyphenation, so that code~127 cannot
- possibly be matched. @937,962
-C762\>672. Allow whatsits after hyphenatable words. @899
-C763\>604. Represent an italic correction as an explicit kern. @1113
-* 18 Jul 1983
-C764. Allow lowercase letters in file names. @519
-I765. Change the message `|No output file|' to: `|No pages of output|'. @642
-I766. Confirm that a quiet mode is being entered, when error
- interaction ends with |Q|, |R|, or |S| (suggested by ARK). @86
-# Version 0.999 was finally installed today; a new program listing has
- been printed.
-# From now on, I plan to keep all section numbers unchanged.
-# I'm done writing Appendix~H; beginning to revise Chapter~20.
-* 25 Jul 1983
-C767\>663. Allow space after `|to|' in the |\read| command (FY). @1215
-# To bed at 1pm today.
-* 27 Jul 1983
-S768\>665. Stack the current type of\/ |\if|; this precaution is necessary
- in general (FY). @498
-# To bed at 2pm today.
-* 29 Jul 1983
-E769. Avoid putting a control sequence in the hash table
- when it occurs after |\ifx|. (Requested by Math Reviews people.) @507
-# Finished a version of {\sl The \TeX book\/} lacking only Appendices
- D, E, and~I, for distribution to interested readers.
-# To bed at 10:30pm, planning to arise regularly at 6am for a change.
-* 31 Jul 1983
-I770\>766. Call \\{update_terminal} when going quiet (HWT). @86
-* 1 Aug 1983
-C771. Don't put an empty line at the end of an |\input| file! (This simplifies
- the rules and the program, and also gets around a bug that occurred
- at the end of files with $\\{end_line_char}<0$.) @362
-# The changes above went into Version 0.9999, which was widely distributed.
-* 16 Aug 1983
-B772\>665. Rectify a ridiculous gaffe: I initialized $q$ every time the loop
- of \\{change_if_limit} was performed! (Found by FY.) @497
-I773\>648. Distinguish `|string|' from `|strings|' when reporting statistics. @1334
-A774. Introduce \\{lx}, to correct a bug in |\xleader| computations
- (found by FY). @627
-* 20 Aug 1983
-F775. Don't forget to apply |\/| to ligatures. @1113
-# Today I began to read all previous issues of {\sl TUGboat}, in preparation for
- Appendix~D.
-* 27 Aug 1983
-I776. Add debugging hack number~16, to help catch subtle data structure bugs. @1339
-E777. Remove redundant setting and resetting of \\{name_in_progress}. @531
-S778\>618. Suppress |\input| during a font size spec; otherwise
- \\{cur_name} is clobbered (found by MDS). @1258
-G779. Introduce new conditionals |\ifhbox| and |\ifvbox|. @505
-* 29 Aug 1983
-D780\>750. Test for an empty list, if emptiness will mess up the data structure.
- (Found by Todd Allen.) @478
-E781\>624. Use \\{fast_store_new_token} in another place for efficiency. @466
-I782. Say `|has only|' instead of `|has|'. @579
-# These changes yield Version 0.99999, used only at Stanford.
-* 30 Aug 1983
-C783. Make funny blank spaces showable. @298
-* 31 Aug 1983
-C784\>754. Make |\newlinechar| affect \\{print_char}, not just \\{print}. @58
-* 4 Sep 1983
-G785. Add new features |\lastkern|, |\lastpenalty|, |\unkern|, |\unpenalty|.
- @424,996,1105
-# OK, Appendix D is finished!!
-# The above changes have been installed in Version 0.999999.
-* 17 Sep 1983
-P786\>548. Don't bother making duplicate font identifiers; that
- was overkill, not really needed. @1258
-# Will this be the historic last change to \TeX?
-* 18 Sep 1983
-I787. Correct a minor inconsistency, `|display|' not `|displayed|'. @211
-* 20 Sep 1983
-C788\>604. Treat the kerns inserted for accents as explicit kerns. @1125
-* 26 Sep 1983
-I789. Change `|log|' to `|transcript|' in several messages. @535,1335
-# The index was finished today; I mailed the entire {\sl \TeX book\/} to
- Massachusetts for final proofreading before publication.
-* 1 Oct 1983
-D790. Prevent uninitialized trie positions in case of overflow
- (found by Bernd Schulze). @944
-* 7 Oct 1983
-# Henceforth our weekly `\TeX\ lunch' meetings will be called `\MF\ lunch'.
-# DRF begins to produce {\sl The \TeX book\/} on our APS phototypesetter.
-* 14 Oct 1983
-P791\>633. Ignore spaces at the ends of lines also in |TEX.POOL| (found
- by DRF). @52
-D792\>610. Initialize the \\{history} variable at \\{start_here} (DRF). @1332
-* 18 Oct 1983
-I793. Extend \\{runaway} to catch runaway text (suggested by FY). @306
-D794. Reset \\{cur_cs} after \\{back_input}, not after scanning the
- `|=|' (found by FY). @1226
-* 24 Oct 1983
-I795\>638. Change the error recovery for bad delimiters, in accordance with
- the changed syntax. (Found by Barry Smith.) @1183
-* 9 Nov 1983
-E796. Optimize the code a bit more, based on empirical frequency data gathered
- during September and October: In \S45, use the fact that the
- result is almost always true. In \S380, delete `{\bf while}
- \\{true} {\bf do}' since many compilers implement that badly.
- Rewrite \S852 to avoid calling \\{badness} in the most common case.
- @45,380,852
-* 3 Dec 1983
-F797. Don't forget to call |error| after the message has been
- given (noticed by Gabi Kuper). @500
-# Version 1.0 released today incorporates all of the above.
-* 9 Dec 1983
-# Dinner party with 36 guests to celebrate \TeX's coming of age.
-* 2 Feb 1984
-S798\>786. Reinstall |\font| precautions that I thought were unnecessary.
- I overlooked many problematic possibilities, like
- `|{\font\a=x| |\global\a}| |\the\font|'
- and `|\font\a=x| |\font\b=x| |\let\b=\undefined| |\the\a|', etc.
- (Found by Mike Urban.) The new remedy involves removal of the
- \\{font_ident} array and putting the identifiers into a frozen
- part of the hash table; so there's a sprinkling of corrections
- in lots of modules. But basically the change is quite conservative,
- so it shouldn't spawn any new bugs (it says here). @222,267,1257
-* 9 Feb 1984
-S799. Remove the possibility of double interrupt, in a scenario
- found by Clint Cuzzo. @1031
-* 12 Feb 1984
-Q800. Improve spacing in a formula like |$(A,<)$|. @764
-* 13 Feb 1984
-A801. Avoid a bad {\bf goto}, as diagnosed by Clint Cuzzo and George O'Connor.
- (Must not go directly to \\{switch}.) @346
-E802. Conserve string pool space by not storing file name in two
- guises (suggested by DRF). @537
-* 26 Feb 1984
-I803. Make scaled output look cleaner by printing fewer decimals whenever
- this involves no loss of accuracy. (Suggested by \MF\ development.) @103
-* 2 Mar 1984
-R804. Maintain 17-digit accuracy, not 16; now
- constants like `|.00000762939453126pt|' will round correctly. @452
-* 16 Mar 1984
-R805. Plug a loophole that permitted recursion in \\{get_next}, by disallowing
- deletions in \\{check_outer_validity}. @336
-* 24 Mar 1984
-I806. Open the terminal before trying to wake it up, when the program starts bad.
- @1332
-* 27 Mar 1984
-R807. Check that $k<63$, to avoid the
- |\patterns{xxx...xxxdxxxdxxx}| anomaly found by Jacques D\'esarm\'enien. @962
-* 11 Apr 1984
-F808. Supply code for the missing case \\{adjust_node} in \\{copy_node_list}. @206
-# Yoicks, how could serious bugs like that have escaped detection?
-* 11 Jun 1984
-D809\>627. Initialize \\{char_base}, etc., for \\{null_font}.
- (Found by Nick Briggs.) @552
-R810. Clear the \\{buffer} array initially (Briggs). @331
-* 21 Jun 1984
-C811. Look ahead for ligature or kern after a |\chardef|'d item
- (D\'esarm\'enien). @1038
-* 4 Jul 1984
-R812. Make the quarterword constraint explicit with a
- new `\\{bad}' case (19). @111
-* 7 Jul 1984
-E813. Optimize \\{firm_up_the_line} slightly,
- to be consistent with the \MF\ program. @363
-* 8 Jul 1984
-I814. Give additional diagnostics when |\tracingmacros>1|. @323
-# The changes above were incorporated in Version 1.1, released July 9, 1984.
-* 27 Jul 1984
-I815. Say `|see| |the| |transcript| |file|' after handling offline |\show|
- commands. (Suggested by \MF.) @1298
-* 20 Oct 1984
-I816. Allow `|0|' in response to error prompts. @84
-# Those two changes led to Version 1.2.
-* 25 Nov 1984
-R817. Don't forget to check for \\{null} before looking at subfields
- of a node. (This was ``dirty Pascal,'' with two quarterword 0's
- read as a halfword.) @846
-R818. Ditto in another place! @939
-E819. Remove the fixed-at-compile-time
- partition between lower and upper memory. @116,125,162
-# This major change in memory management
- completes Version 1.3, which was published in preliminary
- looseleaf form as `\TeX: The Program'.
-* 20 Dec 1984
-R820. Keep the \\{node_size} field from overflowing if the lower part of memory
- is too large. @125
-# That was another bug in existence from the beginning!
-* 5 Jan 1985
-I821. Improve the missing-format-file error (DRF). @524
-* 7 Jan 1985
-I822. Update the terminal right away so that the welcoming message will
- appear as soon as possible (DRF). @61
-* 23 Jan 1985
-I823. Convey more uncertainty in the
- help message at times of \\{confusion}. @95
-I824\>610. Improve the \\{history} logic in the \\{warning_issued} case. @245
-* 18 Feb 1985
-P825\>810. Stick to standard Pascal: Don't
- use \\{first} in a {\bf for} loop. [Some procedures ``threaten'' it
- globally, according to British Standard 6192, section 6.8.3.9.]
- (Pointed out by CET.) @331
-* 11 Apr 1985
-S826. Prevent nonexistent characters from being output by
- unusual combinations of ligatures and hyphenation. @915
-* 15 Apr 1985
-L827\>819. Compute memory usage correctly in |INITEX|; the previous number
- was wrong because of a |WEB| text macro without parentheses (DRF). @164
-* 16 Apr 1985
-E828. Speed up \\{flush_list} by not calling \\{free_avail} (DRF). @123
-* 17 Apr 1985
-A829\>788. Introduce a special kind of kern for accent positioning;
- it must not disappear after a line break. @837,879,1125
-* 18 Apr 1985
-R830\>755. Prevent |\lastbox| and |\unkern| from removing discretionary replacements.
- @1081,1105
-# That completes Version 1.4.
-* 26 Apr 1985
-C831. Don't try \\{\TeX_area} if a nonstandard file area has been specified
- (DRF). @537
-# That was \#401 in \TeX78; I never learn!
-* 30 Apr 1985
-C832\>754. Eliminate the limitation on |\write| length; the reason for it
- has disappeared (Nancy Tuma). @1370
-* 8 May 1985
-D833\>819. Allocate two words for the head of the \\{active} list (CET). @162
-* 11 May 1985
-I834. Change \\{wterm} to \\{wterm_ln} after a bad beginning (Bill Gropp). @1332
-E835\>806. Don't open the terminal twice (CET). @1332
-* 22 May 1985
-R836. Test for \\{batch_mode} after trying to open the transcript file,
- not before (DRF). @92
-R837. Be prepared for string pool overflow while reading the command line!
- (This bug was first found in \MF, when it could occur more easily.) @525
-* 7 Aug 1985
-A838. Fix a bug in |\edef\foo{\iffalse\fi\the\toks0}|: \TeX\ should stay in the
- loop when expanding non-|\the|. (Found by Dan Brotsky.) @478
-# The above changes were incorporated in Version 1.5.
-* 27 Nov 1985
-C839\>764. Make `|plain|' a lowercase name, for consistency with the manual. @521
-I840\>669. Wake up the terminal for |\show| commands. @1294,1297
-# The above changes were incorporated in Version 2.0, which was published
- as Volume~B of the {\sl Computers \& Typesetting\/} series.
-* 15 Dec 1986
-I841. Punctuate the Poirot help message more carefully. @1283
-* 28 Jan 1987
-R842. Make sure that \\{max_in_open} doesn't exceed 127 (DRF). @14
-D843\>680. Don't allow a |\kern| to be clobbered at the end of a pre-break list
- when a discretionary break is taken. (A missing `{\bf else}' was the
- source of the error, diagnosed incorrectly before.) @881
-D844. Take account of discarded nodes when computing the background width
- after a discretionary. @840
-# That was the first really serious bug detected for more than 17 months! I found it
- while experimenting with right-to-left extensions.
-# Version 2.1 was released on January 26, 1987.
-* 5 Feb 1987
-E845. Remove cases in \\{shorthand_def} that cannot occur (found by Pat Monardo). @1224
-* 14 Apr 1987
-R846. Improve robustness of data structure display
- when debugging (Ronaldo Am\'a). @174,182
-* 21 Apr 1987
-E847. Make the storage allocation algorithm more elegant and efficient. @127
-* 22 Apr 1987
-A848\>742. Calculate the empty-line condition properly when \\{end_line_char} is
- absent. @360
-# The previous three changes were found while I was teaching a class based
- on Volume~B; they led to Version 2.2.
-* 28 Apr 1987
-E849. Avoid closing a file when \TeX\ knows that it isn't open (JS). @560
-* 3 Aug 1987
-S850. Clean up unfinished output if it's necessary to
- \\{jump_out} (Klaus Guntermann). @642
-# That makes Version 2.3; subsequent version numbers won't be logged here.
-* 19 Aug 1987
-A851. Indent rules properly in cases like\hfil\break
- |\hangindent=1pt$$\halign{...\cr\noalign{\hrule}}$$|. @806
-* 20 Aug 1987
-S852. Introduce \\{co_backup} because of cases like
- |\hskip 0pt plus 1fil\ifdim| (Alan Guth). @366
-* 9 Nov 1987
-S853. Change the calculation for number of leader boxes, so that
- it won't be too sensitive to roundoff error near exact multiples
- (M. F. Bridgland). @626
-* 17 Nov 1987
-A854. Replace my stupid algorithm
- for fixed-point multiplication of negatives (WGS). @572
-* 12 Dec 1987
-B855. Fix a typo in the initialization of hyphenation tables (PB). @952
-# That error was almost completely harmless, thus undetectable,
- except if some |\lccode| is~1 and no |\patterns| are given.
-* 23 Dec 1987
-S856\>564. Be more cautious when ``relaxing'' a previously undefined |\csname|;
- you might be inside a group (CET). @372
-* 20 Apr 1988
-S857. Make sure \\{temp_head} is well-formed whenever it can be
- printed in a ``runaway'' message: Consider constructions like
- |\outer\def\a0{}\a\a| (Silvio Levy). @391
-* 24 Apr 1988
-S858\>618. Avoid conflicting use of the string pool in constructions like
- |\def\\#1{}\input a\\\z| (Robert Messer). @260
-* 10 May 1988
-R859. Amend the |\patterns| data structure when $\\{trie_min}=0$
- (PB). @951,953
-* 25 May 1988
-R860. Guarantee that \\{trie_pointer} cannot be out of range. @923
-S861\>618. Avoid additional bugs like \#858 in constructions
- like |\input a\romannumeral1|, etc. @464,465,470
-R862\>618. Prevent similar string pool confusion that could occur
- during the processing of |**\input\romannumeral6|. @525
-* 19 Jun 1988
-S863\>819. Prevent a negative dividend from rounding upward,
- causing a loop (CET). @126
-E864\>819. Adopt a smoother allocation strategy when
- memory is nearly gone (CET). @126
-* 20 Jun 1988
-D865\>852. Initialize \\{cur_order}, now that it's being backed up
- (Tsunetoshi Hayashi). @439
-* 6 Nov 1988
-S866\>612. Disable \\{fatal_error} in \\{prompt_input}, so that
- \\{open_log_file} can use it safely (Tim Morgan). @71
-S867\>836. Force terminal output whenever \\{open_log_file} fails. @535
-* 14 Dec 1988
-P868\>866. Restore \\{fatal_error} in \\{prompt_input}, but don't
- let it be unsafe for \\{open_log_file}. @92,534
-* 23 Jan 1989
-D869. Give $q$ a legal value when recovering from ``infinite shrinkage''
- error. @976,1004
-* 17 Feb 1989
-D870\>758. Avoid spurious error message for |\aftergroup\relax\dump| by avoiding
- inaccessible |\aftergroup| tokens (FM and Rainer Sch\"opf). @280
-* 20 Mar 1989
-R871. Don't refer to \\{link}(\\{null}) even when it ``can't happen''
- (PB). @791
-* 7 Jun 1989
-S872. Avoid confusion from |$$\begingroup\halign{#\cr}$$| (FM). @1130
-* 20 Jun 1989
-S873. Put fraction digits into dynamic memory, not the global \\{dig} array,
- because of constructions like |.5\ifdim.6| (FM). @452
-* 17 Jul 1989
-S874. Prevent embarrassing attempts to report errors before the string
- mechanism has been fully initialized, for example when the
- command line exceeds the buffer size (WGS). @31
-* 16 Aug 1989
-M875. Allow integer products to be 31 bits long (FM). @105
-* 31 Aug 1989
-C876\>441. Increase the number of tokens shown by \\{token_show}
- (J. Lavagnino). @295
-S877. Avoid confusion from |$$\begingroup\eqno$$| (FM). @1140
-# The recent TUG meeting turned out to be an extend-\TeX-for-the-nineties
- party! I agreed that some extensions for non-English languages
- ought to be made while I still knew how to do them. (In other words,
- I broke my firm commitment to keeping \TeX\ completely stable;
- but in this case nobody objected.) The following eleven changes
- were coded during the month of September.
-* 30 Sep 1989
-G878. Install major change allowing general 8-bit code input. @38,352
-G879. Install major change allowing multiple hyphenation tables
- (M. Ferguson). @923
-G880. Introduce new parameters |\lefthyphenmin| and |\righthyphenmin|. @923
-G881. Introduce major new ligature capabilities including implicit
- boundary characters. @908,1037
-G882. Install new |\inputlineno| feature suggested by MDS. @424
-G883. Install new |\holdinginserts| feature suggested by FM. @1014
-G884. Install new |\badness| feature. @424,664
-G885. Install new |\emergencystretch| feature. @863
-G886. Install new |\errorcontextlines| feature suggested by FM. @311
-S887. Recover from anomaly when hyphenation |char_warning| clobbers
- |old_setting|. @863
-P888. Make it easier to change the format extension (Don Hosek). @520,1328
-* 16 Oct 1989
-R889. Avoid range check in null font with |bc=256| (PB). @565
-* 22 Nov 1989
-S890\>856. Prevent \\{save_stack} conflicts in
- |{\hbox\expandafter{\csname\endcsname}}| and\kern-3pt\break
- similar constructions (WGS). @645,1117
-S891\>858. System-dependent parts of file names must be addressed relatively,
- not absolutely (FM and Rainer Sch\"opf). @516,517
-* 3 Dec 1989
-G892\>880. Allow different hyphenmins in the same paragraph (M. Ferguson). @1376
-S893. Distinguish |\par| from characters on |\if| tests. (MVL). @334
-S894\>378. Alignments need to be more robust against malicious
- attacks (MVL). @782
-C895. Don't let kerns in discretionaries disappear at breaks (MVL). @869
-Q896\>881. Make the new hyphenation reconstruction procedure less cautious,
- so that it doesn't lose hyphens found by the old method. @914
-* 11 Dec 1989
-D897\>879. Make an undumped trie dumpable again (PB). @1325
-* 18 Dec 1989
-G898\>588. Allow access to page totals in |\output| routines
- (FM and Chris Rowley). @421
-* 22 Jan 1990
-R899\>611. Recognize more cases of unbalanced |\output| (CET). @1026
-* 29 Jan 1990
-S900\>758. Make |\aftergroup| work properly after |\eqno| (Michael Downes).
- @1194
-* 1 Feb 1990
-S901\>878. Fix one more case of \\{end_line_char_inactive} (WGS). @360
-* 22 Feb 1990
-R902. Don't lose the last active node when total demerits are very high (FM).
- @836,854
-* 13 Mar 1990
-D903. Doublecheck math fonts after making equation number (MVL). @1194
-D904. Don't forget to rule out charnodes before testing \\{type} (MVL).
- @805,1202
-* 23 Mar 1990
-F905\>881. Don't change the font of punctuation preceding a hyphenated word
- (Scott C. Allendorf). @903
-I906. Balance the parentheses shown on the terminal during normal runs. @1335
-E907. Optimize |\ifx\p\q| after |\let\p=\q| (MVL). @508
-S908. Treat migration properly in displays (MVL). @1199,1205
-# We're now up to Version 3.0; I sincerely hope all bugs have been found.
-* 11 May 1990
-F909\>881. Initialize |\nullfont| ligature parameters (Lance Carnes). @552
-* 22 July 1990
-S910\>579. Treat |\prevgraf| as zero within |\write| (Bogus\l aw Jackowski).
- @422
-* 26 July 1990
-S911. Report `|l.1|' when first line of file overflows buffer
- (George Russell). @538
-* 5 December 1990
-S912\>878. Translate unprintable characters in font identifiers (WGS). @63
-* 28 December 1990
-R913. Avoid range check when there are 65536 or more pages (Eberhard Mattes).
- @642
-* 20 September 1991
-I914\>878. Improve error message for |\mathchar| out of range. @436
-S915\>878. Retain unprintable internal strings in 8-bit form (FM). @59
-S916\>881. Retain right punctuation context for ligature reconstruction
- (problem found by Brian Hamilton Kelly). @903
-* 10 January 1992
-S917\>881. Also avoid producing a double kern at boundary (CET). @897
-S918. Disallow |\setbox| where it doesn't work (Robert Hunt). @1241,1270
-S919. Robustify |\mskip| and |\mkern| in presence of negative quad (WGS).
- @716,717
-S920\>679. Defend against `|}{|' in |\read| (Michael Downes). @483
-E921\>798. Save string memory if font occurs repeatedly (Bogus\l aw Jackowski).
- @1260
-S922\>784. Don't let |\newlinechar| interrupt unprintable expansion (Bernd
- Raichle). @59,60
-* 7 February 1992
-D923\>881. Restore |cur_l| properly when boundary character doesn't exist
- (Mattes and Raichle). @1036
-* 17 July 1992
-C924\>892. Use current language at beginning of horizontal mode (Rainer
- Sch\"opf and CET). @1091,1200
-* 17 December 1992
-R925\>879. Avoid (harmless) range errors (Philip Taylor and CET). @934,960
-* 25 February 1993
-C926\>881. Protect kerns inserted by boundary characters (William Baxter).
- @837,866
-S927\>917. Don't let boundary kern disappear after hyphenation. @897
-* 26 June 1993
-R928\>668. Avoid potential future bug (Peter Breitenlohner). @628,637
-* 17 December 1993
-S929\>881. Boundary character representation shouldn't depend on the font
- memory size (Berthold Horn). @549,1323
-* 10 March 1994
-R930. Huge font parameter number may exceed array bound (CET). @549
-* 4 September 1994
-F931\>926. Math kerns are explicit (Walter Carlip). @717
-R932. Avoid overflow on huge real-to-integer conversion. @625,634
-* 19 March 1995
-R933. Avoid spurious reference counts in format files (PB). @1335
-* 23 November 1998
-R934. Make sure that \TeX\ is certifiably Y2K-safe. @1328
-* 12 July 1999
-A935\>255. |\xleaders| often drops the final box (Hiroshi Nakashima). @627,636
-* 30 August 2001
-R936. Don't allow a million unbalanced braces followed by |\cr|
- outside of any alignment (Ralf Roth). @789
-R937. Don't allow end-template except at end of template (Roth). @325,1131
-* 30 September 2002
-Q938. Improve rounding of glue during output (M. F. Bridgland). @625,634
-* 18 March 2008
-F939. Forgot to goto the proper error recovery (DRF). @395
-E940. Avoid a case of dirty Pascal and speed up inner loop. @1035
-R941. Forget reference to \\{last_glue} in format file (DRF). @1335
-R942. Glue reference not updated after overflow error (DRF). @1236
-B943. Muglue in |\leaders| had wrong units; now disallowed (DRF). @1078
-E944. Speedup of ligatures and kerns at end of a word (DRF). @1039
-R945. Another sanity check of TFM files for security (DRF). @565
-I946. Give better size data for unmagnified insertions. @986
-* 6 January 2014
-C947. Space after |\csname\endcsname| to match other spaces. (Oleg Bulatov) @262
-* 15 January 2021
-I948. Don't pause on errors when tracing paragraphs (Udo Wermuth). @826
-S949. Don't try to interact when in |\batchmode| (Xiaosa Zhang). @83
-S950. Don't try to edit when no file is active (Xiaosa Zhang). @84
-R951. Take date and time sometimes from system, not user (Udo Wermuth). @241,536
-B952. Don't allow implicit left brace after |#| (Udo Wermuth). @476
-R953. After nine parameters, must delete offending tokens (Bruno Le Floch). @476
-D954. Garbage visible in buffer after file ends prematurely (DRF). @486
-R955. Force nonexistent characters to have null specs (DRF). @722
-C956. Don't mark fraction noads as temporarily Inner (DRF). @761
-Q957. Reset |\newlinechar| before logging the stats (Udo Wermuth). @1333,1335
-\relax
-\bye
-
-Up to a point it is better to let the snags [bugs] be there
-than to spend such time in design that there are none
-(how many decades would this course take?).
--- A M Turing
- Proposals for Development in the Mathematics Division
- of an Automatic Computing Engine (ACE)
- Report E882, Executive Committee, National Physical Laboratory (NPL)
- 1945; reprinted in April 1972 as NPL report Com Sci 57
- page 18
- quoted by Carpenter and Doran in The Computer Journal 20 (1977), 273.
-
-DRF David Fuchs
-HWT Howard Trickey
-FY Frank Yellin
-LL Leslie Lamport
-JS Jim Sterken
-ARK Arthur Keller
-CET Chris Thompson
-FM Frank Mittelbach (added subsequent to publication of paper)
-PB Peter Breitenlohner (ditto)
-WGS Wayne G. Sullivan (ditto)
-MVL Marc van Leeuwen (ditto)
-MDS Michael D. Spivak (ditto)
diff --git a/Master/texmf-dist/source/generic/knuth/errata/logmac.tex b/Master/texmf-dist/source/generic/knuth/errata/logmac.tex
deleted file mode 100644
index 8719efc497d..00000000000
--- a/Master/texmf-dist/source/generic/knuth/errata/logmac.tex
+++ /dev/null
@@ -1,107 +0,0 @@
-% macros for the appendix to "Errors of TeX" paper
-\input manmac
-\voffset=-.3in
-\catcode`\^=7 % disable the indexing stuff
-\font\sltt=cmsltt9
-\font\logosl=logosl9
-\ninepoint
-\vsize=48pc \pageheight=\vsize
-\hsize=33.5pc
-
-\def\\{\bgroup\catcode`_=\active\identifier}
-{\catcode`_=\active \global\let_=\_}
-\def\identifier#1{\hbox{\it#1\/\kern.05em}\egroup} % italic type for identifiers
-
-\newdimen\codesize \setbox0=\hbox{\enspace M} \codesize=\wd0
-\setbox0=\hbox{\thinspace\S1111\kern\codesize} \rightskip=\wd0
-\newdimen\itemnosize \setbox0=\hbox{\bf999} \itemnosize=\wd0
-\setbox0=\hbox{$999\mapsto{}$\kern\itemnosize\enspace} \parindent=\wd0
-\newdimen\datemar \setbox0=\hbox{\bf 15 Mar 1977}
-\datemar=\hsize \advance\datemar-\wd0 \divide\datemar2
-\newdimen\hangamount \hangamount=\parindent \advance\hangamount 1em
-\everypar{\global\hangindent=\hangamount}
-\parfillskip=-\rightskip
-\finalhyphendemerits=0
-\interlinepenalty=100
-\smallskipamount=3pt plus 2pt
-\def\smallbreak{\fin\penalty-50\smallskip}
-
-\newbox\predec % for predecessor "mapsto" info
-\newbox\code % for the code letter
-\newbox\texsec % for TeX section numbers
-\newbox\cbox % the symbol used on commentlines
-\newbox\dbox % empty box used after datelines
-\setbox\dbox=\hbox to\datemar{}
-\setbox\cbox=\hbox to\itemnosize{\hfil$\bullet$}
-
-\newif\ifnothing \newif\ifnobreak
-\def\fin{\ifnothing\nothingfalse\else\endgroup
- \unskip\nobreak\hfil\penalty500\enspace\null\nobreak\hfil\box\texsec
- \box\code\endgraf\ifnobreak\nobreakfalse\nobreak\fi\fi}
-
-\catcode`\ =12 % tabs are ordinary characters
-\catcode`@=\active % @ signs denote a TeX section reference
-{\obeylines \gdef@#1
- {\global\setbox\texsec=\hbox{\S$#1$}\lookahead}}
-\chardef\@=`\@
-{\catcode`X=\active \gdef X{\X}}
-\def\X{{\eightbf X}}
-\def\lightX{\hbox{\eightrm X}}
-\def\>#1\relax{\global\setbox\predec=\hbox{\let\X=\lightX
- $#1\mapsto{}$}} % previous bug ref
-
-\def\checkvalid#1{\expandafter\ifx\csname#1!\endcsname\okay\else\invalidcode\fi}
-\def\okay{\okay}
-\def\makevalid#1{\expandafter\let\csname#1!\endcsname=\okay}
-\makevalid A % algorithm
-\makevalid B % blunder
-\makevalid C % cleanup
-\makevalid D % data structure
-\makevalid E % efficiency
-\makevalid F % forgotten case
-\makevalid G % generalization
-\makevalid I % interaction
-\makevalid L % language
-\makevalid M % mismatch
-\makevalid P % program organization
-\makevalid Q % quality
-\makevalid R % robustness
-\makevalid S % surprise
-\makevalid T % typo
-
-\def\lookahead{\futurelet\next\looky} % we'll do this at end of every line
-\def\looky{\if\next \let\cont\continuationline % tab mark
- \else\if\next*\let\cont\dateline % asterisk
- \else\if\next##\let\cont\commentline % sharp sign
- \else\if\next\relax\let\cont\endit % \relax (gets us out)
- \else\let\cont\dataline\fi\fi\fi\fi\cont} % otherwise should be a code letter
-\def\continuationline { } % insert space if a tab mark starts the next line
-\def\dateline* {\smallbreak\begingroup\bf\hfill\nobreaktrue
- \global\setbox\code=\copy\dbox}
-\def\dataline#1{\fin\checkvalid#1%
- \global\setbox\code=\hbox to\codesize{\enspace
- \hskip0pt plus 3fil\rm#1\hskip0pt plus1fil}%
- \begingroup\rm\catcode`X=\active\itemnumber}
-\def\itemnumber#1.{\catcode`X=11\setbox0=\hbox to\itemnosize{\bf\hss#1\relax}%
- \setbox2=\hbox{\bf#1\relax}\ifdim\wd2>\wd0 \setbox0=\box2 \fi
- \textindent{\hfil\box\predec\box0}}
-\def\commentline{\fin\afterassignment\begincomment\let\next}
-\def\begincomment{\begingroup\let\tt=\sltt
- \let\MF=\slMF\sl\textindent{\hfil\copy\cbox}}
-
-\def\leftheadline{\hbox to \hsize{%
- \vbox to 10pt{}% strut to position the baseline
- {\tenrm\folio\kern1pc}% folio to left of text
- \hfil\eightrm D. \ E. \ KNUTH\hfil% running head
- }}
-\def\rightheadline{\hbox to \hsize{%
- \vbox to 10pt{}% strut to position the baseline
- \hfil\eightrm THE \ ERRORS \ OF \ \TeX\hfil% running head
- {\kern1pc\tenrm\folio}% folio to right of text
- }}
-
-\def\O#1{\hbox{\rm\char'23\kern-.2em\it#1\/\kern.05em}} % octal constant
-\def\slMF{{\logosl META}\-{\logosl FONT}}
-
-\def\endit{\fin\catcode`\^^M=5\let\par=\endgraf}
-\let\par=\lookahead \obeylines \nothingtrue
diff --git a/Master/texmf-dist/source/generic/knuth/tex/glue.web b/Master/texmf-dist/source/generic/knuth/tex/glue.web
deleted file mode 100644
index add1903b506..00000000000
--- a/Master/texmf-dist/source/generic/knuth/tex/glue.web
+++ /dev/null
@@ -1,421 +0,0 @@
-% This program by D. E. Knuth is not copyrighted and can be used freely.
-% It was written on 18 Dec 1981 and revised on 24 May 1991.
-
-% Here is TeX material that gets inserted after \input webmac
-\def\PASCAL{Pascal}
-\font\eightrm=cmr8
-
-\def\title{GLUE}
-\def\topofcontents{\null
- \titlefalse % include headline on the contents page
- \def\rheader{\mainfont\hfil \contentspagenumber}
- \vfill
- \centerline{\titlefont Fixed-Point Glue Setting}
- \vfill}
-\def\botofcontents{\vfill
- \centerline{\hsize 6in\baselineskip9pt
- \vbox{\eightrm\baselineskip9pt\noindent
- The preparation of this report
- was supported in part by the National Science
- Foundation under grants IST-7921977 and MCS-7723728;
- by Office of Naval Research grant N00014-81-K-0330;
- and by the IBM Corporation. `\TeX' is a
- trademark of the American Mathematical Society.}}}
-
-@* Introduction.
-If \TeX\ is being implemented on a microcomputer that does 32-bit
-addition and subtraction, but with multiplication and division restricted to
-multipliers and divisors that are either powers of~2 or positive
-integers less than~$2^{15}$, it can still do the computations associated
-with the setting of glue in a suitable way. This program illustrates one
-solution to the problem.
-
-Another purpose of this program is to provide the first ``short'' example
-of the use of \.{WEB}.
-
-@ The program itself is written in standard \PASCAL. It begins with a
-normal program header, most of which will be filled in with other parts of this
-``web'' as we are ready to introduce them.
-@^program header@>
-
-@p program GLUE(@!input,@!output);
- type @<Types in the outer block@>@;
- var @<Globals in the outer block@>@;
- procedure initialize; {this procedure gets things started}
- var @<Local variables for initialization@>@;
- begin @<Set initial values@>;
- end;
-
-@ Here are two macros for common programming idioms.
-
-@d incr(#) == #:=#+1 {increase a variable by unity}
-@d decr(#) == #:=#-1 {decrease a variable by unity}
-
-@* The problem and a solution.
-We are concerned here with the ``setting of glue'' that occurs when a
-\TeX\ box is being packaged. Let $x_1$, \dots,~$x_n$ be integers whose sum
-$s=x_1+\cdots+x_n$ is positive, and let $t$ be another positive integer.
-These $x_i$ represent scaled amounts of glue in units of sp (scaled
-points), where one sp is $2^{-16}$ of a printer's point. The other
-quantity $t$ represents the total by which the glue should stretch or
-shrink. Following the conventions of \TeX82, we will assume that the
-integers we deal with are less than $2^{31}$ in absolute value.
-
-After the glue has been set, the actual amounts of incremental glue space
-(in~sp) will be the integers $f(x_1)$, \dots,~$f(x_n)$, where $f$ is a
-function that we wish to compute. We want $f(x)$ to be nearly proportional
-to~$x$, and we also want the sum $f(x_1)+\cdots+f(x_n)$ to be nearly
-equal to~$t$. If we were using floating-point arithmetic, we would simply
-compute $f(x)\equiv(t/s)\cdot x$ and hope for the best; but the goal here
-is to compute a suitable~$f$ using only the fixed-point arithmetic operations
-of a typical ``16-bit microcomputer.''
-
-The solution adopted here is to determine integers $a$, $b$, $c$ such that
-$$f(x)=\bigl\lfloor 2^{-b}c\lfloor 2^{-a}x\rfloor\bigr\rfloor$$
-if $x$ is nonnegative. Thus, we take $x$ and shift it right by $a$~bits,
-then multiply by~$c$ (which is $2^{15}$ or less), and shift the product
-right by $b$~bits. The quantities $a$, $b$, and~$c$ are to be chosen
-so that this calculation doesn't cause overflow and so that $f(x_1)+\cdots
-+f(x_n)$ is reasonably close to~$t$.
-
-The following method is used to calculate $a$ and~$b$:
-Suppose $$y=\max_{1\le i\le n}\vert x_i\vert\,.$$
-Let $d$ and $e$ be the smallest integers such that $t<2^ds$ and $y<2^e$.
-Since $s$ and~$t$ are less than~$2^{31}$, we have $-30\le d\le31$ and
-$1\le e\le31$. An error message is given if $d+e\ge31$; in such a case
-some $x_m$ has $\vert x_m\vert\ge 2^{e-1}$ and we are trying to change
-$\vert x_m\vert$ to $\vert(t/s)x_m\vert\ge2^{d+e-2}\ge2^{30}$~sp, which
-\TeX\ does not permit. (Consider, for example, the ``worst case'' situation
-$x_1=2^{30}+1$, $x_2=-2^{30}$, $t=2^{31}-1$; surely we need not bother
-trying to accommodate such anomalous combinations of values.) On the other
-hand if $d+e\le31$, we set $a=e-16$ and $b=31-d-e$. Notice that this choice
-of~$a$ guarantees that $\lfloor2^{-a}\vert x_i\vert\rfloor<2^{16}$. We will
-choose~$c$ to be at most~$2^{15}$, so that the product will be less
-than~$2^{31}$.
-
-The computation of $c$ is the tricky part.
-@^hairy mathematics@>
-The ``ideal'' value for $c$ would be $\rho=2^{a+b}t/s$, since $f(x)$ should
-be approximately $(t/s)\cdot x$. Furthermore it is better to have $c$ slightly
-larger than~$\rho$, instead of slightly smaller, since the other operations
-in $f(x)$ have a downward bias. Therefore we shall compute $c=\lceil\rho\rceil$.
-Since $2^{a+b}t/s<2^{a+b+d}=2^{15}$, we have $c\le2^{15}$ as desired.
-
-We want to compute $c=\lceil\rho\rceil$ exactly in all cases. There is no
-difficulty if $s<2^{15}$, since $c$ can be computed directly using the
-formula $c=\bigl\lfloor(2^{a+b}t+s-1)/s\bigr\rfloor$; overflow will not
-occur since $2^{a+b}t<2^{15}s<2^{30}$.
-
-Otherwise let $s=s_12^l+s_2$, where $2^{14}\le s_1<2^{15}$ and $0\le s_2<2^l$.
-We will essentially carry out a long division. Let $t$ be ``normalized''
-so that $2^{30}\le2^ht<2^{31}$ for some~$h$. Then we form the quotient and
-remainder of $2^ht$ divided by~$s_1$,
-$$ 2^ht=qs_1+r_0, \qquad 0\le r_0<s_1.$$
-It follows that $2^{h+l}t-qs=2^lr_0-qs_2=r$, say. If $0\ge r>-s$ we have
-$q=\lceil2^{h+l}t/s\rceil$; otherwise we can replace $(q,r)$ by
-$(q\pm1,r\mp s)$ repeatedly until $r$ is in the correct range. It is not
-difficult to prove that $q$ needs to be increased at most once and decreased
-at most seven times, since $2^lr_0-qs_2<2^ls_1\le s$ and since
-$qs_2/s\le(2^ht/s_1)(s_2/2^ls_1)<2^{31}/s_1^2\le8$. Finally, we have
-$a+b-h-l=-1$ or~$-2$, since $2^{28+l}\le2^{14}s=2^{a+b+d-1}s\le2^{a+b}t<
-2^{a+b+d}s=2^{15}s<2^{30+l}$ and $2^{30}\le2^ht<2^{31}$. Hence
-$c=\lceil2^{a+b-h-l}q\rceil=\lceil{1\over2}q\rceil$ or~$\lceil{1\over4}q\rceil$.
-
-An error analysis shows that these values of $a$, $b$, and $c$ work
-satisfactorily, except in unusual cases where we wouldn't expect them to.
-@^error analysis@>
-When $x\ge0$ we have
-$$\eqalign{f(x)&=2^{-b}(2^{a+b}t/s+\theta_0)(2^{-a}x-\theta_1)-\theta_2\cr
-&=(t/s)x+\theta_02^{-a-b}x-\theta_12^at/s-2^{-b}\theta_0\theta_1-\theta_2\cr}$$
-where $0\le\theta_0,\theta_1,\theta_2<1$. Now $0\le\theta_02^{-a-b}x
-<2^{e-a-b}=2^{d+e-15}$ and $0\le\theta_12^at/s<2^{a+d}=2^{d+e-16}$, and
-the other two terms are negligible. Therefore $f(x_1)+\cdots+f(x_n)$ differs
-from~$t$ by at most about $2^{d+e-15}n$. Since $2^{d+e}$ is larger than
-$(t/s)y$, which is the largest stretching or shrinking of glue after expansion,
-the error is at worst about $n/32000$ times as much as this, so it is quite
-reasonable. For example, even if fill glue is being used to stretch
-20 inches, the error will still be less than $1\over1600$ of an inch.
-
-@ To sum up: Given the positive integers $s$, $t$, and $y$ as above, we
-set $$a\gets\lfloor\lg y\rfloor-15,\qquad b\gets29-\lfloor\lg y\rfloor-
-\lfloor\lg t/s\rfloor,\qquad\hbox{and}\qquad c\gets\lceil2^{a+b}t/s\rceil.$$
-The implementation below shows how to do the job in \PASCAL\ without using
-large numbers.
-
-@ \TeX\ wants to have the glue-setting information in a 32-bit data type
-called |glue_ratio|. The \PASCAL\ implementation of \TeX82 has |glue_ratio
-=real|, but alternative definitions of |glue_ratio| are explicitly allowed.
-
-For our purposes we shall let |glue_ratio| be a record that is packed with
-three fields: The |a_part| will hold the positive integer |a+16|, the
-|b_part| will hold the nonnegative integer~|b|, and the |c_part| will hold
-the nonnegative integer~|c|. When the formulas above tell us to take
-|b>30|, we might as well set |c:=0| instead, because |f(x)| will be
-zero in all cases when |b>30|. Note that we have only about 25 bits of
-information in all, so it should fit in 32 bits with ease.
-
-@<Types...@>=
-@!glue_ratio=packed record
- @!a_part: 1..31; {the quantity |e=a+16| in our derivation}
- @!b_part: 0..30; {the quantity |b| in our derivation}
- @!c_part: 0..@'100000; {the quantity |c| in our derivation}
- end;
-@!scaled = integer; {this data type is used for quantities in sp units}
-
-@ The real problem is to define the procedures that \TeX\ needs to
-deal with such |glue_ratio| values:
-(a)~Given scaled numbers |s|, |t|, and~|y| as above, to compute the
-corresponding |glue_ratio|.
-(b)~Given a nonnegative scaled number~|x| and a |glue_ratio|~|g|, to
-compute the scaled number~|f(x)|.
-(c)~Given a |glue_ratio|~|g|, to print out a decimal equivalent of
-|g| for diagnostic purposes.
-
-The procedures below can be incorporated into \TeX82 via a change file
-without great difficulty. A few modifications will be needed, because
-\TeX's |glue_ratio| values can be negative in unusual cases---when the
-amount of stretchability or shrinkability is less than zero. Negative
-values in the |c_part| will handle such problems, if proper care is
-taken. The error message below should either become a warning message
-or a call to \TeX's |print_err| routine; in the latter case, an
-@^error message@>
-appropriate help message should be given, stating that glue cannot
-stretch to more than 18~feet long, but that it's OK to proceed with
-fingers crossed.
-
-@*Glue multiplication.
-The easiest procedure of the three just mentioned is the one that is
-needed most often, namely, the computation of~|f(x)|.
-
-\PASCAL\ doesn't have built-in binary shift commands or built-in exponentiation,
-although many computers do have this capability. Therefore our arithmetic
-routines use an array called `|two_to_the|', containing powers of~two.
-Divisions by powers of two are never done in the programs below when the
-dividend is negative, so the operations can safely be replaced by right
-shifts on machines for which this is most appropriate. (Contrary to popular
-opinion, the operation `|x div 2|' is not the same as shifting |x|
-right one binary place, on a machine with two's complement arithmetic,
-when |x| is a negative odd integer. But division
-{\it is\/} equivalent to shifting when |x| is nonnegative.)
-
-@<Globals...@>=
-@!two_to_the: array[0..30] of integer; {$|two_to_the|[k]=2^k$}
-
-@ @<Local variables for init...@>=
-@!k:1..30; {an index for initializing |two_to_the|}
-
-@ @<Set init...@>=
-two_to_the[0]:=1;
-for k:=1 to 30 do two_to_the[k]:=two_to_the[k-1]+two_to_the[k-1];
-
-@ We will use the abbreviations |ga|, |gb|, and |gc| as convenient
-alternatives to \PASCAL's \&{with} statement. The glue-multiplication
-function |f|, which replaces several occurrences of the `|float|' macro
-in \TeX82, is now easy to state:
-
-@d ga==g.a_part
-@d gb==g.b_part
-@d gc==g.c_part
-
-@p function glue_mult(@!x:scaled;@!g:glue_ratio):integer;
- {returns |f(x)| as above, assuming that |x>=0|}
-begin if ga>16 then x:=x div two_to_the[ga-16] {right shift by |a| places}
-else x:=x*two_to_the[16-ga]; {left shift by |-a| places}
-glue_mult:=(x*gc) div two_to_the[gb]; {right shift by |b| places}
-end; {note that |b| may be as large as 30}
-
-@*Glue setting.
-The |glue_fix| procedure computes |a|, |b|, and |c| by the method
-explained above. \TeX\ does not normally compute the quantity~|y|, but
-it could be made to do so without great difficulty.
-
-This procedure replaces several occurrences of the `|unfloat|' macro in
-\TeX82. It would be written as a function that returns a |glue_ratio|,
-if \PASCAL\ would allow functions to produce records as values.
-
-@p procedure glue_fix(@!s,@!t,@!y:scaled; var@!g:glue_ratio);
-var @!a,@!b,@!c:integer; {components of the desired ratio}
-@!k,@!h:integer; {$30-\lfloor\lg s\rfloor$, $30-\lfloor\lg t\rfloor$}
-@!s0:integer; {original (unnormalized) value of |s|}
-@!q,@!r,@!s1:integer; {quotient, remainder, divisor}
-@!w:integer; {$2^l$, where $l=16-k$}
-begin @<Normalize |s|, |t|, and |y|, computing |a|, |k|, and |h|@>;
-if t<s then b:=15-a-k+h@+else b:=14-a-k+h;
-if (b<0) or (b>30) then
- begin if b<0 then write_ln('! Excessive glue.'); {error message}
-@^error message@>
- b:=0; c:=0; {make |f(x)| identically zero}
- end
-else begin if k>=16 then {easy case, $s_0<2^{15}$}
- c:=(t div two_to_the[h-a-b]+s0-1) div s0 {here |1<=h-a-b<=k-14<=16|}
- else @<Compute |c| by long division@>;
- end;
-ga:=a+16; gb:=b; gc:=c;
-end;
-
-@ @<Normalize |s|, |t|, and |y|, computing |a|, |k|, and |h|@>=
-begin a:=15; k:=0; h:=0; s0:=s;
-while y<@'10000000000 do {|y| is known to be positive}
- begin decr(a); y:=y+y;
- end;
-while s<@'10000000000 do {|s| is known to be positive}
- begin incr(k); s:=s+s;
- end;
-while t<@'10000000000 do {|t| is known to be positive}
- begin incr(h); t:=t+t;
- end;
-end {now $2^{30}\le t=2^ht_0<2^{31}$ and $2^{30}\le s=2^ks_0<2^{31}$,
- hence $d=k-h$ if $t/s<1$}
-
-@ @<Compute |c| by long division@>=
-begin w:=two_to_the[16-k];
-s1:=s0 div w;
-q:=t div s1;
-r:=((t mod s1)*w)-((s0 mod w)*q);
-if r>0 then
- begin incr(q); r:=r-s0;
- end
-else while r<=-s0 do
- begin decr(q); r:=r+s0;
- end;
-if a+b+k-h=15 then c:=(q+1) div 2 @+else c:=(q+3) div 4;
-end
-
-@*Glue-set printing.
-The last of the three procedures we need is |print_gr|, which displays a
-|glue_ratio| in symbolic decimal form. Before constructing such a procedure,
-we shall consider some simpler routines, copying them from an early
-draft of the program \TeX82.
-
-@d unity==@'200000 {$2^{16}$, represents 1.0000}
-
-@<Glob...@>=
-@!dig:array[0..15] of 0..9; {for storing digits}
-
-@ An array of digits is printed out by |print_digs|.
-
-@p procedure print_digs(@!k:integer); {prints |dig[k-1]| \dots |dig[0]|}
-begin while k>0 do
- begin decr(k); write(chr(ord('0')+dig[k]));
- end;
-end;
-
-@ A nonnegative integer is printed out by |print_int|.
-
-@p procedure print_int(@!n:integer); {prints an integer in decimal form}
-var @!k:0..12; {index to current digit; we assume that $0\le n<10^{12}$}
-begin k:=0;
-repeat dig[k]:=n mod 10; n:=n div 10; incr(k);
-until n=0;
-print_digs(k);
-end;
-
-@ And here is a procedure to print a nonnegative |scaled| number.
-
-@p procedure print_scaled(s:scaled);
- {prints a scaled real, truncated to four digits}
-var k:0..3; {index to current digit of the fraction part}
-begin print_int(s div unity); {print the integer part}
-s:=((s mod unity)*10000) div unity;
-for k:=0 to 3 do
- begin dig[k]:=s mod 10; s:=s div 10;
- end;
-write('.'); print_digs(4);
-end;
-
-@ Now we're ready to print a |glue_ratio|. Since the effective multiplier
-is $2^{-a-b}c$, we will display the scaled integer $2^{16-a-b}c$, taking
-care to print something special if this quantity is terribly large.
-
-@p procedure print_gr(@!g:glue_ratio); {prints a glue multiplier}
-var @!j:-29..31; {the amount to shift |c|}
-begin j:=32-ga-gb;
-while j>15 do
- begin write('2x'); decr(j); {indicate multiples of 2 for BIG cases}
- end;
-if j<0 then print_scaled(gc div two_to_the[-j]) {shift right}
-else print_scaled(gc*two_to_the[j]); {shift left}
-end;
-
-@* The driver program.
-In order to test these routines, we will assume that the |input| file
-contains a sequence of test cases, where each test case consists of the
-integer numbers $t$, $x_1$, \dots,~$x_n$, 0. The final test case should
-be followed by an additional zero.
-
-@<Glob...@>=
-@!x:array[1..1000] of scaled; {the $x_i$}
-@!t:scaled; {the desired total}
-@!m:integer; {the test case number}
-
-@ Each case will be processed by the following routine, which assumes
-that |t| has already been read.
-
-@p procedure test; {processes the next data set, given |t| and~|m|}
-var @!n: 0..1000; {the number of items}
-k:0..1000; {runs through the items}
-y:scaled; {$\max_{1\le i\le n}\vert x_i\vert$}
-@!g:glue_ratio; {the computed glue multiplier}
-@!s:scaled; {the sum $x_1+\cdots+x_n$}
-@!ts:scaled; {the sum $f(x_1)+\cdots+f(x_n)$}
-begin write_ln('Test data set number ',m:1,':');
-@<Read $x_1,\ldots,x_n$@>;
-@<Compute |s| and |y|@>;
-if s<=0 then write_ln('Invalid data (nonpositive sum); this set rejected.')
-else begin @<Compute |g| and print it@>;
- @<Print the values of $x_i$, $f(x_i)$, and the totals@>;
- end;
-end;
-
-@ @<Read $x_1,\ldots,x_n$@>=
-begin n:=0;
-repeat incr(n); read(x[n]);
-until x[n]=0;
-decr(n);
-end
-
-@ @<Compute |s| and |y|@>=
-begin s:=0; y:=0;
-for k:=1 to n do
- begin s:=s+x[k];
- if y<abs(x[k]) then y:=abs(x[k]);
- end;
-end
-
-@ @<Compute |g| and print it@>=
-begin glue_fix(s,t,y,g); {set |g|, perhaps print an error message}
-write(' Glue ratio is '); print_gr(g);
-write_ln(' (',ga-16:1,',',gb:1,',',gc:1,')');
-end
-
-@ @<Print the values of $x_i$, $f(x_i)$, and the totals@>=
-begin ts:=0;
-for k:=1 to n do
- begin write(x[k]:20);
- if x[k]>=0 then y:=glue_mult(x[k],g)
- else y:=-glue_mult(-x[k],g);
- write_ln(y:15);
- ts:=ts+y;
- end;
-write_ln(' Totals',s:13,ts:15,' (versus ',t:1,')');
-end
-
-@ Here is the main program.
-@^main program@>
-
-@p begin initialize;
-m:=1;
-read(t);
-while t>0 do
- begin test;
- incr(m); read(t);
- end;
-end.
-
-@*Index. Here are the section numbers where various identifiers are used in the
-program, and where various topics are discussed.
-
-
-
-
-
diff --git a/Master/texmf-dist/source/generic/knuth/web/webman.tex b/Master/texmf-dist/source/generic/knuth/web/webman.tex
deleted file mode 100644
index e4781c1da77..00000000000
--- a/Master/texmf-dist/source/generic/knuth/web/webman.tex
+++ /dev/null
@@ -1,1674 +0,0 @@
-% WEB user manual -- last updated by D E Knuth on 4 Dec 89
-\input webmac
-\parskip 0pt plus 1pt
-\def\RA{\char'31 } % right arrow
-\def\hang{\hangindent 4em\ignorespaces}
-\font\ninerm=cmr9
-\font\ninett=cmtt9
-\font\eighttt=cmtt8
-\let\mc=\ninerm % medium caps for names like SAIL
-\def\PASCAL{Pascal}
-\font\quoterm=cmssq8
-\font\quoteit=cmssqi8
-\def\pb{\.{|...|}}
-\def\lpile{\def\cr{\hfill\endline}\matrix} % I only use \lpile by itself
-
-\outer\def\section #1.{\penalty-50\vskip 12pt plus 3pt minus 3pt
- \noindent{\bf #1.}\quad\ignorespaces}
-
-\def\lheader{\mainfont\the\pageno\hfill\sc\runninghead\hfill}
-\def\rheader{\hfill\sc\runninghead\hfill\mainfont\the\pageno}
-\def\runninghead{{\tentt WEB} USER MANUAL}
-
-% This verbatim mode assumes that no ? appears in the text being copied.
-\def\verbatim{\begingroup
- \def\do##1{\catcode`##1=12 } \dospecials
- \parskip 0pt \parindent 0pt
- \catcode`\ =13 \catcode`\^^M=13
- \tt \catcode`\?=0 \verbatimdefs \verbatimgobble}
-{\catcode`\^^M=13{\catcode`\ =13\gdef\verbatimdefs{\def^^M{\ \par}\let =\ }} %
- \gdef\verbatimgobble#1^^M{}}
- \centerline{\titlefont The {\ttitlefont WEB} System
- of Structured Documentation}
-
-\vskip 15pt plus 3pt minus 3pt
-\noindent This memo describes how to write programs in the
-\.{WEB} language; and it also includes the full \.{WEB} documentation for
-\.{WEAVE} and \.{TANGLE}, the programs that read \.{WEB} input and produce
-\TeX\ and \PASCAL\ output, respectively. The philosophy behind \.{WEB} is
-that an experienced system programmer, who wants to provide the best
-possible documentation of software products, needs two things
-simultaneously: a language like \TeX\ for formatting, and a language like
-\PASCAL\ for programming. Neither type of language can provide the best
-documentation by itself. But when both are appropriately combined, we
-obtain a system that is much more useful than either language separately.
-
-The structure of a software program may be thought of as a ``web'' that is
-made up of many interconnected pieces. To document such a program, we want
-to explain each individual part of the web and how it relates to its
-neighbors. The typographic tools provided by \TeX\ give us an opportunity
-to explain the local structure of each part by making that structure
-visible, and the programming tools provided by \PASCAL\ make it possible
-for us to specify the algorithms formally and unambiguously. By combining
-the two, we can develop a style of programming that maximizes our ability
-to perceive the structure of a complex piece of software, and at the same
-time the documented programs can be mechanically translated into a working
-software system that matches the documentation.
-
-Since \.{WEB} is an experimental system developed for internal use within
-the \TeX\ project at Stanford, this report is rather terse, and it assumes
-that the reader is an experienced programmer who is highly motivated to
-read a detailed description of \.{WEB}'s rules. Furthermore, even if a
-less terse manual were to be written, the reader would have to be warned
-in advance that \.{WEB} is not for beginners and it never will be: The
-user of \.{WEB} must be familiar with both \TeX\ and \PASCAL. When one
-writes a \.{WEB} description of a software system, it is possible to make
-mistakes by breaking the rules of \.{WEB} and/or the rules of \TeX\ and/or
-the rules of \PASCAL. In practice, all three types of errors will occur,
-and you will get different error messages from the different language
-processors. In compensation for the sophisticated expertise needed to cope
-with such a variety of languages, however, experience has shown that
-reliable software can be created quite rapidly by working entirely in
-\.{WEB} from the beginning; and the documentation of such programs seems
-to be better than the documentation obtained by any other known method.
-Thus, \.{WEB} users need to be highly qualified, but they can get some
-satisfaction and perhaps even a special feeling of accomplishment when
-they have successfully created a software system with this method.
-
-To use \.{WEB}, you prepare a file called \.{COB.WEB} (say), and then you
-apply a system program called \.{WEAVE} to this file, obtaining an output
-file called \.{COB.TEX}. When \TeX\ processes \.{COB.TEX}, your output
-will be a ``pretty printed'' version of \.{COB.WEB} that takes appropriate
-care of typographic details like page layout and the use of indentation,
-italics, boldface, etc.; this output will contain extensive cross-index
-information that is gathered automatically. You can also submit the same
-file \.{COB.WEB} to another system program called \.{TANGLE}, which will
-produce a file \.{COB.PAS} that contains the \PASCAL\ code of your \.{COB}
-program. The \PASCAL\ compiler will convert \.{COB.PAS} into
-machine-language instructions corresponding to the algorithms that were so
-nicely formatted by \.{WEAVE} and \TeX. Finally, you can (and should)
-delete the files \.{COB.TEX} and \.{COB.PAS}, because \.{COB.WEB} contains
-the definitive source code. Examples of the behavior of \.{WEAVE} and
-\.{TANGLE} are appended to this manual.
-
-Besides providing a documentation tool, \.{WEB} enhances the \PASCAL\
-language by providing a rudimentary macro capability together with the
-ability to permute pieces of the program text, so that a large system can
-be understood entirely in terms of small modules and their local
-interrelationships. The \.{TANGLE} program is so named because it takes a
-given web and moves the modules from their web structure into the order
-required by \PASCAL; the advantage of programming in \.{WEB} is that the
-algorithms can be expressed in ``untangled'' form, with each module
-explained separately. The \.{WEAVE} program is so named because it takes
-a given web and intertwines the \TeX\ and \PASCAL\ portions contained in
-each module, then it knits the whole fabric into a structured document.
-(Get it? Wow.) Perhaps there is some deep connection here with the fact
-that the German word for ``weave'' is ``{\it web\/}'', and the
-corresponding Latin imperative is ``{\it texe\/}''!
-
-It is impossible to list all of the related work that has influenced the
-design of \.{WEB}, but the key contributions should be mentioned
-here.\quad (1)~Myrtle Kellington, as executive editor for ACM
-publications, developed excellent typographic standards for the
-typesetting of Algol programs during the 1960s, based on the original
-designs of Peter Naur; the subtlety and quality of this influential work
-can be appreciated only by people who have seen what happens when other
-printers try to typeset Algol without the advice of ACM's copy
-editors.\quad(2)~Bill McKeeman introduced a program intended to automate
-some of this task [Algorithm 268, ``Algol~60 reference language editor,''
-{\sl CACM \bf8} (1965), 667--668]; and a considerable flowering of such
-programs has occurred in recent years [see especially Derek Oppen,
-``Prettyprinting,'' {\sl ACM TOPLAS \bf2} (1980), 465--483; G.~A. Rose and
-J. Welsh, ``Formatted programming languages,'' {\sl SOFTWARE Practice
-\char`\&\ Exper.\ \bf11} (1981), 651--669].\quad(3)~The top-down style of
-exposition encouraged by \.{WEB} was of course chiefly influenced by Edsger
-Dijkstra's essays on structured programming in the late 1960s. The less
-well known work of Pierre-Arnoul de Marneffe [``Holon programming: A
-survey,'' Univ.\ de Liege, Service Informatique, Liege, Belgium, 1973; 135
-pp.\null] also had a significant influence on the author as \.{WEB} was
-being formulated.\quad(4)~Edwin Towster has proposed a similar style of
-documentation in which the programmer is supposed to specify the relevant
-data structure environment in the name of each submodule [``A convention
-for explicit declaration of environments and top-down refinement of
-data,'' {\sl IEEE Trans.\ on Software Eng.\ \bf SE--5} (1979), 374--386];
-this requirement seems to make the documentation a bit too verbose,
-although experience with \.{WEB} has shown that any unusual control
-structure or data structure should definitely be incorporated into the
-module names on psychological grounds.\quad(5)~Discussions with Luis
-Trabb~Pardo in the spring of 1979 were extremely helpful for setting up a
-prototype version of \.{WEB} that was called \.{DOC}.\quad (6)~Ignacio
-Zabala's extensive experience with \.{DOC}, in which he created a full
-implementation of \TeX\ in \PASCAL\ that was successfully transported to
-many different computers, was of immense value while \.{WEB} was taking
-its present form.\quad(7)~David~R. Fuchs made several crucial suggestions
-about how to make \.{WEB} more portable; he and Arthur~L. Samuel
-coordinated the initial installations of \.{WEB} on dozens of computer
-systems, making changes to the code so that it would be acceptable to
-a wide variety of \PASCAL\ compilers.\quad(8)~The name \.{WEB} itself
-was chosen in honor of my wife's mother, Wilda Ernestine Bates.
-
-The appendices to this report contain complete \.{WEB} programs for the
-\.{WEAVE} and \.{TANGLE} processors. A study of these examples, together
-with an attempt to write \.{WEB} programs by yourself, is the best way
-to understand why \.{WEB} has come to be like it is.
- \section General rules.
-A \.{WEB} file is a long string of text that has been divided into
-individual lines. The exact line boundaries are not terribly crucial, and
-a programmer can pretty much chop up the \.{WEB} file in whatever way seems
-to look best as the file is being edited; but string constants and control
-texts must end on the same line on which they begin, since this convention
-helps to keep errors from propagating. The end of a line means
-the same thing as a blank space.
-
-Two kinds of material go into \.{WEB} files: \TeX\ text and \PASCAL\ text.
-A programmer writing in \.{WEB} should be thinking both of the
-documentation and of the \PASCAL\ program that he or she is creating;
-i.e., the programmer should be instinctively aware of the different
-actions that \.{WEAVE} and \.{TANGLE} will perform on the \.{WEB} file.
-\TeX\ text is essentially copied without change by \.{WEAVE}, and it is
-entirely deleted by \.{TANGLE}, since the \TeX\ text is ``pure
-documentation.'' \PASCAL\ text, on the other hand, is formatted by
-\.{WEAVE} and it is shuffled around by \.{TANGLE}, according to rules that
-will become clear later. For now the important point to keep in mind is
-that there are two kinds of text. Writing \.{WEB} programs is something
-like writing \TeX\ documents, but with an additional ``\PASCAL\ mode''
-that is added to \TeX's horizontal mode, vertical mode, and math mode.
-
-A \.{WEB} file is built up from units called {\sl modules\/} that are more
-or less self-contained. Each module has three parts:
-
-\yskip\item{1)} A \TeX\ part, containing explanatory material about what
-is going on in the module.
-
-\item{2)} A definition part, containing macro definitions that serve as
-abbreviations for \PASCAL\ constructions that would be less comprehensible
-if written out in full each time.
-
-\item{3)} A \PASCAL\ part, containing a piece of the program that
-\.{TANGLE} will produce. This \PASCAL\ code should ideally be about a
-dozen lines long, so that it is easily comprehensible as a unit and so
-that its structure is readily perceived.
-
-\yskip\noindent The three parts of each module must appear in this order;
-i.e., the \TeX\ commentary must come first, then the definitions, and
-finally the \PASCAL\ code. Any of the parts may be empty.
-
-\eject % page break inserted Dec 88
-
-A module begins with the pair of symbols `\.{@\ }' or `\.{@*}', where
-`\.{\ }' denotes a blank space. A module ends
-at the beginning of the next module (i.e., at the next
-`\.{@\ }' or `\.{@*}'), or at the end of the file, whichever comes first.
-The \.{WEB} file may also contain material that is not part of any module
-at all, namely the text (if any) that occurs before the first module.
-Such text is said to be ``in limbo''; it is ignored by \.{TANGLE}
-and copied essentially verbatim by \.{WEAVE}, so its function is to
-provide any additional formatting instructions that may be desired in the
-\TeX\ output. Indeed, it is customary to begin a \.{WEB} file with
-\TeX\ code in limbo that loads special fonts, defines special macros,
-changes the page sizes, and/or produces a title page.
-
-Modules are numbered consecutively, starting with 1; these numbers appear
-at the beginning of each module of the \TeX\ documentation, and they appear
-as bracketed comments at the beginning of the code generated by that
-module in the \PASCAL\ program.
-
-Fortunately, you never mention these numbers yourself when you are writing
-in \.{WEB}. You just say `\.{@\ }' or `\.{@*}' at the beginning of each
-new module, and the numbers are supplied automatically by \.{WEAVE} and
-\.{TANGLE}. As far as you are concerned, a module has a
-{\sl name\/} instead of a number; such a name is specified by writing
-`\.{@<}' followed by \TeX\ text followed by `\.{@>}'. When \.{WEAVE}
-outputs a module name, it replaces the `\.{@<}' and `\.{@>}' by
-angle brackets and inserts the module number in small type. Thus, when you
-read the output of \.{WEAVE} it is easy to locate any module that is
-referred to in another module.
-
-For expository purposes, a module name should be a good description of the
-contents of that module; i.e., it should stand for the abstraction
-represented by the module. Then the module can be ``plugged into'' one or
-more other modules in such a way
-that unimportant details of its inner workings
-are suppressed. A module name therefore ought to be long enough to convey
-the necessary meaning. Unfortunately, however, it is laborious to type
-such long names over and over again, and it is also difficult to specify a
-long name twice in exactly the same way so that \.{WEAVE} and \.{TANGLE}
-will be able to match the names to the modules. To ameliorate this difficulty,
-\.{WEAVE} and \.{TANGLE} let you abbreviate a module name
-after its first appearance in the \.{WEB} file; you can type simply
-`\.{@<$\alpha$...@>}', where $\alpha$ is any string that is a prefix of
-exactly one module name appearing in the file. For example, `\.{@<Clear
-the arrays@>}' can be abbreviated to `\.{@<Clear...@>}' if no other module
-name begins with the five letters `\.{Clear}'. Module names must otherwise
-match character for character, except that consecutive blank spaces and/or
-tab marks are treated as equivalent to single spaces, and such spaces are
-deleted at the beginning and end of the name. Thus, `\.{@< Clear { }the
-arrays @>}' will also match the name in the previous example.
-
-We have said that a module begins with `\.{@\ }' or `\.{@*}', but we
-didn't say how it gets divided up into a \TeX\ part, a definition part,
-and a \PASCAL\ part. The definition part begins with the first appearance
-of `\.{@d}' or `\.{@f}' in the module, and the \PASCAL\ part begins with
-the first appearance of `\.{@p}' or `\.{@<}'. The latter option `\.{@<}'
-stands for the beginning of a module name, which is the name of the module
-itself. An equals sign (\.=) must follow the `\.{@>}' at the end of this
-module name; you are saying, in effect, that the module name stands for
-the \PASCAL\ text that follows, so you say `$\langle\,$module
-name$\,\rangle=\null$\PASCAL\ text'. Alternatively, if the \PASCAL\ part
-begins with `\.{@p}' instead of a module name, the current module is said
-to be {\sl unnamed}. Note that module names cannot appear in the
-definition part of a module, because the first `\.{@<}' in a module
-signals the beginning of its \PASCAL\ part. But any number of module names
-might appear in the \PASCAL\ part, once it has started.
-
-The general idea of \.{TANGLE} is to make a \PASCAL\ program out of these
-modules in the following way: First all the \PASCAL\ parts of unnamed
-modules are copied down, in order; this constitutes the initial
-approximation $T_0$ to the text of the program. (There should be at least
-one unnamed module, otherwise there will be no program.) Then all module
-names that appear in the initial text $T_0$ are replaced by the \PASCAL\
-parts of the corresponding modules, and this substitution process
-continues until no module names remain. Then all defined macros are
-replaced by their equivalents, according to certain rules that are
-explained later. The resulting \PASCAL\ code is ``sanitized'' so that it
-will be acceptable to an average garden-variety \PASCAL\ compiler; i.e.,
-lowercase letters are converted to uppercase, long identifiers are
-chopped, and the lines of the output file are constrained to be at most 72
-characters long. All comments will have been removed from this \PASCAL\
-program except for the meta-comments delimited by `\.{@\{}' and
-`\.{@\}}', as explained below, and except for the module-number comments
-that point to the source location where each piece of the program text
-originated in the \.{WEB} file.
-
-If the same name has been given to more than one module, the \PASCAL\ text
-for that name is obtained by putting together all of the \PASCAL\ parts in
-the corresponding modules. This feature is useful, for example, in a
-module named `Global variables in the outer block', since one can then
-declare global variables in whatever modules those variables are
-introduced. When several modules have the same name, \.{WEAVE} assigns the
-first module number as the number corresponding to that name, and it
-inserts a note at the bottom of that module telling the reader to `See
-also sections so-and-so'; this footnote gives the numbers of all the other
-modules having the same name as the present one. The \PASCAL\ text
-corresponding to a module is usually formatted by \.{WEAVE} so that the
-output has an equivalence sign in place of the equals sign in the \.{WEB}
-file; i.e., the output says `$\langle\,$module
-name$\,\rangle\equiv\null$\PASCAL\ text'. However, in the case of the second
-and subsequent appearances of a module with the same name, this `$\equiv$'
-sign is replaced by `$\mathrel+\equiv$', as an indication that the \PASCAL\
-text that follows is being appended to the \PASCAL\ text of another
-module.
-
-The general idea of \.{WEAVE} is to make a \.{TEX} file from the \.{WEB}
-file in the following way: The first line of the \.{TEX} file will be
-`\.{\\input webmac}'; this will cause \TeX\ to read in the macros that
-define \.{WEB}'s documentation conventions. The next lines of the file
-will be copied from whatever \TeX\ text is in limbo before the first
-module. Then comes the output for each module in turn, possibly
-interspersed with end-of-page marks. Finally, \.{WEAVE} will generate a
-cross-reference index that lists each module number in which each \PASCAL\
-identifier appears, and it will also generate an alphabetized list
-of the module names, as well as a table of contents that
-shows the page and module numbers for each ``starred'' module.
-
-What is a ``starred'' module, you ask? A module that begins with `\.{@*}'
-instead of `\.{@\ }' is slightly special in that it denotes a new major
-group of modules. The `\.{@*}' should be followed by the title of this
-group, followed by a period. Such modules will always start on a new page
-in the \TeX\ output, and the group title will appear as a running headline
-on all subsequent pages until the next starred module. The title will also
-appear in the table of contents, and in boldface type at the beginning of
-its module. Caution: Do not use \TeX\ control sequences in such titles,
-unless you know that the \.{webmac} macros will do the right thing with
-them. The reason is that these titles are converted to uppercase when
-they appear as running heads, and they are converted to boldface when they
-appear at the beginning of their modules, and they are also written out to
-a table-of-contents file used for temporary storage while \TeX\ is
-working; whatever control sequences you use must be meaningful in all
-three of these modes.
-
-The \TeX\ output produced by \.{WEAVE} for each module consists of
-the following: First comes the module number (e.g., `\.{\\M123.}'
-at the beginning of module 123, except that `\.{\\N}' appears in place of
-`\.{\\M}' at the beginning of a starred module). Then comes the
-\TeX\ part of the module, copied almost verbatim except as noted
-below. Then comes the definition part and the \PASCAL\ part, formatted
-so that there will be a little extra space between them if both are
-nonempty. The definition and \PASCAL\ parts are obtained by inserting
-a bunch of funny looking \TeX\ macros into the \PASCAL\ program; these
-macros handle typographic details about fonts and proper math spacing,
-as well as line breaks and indentation.
-
-When you are typing \TeX\ text, you will probably want to make frequent
-reference to variables and other quantities in your \PASCAL\ code, and you
-will want those variables to have the same typographic treatment
-when they appear in your text as when they appear in your
-program. Therefore the \.{WEB} language allows you to get the effect of
-\PASCAL\ editing within \TeX\ text, if you place `\.|' marks before and
-after the \PASCAL\ material. For example, suppose you want to say something
-like this:
-$$\hbox{The characters are placed into \\{buffer}, which is a
-\&{packed} \&{array} $[1\to\|n]$ \&{of} \\{char}.}$$
-The \TeX\ text would look like this in your \.{WEB} file:
-$$\.{The characters are placed into |buffer|, which is a |packed
-array [1..n] of char|.}$$
-And \.{WEAVE} translates this into something you are glad you didn't have
-to type:
-$$\lpile{\.{The characters are placed into \\\\\{buffer\},}\cr
- \.{which is a \\\&\{packed\}{ }\\\&\{array\}{ }\$
- [1\\to\\|n]\${ }\\\&\{of\}{ }\\\\\{char\}.}\cr}$$
-Incidentally, the cross-reference index that \.{WEAVE} would make, in
-the presence of a comment like this, would include
-the current module number as one of the index entries for \\{buffer}
-\vadjust{\eject}% page break inserted Dec 88
-and \\{char}, even though \\{buffer} and \\{char}
-might not appear in the \PASCAL\ part of
-this module. Thus, the index covers references to identifiers in
-the explanatory comments as well as in the program itself; you will
-soon learn to appreciate this feature. However, the identifiers
-\&{packed} and \&{array} and \|n\ and \&{of\/} would not be indexed,
-because \.{WEAVE} does not make index entries for reserved words or
-single-letter identifiers. Such identifiers are felt to be so ubiquitous
-that it would be pointless to mention every place where they occur.
-
-Speaking of identifiers, the author of \.{WEB} thinks that
-\\{IdentifiersSeveralWordsLong} look terribly ugly when they mix
-uppercase and lowercase letters. He recommends that
-\\{identifiers\_several\_words\_long} be written with underline characters
-to get a much better effect. The actual identifiers sent to the \PASCAL\
-compiler by \.{TANGLE} will have such underlines removed, and \.{TANGLE}
-will check to make sure that two different identifiers do not become
-identical when this happens. (In fact, \.{TANGLE} even checks that
-the first seven characters of identifiers are unique, when lowercase
-letters have been converted to uppercase; the number seven in this
-constraint is more strict than \PASCAL's eight, and it can
-be changed if desired.) The \.{WEAVE} processor will properly
-alphabetize identifiers that have embedded underlines
-when it makes the index.
-
-Although a module begins with \TeX\ text and ends with \PASCAL\ text, we
-have noted that the dividing line isn't sharp, since \PASCAL\ text can be
-included in \TeX\ text if it is enclosed in `\pb'. Conversely, \TeX\ text
-also appears frequently within \PASCAL\ text, because everything in
-comments (i.e., between left and right braces) is treated as \TeX\ text.
-Furthermore, a module name consists of \TeX\ text; thus, a \.{WEB} file
-typically involves constructions like `\.{if} \.x \.= \.0 \.{then}
-\.{@<Empty} \.{the} \.{|buffer|} \.{array@>}' where we go back and forth
-between \PASCAL\ and \TeX\ conventions in a natural way.
- \section Macros.
-A \.{WEB} programmer can define three kinds of macros to make the programs
-shorter and more readable:
-
-\yskip\hang`\.{@d} \\{identifier} \.= \\{constant}' defines a {\sl numeric\/}
-macro, allowing \.{TANGLE} to do rudimentary arithmetic.
-
-\yskip\hang`\.{@d} \\{identifier} \.{==} \PASCAL\ text' defines a {\sl
-simple\/} macro, where the identifier will be replaced by the \PASCAL\ text
-when \.{TANGLE} produces its output.
-
-\yskip\hang`\.{@d} \\{identifier}\.{(\#) ==} \PASCAL\ text' defines a
-{\sl parametric\/} macro, where the identifier will be replaced by the \PASCAL\
-text and where occurrences of \.{\#} in that \PASCAL\ text will be
-replaced by an argument.
-
-\yskip\noindent In all three cases, the identifier must have length greater
-than one; it must not be a single letter.
-
-Numeric macros are subject to the following restrictions:\quad
-(1)~The identifier must
-be making its first appearance in the \.{WEB} file;
-a numeric macro must be defined before it is used.\quad
-(2)~The right-hand side of the numeric definition must be made entirely from
-integer constants, numeric macros, preprocessed strings (see below), and
-plus~signs or minus signs. No other operations or symbols are allowed,
-not even parentheses, except that \PASCAL-like comments (enclosed in
-braces) can appear. Indeed, comments are recommended, since it is usually
-wise to give a brief explanation of the significance of each identifier as
-it is defined.\quad
-(3)~The numeric value must be less than $2^{15}=32768$ in absolute value.
-(For larger values, you can use `\.{==}' in place of~`\.=', thus making use
-of a simple macro instead of a numeric one. Note, however, that simple
-macros sometimes have a different effect. For example, consider the three
-definitions `\.{@d n1=2 @d n2=2+n1 @d n3==2+n1}'; then `\.{x-n2}' will
-expand into `\.{x-4}', while `\.{x-n3}' will expand into `\.{x-2+2}' which
-is quite different! It is wise to include parentheses in non-numeric
-macros, e.g., `\.{@d n3==(2+n1)}', to avoid such errors.)
-
-When constants are connected by plus signs or minus
-signs in a \PASCAL\ program, \.{TANGLE} does the arithmetic before putting
-the constant into the output file. Therefore it is permissible to say, for
-example, `\&{array} $[0\,.\,.\,\\{size}-1]$' if \\{size} has been declared
-as a macro; note that \PASCAL\ doesn't allow this kind of compile-time
-arithmetic if \\{size} is a \&{constant} quantity in the program. Another
-use of \.{TANGLE}'s arithmetic is to make \&{case} statement labels such
-as `$\\{flag}+1$' legitimate. Of course, it is improper to change \.{2+2}
-into \.4 without looking at the surrounding context; many counterexamples
-exist, such as the phrases `\.{-2+2}', `\.{x/2+2}', and `\.{2+2E5}'. The
-program for \.{TANGLE}, in the appendix, gives precise details about this
-conversion, which \.{TANGLE} does only when it is safe.
-
-The right-hand sides of simple and parametric macros
-are required to have balanced parentheses, and the \PASCAL\ texts of
-modules must have balanced parentheses too. Therefore when the argument
-to a para\-metric macro appears in parentheses, both parentheses
-will belong to the same \PASCAL\ text.
-
-The appendices to this report contain hundreds of typical examples of the
-usefulness of \.{WEB} macros, so it is not necessary to dwell on the
-subject here. However, the reader should know that \.{WEB}'s apparently
-primitive macro capabilities can actually do a lot of rather surprising
-things. Here is a construction that sheds further light on what is
-possible: After making the definitions
-$$\catcode`\#=12
-\lpile{\.{@d two\_cases(#)==case j of 1:#(1); 2:#(2); end}\cr
-\.{@d reset\_file(#)==reset(input\_file@\&#)}\cr}$$
-one can write `\.{two\_cases(reset\_file)}' and the resulting \PASCAL\
-output will be
-$$\.{case j of 1:reset(input\_file1); 2:reset(input\_file2); end}$$
-(but in uppercase letters and with \.\_'s removed).
-The `\.{@\&}' operation used here joins together two adjacent tokens
-into a single token, as explained later; otherwise the \PASCAL\ file would
-contain a space between \.{input\_file} and the digit that followed it.
-This trick can be used to provide the effect of an array of files, if you
-are unfortunate enough to have a \PASCAL\ compiler that doesn't allow such
-arrays. Incidentally, the cross-reference index made by \.{WEAVE} from
-this example would contain the identifier \\{input\_file} but it would not
-contain \\{input\_file1} or \\{input\_file2}. Furthermore, \.{TANGLE}
-would not catch the error that \.{INPUTFILE1} and \.{INPUTFILE2} both
-begin with the same nine letters; one should be more careful when using
-`\.{@\&}'! But such aspects of the construction in this trick are
-peripheral to our main point, which is that a parametric macro name without
-arguments can be used as an argument to another parametric macro.
-
-Although \.{WEB}'s macros are allowed to have at most one parameter, the
-following example shows that this is not as much of a restriction as it
-may seem at first. Let \\{amac} and \\{bmac} be any parametric macros, and
-suppose that we want to get the effect of
-$$\catcode`\#=12
-\.{@d cmac(#1,#2) == amac(#1) bmac(#2)}$$
-which \.{WEB} doesn't permit. The solution is to make the definitions
-$$\catcode`\#=12
-\lpile{\.{@d cmac(#) == amac(#) dmac}\cr
-\.{@d dmac(#) == bmac(#)}\cr}$$
-and then to say `\.{cmac(x)(y)}'.
-
-There is one restriction in the generality of \.{WEB}'s parametric
-macros, however: the argument to a para\-metric macro must not come from
-the expansion of a macro that has not already been ``started.'' For
-example, here is one of the things \.{WEB} cannot handle:
-$$\catcode`\#=12
-\lpile{\.{@d arg == (p)}\cr
-\.{@d identity(#) == #}\cr
-\.{@p identity arg}\cr}$$
-In this case \.{TANGLE} will complain that the \.{identity} macro is not
-followed by an argument in parentheses.
-
-The \.{WEB} language has another feature that is somewhat similar to a
-numeric macro. A {\sl preprocessed string\/} is a string that is like
-a \PASCAL\ string but delimited by double-quote marks (\.") instead of
-single-quotes. Double-quote marks inside of such strings are indicated by
-giving two double-quotes in a row. If a preprocessed string is
-of length one (e.g., \.{"A"} or \.{""""}), it will be treated by \.{TANGLE}
-as equivalent to the corresponding ASCII-code integer (e.g., \.{65} or
-\.{34}). And if a preprocessed string is not of length one, it will be
-converted into an integer equal to 256 or more. A {\sl string pool\/}
-containing all such strings will be written out by the \.{TANGLE}
-processor; this string pool file consists of string 256, then string 257,
-etc., where each string is followed by an end-of-line and prefixed by two
-decimal digits that define its length. Thus, for example, the empty string
-\.{""} would be represented in the string pool file by a line containing
-the two characters `\.{00}', while the string \.{"""String"""} would be
-represented by `\.{08"String"}'. A given string appears at most once in
-the string pool; the use of such a pool makes it easier to cope with
-\PASCAL's restrictions on string manipulation. The string pool ends with
-`\.{*nnnnnnnnn}', where \.{nnnnnnnnn} is a decimal number
-called the {\sl string pool check sum}. If any string changes, the check
-sum almost surely changes too; thus, the `\.{@\$}' feature
-described below makes it possible for a program to assure itself that it
-is reading its own string pool.
-
-Here is a simple example that combines numeric macros with preprocessed
-strings of length one:
-$$\lpile{\.{@d upper\_case\_Y = "Y"}\cr
-\.{@d case\_difference = -"y"+upper\_case\_Y}\cr}$$
-The result is to define
-$\\{upper\_case\_Y}=89$, $\\{case\_difference}=-32$.
- \section Control codes.
-We have seen several magic uses of `\.{@}' signs in \.{WEB} files, and it
-is time to make a systematic study of
-these special features. A \.{WEB} {\sl control code\/}
-is a two-character combination of which the first is `\.@'.
-
-Here is a complete list of the legal control codes. The letters $L$, $T$,
-$P$, $M$, $C$, and/or $S$ following each code indicate whether or not that
-code is allowable in limbo, in \TeX\ text, in \PASCAL\ text, in module
-names, in comments, and/or in strings. A bar over such a letter means
-that the control code terminates the present part of the \.{WEB} file; for
-example, $\overline L$ means that this control code ends the limbo material
-before the first module.
-
-\def\@#1[#2] {\yskip\hangindent 2em\noindent\.{@#1\unskip
- \spacefactor1000{ }}$[#2]$\quad}
-\def\oP{\overline P}
-\def\oT{\overline T\mskip1mu}
-
-\@@ [C,L,M,P,S,T] A double \.@ denotes the single character `\.@'. This is
-the only control code that is legal in limbo, in comments, and in strings.
-
-\@\ [\overline L,\oP,\oT] This denotes the beginning of a new
-(unstarred) module. A tab mark or end-of-line (carriage return)
-is equivalent to a space when it follows an \.@ sign.
-
-\@* [\overline L,\oP,\oT] This denotes the beginning of a new starred
-module, i.e., a module that begins a new major group. The title of the new
-group should appear after the \.{@*}, followed by a period. As explained
-above, \TeX\ control sequences should be avoided in such titles unless
-they are quite simple. When \.{WEAVE} and \.{TANGLE} read a \.{@*}, they
-print an asterisk on the terminal
-followed by the current module number, so that the user
-can see some indication of progress. The very first module should be starred.
-
-\@d [\oP,\oT] Macro definitions begin with \.{@d} (or \.{@D}), followed by
-the \PASCAL\ text for one of the three kinds of macros, as explained
-earlier.
-
-\@f [\oP,\oT] Format definitions begin with \.{@f} (or \.{@F}); they cause
-\.{WEAVE} to treat identifiers in a special way when they appear in
-\PASCAL\ text. The general form of a format definition is `\.{@f} \|l \.{==}
-\|r', followed by an optional comment enclosed in braces, where \|l and \|r
-are identifiers; \.{WEAVE} will subsequently treat identifier \|l as it
-currently treats \|r. This feature allows a \.{WEB} programmer to invent
-new reserved words and/or to unreserve some of \PASCAL's reserved
-identifiers. The definition part of each module consists of any number of
-macro definitions (beginning with \.{@d}) and format definitions (beginning
-with \.{@f}), intermixed in any order.
-
-\@p [\oP,\oT] The \PASCAL\ part of an unnamed module begins with \.{@p}
-(or \.{@P}). This causes \.{TANGLE} to append the following \PASCAL\ code
-to the initial program text $T_0$ as explained above. The \.{WEAVE}
-processor does not cause a `\.{@p}' to appear explicitly in the \TeX\
-output, so if you are creating a \.{WEB} file based on a \TeX-printed
-\.{WEB} documentation you have to remember to insert \.{@p} in the
-appropriate places of the unnamed modules.
-
-\@< [P,\oT] A module name begins with \.{@<} followed by \TeX\ text followed
-by \.{@>}; the \TeX\ text should not contain any \.{WEB} control codes
-except \.{@@}, unless these control codes appear in \PASCAL\ text that
-is delimited by \pb. The module name may be abbreviated, after its first
-appearance in a \.{WEB} file, by giving any unique prefix followed by \.{...},
-where the three dots immediately precede the closing \.{@>}. No module name
-should be a prefix of another. Module names may not appear in \PASCAL\
-text that is enclosed in \pb, nor may they appear in the definition part
-of a module (since the appearance of a module name ends the definition
-part and begins the \PASCAL\ part).
-
-\@\' [P,T] This denotes an octal constant, to be formed from the
-succeeding digits. For example, if the \.{WEB} file contains `\.{@\'100}',
-the \.{TANGLE} processor will treat this an equivalent to `\.{64}';
-the constant will be formatted as ``\O{100}'' in the \TeX\ output
-produced via \.{WEAVE}. You should use octal notation only for positive
-constants; don't try to get, e.g., $-1$ by saying `\.{@\'777777777777}'.
-
-\@" [P,T] A hexadecimal constant; `\.{@"D0D0}' tangles to \.{53456} and
-weaves to `\H{D0D0}'.
-
-\@\$ [P] This denotes the string pool check sum.
-
-\@\{ [P] The beginning of a ``meta comment,'' i.e., a comment
-that is supposed to appear in the \PASCAL\ code, is indicated by
-\.{@\{} in the \.{WEB} file. Such delimiters can be used as
-isolated symbols in macros or modules, but they should be properly nested
-in the final \PASCAL\ program. The \.{TANGLE} processor will convert
-`\.{@\{}' into `\.\{' in the \PASCAL\ output file, unless
-the output is already part of a meta-comment; in the latter case
-`\.{@\{}' is converted into `\.[', since \PASCAL\ does not allow
-nested comments. The \.{WEAVE} processor outputs `\.{@\{}'.
-Incidentally, module numbers are automatically inserted
-as meta-comments into the \PASCAL\ program, in order to help correlate the
-outputs of \.{WEAVE} and \.{TANGLE} (see Appendix~C\null). Meta-comments
-can be used to put conditional text into a \PASCAL\ program; this helps to
-overcome one of the limitations of \.{WEB}, since the simple macro
-processing routines of \.{TANGLE} do not include the dynamic evaluation of
-boolean expressions.
-
-\@\} [P] The end of a ``meta comment'' is indicated by `\.{@\}}'; this is
-converted either into `\.\}' or `\.{]}' in the \PASCAL\ output, according
-to the conventions explained for \.{@\{} above.
-The \.{WEAVE} processor outputs `\.{@\}}'.
-
-\@\& [P] The \.{@\&} operation causes whatever is on its left to be
-adjacent to whatever is on its right, in the \PASCAL\ output. No spaces or
-line breaks will separate these two items. However, the thing on the left
-should not be a semicolon, since a line break might occur after a semicolon.
-
-\@\^ [P,T] The ``control text'' that follows, up to the next
-`\.{@>}', will be entered into the index together with the identifiers of
-the \PASCAL\ program; this text will appear in roman type. For example, to
-put the phrase ``system dependencies'' into the index, you can type
-`\.{@\^system dependencies@>}' in each module
-that you want to index as system dependent. A control text, like a string,
-must end on the same line of the \.{WEB} file as it began. Furthermore,
-no \.{WEB} control codes are allowed in a control text, not even
-\.{@@}. (If you need an \.{@} sign you can get around this restriction by
-typing `\.{\\AT!}'.)
-
-\@. [P,T] The ``control text'' that follows will be entered into the index
-in \.{typewriter} \.{type}; see the rules for `\.{@\^}', which is analogous.
-
-\@: [P,T] The ``control text'' that follows will be entered into the index
-in a format controlled by the \TeX\ macro `\.{\\9}', which the user
-should define as desired; see the rules for `\.{@\^}', which is analogous.
-
-\@t [P] The ``control text'' that follows, up to the next `\.{@>}', will
-be put into a \TeX\ \.{\\hbox} and formatted along with the neighboring
-\PASCAL\ program. This text is ignored by \.{TANGLE}, but it can be used
-for various purposes within \.{WEAVE}. For example, you can make comments
-that mix \PASCAL\ and classical mathematics, as in `$\\{size}<2^{15}$', by
-typing `\.{|size < @t\$2\^\{15\}\$@>|}'. A control text must end on the
-same line of the \.{WEB} file as it began, and it may not contain any
-\.{WEB} control codes.
-
-\@= [P] The ``control text'' that follows, up to the next `\.{@>}', will
-be passed verbatim to the \PASCAL\ program.
-
-\@\\ [P] Force end-of-line here in the \PASCAL\ program file.
-
-\@! [P,T] The module number in an index entry will be underlined if `\.{@!}'
-immediately precedes the identifier or control text being indexed. This
-convention is used to distinguish the modules where an identifier is
-defined, or where it is explained in some special way, from the modules
-where it is used. A~reserved word or an identifier of length one will not
-be indexed except for underlined entries. An `\.{@!}' is implicitly inserted
-by \.{WEAVE} just after the reserved words \&{function}, \&{procedure},
-\&{program}, and \&{var}, and just after \.{@d} and \.{@f}. But you should
-insert your own `\.{@!}' before the definitions of types, constants,
-variables, parameters, and components of records and enumerated types that
-are not covered by this implicit convention, if you want to improve the
-quality of the index that you get.
-
-\@? [P,T] This cancels an implicit (or explicit) `\.{@!}', so that the next
-index entry will not be underlined.
-
-\@, [P] This control code inserts a thin space in \.{WEAVE}'s output; it is
-ignored by \.{TANGLE}. Sometimes you need this extra space if you are using
-macros in an unusual way, e.g., if two identifiers are adjacent.
-
-\@/ [P] This control code causes a line break to occur within a \PASCAL\
-program formatted by \.{WEAVE}; it is ignored by \.{TANGLE}. Line breaks
-are chosen automatically by \TeX\ according to a scheme that works 99\%\
-of the time, but sometimes you will prefer to force a line break so that
-the program is segmented according to logical rather than visual criteria.
-Caution: `\.{@/}' should be used only after statements or clauses, not in
-the middle of an expression; use \.{@|} in the middle of expressions, in
-order to keep \.{WEAVE}'s parser happy.
-
-\@| [P] This control code specifies an optional line break in the midst of
-an expression. For example, if you have a long condition between \&{if} and
-\&{then}, or a long expression on the right-hand side of an assignment
-statement, you can use `\.{@|}' to specify breakpoints more logical than
-the ones that \TeX\ might choose on visual grounds.
-
-\@\# [P] This control code forces a line break, like \.{@/} does,
-and it also causes a little extra white space to appear between the lines at
-this break. You might use it, for example, between procedure definitions or
-between groups of macro definitions that are logically separate but within
-the same module.
-
-\@+ [P] This control code cancels a line break that might otherwise be
-inserted by \.{WEAVE}, e.g., before the word `\&{else}', if you want to
-put a short if-then-else construction on a single line. It is ignored by
-\.{TANGLE}.
-
-\@; [P] This control code is treated like a semicolon, for formatting
-purposes, except that it is invisible. You can use it, for example, after
-a module name when the \PASCAL\ text represented by that module name ends
-with a semicolon.
-
-\yskip\noindent
-The last six control codes (namely `\.{@,}', `\.{@/}', `\.{@|}',
-`\.{@\#}', `\.{@+}', and `\.{@;}') have no effect on the \PASCAL\
-program output by \.{TANGLE}; they merely help to improve the readability
-of the \TeX-formatted \PASCAL\ that is output by \.{WEAVE}, in unusual
-circumstances. \.{WEAVE}'s built-in formatting method is fairly good, but
-it is incapable of handling all possible cases, because it must deal with
-fragments of text involving macros and module names; these fragments do
-not necessarily obey \PASCAL's syntax. Although \.{WEB} allows you to
-override the automatic formatting, your best strategy is not to worry
-about such things until you have seen what \.{WEAVE} produces automatically,
-since you will probably need to make only a few corrections when you are
-touching up your documentation.
-
-Because of the rules by which every module is broken into three parts,
-the control codes `\.{@d}', `\.{@f}', and `\.{@p}' are not allowed to occur
-once the \PASCAL\ part of a module has begun.
- \section Additional features and caveats.
-
-1. The character pairs `\.{(*}', `\.{*)}', `\.{(.}', and `\.{.)}' are
-converted automatically in \PASCAL\ text as though they were
-`\.{@\{}', `\.{@\}}', `\.[', and `\.]', respectively, except
-of course in strings. Furthermore in certain installations of \.{WEB} that
-{\def\\#1#2{`{\tentex\char'#1#2}'}%
-have an extended character set, the characters \\32, \\34, \\35, \\30,
-\\36, \\04, \\37, \\05, and \\06}
-can be typed as abbreviations for
-`\.{<>}', `\.{<=}', `\.{>=}', `\.{:=}', `\.{==}', `\.{and}', `\.{or}',
-`\.{not}', and `\.{in}', respectively. However, the latter abbreviations
-are not used in the standard versions of \.{WEAVE.WEB} and \.{TANGLE.WEB}
-that are distributed to people who are installing \.{WEB} on other
-computers, and the programs are designed to produce only standard ASCII
-characters as output if the input consists entirely of ASCII characters.
-
-2. If you have an extended character set, all of the characters listed
-in Appendix C of {\sl The \TeX book\/} can be used in strings. But you should
-stick to standard ASCII characters if you want to write programs that will
-be useful to all the poor souls out there who don't have extended
-character sets.
-
-3. The \TeX\ file output by \.{WEAVE} is broken into lines having at most
-80 characters each. The algorithm that does this line breaking is unaware
-of \TeX's convention about comments following `\.\%' signs on a line. When
-\TeX\ text is being copied, the existing line breaks are copied as well,
-so there is no problem with `\.\%' signs unless the original \.{WEB} file
-contains a line more than eighty characters long or a line with \PASCAL\
-text in \pb\ that expands to more than eighty characters long. Such lines
-should not have `\.\%' signs.
-
-4. \PASCAL\ text is translated by a ``bottom up'' procedure that
-identifies each token as a ``part of speech'' and combines parts of speech
-into larger and larger phrases as much as possible according to a special
-grammar that is explained in the documentation of \.{WEAVE}. It is easy to
-learn the translation scheme for simple constructions like single
-identifiers and short expressions, just by looking at a few examples of
-what \.{WEAVE} does, but the general mechanism is somewhat complex because
-it must handle much more than \PASCAL\ itself. Furthermore the output
-contains embedded codes that cause \TeX\ to indent and break lines as
-necessary, depending on the fonts used and the desired page width. For
-best results it is wise to adhere to the following restrictions:
-
-\yskip\itemitem{a)}Comments in \PASCAL\ text should appear only after
-statements or clauses; i.e., after semicolons, after reserved words like
-\&{then} and \&{do}, or before reserved words like \&{end} and \&{else}.
-Otherwise \.{WEAVE}'s parsing method may well get mixed up.
-
-\itemitem{b)}Don't enclose long \PASCAL\ texts in \pb, since the
-indentation and line breaking codes are omitted when the \pb\ text is
-translated from \PASCAL\ to \TeX. Stick to simple expressions or
-statements.
-
-\yskip
-5. Comments and module names are not permitted in \pb\ text. After a `\.|'
-signals the change from \TeX\ text to \PASCAL\ text, the next `\.|' that is
-not part of a string or control text ends the \PASCAL\ text.
-
-6. A comment must have properly nested occurrences of left and right
-braces, otherwise \.{WEAVE} and \.{TANGLE} will not know where the comment
-ends. However, the character pairs `\.{\\\{}' and `\.{\\\}}' do not count
-as left and right braces in comments, and the character pair `\.{\\|}'
-does not count as a delimiter that begins \PASCAL\ text. (The actual rule
-is that a character after `\.\\' is ignored; hence in `\.{\\\\\{}' the
-left brace {\sl does\/} count.) At present, \.{TANGLE} and \.{WEAVE} treat
-comments in slightly different ways, and it is necessary to satisfy both
-conventions: \.{TANGLE} ignores `\.|' characters entirely, while \.{WEAVE}
-uses them to switch between \TeX\ text and \PASCAL\ text. Therefore, a
-comment that includes a brace in a string in \pb---e.g., `\.{\{{ }look at
-this |"\{"| \}}'---will be handled correctly by \.{WEAVE}, but \.{TANGLE}
-will think there is an unmatched left brace. In order to satisfy both
-processors, one can write `\.{\{{ }look at this \\leftbrace\\{ }\}}', after
-setting up `\.{\\def\\leftbrace\{|"\{"|\}}'.
-
-7. Reserved words of \PASCAL\ must appear entirely in lowercase letters
-in the \.{WEB} file; otherwise their special nature will not be recognized
-by \.{WEAVE}. You could, for example, have a macro named \\{END} and it
-would not be confused with \PASCAL's \&{end}.
-
-However, you may not want to capitalize macro names just to distinguish them
-from other identifiers. Here is a way to unreserve \PASCAL's reserved word
-`\&{type}' and to substitute another word `\&{mtype}' in the \.{WEB} file.
-$$\vbox{\halign{\tt #\hfil\cr
-@d type(\char'43) == mem[\char'43].t\cr
-@d mtype == t \char'100\char'46{} y \char'100\char'46{} p
- \char'100\char'46{} e\cr
-@f mtype == type\cr
-@f type == true\cr}}$$
-In the output of \.{TANGLE}, the macro \.{mtype} now produces `\.{TYPE}'
-and the macro \.{type(x)} now produces `\.{MEM[X].T}'. In the output of
-\.{WEAVE}, these same inputs produce \&{mtype} and \\{type}(\|x),
-respectively.
-
-8. The \.{@f} feature allows you to define one identifier to act like
-another, and these format definitions are carried out sequentially, as the
-example above indicates. However, a given identifier has only one printed format
-throughout the entire document (and this format will even be used before
-the \.{@f} that defines it). The reason is that \.{WEAVE} operates in two
-passes; it processes \.{@f}'s and cross-references on the first pass and
-it does the output on the second.
-
-9. You may want some \.{@f} formatting that doesn't correspond to any
-existing reserved word. In that case, \.{WEAVE} could be extended in a
-fairly obvious way to include new ``reserved words'' in its vocabulary.
-The identifier `\&{xclause}' has in fact been included already as a
-reserved word, so that it can be used to format the `\&{loop}' macro,
-where `\&{loop}' is defined to be equivalent to `\&{while \\{true} do}'.
-
-10. Sometimes it is desirable to insert spacing into \PASCAL\ code that is
-more general than the thin space provided by `\.{@,}'. The \.{@t} feature
-can be used for this purpose; e.g., `\.{@t\\hskip 1in@>}' will
-leave one inch of blank space. Furthermore, `\.{@t\\4@>}' can be
-used to backspace by one unit of indentation, since the control sequence
-\.{\\4} is defined in \.{webmac} to be such a backspace. (This
-control sequence is used, for example, at the beginning of lines that
-contain labeled statements, so that the label will stick out a little at
-the left.)
-
-11. \.{WEAVE} and \.{TANGLE} are designed to work with two input files,
-called \\{web\_file} and \\{change\_file}, where \\{change\_file} contains
-data that overrides selected portions of \\{web\_file}. The resulting merged
-text is actually what has been called the \.{WEB} file elsewhere in this
-report.
-
-Here's how it works: The change file consists of zero or more ``changes,''
-where a change has the form `\.{@x}$\langle$old lines$\rangle$\.{@y}$\langle$%
-new lines$\rangle$\.{@z}'. The special control codes \.{@x}, \.{@y}, \.{@z},
-which are allowed only in change files, must appear at the beginning of a line;
-the remainder of such a line is ignored.
-The $\langle$old lines$\rangle$ represent material that exactly matches
-consecutive lines of the \\{web\_file}; the $\langle$new lines$\rangle$
-represent zero or more lines that are supposed to replace the old. Whenever
-the first ``old line'' of a change is found to match a line in the
-\\{web\_file}, all the other lines in that change must match too.
-
-Between changes, before the first change, and after the last change,
-the change file can have any number of lines that do not begin with
-`\.{@x}', `\.{@y}', or~`\.{@z}'. Such lines are bypassed and not used for
-matching purposes.
-
-This dual-input feature is useful when working with a master \.{WEB} file
-that has been received from elsewhere (e.g., \.{TANGLE.WEB} or
-\.{WEAVE.WEB} or \.{TEX.WEB}), when changes are desirable to customize the
-program for your local computer system. You will be able to debug your
-system-dependent changes without clobbering the master web file; and once
-your changes are working, you will be able to incorporate them readily
-into new releases of the master web file that you might receive from time
-to time.
- \section Appendices.
-The basic ideas of \.{WEB} can be understood most easily by looking at
-examples of ``real'' programs. Appendix~A shows the \.{WEB} input that
-generated modules 55--59 of the \.{WEAVE} program; Appendix~B shows the
-corresponding \TeX\ code output by \.{WEAVE}; and Appendix~C shows excerpts
-from the corresponding \PASCAL\ code output by \.{TANGLE}.
-
-The complete webs for \.{WEAVE} and \.{TANGLE} appear as the bulk of this
-report, in Appendices D and~E. The reader should first compare Appendix~A
-to the corresponding portion of Appendix~D; then the same material should
-be compared to Appendices B and~C. Finally, if time permits, the reader may
-enjoy studying the complete programs in Appendices D and~E, since \.{WEAVE}
-and \.{TANGLE} contain several interesting aspects, and since an attempt
-has been made in these appendices to evolve a style of programming that
-makes good use of the \.{WEB} language.
-
-Finally, Appendix F is the `\.{webmac}' file that sets \TeX\ up to accept
-the output of \.{WEAVE}; Appendix~G discusses how to use some of its macros
-to vary the output formats; and Appendix~H discusses what needs to be done
-when \.{WEAVE} and \.{TANGLE} are installed in a new operating environment.
- \section Performance statistics.
-The programs in Appendices D and E will optionally keep statistics on
-how much memory they require. Here is what they once printed out when
-processing themselves:
-
-\def\pstat#1#2#3
-#4{\yskip\noindent\.{#1} applied to \.{#2} (cpu time #3 sec)\par
-\halign{\quad\tt##\hfil\cr#4}}
-
-\pstat{TANGLE}{TANGLE}{15}
-{Memory usage statistics:\cr
-456 names, 215 replacement texts;\cr
-3396+3361 bytes, 6685+7329+5805 tokens.\cr}
-
-\pstat{TANGLE}{WEAVE}{30}
-{Memory usage statistics:\cr
-692 names, 339 replacement texts;\cr
-4576+4294 bytes, 10184+9875+9150 tokens.\cr}
-
-\pstat{WEAVE}{TANGLE}{45}
-{Memory usage statistics: 478 names, 2045 cross references, 4159+3729 bytes;\cr
-parsing required 684 scraps, 1300 texts, 3766 tokens, 119 levels;\cr
-sorting required 34 levels.\cr}
-
-\pstat{WEAVE}{WEAVE}{65}
-{Memory usage statistics: 737 names, 3306 cross references, 4896+4962 bytes;\cr
-parsing required 684 scraps, 1300 texts, 3766 tokens, 119 levels;\cr
-sorting required 73 levels.\cr}
-
-\yskip\noindent The cpu time for \PASCAL\ to process \.{TANGLE.PAS} was
-approximately 13 seconds, and \.{WEAVE.PAS} took approximately 26 seconds;
-thus the tangling time was slightly more than the compiling time. The cpu
-time for \TeX\ to process \.{TANGLE.TEX} was approximately 500 seconds,
-and \.{WEAVE.TEX} took approximately 750 seconds (i.e., about 7
-seconds per printed page, where these pages are substantially larger than
-the pages in a normal book). All cpu times quoted are for a DECsystem-10.
-
-\def\K{{\mc K}}
-The file \.{TANGLE.WEB} is about 125\K\ characters long; \.{TANGLE}
-reduces it to a file \.{TANGLE.PAS} whose size is about 42\K\ characters,
-while \.{WEAVE} expands it to a file \.{TANGLE.TEX} of about 185\K\null.
-The corresponding file sizes for \.{WEAVE.WEB}, \.{WEAVE.PAS}, and
-\.{WEAVE.TEX} are 180\K, 89\K, and 265\K.
-
-The much larger file \.{TEX.WEB} led to the following numbers:
-
-\pstat{TANGLE}{TEX}{110}
-{Memory usage statistics:\cr
-3750 names, 1768 replacement texts;\cr
-41895+41053 bytes, 42378+45074+41091 tokens.\cr}
-
-\pstat{WEAVE}{TEX}{270}
-{Memory usage statistics: 3412 names, 19699 cross references,
- 37900+40232 bytes;\cr
-parsing required 685 scraps, 1303 texts, 3784 tokens, 104 levels;\cr
-sorting required 52 levels.\cr}
-
-\yskip\noindent
-\PASCAL\ did \.{TEX.PAS} in about 75 seconds; \TeX\ did \.{TEX.TEX}
-in about 3600.
- % Here is a quotation that could not really be omitted
-
-\vfill
-
-{\baselineskip9pt
-\halign to\hsize{\hfil\quoteit#\tabskip 0pt plus 100pt&
- \hfil\quoteit#\tabskip 0pt\cr
-O, what a tangled web we weave&
- O, what a tangled WEB we weave\cr
-When first we practise to deceive!&
- When \TeX\ we practise to conceive!\cr
-\noalign{\vskip 2pt}
-\quoterm ---SIR WALTER SCOTT, {\quoteit Marmion} 6:17 (1808)&
- \quoterm ---RICHARD PALAIS (1982)\cr
-}}
-\eject
- \def\runninghead{APPENDIX A --- {\tentt WEB} FILE FORMAT}
-\section Appendix A.
-This excerpt from \.{WEAVE.WEB} produced modules 55--59 in Appendix~D.
-Note that some of the lines are indented to show the program structure.
-The indentation is ignored by \.{WEAVE} and \.{TANGLE}, but users find
-that \.{WEB} files are quite readable if they have some such indentation.
-
-\vskip 6pt
-\begingroup \def\tt{\eighttt} \baselineskip9pt
-% Note to myself: I had to remove SAIL characters from the file here!
-% Also tabs replaced by double-space. The changes were made in WEAVE source.
-\verbatim
-@* Searching for identifiers.
-The hash table described above is updated by the |id_lookup| procedure,
-which finds a given identifier and returns a pointer to its index in
-|byte_start|. The identifier is supposed to match character by character
-and it is also supposed to have a given |ilk| code; the same name may be
-present more than once if it is supposed to appear in the index with
-different typesetting conventions.
-If the identifier was not already present, it is inserted into the table.
-
-Because of the way \.{WEAVE}'s scanning mechanism works, it is most convenient
-to let |id_lookup| search for an identifier that is present in the |buffer|
-array. Two other global variables specify its position in the buffer: the
-first character is |buffer[id_first]|, and the last is |buffer[id_loc-1]|.
-
-@<Glob...@>=
-@!id_first:0..long_buf_size; {where the current identifier begins in the buffer}
-@!id_loc:0..long_buf_size; {just after the current identifier in the buffer}
-@#
-@!hash:array [0..hash_size] of sixteen_bits; {heads of hash lists}
-
-@ Initially all the hash lists are empty.
-
-@<Local variables for init...@>=
-@!h:0..hash_size; {index into hash-head array}
-
-@ @<Set init...@>=
-for h:=0 to hash_size-1 do hash[h]:=0;
-
-@ Here now is the main procedure for finding identifiers (and index
-entries). The parameter |t| is set to the desired |ilk| code. The
-identifier must either have |ilk=t|, or we must have
-|t=normal| and the identifier must be a reserved word.
-
-@p function id_lookup(@!t:eight_bits):name_pointer; {finds current identifier}
-label found;
-var i:0..long_buf_size; {index into |buffer|}
-@!h:0..hash_size; {hash code}
-@!k:0..max_bytes; {index into |byte_mem|}
-@!w:0..ww-1; {row of |byte_mem|}
-@!l:0..long_buf_size; {length of the given identifier}
-@!p:name_pointer; {where the identifier is being sought}
-begin l:=id_loc-id_first; {compute the length}
-@<Compute the hash code |h|@>;
-@<Compute the name location |p|@>;
-if p=name_ptr then @<Enter a new name into the table at position |p|@>;
-id_lookup:=p;
-end;
-
-@ A simple hash code is used: If the sequence of
-ASCII codes is $c_1c_2\ldots c_m$, its hash value will be
-$$(2^{n-1}c_1+2^{n-2}c_2+\cdots+c_n)\,\bmod\,|hash_size|.$$
-
-@<Compute the hash...@>=
-h:=buffer[id_first]; i:=id_first+1;
-while i<id_loc do
- begin h:=(h+h+buffer[i]) mod hash_size; incr(i);
- end
-?endgroup % end of verbatim mode
-\endgroup
-\vfill\eject
- \def\runninghead{APPENDIX B --- TRANSLATION BY {\tentt WEAVE}}
-\section Appendix B.
-This excerpt from \.{WEAVE.TEX} corresponds to Appendix A.
-
-% I've inserted \vfill's here at the blank lines, to squeeze this on one page!
-\begingroup \def\tt{\eighttt} \baselineskip9pt
-\verbatim
-?vfill?verbatimgobble
-\N55. Searching for identifiers.
-The hash table described above is updated by the \\{id\_lookup} procedure,
-which finds a given identifier and returns a pointer to its index in
-\\{byte\_start}. The identifier is supposed to match character by character
-and it is also supposed to have a given \\{ilk} code; the same name may be
-present more than once if it is supposed to appear in the index with
-different typesetting conventions.
-If the identifier was not already present, it is inserted into the table.
-?vfill?verbatimgobble
-Because of the way \.{WEAVE}'s scanning mechanism works, it is most convenient
-to let \\{id\_lookup} search for an identifier that is present in the %
-\\{buffer}
-array. Two other global variables specify its position in the buffer: the
-first character is $\\{buffer}[\\{id\_first}]$, and the last is $\\{buffer}[%
-\\{id\_loc}-1]$.
-?vfill?verbatimgobble
-\Y\P$\4\X9:Globals in the outer block\X\mathrel{+}\S$\6
-\4\\{id\_first}: \37$0\to\\{long\_buf\_size}$;\C{where the current identifier
-begins in the buffer}\6
-\4\\{id\_loc}: \37$0\to\\{long\_buf\_size}$;\C{just after the current
-identifier in the buffer}\7
-\4\\{hash}: \37\&{array} $[0\to\\{hash\_size}]$ \1\&{of}\5
-\\{sixteen\_bits};\C{heads of hash lists}\2\par
-\fi
-?vfill?verbatimgobble
-\M56. Initially all the hash lists are empty.
-?vfill?verbatimgobble
-\Y\P$\4\X16:Local variables for initialization\X\mathrel{+}\S$\6
-\4\|h: \37$0\to\\{hash\_size}$;\C{index into hash-head array}\par
-\fi
-?vfill?verbatimgobble
-\M57. \P$\X10:Set initial values\X\mathrel{+}\S$\6
-\&{for} $\|h\K0\mathrel{\&{to}}\\{hash\_size}-1$ \1\&{do}\5
-$\\{hash}[\|h]\K0$;\2\par
-\fi
-?vfill?verbatimgobble
-\M58. Here now is the main procedure for finding identifiers (and index
-entries). The parameter \|t is set to the desired \\{ilk} code. The
-identifier must either have $\\{ilk}=\|t$, or we must have
-$\|t=\\{normal}$ and the identifier must be a reserved word.
-?vfill?verbatimgobble
-\Y\P\4\&{function}\1\ \37$\\{id\_lookup}(\|t:\\{eight\_bits})$: \37\\{name%
-\_pointer};\C{finds current identifier}\6
-\4\&{label} \37\\{found};\6
-\4\&{var} \37\|i: \37$0\to\\{long\_buf\_size}$;\C{index into \\{buffer}}\6
-\|h: \37$0\to\\{hash\_size}$;\C{hash code}\6
-\|k: \37$0\to\\{max\_bytes}$;\C{index into \\{byte\_mem}}\6
-\|w: \37$0\to\\{ww}-1$;\C{row of \\{byte\_mem}}\6
-\|l: \37$0\to\\{long\_buf\_size}$;\C{length of the given identifier}\6
-\|p: \37\\{name\_pointer};\C{where the identifier is being sought}\2\6
-\&{begin} \37$\|l\K\\{id\_loc}-\\{id\_first}$;\C{compute the length}\6
-\X59:Compute the hash code \|h\X;\6
-\X60:Compute the name location \|p\X;\6
-\&{if} $\|p=\\{name\_ptr}$ \1\&{then}\5
-\X62:Enter a new name into the table at position \|p\X;\2\6
-$\\{id\_lookup}\K\|p$;\6
-\&{end};\par
-\fi
-?vfill?verbatimgobble
-\M59. A simple hash code is used: If the sequence of
-ASCII codes is $c_1c_2\ldots c_m$, its hash value will be
-$$(2^{n-1}c_1+2^{n-2}c_2+\cdots+c_n)\,\bmod\,\\{hash\_size}.$$
-?vfill?verbatimgobble
-\Y\P$\4\X59:Compute the hash code \|h\X\S$\6
-$\|h\K\\{buffer}[\\{id\_first}]$;\5
-$\|i\K\\{id\_first}+1$;\6
-\&{while} $\|i<\\{id\_loc}$ \1\&{do}\6
-\&{begin} \37$\|h\K(\|h+\|h+\\{buffer}[\|i])\mathbin{\&{mod}}\\{hash\_size}$;\5
-$\\{incr}(\|i)$;\6
-\&{end}\2\par
-\U section~58.\fi
-?endgroup
-\endgroup
-\eject
- \def\runninghead{APPENDIX C --- TRANSLATION BY {\tentt TANGLE}}
-\section Appendix C.
-The \.{TANGLE} processor converts \.{WEAVE.WEB} into a syntactically
-correct (but not very pretty) \PASCAL\ program \.{WEAVE.PAS}.
-The first three and last two lines of output are shown here, together with the
-lines of code generated by modules 55--62 and the environments of
-those lines. There are 1559 lines in all; the notation
-`\.. \\. \\.' stands for portions that are not shown.
-
-Note that, for example, the code corresponding to
-module 55 begins with `\.{\{55:\}}' and ends with `\.{\{:55\}}';
-the code from modules 59--62 has been tangled into the code from module 58.
-
-\vskip6pt
-\verbatim
-{2:}{4:}{$C-,A+,D-}{[$C+,D+]}{:4}
-PROGRAM WEAVE(WEBFILE,CHANGEFILE,TEXFILE);LABEL 9999;CONST{8:}
-MAXBYTES=45000;MAXNAMES=5000;MAXMODULES=2000;HASHSIZE=353;BUFSIZE=100;
- . . .
-TOKPTR:0..MAXTOKS;{MAXTOKPTR,MAXTXTPTR:0..MAXTOKS;}{:53}{55:}
-IDFIRST:0..LONGBUFSIZE;IDLOC:0..LONGBUFSIZE;
-HASH:ARRAY[0..HASHSIZE]OF SIXTEENBITS;{:55}{63:}CURNAME:NAMEPOINTER;
- . . .
-PROCEDURE INITIALIZE;VAR{16:}I:0..127;{:16}{40:}WI:0..1;{:40}{56:}
-H:0..HASHSIZE;{:56}{247:}C:ASCIICODE;{:247}BEGIN{10:}HISTORY:=0;{:10}
- . . .
-TOKPTR:=1;TEXTPTR:=1;TOKSTART[0]:=1;TOKSTART[1]:=1;{MAXTOKPTR:=1;
-MAXTXTPTR:=1;}{:54}{57:}FOR H:=0 TO HASHSIZE-1 DO HASH[H]:=0;{:57}{94:}
-SCANNINGHEX:=FALSE;{:94}{102:}MODTEXT[0]:=32;{:102}{124:}OUTPTR:=1;
- . . .
-IF R=0 THEN XREF[P]:=XREFPTR ELSE XMEM[R].XLINKFIELD:=XREFPTR;END;{:51}
-{58:}FUNCTION IDLOOKUP(T:EIGHTBITS):NAMEPOINTER;LABEL 31;
-VAR I:0..LONGBUFSIZE;H:0..HASHSIZE;K:0..MAXBYTES;W:0..1;
-L:0..LONGBUFSIZE;P:NAMEPOINTER;BEGIN L:=IDLOC-IDFIRST;{59:}
-H:=BUFFER[IDFIRST];I:=IDFIRST+1;
-WHILE I<IDLOC DO BEGIN H:=(H+H+BUFFER[I])MOD HASHSIZE;I:=I+1;END{:59};
-{60:}P:=HASH[H];
-WHILE P<>0 DO BEGIN IF(BYTESTART[P+2]-BYTESTART[P]=L)AND((ILK[P]=T)OR((T
-=0)AND(ILK[P]>3)))THEN{61:}BEGIN I:=IDFIRST;K:=BYTESTART[P];W:=P MOD 2;
-WHILE(I<IDLOC)AND(BUFFER[I]=BYTEMEM[W,K])DO BEGIN I:=I+1;K:=K+1;END;
-IF I=IDLOC THEN GOTO 31;END{:61};P:=LINK[P];END;P:=NAMEPTR;
-LINK[P]:=HASH[H];HASH[H]:=P;31:{:60};IF P=NAMEPTR THEN{62:}
-BEGIN W:=NAMEPTR MOD 2;
-IF BYTEPTR[W]+L>MAXBYTES THEN BEGIN WRITELN(TERMOUT);
-WRITE(TERMOUT,'! Sorry, ','byte memory',' capacity exceeded');ERROR;
-HISTORY:=3;JUMPOUT;END;
-IF NAMEPTR+2>MAXNAMES THEN BEGIN WRITELN(TERMOUT);
-WRITE(TERMOUT,'! Sorry, ','name',' capacity exceeded');ERROR;HISTORY:=3;
-JUMPOUT;END;I:=IDFIRST;K:=BYTEPTR[W];
-WHILE I<IDLOC DO BEGIN BYTEMEM[W,K]:=BUFFER[I];K:=K+1;I:=I+1;END;
-BYTEPTR[W]:=K;BYTESTART[NAMEPTR+2]:=K;NAMEPTR:=NAMEPTR+1;ILK[P]:=T;
-XREF[P]:=0;END{:62};IDLOOKUP:=P;END;{:58}{66:}
-FUNCTION MODLOOKUP(L:SIXTEENBITS):NAMEPOINTER;LABEL 31;VAR C:0..4;
- . . .
-WRITE(TERMOUT,'(That was a fatal error, my friend.)');END;END{:263};
-END.{:261}
-?endgroup
-\vfill\eject
- \pageno=200 % take account of the page numbers for App's D and E.
- \def\runninghead{APPENDIX F --- MACROS FOR FORMATTING}
-\section Appendix F: The \.{webmac.tex} file.
-This is the file that extends ``plain \TeX'' format in order to support the
-features needed by the output of \.{WEAVE}.
-
-\vskip6pt
-\verbatim
-% standard macros for WEB listings (in addition to PLAIN.TEX)
-\xdef\fmtversion{\fmtversion+WEBMAC4.0} % identifies current set of macros
-\parskip 0pt % no stretch between paragraphs
-\parindent 1em % for paragraphs and for the first line of Pascal text
-
-\font\eightrm=cmr8 \let\sc=\eightrm % NOT a caps-and-small-caps font!
-\let\mainfont=\tenrm
-\font\titlefont=cmr7 scaled\magstep4 % title on the contents page
-\font\ttitlefont=cmtt10 scaled\magstep2 % typewriter type in title
-\font\tentex=cmtex10 % TeX extended character set (used in strings)
-
-\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
-\def\|#1{\hbox{$#1$}} % one-letter identifiers look a bit better this way
-\def\&#1{\hbox{\bf#1\/}} % boldface type for reserved words
-\def\.#1{\hbox{\tentex % typewriter type for strings
- \let\\=\BS % backslash in a string
- \let\'=\RQ % right quote in a string
- \let\`=\LQ % left quote in a string
- \let\{=\LB % left brace in a string
- \let\}=\RB % right brace in a string
- \let\~=\TL % tilde in a string
- \let\ =\SP % space in a string
- \let\_=\UL % underline in a string
- \let\&=\AM % ampersand in a string
- #1}}
-\def\#{\hbox{\tt\char`\#}} % parameter sign
-\def\${\hbox{\tt\char`\$}} % dollar sign
-\def\%{\hbox{\tt\char`\%}} % percent sign
-\def\^{\ifmmode\mathchar"222 \else\char`^ \fi} % pointer or hat
-% circumflex accents can be obtained from \^^D instead of \^
-\def\AT!{@} % at sign for control text
-
-\chardef\AM=`\& % ampersand character in a string
-\chardef\BS=`\\ % backslash in a string
-\chardef\LB=`\{ % left brace in a string
-\def\LQ{{\tt\char'22}} % left quote in a string
-\chardef\RB=`\} % right brace in a string
-\def\RQ{{\tt\char'23}} % right quote in a string
-\def\SP{{\tt\char`\ }} % (visible) space in a string
-\chardef\TL=`\~ % tilde in a string
-\chardef\UL=`\_ % underline character in a string
-
-\newbox\bak \setbox\bak=\hbox to -1em{} % backspace one em
-\newbox\bakk\setbox\bakk=\hbox to -2em{} % backspace two ems
-
-\newcount\ind % current indentation in ems
-\def\1{\global\advance\ind by1\hangindent\ind em} % indent one more notch
-\def\2{\global\advance\ind by-1} % indent one less notch
-\def\3#1{\hfil\penalty#10\hfilneg} % optional break within a statement
-\def\4{\copy\bak} % backspace one notch
-\def\5{\hfil\penalty-1\hfilneg\kern2.5em\copy\bakk\ignorespaces}% optional break
-\def\6{\ifmmode\else\par % forced break
- \hangindent\ind em\noindent\kern\ind em\copy\bakk\ignorespaces\fi}
-\def\7{\Y\6} % forced break and a little extra space
-
-\let\yskip=\smallskip
-\def\to{\mathrel{.\,.}} % double dot, used only in math mode
-\def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1~#2.\par}}
-\def\lapstar{\rlap{*}}
-\def\startsection{\Q\noindent{\let\*=\lapstar\bf\modstar.\quad}}
-\def\defin#1{\global\advance\ind by 2 \1\&{#1 }} % begin `define' or `format'
-\def\A{\note{See also section}} % crossref for doubly defined section name
-\def\As{\note{See also sections}} % crossref for multiply defined section name
-\def\B{\mathopen{\.{@\{}}} % begin controlled comment
-\def\C#1{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi % Pascal comments
- \XX\hfil\penalty-1\hfilneg\quad$\{\,$#1$\,\}$\XX}
-\def\D{\defin{define}} % macro definition
-\def\E{\cdot10^} % exponent in floating point constant
-\def\ET{ and~} % conjunction between two section numbers
-\def\ETs{, and~} % conjunction between the last two of several section numbers
-\def\F{\defin{format}} % format definition
-\let\G=\ge % greater than or equal sign
-\def\H#1{\hbox{\rm\char"7D\tt#1}} % hexadecimal constant
-\let\I=\ne % unequal sign
-\def\J{\.{@\&}} % TANGLE's join operation
-\let\K=\gets % left arrow
-\let\L=\le % less than or equal sign
-\outer\def\M#1.{\MN#1.\ifon\vfil\penalty-100\vfilneg % beginning of section
- \vskip12ptminus3pt\startsection\ignorespaces}
-\outer\def\N#1.#2.{\MN#1.\vfil\eject % beginning of starred section
- \def\rhead{\uppercase{\ignorespaces#2}} % define running headline
- \message{*\modno} % progress report
- \edef\next{\write\cont{\Z{#2}{\modno}{\the\pageno}}}\next % to contents file
- \ifon\startsection{\bf\ignorespaces#2.\quad}\ignorespaces}
-\def\MN#1.{\par % common code for \M, \N
- {\xdef\modstar{#1}\let\*=\empty\xdef\modno{#1}}
- \ifx\modno\modstar \onmaybe \else\ontrue \fi \mark{\modno}}
-\def\O#1{\hbox{\rm\char'23\kern-.2em\it#1\/\kern.05em}} % octal constant
-\def\P{\rightskip=0pt plus 100pt minus 10pt % go into Pascal mode
- \sfcode`;=3000
- \pretolerance 10000
- \hyphenpenalty 10000 \exhyphenpenalty 10000
- \global\ind=2 \1\ \unskip}
-\def\Q{\rightskip=0pt % get out of Pascal mode
- \sfcode`;=1500 \pretolerance 200 \hyphenpenalty 50 \exhyphenpenalty 50 }
-\let\R=\lnot % logical not
-\let\S=\equiv % equivalence sign
-\def\T{\mathclose{\.{@\}}}} % terminate controlled comment
-\def\U{\note{This code is used in section}} % crossref for use of a section
-\def\Us{\note{This code is used in sections}} % crossref for uses of a section
-\let\V=\lor % logical or
-\let\W=\land % logical and
-\def\X#1:#2\X{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi % section name
- \XX$\langle\,$#2{\eightrm\kern.5em#1}$\,\rangle$\XX}
-\def\Y{\par\yskip}
-\let\Z=\let % now you can \send the control sequence \Z
-\def\){\hbox{\.{@\$}}} % sign for string pool check sum
-\def\]{\hbox{\.{@\\}}} % sign for forced line break
-\def\=#1{\kern2pt\hbox{\vrule\vtop{\vbox{\hrule
- \hbox{\strut\kern2pt\.{#1}\kern2pt}}
- \hrule}\vrule}\kern2pt} % verbatim string
-\let\~=\ignorespaces
-\let\*=*
-
-\def\onmaybe{\let\ifon=\maybe} \let\maybe=\iftrue
-\newif\ifon \newif\iftitle \newif\ifpagesaved
-\def\lheader{\mainfont\the\pageno\eightrm\qquad\rhead\hfill\title\qquad
- \tensy x\mainfont\topmark} % top line on left-hand pages
-\def\rheader{\tensy x\mainfont\topmark\eightrm\qquad\title\hfill\rhead
- \qquad\mainfont\the\pageno} % top line on right-hand pages
-\def\page{\box255 }
-\def\normaloutput#1#2#3{\ifodd\pageno\hoffset=\pageshift\fi
- \shipout\vbox{
- \vbox to\fullpageheight{
- \iftitle\global\titlefalse
- \else\hbox to\pagewidth{\vbox to10pt{}\ifodd\pageno #3\else#2\fi}\fi
- \vfill#1}} % parameter #1 is the page itself
- \global\advance\pageno by1}
-
-\def\rhead{\.{WEB} OUTPUT} % this running head is reset by starred sections
-\def\title{} % an optional title can be set by the user
-\def\topofcontents{\centerline{\titlefont\title}
- \vfill} % this material will start the table of contents page
-\def\botofcontents{\vfill} % this material will end the table of contents page
-\def\contentspagenumber{0} % default page number for table of contents
-\newdimen\pagewidth \pagewidth=6.5in % the width of each page
-\newdimen\pageheight \pageheight=8.7in % the height of each page
-\newdimen\fullpageheight \fullpageheight=9in % page height including headlines
-\newdimen\pageshift \pageshift=0in % shift righthand pages wrt lefthand ones
-\def\magnify#1{\mag=#1\pagewidth=6.5truein\pageheight=8.7truein
- \fullpageheight=9truein\setpage}
-\def\setpage{\hsize\pagewidth\vsize\pageheight} % use after changing page size
-\def\contentsfile{CONTENTS} % file that gets table of contents info
-\def\readcontents{\input CONTENTS}
-
-\newwrite\cont
-\output{\setbox0=\page % the first page is garbage
- \openout\cont=\contentsfile
- \global\output{\normaloutput\page\lheader\rheader}}
-\setpage
-\vbox to \vsize{} % the first \topmark won't be null
-
-\def\ch{\note{The following sections were changed by the change file:}
- \let\*=\relax}
-\newbox\sbox % saved box preceding the index
-\newbox\lbox % lefthand column in the index
-\def\inx{\par\vskip6pt plus 1fil % we are beginning the index
- \write\cont{} % ensure that the contents file isn't empty
- \closeout\cont % the contents information has been fully gathered
- \output{\ifpagesaved\normaloutput{\box\sbox}\lheader\rheader\fi
- \global\setbox\sbox=\page \global\pagesavedtrue}
- \pagesavedfalse \eject % eject the page-so-far and predecessors
- \setbox\sbox\vbox{\unvbox\sbox} % take it out of its box
- \vsize=\pageheight \advance\vsize by -\ht\sbox % the remaining height
- \hsize=.5\pagewidth \advance\hsize by -10pt
- % column width for the index (20pt between cols)
- \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines
- \def\lr{L} % this tells whether the left or right column is next
- \output{\if L\lr\global\setbox\lbox=\page \gdef\lr{R}
- \else\normaloutput{\vbox to\pageheight{\box\sbox\vss
- \hbox to\pagewidth{\box\lbox\hfil\page}}}\lheader\rheader
- \global\vsize\pageheight\gdef\lr{L}\global\pagesavedfalse\fi}
- \message{Index:}
- \parskip 0pt plus .5pt
- \outer\def\:##1, {\par\hangindent2em\noindent##1:\kern1em} % index entry
- \let\ttentry=\. \def\.##1{\ttentry{##1\kern.2em}} % give \tt a little room
- \def\[##1]{$\underline{##1}$} % underlined index item
- \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar
- \hyphenpenalty 10000 \parindent0pt}
-\def\fin{\par\vfill\eject % this is done when we are ending the index
- \ifpagesaved\null\vfill\eject\fi % output a null index column
- \if L\lr\else\null\vfill\eject\fi % finish the current page
- \parfillskip 0pt plus 1fil
- \def\rhead{NAMES OF THE SECTIONS}
- \message{Section names:}
- \output{\normaloutput\page\lheader\rheader}
- \setpage
- \def\note##1##2.{\hfil\penalty-1\hfilneg\quad{\eightrm##1 ##2.}}
- \linepenalty=10 % try to conserve lines
- \def\U{\note{Used in section}} % crossref for use of a section
- \def\Us{\note{Used in sections}} % crossref for uses of a section
- \def\:{\par\hangindent 2em}\let\*=*\let\.=\ttentry}
-\def\con{\par\vfill\eject % finish the section names
- \rightskip 0pt \hyphenpenalty 50 \tolerance 200
- \setpage
- \output{\normaloutput\page\lheader\rheader}
- \titletrue % prepare to output the table of contents
- \pageno=\contentspagenumber \def\rhead{TABLE OF CONTENTS}
- \message{Table of contents:}
- \topofcontents
- \line{\hfil Section\hbox to3em{\hss Page}}
- \def\Z##1##2##3{\line{\ignorespaces##1
- \leaders\hbox to .5em{.\hfil}\hfil\ ##2\hbox to3em{\hss##3}}}
- \readcontents\relax % read the contents info
- \botofcontents \end} % print the contents page(s) and terminate
-?endgroup
-\vfill\eject
- \def\runninghead{APPENDIX G --- NOTES ON FORMATTING}
-\section Appendix G: How to use \.{WEB} macros.
-The macros in \.{webmac} make it possible to produce a variety of formats
-without editing the output of \.{WEAVE}, and the purpose of this appendix
-is to explain some of the possibilities.
-
-\def\point#1.{\yskip\indent#1.\quad\ignorespaces}
-
-\point 1. Three fonts have been declared in addition to the standard fonts of
-\.{PLAIN} format: You can say `\.{\{\\sc STUFF\}}' to get {\sc STUFF}
-in small caps; and you can select the largish fonts \.{\\titlefont}
-and \.{\\ttitlefont} in the title of your document, where \.{\\ttitlefont}
-is a typewriter style of type.
-
-\point 2. When you mention an identifier in \TeX\ text, you normally call
-it `\.{|identifier|}'. But you can also say `\.{\\\\\{identifier\}}'. The
-output will look the same in both cases, but the second alternative
-doesn't put \\{identifier} into the index, since
-it bypasses \.{WEAVE}'s translation from \PASCAL\ mode.
-
-\point 3. To get typewriter-like type, as when referring to `\.{WEB}', you
-can use the `\.{\\.}' macro (e.g., `\.{\\.\{WEB\}}'). In the argument to
-this macro you should insert an additional backslash before the symbols
-listed as `special string characters' in the index to \.{WEAVE}, i.e.,
-before backslashes and dollar signs and the like.
-A `\.{\\\ }' here will result in the visible space symbol; to get an
-invisible space following a control sequence you can say `\.{\{\ \}}'.
-
-\point 4. The three control sequences \.{\\pagewidth}, \.{\\pageheight},
-and \.{\\fullpageheight} can be redefined in the limbo section at the
-beginning of your \.{WEB} file, to change the dimensions of each page.
-The standard settings
-$$\lpile{\.{\\pagewidth=6.5in}\cr
- \.{\\pageheight=8.7in}\cr
- \.{\\fullpageheight=9in}\cr}$$
-were used to prepare the present report; \.{\\fullpageheight} is
-\.{\\pageheight} plus room for the additional heading and page numbers at
-the top of each page. If you change any of these quantities, you should
-call the macro \.{\\setpage} immediately after making the change.
-
-\point 5. The \.{\\pageshift} macro defines an amount by which right-hand
-pages (i.e., odd-numbered pages) are shifted right with respect to
-left-hand (even-numbered) ones. By adjusting this amount you may be
-able to get two-sided output in which the page numbers line up on
-opposite sides of each sheet.
-
-\point 6. The \.{\\title} macro will appear at the top of each page
-in small caps. For example, Appendix~D was produced after saying
-`\.{\\def\\title\{WEAVE\}}'.
-
-\point 7. The first page usually is assigned page number 1.
-To start on page 16, with contents
-on page 15, say this: `\.{\\def\\contentspagenumber\{15\}}
-\.{\\pageno=\\contentspagenumber} \.{\\advance\\pageno by 1}'. (Appendix~D
-was generated that way.)
-
-\point 8. The macro \.{\\iftitle} will suppress the header line if it is
-defined by `\.{\\titletrue}'. The normal value is \.{\\titlefalse}
-except for the table of contents; thus, the contents
-page is usually unnumbered.
-
-Two macros are provided to give flexibility to the table of
-contents: \.{\\topofcontents} is invoked just before the contents
-info is read, and \.{\\botofcontents} is invoked just after.
-For example, Appendix~D was produced with the following definitions:
-$$\lpile{\.{\\def\\topofcontents\{\\null\\vfill}\cr
- \.{ { }\\titlefalse \% include headline on the contents page}\cr
- \.{ { }\\def\\rheader\{\\mainfont Appendix D\\hfil 15\}}\cr
- \.{ { }\\centerline\{\\titlefont The \{\\ttitlefont WEAVE\}{ }processor\}}\cr
- \.{ { }\\vskip 15pt \\centerline\{(Version 4)\}{ }\\vfill\}}\cr}$$
-Redefining \.{\\rheader}, which is the headline for right-hand pages,
-suffices in this case to put the desired information at the top of the
-contents page.
-
-\point 9. Data for the table of contents is written to a file that
-is read after the indexes have been \TeX ed; there's one line of data
-for every starred module. For example, when Appendix~D was being generated,
-a file \.{CONTENTS.TEX} containing
-$$\lpile{\.{\\Z \{{ }Introduction\}\{1\}\{16\}}\cr
- \.{\\Z \{{ }The character set\}\{11\}\{19\}}\cr}$$
-and similar lines was created. The \.{\\topofcontents} macro could
-redefine \.{\\Z} so that the information appears in another format.
-
-\point 10. Sometimes it is necessary or desirable to divide the output of
-\.{WEAVE} into subfiles that can be processed separately. For example,
-the listing of \TeX\ runs to more than 500 pages, and that is enough to
-exceed the capacity of many printing devices and/or their software.
-When an extremely large job isn't cut into smaller pieces, the entire
-process might be spoiled by a single error of some sort, making it
-necessary to start everything over.
-
-Here's a safe way to break a woven file into three parts:
-Say the pieces are $\alpha$,
-$\beta$, and $\gamma$, where each piece begins with a starred module.
-All macros should be defined in the opening limbo section of $\alpha$,
-and copies of this \TeX\ code should be placed at the
-beginning of $\beta$ and of $\gamma$. In order to process the parts
-separately, we need to take care of two things: The starting page
-numbers of $\beta$ and $\gamma$ need to be set up properly, and
-the table of contents data from all three runs needs to be
-accumulated.
-
-The \.{webmac} macros include two control sequences \.{\\contentsfile} and
-\.{\\readcontents} that facilitate the necessary processing. We include
-`\.{\\def\\contentsfile\{CONT1\}}' in the limbo section of $\alpha$, and
-we include `\.{\\def\\contentsfile\{CONT2\}}' in the limbo section of
-$\beta$; this causes \TeX\ to write the contents data for $\alpha$ and $\beta$
-into \.{CONT1.TEX} and \.{CONT2.TEX}. Now in $\gamma$ we say
-$$\.{\\def\\readcontents\{\\input CONT1 \\input CONT2 \\input CONTENTS\}};$$
-this brings in the data from all three pieces, in the proper order.
-
-However, we still need to solve the page-numbering problem. One way to
-do it is to include the following in the limbo material for $\beta$:
-$$\lpile{\.{\\message\{Please type the last page number of part 1: \}}\cr
- \.{\\read -1 to \\temp \\pageno=\\temp \\advance\\pageno by 1}\cr}$$
-Then you simply provide the necessary data when \TeX\ requests
-it; a similar construction is used at the beginning of $\gamma$.
-
-This method can, of course, be used to divide a woven file into
-any number of pieces.
-
-\point 11. Sometimes it is nice to include things in the index that are
-typeset in a special way. For example, we might want to have an
-index entry for `\TeX'. \.{WEAVE} provides two simple ways to
-typeset an index entry (unless the entry is an identifier or a reserved word):
-`\.{@\^}' gives roman type, and `\.{@.}' gives typewriter type.
-But if we try to typeset `\TeX' in roman type by saying, e.g.,
-`\.{@\^\\TeX@>}', the backslash character gets in the way,
-and this entry wouldn't appear in the index with the T's.
-
-The solution is to use the `\.{@:}' feature, declaring a macro that
-simply removes a sort key as follows:
-$$\.{\\def\\9\#1\{\}}$$
-Now you can say, e.g., `\.{@:TeX\}\{\\TeX@>}' in your \.{WEB} file; \.{WEAVE}
-puts it into the index alphabetically, based on the sort key, and
-produces the macro call `\.{\\9\{TeX\}\{\\TeX\}}' which will ensure that
-the sort key isn't printed.
-
-A similar idea can be used to insert hidden material into module
-names so that they are alphabetized in whatever way you might wish.
-Some people call these tricks ``special refinements''; others call
-them ``kludges''.
-
-\point 12. The control sequence \.{\\modno} is set to the number of the
-module being typeset.
-
-\point 13. If you want to list only the modules that have changed,
-together with the index, put the command `\.{\\let\\maybe=\\iffalse}' in
-the limbo section before the first module of your \.{WEB} file. It's
-customary to make this the first change in your change file.
-
-\point 14. To get output in languages other than English, redefine the
-macros \.{\\A}, \.{\\As}, \.{\\ET}, \.{\\ETs}, \.{\\U}, \.{\\Us},
-\.{\\ch}, \.{\\fin}, and \.{\\con}. \.{WEAVE} itself need not be changed.
-
-\vfill\eject
- \def\runninghead{APPENDIX H --- GETTING STARTED}
-\section Appendix H: Installing the \.{WEB} system.
-Suppose you want to use the \.{WEB} programs on your computer, and suppose
-that you can't simply borrow them from somebody else who has the same
-kind of machine. Here's what to do:
-
-\yskip
-\def\step(#1){\par\hangindent 2em\noindent\hbox to 2em{\hfil(#1) }\ignorespaces}
-\step(1) Get a tape that contains the files \.{WEAVE.WEB}, \.{TANGLE.WEB},
-\.{TANGLE.PAS}, and \.{WEBMAC.TEX}. The tape will probably also contain an
-example change file \.{TANGLE.CH}.
-\step(2) Look at the sections of \.{TANGLE} that are listed under ``system
-dependencies'' in the index of Appendix~E above, and figure out what changes
-(if any) will be needed for your system.
-\step(3) Make a change file \.{TANGLE.CH} that contains the changes of~(2);
-do not change your copy of \.{TANGLE.WEB}, leave it intact. (The
-rules for change files are explained at the end of the manual just before
-the appendices; you may want to look at the example change file that
-arrived with your copy of \.{TANGLE.WEB}. It's also a good idea to
-define all the ``switches'' like \&{debug} and \&{gubed} to be null in your
-first change files; then you can sure that your compiler will handle
-all of the code.)
-\step(4) Make the changes of (2) in your copy of \.{TANGLE.PAS}. (If these
-changes are extensive, you might be better off finding some computer
-that already has \.{TANGLE} running, and making the new \.{TANGLE.PAS}
-from \.{TANGLE.WEB} and your \.{TANGLE.CH}.)
-\step(5) Use your \PASCAL\ compiler to convert your copy of \.{TANGLE.PAS}
-to a running program \.{TANGLE}.
-\step(6) Check your changes as follows: Run \.{TANGLE} on \.{TANGLE.WEB}
-and your \.{TANGLE.CH}, yielding $\.{TANGLE.PAS}'$; make a running
-program $\.{TANGLE}'$ by applying \PASCAL\ to
-$\.{TANGLE.PAS}'$; run $\.{TANGLE}'$ on \.{TANGLE.WEB} and
-your \.{TANGLE.CH}, yielding $\.{TANGLE.PAS}''$; and check
-that $\.{TANGLE.PAS}''$ is identical to
-$\.{TANGLE.PAS}'$. Once this test has been passed, you have got a
-working \.{TANGLE} program.
-\step(7) Make a change file \.{WEAVE.CH} analogous to (3), but this time
-consider the system-dependent parts of \.{WEAVE} that are listed in
-the index to Appendix~D.
-\step(8) Run \.{TANGLE} on \.{WEAVE.WEB} and your \.{WEAVE.CH}, obtaining
-\.{WEAVE.PAS}.
-\step(9) Use \PASCAL\ on \.{WEAVE.PAS} to make a running \.{WEAVE} program.
-\step(10) Run \.{WEAVE} on \.{TANGLE.WEB} and \.{TANGLE.CH} to produce
-\.{TANGLE.TEX}.
-\step(11) Run \TeX\ on \.{TANGLE.TEX}, obtaining a listing analogous to
-Appendix~E. This listing will incorporate your changes.
-\step(12) Run \.{WEAVE} on \.{WEAVE.WEB} and your \.{WEAVE.CH} to produce
-\.{WEAVE.TEX}.
-\step(13) Run \TeX\ on \.{WEAVE.TEX}, obtaining a listing analogous to
-Appendix~D that incorporates your changes.
-
-\yskip\noindent
-This description assumes that you already have a working \TeX82 system.
-But what if you don't have \TeX82? Then you start with a tape that also
-contains \.{TEX.WEB} and \.{plain.tex}, and you refer to a hardcopy
-listing of the \TeX82 program corresponding to \.{TEX.WEB}. Between steps
-(10) and (11) you do the following:
-
-\yskip
-\def\substep(10.#1){\par\hangindent 4em\noindent
- \hbox to 4em{\hfil(10.#1) }\ignorespaces}
-\substep(10.1) Make a change file \.{TEX.CH} to fix the system dependent
-portions of \.{TEX.WEB}, in a manner analogous to step~(2). Since \TeX\ is
-a much more complex program than \.{WEAVE} or \.{TANGLE}, there are more
-system-dependent features to think about, but by now you will be good at
-making such modifications. Do not make any changes to \.{TEX.WEB}.
-\substep(10.2) Make an almost-copy of your \.{TEX.CH} called \.{INITEX.CH};
-this one will have the `\&{init}' and `\&{tini}' macros redefined in order
-to make the initialization version of \TeX. It also might have smaller
-font memory and dynamic memory areas, since \.{INITEX} doesn't need as
-much memory for such things; by setting the memory smaller in \.{INITEX},
-you guarantee that the production system will have a ``cushion.''
-\substep(10.3) Run \.{TANGLE} on \.{TEX.WEB} and \.{INITEX.CH}, obtaining
-\.{INITEX.PAS} and \.{TEX.POOL}.
-\substep(10.4) Run \PASCAL\ on \.{INITEX.PAS}, obtaining \.{INITEX}.
-\substep(10.5) Run \.{INITEX} on \.{TEX.POOL}, during which run you type
-`\.{plain}' and `\.{\\dump}'. This will produce a file \.{plain.fmt}
-containing the data needed to initialize \TeX's memory.
-\substep(10.6) Run \.{TANGLE} on \.{TEX.WEB} and the \.{TEX.CH} of (10.1),
-obtaining \.{TEX.PAS}.
-\substep(10.7) Run \PASCAL\ on \.{TEX.PAS}, obtaining \.{VIRTEX}.
-\substep(10.8) If your operating system supports programs whose core images
-have been saved, run \.{VIRTEX}, type `\.{\&plain}', then save the core image
-and call it \TeX. Otherwise, \.{VIRTEX} will be your \TeX, and it will
-read `\.{plain.fmt}' (or some other \.{fmt} file) each time you run.
-
-\yskip
-This 21-step process may seem long, but it is actually an oversimplification,
-since you also need fonts and a way to print the device-independent files
-that \TeX\ spews out. On the other hand, the total number of steps is not
-quite so large when you consider that \.{TANGLE}-followed-by-\PASCAL\ and
-\.{WEAVE}-followed-by-\TeX\ may be regarded as single operations.
-
-If you have only the present report, not a tape, you will have to prepare
-files \.{WEAVE.WEB} and \.{TANGLE.WEB} by hand, typing them into the
-computer by following Appendices D and E. Then you have to simulate the
-behavior of \.{TANGLE} by converting \.{TANGLE.WEB} manually into
-\.{TANGLE.PAS}; with a good text editor this takes about six hours. Then
-you have to correct errors that were made in all this hand work; but still
-the whole project is not impossibly difficult, because in fact the entire
-development of \.{WEAVE} and \.{TANGLE} (including the writing of the
-programs and this manual) took less than two months of work.
- \vfill\end