Automatischer Abstand der Symbole

Automatischer Abstand der Symbole

Mich würde interessieren, wie man automatisch etwas Abstand um zusammen geschriebene Symbole herum bekommt.

Nehmen wir an, wir haben Symbole Aund Bdie einige abstrakte Objekte darstellen. Wir definieren Befehle \Aund \Bdie die Symbole einfügen.

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

Nun möchte ich, dass zwischen diesen Symbolen etwas Platz bleibt, wenn sie zusammen mit anderen Symbolen geschrieben werden. Leider ist es bei den obigen Definitionen notwendig, diese Leerzeichen explizit hinzuzufügen.

Gewünschte Ausgabe

Wie kann ich den zusätzlichen Abstand automatisch erhalten? Es ist besonders wichtig, dass nicht nur ein statischer Abstand hinzugefügt wird, um zusätzliche Leerzeichen zwischen Gleichheitszeichen und Symbolen sowie zwischen wiederholten Symbolen zu vermeiden.


Der MWE, der die obige Ausgabe erzeugt hat:

\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}

Antwort1

Definitiv keine Antwort, aber vergleichen Sie die folgenden beiden Ergebnisse.

\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}

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Ich habe es dreimal wiederholt, damit es ähnlich aussieht. Ich glaube nicht, dass etwas fett sein muss, um die Botschaft zu vermitteln. Großbuchstaben sind Matrizen, Kleinbuchstaben sind Vektoren. Die Transponierung ist nicht standardmäßig, manche verwenden dafür eine Primzahl, aber ein kleines t sieht immer wie eine falsch gedruckte Primzahl aus, insbesondere wenn Matrizen fett sind, da es nicht genug Gewicht hat.

Antwort2

Für den Fall, dass noch jemand da draußen nach einer Lösung sucht, werde ich mitteilen, was mir nach einigem Ausprobieren eingefallen ist.

In dieser Antwortwird die Kombination \mathrm{}\!verwendet, um vor einem Differential ein wenig Abstand zu schaffenD. Daher habe ich die folgenden beiden Befehle definiert, um links und rechts von Symbolen Platz einzufügen:

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

Anschließend füge ich die Leerzeichen manuell zu meinen Symbolen hinzu:

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

Dies scheint den gewünschten Effekt zu erzielen:

Scheint zu funktionieren

Antwort3

Mir gefällt Mathematicas Art, Produkte mit Leerzeichen zu kennzeichnen (horresco referens!). Um dies in TeX zu tun, habe ich es neu definiert *(siehe unten), sodass im Mathematikmodus ein schmales Leerzeichen eingefügt wird. Dies geschieht nicht automatisch, scheint aber mit gewöhnlichen Atomen, Klammern und Operatoren gut zu funktionieren. Bei Bedarf kann es einfach ausgeschaltet werden.

Für andere Verwendungen von *im Mathematikmodus \astkann stattdessen verwendet werden. Das Verhalten von *außerhalb des Mathematikmodus bleibt unverändert.

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

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

(Beachten Sie, dass die Verwendung von \,anstelle von *ein unerwünschtes Leerzeichen im letzten Ausdruck einfügt.)

verwandte Informationen