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@
`\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