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
}`
Si funziona, anche se definire un comando temporaneo con \edef che espande la definizione all’interno della quale troviamo un \noexpand, è proprio un paradosso.
L’ipotesi che faccio sul perché funziona è questa: \edef espande la definizione ma incontra un \noexpand ed inserisce il token \setkeys come è, ma espande tutto quello che segue, con il risultato dell’espansione in caratteri degli argomenti del comando.
Mi pare che tu ti stia complicando la vita, ma sono affari tuoi. 🙂
Veramente penso che questo sia il modo più semplice per implementare la chiave id anche per il comando \add (vedi “una tabella che fa calcoli”), ovvero salvare in una macro le chiavi di selezione volute dall’utente per ottenere la somma e riprodurle poi con \setkeys nel momento in cui l’utente stesso voglia operare su quella somma. Nient’altro.
Grazie Prof.