シンボルの自動間隔設定

シンボルの自動間隔設定

一緒に書かれた記号の周りに少しのスペースを自動的に確保する方法を知りたいです。

いくつかの抽象的なオブジェクトを表すシンボルAとがあると仮定します。シンボルを挿入するBコマンド\Aとを定義します。\B

\newcommand\A{\mathrm{A}}
\newcommand\B{\mathrm{B}}

ここで、他の記号と一緒に記述するときに、これらの記号の間に少しスペースを入れたいと思います。残念ながら、上記の定義では、これらのスペースを明示的に追加する必要があります。

望ましい出力

余分なスペースを自動的に取得するにはどうすればよいですか? 等号と記号の間、および繰り返される記号の間に余分なスペースができないようにするには、静的な量のスペースを追加するだけではないこと、が特に重要です。


上記の出力を生成した MWE:

\documentclass[preview,border=10pt,fleqn]{standalone}

\usepackage{amsmath}
\setlength\mathindent{0pt}

\newcommand\A{\mathrm{A}}
\newcommand\B{\mathrm{B}}

\begin{document}

Symbols with no spacing \eqref{nospaces},
explicit \texttt{\textbackslash,} spaces \eqref{spaces}.
\begin{align}
\label{nospaces}
y &= \A x &
y &= x' \A x &
\B &= \A \A &
\B &= \A' \A
\\
\label{spaces}
y &= \A \, x &
y &= x' \, \A \, x &
\B &= \A \, \A &
\B &= \A' \, \A
\end{align}

\end{document}

答え1

明らかに答えではありませんが、次の 2 つの結果を比較してください。

\documentclass[preview,border=10pt,fleqn]{standalone}
\usepackage{mathtools}
\begin{document}
\begin{align*}
     y &= Ax &\chi^2 &= x^TAx &C&= AB &D &= A^T B\\
     y &= A\,x &\chi^2 &= x^T \, A \, x &C &= A   \, B &D &= A^T \, B\\
     y &= A   x &\chi^2 &= x^T A x &C &= AB &D &= A^T B
\end{align*}
\end{document}

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

似ているように 3 回繰り返しました。メッセージを伝えるために太字にする必要はないと思います。大文字のマトリックス、小文字のベクター。転置は標準ではありません。そのためにプライムを使用する人もいますが、小文字の t は常に誤って印刷されたプライムのように見えます。特にマトリックスが太字の場合、重みが足りないためです。

答え2

他にも解決策を探している人がいるかもしれないので、私が試行錯誤して見つけた答えを共有します。

この回答では、この組み合わせは、\mathrm{}\!差動の前に少し間隔を追加するために使用されますdそこで、シンボルの左右にスペースを追加するために、次の 2 つのコマンドを定義しました。

\newcommand\lxspace{\mathop{}\!}
\newcommand\rxspace{\!\mathop{}\nolimits}

次に、シンボルにスペースを手動で追加します。

\newcommand\A{\lxspace\mathrm{A}\rxspace}
\newcommand\B{\lxspace\mathrm{B}\rxspace}

これは望ましい効果を生み出すようです:

効きそうだ

答え3

私は Mathematica の積をスペースで表す方法 (horresco referens!) が好きです。これを TeX で実行するために、*数式モードで細いスペースを挿入するように再定義しました (以下を参照)。これは自動ではありませんが、通常のアトム、括弧、演算子ではうまく機能するようです。必要な場合は、簡単にオフにできます。

*数式モードでのの他の用途には、 を代わりに使用できます。数式モード外での\astの動作は変更されません。*

\mathcode`\*="8000 
{\catcode`\*=\active
\gdef*{\mathclose{}\,\mathopen{}}}

$a*b$
$a b$
$a\,b$
$a*\cos b$
$a \cos b$
$a\,\cos b$

\,(の代わりにを使用すると*、最後の式に不要なスペースが挿入されることに注意してください。)

関連情報