
Eu escreveria uma macro \defineThisCommand
que defina um novo comando \TheCommand
e, em seguida, o invoque localmente. O código tem que ser algo assim:
\defineThisCommand{}{
\newcommand \ThisCommand{
#1
}
\ThisCommand
}
\begin{document}
\defineTopicOne{Some text printed}
\defineTopicTwo{and this too}
\end{document}
gerando, no final, a saída
Some text printed
and this too
Por favor, você pode me sugerir uma maneira de resolver esse problema?
Responder1
Responder2
Quando o TeX encontra uma sequência de controle \foo
, há dois casos a serem distinguidos primeiro: ou o TeX está fazendo expansão macro ou não. O último caso não é preocupante na sua situação, por isso veremos o que acontece no primeiro caso. Os casos são:
- a sequência de controle recebeu um significado, ou
- a sequência de controle é indefinida.
No primeiro caso, o TeX utiliza o significado, que deve ser adequado ao contexto: se \foo
for uma macro, será expandido, se for um \chardef
token o caracter correspondente será impresso, e assim por diante.
No segundo caso, o TeX irá parar, emitir uma mensagem de erro eignoraro token indefinido.
Portanto, você não pode fazer o que gostaria, a menos que tenha definido previamente um monte de macros
\newcommand\defineThisCommand[1]{\newcommand\ThisCommand{#1}\ThisCommand}
para cada comando local que você precisa. Isto obviamente desafia a sua intenção: você não pode ter \defineOtherCommand
se não a tiver definido previamente.
A estratégia a utilizar é ter uma macro genérica comdoisargumentos:
\newcommand\define[2]{%
\newcommand#1{#2}% define the local command
#2% and also use it now
}
o que permite que você diga
\define\ThisCommand{whatever}
para fazer o que quiser.