- Questo topic ha 12 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 12 anni, 2 mesi fa da
GuidoSette.
-
CreatoreTopic
-
20 Giugno 2014 alle 15:24 #94877::
Salve,Sto componendo un’antologia di scritti sul ciclo bretone.
Il curatore desidera raggruppare tutte le note a fine libro, in un’apposita appendice, invece che averle sparse come diverse note a piè di pagina.
Ogni nota però non deve riferirsi ad una data pagina (o Capitolo) ma deve essere preceduta da un’etichetta, da lui scelta. Ogni capitolo ha la sua etichetta, per esempio: CB 1, CB 2, ecc.
Non necessariamente il primo capitolo è CB 1, il secondo CB 2, ecc. Ci possono essere etichette diverse, ma comunque tutte uniche.
Pensavo di usare `\label` e poi `\ref` ma non sono riuscito a trovare come fare a stampare il nome del’etichetta, non il valore.
In questo esempio forzatamente semplificato:
`
1. Capitolo 1\label{CB 1}
[…]
Appendice I – Note
\ref{CB 1}. Layamon – Historia Regum Britanniae […]
CB 4-7. Following is the text of an interview with Mr. Akira Inoue, Co-ordinator of Geoffrey of Monmouth Association.
CB 19. According to the Historia Brittonum, and the writings of Gildas.`
La prima nota dovrebbe diventare:
`CB 1. Layamon – Historia Regum Britanniae […]`
ma invece stampa
`1. Layamon – Historia Regum Britanniae […]`
Il primo problema è che il contatore è numerico (cioè \rif stampa un numero), non riesco a stampare il nome proprio dell’etichetta.
Come si potrebbe gestire il secondo caso in quelle note, cioè far riferimento a più capitolo contigui (come CB 4-7)?
Qualcuno potrebbe per favore darmi delle indicazioni, anche di massima, oppure un riferimento a qualche documentazione o package?
So dell’esistenza di footnoterange (http://www.ctan.org/pkg/footnoterange), ma non mi pare possa aiutare in questo caso specifico.
Grazie!
Guido Sette
-
CreatoreTopic
-
AutoreRisposte
-
-
20 Giugno 2014 alle 15:51 #94878::
Prova ad usare \footnotemark e \footnotetext; istruzioni nella guida tematica Il LaTeX Reverence Manual commentato e liberamente tradotto in italiano. Si tratta di usare gli argomenti facoltativi di questi comandi, che ovviamante devono essere identici, per esempio CB 1, ma devi aggiungere a mno il numero prograssivo, perché non lo fa utomaticamante.Alternativamente puoi ridefinire il modo di scrivere il contatore delle note con qualcosa che ti permetta a inizio capitio di stabile ila sigla del capitoolo a tuo piacimento e che formerà il prefisso del richiamo di nota e il richiamo delle note a fine testo; usa anche il pacchetto endnotes, che ti permette con adeguate configurazioni di avere le note a fine testo nell’apposia appendice.
-
20 Giugno 2014 alle 17:10 #94879::
Grazie mille per le indicazioni!Seguendo il suo consiglio, ho provato questo codice
`\documentclass[12pt]{book}
\usepackage{endnotes}
\title{Test}\let\footnote=\endnote
\begin{document}
\maketitle
\chapter{}
\endnotemark{CB 1}Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent consectetur nisi sit amet vulputate lacinia. Cras fermentum faucibus fermentum. Phasellus vel egestas velit, et sollicitudin leo. Morbi et hendrerit velit, sed volutpat purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis at pharetra velit. Sed aliquam commodo tristique. Donec sit amet vulputate justo. Maecenas nulla enim, fermentum vitae dapibus at, rutrum vitae libero. Proin faucibus nulla eros, ac tincidunt diam rutrum vel. Aenean eu erat at justo malesuada consequat sed vel erat. Vivamus gravida est quis sem semper, sed venenatis sem euismod. Etiam quis orci quam. Ut a massa lacus.
\newpage
\theendnotes\endnotetext{CB 1}. Layamon – Historia Regum Britanniae […]
CB 4-7. Following is the text of an interview with Mr. Akira Inoue, Co-ordinator of Geoffrey of Monmouth Association.
CB 19. According to the Historia Brittonum, and the writings of Gildas.
\end{document}`
Ma ho i seguenti problemi:
1. Il mark all’inizio è visibile (dovrebbe essere invisibile)
2. La nota nell’appendice è preceduta dal numero come apice: 1CB 1
3. Il testo che segue è su un nuovo capoverso, mentre dovrebbe continuare
4. Come fare a generare una nota che si riferisca a più capitoli, come CB 3-7?
In sostanza, avrei bisogno di una soluzione che permetta di generare la seguente stampa, come data da questo breve codice:
`\documentclass[12pt]{book}
\usepackage{endnotes}
\title{Test}\let\footnote=\endnote
\begin{document}
\maketitle
\chapter{}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent consectetur nisi sit amet vulputate lacinia. Cras fermentum faucibus fermentum. Phasellus vel egestas velit, et sollicitudin leo. Morbi et hendrerit velit, sed volutpat purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis at pharetra velit. Sed aliquam commodo tristique. Donec sit amet vulputate justo. Maecenas nulla enim, fermentum vitae dapibus at, rutrum vitae libero. Proin faucibus nulla eros, ac tincidunt diam rutrum vel. Aenean eu erat at justo malesuada consequat sed vel erat. Vivamus gravida est quis sem semper, sed venenatis sem euismod. Etiam quis orci quam. Ut a massa lacus.
\newpage
CB 1. Layamon – Historia Regum Britanniae […]
CB 4-7. Following is the text of an interview with Mr. Akira Inoue, Co-ordinator of Geoffrey of Monmouth Association.
CB 19. According to the Historia Brittonum, and the writings of Gildas.
\end{document}`
Grazie ancora per l’aiuto.
Guido Sette
-
21 Giugno 2014 alle 10:34 #94880
-
22 Giugno 2014 alle 10:08 #94881::
Ciao Guido,
io non ho capito qual è il risultato che vuoi ottenere. I rimandi alla nota, quelli all’interno del testo, oltre a contenere il mark a scelta, devono avere anche un numero progressivo? Servono anche i collegamenti ipertestuali?
Potresti per favore mostrare un esempio di come deve risultare il testo finito, cioè non il codice LaTeX, ma quello che vorresti vedere sul libro?Fran
-
22 Giugno 2014 alle 11:25 #94882::
Salve,devo poter produrre un risultato simile:
`Capitolo 1 – Il ciclo bretone alle origini
[etichetta nascosta data dal curatore: “CB 1”]
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent consectetur nisi sit amet vulputate lacinia. Cras fermentum faucibus fermentum.
[altri capitoli…]
Capitolo 24 – Note sul Layamon
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis at pharetra velit. Sed aliquam commodo tristique. Donec sit amet vulputate justo. (ecc)
[etichetta nascosta data dal curatore: “CB 27”]
Appendice 1 – Note del curatore
CB 1. Layamon – Historia Regum Britanniae […]
CB 4-7. Following is the text of an interview with Mr. Akira Inoue, Co-ordinator of Geoffrey of Monmouth Association.
CB 27. According to the Historia Brittonum, and the writings of Gildas.`
In sostanza:
- I rimandi alle note (“endnotes” in appendice) devono essere invisibili.
- Ma ogni nota del curatore deve iniziare con l’etichetta scelta da lui.
- Le etichette sono tutte differenti, ma non necessariamente seriali come numero.
- Ma un numero di un’etichetta non è mai inferiore a quella precedente
- Non devono esserci numeri progressivi estranei a quei nomi di etichetta
- Non devono apparire numeri in apice
- Non devono esserci collegamenti ipertestuali
Oggi pensavo di creare delle parti che contengano uno o più capitoli, e di mettere dei mark invisibili all’inizio delle parti, per poi richiamarli in Appendice.
Uso LuaLateX, ma sono purtroppo ancora lontano dalla padronanza necessaria.
-
22 Giugno 2014 alle 11:35 #94883::
Il fatto di non avere alcun rimando all’interno del testo mi spiazza un po’, ma sono scelte… Ma il testo delle note non viene scritto all’interno dei capitoli, ma direttamente in fondo al libro?
Oggi non riesco a provare, ma nei prossimi giorni guardo se mi viene in mente qualcosa.Per la questione del riferimento a gruppi di capitoli (CB4-7) esiste una qualche logica? se dici che le etichette non sono necessariamente consequenziali, come dovrebbero essere strutturati?
Francesco
-
22 Giugno 2014 alle 11:55 #94884::
Grazie Sig. Francesco per l’aiuto.franen” post=94517Il fatto di non avere alcun rimando all’interno del testo mi spiazza un po’, ma sono scelte…
È uno stile usato dal alcuni curatori in ambito letterario. Un esempio classico che mi viene in mente, è l’edizione delle poesie di Keats curata dal Sabbadini per la Mondandori. In quel caso le note in appendice non riguardano i capitoli, ma singoli versi, o gruppi di versi. (Tra l’altro, una traduzione superlativa). Anche là, non ci sono rimandi, ma la citazione del numero del verso o gruppi di versi.
franen” post=94517Ma il testo delle note non viene scritto all’interno dei capitoli, ma direttamente in fondo al libro?
Sì, il testo delle note è solo in fondo al libro, in una della appendici, “Note del curatore”
franen” post=94517Oggi non riesco a provare, ma nei prossimi giorni guardo se mi viene in mente qualcos
Grazie mille!
franen” post=94517Per la questione del riferimento a gruppi di capitoli (CB4-7) esiste una qualche logica?
Si, i gruppi di capitoli sono consequenziali. Un esempio di stile simile è quello usato (soprattutto in ambito europeo, non americano) per citare capitolo della Bibbia: Luca 4-7
Per queso pensavo di usare come “trucco” delle Parti che raggruppassero i capitoli. Ma è molto artificiosa, e a quel punto, tanto vale che si faccia tutto manualmente, aiutandosi con version control per vedere se le etichette cambiano, e adeguare le citazioni in appendice.
-
23 Giugno 2014 alle 11:47 #94885::
Non so se ho capito bene come è tua intenzione scrivere il codice del libro in questione, spero quantomeno di essermi avvicinato.
Ho fatto la supposizione che tutte le etichette abbiano la struttura CBnnn, se così non fosse fammi sapere…
Ho supposto che nel caso di gruppi di etichette (CB 4-7) ci si premuri manualmente che tutti i testi (4,5,6,7) siano citati. Altrimenti occorre pensare qualche riga di codice in più.le spiegazioni sono nel codice (che se qualcuno volesse correggere sarei felice 🙂 ).
Francesco`
\documentclass[12pt]{book}
\usepackage{etoolbox,xparse,l3sort}
\title{Test}% definisco un comando da usare all'interno del testo, magari appena dopo \chapter. Questo assegna a un'etichetta di facile memorizzazione (reArtu)
l'etichetta che si vorrà usare nelle note (CB1, scritto senza spazi).
\newcommand{\chapterlabel}[2]{%
\csdef{#1}{#2}}% usp il linguaggio di programmazinoe LaTeX3, o almeno ci provo, mi scuso se non hai dimestichezza conquesto tipo di codice, ma non saprei fare altrimenti.
\ExplSyntaxOn
\tl_new:N \g_guido_numbers_tl %token list per memorizzare la serie di numeri delle etichette
\fp_new:N \g_guido_numbers_max_value_fp % valore massimo delle etichette
\fp_new:N \g_guido_numbers_min_value_fp % valore minimo delle etichette
\clist_gclear_new:N \g_guido_labels_clist %clist in cui immagazzino le etichette compreso il CB
\clist_gclear_new:N \g_guido_labels_numbers_clist % clist in cui immagazzino solo i numeri delle etichette
\int_new:N \l_guido_list_population_int % intero che mi dice quanti elementi contiene una lista.%Alla fine del documento uso il comando \PrintNoteLabels per stampare la scritta “CB nn'' o “CB xx-yy''. Vule come argomento una lista separata da virgole
%dei nomi assegnati ai libri (il reArtu di prima).
\NewDocumentCommand{\PrintNoteLabel}{m}{\guido_print_labels_cs:n {#1}}
%Il comando di cui sopra richiama un altro comando:
\cs_new_protected:Npn \guido_print_labels_cs:n #1
{
\clist_gclear:N \g_guido_labels_clist % pulisco \g_guido_labels_clist
\clist_gclear:N \g_guido_labels_numbers_clist %pulisco \g_guido_labels_numbers_clist
\clist_gset:Nn \g_guido_labels_clist {#1} %assegno a \g_guido_labels_clist l'argomento di \PrintNoteLabel
\clist_map_inline:Nn \g_guido_labels_clist {\guido_read_labels:n {##1}} % mappo la lista (eseguo un'operazione su ogni elemento della lista) eseguendo il comando
%\guido_read_labels:n. Questo crea una lista contenente solo numeri, cioè se prima avevo CB1,CB2 ora ho 1,2.
% Conto poi quanti elementi contiene la lista di soli numeri.
\int_set:Nn \l_guido_list_population_int {\clist_count:N \g_guido_labels_numbers_clist}
% se ho un solo elemento le cose sono semplici, e stampo l'etichetta
\int_compare:nNnTF {\l_guido_list_population_int}={1}
{CB~ \clist_use:Nnnn \g_guido_labels_numbers_clist {}{}{} . }
% se ci sono più elementi devo fare un po' di operazioni.
{
%valuto il valore massimo e il valore minimo
\tl_clear:N \g_guido_numbers_tl
\clist_map_inline:Nn \g_guido_labels_numbers_clist
{ \tl_gput_right:Nn \g_guido_numbers_tl {,##1} }
\tl_gremove_once:Nn \g_guido_numbers_tl {,}
\fp_set:Nn \g_guido_numbers_max_value_fp {\fp_eval:n { max(\tl_use:N \g_guido_numbers_tl) }}
\fp_set:Nn \g_guido_numbers_min_value_fp {\fp_eval:n { min(\tl_use:N \g_guido_numbers_tl) }}
% e li uso per stampare l'etichetta nel formato CB xx-yy
CB~ \fp_use:N \g_guido_numbers_min_value_fp — \fp_use:N \g_guido_numbers_max_value_fp .
%voelndo potresti stampare tutti i valori tipo CB 4, 5, 6 e 7
%\clist_use:Nnnn \g_guido_labels_numbers_clist { ~e~ } { ,~ } { ,~e~ } .
}
}
%NB. Se le note si riferissero a un insieme di libri tipo CB 1-4, 8, 10-13 occorrerebbe modificare il codice! Fammi sapere% la funzione richiamata prima, serve per togliere il CB dalle etichette e lasciare solo i numeri.
\cs_new_protected:Npn \guido_read_labels:n #1
{
\tl_set:Nx \l_tempa_tl {\use:c {#1}}
\tl_remove_once:Nn \l_tempa_tl {CB}\clist_gput_right:NV \g_guido_labels_numbers_clist \l_tempa_tl
}
\ExplSyntaxOff\begin{document}
\maketitle
\chapter{}
\chapterlabel{tavolarotonda}{CB2}
\chapterlabel{reArtu}{CB52}
\chapterlabel{remo}{CB3}
\chapterlabel{tavolarotonde}{CB4}
\chapterlabel{reArte}{CB8}
\chapterlabel{reme}{CB6}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent consectetur nisi sit amet vulputate lacinia. Cras fermentum faucibus fermentum. Phasellus vel egestas velit, et sollicitudin leo.
Morbi et hendrerit velit, sed volutpat purus. Lorem ipsum dolor sit amet,
consectetur adipiscing elit. Duis at pharetra velit. Sed aliquam commodo tristique. Donec sit amet vulputate justo. Maecenas nulla enim, fermentum vitae dapibus at, rutrum vitae libero.
Proin faucibus nulla eros, ac tincidunt diam rutrum vel. Aenean eu erat at justo malesuada consequat sed vel erat. Vivamus gravida est quis sem semper, sed venenatis sem euismod.
Etiam quis orci quam. Ut a massa lacus.\chapter{}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent consectetur nisi sit amet vulputate lacinia. Cras fermentum faucibus fermentum. Phasellus vel egestas velit, et sollicitudin leo.
Morbi et hendrerit velit, sed volutpat purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis at pharetra velit. Sed aliquam commodo tristique. Donec sit amet vulputate justo.
Maecenas nulla enim, fermentum vitae dapibus at, rutrum vitae libero. Proin faucibus nulla eros, ac tincidunt diam rutrum vel. Aenean eu erat at justo malesuada consequat sed vel erat.
Vivamus gravida est quis sem semper, sed venenatis sem euismod. Etiam quis orci quam. Ut a massa lacus.
\newpage%\PrintNoteLabel{\tavolarotonda,\reartu}
\PrintNoteLabel{tavolarotonda,reArtu,remo} Layamon – Historia Regum Britanniae […]\PrintNoteLabel{reme,reArte} Following is the text of an interview with Mr. Akira Inoue, Co-ordinator of Geoffrey of Monmouth Association.
\PrintNoteLabel{tavolarotonde} According to the Historia Brittonum, and the writings of Gildas.
\end{document}`
-
23 Giugno 2014 alle 14:28 #94886::
Grazie mille per il codice, funziona benissimo, ed è commentato benissimo. Ottimo per poter imparare di più!Riporto il suo codice con i capitoli e le etichette messe come sarebbero. Inoltre ho aggiunto delle parti:
`
\documentclass[12pt]{book}
\usepackage{etoolbox,xparse,l3sort}
\title{Test}% definisco un comando da usare all'interno del testo, magari appena dopo \chapter. Questo assegna a un'etichetta di facile memorizzazione (reArtu) l'etichetta che si vorrà usare nelle note (CB1, scritto senza spazi).
\newcommand{\chapterlabel}[2]{%
\csdef{#1}{#2}}% uso il linguaggio di programmazinoe LaTeX3, o almeno ci provo, mi scuso se non hai dimestichezza con questo tipo di codice, ma non saprei fare altrimenti.
\ExplSyntaxOn
\tl_new:N \g_guido_numbers_tl %token list per memorizzare la serie di numeri delle etichette
\fp_new:N \g_guido_numbers_max_value_fp % valore massimo delle etichette
\fp_new:N \g_guido_numbers_min_value_fp % valore minimo delle etichette
\clist_gclear_new:N \g_guido_labels_clist %clist in cui immagazzino le etichette compreso il CB
\clist_gclear_new:N \g_guido_labels_numbers_clist % clist in cui immagazzino solo i numeri delle etichette
\int_new:N \l_guido_list_population_int % intero che mi dice quanti elementi contiene una lista.% Alla fine del documento uso il comando \PrintNoteLabels per stampare la scritta “CB nn'' o “CB xx-yy''. Vule come argomento una lista separata da virgole
%dei nomi assegnati ai libri (il reArtu di prima).
\NewDocumentCommand{\PrintNoteLabel}{m}{\guido_print_labels_cs:n {#1}}% Il comando di cui sopra richiama un altro comando:
\cs_new_protected:Npn \guido_print_labels_cs:n #1
{
\clist_gclear:N \g_guido_labels_clist % pulisco \g_guido_labels_clist
\clist_gclear:N \g_guido_labels_numbers_clist %pulisco \g_guido_labels_numbers_clist
\clist_gset:Nn \g_guido_labels_clist {#1} %assegno a \g_guido_labels_clist l'argomento di \PrintNoteLabel
\clist_map_inline:Nn \g_guido_labels_clist {\guido_read_labels:n {##1}} % mappo la lista (eseguo un'operazione su ogni elemento della lista) eseguendo il comando
% \guido_read_labels:n. Questo crea una lista contenente solo numeri, cioè se prima avevo CB1,CB2 ora ho 1,2.
% Conto poi quanti elementi contiene la lista di soli numeri.
\int_set:Nn \l_guido_list_population_int {\clist_count:N \g_guido_labels_numbers_clist}
% se ho un solo elemento le cose sono semplici, e stampo l'etichetta
\int_compare:nNnTF {\l_guido_list_population_int}={1}
{CB~ \clist_use:Nnnn \g_guido_labels_numbers_clist {}{}{} . }
% se ci sono più elementi devo fare un po' di operazioni.
{
% valuto il valore massimo e il valore minimo
\tl_clear:N \g_guido_numbers_tl
\clist_map_inline:Nn \g_guido_labels_numbers_clist
{ \tl_gput_right:Nn \g_guido_numbers_tl {,##1} }
\tl_gremove_once:Nn \g_guido_numbers_tl {,}
\fp_set:Nn \g_guido_numbers_max_value_fp {\fp_eval:n { max(\tl_use:N \g_guido_numbers_tl) }}
\fp_set:Nn \g_guido_numbers_min_value_fp {\fp_eval:n { min(\tl_use:N \g_guido_numbers_tl) }}
% e li uso per stampare l'etichetta nel formato CB xx-yy
CB~ \fp_use:N \g_guido_numbers_min_value_fp — \fp_use:N \g_guido_numbers_max_value_fp .
% volendo potresti stampare tutti i valori tipo CB 4, 5, 6 e 7
%\clist_use:Nnnn \g_guido_labels_numbers_clist { ~e~ } { ,~ } { ,~e~ } .
}
}
% NB. Se le note si riferissero a un insieme di libri tipo CB 1-4, 8, 10-13 occorrerebbe modificare il codice! Fammi sapere% la funzione richiamata prima, serve per togliere il CB dalle etichette e lasciare solo i numeri.
\cs_new_protected:Npn \guido_read_labels:n #1
{
\tl_set:Nx \l_tempa_tl {\use:c {#1}}
\tl_remove_once:Nn \l_tempa_tl {CB}\clist_gput_right:NV \g_guido_labels_numbers_clist \l_tempa_tl
}
\ExplSyntaxOff\begin{document}
\maketitle
\part{}
\chapter{}
\chapterlabel{tavolarotonda}{CB1}Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent
consectetur nisi sit amet vulputate lacinia. Cras fermentum faucibus
fermentum. Phasellus vel egestas velit, et sollicitudin leo.\chapter{}
\chapterlabel{reArtu}{CB2}Morbi et
hendrerit velit, sed volutpat purus. Lorem ipsum dolor sit amet,
consectetur adipiscing elit. Duis at pharetra velit. Sed aliquam
commodo tristique.\chapter {}
\chapterlabel{remo}{CB3}Donec sit amet vulputate justo. Maecenas nulla
enim, fermentum vitae dapibus at, rutrum vitae libero. Proin faucibus
nulla eros, ac tincidunt diam rutrum vel.\part{}
\chapter{}
\chapterlabel{tavolarotonde}{CB4}Aenean eu erat at justo malesuada consequat sed vel erat.
\chapter {}
\chapterlabel{reArte}{CB5}Vivamus gravida est quis sem semper, sed venenatis sem euismod.
\chapter{}
\chapterlabel{reme}{CB6}Etiam quis orci quam. Ut a massa lacus.
\newpage
\PrintNoteLabel{remo,tavolarotonda,reArtu,remo} Layamon – Historia Regum Britanniae […]
\PrintNoteLabel{reme,reArte} Following is the text of an interview with Mr. Akira Inoue, Co-ordinator of Geoffrey of Monmouth Association.
\PrintNoteLabel{tavolarotonde} According to the Historia Brittonum, and the writings of Gildas.
\end{document}
`Il suo codice fa tutto quello di cui avevo bisogno, ma lo stesso avrei due domande:
1. Un commento dice: “volendo potresti stampare tutti i valori tipo CB 4, 5, 6 e 7” Come potrei fare per aver quella funzione?
2. Dal mio esempio modificato, avrà visto che c’è una sola etichetta per capitolo, e che i capitoli sono raggruppati in parti. Come si potrebbe fare per avere una nota del tipo “CB 1-4”, che includa automaticamente tutti i capitoli di una parte?
Cioè, se avessi:
`
\part{}
\partlabel{interviste}{CB1e}
`e quella parte contenesse i capitoli con etichette: {tavolarotonda}{CB1}, {reArtu}{CB2}, {remo}{CB3},
un nuovo comando tipo
`
\PrintNotePartLabel{interviste}
`stamperebbe automaticamente il riferimento a tutti i capitoli contenuti in quella parte:
CB 1-3. [ecc]
(Noti che il codice del curatore per parti ha una e finale, per “aggiunta da ‘e’ditor”)
Grazie di cuore per il suo tempo e l’esempio. Molto più di quello che speravo, e una grande ispirazione ad imparare LaTeX3.
Grazie!
Guido
-
23 Giugno 2014 alle 14:48 #94887::
GuidoSette” post=94529Un commento dice: “volendo potresti stampare tutti i valori tipo CB 4, 5, 6 e 7” Come potrei fare per aver quella funzione?
Basta commentare la prima riga e togliere il commento dalla terza:`CB~ \fp_use:N \g_guido_numbers_min_value_fp — \fp_use:N \g_guido_numbers_max_value_fp .
% volendo potresti stampare tutti i valori tipo CB 4, 5, 6 e 7
%CB~ \clist_use:Nnnn \g_guido_labels_numbers_clist { ~e~ } { ,~ } { ,~e~ } .
` (nel messaggio precedente avevo scordato di mettere il CB!)GuidoSette” post=94529 Dal mio esempio modificato, avrà visto che c’è una sola etichetta per capitolo, e che i capitoli sono raggruppati in parti. Come si potrebbe fare per avere una nota del tipo “CB 1-4”, che includa automaticamente tutti i capitoli di una parte?
Ci penso.
Io mi permetto di darti del tu, come usanza qui nel forum, ti chiedo se puoi farlo anche tu!
GuidoSette” post=94529Grazie di cuore per il suo tempo e l’esempio. Molto più di quello che speravo, e una grande ispirazione ad imparare LaTeX3.
Grazie per la domanda! È un piacere provare a rispondere a belle domande! La prima che avevi fatto qualche anno fa, sull’indicizzazione dei personaggi della Comedie Humaine era stata molto stimolante per me, anche se non ero ancora in grado di rispondere (ora credo che qualcosa sarei riuscito a suggerirtelo 🙂 )
Francesco
-
24 Giugno 2014 alle 5:14 #94888::
Dal momento che i numeri delle etichette sono consequenziali ho usato un altro approccio per la stampa delle etichette relative a una Parte: ho usato una \seq al posto di una \clist, in modo da poterne prelevare direttamente il primo e l’ultimo elemento, senza dover cercare il max e il min dei valori della clist (cosa necessaria se le etichette fossero in ordine sparso).
Ogni volta che si usa un comando [tt]\chapterlabel[/tt] si aggiunge l’etichetta CBnn alla \seq \g_guido_partlist_ETICHETTA-DELLA-PARTE _seq.
Viene creata una seq per ogni Parte.
Alla fine si stampano i riferimenti prendendo il primo e l’ultimo elemento di ogni \seq che interessa.Francesco
`\documentclass[12pt]{book}
\usepackage{etoolbox,xparse,l3sort}
\title{Test}% definisco un comando da usare all'interno del testo, magari appena dopo \chapter. Questo assegna a un'etichetta di facile memorizzazione (reArtu) l'etichetta che si vorrà usare nelle note (CB1, scritto senza spazi).
% uso il linguaggio di programmazinoe LaTeX3, o almeno ci provo, mi scuso se non hai dimestichezza con questo tipo di codice, ma non saprei fare altrimenti.
\ExplSyntaxOn
\tl_new:N \g_guido_current_part_name_tl
\NewDocumentCommand{\partlabel}{m m}
{
\csdef{#1}{#2}
\tl_set:Nn \g_guido_current_part_name_tl {#1}
\seq_new:c {g_guido_partlist_\tl_use:N \g_guido_current_part_name_tl _seq}
}\NewDocumentCommand{\chapterlabel}{ m m}{
\csdef{#1}{#2}
\seq_gput_right:cn {g_guido_partlist_\tl_use:N \g_guido_current_part_name_tl _seq} {#2}
}
\tl_new:N \l_guido_first_part_tl
\tl_new:N \l_guido_last_part_tl
\NewDocumentCommand {\PrintNotePartLabel} {m}
{
\tl_set:Nn \l_tempa_tl {#1}
\seq_get_left:cN {g_guido_partlist_\tl_use:N \l_tempa_tl _seq} \l_guido_first_part_tl
\seq_get_right:cN {g_guido_partlist_\tl_use:N \l_tempa_tl _seq} \l_guido_last_part_tl
\tl_remove_all:Nn \l_guido_first_part_tl {CB}
\tl_remove_all:Nn \l_guido_last_part_tl {CB}
CB~ \tl_use:N \l_guido_first_part_tl — \tl_use:N \l_guido_last_part_tl .
}\tl_new:N \g_guido_numbers_tl %token list per memorizzare la serie di numeri delle etichette
\fp_new:N \g_guido_numbers_max_value_fp % valore massimo delle etichette
\fp_new:N \g_guido_numbers_min_value_fp % valore minimo delle etichette
\clist_gclear_new:N \g_guido_labels_clist %clist in cui immagazzino le etichette compreso il CB
\clist_gclear_new:N \g_guido_labels_numbers_clist % clist in cui immagazzino solo i numeri delle etichette
\int_new:N \l_guido_list_population_int % intero che mi dice quanti elementi contiene una lista.% Alla fine del documento uso il comando \PrintNoteLabels per stampare la scritta “CB nn'' o “CB xx-yy''. Vule come argomento una lista separata da virgole
%dei nomi assegnati ai libri (il reArtu di prima).
\NewDocumentCommand{\PrintNoteLabel}{m}{\guido_print_labels_cs:n {#1}}% Il comando di cui sopra richiama un altro comando:
\cs_new_protected:Npn \guido_print_labels_cs:n #1
{
\clist_gclear:N \g_guido_labels_clist % pulisco \g_guido_labels_clist
\clist_gclear:N \g_guido_labels_numbers_clist %pulisco \g_guido_labels_numbers_clist
\clist_gset:Nn \g_guido_labels_clist {#1} %assegno a \g_guido_labels_clist l'argomento di \PrintNoteLabel
\clist_map_inline:Nn \g_guido_labels_clist {\guido_read_labels:n {##1}} % mappo la lista (eseguo un'operazione su ogni elemento della lista) eseguendo il comando
% \guido_read_labels:n. Questo crea una lista contenente solo numeri, cioè se prima avevo CB1,CB2 ora ho 1,2.
% Conto poi quanti elementi contiene la lista di soli numeri.
\int_set:Nn \l_guido_list_population_int {\clist_count:N \g_guido_labels_numbers_clist}
% se ho un solo elemento le cose sono semplici, e stampo l'etichetta
\int_compare:nNnTF {\l_guido_list_population_int}={1}
{CB~ \clist_use:Nnnn \g_guido_labels_numbers_clist {}{}{} . }
% se ci sono più elementi devo fare un po' di operazioni.
{
% valuto il valore massimo e il valore minimo
\tl_clear:N \g_guido_numbers_tl
\clist_map_inline:Nn \g_guido_labels_numbers_clist
{ \tl_gput_right:Nn \g_guido_numbers_tl {,##1} }
\tl_gremove_once:Nn \g_guido_numbers_tl {,}
\fp_set:Nn \g_guido_numbers_max_value_fp {\fp_eval:n { max(\tl_use:N \g_guido_numbers_tl) }}
\fp_set:Nn \g_guido_numbers_min_value_fp {\fp_eval:n { min(\tl_use:N \g_guido_numbers_tl) }}
% e li uso per stampare l'etichetta nel formato CB xx-yy
CB~ \fp_use:N \g_guido_numbers_min_value_fp — \fp_use:N \g_guido_numbers_max_value_fp .
% volendo potresti stampare tutti i valori tipo CB 4, 5, 6 e 7
%\clist_use:Nnnn \g_guido_labels_numbers_clist { ~e~ } { ,~ } { ,~e~ } .
}
}
% NB. Se le note si riferissero a un insieme di libri tipo CB 1-4, 8, 10-13 occorrerebbe modificare il codice! Fammi sapere% la funzione richiamata prima, serve per togliere il CB dalle etichette e lasciare solo i numeri.
\cs_new_protected:Npn \guido_read_labels:n #1
{
\tl_set:Nx \l_tempa_tl {\use:c {#1}}
\tl_remove_once:Nn \l_tempa_tl {CB}\clist_gput_right:NV \g_guido_labels_numbers_clist \l_tempa_tl
}
\ExplSyntaxOff\begin{document}
\maketitle
\part{}
\partlabel{interviste}{CB1e}
\chapter{}
\chapterlabel{tavolarotonda}{CB1}Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent
consectetur nisi sit amet vulputate lacinia. Cras fermentum faucibus
fermentum. Phasellus vel egestas velit, et sollicitudin leo.\chapter{}
\chapterlabel{reArtu}{CB2}Morbi et
hendrerit velit, sed volutpat purus. Lorem ipsum dolor sit amet,
consectetur adipiscing elit. Duis at pharetra velit. Sed aliquam
commodo tristique.\chapter {}
\chapterlabel{remo}{CB3}Donec sit amet vulputate justo. Maecenas nulla
enim, fermentum vitae dapibus at, rutrum vitae libero. Proin faucibus
nulla eros, ac tincidunt diam rutrum vel.\part{}
\partlabel{altreinterviste}{CB2e}
\chapter{}
\chapterlabel{tavolarotonde}{CB4}Aenean eu erat at justo malesuada consequat sed vel erat.
\chapter {}
\chapterlabel{reArte}{CB5}Vivamus gravida est quis sem semper, sed venenatis sem euismod.
\chapter{}
\chapterlabel{reme}{CB6}Etiam quis orci quam. Ut a massa lacus.
\newpage
\PrintNoteLabel{remo,tavolarotonda,reArtu,remo} Layamon – Historia Regum Britanniae […]
\PrintNoteLabel{reme,reArte} Following is the text of an interview with Mr. Akira Inoue, Co-ordinator of Geoffrey of Monmouth Association.
\PrintNoteLabel{tavolarotonde} According to the Historia Brittonum, and the writings of Gildas.
\PrintNotePartLabel{interviste}
\end{document}`
-
24 Giugno 2014 alle 14:00 #94889::
Francesco, grazie infinite, questo fa esattamente quello di cui avevo bisogno.Grazie per il tuo tempo, e per la bella lezione di programmazione! Uso LaTeX quando posso (di recente LuaLaTeX, per via di microtype), e la qualità finale è una vera gioia per gli occhi. Ma anche usarlo (nel senso di prepararne il codice) è una gioia, e vedere cosa uno esperto come te riesce a fare, è veramente incoraggiante!
Grazie anche per avermi ricordato quel bel lavoro sulla Comedie Humaine di diversi anni fa. I miei primi tentativi (allora usavo XeLaTeX)!
Grazie infinite, di nuovo!
Guido
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.