… la risposta corretta è
`\def\param{moebius}
\def\test#1#2#3#4{%
\def\next{#4}%
\ifx\next\param
Well done job!%
\else
Ah no! Il quarto parametro deve %
contenere la stringa `\param'%
\fi}`In alternativa
`\usepackage{etoolbox}
\def\test#1#2#3#4{%
\ifstrequal{#4}{moebius}
{Well done job!}
{Ah no! Il quarto parametro deve %
contenere la stringa `\param'}}`
Ciao
Enrico
… \ifstrequal ha un comportamento molto simile a quello suggerito da te:
`\newrobustcmd{\ifstrequal}[2]{%
\begingroup
\edef\etb@tempa{\detokenize{#1}}%
\edef\etb@tempb{\detokenize{#2}}%
\ifx\etb@tempa\etb@tempb
\aftergroup\@firstoftwo
\else
\aftergroup\@secondoftwo
\fi
\endgroup}`
non capisco però una cosa: \ifx, se ha in input delle macro, le consdera uguali se tali sono a seguito di una “top-level expansion” [TB pg. 210]. Nel caso di sopra, a seguito di una top-level expansion, \etb@tempa restituisce ancora una macro (cioè \detokenize{#1}) e, nel caso specifico, il risultato della comparazione dovrebbe essere sempre false.
O forse mi sfugge il significato di top-level expansion…
Hai il tempo di scrivere due righe di chiarimento?
Grazie, ciao.
Sam Qasbah (che, a letto con un infezione virale, trova il tempo di approfondre le cose)