Re: Espansione chiavi in xkeyval

#29296
Up
0
Down
::

Il problema è questo: le chiavi sono memorizzati in una macro, quindi in \setkeys non avviene la corretta lettura delle chiavi perché il token è espanso ma non correttamente riconosciuto come sequenza di caratteri.

Ecco il codice:
`\expandafter\edef\csname ctref@#1\endcsname{\ctref@temp}
\define@key{ctfamLabel}{#1}[]{
\setkeys{ctfamLabel}[id]{\csname ctref@#1\endcsname}
}`

Ottengo l’errore:
Package xkeyval Error: `id=tot,c,s’ undefined in families `ctfamLabel’.

Se nel codice inserisco i caratteri dell’espansione funziona tutto correttamente:

`\expandafter\edef\csname ctref@#1\endcsname{\ctref@temp}
\define@key{ctfamLabel}{#1}[]{
\setkeys{ctfamLabel}[id]{id=tot,c,s}%\csname ctref@#1\endcsname}
}`

Come posso espandere la macro ctref@ in puri caratteri da far lavorare correttamente \setkeys?

Il codice fa parte di un pacchetto a cui sto lavorando. Mi scuso se il post riguarda una questione poco utile agli altri utenti.

Mi pare che tu ti stia complicando la vita, ma sono affari tuoi. 🙂

Se sei sicuro che l’espansione di \ctref@ siano solo caratteri, dovresti ottenere ciò che desideri con
`\expandafter\edef\csname ctref@#1\endcsname{\ctref@temp}
\define@key{ctfamLabel}{#1}[]{%
\edef\next{\noexpand\setkeys{ctfamLabel}[id]{\csname ctref@#1\endcsname}}
\next
}`
Ciao
Enrico

Go to top