
Escribiría una macro \defineThisCommand
que defina un nuevo comando \TheCommand
y, luego, lo invoque localmente. El código tiene que ser algo como esto:
\defineThisCommand{}{
\newcommand \ThisCommand{
#1
}
\ThisCommand
}
\begin{document}
\defineTopicOne{Some text printed}
\defineTopicTwo{and this too}
\end{document}
generando, al final, la salida
Some text printed
and this too
Por favor, ¿puede sugerirme una forma de resolver este problema?
Respuesta1
Respuesta2
Cuando TeX encuentra una secuencia de control \foo
, hay dos casos que hay que distinguir primero: TeX está haciendo una macro expansión o no. El último caso no es motivo de preocupación en su situación, por lo que analizamos lo que sucede en el primer caso. Los casos son:
- a la secuencia de control se le ha asignado un significado, o
- la secuencia de control no está definida.
En el primer caso, TeX usa el significado, que debe ser apropiado al contexto: si \foo
es una macro, se expandirá, si es un \chardef
token se imprimirá el carácter correspondiente, etc.
En el segundo caso, TeX se detendrá, emitirá un mensaje de error yignorarel token indefinido.
Por lo tanto, no puedes hacer lo que te gustaría, a menos que hayas definido previamente un montón de macros.
\newcommand\defineThisCommand[1]{\newcommand\ThisCommand{#1}\ThisCommand}
para cada comando local que necesite. Esto obviamente desafía tu intención: no puedes tenerlo \defineOtherCommand
si no lo has definido previamente.
La estrategia a utilizar es tener una macro genérica condosargumentos:
\newcommand\define[2]{%
\newcommand#1{#2}% define the local command
#2% and also use it now
}
que te permite decir
\define\ThisCommand{whatever}
para hacer lo que quieras.