Skip to content

\@ の互換性 #62

@zr-tex8r

Description

@zr-tex8r

jsclasses では \@ の仕様を次のように変更しています:

  1. TV.\@␣ のように書く。これだと’V’と’.’の間のカーニングが生きる。
  2. 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}

image-textexduck

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions