Wie du richtig gesagt hast, erlauben alle drei Paare Gruppen zu erstellen.
Alle nachstehende Beispiele sind mit plain TeX zu übersetzen.
Es gibt aber gewisse Besonderheiten. So kannst du `{` und `\egroup` kombinieren:
{\bf Hallo \egroup Welt!
\bye
Diese Kombination ist mittels `\begingroup` und `\endgroup` nicht möglich.
Zudem können als Argumentenöffner (mir fällt kein besseres Wort ein) Argumentklammern `{` sowie `\bgroup` genutzt werden. Dies zeigt folgendes Beispiel:
\setbox0=\hbox\bgroup \bf Hallo \egroup
\setbox0=\hbox{\unhbox0 Welt}
\box0
\bye
Somit sind auch makroübergreifende Gruppen möglich, was weder durch `{}` noch `\begingroup` erreicht werden kann. Das nachstehendes Beispiel zeigt dieses:
\def\startbox{\setbox0=\hbox\bgroup}
\def\endbox{\egroup\par Die Ausgabe: \box0}
\startbox
Hallo Welt
\endbox
\bye
Natürlich kann aber `\begingroup` und `\endgroup` in den genannten Anweisungen verwendet werden:
\def\startbox{\begingroup\setbox0=\hbox\bgroup}
\def\endbox{\egroup\par Die Ausgabe: \box0\endgroup}
\startbox
Hallo Welt
\endbox
\bye
Insgesamt lässt sich also festhalten, dass `{...}` und `\bgroup...\egroup` Argumente gruppieren können.
Die Anweisungen `\begingroup...\endgroup` erzeugen einen Block, und zu jedem `\begingroup` muss ein `\endgroup` existieren.
Besonderheiten:
- Beachte bitte, dass `\def\foobar\bgroup` und `\def\foobar{` verschieden sind.
- `\begingroup` ändert nichts an Eigenschaften, wie folgendes Beispiel zeigt:
$$ 1\bgroup+\egroup1=x$$
$$ 1\begingroup+\endgroup1=x$$
\bye
Aufgrund der Eindeutigkeit der Korrespondenz von `\begingroup` und `\endgroup` rate ich zu diesen Anweisungen. Die Kombination von `\bgroup...\egroup` bzw. `{}` sollte man nur anwenden, wenn man sie auch wirklich braucht.
braucht.