Indice

  • Creatore
    Topic
  • #114113
    Up
    0
    Down
    ::


    Nell’Indice (che ho rinominato “Indice dei nomi e dei soggetti” ) per un nome ricorrente centinaia di volte vorrei che nell’Indice comparisse “Tizio Caio, passim”. Uso imakeidx. Il mio problema è che inserendo alla prima comparsa di Tizio Caio \index{Tizio Caio!passim} mi compare la virgola dopo passim e il numero di pagina. Vorrei che la virgola e il numero di pagina non comparissero. Ho letto e riletto il manuale di imakeidx ma non ne sono venuto a capo. L’unica soluzione sembrerebbe quella di intervenire sul file .ind ma non mi entusiasma.
    C’è qualche altra soluzione?
    Un’atra possibilità sarebbe quella di usare \index{Tizio Caio|see passim}. che mi da’ nell’Indice “Tizio Caio vedi passim” senza il numero di pagina. Se riuscissi a eliminare “vedi” andrebbe bene ma non ci riesco.

Visualizzazione 15 filoni di risposte
  • Autore
    Risposte
    • #114114
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Il pacchetto imakeidx non c’entra niente, semplicemente si occupa di eseguire il comando del sistema TeX makeindiex, in mdo da avere l’indice analitico aggiornato sempre ad ogni compilazione del file sorgente, senza dovere rilanciare pdfLaTeX (o XeLaTeX o LuaLaTeX) almeno due volte, come succederebbe senza usare il pacchetto.

        Le opzioni che passi a imakeidx servono solo a svolgere il compito suddetto, anche se, gestendo contemporaneamente diversi indici analitici, consente un certo numero di opzioni che modificano cose come il titolo dell’indice, non come le voci vi vengono riportate.

        So che fra le cose gestibili con gli indici analitici ci sono anche le parole chiave see e seealso che mi pare facciano al caso tuo, senza bisogno di ricorrere a passim.

        Tuttavia mi domando perché vuoi avere link automatici ad ogni istanza di \index relativo ad un dato nome, che si mandi ad una voce, dove non c’è scritto niente, se non passim, cioè “guarda la prima voce di questa lunga lista di nomi uguali”… Non entro nel merito, perché non conosco i dettagli del tuo caso, ma ti suggerisco, oltre a documentarti meglio su come comporre gli indici analitici, di ripensare al tuo problema che forse non è affrontato nel modo corretto. Ripeto, posso sbagliarmi, ma questa è l’impressino che ho avuto.

        Per documentarti ti suggerisco di dare da terminale il comando texdoc ind; ti si apre una finestra con un lungo documento scritto da diversi autori, il primo dei quali è Pehong Chen; il documento è stato aggiornato l’ultima volta nel 2014 da due altri autori molto competenti. Io lo considero un documento essenziale, non dico da conoscere a memoria, ma da tenere sempre presente e a portata di mouse ogni volta che si compone un indice analitico.

      • #114115
        Up
        0
        Down
        ::


        Grazie OldClaudio. Ora so che il pacchetto imakeidx non c’entra nulla e che è inutile girarci intorno. Hai ragione che potrei usare “see” e “seealso” ma come faccio a sostituire “vedi” che ne risulta nella versione italiana con un’altra stringa? Ho l’impressione che dovrebbe essere possibile. Il programma, infatti, sostituisce “see” con “vedi”. Non sarebbe possibile dire al programma di sostituire “see” con un’altra stringa almeno in un caso? Ammesso che sia possibile.

        Certamente la cosa migliore sarebbe quella di eliminare “tizio caio” seguito da passim dall’Indice. Ma il lettore che nell’Indice cerca “tizio caio” come può essere informato che “tizio caio” è citato centinaia di volte?

      • #114116
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          La cosa più semplice da fare per sostituire see e seealso , che sono definiti per babel e per polyglossia dalla lista di definizioni contenuta in “captionsitalian} è quello di inserire, dopo \begin{document}, i comandi`\addto{\captionsitalian}{%
          \renewcommand\seename{passim}
          \renewcommand\seealsoname{…}% di nuovo passim?, comunque quel che ti pare.
          }`

          Invece non capisco il problema del passim o vedi, che il lettore che consulta l’indice dei nomi non sa che troverebbe centinaia di volte.
          Se il documento è stampato non ha da cliccare. Va a cercare l’indice e trova Tizio Caio una volta sola, purché tu nel testo principale abbia indicato `Tizio Caio\index[nomi]{Tizio Caio}`Alla peggio, se hai indicato Tizio caio in cento volte in cento pagine diverse, nell’indice troverai
          Tizio Caio 5, 22, 31, 33, 40, 45, …, 273.
          Siccome questa mi pare un’idea assurda, a meno che tu non voglia mandare il lettore a consultare 100 pagine diverse, io suggerirei di usare il comando \index una volta solo, presumibilmente quella dove hai scritto qualcosa di interessante su Tizio Caio.
          In ogni caso un elenco di 100 numeri di pagina (indecenti, ma…) sarebbe meno indecente che il lettore trovasse

          Tizio Caio 22
          Tizio Caio passim
          Tizio Caio passim
          Tizio Caio passim

          Tizio Caio passim

          cento volte.

          In altre parole non mandare all’indice analitico informazioni che non servono a niente.

          Tieni presente che l’indice analitico non è ordinato per pagine, ma per nomi; vicino ad ogni “lemma” (nome nel tuo caso) compaiono i numeri dele pagine, ma la difficoltà di fare un indice dei nomi non è tanto quella di mandare le informazioni al programma che lo crea, quanto scegliere le informazioni da mandargli. Tizio Caio è uno solo, e deve comparire una sola voce Tizio Caio nell’indice dei nomi; se esistessero due Tizi Cai omonimi ma corrispondenti a persone distinte, dovresti trovare il modo di distinguerli con un aggettivo (per esempio aggiungendo gli appellativi il giovane o il vecchio il vecchio, scritti senza lettere maiuscole, visto che non fanno parte del loro vero nome).

          Se quel che ho detto non sta in piedi, vuol dire che non ho capito la tua necessità di usare passim. Tuttavia ti raccomando di ripensare bene a quello che vuoi fare con l’indice dei nomi.

        • #114117
          Up
          0
          Down
          ::


          Grazie OldClaudio, hai ragione. Metto

          \index{Tizio Caio \textit{passim}}

          solo una volta e il libro sarà stampato. Per questo ha senso. Ora proverò il tuo codice.

        • #114118
          Up
          0
          Down
          ::


          Scusa se ti disturbo ancora. Il codice funziona perfettamente ma mi sostituisce “vedi” con “passim” dappertutto. Ci sono, invece, molti casi nei quali uso |see in senso proprio e nell’Indice mi compare “vedi”. Sarebbe possibile trasformare “|see”m in passim solo per alcuni casi? Grazie

        • #114119
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Non vorrei ripetermi; ti ho detto che devi agire su \captionsitalian.

            Non guasterebbe nemmeno se leggessi la documentazione che ti ho indicato texdoc ind dove si spiega anche come usare see e seealso.

          • #114120
            Up
            0
            Down
            ::


            La soluzione corretta al tuo problema è definire un nuovo “incapsulatore” simile all’incapsulatore predefinito [tt]\see[/tt], ma distinto da esso. Nell’esempio che segue ne definisco due, chiamati, rispettivamente, [tt]\passimNN[/tt] (per «passim No Number») e [tt]\passimWN[/tt] (per «passim With Number»): il primo produce solo la parola «passim» in corsivo, ignorando il numero di pagina corrispondente al luogo dove è stato impartito il comando [tt]\index[/tt]; il secondo stampa tale numero di pagina seguito dalla medesima scritta; in entrambi i casi, la parola «passim» può essere modificata cambiando la definizione del comando [tt]\passimname[/tt].

            L’esempio non fa uso del pacchetto imakeidx in quanto irrilevante per la questione trattata.
            `
            % My standard header for TeX.SX answers:
            \documentclass[a4paper]{article} % To avoid confusion, let us explicitly
            % declare the paper format.

            \usepackage[T1]{fontenc} % Not always necessary, but recommended.
            % End of standard header. What follows pertains to the problem at hand.

            \usepackage[italian]{babel}
            \usepackage{makeidx}

            \newcommand*{\passimNN}[1]{\textit{\passimname}}
            \newcommand*{\passimWN}[1]{#1 \textit{\passimname}}
            \newcommand*{\passimname}{passim}

            \makeindex

            \begin{document}

            Tutti noi conosciamo bene la storia di \index{Thor, Arthur
            Uther|passimNN}A.~U. Thor che ha come protagonista \index{Drofnats, Revinu
            Jitis|passimWN}R.~J. Drofnats.

            % Verifica del funzionamento di “\see”:
            \index{Ooc@\”{O}\”{o}\c{c}|see{Drofnats, Revinu Jitis}}

            \printindex

            \end{document}
            `

            Ciao.


            Gustavo

          • #114121
            Up
            0
            Down
            ::


            Purtroppo non funziona. Potrebbe darsi che dipenda dal fatto che uso il pacchetto imakeindex? Il pacchetto makeindex sembra andare in conflitto con babel.
            Sto studiando il pacchetto captions come suggerito da Old Claudio ma finora non ne sono venuto a capo.

          • #114122
            Up
            0
            Down
            ::


            In che senso «non funziona»? Cosa succede esattamente? Hai provato a compilare il mio esempio così com’è e non ti compare l’indice analitico? Oppure hai provato a inserire (un adattamento de) il mio codice nel tuo e non compare la parola «passim»? Caro Pas, perdona la mia franchezza indubbiamente rude, ma se vuoi che ti aiutiamo devi «aiutarci ad aiutarti», e fornirci tutte le informazioni utili a capire qual è il problema che hai davanti; bada bene, tutte quelle utili e nessuna inutile; ti si chiede cioè lo sforzo di sgrossare preliminarmente il problema, al meglio del meglio delle tue possibilità, eliminando tutto ciò che è inessenziale e che non contribuisce a creare il problema stesso. Ti si chiede — ed è una delle prime regole del forum, e probabilmente quella su cui, non a caso, insistiamo di più — di preparare un Esempio Minimo Compilabile (E.M.C.) che illustri il tuo problema. Tu questo devi ancora farlo: fallo ora, perché solo così avremo un terreno oggettivo sul quale discutere. Un E.M.C. serve anche a dividerci i compiti e a capirci tra noi: chi ti aiuta a risolvere il problema sa che deve solo spiegarti come rendere funzionante il tuo E.M.C.; tu, che hai scritto l’E.M.C., dovrai poi sapere come ritrasformare la soluzione, che funziona nell’E.M.C., in una soluzione che funziona per il tuo caso reale.

            In attesa dei chiarimenti sollecitati, posso solo dare i seguenti due consigli:

            1. Hai provato a compilare il mio esempio così com’è e non ti compare l’indice analitico: ti è chiaro che, se non usi il pacchetto imakeidx, devi eseguire manualmente il programma [tt]makeindex[/tt] e poi ricompilare con [tt]pdflatex[/tt] almeno una volta? (In questo caso; nel caso di un documento reale, io ripeterei tutto il ciclo una seconda volta, perché in teoria, se all’indice generale viene aggiunta la voce corrispondente all’indice analitico, tutti i numeri di pagina potrebbero essere cambiati; ma io sono nevrotico. 😛 )
            2. Hai provato a inserire un (adattamento del) mio codice nel tuo e non compare la parola «passim»: prova a cancellare i file [tt].idx[/tt] e [tt].ind[/tt] e a ricompilare daccapo: che succede? Sei certo di compilare con l’opzione [tt]-shell-escape[/tt] abilitata?

            Comunque, prova a compilare (ripeto, con l’opzione [tt]-shell-escape[/tt] abilitata) il seguente E.M.C., il quale non è altro che il mio precedente esempio modificato per usare il pacchetto imakeidx e, di conseguenza, lanciare il comando [tt]makeindex[/tt] in automatico.
            `
            % My standard header for TeX.SX answers:
            \documentclass[a4paper]{article} % To avoid confusion, let us explicitly
            % declare the paper format.

            \usepackage[T1]{fontenc} % Not always necessary, but recommended.
            % End of standard header. What follows pertains to the problem at hand.

            \usepackage[italian]{babel}
            \usepackage[original]{imakeidx} % o anche senza “[original]”…

            \newcommand*{\passimNN}[1]{\textit{\passimname}}
            \newcommand*{\passimWN}[1]{#1 \textit{\passimname}}
            \newcommand*{\passimname}{passim}

            \makeindex

            \begin{document}

            Tutti noi conosciamo bene la storia di \index{Thor, Arthur
            Uther|passimNN}A.~U. Thor che ha come protagonista \index{Drofnats, Revinu
            Jitis|passimWN}R.~J. Drofnats.

            % Verifica del funzionamento di “\see”:
            \index{Ooc@\”{O}\”{o}\c{c}|see{Drofnats, Revinu Jitis}}

            \printindex

            \end{document}
            `
            Dovresti ottenere in uscita esattamente il contenuto del file PDF allegato. È così? Se non è così, cosa ottieni?

            Ciao.


            Gustavo

            Attachments:
            You must be logged in to view attached files.
          • #114123
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Per usare imakeidx con l’installazione TeXLive non è necessario specificare -shell-escape, perché makeidx è fra i programmi eseguibili consentiti. Con MiKTeX l’opzione dovrebbe essere –write18; non sono sicuro che MiKTeX abbia una lista di programmi consentiti, quindi l’opzione sarebbe necessaria.

              Il fatto che tu @Pas non specifichi nemmeno quale installazione del sistema TeX rende le cose ancora più difficili da indovinare.

            • #114124
              Up
              0
              Down
              ::


              Uso come editor texmaker su MAC, con sistema operativo 10.13.6 (17G65). Compilo (due volte) in pdflaex. Non sono molto pratico ed è possibile che le informazioni siano carenti. Comunque allego il preamble al mio documento.
              Il suggerimento dato da letteracdp funziona se elimino `\indexsetup{level=\section*,toclevel=section,noclearpage}` che per me è importante perchè vorrei che il titolo dell’Indice e la primo item dell’Indice andassero nella stessa pagina.
              Ho evitato di inserire molti altri pacchetti che non sono utili per il problema che pongo.
              Spero che le informazioni siano sufficienti.

              `\documentclass[twoside,11pt,a4paper,]{book}
              \usepackage[T1]{fontenc}
              \usepackage[utf8]{inputenc}
              \usepackage{amsmath}
              \usepackage{imakeidx}
              \usepackage{geometry}
              \geometry{a4paper,top=91mm,bottom=-55mm,left=48mm,right=48mm,}
              \oddsidemargin=52.9mm
              \evensidemargin=48mm
              \textheight=178mm
              \headsep=6mm
              \headheight=6mm
              \usepackage[arabic,greek,english,main=italian,french,german]{babel}
              \makeatletter
              \let\orig@makefnmark\@makefnmark
              \def\@makefnmark{\ifinner\hfill\fi\orig@makefnmark\ifinner\thinspace\fi}
              \setlength{\textwidth}{108mm}
              \let\footnotesize\small
              \usepackage{fancyhdr}
              \fancypagestyle{plain}
              \usepackage{imakeidx}
              \makeindex
              %\indexsetup{level=\section*,toclevel=section,noclearpage}
              \usepackage{indentfirst}
              \usepackage{multirow}
              \usepackage{siunitx}
              \sisetup{output-decimal-marker = {,}}

              \newcommand*{\passimNN}[1]{\textit{\passimname}}
              \newcommand*{\passimWN}[1]{#1 \textit{\passimname}}
              \newcommand*{\passimname}{passim}

              \begin{document}

              Tutti noi conosciamo bene la storia di \index{Thor, Arthur
              Uther|passimNN}A.~U. Thor che ha come protagonista \index{Drofnats, Revinu
              Jitis|passimWN}R.~J. Drofnats.

              \printindex
              \end{document}`

            • #114125
              Up
              0
              Down
              ::


              Scusa, ma ora vado veramente di fretta.

              Già meglio (:smile:); ma l’esempio che hai affisso contiene ancora molti pacchetti irrilevanti, manca un [tt]\makeatother[/tt], il comando [tt]\fancypagstyle[/tt] è usato in modo sbagliato 🙄 , non si capisce perché carichi geometry per poi ridefinire i parametri di impaginazione interni del LaTeX 😕 , imakeidx è caricato due volte… 😥 / 😛 Ma lasciamo stare. 😉

              Andiamo per approssimazioni successive: cominciamo dalla sostanza e poi passeremo ai dettagli e alle rifiniture. Prova a compilare questo:
              `
              \documentclass[a4paper]{book}
              \usepackage[T1]{fontenc}
              % \usepackage[utf8]{inputenc} % da aprile 2018 non piu` necessario
              % \usepackage{amsmath}
              \usepackage{geometry}
              \geometry{a4paper,top=91mm,bottom=-55mm,left=48mm,right=48mm,}
              \usepackage[italian]{babel}
              \usepackage{imakeidx}
              \makeindex[
              name=nameidx,
              title={Indice dei nomi}, % le graffe? Ho detto, sono nevrotico!
              columns=1,
              intoc
              ]
              \makeindex[
              name=numberidx,
              title={Indice dei numeri},
              columns=1,
              intoc
              ]
              \indexsetup{level=\section*,toclevel=section,noclearpage}
              \usepackage{indentfirst}

              \title{Passim}
              \author{Pas}

              \newcommand*{\passimNN}[1]{\textit{\passimname}}
              \newcommand*{\passimWN}[1]{#1 \textit{\passimname}}
              \newcommand*{\passimname}{passim}

              \begin{document}

              \maketitle

              \tableofcontents

              \chapter{Ricordi dal \TeX book}

              \section{Una vecchia storia}

              Tutti noi conosciamo bene la storia scritta da \index[nameidx]{Thor, Arthur
              Uther|passimNN}A.~U. Thor che ha come protagonista \index[nameidx]{Drofnats,
              Revinu Jitis|passimWN}R.~J. Drofnats.

              \section{Numeri}

              Nel \TeX book si parla di potenze di
              \index[numberidx]{due|passimNN}due~($2^{n}$) e di potenze di
              \index[numberidx]{dieci|passimWN}dieci~($10^{n}$).

              % Verifica del funzionamento di “\see”:
              \index[nameidx]{Ooc@\”{O}\”{o}\c{c}|see{Drofnats, Revinu Jitis}}
              \index[nameidx]{Derek, Bo|see{dieci (nell'\emph{Indice dei numeri})}}

              \chapter*{Indici}
              \addcontentsline{toc}{chapter}{Indici}
              \printindex[nameidx]
              \printindex[numberidx]

              \end{document}
              `
              Abbiamo fatto un passo avanti, oppure stiamo andando nella direzione sbagliata?

              Ciao.


              Gustavo

            • #114126
              Up
              0
              Down
              ::


              Purtroppo lo so che ho caricato un sacco di cose inutili ma non so come eliminare quelle che non mi servono. Potrei cancellare i pacchetti una volta e vedere l’effetto ma su un testo piuttosto lungo non me la sento di fare l’operazione. In ogni caso ti ringrazio perchè il tuo codice funziona perfettamente. Ora cerco di capire come integrarlo nel mio preamble. Grazie

            • #114127
              Up
              0
              Down
              ::

              Pas” post=114552[…] Ora cerco di capire come integrarlo nel mio preamble. […]

              Be’, in definitiva quello che dovesti fare si riduce a quanto segue:

              1. Aggiungere al preambolo le definizioni
                `
                \newcommand*{\passimNN}[1]{\textit{\passimname}}
                \newcommand*{\passimWN}[1]{#1 \textit{\passimname}}
                \newcommand*{\passimname}{passim}
                `
                Anzi, se prevedi di usare soltanto una delle due forme, puoi omettere la definizione relativa all’altra: per esempio, se decidi di usare soltanto la forma del “passim senza numero di pagina”, puoi omettere la definizione del comando [tt]\passimWN[/tt]; e viceversa.
              2. Supponiamo che il nome che compare ripetutamente sia R. J. Drofnats: se opti per la soluzione di indicare nell’indice dei nomi il numero della pagina dove il nome compare per la prima volta, seguito dalla parola «passim», inserirai il comando`\index[…]{Drofnats, Revinu Jitis|passimWN}`in corrispondenza, appunto, della prima menzione del nome.
              3. Se, invece, opti per la soluzione di scrivere nell’indice soltanto il nome seguito da «passim» (senza alcun numero di pagina), la cosa migliore da fare è aggiungere la linea di codice`\index[…]{Drofnats, Revinu Jitis|passimNN}`nello stesso punto dove impartisci i vari comandi relativi alle indicazioni «vedi…».

              Ciao.


              Gustavo

            • #114128
              Up
              0
              Down
              ::


              È quello che ho fatto e sono riuscito anche a evitare il problema di incompatibilità di `\indexsetup{level=\section*,toclevel=section,noclearpage}`. Sto cercando di capire come sfoltire il mio preamble ma trovo molte difficoltà. Ad es. tu dici che il package geometra è inutile ma non riesco a capire come sostituirlo. In ogni caso ti ringrazio perchè sono riuscito a risolvere, grazie al tuo aiuto, un problema.

            • #114129
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                Il package geometry è inutile se dopo avero usato ridefinisci i parametri interni \oddsidemargin e compagnia.
                Geometry serve proprio per impostarli in modo corretto con le opzioni left=, top=, eccetera; mentre se li imposti a mano puoi facilmente commettere errori e produrre delle pagine inconsistenti. Infatti ogni quida raccomanda VIVAMENTE di non modificare a mano i parametri interni, ma di usare geometry. D’altra parte la documentazione di geometry lo spiega ancora meglio.

            Visualizzazione 15 filoni di risposte
            • Devi essere connesso per rispondere a questo topic.

            Go to top