>》 \ifnum\@ptsize=9.5pt
>》 のように変更すればよいと思います。
>これは \ifnum\@ptsize=9 という比較になってしまうのではないでしょうか。
ああ、そうでした。
長さが sp 単位の整数として扱われるのは、レジスタとして記憶しているものだけでしたね。
なので、
\@ptsize=9.5pt
\dimen0=9.5pt
のようにレジスタに値を設定しておいて、
\ifnum\@ptsize=\dimen0 とすれば良いですが
\ifnum\@ptsize=9.5pt だと \@ptsize=9 まで見て false となりますね。(.5pt から \else までが読み飛ばされる)
ご指摘いただきありがとうございました。