[L3] nesting di seq_map_inline

  • Questo topic ha 2 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 13 anni fa da franen.
  • Creatore
    Topic
  • #88472
    franen
    Partecipante
      Up
      0
      Down
      ::


      Devo lavorare con un piccolo database e ho provato a giocare un po’ con LaTeX3 per trattare i singoli elementi. Ho costruito un esempio con un database di due righe e 5 colonne, usando una sequence:`\documentclass{article}
      \usepackage{xparse}
      \ExplSyntaxOn
      % creo due tl che contengono il testo che costituirà il contenuto della seq.
      \tl_new:N \g_temp_tl
      \tl_new:N \g_tempc_tl
      \tl_set:Nn \g_temp_tl {a,b,c,d,e}
      \tl_set:Nn \g_tempc_tl {f,g,h,i,l}

      % creo la seq completa, contiene due elementi
      \seq_new:N \g_temp_seq
      \seq_new:N \g_tempa_seq
      \seq_put_right:NV \g_temp_seq \g_temp_tl
      \seq_put_right:NV \g_temp_seq \g_tempc_tl
      \seq_show:N \g_temp_seq

      %ora voglio agire su ogni sottoelemento

      \seq_map_inline:Nn \g_temp_seq %lavoro su ognuno dei due elementi della seq
      {
      \seq_set_split:Nnn \l_tempa_seq {,} {#1}\seq_show:N \l_tempa_seq % creo una seq usando ognuno dei due elementi della seq principale
      \seq_map_inline:Nn \l_tempa_seq % lavoro su ogni elemento delle righe
      {
      Voce~##1,~
      }
      }
      \ExplSyntaxOff
      \begin{document}

      \end{document}
      `
      Il codice funziona, ma la domanda è: se volessi mettere il mio codice all’interno di un comando, per poterlo richiamare da qualche altra parte nel mio documento, come dovrei fare?
      Se scrivo [tt]\cs_new:Nn \my_command:n {il mio codice}[/tt] si crea il problema che per passare i comandi a [tt]\seq_map_inline[/tt] dovrei usare ##1 e ###1 anziché #1 e ##1, perché altrimenti #1 viene visto come l’argomento del mio comando.
      Solo che ###1 non è accettato come sintassi.
      Suggerimenti?

      Fran

    Visualizzazione 1 filone di risposte
    Visualizzazione 1 filone di risposte
    • Devi essere connesso per rispondere a questo topic.

    Go to top