
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 \twocolumn
que - 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 exceeded
ou algo semelhante quando, durante a recursão, muitos colchetes e colchetes de abertura fossem acumulados.
Além disso, \twocolumn
há 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 \calltwocolumn
produziria os seguintes tokens:
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\romannumeral0\expandafter\@gobble\string} %
A \expandafter
-chain ativaria \romannumeral
a -expansão antes de \twocolumn
ser 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 \iffalse
como sugerido por Gustavo Mezzetti:
\newcommand\calltwocolumn{%
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\iffalse}\fi
}%