1. english 環境で a2ps を実行する。
csh なら
$ eng a2ps ....
とやればOK
2. できた ps ファイルを編集。
/reentrant の定義後半 (153〜171行目)
163行目に dup を、167行目に pop を追加。(赤字部分)
...
currentdict /FontInfo known {
FontInfo
dup /UnderlinePosition known {
dup /UnderlinePosition get
0 exch FontMatrix transform exch pop
/UnderlinePosition exch def
} if
dup /UnderlineThickness known {
dup /UnderlineThickness get
0 exch FontMatrix transform exch pop
/UnderlineThickness exch def
} if
pop
} if
currentdict
end
} bind def
...
意味:
前のままだと、dup \UnderlineThickness known { ... } if で
{...}内を実行したときと、しなかったときで、スタックに積まれている要素が違ってきてしまっていた。{...}内を実行している分には何の支障もないが、実行しないと余分な要素がスタックに残ってしまう。ということで、{...}内を通るときも1つ残しておいて、出たらpopするようにしました。
意味的には以下のようにしてもOKかな。
ま、一つ上のifと同じようにしておいた方がきれいな気がするけど。
参考ページ:
dup /UnderlineThickness known {
/UnderlineThickness get
0 exch FontMatrix transform exch pop
/UnderlineThickness exch def
} { pop } ifelse
PostScript command summary
How to edit postscript (日本語)
Postscript実習マニュアル (PDF・日本語)