E nel caso di ambiente stellato e non come si procede?
Io ad esempio voglio un ambiente chiamato oggetto. Se asteriscato deve essere uguale ad un ambiente chiamato primo mentre se non asteriscato deve essere uguale ad un ambiente chiamato secondo.
`\newenviroment{oggetto}{\primo}{\endprimo}
\newenvironment{pippo*}{\secondo}{\endsecondo}`
Troppo facile, no? Oppure, in modo più esoterico
`\let\oggetto\primo
\let\endoggetto\endprimo
\expandafter\let\csname oggetto*\endcsname\secondo
\expandafter\let\csname endoggetto*\endcsname\endsecondo`
E se per caso l’ambiente fosse “secondo*”?
`\newenvironment{oggetto*}{\begin{secondo*}}{\end{secondo*}}`
Ma qui si apre un gruppo in più, così si può adottare
`\makeatletter
\newenvironment{oggetto*}
{\@nameuse{secondo*}}
{\@nameuse{endsecondo*}}`
C’è la soluzione esoterica, per scrivere la quale occorre indossare il cappello a punta:
`\expandafter\let\csname oggetto*\expandafter
\endcsname\csname secondo*\endcsname
\expandafter\let\csname endoggetto*\expandafter
\endcsname\csname endsecondo*\endcsname`
Molto interessante: usa il fatto che l’espansione di \csname provoca l’espansione di tutto ciò che arriva al corrispondente \endcsname; quindi \expandafter all’interno provoca l’espansione del \csname seguente. Urca!
Ciao
Enrico