Mi pare buono, anche se non sono del tutto convinto dell’uso della sequence.
Difetti
1. Non usi prefissi per le tue variabili e funzioni; ci vogliono
2. La prima istruzione deve essere [tt]\seq_gclear_new:N[/tt]
3. L’ultima è, meglio, [tt]\seq_gput_right:NV \g_indexbkm_seq \g_bkmtext_tl[/tt] (aggiungi i prefissi, mi raccomando)
Attento, però, che [tt]\seq_get_right:NN[/tt] assegna il valore alla variabile solo localmente. Quindi dovrai allocare [tt]\l_franen_lastused_bkm_tl[/tt] invece che [tt]\g_…[/tt] e cambiare di conseguenza il codice. Se proprio vuoi un’assegnazione globale devi farla in due passi:
`\seq_get_right:NN \g_franen_indexbkm_seq \l_franen_lastused_bkm_tl
\tl_gset_eq:NN \g_franen_lastused_bkm_tl \l_franen_lastused_bkm_tl`
ma non ne vedo realmente il motivo.
Ciao
Enrico