jsclasses では \@ の仕様を次のように変更しています:
TV.\@␣ のように書く。これだと’V’と’.’の間のカーニングが生きる。
- LaTeX標準の通り
TV\@.␣ と書いてもよい。これだとカーニングは(従来通り)無効。
これに応じて実装を次のように変更しています:
% 1000ではなく3000にする
\def\@{\spacefactor3000{}}
この実装だと\@の直後に空白トークンが続いた場合の出力が(当然)標準の場合と異なることになります。恐らく「ユーザ(文書作成者)は絶対にこんな列は書かない」ので問題が無いと判断されたのでしょう。
しかし実際には「特殊な単語やロゴを出力する命令」の実装において、その単語が英大文字で終わる場合に、防御的に\@を入れるという使い方が行われています。
% LaTeX標準のTeXロゴの定義
\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@}
従って、実際には(出力レベルで)「\@の直後に空白トークン」は起こりえて、実際に標準の場合と異なる出力になります。
\documentclass[a4paper]{jsarticle}
\begin{document}
\framebox[10em][s]{TeX \TeX{} duck}
\end{document}

jsclasses では
\@の仕様を次のように変更しています:TV.\@␣のように書く。これだと’V’と’.’の間のカーニングが生きる。TV\@.␣と書いてもよい。これだとカーニングは(従来通り)無効。これに応じて実装を次のように変更しています:
この実装だと
\@の直後に空白トークンが続いた場合の出力が(当然)標準の場合と異なることになります。恐らく「ユーザ(文書作成者)は絶対にこんな列は書かない」ので問題が無いと判断されたのでしょう。しかし実際には「特殊な単語やロゴを出力する命令」の実装において、その単語が英大文字で終わる場合に、防御的に
\@を入れるという使い方が行われています。従って、実際には(出力レベルで)「
\@の直後に空白トークン」は起こりえて、実際に標準の場合と異なる出力になります。