summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/knuth/source/errata/errata.seven
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/knuth/source/errata/errata.seven')
-rw-r--r--Master/texmf-dist/doc/generic/knuth/source/errata/errata.seven821
1 files changed, 821 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/knuth/source/errata/errata.seven b/Master/texmf-dist/doc/generic/knuth/source/errata/errata.seven
new file mode 100644
index 00000000000..0866189da51
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/knuth/source/errata/errata.seven
@@ -0,0 +1,821 @@
+% 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
+