下付き文字に \! を自動的に追加するにはどうすればよいですか?

下付き文字に \! を自動的に追加するにはどうすればよいですか?

このコード

\documentclass{article}
\usepackage{fouriernc}

\begin{document}
$a_1$

$a_{\!1}$
\end{document}

次の出力が生成されます:

間隔

下の方の間隔の方がずっと気に入っています。

毎回入力しなくても済むように、すべての下付き文字に自動的に使用する方法はありますか\!? これがこの間隔を実現するための最適な方法でない場合は、もちろん、もっと良い方法を知りたいと思っています。

答え1

コマンドを再定義できます_。そのため、標識の catcode を変更する必要があります。例の再定義は、プリアンブルで行う必要があります。動作を示すために、ドキュメント本体で再定義しました。

\documentclass{article}
\usepackage{fouriernc}

\begin{document}
$a_1$

$a_{\!1}$

 \catcode`\_\active
 \def_#1{\sb{\!#1}}

$a_{1}$
\end{document}

ここに画像の説明を入力してください


アンダースコアのグローバルを変更する代わりに、トークンの mathcode を設定して再定義することができます (David Carlisle が提案し、egreg が改良しました)。

\documentclass{article}
\usepackage{fouriernc}

\begin{document}
$a_1$

$a_{\!1}$

\catcode`\_=12
\mathcode`\_="8000
\begingroup\lccode`\~=`\_
\lowercase{\endgroup\def~#1}{\sb{\!#1}}

$a_{1}$
\begin{equation}
1+1=1\label{eq_1}
\end{equation}
Text \ref{eq_1} Text$_1$
\end{document}

_ただし、ラベルでは避けるのが最善です。

関連情報