
In meinem Code wechsle ich in den 2-Spalten-Modus und gebe Folgendes ein:
\twocolumn[{
Ich versuche, diesen Code zu vereinfachen, indem ich einen neuen Befehl erstelle:
\renewcommand{\twocolumn}{\twocolumn[{}
Ist es möglich, in diesen neuen Befehl eine eckige Klammer und eine geschweifte Klammer einzufügen? Dabei treten bei mir viele Fehlermeldungen auf.
Antwort1
Der Ablauf
\renewcommand{\twocolumn}{\twocolumn[{}
würde einen Befehl definieren \twocolumn
, der sich unter anderem selbst aufruft. Sie würden eine Art rekursive Schleife erhalten, bei der die Kompilierung mit einer Fehlermeldung TeX capacity exceeded
oder ähnlichem beendet werden könnte, wenn sich während der Rekursion zu viele öffnende Klammern und geschweifte Klammern angesammelt haben.
Außerdem handelt es sich hierbei \twocolumn
um ein Makro, das in Makropaketen usw. verwendet werden kann. Eine Neudefinition kann zu Problemen mit (Paket-)Code führen, der auf die ursprüngliche Bedeutung von angewiesen ist \twocolumn
.
\twocolumn
Möglicherweise wäre die Definition eines eigenen Makros zum Aufruf eine Option:
\makeatletter
\newcommand\calltwocolumn{%
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\romannumeral0\expandafter\@gobble\string} %
}%
\makeatother
Der Befehl \calltwocolumn
würde die folgenden Tokens ergeben:
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\romannumeral0\expandafter\@gobble\string} %
Die \expandafter
-Kette würde die -Erweiterung einschalten \romannumeral
, bevor \twocolumn
sie ausgeführt würde.
\romannumeral
Die -Erweiterung würde wiederum zu einer Stringifizierung und zum Verschlingen der schließenden Klammer führen, bevor sie beendet würde, ohne ein Token zu liefern.
Manche Leute sind zurückhaltend, wenn es um die Verwendung geht \makeatletter
. Sie können dies vermeiden, indem Sie verwenden \csname
:
\newcommand\calltwocolumn{%
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\romannumeral0\csname @gobble\expandafter\endcsname\string} %
}%
Sie können dies auch vermeiden, indem Sie \iffalse
den Vorschlag von Gustavo Mezzetti verwenden:
\newcommand\calltwocolumn{%
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\iffalse}\fi
}%