- Questo topic ha 20 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 9 anni, 4 mesi fa da
OldClaudio.
-
CreatoreTopic
-
8 Maggio 2017 alle 12:12 #110414
-
CreatoreTopic
-
AutoreRisposte
-
-
8 Maggio 2017 alle 20:35 #110415
-
10 Maggio 2017 alle 11:46 #110416::
Ho cercato nel manuale “The package imakeidx” di Enrico Gregorio come configurare gli indici come sezioni ma nonostante tutti i tentativi non ci riesco. Allego un esempio semplificato nella speranza che, se riesco a capire perché non funziona, possa estenderlo al testo vero che non ho messo perché il preambolo è lungo e complicato. S
Il codice è il seguente. Compilo in PDFLAtex. Con piccole modifiche è l’esempio preso dal manuale:
`
\documentclass[a4paper,11pt]{book}
\usepackage{imakeidx}
\makeindex[name=A,title=Indice A]
\makeindex[name=B,title=Indice B]
\makeindex
\indexsetup{level=\section*,toclevel=section,noclearpage}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[italian,english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{geometry}\begin{document}
In this way the index is typeset\index[A]{typeset} as a “section”\index[A]{section}, not as a “chapter”\index{chpater}, in one column mode within the two column\index[A]{column} document\index[A]{document} style; the indicated prologue\index{prologue} is typeset between the index title “Index of places” and the start of the index proper.
\printindex
\printindex[A]
\printindex
\end{document}
`
Grazie dell’aiuto.
-
10 Maggio 2017 alle 18:17 #110417::
Compila questo EMC:`% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = pdflatex\documentclass[a4paper,11pt]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[italian,english]{babel}
\usepackage[utf8]{inputenc}\usepackage{imakeidx}
\makeindex[name=A,title=Indice A]
\makeindex[name=B,title=Indice B]
\makeindex
\indexsetup{level=\section*,toclevel=section,noclearpage}
\usepackage{geometry}\begin{document}
In this way the index is typeset\index[A]{typeset} as a
“section”\index[A]{section}, not as a “chapter”\index{chpater},
in one column mode within the two column\index[A]{column}
document\index[A]{document} style; the indicated
prologue\index{prologue} is typeset between the index title
“Index of places” and the start of the index proper.% Gli indici analitici vanno nella back matter
\backmatter
\chapter{Indices}
\printindex[A]
\printindex
\end{document}`Il fatto che abbia spostato alcune righe più in alto è una mia fisima, ma non guasta dire al programma che cosa comporre, e in particolare con che codifica è scritto il file sorgente e con quali font vuoi comporre, e in quali lingue componi; poi specifichi come vuoi comporre. Spesso l’ordine di queste istruzioni non è importante, ma talvolta lo è.
La cosa vera, invece è che ho sostituito il tuo promo \printindex con un titolo di capitolo nella back matter; tale titolo non viene numerato nella back matter, ma se avessi composto l’indice generale, vedresti che vi compare anche il capitolo Indices.
Testa questo EMC e vedrai che il risultato è quello che la documentazione di imakeidx promette di realizzare.
-
10 Maggio 2017 alle 19:11 #110418
-
11 Maggio 2017 alle 7:49 #110419::
Ho esportato il tuo codice nel mio file e funziona benissimo: il secondo indice scorre immediatamente dopo la fine del primo indice così come desideravo.
Ora debbo risolvere alcuni problemi:
1) eliminare il titolo del secondo indice e ci sono riuscito inserendo `\renewcommand{\indexname}{}` prima del secondo indice;
2) Nella prima pagina del primo indice l’header è vuoto mentre nelle pagine successive compare quanto avevo previsto inserendo i comandi `\fancyhead[RE,LO]{Indice} ` e `\fancyhead[RO,LE]{\thepage}`
3) Vorrei che l’header della pagina nella quale inizia il secondo indice fosse uguale a quello delle pagine precedenti. Ho inserito `\fancyhead[RE,LO]{Indice} ` e `\fancyhead[RO,LE]{\thepage}` anche in testa al secondo indice ma non funziona.
Temo che il problema sia di `\documentclass[twoside,11pt,a4paper,]{book}` che prevede di default che nella prima pagina l’leader sia vuoto. Ammesso che questa sia la ragione c’è la possibilità di intervenire?
Grazie
-
11 Maggio 2017 alle 10:53 #110420::
Se hai due indici distinti e consecutivi, non capisco perché togli il titolo al secondo.
Siccome [tt]\chapter{Indici][/tt] inserisce la testaina solo nelle pagine pari, dopo questo comando inserisci [tt]\markboth{Indici}{Indici}[/tt] e tutte la pagine verranno intestate con la parola Indice, tranne quella dove inizia il capitolo Indici.Non usare i fancyhdr per cambiare le testatine.
-
11 Maggio 2017 alle 18:01 #110421::
Purtroppo non funziona, ma è possibile che io non sia stato chiaro. Nella testatina delle pagine degli indici compaiono a destra e a sinistra, “numero di pagina” e “Indice”, tranne che nella prima pagina e nella pagina dove comincia il secondo indice dove le testatine sono vuote. Io vorrei che nella prima pagina del secondo indice comparissero “numero di pagina” e “Indice”.
Mi consigli di non usare fancyhdr e, in effetti, non sono molto soddisfatto. Cosa consigli? \mark… {…}{…}? A me non ha funzionato. Se lo uso debbo cancellare fancyhdr. E funziona con `\documentclass[twoside,11pt,a4paper,]{book}`. Grazie
-
12 Maggio 2017 alle 6:32 #110422
-
12 Maggio 2017 alle 10:04 #110423::
Ho provato con \markboth invece di fancyhdr ma evidentemente mi sfugge qualcosa sul funzionamento di \markboth. Ho letto anche il messaggio che avevi inserito 4 anni fa in risposta a una richiesta ma non ne vengo a capo.
Quando, seguendo la tua indicazione metto insieme due indici (senza interruzione di colonna e di pagina), nella pagina dove inizia il secondo indice la testatina è vuota e invece vorrei che essa fosse identica a tutte la altre testatine dell’indice.
Ho provato a inserire \markboth … ma il comando viene ignorato.
Cercherò di aggirare il problema in qualche modo.
-
12 Maggio 2017 alle 12:51 #110424::
Sto cercando di crearmi un esempio minimo compilabile, con molte voci distinte di indice, perché mi sembra di notare delle incongruenze.Una cosa è certa: certe impostazioni di setup per imakeidx non si possono fare quando si usa fancyhdr. Non è detto che questo abbia a che fare con il tuo problema. Io però sto cercando di usare solo la classe book, senza personalizzazioni di nessun genere, tranne quelle che servno per trovarti una soluzione.
-
12 Maggio 2017 alle 13:58 #110425::
Ho bisogno di un po’ di tempo per preparare un esempio minimo compilabile estraendolo dal mio file che è molto lungo e ha oltre 2000 indicizzazioni distribuite su due indici. E anche il preamble un po’ per mia inesperienza e un po’ per la complessità del testo è molto lungo e sicuramente ridondante. Appena pronto te le invio.
-
12 Maggio 2017 alle 14:36 #110426::
No, non ti preoccupare di mettere insieme tutto il tuo preambolo e tutti i tuoi indici.Abbi solo un po di pazienza perché mi occorre del tempo per analizzare i problema; l’ho già replicato, quindi so in che cosa consiste. Non ho ancora trovato la causa. Ho il sospetto che imakeidx ci metta del suo, ma non ne sono affatto sicuro.
Se davvero imakeidx ci mettesse del suo, non credo che sarà semplice trovare la terapia.
-
12 Maggio 2017 alle 14:42 #110427
-
13 Maggio 2017 alle 5:11 #110428::
Grosso problema.Si ottiene il risultato voluto se fra le opzioni del \indexsetup si inserisce`\indexsetup{level=\section*,
toclevel=section,
noclearpage,
firstpagestyle=headings,
headers={Indici analitici}{Indici analitici}%
}`
In sostanza questo EMC funziona correttamente come vorresti tu (più o meno).`% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = pdflatex\documentclass[a4paper,11pt]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[english,italian]{babel}
\usepackage[utf8]{inputenc}\usepackage{kantlipsum}
\usepackage{imakeidx}
\makeindex[name=A,title=Indice A]
\makeindex[name=B,title=Indice B]
\makeindex
\indexsetup{level=\section*,
toclevel=section,
noclearpage,
firstpagestyle=headings,
headers={Indici analitici}{Indici analitici}%
}\usepackage{geometry}
\begin{document}
\frontmatter
\tableofcontents\mainmatter
\chapter{Riempimento kantiano}
\section{Sezione A}
\index[A]{colonna} \index[A]{sezione}
\index[A]{documento} \index[A]{stampare}
\kant[10-11]\section{Sezione B}
\index{capitolo}\index{prologo}
\kant[12-13]\backmatter
\chapter{Indici analitici}
\markboth{Indici analitici}{Indici analitici}
\printindex[A]
\section*{Riempitivo}
\kant[1-3]
\printindex
\section*{Altro riempitivo}
\kant[4-10]
\end{document}`Ma il problema è un altro; l’opzione firstpagestyle viene disabilitata se nel documento viene usato il pacchetto fancyhdr.
Temo che tu sia in un vicolo cieco, nel senso che sarebbe necessario ridefinire un buon numero di macro interne di imakeidx al fine di evitare quella “disabilitazione” e/o di inserire nel corpo delle definizioni dell’ambiente theindex (quello che effettivamente viene usato da LaTeX per comporre l’indice analitico) il comando \thispagestyle che è attivo anche quando l’indice è composto a livello di section. In sostanza bisognerebbe fare tali e tanti cambiamenti nell’intero pacchetto, che ne verrebbe fuori un pacchetto nuovo.
Se l’autore del pacchetto lo vuole fare, potrebbe lui stesso disabilitare quel “theispagestyle{imki@firstpagestyle}” quando il livello dell’indice è quello della sezione. Usare il pacchetto xpatch per eseguire questa modifica solo loclamente forse sarebbe un metodo, ma molto delicato.
Per ora ti ho detto qual è il problema e qual è la causa; la soluzione del rpoblema sarebbe semplice se non usassi fancyhdr.
Io provo a vedere che cosa riesco a fare con xpatch o etoolbox; se riesco ad ottenere qualche risultato te lo faccio sapere.
-
13 Maggio 2017 alle 5:23 #110429::
Grazie del tuo impegno a risolvere il problema. Come dici è per me troppo rischioso rinunciare a fancyhdr. Essendo poco esperto rischierei di trovarmi di fronte a difficoltà troppo grandi. Se trovi qualcosa di più semplice fammelo sapere. Nel frattempo io sto pensando a qualche artificio editoriale, ma dovrei intervenire dall’esterno sul pdf e la cosa non mi piace per niente.
-
13 Maggio 2017 alle 6:29 #110430
-
13 Maggio 2017 alle 8:10 #110431::
Grazie mille. In effetti il tuo esempio con il tuo codice funziona perfettamente e ho fatto male a non provarlo prima.
Dovrò comunque lavorarci su per inserirlo nel mio file. A un primo tentativo, dopo aver disabilitato i comandi di \fancyhdr, ho il solito problema con \markboth che non va mentre funziona perfettamente con il tuo esempio. Debbo un po’ studiarci su.
Un’ultima domanda il tuo codice si applica alla prima pagina di tutti i capitoli? Come posso fare se voglio applicarlo solo a un capitolo?
-
13 Maggio 2017 alle 8:16 #110432::
No, il mio codice è stato pensato solo per il capitolo degli indici analitici. Può dard=si che sia applicabile ad altri capitoli, ma sostanzialmente, direi, solo a quelli della backmatter, come il capitolo della bibliografia. Ovviamante “mutatis mutandis”.
Per i capitoli della main matter, dovrebbero essere sufficienti le impostazioni che hai già fatto con il pacchetto fancyhdr.
-
13 Maggio 2017 alle 8:27 #110433
-
14 Maggio 2017 alle 11:50 #110434::
Togli \markboth dopo il comando \chapter{Indici analitici} perché non serve a nulla; ogni volta che compini un indice (a livello di sezione) esso imposta le testatine con l’opzione di headers={…}{…}.Il codice modificato da imakeidx dell’ambiente theindex emette lui stesso un \markboth che sovrascrive l’eventuale impostazione del tuo \markboth.
Tieni presente che \markboth non va in conflitto con niente; è l’ambiente theindex che rende vano il comando che l’utente dà, perché, come ho detto, ne sovrascrive le impostazioni.
Forse ci sarebbe da domandarsi che cosa succede a definire i sotto indici come \section, invece di \section*. Certamnte in questo caso i titoli dei singoli idici parziali andrebbero nell’indice generale, ma non so se è questo quello che vuoi.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.