- Questo topic ha 2 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 13 anni fa da .
-
Topic
-
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
- Devi essere connesso per rispondere a questo topic.