- Questo topic ha 11 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 6 anni, 11 mesi fa da
benedetto batta.
-
CreatoreTopic
-
19 Settembre 2019 alle 13:42 #116440::
Buongiorno.
Sto scrivendo un libro utilizzando il pacchetto VERSE contenente un numero ampio di poesie. Quello che vorrei è stilare un elenco in fondo al libro dei capoversi e dei titoli delle poesie, ordinato alfabeticamente (ci sono molti testi senza titolo).
L’elenco lo vorrei formattato come segue:CAPOVERSO…………….11
POESIA…………………..6Cercando nel Forum ho trovato questa soluzione: https://www.guitex.org/home/it/forum/5-tex-e-latex/45229-risolto-indice-dei-capoversi.
La macro lì introdotta funziona egregiamente bene per i capoversi, ma non so come recuperare anche il titolo della poesia, né tanto meno come formattali.
Ho fatto qualche tentativo, ma non avendo conoscenza della programmazione delle macro, andando a tentoni non ho ottenuto risultati. In ogni modo, partendo da quest’esempio di una poesia:
`\renewcommand{\poemtoc}{subsection}
\poemtitle {Senza luna la quiete}
\settowidth{\versewidth}{intrecciate da pollini azzurri.}
\begin{verse}[\versewidth]
\listverse{Con tre frecce}
Con tre frecce\\
piantate nel petto,\`
vorrei poter utilizzare il nome assegnato a \poemtitle e aggiungerlo nell’elenco insieme al capoverso assegnato a \listverse.Si tratterebbe di modificare in definitiva il codice della discussione succitata, che qui riporto:
`\makeatletter
\newcommand{\listofverse}[1]{%
\chapter{Lista dei capoversi}%
\@starttoc{lov}}
\newcommand{\l@verse}{\@dottedtocline{1}{\z@}{2.3em}}
\newcommand{\listverse}[1]{%
\@nameuse{phantomsection}%
\addcontentsline{lov}{verse}{#1}%
#1}
\makeatother`
in modo tale che richiedesse 2 parametri: uno che si assegna a \listverse, l’altro che preleva il titolo da \poemtitle. Se non fosse possibile, mi accontenterei di dover scrivere a mano i due parametri in \listverse.
Spero di essermi spiegato.Resta poi da considerare la formattazione che, credo, sia da eseguirsi nella linea di comando \newcommand{\l@verse}.
Spero che qualcuno riesca ad aiutarmi.
Grazie.
-
CreatoreTopic
-
AutoreRisposte
-
-
19 Settembre 2019 alle 20:05 #116441::
Vediamo se ho capito.Hai un elenco di poesie; vorresti creare un indice con la sigla lov, nel quale compaiono in ordine alfabetico i titoli delle poesie, formatati in neretto corsivo maiuscolo se le poesie hanno un titolo, oppure il primo verso (*) verso della poesia, se essa non ha un titolo, quest’ultimo formattato in corsivo maiuscolo.
Il tutto non va ordinato per pagine, ma per il contenuto delle stringhe da indicizzare, indipendentemente dal fatto che siano in neretto, oppure in serie media.
Se ho capito bene, avrei un’idea in testa,ma prima di buttarmici, vorrei conferma che quello che ho capito sia corretto; per esempio quello che ho capito non va d’accordo che nell’esempio che hai allegato vorresti mettere sia il titolo Senza la luna la quiete sia il primo verso Con tre frecce.
(*) In italiano che io sappia capoverso è una cosa che si riferisce alla prosa e indica un brano di testo che termina con un “punto e a capo”; in inglese si chiama “paragraph”; in francese si chiama “alinea”. Il primo verso di una poesia non credo che abbia un nome in italiano formato da una sola parola. Ma sulla terminologia poetica ho delle grosse lacune 🙁
-
20 Settembre 2019 alle 6:13 #116442::
Sì, nei libri di poesia con capoverso si riscontra spesso questa tipologia di “titolazione”: capita, infatti, che molti testi non abbiano proprio un titolo, quindi per redarre un indice si prende il primo verso con se fosse il titolo stesso.
Quindi, solitamente, nell’indice generale questi appaiono come titoli delle poesie di cui sono il primo verso (o solo una parte, se il verso è troppo lungo); se sono molti i testi senza titolo, serve poi un indice di questi primi versi e dei titoli delle poesie che, invece, li hanno, e questo deve essere ordinato alfabeticamente; inoltre, in qualche modo, titoli e “capoversi” vanno differenziati con una logica (nel mio caso corsivo e grassetto) poi spiegata al lettore in una nota.
Nel caso dell’esempio, dovrebbe risultare:Con tre frecce 15
Senza luna la quiete 15perché la poesia ha un titolo, mentre si troverebbe solo con tre frecce se il titolo non ci fosse.
Utilizzando il codice del link precedente, ho pensato che potrei aggiungere anche il dato per il titolo (se presente) al file .lov, come qui di seguito:
`\renewcommand{\poemtoc}{subsection}
\poemtitle {Senza luna la quiete}
\settowidth{\versewidth}{intrecciate da pollini azzurri.}
\begin{verse}[\versewidth]
\listverse{Con tre frecce} —–>>>> CAPOVERSO
\listverse{Senza luna la quiete} —–>>>> TITOLO (se esistente)
Con tre frecce\\
piantate nel petto,\`Non so se funziona… e, naturalmente, mi manca la formattazione differenziata, che non so come applicare. Si può fare così, per esempio?
`\listverse{\textit{Con tre frecce}}`
-
20 Settembre 2019 alle 10:35 #116443::
BennyB” post=116864Sì, nei libri di poesia con capoverso si riscontra spesso questa tipologia di “titolazione”: capita, infatti, che molti testi non abbiano proprio un titolo, quindi per redarre un indice si prende il primo verso con se fosse il titolo stesso.
Quindi, solitamente, nell’indice generale questi appaiono come titoli delle poesie di cui sono il primo verso (o solo una parte, se il verso è troppo lungo); se sono molti i testi senza titolo, serve poi un indice di questi primi versi e dei titoli delle poesie che, invece, li hanno, e questo deve essere ordinato alfabeticamente; inoltre, in qualche modo, titoli e “capoversi” vanno differenziati con una logica (nel mio caso corsivo e grassetto) poi spiegata al lettore in una nota.
Nel caso dell’esempio, dovrebbe risultare:Con tre frecce 15
Senza luna la quiete 15perché la poesia ha un titolo, mentre si troverebbe solo con tre frecce se il titolo non ci fosse.
Utilizzando il codice del link precedente, ho pensato che potrei aggiungere anche il dato per il titolo (se presente) al file .lov, come qui di seguito:
`\renewcommand{\poemtoc}{subsection}
\poemtitle {Senza luna la quiete}
\settowidth{\versewidth}{intrecciate da pollini azzurri.}
\begin{verse}[\versewidth]
\listverse{Con tre frecce} —–>>>> CAPOVERSO
\listverse{Senza luna la quiete} —–>>>> TITOLO (se esistente)
Con tre frecce\\
piantate nel petto,\`Non so se funziona… e, naturalmente, mi manca la formattazione differenziata, che non so come applicare. Si può fare così, per esempio?
`\listverse{\textit{Con tre frecce}}`redarre ? Questo in italiano non esiste.
Perché chiedi se funziona? Prova. se funziona sei a posto, se non funziona bisogna trovare qualcos’altro.
Può darsi che quel textit e i titoli quel \texbf interferiscano con l’algoritmo di sorting.
Fino a domandi non posso occuparmi dell’applicazione della mia idea di soluzione. Ti farò sapere.
-
21 Settembre 2019 alle 4:43 #116444::
Sì, in effetti sarebbe corretto l’utilizzo di redigere, ma c’è discussione: Accademia della Crusca, redarre…Tralasciando le questioni linguistiche, ho verificato, e i parametri di \listverse sono formattabili.
Non resta che trovare un modo per ordinare alfabeticamente la lista. Ho provato a utilizzare il codice introdotto nella vecchia discussione che ho citato, ma non a me non funziona.
Tra l’altro non so proprio come fate il sorting del file .lov: io lavoro su Windows, non sto utilizzando Linux.Magari hai qualche altro suggrimento…
Grazie, in ogni caso.
-
21 Settembre 2019 alle 5:46 #116445::
Da quale pacchetto salta fuori il comando [tt]\listverse[/tt]?
Esso non è definito nel pacchetto verse.[EDIT] Ho trovato: è una definizione del comando indicato in una delle rispsote al quesito di @Teomat.
@BennyB, cerca di fornire sempre un esempio minimo compilabile, non parti di esso; Compilabile signofica che l’esempio comincia con [tt]\documentclass[/tt] e finisce con [tt]\end{document}[/tt]; che contiene il minimo di pacchetti necessari per replicare il rpoblema (non l’intero preambolo, ma solo i pacchetti necessari e sufficienti per replicare il problema); e il corpo del documento sia il minimo necessario per mostrare il problema.Avendo trovato quella definizione, vedo che `basata semplicemente sull’aggiunta di una voce ad un particolare indice creato apposta, con estensione .lov. Quell’indice è appunto un indice, ordinato secondo il numero della pagina, non sil nome della cosa inserita nell’indice. Non ha bisogno di nessun algoritmo speciale di ordinamento, perché quel file .lov viene creato riga dopo riga via via che le pagine e i loro contenuti vengono inviati al file di uscita, quindi sono già in ordine di apparizione, cioè con numero di pagine crescente (non decrescente, se ci sono due poesie nella stessa pagina). Quella definizione appariva anche in un tuo messaggio precedente, ma, appunto deve apparire nel preambolo dell’esempio minimo compilabile (vedi sopra).
Ora credo di avere gli elementi per studiare una soluzione.
-
21 Settembre 2019 alle 7:10 #116446::
Secondo me, BennyB sta sbagliando approccio al problema.
BennyB, tu non vuoi un indice generale, ma vuoi un indice analitico che ordina alfabeticamente alcune o tutte le poesie, o almeno così ho interpretato io il problema.
Premetto che a livello di programmazione non sono un esperto, però, se ho capito bene quel che desideri, non occorrono molte macro.
Ecco un breve elenco di cose da fare:- carica il pacchetto imakeidx, per la composizione degli indici analitici e leggine la documentazione, insieme alla documentazione di makeindex
- crea le macro per inserire la giusta formattazione dei titoli delle poesie nell’indice analitico
-
lancia il compilatore.
.
.
Ti allego un esempio minimo compatibile. Il cuore della soluzione sta nelle macro \titolopoesia e \primocapoverso: occhio che se due poesie hanno lo stesso titolo o iniziano allo stesso modo (se sono senza titolo) finiscono nella stessa voce dell’indice.
Per una maggiore personalizzazione dell’aspetto dell’indice dovresti creare un file di stile .ist. Siccome non ho mai maneggiato quei file, non posso aiutarti di più.`
\documentclass[10pt,two side,open right,a5paper]{book}
\usepackage[T1]{fontenc} % codifica dei font
\usepackage[utf8]{inputenc} % lettere accentate da tastiera
\usepackage[greek.ancient,latin,italian]{babel}
\languageattribute{latin}{classic}
\usepackage{verse}\usepackage{imakeidx}
\makeindex[name=indicepoesie, title=indice delle poesie,intoc,columns=1]
%ATTENZIONE MACRO PER L'INDICE DELLE POESIE
\newcommand{\titolopoesia}[1]
{\poemtitle[#1]{#1\index[indicepoesie]{#1@\textbf{#1}}}}\newcommand{\titolocapoverso}[1]
{#1\index[indicepoesie]{#1@\textit{#1}}}%———————————————————-
\begin{document}
%\tableofcontents
\titolopoesia{Senza luna la quiete}
\settowidth{\versewidth}{intrecciate da pollini azzurri.}
\begin{verse}[\versewidth]
—
\end{verse}\newpage
\settowidth{\versewidth}{profonde striature}
\begin{verse}[\versewidth]
\titolocapoverso{primo verso} \\
secondo verso
\end{verse}\newpage
\titolopoesia{Che bei capelli rossi}
\settowidth{\versewidth}{che bei capelli rossi}
\begin{verse}[\versewidth]
primo verso \\
secondo verso
\end{verse}\newpage
\settowidth{\versewidth}{ti amerò per sempre}
\begin{verse}[\versewidth]
\titolocapoverso{Ti amerò per sempre} \\
bambina mia
\end{verse}\printindex[indicepoesie]
\end{document}
`
-
21 Settembre 2019 alle 8:55 #116447::
Bravo @mattiaca. Hai centrato il problema che io stavo sviluppando nello stesso modo; mi occorre piò tempo, perché avrei voluto fare sì che \poemtitle facesse tutto lui, e poi sarebbe bastato un semplice comando per scrivere il primo verso.
Comunque procedo, ma ci sono delle grosse difficoltà con \poemtitle a causa del fatto che iltitolo potrebbe contenere anche il comando \gls e questo nell’indice analitico davvero stona.
-
21 Settembre 2019 alle 10:27 #116448::
Ecco, allora, la mia soluzione.`\documentclass[a5paper,10pt,twoside=true,openrght=true]{book}
\begin{filecontents*}{Fabio.ist}
headings_flag 0
heading_prefix “”
heading_suffix “”
symhead_positive “Simboli”
symhead_negative “simboli”
numhead_positive “Numeri”
numhead_negative “numeri”
delim_0 “\\indexdots”
\end{filecontents*}
\usepackage[T1]{fontenc} % codifica dei font
\usepackage[utf8]{inputenc} % lettere accentate da tastiera
\usepackage[greek.ancient,latin,italian]{babel}
\languageattribute{latin}{classic}
\usepackage[a5paper]{geometry}
\usepackage{verse}\usepackage{imakeidx}
\makeindex[title=Lista dei primi versi,intoc,options= -s Fabio,columns=1]
\newcommand*\titoloinlista[1]{\index{#1@\textbf{#1}}}
\let\originalpoemtitle\poemtitle
\renewcommand\poemtitle[2][]{\def\tempA{#1}%
\ifx\tempA\empty
\originalpoemtitle{#2}\titoloinlista{#2}%
\else
\originalpoemtitle[#1]{#2}\titoloinlista{#1}%
\fi}\newcommand*\primoverso[1]{#1\index{#1@\textit{#1}}}
\newcommand*\indexdots{\leavevmode\hskip.5em\null\nobreak \xleaders\hbox to 0.3em{\hss$\scriptstyle.$\hss}\hfill\ignorespaces}
\usepackage{kantlipsum}% Per generare testo fasullo
\usepackage[automake,nogroupskip,section=section]{glossaries-extra}
% modifica i riferimenti di pagina formattandoli con le parentesi, e riducendo
% il carattere delle descrizioni.
\newglossarystyle{mylist}{%
\setglossarystyle{list}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
\renewcommand*{\glossentry}[2]{%
\item[\glsentryitem{##1}%
\glstarget{##1}{\glossentryname{##1}}]%
\glspostdescription\space \small{(\textit{Pag. ##2}): }%
\footnotesize{\glossentrydesc{##1}} }%
}
%\makenoidxglossaries
\glsaddall % sistema i numeri di pagina per i riferimenti incrociati dei
% glossari\renewcommand{\poemtoc}{subsection}
%\input{VociGlossario}
\makeglossaries\newglossaryentry{Roselle}{name=Roselle,description={nome femminile plurale}}
% Non so se quello che segue ti serve ancora; direi di no.
\makeatletter
\newcommand{\listofverse}[1]{%
\chapter{Lista dei primi versi}%
\@starttoc{lov}}
\newcommand{\l@verse}{\@dottedtocline{1}{\z@}{2.3em}}
\newcommand{\listverse}[1]{%
\csname phantomsection\endcsname
\addcontentsline{lov}{verse}{#1}%
#1}
\makeatother\begin{document}
\pagestyle{plain}
% Decommentare se si vogliono mettere delle cose nella front matter
%\frontmatter
%\listofverse\mainmatter
\chapter{Testo kantiano fasullo}
\kant[1-3]\newpage
\poemtitle {Senza luna la quiete}%\listverse{Senza la luna quiete}
%\titoloinlista{Senza luna la quiete}
\settowidth{\versewidth}{intrecciate da pollini azzurri.}
\begin{verse}[\versewidth]
\primoverso{Nel mezzo del cammin di nostra vita}\\
mi ritrovai in una selva oscura
\end{verse}\newpage
\poemtitle[Rosselle]{\gls{Roselle}}
\settowidth{\versewidth}{profonde striature}
\begin{verse}[\versewidth]
\primoverso{Con tre frecce}\\
piantate nel petto
\end{verse}\newpage
\settowidth{\versewidth}{Bla bla bla bla bla bla}
\begin{verse}
\poemtitle{Pianto antico}
\primoverso{L'albero a cui tendevi}\\
la pargoletta mano
\end{verse}\backmatter
% Impostazioni per stampare l'indice dei primi versi e dei titoli delle poesie.
\indexprologue{Le voci in nero sono i titoli delle poesie; le voci in corsivo sono i primi versi di ciascuna poesia.}
\printindex\newpage
\printglossary
\end{document}`
Come vedi dall’esempio il comando \poemtitle è stato ridefinito in modo che metta nell’indice dei primi versi e dei titoli la stringa opzionale del suo comando, invece il nuovo comando \primoverso usa il suo argomento sia per comporre il primo verso, sia per inviarlo direttamente all’indice dei primi versi.Per pura combinazione gli esempi che ho creato, alfabeticamente sono ordinati con i primi versi prima di tutti i titoli., ma è un puro caso; presi tutti assieme sono in ordine alfabetico. Invece la frase che precede l’elenco dei primi versi e dei titoli è un prologo che si può usare solo ricorrendo al pacchetto imakeidx.
Se preferisci avere questo elenco in due colonne, nell’argomento facoltativo di \makeindex cambiane il valore; siccome scrivi in un foglio A5, la larghezza non è molta, quindi ti suggerisco di lasciare il numero delle colonne impostato a 1.
Inoltre: il file comincia con un ambiente filecontents; serve per trasferirti il file Fabio.ist che ho creato apposta per te. Poi cambiarne il nome, non l’estensione; ma non puoi usare lo stesso nome del tuo main file perché il nome del tuo main file con l’estensione .ist è già creato e usato da glossaries-extra. Dopo la prima esecuzione del mio esempio minimo compilabile (non è veramente minimo perché pur avendo aggiunto i pacchetti necessari, non ho tolto alcuni di quelli che avevi messo tu ma che non sono più necessari per il mio esempio minimo), quel pezzo di codice che va da [tt]\begin{filecontents}[/tt] a [tt]\end{filecontents}[/tt] non ti serve più e lo puoi commentare; tuttavia se non lo commenti non fa niente; in fondo non credo che tu compili il mio esempio più di una volta o due.
Leggi i commenti che ho inserito nel mio esempio.
Se ti domandi cosa vuol dire la definizione di \indexdots, quella è la riga che spinge il numero di pagina fino al margine destra della colonna di stampa e i puntini guidano l’occhio dalla parte testuale fino al numero della pagina. se ti domandi che cosa significhi \xleaders bisogna che vada a cercarne la definizione e la descrizione nella guida generale introduzione all’arte della composizione tipografica con LaTeX che puoi scaricare dalla sezione documentazione; siccome si tratta di un malloppone di circa 800 pagine, sfruttando i numerosi indici analitici, (specialmente il primo) e cercando nell’elenco alfabetico la parola xleaders. Se scarichi la versione in “volume unico” (invece di uno dei tre tomi disponibili come fale separati) le voci dell’indice analitico sono tutte “hyperlinkate” alle pagine del testo dove sono descritte. Quindi arrivi alla descrizione che ti serve in un batter d’occhio.
-
23 Settembre 2019 alle 6:04 #116449::
Eccellente codice, funziona benissimo, anche con i titoli che contengono i comandi per le voci di glossario.L’unica cosa che noto nel file .log, è quest’avvertenza: ” \PackageWarning{tocloft}{\string\@starttoc\space has already been redefined; tocloft bailing out.}”.
E’ apparsa solo oggi dopo l’implementazione del tuo codice (e dopo aver rimosso quello precedente, come da te indicato).Credo sia un problema veniale, ma a riguardo ti chiedo rassicurazioni.
-
23 Settembre 2019 alle 7:53 #116450::
Non ci sono problemi, ma se ti disturba controlla come hai modificato con tocloft il modo di scrivere gli indici generali.
Ovviamente a me non succede, perché nell’esempio minimo che ho costruito con i tuoi frammenti di codice, non c’era traccia di tocloft e di impostazioni eseguite con le sue funzionalità.
Comunque è solo un Warning, non è un avviso d’errore. Sostanzialmente dice che tocloft non interviene su ciò che hai già modificato per altra via.
-
24 Settembre 2019 alle 8:48 #116451
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.