[tex-k] another bunch of bugs in The METAFONTbook
胡亚捷 (Hu Yajie)
2500418497 at qq.com
Fri Jul 17 17:06:17 CEST 2020
First, a correction: Earlier I said that <future pen argument> should be added
to the syntax of <future pen primary>. Please do it only on page 214, not on
page 148, since other syntaxes in the earlier chapters don't have <argument>.
Page C68, line -13
If you run `expr.mf' and type `z slanted 1/6', you get `(0.16667y+x,y)'
instead of `(x+0.16667y,y)'. All other `expr' results in the book seem correct
(except for the four random results on page 68 which I'm unable to verify).
Page C234, answer 4.6
Since what is rendered $z_2'$ in the book should be typed z2' (cf. page 55),
a reader might assume the $z_k'$ here is typed z k'. However, k cannot be used
as a <subscript> without being enclosed in brackets, since it's a capsule.
Page C238, answer 9.4
If you substitute alpha and beta for the whatevers, the machine will not only
calculate these values, but also introduce rounding errors for z:
z1=whatever[(1,5),(8,19)]; z1=whatever[(0,17),(6,1)]; show z1; % (3,9)
z2=alpha[(1,5),(8,19)]; z2=beta[(0,17),(6,1)]; show z2; % (2.99998,9.00003)
The capsule produced by `whatever' is recycled quicker than alpha:
(1,5)+capsule1*((8,19)-(1,5)) (1,5)+alpha*((8,19)-(1,5))
(1,5)+capsule1*(7,14) (1,5)+alpha*(7,14)
(1,5)+(0.5capsule2,capsule2) (1,5)+(7alpha,14alpha)
(0.5capsule3-1.5,capsule3) (7alpha+1,14alpha+5)
eliminating the large coefficients 7 and 14 which caused the rounding errors.
On the other hand,
z3=(alpha/7)[(1,5),(8,19)]; z3=beta[(0,17),(6,1)]; show z3; % (3,9)
Page C250, answer 18.13
Pages 155 and 217 tell us that a <statement> is (<statement> ;)*, that is, a
list of statements separated by semicolons and followed by one more semicolon.
The final semicolon isn't necessary when using the `hide' macro, so it's
better to change the `<statement list>' to something like `<statements>'.
Appendix I
`>'
Add `65' to match the entry for `<'. (Page 65 has both `>' and `<'.)
`Boolean expressions'
Should not be capitalized (as reported before).
`comparison'
Delete `66'. That page does not discuss comparison (except in floor).
`dotprod'
Add `68', since other operators illustrated on page 68 and discussed on
page 69 are indexed in both places.
`greatest integer function, see floor'
Put the `floor' in typewriter type. (Compare similar entries such as
`exponential, see mexp'.)
`least integer function, see ceiling'
Put the `ceiling' in typewriter type. (Ditto.)
`penpos'
Add `80', since `top', `bot', `lft', and `right' are all indexed there.
`string'
The primitive `string' isn't mentioned on page 69. If `the string type'
is the intended meaning, then `path' probably needs to be indexed too,
c.f. mfbook.tex, lines 3962--4:
suffice to give a few examples, keeping in mind that the file |expr.mf|
defines |s| with any subscript to be a ^{string}, while |p| with any subscript
is a path. Furthermore $s_1$ has been given the value |"abra"|, while
Note: I failed to understand how the `scan_expression' procedure of Volume D
works, thus I don't know whether the syntax for <path expression> in Volume C
matches the implementation. If anyone wants to check it, good luck.
----
Previous reports:
https://github.com/dine2014/texbook-mfbook-bugs/blob/master/bugs.md
More information about the tex-k
mailing list.