Definir un comando con un número impar de llaves

Definir un comando con un número impar de llaves

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 \twocolumnque, 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 exceededo similar cuando durante la recursión se acumularan demasiados corchetes de apertura y llaves de apertura.

Además, esta \twocolumnes 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 \calltwocolumnproduciría los siguientes tokens:

  \expandafter\twocolumn
  \expandafter[%
  \expandafter{%
  \romannumeral0\expandafter\@gobble\string} %

La \expandaftercadena se activaría \romannumeralantes de que \twocolumnse 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 \iffalsecomo sugiere Gustavo Mezzetti:

\newcommand\calltwocolumn{%
  \expandafter\twocolumn
  \expandafter[%
  \expandafter{%
  \iffalse}\fi
}%

información relacionada