
En mi código, cambio al modo '2 columnas' escribiendo:
\twocolumn[{
Estoy intentando simplificar este código creando un nuevo comando:
\renewcommand{\twocolumn}{\twocolumn[{}
¿Es posible insertar un corchete y una llave en este nuevo comando? Recibo muchos errores al hacer esto.
Respuesta1
La secuencia
\renewcommand{\twocolumn}{\twocolumn[{}
definiría un comando \twocolumn
que, entre otras cosas, se llamaría a sí mismo. Obtendría algún tipo de bucle recursivo donde la compilación podría terminar con un mensaje de error TeX capacity exceeded
o similar cuando durante la recursión se acumularan demasiados corchetes de apertura y llaves de apertura.
Además, esta \twocolumn
es una macro que podría usarse dentro de paquetes de macros y similares. Redefinirlo podría generar problemas con el código (paquete) cuando se basa en el significado original de \twocolumn
.
Quizás definir su propia macro para llamar \twocolumn
podría ser una opción:
\makeatletter
\newcommand\calltwocolumn{%
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\romannumeral0\expandafter\@gobble\string} %
}%
\makeatother
El comando \calltwocolumn
produciría los siguientes tokens:
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\romannumeral0\expandafter\@gobble\string} %
La \expandafter
cadena se activaría \romannumeral
antes de que \twocolumn
se llevara a cabo la expansión.
\romannumeral
-la expansión, a su vez, llevaría a encadenar y engullir la llave de cierre antes de terminar sin entregar ningún token.
Algunas personas se muestran reticentes a la hora de consumir \makeatletter
. Puedes evitarlo usando \csname
:
\newcommand\calltwocolumn{%
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\romannumeral0\csname @gobble\expandafter\endcsname\string} %
}%
También puedes evitarlo usando \iffalse
como sugiere Gustavo Mezzetti:
\newcommand\calltwocolumn{%
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\iffalse}\fi
}%