我最後印的是元字體書(第 8 次印刷,C 卷)。自從那次印刷(以及所有其他印刷)以來,兩個非常奇怪的更正出現在勘誤表:
1)
關於此更正的問題:
A後綴要麼是一個空集,要麼是任意數量的<tag>
s 或<subscript>
s 的任意組合(請參閱第 54 頁的語法規則)。所以,a<subscript>
是一個子集後綴。因此不清楚為什麼這麼說
帶後綴或下標
就好像它們是單獨的屬性一樣。
2)
值得在這裡放置 的定義<suffix list>
:
<suffix list> -> <suffix> | <suffix list>,<suffix>
關於此更正的問題:
這個案例有什麼具體的例子嗎?
答案1
「後綴」是什麼意思?通常你會說「有後綴的變數」。但 asuffix
也可以empty
根據語法規則,所以這意味著每一個變數帶有後綴。因此該suffix
規則並不是「後綴」的最佳參考。所以我們要用一個直覺的意思「後綴」。現在,像x.a
和 之類的變數x[2]
出現並且有時表現不同,例如x.a
和x.b
完全不同,但是x[1]
和x[2]
之間的聯繫更加緊密。所以尤其是在評論之後
但「x.k」不一樣;它是標籤“x”加上標籤“k”,而不是變數 k 的值加上下標的標籤“x”。
讀者可能會認為它x[k]
沒有「後綴」。因此,雖然單獨使用“後綴”就足夠了,但在某些情況下可能會導致誤解,因此添加“或下標”會更容易。
後綴列表問題的一個例子是
newinternal x;
forsuffixes s = x1: show s; endfor
end;
這樣做失敗是因為x
不能加後綴,因此x1
無效。因此x
, 是 an internal quantity
,因此 avariable
不是 a ,suffix
因為否則x1
也將是後綴並允許出現在 a 中suffix list
。
在我看來,這裡的問題在於,這似乎是一個問題,suffix list
而不是suffix
定義的問題:假設內部變數不是後綴,那麼
newinternal x;
y.x1 = 1;
end;
也不應該工作,但這已被 Metafont 接受。
所以更準確的規則可能是:內部數量是a 字尾和練習 7.4 是正確的,但 asuffix list
是
<external suffix> -> <empty> | <subscript><suffix> | <external tag><suffix>
<suffix list> -> <external suffix> | <suffix list>,<external suffix>
答案2
這是對已接受答案的一個小補充 - 我的理解總結。
更正1):
短語“或下標”用於將下標變數添加到“後綴”的“直觀”含義中。
問題是,在 MetaFontBook 中,「後綴」一詞有兩種含義:「一般」(第 54 頁的語法規則)和「直覺」(下標之外的非空內容)。
更正2):
以下範例帶有x<tag>
和x<subscript>
不起作用:
newinternal x;
forsuffixes s = x.k: show s; endfor
end
newinternal x;
forsuffixes s = x[1]: show s; endfor
end
以下範例帶有x<tag>
和x<subscript>
工作:
newinternal x;
y.x.k = 1;
end
newinternal x;
y.x[1] = 1;
end
因此,第二次更正不僅必須按照接受的答案中所述進行更正,而且還要在“ x<subscript>
”上添加“ x<tag>
”。