- Questo topic ha 14 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 13 anni, 11 mesi fa da
OldClaudio.
-
CreatoreTopic
-
17 Settembre 2012 alle 8:01 #78676::
Buongiorno a tutti,
sto cercando di utilizzare imakeidx e vorrei sapere se è possibile ottenere in maniera automatica la segnalazione delle occorrenza in nota; se il nome dovesse apparire in nota (anche qualora si trattasse di una citazione bibliografica), nell’Indice questa entry dovrebbe avere la forma:Tizio, Rossi, 8n
Enrico mi aveva suggerito questo codice,
`
\makeatletter
\let\orig@@index\index
\newcommand\nindex[1]{\orig@@index{#1|innota}}
\newcommand\innota[1]{#1n}
\usepackage{etoolbox}
\patchcmd{\scr@saved@footnotetext}{\reset@font}{\let\index\nindex\reset@font}{}{}
\makeatother
`che però non sembra funzionare con imakeidx.
Grazie in anticipo!
A presto,
Matteo
-
CreatoreTopic
-
AutoreRisposte
-
-
17 Settembre 2012 alle 9:40 #78677::
teomat” post=77743Buongiorno a tutti,
sto cercando di utilizzare imakeidx e vorrei sapere se è possibile ottenere in maniera automatica la segnalazione delle occorrenza in nota; se il nome dovesse apparire in nota (anche qualora si trattasse di una citazione bibliografica), nell’Indice questa entry dovrebbe avere la forma:Tizio, Rossi, 8n
Enrico mi aveva suggerito questo codice,
`
\makeatletter
\let\orig@@index\index
\newcommand\nindex[1]{\orig@@index{#1|innota}}
\newcommand\innota[1]{#1n}
\usepackage{etoolbox}
\patchcmd{\scr@saved@footnotetext}{\reset@font}{\let\index\nindex\reset@font}{}{}
\makeatother
`che però non sembra funzionare con imakeidx.
Grazie in anticipo!
A presto,
MatteoSe funziona con makeidx dovrebbe funzionare anche con imakeidx purché tu usi
`\usepackage{letltxmacro}\LetLtxMacro\orig@@index\index`
Ciao
Enrico
-
17 Settembre 2012 alle 10:12 #78678::
Non credo di aver capito, poiché il codice che mi hai indicato non sembra funzionare…Questo è un esempio minimo
`
% !TEX encoding = UTF-8
% !TEX program = xelatex
\documentclass[book]{combine}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{italian}
\usepackage{lipsum,combinet}%%%%%%%%%%%%%
%Indice analitico
\usepackage[]{imakeidx}
\makeindex[title=Indice dei nomi]%%%%%%%%%%%%%%%%%%%%%%%%
%BIBLIOGRAFIA
%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[backend=biber,style=philosophy-verbose,scauthors=true, latinemph=true, publocformat=locpubyear, inbeforejournal=true,annotation=true, volumeformat=romansc,origfields=edorig,origfieldsformat=parens,commacit=true,indexing,hyperref,backref]{biblatex}
\usepackage[babel,italian=guillemets]{csquotes}
\addbibresource{bibliografia.bib}
%%%%%%%%%%%%%%%%%%%%%%%%\usepackage{letltxmacro}
\makeatletter
\LetLtxMacro\orig@@index\index
\let\orig@@index\index
\newcommand\nindex[1]{\orig@@index{#1|innota}}
\newcommand\innota[1]{#1n}
\usepackage{etoolbox}
\patchcmd{\scr@saved@footnotetext}{\reset@font}{\let\index\nindex\reset@font}{}{}
\makeatother\begin{document}
\emptyAtBeginDocument
\begin{papers}
\section{Prova}
Prova\footcite{albonico:ordine}.
\lipsum
Prova\footnote{Nota di prova; \cite{bembo:donnini}.}
\end{papers}
\printbibliography
\printindex
\end{document}
`e questo il file bibliografico:
`
@BOOK{albonico:ordine,
title = {Ordine e numero},
publisher = {Edizioni dell'Orso},
year = {2006},
author = {Albonico, Simone},
location = {Alessandria},
owner = {matteo},
subtitle = {Studi sul libro di poesia e le raccolte poetiche nel Cinquecento},
timestamp = {2011.09.08}
}@BOOK{bembo:donnini,
title = {Le rime},
publisher = {Salerno},
year = {2008},
editor = {Donnini, Andrea},
author = {Bembo, Pietro},
location = {Roma},
owner = {matteo},
timestamp = {2012.03.14},
volumes = {2}
}
`L’indice dei nomi dovrebbe, nei desideri, essere così composto:
Albonico, Simone, 1n, 3
Bembo, Pietro 2n, 3
Donnini, Andrea 2n, 3invece non c’è traccia delle `n’ e, in più, il nome di Donnini non viene riconosciuto nella nota a p. 2.
Dove sbaglio?
Grazie ancora,
Matteo
-
17 Settembre 2012 alle 10:23 #78679::
Mi pare che sbagli domanda:il problema non è makeidx o imakeidx; il problema è la bibliografia, direi. O meglio, come fa l’indice analitico a sapere che \cite deve anche mettere qualcosa nell’indice analitico?
Mi parrebbe che se tu scrivessi`Prova\footnote{Nota di prova; \cite{bembo:donnini}\index{Donnini, Andrea}.}` forse ti potrebbe apparire l’informazione corretta anche nell’indice analitico. All’occorrenza potresti ridefinire \cite, in modo che se si trova in nota produca anche l’entri per l’indice. io non saprei come fare e non ci penserei mai a farlo in una situazione reale; ma quello che scrivo io è evidentemente di natura diversa da quello che stai scrivendo, quindi per te potrebbe essere importante, mentre per me sarebbe inutile.
-
17 Settembre 2012 alle 10:41 #78680::
Non saprei, mi sembra che il problema non sia la bibliografia.Faccio un esempio; nella mia tesi di dottorato:
`
\documentclass[10pt,a4paper,twoside,openright,titlepage,headinclude,footinclude,BCOR5mm,numbers=noenddot,cleardoublepage=empty,
tablecaptionabove,abstracton,parts]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[polutonikogreek,italian]{babel}
\usepackage{indentfirst,changepage,graphicx,subfig,lipsum,mparhack,fixltx2e,relsize,appendix,makeidx,multicol,enumitem}
\usepackage[eulerchapternumbers,subfig,beramono,pdfspacing]{classicthesis}
\usepackage{arsclassica}\usepackage[backend=bibtex,style=philosophy-verbose,scauthors=true, latinemph=true, publocformat=locpubyear, inbeforejournal=true,annotation=true, volumeformat=romansc,origfields=edorig,origfieldsformat=parens,commacit=true,indexing,hyperref,backref]{biblatex}
\usepackage[babel,italian=guillemets]{csquotes}
\bibliography{bibliografia}\makeindex
\makeatletter
\let\orig@@index\index
\newcommand\nindex[1]{\orig@@index{#1|innota}}
\newcommand\innota[1]{#1\textcolor{RoyalBlue}{n}}
\usepackage{etoolbox}
\patchcmd{\scr@saved@footnotetext}{\reset@font}{\let\index\nindex\reset@font}{}{}
\makeatother\begin{document}
\section{Prova}
Prova\footcite{albonico:ordine}.
\lipsum
Prova\footnote{Nota di prova; \cite{bembo:donnini}.}
\printbibliography
\printindex
\end{document}
`con la stessa base bibliografica che riportavo sopra, ottengo questo Indice analitico:
Albonico, Simone, 1n, 3
Bembo, Pietro, 2n, 3
Donnini, Andrea, 3È quasi perfetto, nel senso che manca solo `2n’ a Donnini, ma, trattandosi di un curatore, basterebbe inserire `a mano’ \index{nome} all’occorrenza.
Perché con pdfLaTeX+makeindex questo esempio funziona e quell’altro (XeLaTeX+imakeidx) no?
Mi sfugge qualcosa…A presto,
Matteo
-
17 Settembre 2012 alle 11:10 #78681::
teomat” post=77760Non credo di aver capito, poiché il codice che mi hai indicato non sembra funzionare…
Questo è un esempio minimo
`
% !TEX encoding = UTF-8
% !TEX program = xelatex
\documentclass[book]{combine}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{italian}
\usepackage{lipsum,combinet}%%%%%%%%%%%%%
%Indice analitico
\usepackage[]{imakeidx}
\makeindex[title=Indice dei nomi]%%%%%%%%%%%%%%%%%%%%%%%%
%BIBLIOGRAFIA
%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[backend=biber,style=philosophy-verbose,scauthors=true, latinemph=true, publocformat=locpubyear, inbeforejournal=true,annotation=true, volumeformat=romansc,origfields=edorig,origfieldsformat=parens,commacit=true,indexing,hyperref,backref]{biblatex}
\usepackage[babel,italian=guillemets]{csquotes}
\addbibresource{bibliografia.bib}
%%%%%%%%%%%%%%%%%%%%%%%%\usepackage{letltxmacro}
\makeatletter
\LetLtxMacro\orig@@index\index
\let\orig@@index\index
\newcommand\nindex[1]{\orig@@index{#1|innota}}
\newcommand\innota[1]{#1n}
\usepackage{etoolbox}
\patchcmd{\scr@saved@footnotetext}{\reset@font}{\let\index\nindex\reset@font}{}{}
\makeatother\begin{document}
\emptyAtBeginDocument
\begin{papers}
\section{Prova}
Prova\footcite{albonico:ordine}.
\lipsum
Prova\footnote{Nota di prova; \cite{bembo:donnini}.}
\end{papers}
\printbibliography
\printindex
\end{document}
`e questo il file bibliografico:
`
@BOOK{albonico:ordine,
title = {Ordine e numero},
publisher = {Edizioni dell'Orso},
year = {2006},
author = {Albonico, Simone},
location = {Alessandria},
owner = {matteo},
subtitle = {Studi sul libro di poesia e le raccolte poetiche nel Cinquecento},
timestamp = {2011.09.08}
}@BOOK{bembo:donnini,
title = {Le rime},
publisher = {Salerno},
year = {2008},
editor = {Donnini, Andrea},
author = {Bembo, Pietro},
location = {Roma},
owner = {matteo},
timestamp = {2012.03.14},
volumes = {2}
}
`L’indice dei nomi dovrebbe, nei desideri, essere così composto:
Albonico, Simone, 1n, 3
Bembo, Pietro 2n, 3
Donnini, Andrea 2n, 3invece non c’è traccia delle `n’ e, in più, il nome di Donnini non viene riconosciuto nella nota a p. 2.
Dove sbaglio?
Grazie ancora,
MatteoOvviamente il trucco andava bene per la classe scrbook, non per la classe combine che certamente non usa [tt]\scr@saved@footnotetext[/tt]. Cambialo in [tt]\@footnotetext[/tt]
Ciao
Enrico
-
17 Settembre 2012 alle 11:33 #78682::
Modificando il codice, il trucco funziona nuovamente: grazie.Ma c’è un ulteriore e più grave problema: temo che combine e imakeidx siano incompatibili:
si prenda questo esempio:
`
% !TEX encoding = UTF-8
% !TEX program = xelatex
\documentclass[book]{combine}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{italian}
\usepackage{emptypage}
\usepackage{lipsum,combinet}%%%%%%%%%%%%%
%Indice analitico
\usepackage{imakeidx}
\makeindex[title=Indice dei nomi]%%%%%%%%%%%%%%%%%%%%%%%%
%BIBLIOGRAFIA
%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[backend=biber,style=philosophy-verbose,scauthors=true, latinemph=true, publocformat=locpubyear, inbeforejournal=true,annotation=true, volumeformat=romansc,origfields=edorig,origfieldsformat=parens,commacit=true,indexing,hyperref,backref]{biblatex}
\usepackage[babel,italian=guillemets]{csquotes}
\addbibresource{bibliografia.bib}
%%%%%%%%%%%%%%%%%%%%%%%%\usepackage{letltxmacro}
\makeatletter
\LetLtxMacro\orig@@index\index
\let\orig@@index\index
\newcommand\nindex[1]{\orig@@index{#1|innota}}
\newcommand\innota[1]{#1n}
\usepackage{etoolbox}
\patchcmd{\@footnotetext}{\reset@font}{\let\index\nindex\reset@font}{}{}
\makeatother\begin{document}
\emptyAtBeginDocument
\begin{papers}
\import{prova}
\end{papers}
\printbibliography
\printindex
\end{document}
`e questo file prova.tex (il file bibliografico è il solito)
`
% !TEX encoding = UTF-8
% !TEX program = xelatex\documentclass{book}
\title{Titolo del primo intervento}
\author{Sempronio Rossi}
\date{ }
\begin{document}
\maketitle
Prova\footcite{albonico:ordine}.Prova \index{Tizio, Rossi}.
\lipsum
Prova\footnote{Nota di prova; \cite{bembo:donnini}.}
\end{document}
`l’Indice dei nomi non solo non registra le occorrenze in nota, ma non lemmatizza neppure Tizio, Rossi, benché sia presente il comando \index{Tizio, Rossi}.
Esiste davvero questa incompatibilità, oppure non mi sono accorto di qualcosa?A presto,
Matteo
-
17 Settembre 2012 alle 13:27 #78683::
teomat” post=77771… l’Indice dei nomi non solo non registra le occorrenze in nota, ma non lemmatizza neppure Tizio, Rossi, benché sia presente il comando \index{Tizio, Rossi}.
Esiste davvero questa incompatibilità, oppure non mi sono accorto di qualcosa?Non mi stupisce: combine cambia [tt]\jobname[/tt]. Ci penso.
Ciao
Enrico
-
17 Settembre 2012 alle 13:50 #78684
-
17 Settembre 2012 alle 13:51 #78685::
egreg9″ post=77776
… l’Indice dei nomi non solo non registra le occorrenze in nota, ma non lemmatizza neppure Tizio, Rossi, benché sia presente il comando \index{Tizio, Rossi}.
Esiste davvero questa incompatibilità, oppure non mi sono accorto di qualcosa?Non mi stupisce: combine cambia [tt]\jobname[/tt]. Ci penso.
Ciao
EnricoHo una soluzione. Ma richiede un po’ di lavoro su [tt]imakeidx.sty[/tt]. Copiatelo nella cartella di lavoro e aprilo. Cambia
`\def\imki@name{\jobname}`
in
`\edef\imki@name{\jobname}`
e tutte le occorrenze successive di [tt]\jobname[/tt] in [tt]\imki@name[/tt]. Questo dovrebbe sconfiggere l’idea malsana di combine. 🙂 Ovviamente non c’è speranza di avere indici diversi per ciascun contributo, ma non penso ti servano.Ciao
Enrico
-
18 Settembre 2012 alle 7:24 #78686::
Ovviamente funziona :D!
Ancora complimenti ad Enrico.Riassumendo il problema e la soluzione:
-)si vuole che i campi delle citazioni bibliografiche (author) presenti nelle note al piede vengano indicizzate con una `n’ dopo il numero della pagina; sia per le citazioni ottenute con \footcite, sia per quelle create con un \cite all’interno della \footnote;
-)si vuole che i comandi \index{} inseriti all’interno delle note al piede presentino la `n’ dopo il numero della pagina.Soluzioni (tutte opera di Enrico):
a) classe scrbook (arsclassica) – utilizzando makeindex:
`
\makeindex
\makeatletter
\let\orig@@index\index
\newcommand\nindex[1]{\orig@@index{#1|innota}}
\newcommand\innota[1]{#1\textcolor{RoyalBlue}{n}}
\usepackage{etoolbox}
\patchcmd{\scr@saved@footnotetext}{\reset@font}{\let\index\nindex\reset@font}{}{}
\makeatother
`b) utilizzando imakeidx con classe book:
`
\usepackage{letltxmacro}
\makeatletter
\LetLtxMacro\orig@@index\index
\let\orig@@index\index
\newcommand\nindex[1]{\orig@@index{#1|innota}}
\newcommand\innota[1]{#1n}
\usepackage{etoolbox}
\patchcmd{\@footnotetext}{\reset@font}{\let\index\nindex\reset@font}{}{}
\makeatother
`c) utilizzando imakeidx con la classe combine: stessa `magia’ appena riportata, ma occorre modificare il file imakeidx.sty (copiandolo nella cartella di lavoro) come segue
i)\def\imki@name{\jobname} –> \edef\imki@name{\jobname} (linea 69 di imakeidx.sty)
ii) \jobname –> \imki@name (alle linee 133, 143, 147, 240, 244, 327, 336, 347)Grazie ancora!
A presto,
Matteo
-
19 Settembre 2012 alle 7:08 #78687::
Devo, purtroppo, riaprire questa discussione.Il responsabile è il pacchetto ledmac:
Questo codice funziona:
`
% !TEX encoding = UTF-8
% !TEX program = xelatex
\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{italian}
%\usepackage{ledmac}\usepackage{imakeidx}
\makeindex[title=Indice dei nomi]
\usepackage{letltxmacro}
\makeatletter
\LetLtxMacro\orig@@index\index
\let\orig@@index\index
\newcommand\nindex[1]{\orig@@index{#1|innota}}
\newcommand\innota[1]{#1\textit{n}}
\usepackage{etoolbox}
\patchcmd{\@footnotetext}{\reset@font}{\let\index\nindex\reset@font}{}{}
\makeatother\usepackage[backend=biber,style=philosophy-verbose,scauthors=true, latinemph=true, publocformat=locpubyear, inbeforejournal=true,annotation=true, volumeformat=romansc,origfields=edorig,origfieldsformat=parens,commacit=true,indexing,hyperref,backref]{biblatex}
\usepackage[babel,italian=guillemets]{csquotes}
\addbibresource{bibliografia.bib}\begin{document}
Prova\footcite{bembo:donnini}
\printbibliography
\printindex
\end{document}
`il file bibliografico è:
`@BOOK{bembo:donnini,
title = {Le rime},
publisher = {Salerno},
year = {2008},
editor = {Donnini, Andrea},
author = {Bembo, Pietro},
location = {Roma},
owner = {matteo},
timestamp = {2012.03.14},
volumes = {2}
}
`Se, però, tolgo il commento a ledmac la magia non funziona più…ci deve essere un conflitto tra pacchetti, ma non saprei come risolverlo.
Grazie in anticipo 😳
A presto,
Matteo
-
19 Settembre 2012 alle 7:29 #78688::
teomat” post=77867Devo, purtroppo, riaprire questa discussione.
Il responsabile è il pacchetto ledmac:
Questo codice funziona:
`
% !TEX encoding = UTF-8
% !TEX program = xelatex
\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{italian}
%\usepackage{ledmac}\usepackage{imakeidx}
\makeindex[title=Indice dei nomi]
\usepackage{letltxmacro}
\makeatletter
\LetLtxMacro\orig@@index\index
\let\orig@@index\index
\newcommand\nindex[1]{\orig@@index{#1|innota}}
\newcommand\innota[1]{#1\textit{n}}
\usepackage{etoolbox}
\patchcmd{\@footnotetext}{\reset@font}{\let\index\nindex\reset@font}{}{}
\makeatother\usepackage[backend=biber,style=philosophy-verbose,scauthors=true, latinemph=true, publocformat=locpubyear, inbeforejournal=true,annotation=true, volumeformat=romansc,origfields=edorig,origfieldsformat=parens,commacit=true,indexing,hyperref,backref]{biblatex}
\usepackage[babel,italian=guillemets]{csquotes}
\addbibresource{bibliografia.bib}\begin{document}
Prova\footcite{bembo:donnini}
\printbibliography
\printindex
\end{document}
`il file bibliografico è:
`@BOOK{bembo:donnini,
title = {Le rime},
publisher = {Salerno},
year = {2008},
editor = {Donnini, Andrea},
author = {Bembo, Pietro},
location = {Roma},
owner = {matteo},
timestamp = {2012.03.14},
volumes = {2}
}
`Se, però, tolgo il commento a ledmac la magia non funziona più…ci deve essere un conflitto tra pacchetti, ma non saprei come risolverlo.
Grazie in anticipo 😳
A presto,
MatteoSolito problema: come con scrbook occorreva un patch diverso, anche con ledmac; invece della riga [tt]\patchcmd…[/tt] scrivi
`\AtBeginDocument{
\pretocmd\@footnotetext{\let\index\nindex}{}{}
}`
Dovrebbe funzionare sia con sia senza ledmacCiao
Enrico
-
19 Settembre 2012 alle 7:39 #78689
-
27 Settembre 2012 alle 8:47 #78690::
Riprendo questa discussione perché ho trovato che i suggerimenti dati in merito alla compatibilità con il pacchetto combine, che ha portato a definire \imki@name con il valore espanso di \jobname; e di usare questo comando in diverse altre posizioni del file.Ho collaudato al cosa e funzionava nei test che ho fatto, tanto che ho apportato questa modifica al sorgente di imakidx che ora si trova in rete con la modifica attiva.
Fin qui tutto bene, salvo che ho scoperto che se si usa l’opzione splitindex non funziona più niente. Se si dispone della distribuzione del sistema TeX aggiornata, chiunque può sperimentare il mal fuzionamento con un piccolo file di questo genere:`\documentclass{article}
\usepackage[splitindex
%,noautomatic
]{imakeidx}
\makeindex[name=comandi,title=Indice dei comandi]
\makeindex[name=nomi,title=Indice dei nomi]\begin{document}
\index[comandi]{start} start
\index[nomi]{Garibaldi, Giuseppe} Giuseppe Garibaldi\printindex[comandi]
\printindex[nomi]
\end{document}`Il risultato è che se il piccolo file suddetto è salvato con il nome foo.tex, non viene creato il file unico foo.idx, ma vien creato il file comandi.idx; non basta che il nome sia sbagliato ǹche il contenuto è sbagliato perché split index non estrae i file gisuti per comporre i due indici
Nel file di prova ho commentato la riga con l’opzione noautomatic; che si lasci il commento e si lanci splitindex a mano, oppure che si tolga il commento e si lasci fare al programma imakeidx il risultato è lo stesso: i nomi e i contenuti sono errati.
La causa è sempre quella definizione espansa e la sostituzione di quel comando dappertutto dove prima c’`era scritto \jobname. Ora visto che quella definizione espansa ci vuole per curare l’incompatibilità con Combine, e che dove \jobname è stato sostituito dalla definizione espansa, talvolta bisogna lasciare la sostituzione e talvolta bisogna tornare a \jobnmae o a qualcosa davvero equivalente a \jobname (per esempio un’altra definizione espansa fatta al momento giusto, cioè subito dopo aver impostato le opzioni di imakeidx, caricato prima di combine) ma non riesco a trovare i punti giusti. qualcuno può provare a vedere a mente fredda se ci riesce? Il file imakeidx da modificare/correggere è in texmf-distr/tex/latex/imakeidx/
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.