\begingroup

Aus goLaTeX

\begingroup ist ein TeX-Primitv zum Öffnen einer Gruppe, die mit \endgroup beendet wird.

Verwendung

Syntax

\begingroup lokal auszuführender Code \endgroup

Beschreibung

Normalerweise sind Definitionen und Zuweisungen an Register bei TeX lokal zur aktuellen Gruppe. Der Anfang einer solchen Gruppe ist immer auf das TeX-Primitv \begingroup und dessen Ende auf das TeX-Primitiv \endgroup zurückzuführen. In LaTeX stellen auch (fast) alle Umgebungen, die mit \begin{Umgebungsname} begonnen werden und mit \end{Umgebungsname} beendet werden, eine solche Gruppe dar. Dazu wird in der Definition von \begin sehr früh \begingroup ausgeführt, noch bevor der spezifische Startcode der Umgebung zur Anwendung kommt. Ebenso ist in der Definition von \end erst nach der Ausführung des spezifischen Endcodes der Umgebung enthalten.

Bei LaTeX haben außerdem { und } die Kategorie Codes 1 und 2, wodurch sie außer bei Verwendung als Argumentklammern ebenfalls die Bedeutung von \begingroup und \endgroup erhalten.

Globale Zuweisungen innerhalb einer Gruppe sind möglich. So arbeiten beispielsweise \setcounter, \stepcounter und \addtocounter immer global. Eine Besonderheit stellt \refstepcounter dar. Die darin enthaltene Erhöhung des Zählers mit \stepcounter arbeitet global. Die Änderung der Label-Referenz ist hingegen lokal.

Beispiele

\documentclass{article}

\begin{document}
% ACHTUNG: Hier werden Definitionen innerhalb des Dokumentkörpers
%          vorgenommen. Dies dient nur der Demonstration. Anwender sollten in
%          der Regel Definitionen in der Dokumentpräambel vornehmen und
%          ggf. hinter semantischen Markup-Anweisungen verbergen!
\newcommand*{\Test}{Test}
\newcommand*{\FiveTest}{\Test\ \Test\ \Test\ \Test\ \Test}
\newcommand*{\TenTest}{\FiveTest\ \FiveTest}
\newcommand*{\MoreTest}{\TenTest\ \TenTest\ \TenTest\ \TenTest.}
\MoreTest

\begingroup
\renewcommand*{\Test}{Toast}
\MoreTest
\endgroup

\MoreTest
\end{document}

Im Beispiel wird innerhalb einer mit \begingroup…\endgroup umschlossenen Gruppe \Test lokal umdefiniert, so dass das \MoreTest innerhalb dieser Gruppe nicht mehr vielfach das Wort Test, sondern das Wort Toast ausgibt. Nach dem Ende der Gruppe wird dagegen wieder Test ausgegeben, da die Änderung der Definition mit dem Ende der Gruppe ihre Wirkung verliert.

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\begin{document}
\section{Erster Abschnitt}\label{sec:firststart}
\blindtext\label{sec:firstend}

\begingroup\section{Zweiter Abschnitt}\label{sec:secondstart}\endgroup
\blindtext\label{sec:whichend}

\section{Auflösung}
Das Label \texttt{sec:firststart} referenziert
Abschnitt~\ref{sec:firststart}. Ebenso referenziert Label
\texttt{sec:firstend} selbstverständlich Abschnitt~\ref{sec:firstend}.

Das Label \texttt{sec:secondstart} referenziert
Abschnitt~\ref{sec:secondstart}. Da jedoch die Wirkung von
\verb|\refstepcounter| innerhalb von \verb|\section| mit dem \verb|\endgroup|
endet, referenziert \texttt{sec:whichend} wieder Abschnitt~\ref{sec:whichend}.

\end{document}

Dieses Beispiel zeigt, dass die Verwendung von Gruppen mit Bedacht erfolgen sollte, indem es eines der Risiken der Verwendung von Überschriften innerhalb einer Gruppe verdeutlicht.

Verwandte Befehle

\bgroup, \egroup, \global