Defina um comando com um número ímpar de colchetes

Defina um comando com um número ímpar de colchetes

No meu código, mudo para o modo '2 colunas' digitando:

\twocolumn[{

Estou tentando simplificar esse código criando um novo comando:

\renewcommand{\twocolumn}{\twocolumn[{}

É possível inserir um colchete e uma chave neste novo comando? Estou recebendo muitos erros fazendo isso.

Responder1

A sequência

\renewcommand{\twocolumn}{\twocolumn[{}

definiria um comando \twocolumnque - entre outras coisas - se autodenominaria. Você obteria algum tipo de loop recursivo onde a compilação poderia terminar com uma mensagem de erro TeX capacity exceededou algo semelhante quando, durante a recursão, muitos colchetes e colchetes de abertura fossem acumulados.

Além disso, \twocolumnhá uma macro que pode ser usada em pacotes de macros e similares. Redefini-lo pode levar a problemas com o código (do pacote), onde se baseia no significado original de \twocolumn.

Talvez definir sua própria macro para chamada \twocolumn possa ser uma opção:

\makeatletter
\newcommand\calltwocolumn{%
  \expandafter\twocolumn
  \expandafter[%
  \expandafter{%
  \romannumeral0\expandafter\@gobble\string} %
}%
\makeatother

O comando \calltwocolumnproduziria os seguintes tokens:

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

A \expandafter-chain ativaria \romannumerala -expansão antes de \twocolumnser executada. \romannumeral-expansão, por sua vez, levaria a restringir e engolir a chave de fechamento antes de terminar sem entregar nenhum token.

Algumas pessoas ficam relutantes quando se trata de usar \makeatletter. Você pode evitar isso usando \csname:

\newcommand\calltwocolumn{%
  \expandafter\twocolumn
  \expandafter[%
  \expandafter{%
  \romannumeral0\csname @gobble\expandafter\endcsname\string} %
}%

Você também pode evitar isso usando \iffalsecomo sugerido por Gustavo Mezzetti:

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

informação relacionada