From b8bbb5c4096ec141403ff5e06e55c25eb7f3c805 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 8 Mar 2021 18:32:57 +0000 Subject: knuth-errata sources their own package, following CTAN git-svn-id: svn://tug.org/texlive/trunk@58225 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/doc/generic/knuth-errata/cm85.bug | 1906 ++++ .../doc/generic/knuth-errata/errata.eight | 610 ++ .../doc/generic/knuth-errata/errata.eleven | 317 + .../doc/generic/knuth-errata/errata.five | 1108 +++ .../doc/generic/knuth-errata/errata.four | 1052 +++ .../doc/generic/knuth-errata/errata.nine | 235 + .../texmf-dist/doc/generic/knuth-errata/errata.one | 751 ++ .../doc/generic/knuth-errata/errata.seven | 821 ++ .../texmf-dist/doc/generic/knuth-errata/errata.six | 528 ++ .../texmf-dist/doc/generic/knuth-errata/errata.ten | 1289 +++ .../texmf-dist/doc/generic/knuth-errata/errata.tex | 1802 ++++ .../doc/generic/knuth-errata/errata.three | 1898 ++++ .../doc/generic/knuth-errata/errata.twelve | 1709 ++++ .../texmf-dist/doc/generic/knuth-errata/errata.two | 491 ++ .../doc/generic/knuth-errata/errorlog.tex | 2946 +++++++ .../texmf-dist/doc/generic/knuth-errata/logmac.tex | 107 + .../texmf-dist/doc/generic/knuth-errata/mf84.bug | 2443 ++++++ .../texmf-dist/doc/generic/knuth-errata/tex82.bug | 9279 ++++++++++++++++++++ 18 files changed, 29292 insertions(+) create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/cm85.bug create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.eight create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.eleven create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.five create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.four create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.nine create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.one create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.seven create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.six create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.ten create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.tex create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.three create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.twelve create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errata.two create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/errorlog.tex create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/logmac.tex create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/mf84.bug create mode 100644 Master/texmf-dist/doc/generic/knuth-errata/tex82.bug (limited to 'Master/texmf-dist/doc/generic') diff --git a/Master/texmf-dist/doc/generic/knuth-errata/cm85.bug b/Master/texmf-dist/doc/generic/knuth-errata/cm85.bug new file mode 100644 index 00000000000..d8cbea6442d --- /dev/null +++ b/Master/texmf-dist/doc/generic/knuth-errata/cm85.bug @@ -0,0 +1,1906 @@ +This file is a log of changes made to the "new generation" of Computer Modern +fonts, after the first output proofs were ready. I had a great deal of +advice from Neenie Billawala, Matthew Carter, and Richard Southall while +I was making these revisions. + +Entries are in chronological order; thus the most recent news appears +at the bottom of the file. + +------------------------------------------------------------------------------- + Changes based on the proofsheets of April 26, 1985 +ACCENT.MF: + lower the idots, umlauts, and tilde (MC) + Polish ell cross: longer stroke in bold +CMBASE.MF: +COMLIG.MF: + double quotes too close together in bold (MC) +CSCSPU.MF: + SS made from two S's +GREEKU.MF: + Gamma: .25u longer arm + Lambda: too narrow (MC,NB) + Xi: 1u wider; shorten middle serifs (MC) + top and bottom strokes to be arms (NB) + Psi: more super; thin the lower curve (MC) + add points 3' and 7' for crisp sans + Omega: redo the bottom, curl 0 becomes vertical (MC) + thin from hair to vair at points 3 and 5 +PUNCT.MF: + Monospace period, comma, colon, semicolon made heavier (MC) +ROMAN.MF: + ligs=2 gets ff, fi, etc.; ligs=1 gets only --, '', etc. + II kerning introduced + kern between a and ' in csc +ROMAND.MF: + 0: med_curve decreased to curve; y2l and y4l raised + 1: cap_bar changed to bar in the top stroke + sans-serif serifs also use bar as the slab height + 2: lighten cap_curve and cap_stem slightly (RS) + move point 3 down by .5vair (MC) + 4: thin the diagonal still more (NB) + bar line moves up one pixel when there's a serif below it + 6: move bulb to the right (MC) + make the lower left curve more_super (RS,NB) + 9: make the upper right curve more_super (RS,NB) +ROMANL.MF: + a: bulb positioned by its center rather than the left (MC) + c: right terminals moved closer to the edge (MC,NB) + more pull on the inside left (RS) + e: less left sidebar in monospace (MC) + bold versions to be wider (MC) + more pull on inside left (MC,RS) + g: lower edge of loop goes one pixel lower + varg: point 6 raised above baseline (MC) + y0 calculated so that it works when x7l=stem_edge + lower arc goes one pixel lower + i: monospace version gets more left sidebar (MC) + dot moves slightly right (NB) + stem'' increased to stem' (MC,RS,NB) + slab replaces tiny in correction for dot-too-close + j: diminish monospace sidebars (MC) + shift slightly to right (MC) + k: serif right_jut decreased .8 to .6 + bug fixed in alpha2 (had y1 not y11)(MC,RS,NB) + decreased diagonal weights + "if abs(angle(z3-z4)-45)<2:y4:=y3-(x3-x4);fi" rejected; moves y4 down too much + n: omit pull inside the arch (MC,RS) + introduce stem_shift, shifts this character and others slightly right (MC) + o: raise y2l and y4l (RS) + s: reduced sidebearing in sans (MC) + increased thickness at edges (.35 to .5) (RS) + changed to super_arc, and made it more_super (RS) + raised the top of upper barb to equal top of the character (RS) + removed typo (`tiny' for `fine') + reduced flare in upper terminal of sans, and rounded it properly + t: width to grow in bold case + height made independent of bar_height + slightly longer bar (MC) + v: decreased left stem (RS) + w: decreased stems (MC,RS) + monospace version drops middle from 2/3 to .6 and lengthens inner serifs + x: decreased left stem + y: decreased left stem + z: lighter diagonal, longer upper arm (MC,RS,NB) +ROMANP.MF: + $: tau eliminated +ROMANU.MF: + A: decrease right stem (MC) + make the bar thinner (MC,NB) + bar position based on y0 rather than bar_height + C: use cap_band instead of vair' at top and bottom (RS) + correct typo: x2l to be reset, not y2l + E: middle arm .35u longer, but beak reduced from .7 to .6 (MC) + F: top arm .25u longer; middle arm as E (MC) + G: same as C; also the bar is raised one pixel + J: slightly longer upper left serif + K: lower diagonal thinned and moved outward + M: monospace version raised still more in middle + N: diagonal thinned (MC,RS) + O: y2l and y4l raised + R: tail should move to the right (MC,RS,NB) + bold case gets wider (RS,NB) + S: changed as s (RS) + V: took stem_corr off the left stem (MC) + W: monospace version takes center down from 2/3 to .6, lengthens inner jut + X: took stem_corr off the left stem (MC) + Y: took stem_corr off the left stem (MC) + Z: diagonal made lighter in sans (MC) + upper arm made longer (MC,RS) +ROMLIG.MF: + equalize stem weights (RS,NB) +ROMSPL.MF: + ae, oe: incorporate changes of a and e and o + ss: more stem weight, less curve weight, less bulb (MC,NB) + dotless i,j: see i,j +ROMSPU.MF: + AE: middle arm changes as E (MC) + if hefty and monospace, avoid the serif on middle arm + bars not aligned if hefty + if monospace, middle stem moves to right + OE: middle arm changes as in AE (MC) + middle stem lightened +ROMSUB.MF: + blankspace: not so close to sides +SYM.MF: +CMR10.MF etc: + bar_height raised in the quote and bold fonts (MC,NB) + comma_depth in cmtt10 increased from 40 to 50 (MC) + cap_notch_cut decreased in cmsc10, cmsx10 + apex_o decreased in cmr10, cmb10, cmbx10, cmbx5, cmcsc10, cmtt10 + o decreased in cmb10 + cap_jut decreased from 39 to 34 in cmb10; cap_serif_fit increased 5 to 6 + cmbx5 gets smaller beak, fudge, cap_ess; more apex_corr +GENERAL: + "robustness" added when points like x8r of "a" are calculated + (this affects a,b,d,varg,j,p,q,t,u,dj,ae,6,9,f_stroke) + "robustness" also added to avoid curl at end of paths + (this affects c,e,s,C,G,S,1,5,ae,oe,breve,parens) + "term" subroutine adds robustness for sans-serif terminals + (this affects C,G,J,S,f_stroke,j,ss,ae,oe,2,3,5,6,9,$,&,?,@) + code revised to use "pos" instead of "penpos" when possible + Changes based on the proofsheets of May and June, 1985 +ROMAND.MF: + 1: use o instead of apex_o + 4: bar line height shouldn't depend on bar_height + 5: sans-serif lower terminal position raised; depends on upper left edge + bug in arm at top (0 for 90) made all hefty arms too small + 9: disappears at link +ROMANU.MF: + B: middle bar positioned by its middle, not its bottom (RS) + serifed lobes thickened slightly at bottom (RS) + C: lower terminal is tilted the other way + C,G: upper terminal in sans-serif is tilted slightly + upper barb is darkened + J: tilt the lower terminal + K: lighten the main diagonal (serif case) (RS) + lighten the upper diagonal (sans-serif case) (RS) + M: remove apex_corr (RS) + N: lighten the diagonal + P: too light below counter (RS) + Q: sharpen upper right corner of sans-serif tail (RS) + top of tail thickened and moved slightly left + S: less super at upper left and lower right (MC) + barb to go below baseline + barbs darkened + add weight at top, bottom in sans_serif version (RS) + tilt the lower terminal like the upper one + top weight needs to be maxed with fine.breadth + W: top middle stems allowed to overlap in serifed case + second inner serif made no longer than left outer serif (MC) + ceiling must become floor, to ensure that x5r>=x4r-mid_corr + Z: diagonal still too heavy, because previous change was ineffective + beaks made darker + better positioning of y2 and y3 when tiny is zero +CSCSPU.MF: + J,SS: changes from J and S +ROMANL.MF: + a: inappropriate uses of "fine" are removed + bh introduced to guard against "wild" bar heights + thin_join introduced at point 9 + robustness logic changed so that x8l-x8r<=u + c: too much weight constrast between strokes in sans_serif (RS) + top terminal lowered to match a + bottom terminal tilted the other way + d: fine.breadth should have been thin_join as in b, p, q + e: 1+xpart changed to xpart + bottom terminal tilted the other way + g: sans-serif ear to use z0l and z0r + h,m,n: left inner serifs stay at jut length + i,l: mod_width for better fit at lowres + j: reposition stem for better fit (use .5w+2.5u, not w-2.5u) + remove bug in "pos" change + k: upper diagonal serif lengthened from 1.2jut to 1.4jut (RS) + diagonals made still lighter + r: thin_join introduced + s: barb to go below baseline + barbs darkened + add weight at top, bottom in sans_serif version (RS) + tilt the lower terminal like the upper one (RS) + top weight needs to be maxed with fine.breadth + t: bar extended still more at right (RS) + v: decreased the width by .25width_adj# + w: overlap allowed as in W + second inner serif made no longer than left outer serif (MC) + ceiling must become floor, to ensure that x5r>=x4r-mid_corr + x: decreased the width by .5width_adj# (RS) + y: sans-serif tail curls up too far (RS) + z: beaks too light; decrease the diagonal to compensate (RS) + better positioning of y2 and y3 when tiny is zero +ROMSPL.MF: + dotless i and j: as i and j + ae and oe: bottom terminal tilted the other way + ae: corrected as a +ROMSPU.MF: + AE: x12 based on x1l rather than x1, works better in bold cases (RS) + OE: left curve not to be pulled +GREEKU.MF: + Phi and Psi: middle parts must keep away from the serifs +ROMANP.MF: + $: strengthened the terminals in sans-serif case, and tilted them + &: opened the eye by moving point 8 left .5u (RS) + ?: tilted the sans-serif terminal and moved it down a little more +PUNCT.MF: + %: move the diagonal a bit left at the top + ( and ): 3.5( changed to 3(. + [ and ]: round changed to ceiling and floor, avoids disappearing brackets + @: inner a placed by its edges instead of its stem centers (RS) +ITALL.MF: + f: lower bulb moved left; .5 changed to .6 between bulb and stem + k: bug in lower right stroke (missing e's) + l: bug in italic correction for math fitting (u not u#) + m: avoid hooks in monospace version + p: lengthed left serif at bottom from .5jut to .75jut + x: bulbs moved .25u further out; .5 used between bulb and stem + w: avoid hook in monospace version +ITALIG.MF: + all five: changed like f + fi: made 1u less wide + fl,ffl: made .5u less wide, bulb now touches the l stem + ffi: made .75u less wide +GREEKL.MF: + beta, gamma, zeta, xi, omega, varepsilon: +eps at the tight turns + gamma: final diagonal should be more slanted (MC) + zeta: as tall as xi, shallower diagonal slant (MC) + kappa: bug in lower right stroke (missing e's) + xi: raise the bottom diagonal and distort arc slightly (MC) + chi: introduce slight curve in main diagonal stroke + varphi: too wide at right half bowl (MC) +ITALMS.MF: + wp: bulb smaller, bottom a little more open +ITALD.MF: + 5: changed like 5 in ROMAND +OLDDIG.MF: + 2: top a bit narrower, bottom a bit wider (MC) + 5: changed like 5 in ROMAND +SYM.MF: + plus-minus: shift depends on u not asc_height +SYMBOL.MF: + minus-plus: shift depends on u not asc_height + up-and-down arrows (characters '154 and '155): taller and deeper + clubsuit: wider + spadesuit: y1+1 changed to y1+.75 (also in clubsuit) +ROMAN.MF: + eliminated kerning between L and O,C,G,Q,U (also in TEXTIT and CSC) +MATHEX.MF: + font_x_height needed to be set, for positioning of accents +CMB10.MF: + dishing is too much (on all bold fonts) +CMR5.MF: + letter_fit decreased 10 to 5 +CMBX5.MF: + fudge should be 1 (cap_stem 8=:7 in aps mode was too much) + decrease letter_fit drastically; this means f-ligatures must come back + lowercase parameters increased by 2/36 +CMBI10.MF: + lowercase serifs too short. (same change to all the italic fonts) +CMSX10.MF: + decrease `ess' (RS) +CMTC10.MF: + fudge is too much in lowercase +CMCC10.MF: + lowercase more extended + much less letterspace in caps + increase lower.cap_curve, decrease lower.o +CMSQI8.MF: + slope shouldn't be so much (RS) + increase `ess' (RS) + +GENERAL: + serif-abutment corrections changed to +1 instead of +2 + vround used for vertical rounding + +CMBASE.MF: + new way to set shrink_fit (0,1,2) for monotonicity with letter_fit + letter_fit not included in mono_charwd + fine must be positive (else we lose barbs) + thin_join must be positive (else h_stroke gives a bad pos) + Changes based on the `version 0' test fonts of July 12 +[not showing hundreds of changes to the `typography' of the programs] + +Driver files in general: +Frequency info (from MANUAL.TEX[tex,dek]) was used to order the ligtables +font_xheight changed to font_x_height (a change to PLAIN.MF) + +Program files in general: + use `hround' instead of `round' wherever granularity might be wanted + less_rounded was taken out; autorounded occasionally put in + arm($,$$,...), the value of y$$ was adjusted by eps (lower) or -eps (upper) + +Parameter files in general: + new 12pt and 17+pt fonts; more sans serif fonts + new comment at bottom of all parameter files: `switch to the driver file' + +ACCENT.MF: + ^: eps subtracted from y1 (helps avoid degenerate equations in ultralowres) + '`: eps added to y1 + +ROMAN.MF: + kern entry for gj had the wrong sign + kerns for v removed in sans serif + new kern for aj in serif case + new kern for ar in sans serif + +ROMAND.MF: + 3: pos3 needed to be maxed with fine.breadth + y1r,y9r needed to be adjusted by eps + 6,9: keep x1 on the correct side of x2 at lowlowres + (this change also affects OLDDIG, ITALD, and ITALMS partial sign) + +ROMANP.MF: + $: less_tense bulbs + +ROMSPL.MF: + ss: ensure x5 not > x4l at low resolutions + +ROMLIG.MF: + itc shouldn't include the slant... + +COMLIG.MF: + em dash should be one em wide (add letter_fit# to the adjustments) + +BIGOP.MF: + \displaystyle coproduct sign had 1.2bracket instead of 1.8bracket + charlist syntax changed from commas to colons + +BIGDEL.MF: + extensible double arrow: position wasn't computed as in top and bottom + charlist syntax changed from commas to colons + +BIGACC.MF: + charlist syntax changed from commas to colons + +ITALL.MF: + c: point 1 made definitely greater than point 2, for lowlowres + q: x4 increased by eps, for lowlowres path intersection + r: x4 based on w, not 5u + s: max(ess,fine.breadth) + add eps and 2eps for lowlowres case (cmmi6 at 100/in) + +ITALMS.MF: + wp: x6r must not be less than x1r at lowlowres + +TSETSL.MF: + gamma: last time's bugfix from GREEKL needs to be here too + +GREEKL.MF: + omega: add 2eps to x4-x6 + lambda: make sure that y3>y4 at lowlowres + zeta: make sure that x2>x0 at lowlowres + varsigma: make sure that x1>x2 at lowlowres + +CMFIB8.MF: + decreased serif_fit, cap_serif_fit; increased curve, cap_curve + +CMBASE.MF: + l,r made newinternals + serif darkness and skew switches now done with boolean variables + comma and ammoc: 2eps addedto/subtractedfrom position of x@2 + mod_width now called change_width + ess and cap_ess initialized to preserve ratios with stem and cap_stem + mode="string" had to be handled properly + ^ and ! changed to t_ and o_, as per new PLAIN conventions + make cmchar "outer" + t_ is now `relaxed' if it is useless + soft is now softjoin in PLAIN (we must set join_radius:=u) + eps is now in PLAIN + vair is vrounded but at least 1; also slab, etc. + cal nibs, yscaled by cap_hair not vair + autorounding and smoothing turned off + +ROMANL.MF: + a: `footed' version is .25u tighter at the right + b,d,varg,p,q: x4l position relative to .5(w-serif_fit) not 5u + e: testpath uses .r not .l (because of cmss10) + f: added 1 at right for monospace lowres versions + varg: robust sans-serif terminal at tail + m: missing `round' in r adjustment caused noninteger chardx + r: x4 based on w, not 5.25u + s: watch out that ess isn't so small that badpos error occurs (also ROMANU) + barbs made longer; based on middle stroke not just h + t: sans-serif terminal made more robust in extreme cases + w: in non-monospace hefty serif case, the middle point comes to .8h not h + y: robust sans-serif terminal at tail + +ROMANU.MF: + E: good.y used in y9 + +PUNCT.MF: + []: side_thickness needed to be maxed with crisp.breadth + +1 or -1 makes lowres versions more distinctive + #: tricky part lost at low resolution + +SYMBOL.MF: + angle brackets: +1 and -1 to make lowres versions more distinctive + aleph: eps added so that y5 will be well defined at lowlowres + +SYM.MF: + integral sign: bulbs need to be in right direction at lowlowres + +CALU.MF: + A: apex moved slightly down + D: less flat at top, slightly lower lobe + F: u less right sidebar + H: soft corner at upper left + I: middle stroke more like J, upper bar a little further right + K: introduce t_ in case of aspect_ratio + L: darker + M: lighter first diagonal; clean the joins + N: lighter diagonal; clean bottom right; .5u less right sidebar + O: shortened the inner stroke + P: stem comes lower + Q: tail not so long at left + R: not so flat at top; diagonal less tense; tail less high + T: narrower, also changed like I, .5u less right sidebar, + heavier, not so high at right + U: less extreme curve at lower left + V: cleaned up at bottom; lighter first diagonal; slightly wider + W: changed like V, but double + X: new design, less rigid + Y: new design based more on V than U + Z: tighter at right, heavier at top and bottom + +CMSS10.MF: + decreased notch_cut and bar_height + +%Note: The following can presumably be deleted; I removed it from CMBASE because +% I don't think it is used any more: +vardef parallel_pos(expr d,u,v,w) = % point at distance $d$ from $u$, + % on the line through $w$ that's parallel to |u..v| + pair p_; p_=w+whatever*(u-v)=u+whatever*(u-v) rotated 90; + numeric d_; d_=length(u-p_); % distance from $w$ to |u..v| + if d_>=d: p_ else: p_+(d+-+d_)*unitvector(v-u) fi enddef; + Changes subsequent to `Version 1' as released on October 7, 1985. + +1. thin_join should be subject to blacker: +@x in CMBASE.MF, the font_setup routine + define_whole_pixels(letter_fit,thin_join,fine,crisp,tiny); + define_whole_vertical_pixels(body_height,asc_height, + cap_height,fig_height,x_height,comma_depth,desc_depth,serif_drop); + define_whole_blacker_pixels(hair,stem,curve,flare, +@y + define_whole_pixels(letter_fit,fine,crisp,tiny); + define_whole_vertical_pixels(body_height,asc_height, + cap_height,fig_height,x_height,comma_depth,desc_depth,serif_drop); + define_whole_blacker_pixels(thin_join,hair,stem,curve,flare, +@z +@x + if thin_join=0: thin_join:=1; fi +@y +@z +[Note, December 11: My first correction also introduced the statement + if fine1): +vardef Vround primary y = y_:=vround y; + if y_75: + p.e:=z4e{right}..tension atleast.9 and 1..{dir 75}z5e; fi endfor + filldraw stroke pulled_super_arc.e(2,3)(.7superpull) + & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi % arc and lower terminal +@z +@x in ROMSPL, page 5 +lft x8r=hround(stem_edge+.5u+1); x7=max(x8l+eps,.4[lft x8r,x6]); +@y +lft x8r=min(hround(stem_edge+.5u+1),lft x8r+x6r-2eps-x8l); +x7=max(x8l+eps,.4[lft x8r,x6]); +@z +@x in ROMAND and OLDDIG, "2" + lft x1r=hround .75u; bot y1l=vround .7h; y1r:=good.y y1r; x1l:=good.x x1l; +@y + lft x1r=hround .75u; bot y1l=vround .7h; y1r:=good.y y1r+eps; x1l:=good.x x1l; +@z +@x in SYMBOL, page 42 (Fraktur R) +z=(z20{up}...{right}z21)intersectionpoint(z22l--z22l+(h,0) rotated theta); +@y +path p; p=z20{up}...(z21--(w,y21)); +z=p intersectionpoint(z22l--z22l+(h,0) rotated theta); +@z + +23. Another consequence of change 2: +"vround" should be "Vround" in the BIGDEL programs for extensible arrows +(five times). +Also five times in the BIGOP programs for summation, product, coproduct. + +24. Cosmetic change to bring CMBASE in line with PLAIN. +@x in CMBASE.MF +def pickup secondary q = + if numeric q: currentpen:=pen_[q]; + pen_top:=pen_top_[q]; pen_bot:=pen_bot_[q]; + pen_lft:=pen_lft_[q]; pen_rt:=pen_rt_[q]; + currentpen_path:=pen_path_[q]; + if known breadth_[q]: currentbreadth:=breadth_[q]; fi + else: currentpen:=q yscaled aspect_ratio; + pen_top:=(ypart penoffset left of currentpen)_o_; + pen_bot:=(ypart penoffset right of currentpen)_o_; + pen_lft:=xpart penoffset down of currentpen; + pen_rt:=xpart penoffset up of currentpen; + path currentpen_path; + fi enddef; +@y +def numeric_pickup_ primary q = + currentpen:=pen_[q]; + pen_lft:=pen_lft_[q]; pen_rt:=pen_rt_[q]; + pen_top:=pen_top_[q]; pen_bot:=pen_bot_[q]; + currentpen_path:=pen_path_[q]; + if known breadth_[q]: currentbreadth:=breadth_[q]; fi enddef; +@z + +25. false italic correction in lambda of texset fonts (Feb 25, 1986) +@x in TEXSET +mode_setup; font_setup; +@y +mode_setup; font_setup; mono_charic#:=0; +@z +@x ibid +slant:=mono_charic#:=0; % the remaining characters will not be slanted +@y +slant:=0; % the remaining characters will not be slanted +@z +[now remove the occurrences of `charic:=0;' in TSETSL, as they are unnecessary] + +*** The above changes are incorporated into the published book, +*** Computer Modern Typefaces; this is "Version 2" (released March 5, 1986). + Changes subsequent to `Version 2' as published in C&T, Volume E: + +@x in GREEKU +numeric shaved_stem; shaved_stem=hround .9[vair,.85cap_stem]; +@y +numeric shaved_stem; shaved_stem=hround .9[vair,.85cap_stem]; +if shaved_stem1.2upper_side: upper_side:=lower_side; fi +@z +% Note: the SAME change should also be made in files ITALD and OLDDIG + +@x in ITALL [this fixes italic ell especially at low resolutions] +top y1=h; x1=x2; filldraw stroke z1e--z2e; % stem +@y +top y1=h; x1=x2; filldraw stroke z1e--z2'e; % stem +@z + +@x in SYM, the plus-or-minus character +x1=x2=.5w; lft x3=lft=x5=hround u-eps; x4=x6=w-x3; +@y +x1=x2=.5w; lft x3=lft x5=hround u-eps; x4=x6=w-x3; +@z actually the code worked but it was "infelicitous" + +@x in SYMBOL, the minus-or-plus character +x1=x2=.5w; lft x3=lft=x5=hround u-eps; x4=x6=w-x3; +@y +x1=x2=.5w; lft x3=lft x5=hround u-eps; x4=x6=w-x3; +@z actually the code worked but it was "infelicitous" + +@x in ROMANU, letter J [fixes a bug if dish=0 and crispy$) <> (ypart precontrol 1 of p_ > ypart postcontrol 1 of p_): + p_:=z$$l{z@1-z$$l}...darkness[z@1,.5[z@2,z$$l] ] + ---z$l--z$r--z@0--z$$r--cycle; fi + 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!) + +I absolutely guarantee that the TFM files will never change again. +(Otherwise I would consider zeroing the depth of italic 7, +which I admit is strange... we can live with it.) diff --git a/Master/texmf-dist/doc/generic/knuth-errata/errata.eight b/Master/texmf-dist/doc/generic/knuth-errata/errata.eight new file mode 100644 index 00000000000..f7ceafd9f69 --- /dev/null +++ b/Master/texmf-dist/doc/generic/knuth-errata/errata.eight @@ -0,0 +1,610 @@ +% Bugs (sigh) in Computers \& Typesetting + +\input manmac +\font\sltt=cmsltt10 +\font\niness=cmss9 +\font\ninessi=cmssi9 +\proofmodefalse +\raggedbottom +\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}} + +\def\today{\number\day\ + \ifcase\month\or + Jan\or Feb\or Mar\or Apr\or May\or Jun\or + Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi + \ \number\year} + +\def\cutpar{{\parfillskip=0pt\par}} + +\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1992}} +\def\bugonpage#1(#2) \par{\bigbreak\tenpoint + \hrule width\hsize + \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize + \nobreak\medskip} +\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint + \hrule width\hsize + \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize + \nobreak\medskip} +\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo +\def\0{\raise.7ex\hbox{$\scriptstyle\#$}} +\newcount\nn +\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt +\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt} + +\tenpoint +\noindent This is a list of all corrections made to {\sl Computers \& +Typesetting\/} between 15 March 1992 and the publication of the final +printed versions of those books. +Corrections made to the softcover version of {\sl The \TeX book\/} are +the same as corrections to Volume~A\null. Corrections to the softcover +version of {\sl The \slMF\kern1ptbook\/} are the same as corrections +to Volume~C\null. Changes to Volume~B refer to the fourth printing +(1991), which differs markedly from earlier printings because it includes +all the revisions for \TeX3.0. Changes to Volume~D refer to the third +printing (1991), which differs markedly from earlier printings because +it includes all the revisions for \MF\kern1pt2.0. Changes to the mini-indexes +and master indexes of Volumes B and~D are not shown here unless they are +not obviously derivable from what has been shown. +\looseness=-1 + + % volume A + +\bugonpage A23, line 14 (9/1/92) + +\tenpoint\noindent +a command and you type `|tex|' or `|run| |tex|' or something like that.) + +\bugonpage A53, line 23 (7/7/92) + +\tenpoint\noindent +{\sl scientiarum imperialis petropolitan\ae\/} +became {\sl Akademi\t\i a Nauk SSSR, Doklady}. + +\bugonpage A146, line 2 from the bottom (2/25/93) + +|$\bigl|\|| |\||x|\||-|\||y|\|| \bigr|\||$|\hskip1.25in + $\bigl\vert\vert x\vert-\vert y\vert\bigr\vert$ + +\bugonpage A149, lines 3--5 (2/25/93) + +\noindent +example, we used |\bigl| and |\bigr| to produce $\bigl\vert\vert x\vert- +\vert y\vert\bigr\vert$ in one of the previous illustrations; |\left| and +|\right| don't make things any bigger than necessary, so +`|$\left|\||\left|\||x\right|\||-\left|\||y\right|\||\right|\||$|' +yields only `$\left\vert + \left\vert x\right\vert -\left\vert y\right\vert \right\vert$'.\cutpar + +\bugonpage A158, line 18 from the bottom (2/25/93) + +\ninepoint +are four possibilities for each of these fields. +A field can be + +\bugonpage A282, line 9 from the bottom (7/8/92) + +\ninepoint\noindent +category~4) are intercepted by the alignment +process, en route to \TeX's stomach, so\cutpar + +\bugonpage A293, new paragraph after line 15 (4/9/92) + +\ninepoint +\textindent{$\bull$}|\unhbox|\<8-bit number>, |\unhcopy|\<8-bit number>.\enskip +The specified box register must be void. Nothing happens. + +\bugonpage A309, line 23 (7/7/92) + +\ninepoint\noindent +|petropolitan\ae\/} became {\sl Akademi\t\i a Nauk SSSR, Doklady}.| + +\bugonpage A320, line 11 (1/26/93) + +\ninepoint +\ansno17.12: +|$\bigl(x+f(x)\bigr) \big/ \bigl(x-f(x)\bigr)$|. \ Notice especially the\cutpar + +\bugonpage A349, second line from the bottom (7/8/92) + +\ninepoint\noindent +expand to a ^\ en route to \TeX's +``stomach''; |\multiply| wouldn't work, because\cutpar + +\bugonpage A358, bottom line (2/3/93) + +\ninepoint\noindent +it is easy to define ^|\ldots| and ^|\cdots| macros that +give the proper spacing in most\cutpar + +\bugonpage A370, lines 28 and 29 (9/1/92) + +\def\Russiantt#1{{\tt\hbox to.5em{\hss\eighttt\char#1\hss}}} +\ninepoint\noindent +example, if \TeX\ is implemented for +a purely ^{Cyrillic} ^^{Russian} keyboard, the letter `\Russiantt5' should be +assigned to code \oct{160} and `\Russiantt{`T}' to code \oct{164}, so that +`\Russiantt5\Russiantt{`T}' still means `|pt|'; or else control\cutpar + +\bugonpage A377, lines 17--24 (5/4/92) + +\ninepoint +\begintt +\def\sanswitch{\let\n@xt\endsanity \ifx\next\endsanity + \else\ifcat\noexpand\next\stoken\aftergroup\space\let\n@xt=\eat + \else\ifcat\noexpand\next\bgroup\aftergroup{\let\n@xt=\eat + \else\ifcat\noexpand\next\egroup\aftergroup}\let\n@xt=\eat + \else\let\n@xt=\copytok\fi\fi\fi\fi \n@xt} +\def\eat{\afterassignment\sanitize \let\next= } +\long\def\copytok#1{\ifcat\noexpand#1\relax\aftergroup\noexpand\fi + \ifcat\noexpand#1\noexpand~\aftergroup\noexpand\fi +\endtt + +\bugonpage A455, line 25 (2/26/93) + +\ninepoint\noindent +rent language'' is set equal to |\language|. Whenever a +character is added to the cur-\cutpar + +\bugonpage A459, second line of entry for ampersand (3/22/92) + +\eightpoint\indent\qquad +{\it231--248}, $\underline{282}$, {\it339}, 344, 385--386, 428. + +\bugonpage A461, right column (2/19/93) + +\eightpoint +\newbox\astbox \setbox\astbox=\hbox to0pt{\hss\lower1pt\hbox{*}} +\def\prim#1{\par\indent\copy\astbox{\tt\char`\\#1}} +\prim{chardef}, 44, 121, 155, 210, 214, 215, 271,\par +\indent\qquad $\underline{277}$, 336, {\it343}, {\it345}, {\it356}, 452.\par +\indent\, $\underline{271}$, 283, 286, 289. + +\bugonpage A467, left column (2/25/93) + +\eightpoint +Greek, 127--128, 137, 156, 164, 319,\par +\indent\qquad 358, 430, 434. + +\bugonpage A470, left column (2/25/93) + +\eightpoint +margins, {\sl see\/} |\hoffset|, |\hsize|, |\narrower|. + +\bugonpage A471, left column (2/19/93) + +\eightpoint +\prim{mathchardef}, 155, 199, 214, 215, 271,\par +\indent\qquad 277, 289, 336, {\it358}, {\it394}.\par +\indent\, $\underline{271}$, 289. + +\bugonpage A474, right column (3/22/92) + +\eightpoint +pound sterling, 54, {\it339}, 428. + +\bugonpage A477, right column (3/22/92) + +\eightpoint +sterling, 54, {\it339}, 428. + +\bugonpage A480, left column (4/9/92) + +\eightpoint +\prim{unhbox}, 120, 283, $\underline{285}$, 293, {\it354}, {\it356}, + {\it399}.\par +\prim{unhcopy}, 120, 283, $\underline{285}$, 293, {\it353}. + +\bugonpage A481, left column (2/25/93) + +\eightpoint +whatsits, 95, 110, 157, 226--229, 455. + +\bugonpage A483, lines 15--21 (2/25/93) + +{\tt P.O. Box 869\par +Santa Barbara, CA 93102-0869 USA.\par +|}|} +\smallskip\noindent +Don't delay, write today! That number again is + +\smallskip +{\obeylines +\TeX\ Users Group +P.O. Box 869 +Santa Barbara, CA 93102-0869 USA. +} + + % volume B +\hsize=35pc +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers +\def\to{\mathrel{.\,.}} % double dot, used only in math mode + +\bugonpage B2, line 10 from the bottom (2/27/93) + +\ninepoint\noindent\hskip10pt +{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% +{\tt This\]is\]TeX,\]Version\]3.1415\char'23}\quad +$\{\,$printed when \TeX\ starts$\,\}$ + +\bugonpage B89, line 12 (2/27/93) + +\tenpoint +\noindent\hskip10pt +In horizontal mode, the \\{prev\_graf} field is used for initial language data. + +\bugonpage B89, line 20 (2/27/93) + +\ninepoint +\noindent\hskip20pt +\\{pg\_field}, \\{ml\_field}: \\{integer}; \ \\{aux\_field}: \\{memory\_word}; +\par +\noindent [Also delete the definitions of \\{lhmin} and \\{rhmin}, lines +32 and 33.] + +\bugonpage B90, line 13 (2/27/93) + +\ninepoint +\noindent\hskip10pt +$\\{prev\_depth}\gets\\{ignore\_depth}$; \ $\\{mode\_line}\gets0$; \ +$\\{prev\_graf}\gets0$; + +\bugonpage B91, top three lines (2/27/93) + +\ninepoint +\noindent\hskip20pt +{\bf if\/} $m=\\{hmode}$ {\bf then if\/} $\\{nest}[p].\\{pg\_field}\ne + \oct{40600000}$ {\bf then}\par\noindent\hskip40pt +{\bf begin} \\{print}({\tt\char`\"\](language\char`\"}); \ + \\{print\_int}(\\{nest}[$p$].\\{pg\_field} {\bf mod} \oct{200000});\par +\noindent\hskip40pt + \\{print}({\tt\char`\":hyphenmin\char`\"}); \ + \\{print\_int}(\\{nest}[$p$].\\{pg\_field} {\bf div} \oct{20000000}); \ + \\{print\_char}({\tt\char`\",\char`\"});\par\noindent\hskip40pt +\\{print\_int}((\\{nest}[$p$].\\{pg\_field} {\bf div} \oct{200000}) + {\bf mod} \oct{100}); \ \\{print\_char}({\tt\char`\")\char`\"}); + +\bugonpage B344, lines 21 and 22 (2/27/93) + +\tenpoint\noindent\hskip10pt +This code assumes that a \\{glue\_node} and a \\{penalty\_node} occupy the +same number of \\{mem}~words. + +\bugonpage B344, line 30 (2/27/93) + +\ninepoint\noindent\hskip10pt +$\\{link}(\\{tail})\gets\\{new\_param\_glue}(\\{par\_fill\_skip\_code})$; \ + $\\{init\_cur\_lang}\gets\\{prev\_graf}$ {\bf mod} \oct{200000};\par +\noindent\hskip10pt +$\\{init\_l\_hyf}\gets\\{prev\_graf}$ {\bf div} \oct{20000000}; \ +$\\{init\_r\_hyf}\gets(\\{prev\_graf}$ {\bf div} \oct{200000}) {\bf mod} + \oct{100}; \ +\\{pop\_nest}; + +\bugonpage B353, line 4 (2/27/93) + +\tenpoint\noindent\hskip10pt +Kern nodes do not disappear at a line break unless they are \\{explicit}. + +\bugonpage B353, lines 15 and 16 (2/27/93) + +\ninepoint\noindent\hskip20pt +\\{math\_node}: $\\{break\_width}[1]\gets\\{break\_width}[1]-\\{width}(s)$;\par +\noindent\hskip20pt +\\{kern\_node}: {\bf if\/} $\\{subtype}(s)\ne\\{explicit}$ + {\bf then goto} \\{done}\par\noindent\hskip30pt +{\bf else} $\\{break\_width}[1]\gets\\{break\_width}[1]-\\{width}(s)$; + +\bugonpage B354, lines 6 and 7 (2/27/93) + +\tenpoint\noindent +will be the background +plus $l_1$, so the length from \\{cur\_p} to \\{cur\_p} should be +$\gamma+l_0+l_1-l$. +If the post-break text of the discretionary is empty, a break may also +discard~$q$; in that unusual case we subtract the length of~$q$ and any +other nodes that will be discarded after the discretionary break. + +\bugonpage B354, line 18 (2/27/93) + +\ninepoint\noindent\hskip20pt +{\bf begin} $\langle\,$Add the width of node $s$ to \\{break\_width}{\sevenrm + \kern.5em842}$\,\rangle$; + +\bugonpage B354, line 22 (2/27/93) + +\ninepoint\noindent\hskip10pt +{\bf if\/} $\\{post\_break}(\\{cur\_p})=\\{null}$ {\bf then} + $s\gets\\{link}(v)$;\quad$\{\,$nodes may be discardable after the break$\,\}$ + +\bugonpage B355, top line (2/27/93) + +\ninepoint\noindent +{\tenbf842.\quad}$\langle\,$Add the width of node $s$ to + \\{break\_width}{\sevenrm\kern.5em842}$\,\rangle\equiv$ + +\bugonpage B355, lines 9--14 (2/27/93) + +\ninepoint\noindent\hskip20pt +$\\{hlist\_node},\\{vlist\_node},\\{rule\_node},\\{kern\_node}$: + $\\{break\_width}[1]\gets\\{break\_width}[1]+\\{width}(s)$;\par +\noindent\hskip20pt +{\bf othercases} \\{confusion}({\tt\char`\"disc2\char`\"})\par +\noindent\hskip20pt +{\bf endcases} + +\bugonpage B364, line 10 (2/27/93) + +\tenpoint\noindent +a glue node, penalty node, explicit kern node, or math node. + +\bugonpage B366, line 11 from the bottom (2/27/93) + +\ninepoint\noindent +\\{kern\_node}: {\bf if\/} $\\{subtype}(\\{cur\_p})=\\{explicit}$ + {\bf then} \\{kern\_break}\par\noindent\hskip10pt +{\bf else} $\\{act\_width}\gets\\{act\_width}+\\{width}(\\{cur\_p})$; + +\bugonpage B367, line 21 (2/27/93) + +\ninepoint\noindent\hskip20pt +{\bf else if\/} \\{precedes\_break}(\\{prev\_p}) {\bf then} + $\\{try\_break}(0,\\{unhyphenated})$\par\noindent\hskip20pt +{\bf else if\/} $(\\{type}(\\{prev\_p})=\\{kern\_node})\land + (\\{subtype}(\\{prev\_p})\ne\\{explicit})$ {\bf then} + $\\{try\_break}(0,\\{unhyphenated})$; + +\bugonpage B372, lines 12 and 13 (2/27/93) + +\ninepoint\noindent\hskip20pt +{\bf if\/} $\\{type}(q)=\\{kern\_node}$ {\bf then}\par\noindent\hskip30pt +{\bf if\/} $\\{subtype}(q)\ne\\{explicit}$ {\bf then goto} \\{done1}; + +\bugonpage B376, line 3 from the bottom (2/27/93) + +\ninepoint\noindent\hskip10pt +$\\{cur\_lang}\gets\\{init\_cur\_lang}$; \ +$\\{l\_hyf}\gets\\{init\_l\_hyf}$; \ +$\\{r\_hyf}\gets\\{init\_r\_hyf}$; + +\bugonpage B377, lines 11 and 12 (2/27/93) + +\ninepoint\noindent +$\\{cur\_lang},\\{init\_cur\_lang}$: \\{ASCII\_code};\quad + $\{\,$current hyphenation table of interest$\,\}$\par\noindent +$\\{l\_hyf},\\{r\_hyf},\\{init\_l\_hyf},\\{init\_r\_hyf}$: \\{integer};\quad + $\{\,$limits on fragment sizes$\,\}$ + +\bugonpage B378, line 5 from the bottom, overriding earlier change (2/27/93) + +\ninepoint\noindent\hskip30pt +{\bf else if} $(\\{type}(s)=\\{kern\_node})\land(\\{subtype}(s)=\\{normal})$ + {\bf then}\par\noindent\hskip50pt +{\bf begin} $\\{hb}\gets s$; \ $\\{hyf\_bchar}\gets\\{font\_bchar}[\\{hf}]$; \ + {\bf end}\par\noindent\hskip40pt +{\bf else goto} \\{done3}; + + +\bugonpage B394, lines 12 and 13 (2/27/93) + +\ninepoint\noindent\hskip10pt +{\bf var} $n$: $0\to64$;\quad$\{\,$length of current word; not always + a \\{small\_number}$\,\}$\par\noindent\hskip20pt +$j$: $0\to64$;\quad$\{\,$an index into \\{hc}$\,\}$ + +\bugonpage B404, line 21 (2/27/93) + +\ninepoint\noindent\hskip10pt +{\bf var} $k,l$: $0\to64$;\quad$\{\,$indices into \\{hc} and \\{hyf}; + not always in \\{small\_number} range$\,\}$ + +\bugonpage B460, lines 21 and 22 (2/27/93) + +\ninepoint\noindent\hskip10pt +\\{push\_nest}; \ $\\{mode}\gets\\{hmode}$; \ $\\{space\_factor}\gets1000$; \ + \\{set\_cur\_lang}; \ $\\{clang}\gets\\{cur\_lang}$;\par\noindent\hskip10pt +$\\{prev\_graf}\gets(\\{norm\_min}(\\{left\_hyphen\_min})\ast\oct{100}+ + \\{norm\_min}(\\{right\_hyphen\_min}))\ast\oct{200000}+\\{cur\_lang}$; + +\bugonpage B492, line 6 from the bottom (2/27/93) + +\ninepoint\noindent\hskip10pt +\\{unsave}; \ $\\{prev\_graf}\gets\\{prev\_graf}+3$;\par\noindent\hskip10pt +\\{push\_nest}; \ $\\{mode}\gets\\{hmode}$; \ $\\{space\_factor}\gets1000$; \ + \\{set\_cur\_lang}; \ $\\{clang}\gets\\{cur\_lang}$;\par\noindent\hskip10pt +$\\{prev\_graf}\gets(\\{norm\_min}(\\{left\_hyphen\_min})\ast\oct{100}+ + \\{norm\_min}(\\{right\_hyphen\_min}))\ast\oct{200000}+\\{cur\_lang}$; + + % volume C +\hsize=29pc +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers + +\bugonpage C151, line 11 from the bottom (6/26/93) + +\ninepoint\indent +\qquad scaled $1.42(1+\max(-\\{pen\_lft},\\{pen\_rt},\\{pen\_top}, + -\\{pen\_bot}))$ + +\bugonpage C262, line 15 (6/26/93) + +\ninepoint\noindent +|string base_name, base_version; base_name="plain"; base_version="2.71";| + +\bugonpage C262, line 29 (6/26/93) + +\ninepoint\noindent +|def |^|gobble|| primary g = enddef; def |^|killtext|| text t = enddef;| + +\bugonpage C271, bottom line (6/26/93) + +\ninepoint\noindent +| culldraw p enddef;| + +\bugonpage C272, three new lines for top of page (6/26/93) + +{\ninepoint\parindent=0pt +|def |^|culldraw|| expr p = addto pic_ doublepath p.t_ withpen currentpen;|\par +| cull pic_ dropping(-infinity,0) withweight default_wt_;|\par +| addto_currentpicture also pic_; pic_:=nullpicture; killtext enddef;|\par +} + +\bugonpage C272, replacement for former line 5 (6/26/93) + +\ninepoint\noindent +| (cut_ scaled (1+max(-pen_lft,pen_rt,pen_top,-pen_bot))| + +\bugonpage C296, line 24 (2/3/93) + +\ninepoint\noindent +the definition of |rp| is changed to `|]..tension 4..|', +and if `|scaled|~|5pt|' is inserted\cutpar + +\bugonpage C299, line 3 (5/15/92) + +\ninepoint\noindent +a Bernshte{\u\i}n polynomial of order $n-1$.) + +\bugonpage C347, left column (5/15/92) + +\eightpoint +Bernshte{\u\i}n, Serge{\u\i} \thinspace Natanovich, 14. + +\bugonpage C348, left column (6/26/93) + +\eightpoint +|culldraw|, {\it271}, $\underline{272}$. + +\bugonpage C350, left column (6/26/93) + +\eightpoint +exponential, {\sl see\/} |mexp|. + +\bugonpage C352, left column (6/26/93) + +\eightpoint +|killtext|, $\underline{262}$, {\it 272}. + +\bugonpage C352, right column (6/26/93) + +\eightpoint +logarithm, {\sl see\/} |mlog|. + +\bugonpage C361, lines 14 and 15 (2/25/93) + +P.O. Box 869\par +Santa Barbara, CA 93102-0869 USA. + + + % Volume D +\hsize=29pc +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers +\def\to{\mathrel{.\,.}} % double dot, used only in math mode + +\bugonpage Dxiv, line 13 (4/19/96) + +\noindent preprocessor converts these into numeric constants that are +256 or more. This\cutpar + +\bugonpage Dxiv, line $-1$ (4/19/96) + +\ninepoint\noindent This file contains one line per string, starting with +string number 256, then number 257,\cutpar + +\bugonpage Dxv, lines 10 and 11 (4/19/96) + +\ninepoint\noindent +In this case, occurrences of |""| in the |WEB| program will be replaced by +256; occurrences of |"This longer string"| will be replaced by 257. +The symbol |@$| stands for the numeric\cutpar + +\hsize=35pc +\bugonpage D2, line $-17$ (8/7/98) + +\def\RQ/{{\char'23}} % right quote in a string +\ninepoint\noindent +{\bf define} $\\{banner}\equiv\hbox{\tt\RQ/This\]is\]METAFONT,\]% + Version\]2.7182\RQ/}$\quad$\{\,$printed when \MF\ starts$\,\}$ + +\bugonpage D50, line 26 (8/7/98) + +\ninepoint\noindent +\quad{\bf if\/} $b>0$ {\bf then} + +\bugonpage D138, line 14 from the bottom (3/6/95) + +\tenpoint +\textindent{$2'$)} Let $Z_k^{(j+1)}={1\over2}(Z_k^{(j)}+Z_{k+1}^{(j)})$, for +$1\le k\le n-j$, for $1\le j0$ {\bf do}\par\noindent +\qquad {\bf if\/} \\{token\_state} {\bf then} \\{end\_token\_list} + {\bf else} \\{end\_file\_reading};\par\noindent +\quad {\bf while} $\\{loop\_ptr}\ne\\{null}$ {\bf do} \\{stop\_iteration}; + +\bugonpage D518, line 18 (3/20/95) + +\ninepoint\noindent +\qquad $\\{loop\_ptr}\gets\\{cond\_ptr}$; \ + $\\{cond\_ptr}\gets\\{link}(\\{cond\_ptr})$; \ + $\\{free\_node}(\\{loop\_ptr},\\{if\_node\_size})$; + +\bugonpage D546, left column (4/11/96) + +\eightpoint +Stern, Moritz Abraham: \ 526. + + % volume E +\hsize=29pc +\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}} + + + \bye + diff --git a/Master/texmf-dist/doc/generic/knuth-errata/errata.eleven b/Master/texmf-dist/doc/generic/knuth-errata/errata.eleven new file mode 100644 index 00000000000..64d9f8ab457 --- /dev/null +++ b/Master/texmf-dist/doc/generic/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 \, are +recorded in a ``choice item'' that is appended to the current list. + +\bugonpage A306, line 7 (06/30/01) + +\ninepoint\noindent +instead of a shelf{\kern0pt}ful. +In fact, the latter idea---to +insert an italic correction---is prefer-\cutpar + +\bugonpage A323, line 12 from the bottom (06/30/01) + +\ninepoint\noindent +\hbox to\parindent{\bf\hss18.31.\enspace}% +|$k=1.38065\times10^{-16}\rm\,erg\,K^{-1}$|. + +\bugonpage A451, line 15 (01/30/01) + +\tenpoint\noindent +{\sl Connecticut Yankee\/} come out with only nine or +ten bad hyphens: + +\bugonpage A451, line 23 (01/30/01) + +\tenpoint\noindent\begintt + mo-er-der-mohren-mut-ter-mar-mor-mon-u-menten-macher. +\endtt + +\bugonpage A454, lines 23--30 (06/30/01) + +\begingroup +\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000 +\doublehyphendemerits=-100000 \finalhyphendemerits=-100000 +\ddanger If a suitable starting letter is found, let it be in font~$f$. +Hyphenation is abandoned unless the |\hyphenchar| of~$f$ is a number +between 0 and~255, inclusive. +If this test is passed, \TeX\ continues to scan forward +until coming to something that's not one of the following three +``admissible items'': (1)~a character in font~$f$ whose |\lccode| +is nonzero; (2)~a ligature formed entirely from characters of type~(1); +(3)~an implicit kern. The first inadmissible item terminates this part of +the process; the trial word consists of all the letters found in admissible +items. Notice that all of these letters are in font~$f$. +\par\endgroup + +\bugonpage A461, right column (07/08/01) + +\eightpoint\noindent +\llap{*}|\char|, {\it 43--45}, 76, 86, 155, 283, $\underline{286}$, + +\bugonpage A466, left column (07/09/01) + +\eightpoint\noindent +\llap{*}|\floatingpenalty|, $\underline{123}$--$\underline{124}$, + 272, 281, {\it 363}. + +\bugonpage A473, left column (06/30/01) + +\eightpoint\noindent +orphans, {\sl see\/} widow words. + + % volume B +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers +\def\to{\mathrel{.\,.}} % double dot, used only in math mode + +\hsize=35pc + +\bugonpage B8, line 2 (05/04/01) + +\tenpoint\noindent +statements will be meaningful. We insert the label +`\\{exit}' just before the `{\bf end}' of a procedure in\cutpar + +\bugonpage B30, line $-4$ (05/04/01) + +\ninepoint\noindent +\quad{\bf begin} \\{update\_terminal};\quad$\{\,$now the user sees + the prompt for sure$\,\}$ + +\bugonpage B84, lines 22 and 27 (05/04/01) + +\ninepoint\noindent +\quad$\\{ignore}=9$\quad$\{\,$characters to ignore ( |^^@| )$\,\}$\par +\noindent +\quad$\\{active\_char}=13$\quad$\{\,$characters that invoke + macros ( |~| )$\,\}$ + +\bugonpage B280, lines 23 and 24 (04/08/01) + +\tenpoint\noindent +or unset nodes; in particular, each mlist item appears in the +variable-size part of \\{mem}, so the \\{type} field is always present. + +\bugonpage B382, line 6 (01/01/01) + +\tenpoint\noindent +between `fl' and `y', then $m=2$, $t=2$, and $y_1$ will +be a ligature node for `fl' followed by an\cutpar + +\bugonpage B386, line 11 (04/08/01) + +\ninepoint\noindent +\quad$\\{qi}(2),\\{qi}(6)$: {\bf begin} $\\{cur\_r}\gets\\{rem\_byte}(q)$;% + \quad$\{\,$\||=:|, \||=:>|$\,\}$ + +\bugonpage B475, line 12 (07/01/01) + +\ninepoint\noindent +\qquad{\bf end};\quad$\{\,$now we are in vertical mode, + working on the list that will contain the display$\,\}$ + + % volume C +\hsize=29pc +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers +\def\ddashto{\mathrel{\hbox{-\thinspace-\thinspace-\kern-.05em}}} +\def\tension{\mathop{\rm tension}} +\def\controls{\mathop{\rm controls}} +\def\and{\,{\rm and}\,} + +\bugonpage C204, line 3 from the bottom (07/08/01) + +\ninepoint\noindent +slightly. If $\\{autorounding}>1$, +you get even more changes: Paths are perturbed slightly\cutpar + +\bugonpage C238, lines 9 and 8 from the bottom (07/08/01) + +\ninepoint\noindent +tance is ${\rm length}(z_4-z_1)$. But there's a slicker solution: +Just calculate +$$\hbox{abs ypart$((z_1-z_2)\mathbin{\rm rotated}-{\rm angle}(z_3-z_2))$.}$$ + +\bugonpage C313, bottom line (06/30/01) + +\rightline{\eightss--- LA ROCHEFOUCAULD, {\eightssi Maximes\/}\enspace(1665)} + +\bugonpage C352, left column (06/30/01) + +\eightpoint\noindent +La Rochefoucauld, Fran\c cois VI, 313. + +\bugonpage C357, right column (07/08/01) + +\eightpoint\noindent +\llap{*}|true|, 55, {\it64\/}--{\it65}, 170, 210. + + % Volume D +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers +\def\to{\mathrel{.\,.}} % double dot, used only in math mode + +\hsize=35pc + +\bugonpage D8, line 2 (05/04/01) + +\tenpoint\noindent +statements will be meaningful. We insert the label +`\\{exit}' just before the `{\bf end}' of a procedure in\cutpar + +\bugonpage D28, line $-8$ (05/04/01) + +\ninepoint\noindent +\quad{\bf begin} \\{update\_terminal};\quad$\{\,$now the user sees + the prompt for sure$\,\}$ + +\bugonpage D101, line 21 (07/08/01) + +\ninepoint\noindent +\quad{\bf define} $\\{subscr\_head\_loc}(\hbox{\tt\#})\equiv\hbox{\tt\#}+1$ +\quad$\{\,$where \\{value}, \\{subscr\_head}, and \\{attr\_head} are$\,\}$ + +\bugonpage D180, lines 22 and 23 (01/26/01) + +\tenpoint\noindent +$(y,-x)$ will appear in node~$p$. Similarly, a fourth-octant +transformation will have been applied after the transition, so +we will have $\\{x\_coord}(q)=\hbox{$-x$}$ and $\\{y\_coord}(q)=y$. + +\bugonpage D196, lines 7 and 8 (01/26/01) + +\tenpoint\noindent +where $x'(t)\ge0$ we have $\\{right\_type}=% +\\{first\_octant}$ or $\\{right\_type}=\\{eighth\_octant}$; in regions where +$x'(t)\le0$, +we have $\\{right\_type}=\\{fifth\_octant}$ or $\\{right\_type}=\\{fourth% +\_octant}$. + +\bugonpage D511, line 17 (07/03/01) + +\tenpoint\noindent +from appearing again. + + % volume E +\hsize=29pc + +\newbox\shorthyf \setbox\shorthyf=\hbox{-\kern-.05em} +\mathchardef\period=`\. +{\catcode`\-=\active \global\def-{\copy\shorthyf\mkern3.9mu} + \catcode`\.=\active \global\def.{\period\mkern3mu}} +\def\8#1{\mathrel{\mathcode`\.="8000 \mathcode`\-="8000 + #1\unkern}} % `..' and `--' + +\bugonpage E9, line 9 (07/03/01) + +\tenpoint\indent +|[92] [123] [124]) ) )| + + \bye + + diff --git a/Master/texmf-dist/doc/generic/knuth-errata/errata.five b/Master/texmf-dist/doc/generic/knuth-errata/errata.five new file mode 100644 index 00000000000..4e2982f109a --- /dev/null +++ b/Master/texmf-dist/doc/generic/knuth-errata/errata.five @@ -0,0 +1,1108 @@ +% Bugs (sigh) in Computers \& Typesetting + +\input manmac +\font\sltt=cmsltt10 +\font\niness=cmss9 +\font\ninessi=cmssi9 +\proofmodefalse +\raggedbottom +\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}} + +\def\today{\number\day\ + \ifcase\month\or + Jan\or Feb\or Mar\or Apr\or May\or Jun\or + Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi + \ \number\year} + +\def\cutpar{{\parfillskip=0pt\par}} + +\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1989}} +\def\bugonpage#1(#2) \par{\bigbreak\tenpoint + \hrule width\hsize + \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize + \nobreak\medskip} +\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint + \hrule width\hsize + \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize + \nobreak\medskip} +\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo +\def\0{\raise.7ex\hbox{$\scriptstyle\#$}} +\newcount\nn +\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt +\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt} + +\tenpoint +\noindent This is a list of all corrections made to {\sl Computers \& +Typesetting}, Volumes \hbox{A--E}, between 20 February 1989 and +30 September 1989 (when \TeX\ Version 3.0 and \MF\ Version 2.0 were +fully defined). Corrections made to +the softcover version of {\sl The \TeX book\/} are the same as corrections to +Volume~A\null. Corrections to the softcover version of {\sl The +\slMF\kern1ptbook\/} are the same as corrections to Volume~C\null. +Some of these corrections have already been made in reprintings +of the books. Several minor changes +to Volumes A~and~C are not shown here because they simply +make room for the more substantive changes needed to describe the new +features of \TeX\ Version 3.0 and \MF\ Version 2.0. Hundreds of +changes will soon be made to Volumes B~and~D because of the upgrades +to \TeX\ and \MF\/; it will unfortunately be impossible to document all of those +changes. Therefore, readers who need up-to-date information on the \TeX\ and +\MF\ programs should refer to the |WEB| source files until new +printings of Volumes B~and~D are issued. + + % volume A + +\buginvol A, in general (9/23/89) + +\ninepoint\noindent +[Change `127' to `255' and `128' to `256' in contexts referring to character +codes. This happens on pages 37(twice), 39, 41, 43, 44(twice), 48, 93, 154, +277, 305(twice), 308(twice), 313, and 343. Also change `7-bit' to `8-bit' on +pages 214 and 277.] + +\bugonpage A23, line 16 (9/23/89) + +|This is TeX, Version 3.0 (preloaded format=plain 89.7.15)| + +\bugonpage A34, new copy for bottom of page (9/23/89) + +\ddanger If you use \TeX\ format packages designed by others, your +error messages may involve many inscrutable two-line levels of macro +context. By setting ^|\errorcontextlines||=0| at the beginning of your file, +you can reduce the amount of information that is reported; +\TeX\ will show only the top and bottom pairs of context lines +together with up to |\errorcontextlines| additional two-line items. \ (If +anything has thereby been omitted, you'll also see `|...|'.) \ Chances +are good that you can spot the source of an error even when most of a +large context has been suppressed; if not, you can say +`|I\errorcontextlines=100\oops|' and try again. \ (That will usually +give you an undefined control sequence error and plenty of context.) \ +Plain \TeX\ sets |\errorcontextlines=5|. + +\bugonpage A45, lines 9--15 (9/23/89) + +\ninepoint\noindent +|^^| has an internal code between 64 and 127, \TeX\ +subtracts 64 from the code; if the code is between 0 and 63, \TeX\ +adds~64. Hence code 127 can be typed |^^?|, and +the dangerous bend sign can be obtained by saying +|{\manual^^?}|. However, you must change the category code of character +127 before using it, since this character ordinarily has category~15 +(^{invalid}); say, e.g., |\catcode`\^^?=12|. +^^{double hat} ^^{hat hat} +The |^^| notation is different from |\char|, because |^^| combinations are +like single characters; for example, it would not be permissible to say +|\catcode`\char127|, but |^^| symbols can even be used as letters within +control words. + +\bugonpage A45, new copy before line 20 (9/23/89) + +\danger There's also a special convention in which |^^| is +followed by {\sl two\/} ``lowercase hexadecimal digits,'' |0|--|9| or |a|--|f|. +With this convention, all 256 characters are obtainable in a uniform +way, from |^^00| to |^^ff|. Character 127 is |^^7f|. + +\noindent +[Also remove one of the two dangerous bend signs on line 20.] + +\bugonpage A45, bottom paragraph and footnote (9/23/89) + +\ddanger People who install \TeX\ systems for use with non-American alphabets +can make \TeX\ conform to any desired standard. For example, suppose +you have a ^{Norwegian keyboard} containing the letter {\tt\ae}, which +^^{Scandinavian letters} ^^{foreign languages} +comes in as code~241 (say). Your local format package should define +|\catcode`|{\tt\ae}|=11|; then you could have control sequences like +|\s|{\tt\ae}|rtrykk|. Your \TeX\ input files could be made readable by +American installations of \TeX\ that don't have your keyboard, by +substituting |^^f1| for character~241. \ (For example, the stated control +sequence would appear as |\s^^f1rtrykk| in the file; your American +friends should also be provided with the format that you used, with its +|\catcode`^^f1=11|.) \ Of course you should also arrange your fonts +so that \TeX's character 241 will print as {\ae}; and you should +change \TeX's hyphenation algorithm so that it will do correct +Norwegian hyphenation. The main point is that such changes are not +extremely difficult; nothing in the design of \TeX\ limits it to the +American alphabet. Fine printing is obtained by fine tuning to the +language or languages being used. +^^{keyboards, non-ASCII} + +\ddanger European languages can also be accommodated effectively with +only a limited character set. +For example, let's consider Norwegian again, but suppose that\parfillskip=0pt + +\noindent [Now continue with the text on line 11 of page 46.] + +\bugonpage A47, lines 9--21 (9/23/89) + +\ddanger If \TeX\ sees a superscript character (category 7) in any state, +and if that character is followed by another identical character, and if +those two equal characters are followed by a character of code +$c<128$, then they +are deleted and 64 is added~to or subtracted from the code~$c$. +\ (Thus, |^^A| is +replaced by a single character whose code is~1, etc., as explained earlier.) \ +However, if the two superscript characters are immediately followed by two +of the lowercase hexadecimal digits |0123456789abcdef|, the +four-character sequence is replaced by a single character having the +specified hexadecimal code. +The replacement is carried out also if such a trio or quartet of +characters is encountered during steps (b) or~(c) of the control-sequence-name +scanning procedure described above. After the replacement is made, \TeX\ +begins again as if the new character had been present all the time. +If a superscript character is not the first of such a trio or quartet, it is +handled by the following rule. + +\ddanger If \TeX\ sees a character of categories 1, 2, 3, 4, 6, 8, 11, 12, +or~13, +or a character of category~7 that is not the first of a special +sequence as just +described, it converts the character to a token by attaching the category +code, and goes into state~$M$. This is the normal case; almost every +nonblank character is handled by this rule. + +\bugonpage A48, line 15 (9/23/89) + +\ninepoint\noindent +the input line +`| $x^2$~ \TeX ^^62^^6|'\thinspace? + +\bugonpage A54, third line from the bottom (9/23/89) + +\ninepoint\noindent +For example, a well-designed \TeX\ font for ^{French} +might well treat accents as lig-\cutpar + +\bugonpage A76, lines 3--5 from the bottom (9/23/89) + +\ninepoint\noindent +\TeX\ does not assign any value to +|\sfcode'042|. + +\bugonpage A107, new copy for top of page (9/23/89) + +\ddanger If you want to avoid overfull boxes at all costs without +trying to fix them manually, you might be tempted to set +|tolerance=10000|; this allows arbitrarily bad lines to be acceptable +in tough situations. But infinite tolerance is a bad idea, because +\TeX\ doesn't distinguish between terribly bad and preposterously +horrible lines. Indeed, a tolerance of 10000 encourages \TeX\ to +concentrate all the badness in one place, making one truly unsightly +line instead of two moderately bad ones, because a single +``write-off'' produces fewest total demerits according to the rules. +There's a much better way to get the desired effect: \TeX\ has a +parameter called ^|\emergencystretch| that is added to the assumed +stretchability of every line when badness and demerits are computed, +in cases where overfull boxes are otherwise unavoidable. If +|\emergencystretch| is positive, \TeX\ will make a third pass over a +paragraph before choosing the line breaks, when the first passes did +not find a way to satisfy the ^|\pretolerance| and ^|\tolerance|. +The effect of\/ |\emergencystretch| is to scale down the badnesses so +that large infinities are distinguishable from smaller ones. By +setting |\emergencystretch| high enough (based on |\hsize|) you can be +sure that the |\tolerance| is never exceeded; hence overfull boxes +will never occur unless the line-breaking task is truly impossible. + +\bugonpage A116, lines 11--15 (6/7/89) + +\danger If you have two or more |\topinsert| or |\pageinsert| commands in +quick succession, \TeX\ may need to carry them over to several subsequent +pages; but they will retain their relative order when they are +carried over. For example, suppose you have pages that are nine inches +tall, and suppose you have already specified 4~inches of text for some +page, say page~25. Then suppose you make seven topinserts in a row, of% +{\parfillskip=0pt\endgraf}\endgroup + +\bugonpage A125, lines 13--29 (9/23/89) + +\ddanger \looseness=-1 +When the best page break is finally chosen, \TeX\ removes everything after +the chosen breakpoint from the bottom of the ``current page,'' and puts it +all back at the top of the ``recent contributions.'' The +chosen breakpoint itself is placed at the very top of the recent contributions. +If it is a penalty item, the value of the penalty is recorded in +^|\outputpenalty| and the penalty in the contribution list is changed +to $10000$; otherwise |\outputpenalty| is set to 10000. +The insertions that remain on the current page are of three kinds: For +each class~$n$ there are unsplit insertions, followed possibly by +a single split insertion, followed possibly by others. If +^|\holdinginserts|$\null>0$, all insertions remain in place (so that +they might be contributed again); otherwise they are all removed from +the current page list as follows: The unsplit insertions +are appended to |\box|$\,n$, with no interline glue between them. \ +(^{Struts} should be used, as in the |\vfootnote| macro of +Appendix~B\null.) \ +If a split insertion is present, it is effectively |\vsplit| to the size +that was computed previously in Step~4; the top part is treated as an +unsplit insertion, and the remainder (if any) is converted to an insertion +as if it had not been split. This remainder, followed by any other floating +insertions of the same class, is held +over in a separate place. \ (They will show up on the ``current page'' if +^|\showlists| is used while an ^|\output| routine is active; the total +number of such insertions appears in ^|\insertpenalties| during an +|\output| routine.) %\ +Finally, the remaining items before the best break on the current page are put +together in a |\vbox|\parfillskip=0pt + +\bugonpage A131, line 12 (9/22/89) + +\ninepoint\noindent +work fine; but sometimes you want to have uniformity +between different members of a\cutpar + +\bugonpage A155, lines 3--5 (9/23/89) + +\ninepoint\noindent +when it encounters a character that +is given explicitly as ^|\char|\. + +\bugonpage A214, lines 19--24 (9/23/89) + +\ninepoint +\textindent\bull |\the|\, where \ is +one of the integer quantities ^|\prevgraf|, ^|\deadcycles|, ^|\insertpenalties|, +^|\inputlineno|, ^|\badness|, +or ^|\parshape| (denoting only the number of lines of\/ |\parshape|); or +one of the dimensions ^|\pagetotal|, ^|\pagegoal|, ^|\pagestretch|, +^|\pagefilstretch|, ^|\pagefillstretch|, ^|\pagefilllstretch|, ^|\pageshrink|, +^|\pagedepth|. In horizontal modes you can also refer to a special integer, +|\the\spacefactor|; in vertical modes there's a special dimension, +|\the\prevdepth|. + +\bugonpage A229, new copy after line 11 (9/23/89) + +\ddanger \TeX\ will report the badness of glue setting in a box if +you ask for the numeric quantity +^|\badness| after making a box. For example, you might say +\begintt +\setbox0=\line{\trialtexta} +\ifnum\badness>250 \setbox0=\line{\trialtextb}\fi +\endtt +The badness is between 0 and 10000 +unless the box is overfull, when |\badness=1000000|. + +\bugonpage A271, lines 17--20 (9/23/89) + +\ninepoint +\beginsyntax + \alt\alt^|\count|<8-bit number>\alt<8-bit number> + \alt\alt\alt^|\parshape|\alt^|\inputlineno| + \alt^|\hyphenchar|\alt^|\skewchar|\alt^|\badness| +\endsyntax + +\bugonpage A272, lines 3--4 (9/23/89) + +\ninepoint\noindent +value is between 0~and $2^8-1=255$; a ^\<4-bit number> is similar. + +\bugonpage A273, insert after lines 11, 20, 21, 21, 38 (9/23/89) + +\ninepoint +\begindisplay +|\holdinginserts|\quad(positive if insertions remain dormant in output box)\cr +|\language|\quad(the current set of hyphenation rules)\cr +|\lefthyphenmin|\quad(smallest fragment at beginning of hyphenated word)\cr +|\righthyphenmin|\quad(smallest fragment at end of hyphenated word)\cr +|\errorcontextlines|\quad(maximum extra context shown when errors occur)\cr +\enddisplay + +\bugonpage A274, insert after line 4 (9/23/89) + +\ninepoint\indent +|\emergencystretch|\quad(reduces badnesses on final pass of line-breaking) + +\bugonpage A275, line 13 (9/23/89) + +\ninepoint\noindent +That makes a total of 103 parameters of all five kinds. + +\bugonpage A283, line 14 (9/23/89) + +\ninepoint +\beginsyntax + \alt^|\noboundary|\alt^|\unhbox|\alt^|\unhcopy|\alt^|\valign|\alt^|\vrule| +\endsyntax + +\bugonpage A286, lines 3--12 from the bottom (9/23/89) + +\ninepoint +\textindent{$\bull$}% +\, \, \kern-1pt^|\char|\<8-bit number>, \, +\kern-1pt^|\noboundary|.\enskip +The most common commands of all are the character commands that tell +\TeX\ to append a character to the current horizontal +list, using the current font. +If two or more commands of this type occur in succession, \TeX\ processes +them all as a unit, converting to ligatures and/or +inserting kerns as directed by the font information. \ (Ligatures and +kerns may be influenced by invisible ``boundary'' characters at the left +and right, unless |\noboundary| appears.) \ Each character +command adjusts ^|\spacefactor|, using +the ^|\sfcode| table as described in Chapter~12. +In unrestricted horizontal mode, a +`|\discretionary{}{}{}|' item is appended after a character whose code is +the ^|\hyphenchar| of its font, or after a ligature formed from a sequence +that ends with such a character. + +\bugonpage A287, insert after line 19 (9/23/89) + +\ninepoint +\textindent{$\bull$}% +|\setlanguage|\.\enskip See the conclusion of Appendix H. + +\bugonpage A289, lines 9--14 from the bottom (9/23/89) + +\ninepoint\noindent +$2^{15}-1$. This is done by replacing the character number by its +^|\mathcode| value. If the +|\mathcode| value turns out to be $32768=\null$\hex{8000}, however, + the \ +is replaced by an ^{active character} token having the original character +code (0 to~255); \TeX\ forgets the original \ and expands this +active character according to the rules of Chapter~20. + +\bugonpage A290, insert before 13th line from bottom (9/23/89) + +\ninepoint +\textindent{$\bull$}% +|\noboundary|. This command is redundant and therefore has no +effect; boundary ligatures are automatically disabled in math modes. + +\bugonpage A296, line 16 from the bottom (9/22/89) + +\noindent[There should be a `|^|' just above the `|3|' in the line below. +This was mistakenly dropped by the printer some time during 1985; it was +correct in the first two printings and it has always been correct inside the +computer!] + +\bugonpage A309, lines 3--5 (9/23/89) + +\ninepoint\noindent +\hbox to\parindent{\bf\hss8.4.\enspace}\ignorespaces +|$|$_{3}$ |x|$_{11}$ |^|$_7$ |2|$_{12}$ |$|$_{3}$ |~|$_{13}$ \]$_{10}$ +\cstok{TeX} |b|$_{12}$ |v|$_{12}$ \]$_{10}$. The final space comes from the +\ placed at the end of the line. Code |^^6| yields |v| only +when not followed by |0|--|9| or |a|--|f|. +The initial space is ignored, because state~$N$ +governs the beginning of the line. + +\bugonpage A314, line 27 (9/23/89) + +\ninepoint\noindent +The English word `eighteen' might deserve similar treatment. +\TeX's hyphenation algorithm will not make such spelling changes automatically. + +\bugonpage A318, line 19 (3/3/89) + +\ninepoint +|\def\clearnotenumber{\notenumber=0\relax}| + +\bugonpage A330, line 3 (8/25/89) + +\ninepoint\noindent +\hbox to\parindent{\bf\hss20.10.\enspace}\ignorespaces +|\def\overpaid{{\count0=\balance| + +\bugonpage A336, lines 4--8 from the bottom (9/23/89) + +\ninepoint\noindent +badness rating of a +box is at most 10000, except that the |\badness| of +an overfull box is 1000000. |INITEX| initializes |\tolerance| to +10000, thereby making all line breaks feasible. Penalties of 10000 or more +prohibit breaks; penalties of $-10000$ or less make breaks mandatory. The +cost of a page break is 100000, if the badness is 10000 and if the +associated penalties are less than 10000 in magnitude (see Chapter~15). + +\bugonpage A337, lines 2--16 (9/23/89) + +\ninepoint\noindent +ifies characters whose codes differ by~64 +from the codes of |?|, |@|, |A|; this convention applies only to +characters with ASCII codes less than~128. There are 256 possible characters, +hence 256 entries in each of the |\catcode|, |\mathcode|, +|\lccode|, |\uccode|, |\sfcode|, and |\delcode| tables. All +|\lccode|, |\uccode|, and |\char| values +must be less than~256. A font has at most 256 characters. There are +256~|\box| registers, 256~|\count| registers, 256~|\dimen| registers, +256~|\skip| registers, 256~|\muskip| registers, 256~|\toks| registers, +256~hyphenation tables. +The ``at size'' of a font must be less than~$2048\pt$, i.e.,~$2^{11}\pt$. +Math delimiters are encoded by multiplying the math~code of the ``small +character'' by~$2^{12}$. The magnitude of +a~\ value must be less than~$16384\pt$, i.e.,~$2^{14}\pt$; +similarly, the \ in a~\ must be less than~$2^{14}$. +A~|\mathchar| or |\spacefactor| or |\sfcode| value must be less than~$2^{15}$; +a~|\mathcode| or |\mag| value must be less than or equal to~$2^{15}$, +and $2^{15}$ denotes an ``active'' math character. There +are $2^{16}\rm\,sp$ per~pt. A~|\delcode| value +must be less than~$2^{24}$; a~|\delimiter|, less than $2^{27}$. +The |\end| command sometimes contributes +a penalty of $-2^{30}$ to the current page. A~\ must be less than +$2^{30}\rm\,sp$ in absolute value; a~\ must be +less than $2^{31}$ in absolute value. + +\bugonpage A348, line 12 from the bottom (9/23/89) + +\ninepoint\noindent +^|\showboxbreadth||=5 |^|\showboxdepth||=3 |^|\errorcontextlines||=5| + +\bugonpage A364, insert before line 18 from the bottom (9/23/89) + +\ninepoint\noindent +^|\lefthyphenmin||=2 |^|\righthyphenmin||=3 % disallow x- or -xx breaks| + +\bugonpage A364, line 5 from the bottom (9/23/89) + +\ninepoint\noindent +|\def|^|\fmtname||{plain}\def\fmtversion{3.0} % identifies the current format| + +\bugonpage A369, insert before line 5 from the bottom (9/23/89) + +\ninepoint +Modern keyboards allow 256 codes to be input, not just 128; so \TeX\ +represents characters internally as numbers in the range 0--255 (i.e., +\oct{000}--\oct{377}, or \hex{00}--\hex{FF}). Implementations of \TeX\ +differ in which characters they will accept in input files and which +they will transmit to output files; these subsets can be specified +independently. A completely permissive version of \TeX\ allows full +256-character input and output; other versions might ignore all +but the visible characters of ASCII; still other versions might +distinguish the tab character (code \oct{011}) from a space on input, +but might output each tab as a sequence of three characters |^^I|. + +\bugonpage A370, lines 3--7 (9/23/89) + +\ninepoint\noindent +close as possible to the ASCII conventions. +\ (b)~Make sure that codes \oct{041}--\oct{046}, \oct{060}--\oct{071}, +\oct{141}--\oct{146}, and \oct{160}--\oct{171} are present and that +each unrepresentable +internal code $<\null$\oct{200} leads to a representable code when \oct{100} is +added or subtracted; then all 256 codes can be input and output. +\ (c)~Cooperate with everyone else who shares +the same constraints, so that you all adopt the same policy. +\ (See Appendix~J for information about the \TeX\ Users Group.) + +\bugonpage A370, bottom line (9/23/89) + +\ninepoint\noindent +doesn't matter if these symbols have their plain +\TeX\ meanings or not. \ (6)~There is a special convention for +representing characters 0--255 in the hexadecimal forms +|^^00|--|^^ff|, explained in Chapter~8. This convention is always +acceptable as input, when |^| is any character of catcode~7. Text +output is produced with this convention only when representing +characters of code $\ge128$ that a \TeX\ installer has chosen not to +output directly. + +\bugonpage A385, line 8 (5/14/89) + +\ninepoint +|\def\beginbox{\setbox0=\hbox\bgroup}| + +\bugonpage A400, line 18 from the bottom (9/23/89) + +\ninepoint\noindent +page prematurely if you want to pass a signal. \ (Set +^|\holdinginserts| positive to pass a signal when the contents of\/ +|\box255| will be sent back through the page builder again, if any +insertions are present.) + +\bugonpage A419, lines 4--6 (9/23/89) + +\ninepoint\noindent +shortened or lengthened anyway; +book preparation with \TeX, as with type, encourages interaction between +humans and machines.) \ +The lines of the quotations are set ^{flush right} by using +^|\obeylines| together with a stretchable ^|\leftskip|: + +\bugonpage A444, lines 21--26 (9/23/89) + +\ninepoint\noindent +following one, using the specified family and the current size, then +insert the ligature character and continue as specified by the font; +two characters may collapse into one, or a new character may appear. +Otherwise if the font information +shows a kern between the current symbol and the next, insert a kern item +after the current Ord atom and move to the next item after that. +Otherwise (i.e., if no ligature or kern is specified between the present +text symbol and the following character), go to Rule~17. + +\bugonpage A453, lines 12--14 from the bottom (9/23/89) + +\begingroup +\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000 +\doublehyphendemerits=-100000 \finalhyphendemerits=-100000 +\ninepoint\noindent +Exception: The character +`|.|'~is treated as if it were a \ of code~0 +when it appears in a pattern. Code~0 (which obviously cannot match a nonzero +|\lccode|) is used by \TeX\ to represent the +left or right edge of a word when it is being hyphenated. + +\endgroup + +\bugonpage A454, lines 7--15 from the bottom (9/23/89) + +\begingroup +\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000 +\doublehyphendemerits=-100000 \finalhyphendemerits=-100000 +\ddanger If a trial word $l_1\ldots l_n$ has been found by this process, +hyphenation will still be abandoned unless $n\ge\lambda+\rho$, where +$\lambda=\max(1,\hbox{|\lefthyphenmin|})$ and +$\rho=\max(1,\hbox{|\righthyphenmin|})$. +\ (Plain \TeX\ takes $\lambda=2$ and $\rho=3$.) \ Furthermore, the items +immediately following the trial word must consist of zero or more +characters, ligatures, and implicit kerns, followed immediately by +either glue or an explicit kern or a penalty item or a whatsit or an +item of vertical mode material from ^|\mark|, ^|\insert|, or ^|\vadjust|. +Thus, a box or rule or math formula or discretionary following too closely +upon the trial word will inhibit hyphenation. (Since \TeX\ inserts +empty discretionaries after ^{explicit hyphens}, these rules imply that +already-hyphenated compound words will not be further hyphenated by +the algorithm.) + +\endgroup + +\bugonpage A455, new copy after line 13 (9/23/89) + +\begingroup +\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000 +\doublehyphendemerits=-100000 \finalhyphendemerits=-100000 +\ddanger \looseness=-1 +So far we have assumed that \TeX\ knows only one style of +hyphenation at a time; but in fact \TeX\ can remember up to 256 +distinct sets of rules, if you have enough memory in your computer. An +integer parameter called ^|\language| selects the rules actually used; +every ^|\hyphenation| and ^|\patterns| specification appends new rules +to those previously given for the current value of\/ |\language|. +\ (If\/ |\language| is negative or greater than 255, \TeX\ acts as if +|\language|$\null=0$.) \ All |\patterns| for all languages must be +given before a paragraph is typeset, if |INITEX| is used for +typesetting. + +\ddanger \TeX\ is able to work with several languages in the same +paragraph, because it operates as follows. At the beginning of a +paragraph the ``current language'' is defined to be~0. Whenever a +character is added to the current paragraph (i.e., in unrestricted +horizontal mode), the current language is compared to |\language|; if +they differ, the current language is reset and a whatsit node +specifying the new current language is inserted before the character. +Thus, if you say `|\def\french{\language1...}|' and `|mix| |{\french +franc/ais}| |with| |English|', \TeX\ will put whatsits before the |f| +and the~|w|; hence it will use language~1 rules when hyphenating +|franc/ais|, after which it will revert to language~0. You can insert +the whatsit yourself (even in restricted horizontal mode) by saying +^|\setlanguage|\; this changes the current language but it +does not change |\language|. + +\endgroup + +\bugonpage A459, right column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\badness|, 214, {\it229}, 271. + +\bugonpage A461, right column (9/23/89) + +\eightpoint +caron, {\sl see\/} h\'a\v cek. + +\bugonpage A464, line 10 (5/15/89) + +\eightpoint +displays, 87, 103, {\it139--145}, {\it166--167}, + +\bugonpage A464, right column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\emergencystretch|, $\underline{107}$, 274. + +\bugonpage A465, left column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\errorcontextlines|, $\underline{34}$, 273, {\it348}. + +\bugonpage A466, entry for `fractions' (9/23/89) + +\eightpoint[Add page 332 to this entry.] + +\bugonpage A466, entry for `French'' (9/23/89) + +\eightpoint[Add page 455 to this entry.] + +\bugonpage A467, entry for `hexadecimal' (9/23/89) + +\eightpoint[Add pages 45, 47--48 to this entry.] + +\bugonpage A467, right column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\holdinginserts|, $\underline{125}$, 273, 400. + +\bugonpage A467, bottom line (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\hyphenation|, 277, {\it419}, $\underline{452}$--$\underline{453}$, 455. + +\bugonpage A468, right column (9/23/89) + +\eightpoint +infinite badness, 97, 107, 111, 229, 317. + +\bugonpage A468, right column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\inputlineno|, 214, 271. + +\bugonpage A469, entry for kerns (9/23/89) + +\eightpoint[Add pages 286 and 444 to this entry.] + +\bugonpage A469, left column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\language| (hyphenation method), 273, $\underline{455}$. + +\bugonpage A469, right column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\lefthyphenmin|, 273, {\it364}, $\underline{454}$. + +\bugonpage A470, entry for ligatures (9/23/89) + +\eightpoint[Add pages 286 and 444 to this entry.] + +\bugonpage A472, left column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\noboundary|, 283, $\underline{286}$, 290. + +\bugonpage A473, right column (9/23/89) + +\eightpoint +overfull boxes, 27--30, 94, 229, 238,\par +\indent\qquad 302--303, 307, 400.\par +\indent\quad avoiding, 107. + +\bugonpage A474, left column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\patterns|, 277, $\underline{453}$, 455. + +\bugonpage A476, left column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\righthyphenmin|, 273, {\it364}, $\underline{454}$. + +\bugonpage A476, right column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\setlanguage|, 287, $\underline{455}$. + +\bugonpage A476, right column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\showboxbreadth|, 273, $\underline{302}$, 303, {\it348}.\par +\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\showboxdepth|, 79, 273, $\underline{302}$, 303, {\it348}. + +\bugonpage A479, left column (9/23/89) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|\tolerance|, {\it29--30}, 91, 94, $\underline{96}$, 107, 272,\par +\indent\qquad{\it317}, {\it333}, {\it342}, {\it348}, {\it364}, {\it451}. + +\bugonpage A481, right column, last six entries (9/23/89) + +\def\frac#1/#2{\leavevmode\kern.1em + \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em + /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}% +\eightpoint +\frac1/2, 67, 332.\par +1/2, in unslashed form, 141, 186.\par +\<4-bit number>, $\underline{271}$.\par +\<8-bit number>, $\underline{271}$, 276--278.\par +\<15-bit number>, $\underline{271}$, 277, 289, 291.\par +\<27-bit number>, $\underline{271}$, 289, 291.\par + +\bugonpage A483, lines 15 and 21 (9/23/89) + +\noindent[Delete these two lines, as TUG's address is no longer c/o AMS.] + + % volume B +\hsize=35pc +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers +\def\to{\mathrel{.\,.}} % double dot, used only in math mode + +\bugonpage Bvii, top two lines (4/21/89) + +{\hsize=29pc +\tenpoint\noindent +{\it {\sltt WEB} documentation for four utility programs that are +often used in conjunction with \TeX: {\sltt POOLtype}, {\sltt TFtoPL}, +{\sltt PLtoTF}, and {\sltt DVItype}.} +\par} + +\bugonpage B2, line 32 (6/20/89) + +\ninepoint\noindent\hskip10pt +{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% +{\tt This\]is\]TeX,\]Version\]2.991\char'23}\quad +$\{\,$printed when \TeX\ starts$\,\}$ + +\bugonpage B118, lines 2--4 (3/2/89) + +\ninepoint\noindent\hskip10pt +{\bf begin if\/} $\\{cur\_level}>\\{level\_one}$ {\bf then}\par +\noindent\hskip20pt{\bf begin} \\{check\_full\_save\_stack}; \ + $\\{save\_type}(\\{save\_ptr})\gets\\{insert\_token}$;\par +\noindent\hskip20pt$\\{save\_level}(\\{save\_ptr})\gets\\{level\_zero}$; \ + $\\{save\_index}(\\{save\_ptr})\gets t$; \ \\{incr}(\\{save\_ptr});\par +\noindent\hskip20pt{\bf end}; + +\bugonpage B182, line 13 becomes two lines (6/20/89) + +\ninepoint\noindent +$k,\\{kk}$: \\{small\_number};\quad + $\{\,$number of digits in a decimal fraction$\,\}$\par\noindent +$p,q$: \\{pointer};\quad + $\{\,$top of decimal digit stack$\,\}$ + +\bugonpage B182, line 15 from the bottom (6/20/89) + +\ninepoint\noindent\hskip10pt +{\bf begin} $k\gets0$; $p\gets\\{null}$; \\{get\_token};\quad + $\{\,$\\{point\_token} is being re-scanned$\,\}$ + +\bugonpage B182, line 11 from the bottom (6/20/89) + +\ninepoint\noindent\hskip30pt +{\bf begin} $q\gets\\{get\_avail}$; $\\{link}(q)\gets p$; + $\\{info}(q)\gets\\{cur\_tok}-\\{zero\_token}$; + $p\gets q$; $\\{incr}(k)$; + +\bugonpage B182, line 8 from the bottom (6/20/89) + +\ninepoint\noindent +\\{done1}: {\bf for} $\\{kk}\gets k$ {\bf downto} 1 {\bf do}\par +\noindent\hskip20pt +{\bf begin} $\\{dig}[kk-1]\gets\\{info}(p)$; $q\gets p$; $p\gets\\{link}(p)$; + $\\{free\_avail}(q)$;\par +\noindent\hskip20pt{\bf end};\par +\noindent\hskip10pt$f\gets\\{round\_decimals}(k)$; + +\bugonpage B332, lines 11 and 12 from the bottom (4/8/89) + +\ninepoint +\noindent\hskip10pt +{\bf begin if\/} $\\{cur\_align}=\\{null}$ {\bf then} + \\{confusion}({\tt\char'23endv\char'23});\par\noindent\hskip10pt +$q\gets\\{link}(\\{cur\_align})$; \ {\bf if\/} $q=\\{null}$ {\bf then} + \\{confusion}({\tt\char'23endv\char'23}); + +\bugonpage B466, line 5 becomes three lines (6/7/89) + +\ninepoint +\noindent +$\\{mmode}+\\{halign}$: {\bf if\/} \\{privileged} {\bf then}\par\noindent +\hskip20pt{\bf if\/} $\\{cur\_group}=\\{math\_shift\_group}$ + {\bf then} \\{init\_align}\par\noindent\hskip20pt +{\bf else} \\{off\_save}; + +\bugonpage B518, line 25 (8/31/89) + +\ninepoint\noindent\hskip10pt +$\\{undump}(\\{lo\_mem\_stat\_max}+1)(\\{lo\_mem\_max})(\\{rover})$; \ +$p\gets\\{mem\_bot}$; \ $q\gets\\{rover}$; + + % volume C +\hsize=29pc +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers + +\buginvol C, in general (9/23/89) + +\ninepoint\noindent +[Change `127' to `255' and `128' to `256' in contexts referring to character +codes. This happens on pages 188(thrice) and 251.] + +\bugonpage C91, lines 12 and 13 (8/31/89) + +\begintt +\mode=cheapo; input newface +\endtt +and the same file should also produce a high-resolution font if we start with + +\bugonpage C204, line 4 (8/18/89) + +\ninepoint\noindent +so that +\\{currenttransform} multiplies all $y$~coordinates by +\\{aspect\_ratio}, when paths are\cutpar + +\bugonpage C212, lines 24--27 (9/30/89) + +\ninepoint +\begindisplay +{\it boundarychar}\quad&the right boundary character for ligatures and kerns\cr +\enddisplay +All of these quantities are numeric. They are initially zero at the +start of a job, except for {\it year\/}, {\it month\/}, + {\it day\/}, and {\it time\/}, which +are initialized to the time the run began; furthermore, {\it boundarychar\/} is +initially~$-1$. A {\it granularity\/} of zero is equivalent to + $\hbox{\it granularity\/}=1$. +A preloaded base file like plain \MF\ will usually give nonzero values to +several other internal quantities on this list. + +\bugonpage C259, lines 16 and 17 from the bottom (5/14/89) + +\tenpoint +\noindent +|screenchars|; \ |screenstrokes|; \ |imagerules|; \ |gfcorners|; \ +|nodisplays|;\hfil\break +|notransforms|; \ |input| \. + +\bugonpage C282, the three lines following the chart (9/30/89) + +\tenpoint\noindent +\MF\ can also be configured to accept any or all of the character codes +128--255. +However, \MF\ programs that make use of anything in addition to the 95 +standard ASCII characters cannot be expected to run on other systems, so +the use of extended character sets is discouraged. + +\bugonpage C316, bottom 14 lines and top 30 of page C317 (9/30/89) + +\ninepoint +Ligature information and kerning information is specified in short +``^{ligtable programs}'' of a particularly simple form. Here's an example +that illustrates most of the features (although it is not a serious +example of typographic practice): +\beginlines +^|ligtable|| "f": "f" =: oct"013", "i" |\||=: oct"020", skipto 1;| +|ligtable "o": "b": "p": "e" kern .5u#, "o" kern .5u#, "x" kern-.5u#,| +| 1:: "!" kern u#;| +\endlines +This sequence of instructions can be paraphrased as follows: +\smallskip +\hangindent 3pc +Dear \TeX, when you're typesetting an~`f' with this font, and when the +following character also belongs to this font, look at it closely because +you might need to do something special: If that following character is +another~`f', replace the two f's by character code |oct"013"| +[namely `\char'13'\kern.5pt]; +if it's an `i', retain the `f' but replace the `i' by character code +|oct"020"| [a dotless `\char'20'\kern.5pt]; +otherwise skip down to label `|1::|' for further instructions. +When you're typesetting an `o' or~`b' or~`p', if the next input to \TeX\ is +`e' or~`o', add a half unit +of space between the letters; if it's an `x', subtract a half unit; if it's an +exclamation point, add a full unit. The last instruction applies also +to exclamation points following~`f' (because of the label `|1::|'). +\smallskip\noindent +When a character code appears in front of a colon, the colon ``labels'' +the starting place for that character's ligature and kerning program, +which continues to the end of the ligtable statement. A double colon denotes +a ``local label''; a |skipto| instruction advances to the next matching local +label, which must appear before 128 ligtable steps intervene. The special +label \|\||:| can be used to initiate ligtable instructions for an invisible +``left boundary character'' that is implicitly present just before every +word; an invisible ``right boundary character'' equal to {\it boundarychar\/} is +also implicitly present just after every word, if {\it boundarychar\/} + lies between +0 and~255. + +The general syntax for ligtable programs is pretty easy to guess from +these examples, but we ought to exhibit it for completeness: +\beginsyntax \chardef\\=`\| +\is[ligtable] +\is\alt[,] +\is[,] [skipto]\alt +\is + \alt[kern] + \alt