Re: Espansione chiavi in xkeyval

#29301
robitex
Amministratore del forum
    Up
    0
    Down
    ::

    Benissimo, tuttavia ho scoperto che facendo una ricerca nel forum con \setkeys avrei scoperto un post che mi avrebbe indirizzato sulla soluzione con \edef.
    Sperando che questa discussione non sia del tutto inutile per il forum, vorrei domandare il perchè una normale espansione come questa non funziona:`\expandafter\expandafter\expandafter\space\csname ctref@#1\endcsname`

    L’ultimo \expandafter espande \csname e quindi viene creato il token complesso con uno \space davanti (xkeyval ignora gli spazi iniziali e finali), il secondo \expandafter espande il token complesso e quindi ricava i caratteri.
    Al termine rimane un \space da far digerire a \setkeys.

    Forse è proprio quel \space?

    Dove la metteresti? Dentro un \edef? Occorre già avere a disposizione qualcosa da mettere al posto di #1, altrimenti sei nei pasticci.

    Ciao
    Enrico

    Non dentro un \edef ma direttamente come argomento di \setkeys:
    `% attenzione, non funziona
    \setkeys{ctfamLabel}[id]{\expandafter\expandafter\expandafter\space\csname ctref@#1\endcsname} `

    Solo per chiarire 🙄 .

    PS. il codice sta all’interno di una \define@key quindi per #1 si intende il valore che l’utente inserisce come valore della chiave id.

    Go to top