summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-04-23 23:13:33 +0000
committerKarl Berry <karl@freefriends.org>2008-04-23 23:13:33 +0000
commit1b5a2b603c2cf0f0bb4876a2769438f6f31a8fff (patch)
tree8c5cf53f5fb82d7c360898eae35a16642a786ac8 /Master
parentfc7a668ac46e1b0e8c8be4fb01a809f14e11d50a (diff)
remaining knuth 2008 updates
git-svn-id: svn://tug.org/texlive/trunk@7621 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/fonts/source/public/cm/calu.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/cm/greekl.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/cm/symbol.mf2
-rw-r--r--Master/texmf-dist/tex/plain/base/gkpmac.tex43
-rw-r--r--Master/texmf-dist/tex/plain/base/manmac.tex4
-rw-r--r--Master/texmf-dist/tex/plain/base/plain.tex4
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/cm85.bug46
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.eleven317
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.ten2
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.tex1198
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/mf84.bug52
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/tex82.bug90
12 files changed, 1561 insertions, 212 deletions
diff --git a/Master/texmf-dist/fonts/source/public/cm/calu.mf b/Master/texmf-dist/fonts/source/public/cm/calu.mf
index 06657b8874c..da27f63f17e 100644
--- a/Master/texmf-dist/fonts/source/public/cm/calu.mf
+++ b/Master/texmf-dist/fonts/source/public/cm/calu.mf
@@ -79,10 +79,11 @@ beginchar("F",13.5u#,cap_height#,0);
italcorr h#*slant+.5u#;
adjust_fit(-.1w#,-u#); pickup cal.nib;
x1=.5w; x3=.4w; lft x4=.1w; x5=x2+.35w; x6=.7[x1,x7]; rt x7=w;
-top y1=top y6=h; z2=.5[z3,z1]+1.2bend;
+top y1=top y6=h; z2=.5[z3,z1]+bend;
bot y3=-o; y4=.1h; y5=y2; y7=.9h;
draw flex(z1,z2,z3) softjoin (z3...{x4-x3,5(y4-y3)}z4); % stem
-draw z1-flourish_change{up}...(z1-(u,0))---z6...{down}z7; % upper bar
+draw z1-flourish_change+(0,.15asc_height){up}...{right}(z1-(2u,0))
+ ---z6...{down}z7; % upper bar
draw z2--z5--z5-(0,.1cap_curve); % middle bar
math_fit(0,.5ic#); labels(1,2,3,4,5,6,7); endchar;
diff --git a/Master/texmf-dist/fonts/source/public/cm/greekl.mf b/Master/texmf-dist/fonts/source/public/cm/greekl.mf
index c8c11585ac5..823099f2aea 100644
--- a/Master/texmf-dist/fonts/source/public/cm/greekl.mf
+++ b/Master/texmf-dist/fonts/source/public/cm/greekl.mf
@@ -33,10 +33,10 @@ adjust_fit(0,0); pickup fine.nib;
pos0(hair,180); pos1(hair,180); pos2(vair,90);
pos3(.8[hair,stem],0); pos4(vair,-90); pos5(hair,-180);
pos6(vair,-270); pos7(stem,-360); pos8(vair,-450); pos9(hair,-540);
-x0=x1=x9; lft x0l=hround(1.5u-.5hair); x2=x4=x6=x8=.5w-.25u;
+x0=x1=x9; lft x0r=hround(1.5u-.5hair); x2=x4=x6=x8=.5w-.25u;
rt x3r=hround(w-1.75u); rt x7r=hround(w-u); rt x5l=hround(x4-u);
bot y0=-d; y1=top y6r=x_height; top y2r=h+oo; y3=.5[y2,y4];
-y5=.5[y4,y6]; top y6r-bot y4r=vstem+eps; bot y8=-oo; y7=y9=.55[y6,y8];
+y5=.5[y4,y6]; top y6r-bot y4r=vstem+eps; bot y8r=-oo; y7=y9=.55[y6,y8];
if y6l<y4l: y6l:=y4l:=y5; fi
filldraw stroke z0e---z1e...pulled_arc.e(2,3)
& pulled_arc.e(3,4)...{up}z5e; % stem and upper bowl
@@ -77,7 +77,7 @@ x4=x6=.5w+.5u; top y8r=x_height+oo; z4=z8;
pos6(vair,-90); pos7(stem,-180); pos8(vair,-270);
pos4(stem,angle(z4-z0)+90); pos5(stem,30);
z3=.5[.5[z1,z4],z0];
-y5+.1x_height=y7=.5[y6,y8]; bot y6=-oo;
+y5+.1x_height=y7=.5[y6,y8]; bot y6r=-oo;
lft x7r=hround(1.4u-.5stem); rt x5r=hround(w-u);
filldraw stroke z1e{z0-z1e}....z2e....z3e{(z0-z1)rotated 90}
...z4e{z4e-.8[z4,z0]}
@@ -221,7 +221,7 @@ filldraw circ_stroke z4e{down}...{-36u,-h}z3e; % diagonal
pickup tiny.nib; pos1(stem,0); pos2(stem,0);
top y1=h+min(oo,serif_drop); bot y2=0; x1=x2=x3;
z=((z4{down}...{-36u,-h}z3)intersectionpoint((x2r,0)--(x2r,h)));
-filldraw z1l--z2l--z--z1r--cycle; % stem
+filldraw z1l--z2l...(x3,y2l)...z--z1r--cycle; % stem
sloped_serif.l(1,2,a,1/3,jut,serif_drop); % upper left serif
math_fit(0,ic#-1/3x_height#*slant-.5u#); penlabels(1,2,3,4); endchar;
@@ -323,7 +323,7 @@ adjust_fit(0,0); pickup fine.nib;
numeric light_curve; light_curve=hround(.5[stem,curve]-2stem_corr);
pos1(vair,90); pos2(light_curve,180); pos3(vair,270); pos4(light_curve,360);
x1=x3=.5w; lft x2r=hround(1.5u-.5light_curve); x4=w-x2;
-top y1=x_height+oo; y2=y4=.5[y1,y3]; bot y3=-oo;
+top y1r=x_height+oo; y2=y4=.5[y1,y3]; bot y3r=-oo;
filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
& pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl
pos5(hair,0); pos6(hair,0); x5=x6=.5w; top y5=h; bot y6=-d-oo;
diff --git a/Master/texmf-dist/fonts/source/public/cm/symbol.mf b/Master/texmf-dist/fonts/source/public/cm/symbol.mf
index 7a778624069..fd59d46546d 100644
--- a/Master/texmf-dist/fonts/source/public/cm/symbol.mf
+++ b/Master/texmf-dist/fonts/source/public/cm/symbol.mf
@@ -119,7 +119,7 @@ y1=y2=good.y h; y3=y4; .5[y1,y3]=.5[y5,y6]=math_axis;
y5=good.y .3[y1,y3];
draw z1{x5-x1,2(y5-y1)}...z5{right}...z2{x2-x5,2(y2-y5)}; % upper bar
draw z3{x6-x3,2(y6-y3)}...z6{right}...z4{x4-x6,2(y4-y6)}; % lower bar
-labels(1,2,3,4); endchar;
+labels(1,2,3,4,5,6); endchar;
cmchar "Subset or equal to sign";
compute_spread(.45x_height#,.55x_height#);
diff --git a/Master/texmf-dist/tex/plain/base/gkpmac.tex b/Master/texmf-dist/tex/plain/base/gkpmac.tex
index cdcd7b9c087..1ae0f1a7a68 100644
--- a/Master/texmf-dist/tex/plain/base/gkpmac.tex
+++ b/Master/texmf-dist/tex/plain/base/gkpmac.tex
@@ -10,6 +10,7 @@
\font\textbf=cmbx10 % bold
\font\textcsc=cccsc10 % caps and small caps
\font\oldsty=ccmi10 % equation numbers
+\font\twelvett=cmtt12
% Fonts for regular math
% I'm setting \fontdimen2 to zero because AMS forgot to do it;
@@ -405,15 +406,37 @@
\iftitle\hfil\copyrite\else\runhead\uppercase\expandafter{\chaptitle}\hfil\fi}}
\def\rightheadline{\hbox to35pc{\iftitle\copyrite\fi\hfil
\vbox to 10pt{}% strut to position the baseline
- \runhead\uppercase\expandafter{\topmark}%
+ \iftitle\else\runhead\uppercase\expandafter{\topmark}\fi
\rlap{\hfil\iftitle\rightcorner\else\foliofont\folio\fi\kern-2pc}}}
-\def\leftcorner{\vrule\vbox to\folioht{\hrule width9pt\vfil}}
-\def\rightcorner{\vbox to\folioht{\hrule width9pt\vfil}\vrule}
+\def\leftcorner{\iffinal\else\vrule\vbox to\folioht{\hrule width9pt\vfil}\fi}
+\def\rightcorner{\iffinal\else\vbox to\folioht{\hrule width9pt\vfil}\vrule\fi}
\def\copyrite{\ifpreprint{\textfont2=\sevensy\sevenrm\copyright\ 1988
Addison-Wesley Publishing Company; all rights reserved}\fi}
+\newdimen\htrimsize \htrimsize=7.5in
+\newdimen\vtrimsize \vtrimsize=9.1875in
+\newdimen\outermargin \outermargin=23mm
+\newdimen\topmargin \topmargin=10mm % plus height of the headline box
+\newbox\htrim \newbox\vtrim \newbox\trimmarks
+\setbox\htrim=\hbox to\htrimsize{\kern-.65in
+ \vrule height .2pt depth .2pt width .4in\hfil\vrule width.4in\kern-.65in}
+ \wd\htrim=0pt
+\setbox\vtrim=\vbox to\vtrimsize{\kern-.65in
+ \moveleft.2pt\hbox{\vrule height .4in}\vfil
+ \moveleft.2pt\hbox{\vrule height .4in}\kern-.65in}
+ \wd\vtrim=0pt
+\setbox\trimmarks=\hbox to0pt{\raise\vtrimsize\copy\htrim \copy\htrim
+ \copy\vtrim \kern\htrimsize \copy\vtrim\hss}
+ \ht\trimmarks=0pt \dp\trimmarks=0pt
+
+\newif\iffinal % are we making the final copy? (pages.tex says "999")
\def\onepageout#1{\escapechar=-1 % for writing \tabrefs
- \shipout\vbox to\totheight{ % here we define one page of output
+ \shipout % here we define one page of output
+ \iffinal % add the trim marks
+ \hbox to\htrimsize{\copy\trimmarks
+ \ifodd\pageno\hss\else \hskip\outermargin\fi
+ \vbox to\vtrimsize{\kern\topmargin\fi
+ \vbox to\totheight{
\offinterlineskip % butt the boxes together
\vbox to 2pc{ % this part goes on top of the regular pages
\ifodd\pageno \rightheadline\else\leftheadline\fi
@@ -424,6 +447,9 @@
\ifodd\pageno \hbox to35pc{\hfil\foliofont\folio}
\else\hbox{\foliofont\folio}\fi\fi
\ifpreprint\ifinxmode\makeinxfooter\fi\fi
+ \iffinal % finish the trimmed page
+ }\vfill}\ifodd\pageno\hskip\outermargin\else\hss\fi
+ \rlap{\smash{\lower30pt\hbox to.35in{\hss\twelvett\number\pageno}}}\fi
}
\advancepageno}
@@ -851,8 +877,13 @@
{\endlinechar=-1\read\pages to\next
\ifx\next\empty % in this case we should have eof now
\else\global\nxtpg=\next\fi}\fi}
-\ifeof\pages\else\message{OK, I'll ship only the requested pages!}
- \getnxtpg\fi
+\ifeof\pages\finalfalse\else\finaltrue
+ \getnxtpg
+\ifnum\nxtpg=999
+ \message{OK, I'm making final copy with trim marks!}
+ \hoffset=-.5in
+ \getnxtpg % this should ensure eof on the \pages file
+\else\message{OK, I'll ship only the requested pages!}\fi\fi
\def\shipout{\ifeof\pages\let\next=\Shipout
\else\ifnum\pageno=\nxtpg\getnxtpg\let\next=\Shipout
\else\let\next=\Tosspage\fi\fi \next}
diff --git a/Master/texmf-dist/tex/plain/base/manmac.tex b/Master/texmf-dist/tex/plain/base/manmac.tex
index d8678ab5070..63c064d1290 100644
--- a/Master/texmf-dist/tex/plain/base/manmac.tex
+++ b/Master/texmf-dist/tex/plain/base/manmac.tex
@@ -149,12 +149,12 @@
\def\titlepage{\global\titletrue} % for pages without headlines
\def\rhead{} % \rhead contains the running headline
-\def\leftheadline{\hbox to \pagewidth{%
+\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{%
+\def\rightheadline{\hbox to \pagewidth{\spaceskip=0pt
\vbox to 10pt{}% strut to position the baseline
\hfil\tenit\rhead\/% running head flush right
\rlap{\kern1pc\tenbf\folio}% folio to right of text
diff --git a/Master/texmf-dist/tex/plain/base/plain.tex b/Master/texmf-dist/tex/plain/base/plain.tex
index 02d0523dd55..2b72027dff8 100644
--- a/Master/texmf-dist/tex/plain/base/plain.tex
+++ b/Master/texmf-dist/tex/plain/base/plain.tex
@@ -1228,7 +1228,7 @@
\def\loggingall{\tracingcommands\tw@\tracingstats\tw@
\tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne
\tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne
- \showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode}
+ \showboxbreadth\maxdimen\showboxdepth\maxdimen}
\def\tracingall{\tracingonline\@ne\loggingall}
\def\showhyphens#1{\setbox0\vbox{\parfillskip\z@skip\hsize\maxdimen\tenrm
@@ -1238,4 +1238,4 @@
\nonfrenchspacing % punctuation affects the spacing
\catcode`@=12 % at signs are no longer letters
-\def\fmtname{plain}\def\fmtversion{3.14159265} % identifies the current format
+\def\fmtname{plain}\def\fmtversion{3.141592653} % identifies the current format
diff --git a/Master/texmf-doc/doc/english/knuth/errata/cm85.bug b/Master/texmf-doc/doc/english/knuth/errata/cm85.bug
index 2fd56f503af..d8cbea6442d 100644
--- a/Master/texmf-doc/doc/english/knuth/errata/cm85.bug
+++ b/Master/texmf-doc/doc/english/knuth/errata/cm85.bug
@@ -1851,6 +1851,52 @@ numeric mid_thickness; mid_thickness=Vround 1/3[vair,stem];
filldraw p_; % arm and beak
@z
+@x in CALU, I decided in July 2005 that I really wanted a less swashy F
+top y1=top y6=h; z2=.5[z3,z1]+1.2bend;
+bot y3=-o; y4=.1h; y5=y2; y7=.9h;
+draw flex(z1,z2,z3) softjoin (z3...{x4-x3,5(y4-y3)}z4); % stem
+draw z1-flourish_change{up}...(z1-(u,0))---z6...{down}z7; % upper bar
+@y
+top y1=top y6=h; z2=.5[z3,z1]+bend;
+bot y3=-o; y4=.1h; y5=y2; y7=.9h;
+draw flex(z1,z2,z3) softjoin (z3...{x4-x3,5(y4-y3)}z4); % stem
+draw z1-flourish_change+(0,.15asc_height){up}...{right}(z1-(2u,0))
+ ---z6...{down}z7; % upper bar
+@z
+
+@x in SYMBOL, two points of Hardy's asymptotic equivalence sign were unlabeled
+labels(1,2,3,4); endchar;
+@y
+labels(1,2,3,4,5,6); endchar;
+@z
+
+@x in GREEKL, correct a tiny notch that can show up at hires (Charles Duan)
+filldraw z1l--z2l--z--z1r--cycle; % stem
+@y
+filldraw z1l--z2l...(x3,y2l)...z--z1r--cycle; % stem
+@z
+
+@x in GREEKL, make almost-invisible semantic corrections to beta
+x0=x1=x9; lft x0l=hround(1.5u-.5hair); x2=x4=x6=x8=.5w-.25u;
+@y
+x0=x1=x9; lft x0r=hround(1.5u-.5hair); x2=x4=x6=x8=.5w-.25u;
+@z
+@x
+y5=.5[y4,y6]; top y6r-bot y4r=vstem+eps; bot y8=-oo; y7=y9=.55[y6,y8];
+@y
+y5=.5[y4,y6]; top y6r-bot y4r=vstem+eps; bot y8r=-oo; y7=y9=.55[y6,y8];
+@z
+@x and also to delta
+y5+.1x_height=y7=.5[y6,y8]; bot y6=-oo;
+@y
+y5+.1x_height=y7=.5[y6,y8]; bot y6r=-oo;
+@z
+@x and also to phi
+top y1=x_height+oo; y2=y4=.5[y1,y3]; bot y3=-oo;
+@y
+top y1r=x_height+oo; y2=y4=.5[y1,y3]; bot y3r=-oo;
+@z
+
-----------Here I draw the line with respect to further changes
(I sincerely believe there won't be any more!)
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.eleven b/Master/texmf-doc/doc/english/knuth/errata/errata.eleven
new file mode 100644
index 00000000000..64d9f8ab457
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.eleven
@@ -0,0 +1,317 @@
+% 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-doc/doc/english/knuth/errata/errata.ten b/Master/texmf-doc/doc/english/knuth/errata/errata.ten
index 85cdca31e09..9efa2a3e503 100644
--- a/Master/texmf-doc/doc/english/knuth/errata/errata.ten
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.ten
@@ -36,7 +36,7 @@
\tenpoint
\noindent This is a list of all substantial corrections made to {\sl Computers
-\& Typesetting\/} from the mid-1990s until the Millennium edition was
+\& 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
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.tex b/Master/texmf-doc/doc/english/knuth/errata/errata.tex
index c9ea56063c0..6842a82cc6e 100644
--- a/Master/texmf-doc/doc/english/knuth/errata/errata.tex
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.tex
@@ -15,7 +15,7 @@
Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
\ \number\year}
-\def\cutpar{{\parfillskip=0pt\par}}
+\def\cutpar{{\parfillskip=0pt\endgraf}}
\def\rhead{Bugs in {\tensl Computers \& Typesetting as of \today}}
\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
@@ -34,15 +34,16 @@
\tenpoint
\noindent This is a list of all substantial corrections made to {\sl Computers
-\& Typesetting\/} since the publication of the Millennium Edition at the close
-of the year 2000. (More precisely, it lists errors corrected
+\& Typesetting\/} since the publication of the second ``Millennium Edition''
+at the close of the year 2001. (More precisely, it lists errors corrected
since the 16th printing of Volume~A, the 7th printing
of Volume~B, the 6th printing of Volume~C, the 4th printing of Volume~D,
and the 5th printing of Volume~E.)
-Corrections made to the softcover version of {\sl The \TeX book\/} are
+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\/} are the same as corrections
-to Volume~C\null. Changes to the mini-indexes
+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.
@@ -50,75 +51,57 @@ errors have been corrected in the most recent printings.
% volume A
-\bugonpage A16, line 7 from the bottom (6/30/01)
+\bugonpage A7, line 4 from the bottom (01/15/04)
-\font\magnifiedfiverm=cmr5 at 10pt
-\tenpoint\indent
-Ten-point type is different from%
- \magnifiedfiverm\ magnif{}ied f{}ive-point type.
-
-\bugonpage A17, line 7 (6/30/01)
-
-\ninepoint\indent
-fications that grow in geometric ratios---something like equal-tempered
-tuning\cutpar
-
-\bugonpage A51, lines 18--20 (6/30/01)
+\noindent
+since control sequences of the second kind always have exactly one
+symbol after\cutpar
-\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 A123, line 7 from the bottom (02/27/08)
-\bugonpage A52, line 7 from the bottom (6/30/01)
+\ninepoint\noindent
+that it won't make the natural height-plus-depth
+of\/ |\box|$\,n$ surpass |\dimen|$\,n$, when it~is\cutpar
-\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 A124, lines 12 and 13 (02/27/08)
-\bugonpage A71, line 15 (6/30/01)
+\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.)
-\tenpoint\indent
-One of the interesting things that can happen when glue stretches and\cutpar
+\bugonpage A206, lines 12--17 (05/21/07)
-\bugonpage A180, line 20 (6/30/01)
+\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.
-\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 (4/09/01)
+\bugonpage A216, line 3 from the bottom (12/20/07)
-\ninepoint\noindent
-\begintt
-\output={\unvbox255
- \ifnum\outputpenalty<10000 \penalty\outputpenalty\fi}
-\endtt
+\ninepoint\indent|\openin|\<number>|=|\<file name>
-\bugonpage A292, lines 13--16 (6/30/01)
+\bugonpage A290, lines 25--26 (02/24/08)
-\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.
+\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 A306, line 7 (6/30/01)
+\bugonpage A292, line 15 (12/02/02)
\ninepoint\noindent
-instead of a shelf{\kern0pt}ful.
-In fact, the latter idea---to
-insert an ^{italic correction}---is prefer-\cutpar
+are defined as in the
+second alternative of a \<math field>, are
+recorded in a ``choice\cutpar
-\bugonpage A308, lines 25 and 26 (6/17/02)
+\bugonpage A308, lines 25 and 26 (06/17/02)
\ninepoint
\begintt
@@ -126,31 +109,83 @@ insert an ^{italic correction}---is prefer-\cutpar
{\csname\expandafter\gobble\string#2\romannumeral#3\endcsname}}
\endtt
-\bugonpage A311, line 14 (12/2/02)
+\bugonpage A311, line 14 (12/02/02)
\ninepoint\indent
|\def\\{\if\space\next\ % assume that \next is unexpandable|
-\bugonpage A323, line 12 from the bottom (6/30/01)
+\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\hss18.31.\enspace}%
-|$k=1.38065\times10^{-16}\rm\,erg\,K^{-1}$|.
+\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 (01/21/03)
+\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 \errorstopmode}|\par
+| \showboxbreadth=\maxdimen \showboxdepth=\maxdimen}|\par
\noindent
|\def\tracingall{\tracingonline=1 \loggingall}|
-\bugonpage A364, line 5 from the bottom (01/21/03)
+\bugonpage A364, line 5 from the bottom (02/29/08)
\ninepoint\noindent
-|\def\fmtversion{3.14159265} % identifies the current format|
+|\def\fmtversion{3.141592653} % identifies the current format|
+
+\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 {efficiency} 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 A450, lines 14--16 from the bottom (12/19/02)
@@ -164,55 +199,56 @@ $$\centerline{%
\\0s\\1t\\2i\\0c\\1e\\0x\\3p\\2i\\3a\\0l\\2i\\1d\\0o\\1c\\2i\\0o\\2u\\2s\\0.}$$
\endgroup
-\bugonpage A451, line 15 (1/30/01)
+\bugonpage A458, left column (01/11/07)
-\tenpoint\noindent
-{\sl Connecticut Yankee\/} come out with only nine or
-ten bad hyphens:
+\eightpoint\noindent
+|\\|, 38, {\it356}, {\it378}, {\it418}.
-\bugonpage A451, line 23 (1/30/01)
+\bugonpage A459, left column (03/17/06)
-\tenpoint\noindent\begintt
- mo-er-der-mohren-mut-ter-mar-mor-mon-u-menten-macher.
-\endtt
+\eightpoint\noindent
+angle brackets ( $\langle\,\rangle$ ), 59, {\it146--147}, 150,~156,\par
+\noindent\qquad $\underline{268}$, 420, 437;
+ {\sl see also\/} |\langle|, |\rangle|.
-\bugonpage A454, lines 23--30 (6/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 (7/08/01)
+\bugonpage A461, left column (02/24/08)
\eightpoint\noindent
-\llap{*}|\char|, {\it 43--45}, 76, 86, 155, 283, $\underline{286}$,
+|\boxit|, 223, 331.
-\bugonpage A466, left column (7/09/01)
+\bugonpage A468, right column (02/26/08)
\eightpoint\noindent
-\llap{*}|\floatingpenalty|, $\underline{123}$--$\underline{124}$,
- 272, 281, {\it 363}.
+interline glue, 78--79, $\underline{80}$, 104, 105, 125, 221,\par
+\noindent\qquad 245, 263, 281--282, 335, 352, 399, 409.
-\bugonpage A470, left column (1/21/03)
+\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 A473, left column (6/30/01)
+\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
-orphans, {\sl see\/} widow words.
+|\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
@@ -223,16 +259,16 @@ orphans, {\sl see\/} widow words.
\eightpoint\noindent
all of those changes.
I~now believe that the final bug was discovered and removed on
-20~December 2002.
+27~February 2008.
The finder's fee has converged to \$327.68.
\hsize=35pc
-\bugonpage B2, line 10 from the bottom (12/20/02)
+\bugonpage B2, line 10 from the bottom (02/29/08)
\ninepoint\noindent\hskip10pt
{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]TeX,\]Version\]3.141592\char'23}\quad
+{\tt This\]is\]TeX,\]Version\]3.1415926\char'23}\quad
$\{\,$printed when \TeX\ starts$\,\}$
\bugonpage B3, new paragraph to follow line 9 (12/20/02)
@@ -243,33 +279,73 @@ because it disagrees with the IEEE floating-point standard.
Many implementors have
therefore chosen to substitute their own home-grown rounding procedure.
-\bugonpage B8, line 2 (5/04/01)
+\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
-statements will be meaningful. We insert the label
-`\\{exit}' just before the `{\bf end}' of a procedure in\cutpar
+$[\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 B30, line $-4$ (5/04/01)
+\bugonpage B114, line 25 (09/11/07)
+\def\#{\hbox{\tt\char`\#}} % parameter sign
\ninepoint\noindent
-\quad{\bf begin} \\{update\_terminal};\quad$\{\,$now the user sees
- the prompt for sure$\,\}$
+{\bf define} $\\{save\_index}(\#)\equiv\\{save\_stack}[\#].\\{hh}.\\{rh}$\quad
+ $\{\,$\\{eqtb} location or token or \\{save\_stack} location$\,\}$
-\bugonpage B84, lines 22 and 27 (5/04/01)
+\bugonpage B139, line 20 (12/19/02)
\ninepoint\noindent
-\quad$\\{ignore}=9$\quad$\{\,$characters to ignore ( |^^@| )$\,\}$\par
-\noindent
-\quad$\\{active\_char}=13$\quad$\{\,$characters that invoke
- macros ( |~| )$\,\}$
+\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 B139, line 20 (12/19/02)
+\bugonpage B144, line 14 (09/11/07)
\ninepoint\noindent
-\quad{\bf begin while} $(\\{state}=\\{token\_list}) \land
+\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
@@ -284,6 +360,12 @@ 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
@@ -368,11 +450,31 @@ includes spaces is ``quoted'' somehow.
\ninepoint\noindent
\qquad{\bf else begin} $\\{lx}\gets\\{lr}$ {\bf div} $(\\{lq}+1)$;
-\bugonpage B280, lines 23 and 24 (4/08/01)
+\bugonpage B266, line 29 (09/11/07)
\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.
+$\\{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)
@@ -391,17 +493,67 @@ is being scanned, or when no alignment preamble is active.
\quad{\bf begin if\/} $(\\{scanner\_status}=\\{aligning}) \lor
(\\{cur\_align}=\\{null})$ {\bf then}
-\bugonpage B382, line 6 (1/01/01)
+\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 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
-between `fl' and `y', then $m=2$, $t=2$, and $y_1$ will
-be a ligature node for `fl' followed by an\cutpar
+{\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 B386, line 11 (4/08/01)
+\bugonpage B439, line 3 (09/11/07)
\ninepoint\noindent
-\quad$\\{qi}(2),\\{qi}(6)$: {\bf begin} $\\{cur\_r}\gets\\{rem\_byte}(q)$;%
- \quad$\{\,$\||=:|, \||=:>|$\,\}$
+\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 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)
@@ -430,15 +582,52 @@ we must defeat such hacks.
are\]not\]allowed)\char'23});\par\noindent
\quad{\bf if\/} $\\{cur\_group}=\\{align\_group}$ {\bf then}
-\bugonpage B475, line 12 (7/01/01)
+\bugonpage B505, line 19 (09/11/07)
\ninepoint\noindent
-\qquad{\bf end};\quad$\{\,$now we are in vertical mode,
- working on the list that will contain the display$\,\}$
+\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)
@@ -446,102 +635,208 @@ we must defeat such hacks.
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 (9/09/01)
+\bugonpage C29, illustration for exercise 4.11 (09/09/01)
\noindent
[points 2 and 5 should not be labeled twice]
-\bugonpage C156, line 15 from the bottom (9/09/01)
+\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 C171, line 16 from the bottom (6/18/02)
+\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 (9/09/01)
+\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 C204, line 3 from the bottom (7/08/01)
+\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 C246, line 12 (02/21/08)
\ninepoint\noindent
-slightly. If $\\{autorounding}>1$,
-you get even more changes: Paths are perturbed slightly\cutpar
+is performed whenever \MF\ uses the last two alternatives
+in the definition\cutpar
+
+\bugonpage C250, lines 13 and 14 (02/19/08)
-\bugonpage C238, lines 9 and 8 from the bottom (7/08/01)
+\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
-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))$.}$$
+following \<boolean primary>.)
-\bugonpage C286, line 25 (9/09/01)
+\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 (9/09/01)
+\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 (9/09/01)
+\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 C313, bottom line (6/30/01)
+\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)
-\rightline{\eightss--- LA ROCHEFOUCAULD, {\eightssi Maximes\/}\enspace(1665)}
+\ninepoint\noindent
+(The proofsheet resolution will be 50 pixels per inch, because {\it cheapo\/}
+has 200 pixels per\cutpar
-\bugonpage C346, left column (6/18/02)
+\bugonpage C346, left column (06/18/02)
\eightpoint\noindent
\llap{*}|:|, 169, 171, 317--319.
-\bugonpage C346, right column (7/09/01)
+\bugonpage C346, right column (07/09/01)
\eightpoint\noindent
\llap{*}|angle|, {\it29}, {\it67}, $\underline{72}$, {\it107},
{\it135}, 211, {\it238}.
-\bugonpage C352, left column (6/30/01)
+\bugonpage C351, right column (02/21/08)
\eightpoint\noindent
-La Rochefoucauld, Fran\c cois VI, 313.
+independent variables, $\underline{81}$--$\underline{83}$, 88, 224, 226.
-\bugonpage C357, right column (7/08/01)
+\bugonpage C352, right column (02/29/08)
\eightpoint\noindent
-\llap{*}|true|, 55, {\it64\/}--{\it65}, 170, 210.
+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 Dvii, bottom two lines (12/21/02)
+\bugonpage Dvii, bottom two lines (02/29/08)
\eightpoint\noindent
corporates all of those changes.
-I~now believe that the final bug was discovered on 22~January 2001,
-and removed in version 2.71828.
+I~now believe that the final bug was discovered on 27~December 2004,
+and removed in version 2.718281.
The finder's fee has converged to \$327.68.
\hsize=35pc
+\parindent=1em
-\bugonpage D2, line $-17$ (12/21/02)
+\bugonpage D2, line $-17$ (02/27/08)
\ninepoint\noindent
{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
-{\tt This\]is\]METAFONT,\]Version\]2.71828\char'23}\quad
+{\tt This\]is\]METAFONT,\]Version\]2.718281\char'23}\quad
$\{\,$printed when \MF\ starts$\,\}$
\bugonpage D2, lines 4 and 5 from the bottom (12/23/02)
@@ -552,17 +847,27 @@ 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 D8, line 2 (5/04/01)
+\bugonpage D16, new paragraph to follow line 26 (06/25/04)
-\tenpoint\noindent
-statements will be meaningful. We insert the label
-`\\{exit}' just before the `{\bf end}' of a procedure in\cutpar
+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 D28, line $-8$ (5/04/01)
+\bugonpage D22, line 26 (09/11/07)
-\ninepoint\noindent
-\quad{\bf begin} \\{update\_terminal};\quad$\{\,$now the user sees
- the prompt for sure$\,\}$
+\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)
@@ -586,21 +891,144 @@ language or 64-bit substitute is advisable.
\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
+possible; otherwise \\{take\_scaled} will use more than 2\% of the running time
when the Computer Modern fonts are being generated.
-\bugonpage D101, line 21 (7/08/01)
+\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} $\\{subscr\_head\_loc}(\hbox{\tt\#})\equiv\hbox{\tt\#}+1$
-\quad$\{\,$where \\{value}, \\{subscr\_head}, and \\{attr\_head} are$\,\}$
+\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 D180, lines 22 and 23 (1/26/01)
+\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 \&{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
-$(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$.
+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)
@@ -650,42 +1078,360 @@ $\{\,$positive if data truncated, negative if data dangerously large$\,\}$
\ninepoint\noindent
\quad{\bf if\/} $\\{chopped}>0$ {\bf then}
-\bugonpage D196, lines 7 and 8 (1/26/01)
+\bugonpage D196, lines 3--8 (06/25/04)
-\tenpoint\noindent
-where $x'(t)\ge0$ we have $\\{right\_type}=%
+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 D511, line 17 (7/03/01)
+\bugonpage D196, lines 15 and 16 (06/25/04)
-\tenpoint\noindent
-from appearing again.
+\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, line 24 (06/25/04)
+
+\ninepoint\noindent
+\qquad{\bf else begin} $\\{beta}\gets\\{minor\_axis}$;
+ $\\{gamma}\gets\\{major\_axis}$;
+ $\\{theta}\gets0$;
+
+\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 (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 11 (12/21/02)
+\bugonpage E7, line 14 (12/21/02)
\ninepoint\indent
\\{crisp}, \\{tiny}, \\{fine};
\medskip\noindent
and \\{thin\_join} should not be less than \\{fine}.
-\bugonpage E9, line 9 (7/03/01)
-
-\tenpoint\indent
-|[92] [123] [124]) ) )|
-
-\bugonpage E19, line 19 (11/7/01)
+\bugonpage E19, line 19 (11/07/01)
\tenpoint
\line{\\{cap\_notch\_cut}\hskip 0pt plus1.5fil46/36\hfil31/36\hfil25/36\hfil
@@ -706,14 +1452,62 @@ and \\{thin\_join} should not be less than \\{fine}.
{\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)
-\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 `--'
\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
@@ -728,9 +1522,33 @@ and \\{thin\_join} should not be less than \\{fine}.
{\rm cycle}$;\ {\bf fi}\par\noindent
\line{\qquad {\bf filldraw} \\{p\_};\hfil \% arm and beak}
+\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)
+
+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-doc/doc/english/knuth/errata/mf84.bug b/Master/texmf-doc/doc/english/knuth/errata/mf84.bug
index aaa36b33da8..541f3d47e71 100644
--- a/Master/texmf-doc/doc/english/knuth/errata/mf84.bug
+++ b/Master/texmf-doc/doc/english/knuth/errata/mf84.bug
@@ -2204,7 +2204,7 @@ if a>0 then
if b>0 then
@z
-565. we need not raise hassles about two-digit years (23 Nov 98)
+565. we need not raise hackles about two-digit years (23 Nov 98)
@x module 1200
print_int(round_unscaled(internal[year]) mod 100); print_char(".");
@y
@@ -2264,8 +2264,56 @@ if chopped then
if chopped>0 then
@z
+567. I forgot to update curtype in e.g. boolean b[]; b1=true=b2;
+ (Thorsten Dahlheimer, June 2004)
+@x 1003
+ begin nonlinear_eq(v,cur_exp,false); goto done;
+@y
+ begin nonlinear_eq(v,cur_exp,false); unstash_cur_exp(cur_exp); goto done;
+@z
+
+568. Wrong handling of extreme TFM values (T. Dahlheimer, June 2004)
+@x 1128
+max_tfm_dimen:=16*internal[design_size]-internal[design_size] div @'10000000;
+@y
+max_tfm_dimen:=16*internal[design_size]-1-internal[design_size] div @'10000000;
+@z
+@x 1129
+ if x>0 then x:=three_bytes-1@+else x:=1-three_bytes;
+ end
+else x:=make_scaled(x*16,internal[design_size]);
+@y
+ if x>0 then x:=max_tfm_param@+else x:=-max_tfm_param;
+ end;
+x:=make_scaled(x*16,internal[design_size]);
+@z
+
+569. Bug in make_ellipse when theta=180 (T. Dahlheimer, June 2004)
+@x 530
+ else begin beta:=minor_axis; gamma:=major_axis;
+@y
+ else begin beta:=minor_axis; gamma:=major_axis; theta:=0;
+@z
+
+570. Forgot outer_tag in scan_declared variable (T. Dahlheimer, June 2004)
+@x 1011
+done: if eq_type(x)<>tag_token then clear_symbol(x,false);
+@y
+done: if eq_type(x) mod outer_tag<>tag_token then clear_symbol(x,false);
+@z
+
+571. Apparent bug if init_gf called at incredibly unlikely time (T. Dahlheimer,
+June 2004); not REALLY a bug, because str_ptr cannot equal max_strings here
+(because this was checked by end_name, and area_delimiter=0 there because
+cur_area="" in the output file name); but anyway I'll make a patch to be clean
+@x 1163
+str_start[str_ptr+1]:=pool_ptr; gf_string(0,str_ptr);
+@y
+gf_string(0,make_string); decr(str_ptr);
+@z
+
-------------
-567. The absolutely final change (to be made after my death)
+999. The absolutely final change (to be made after my death)
@x module 2
@d banner=='This is METAFONT, Version 2.7182' {printed when \MF\ starts}
@y
diff --git a/Master/texmf-doc/doc/english/knuth/errata/tex82.bug b/Master/texmf-doc/doc/english/knuth/errata/tex82.bug
index 2977f089156..607ffff358d 100644
--- a/Master/texmf-doc/doc/english/knuth/errata/tex82.bug
+++ b/Master/texmf-doc/doc/english/knuth/errata/tex82.bug
@@ -8947,8 +8947,96 @@ if g_sign<>normal then
rule_ht:=rule_ht+cur_g;
@z
+420. Error recovery hindered by missing goto statement (reported by
+David Fuchs, September 2007)
+
+@x module 395
+incr(align_state); long_state:=call; cur_tok:=par_token; ins_error;
+@y
+incr(align_state); long_state:=call; cur_tok:=par_token; ins_error;
+goto continue;
+@z
+
+421. Slight improvement to inner loop speed also eliminates a case
+of "dirty Pascal"
+
+@x module 1035
+ begin if character(tail)=qi(hyphen_char[main_f]) then if link(cur_q)>null then
+@y
+ begin if link(cur_q)>null then
+ if character(tail)=qi(hyphen_char[main_f]) then ins_disc:=true;
+@z
+
+422. Amendment to bugfix 414 (reported by David Fuchs, September 2007)
+
+@x module 1335
+ store_fmt_file; return;@+tini@/
+@y
+ if last_glue<>max_halfword then delete_glue_ref(last_glue);
+ store_fmt_file; return;@+tini@/
+@z
+
+423. Remove leaking glue reference after error (DRF, September 2007)
+
+@x module 1236
+ help2("I can't carry out that multiplication or division,")@/
+ ("since the result is out of range.");
+@y
+ help2("I can't carry out that multiplication or division,")@/
+ ("since the result is out of range.");
+ if p>=glue_val then delete_glue_ref(cur_val);
+@z
+
+424. Leaders with muglue is henceforth disallowed (indeed, David Fuchs
+observed that it has ever worked, except in 180pt fonts!)
+
+@x module 1078
+if ((cur_cmd=hskip)and(abs(mode)<>vmode))or@|
+ ((cur_cmd=vskip)and(abs(mode)=vmode))or@|
+ ((cur_cmd=mskip)and(abs(mode)=mmode)) then
+@y
+if ((cur_cmd=hskip)and(abs(mode)<>vmode))or@|
+ ((cur_cmd=vskip)and(abs(mode)=vmode)) then
+@z
+
+425. An optimization suggested by Fuchs that I couldn't resist, because
+it improves the inner loop whenever the last letter of a word
+has a lig/kern program. Also another twiddle for the inner loop.
+
+@x module 1039
+if char_tag(main_i)<>lig_tag then goto main_loop_wrapup;
+@y
+if char_tag(main_i)<>lig_tag then goto main_loop_wrapup;
+if cur_r=non_char then goto main_loop_wrapup;
+@z
+@x module 1036
+tail_append(lig_stack) {|main_loop_lookahead| is next}
+@y
+link(tail):=lig_stack; tail:=lig_stack {|main_loop_lookahead| is next}
+@z
+
+426. For robustness, enforce a restriction checked by TFtoPL (suggested
+by DRF)
+
+@x module 365
+if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then abort;
+@y
+if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then abort;
+if (nw=0)or(nh=0)or(nd=0)or(ni=0) then abort;
+@z
+
+427. Tell more precisely the effective size of 1:1 insertions (DEK, 27 Feb 08)
+
+@x module 986
+ t:=x_over_n(height(r),1000)*count(t); print_scaled(t);
+@y
+ if count(t)=1000 then t:=height(r)
+ else t:=x_over_n(height(r),1000)*count(t);
+ print_scaled(t);
+@z
+
-----------
-420. The absolutely final change (to be made after my death)
+999. The absolutely final change (to be made after my death)
@x module 2
@d banner=='This is TeX, Version 3.141592' {printed when \TeX\ starts}
@y