Warum fügt TeX in einer mathematischen Formel hinter einem Dezimalkomma einen kleinen Zwischenraum ein?

Die meisten TeX-Makropakete und -Formate gehen davon aus, dass man einen Dezimalpunkt statt eines -kommas verwendet. Für den Dezimalpunkt, der in einer mathematischen Formel die Bedeutung eines »Ordinary«-Symbols hat, wird daher zwischen Ziffern kein zusätzlicher Zwischenraum eingefügt. Das Komma hat in Formeln die Bedeutung eines »Punctuation«-Symbols, man kann es daher als Trennzeichen in einer Aufzählung verwenden, da TeX mit einem kleinen Zwischenraum dafür sorgt, dass Formeln wie »f (x, y)« gut aussehen.

Das Problem des falschen Abstandes für ein Dezimalkomma kann man auf verschiedene Arten beheben. Für einzelne Fälle mag es reichen, das Komma einfach mit {…} zu klammern, da geklammerte Formelteile diesselben Abstände wie ein »Ordinary«-Symbol bekommen:

$\pi = 3{,}1415\ldots$

Eine andere Methode erklärt das Komma zu einem »Ordinary«-Symbol statt eines Trennzeichens:

%%%% alte Definition:
%% \mathcode‘\,="613B
%%%% neue Definition:
\mathcode\,="013B

und wenn man statt der \mathcode-Zuweisung die Anweisung \DeclareMathSymbol in LaTeX verwendet:

%%%% alte Definition:
%% \DeclareMathSymbol{,}{\mathpunct}{letters}{"3B}
%%%% neue Definition:
\DeclareMathSymbol{,}{\mathord}{letters}{"3B}

Der Preis hierfür ist natürlich, dass in »f (x, y)« der zusätzliche Zwischenraum fehlt. Aber auch das lässt sich in den Griff bekommen: Das Paket icomma ändert die Definition des Kommazeichen so, dass es im mathematischen Modus zwischen »3,1415« und »f(x, y)« unterscheiden kann: Steht hinter dem Komma ein Leerzeichen, ist das Trennzeichen mit etwas Abstand gemeint, ansonsten das Dezimalkomma. Im Unterschied zu ähnlichen Lösungen funktioniert diese Paket mit beliebigen Mathematik-Fonts.

Mit dem Paket ziffer ist das Leerzeichen nach dem Komma, um Mengen oder Argumente zu kennzeichnen, bis auf einige Ausnahmen nicht notwendig, so dass bestehende Texte nicht verändert werden müssen.

Alternativ kann man den Befehl \num des Pakets siunitx nutzen:

\documentclass[paper=a4,ngerman]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{siunitx}
\sisetup{
   output-decimal-marker = {,}
}
 
\begin{document}
\[  1.23 \times \num{1.23} \times 1,23  \]
\end{document}