Richiesta particolare nell’utilizzo del pacchetto imakeidx

  • Creatore
    Topic
  • #105633
    Up
    0
    Down
    ::


    Salve a tutti,
    siccome sto scrivendo una lunga tesi di laurea nella quale sono citati numerosi personaggi e luoghi, ho deciso di porre al termine del lavoro due indici separati per nomi e luoghi. Fin qui nulla di straordinario e impossibile però, dato che molte località sono piccole e sconosciute, è importante indicarne la provincia. Tuttavia, siccome molti toponimici si ripetono più volte nel testo, trovo stucchevole indicare sempre la provincia tra parentesi, come trovo scomodo, eventualmente, scrivere la provincia solo la prima volta che la località compare costringendo, quindi, i lettori a sfogliare il libro all’indietro o a cercare su internet, ecc.
    Vorrei quindi poter scrivere nella trattazione nomi di località come Monterotondo, Gaeta… e nell’indice dei luoghi far comparire Monterotondo (RM), Gaeta (LT) e così via, cioè sempre con la provincia.
    Dite che c’è un modo per fare questo?

    Saluti

    PS. Mi sono dimenticato di dire che sto usando il pacchetto imakeidx.

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #105634
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Non è una questione di imakeidxx o di indextools o di makeidx o di altro gestore di indici analitici.

        Certo non puoi specificare fra le opzioni di \makeindex[…] anche la provincia, perché lui non sa che Gaeta è in provincia di Latina, mentre Monterotondo è in provincia di Roma. In qualche modo devi dirglielo, ma se non glielo dici in modo sistematico rischi di avere nell’indice qualcosa come

        Gaeta (LT) 27
        Gaeta 35, 47, 71, 103, 152

        Che sarebbe bruttino.

        Io farei così: per ogni luogo da citare con la provincia userei un comando invece di tutta la specificazione per disteso; in sostanza per Roma potrei anche scrivere nel testo [tt]Roma\incex[luoghi]{Roma}[/tt] e per \Monterotondo scriverei invece [tt]\Monterotondo[/tt]. Poi vista la comodità definirei anche il comando per Roma. Il comando, avendo caricato anche il pacchetto xspace, potrebbe essere anche il seguente:`\newcommand*\luogo[2]{#1\def\Prov{#2}\ifx\Prov\empty}\index{#1}\else\index{#1 (#2)\fi}
        \newcommand*\Monterotondo{\luogo{Monterotondo}{RM}
        \newcommand*\Gaeta{\luogo{Gaeta}{RM}\xspace}
        \newcommand*\Roma{\luogo{Roma}{}\xspace}
        % altre simili definizioni per altre località
        `
        e dopo aver usato questi comandi (a spese solo di un backslash in più rispetto a scrivere tutto quanto per disteso) nell’indice ti comparirebbero voci come:

        Gaeta (LT) 27, 35, 47, 71, 103, 152
        Monterotondo (RM) 12, 31,53, 97
        Roma 2, 11, 19, 31, 37, 41, 47

        Se vuoi indicare la provincia fra parentesi anche nel testo devi apportare qualche piccola modifica alla definizione di \luogo; io però non lo farei; vedi sotto.

        Nota che grazie a \xspace non hai nessun bisogno di mettere nente di speciale dopo i comandi che ti sei definito; se è uno spazio, esso usa lo spazio, se non c’è ci mette quello che trova, un punto fermo, una virgola, eccetera. Il pacchetto xspace viene usato peco, ma è comodissimo proprio per questo genere di cose.

        Ecco perché, per esempio, nel testo potresti scrivere [tt]\Gaeta (LT) si trova in prossimità[/tt] la prima volta che nomini Gaeta, ma le volte successive puoi scrivere semplicemente [tt]nella città di \Gaeta, nota fin dai tempi dei romani,[/tt]

      • #105635
        Up
        0
        Down
        ::


        Ciao Claudio, ti ringrazio, ma il tuo codice non funziona.

        Il mio codice è questo. Dove vado a inserire le tue righe?

        `% ===== PACCHETTO MULTI-INDICE
        \usepackage{imakeidx}
        \makeindex[name=nome,title=Indice dei nomi]
        \makeindex[name=luogo,title=Indice dei luoghi]

        % *************TESTO
        \begin{document}
        Testo1\index[luogo]{Roma}
        Testo2\index[luogo]{Nemi}
        \printindex[nome]
        \printindex[luogo]
        \end{document}
        `

      • #105636
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Be’, sì, avevo buttato giù di getto quelle definizioni, ma non le avevo collaudate; scusami.
          Prendi modello da questo esempio minimo compilabile; attento che le definzioni sono ora state modificate per essere senza errori.
          `% !TEX TS-program = pdflatex
          % !TEX encoding = UTF-8 Unicode

          \documentclass[12pt]{article}
          \usepackage[utf8]{inputenc}
          \usepackage[T1]{fontenc}
          \usepackage{lmodern}
          \usepackage[italian]{babel}

          \usepackage{xspace}

          % ===== PACCHETTO MULTI-INDICE
          \usepackage{imakeidx}
          \makeindex[name=nome,title=Indice dei nomi]
          \makeindex[name=luogo,title=Indice dei luoghi]

          \newcommand*\luogo[2]{#1\def\Prov{#2}\ifx\Prov\empty\index[luogo]{#1}\else\index[luogo]{#1 (#2)}\fi}
          \newcommand*\nome[1]{#1\index[nome]{#1}\xspace}
          \newcommand*\Monterotondo{\luogo{Monterotondo}{RM}\xspace}
          \newcommand*\Gaeta{\luogo{Gaeta}{RM}\xspace}
          \newcommand*\Roma{\luogo{Roma}{}\xspace}
          \newcommand*\Nemi{\luogo{Nemi}{RM}\xspace}

          % *************TESTO
          \begin{document}
          Testo0 \nome{Giovanni} è il personaggio primario

          Testo1 \Roma è la capitale della provincia di Roma

          Testo2 \Nemi dà il nome al lago.

          Testo3 \nome{Giuseppe} è un altro personaggio

          \printindex[nome]
          \printindex[luogo]
          \end{document}`

        • #105637
          Up
          0
          Down
          ::


          FUNZIONA!

          Come si fa, invece, per fare in modo che nell’elenco dei luoghi o dei nomi, se il luogo o il nome è citato in nota, nell’indica compaia il numero della pagina con accanto la “n” di nota?
          Es: 230n

        • #105638
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Documentazione di imakeidx
            pagina 12
            paragrafo 5.2.5

          • #105639
            Up
            0
            Down
            ::


            L’ho trovato… http://texdoc.net/texmf-dist/doc/latex/imakeidx/imakeidx.pdf

            Devo fare così? Ma non funziona…

            `\usepackage{letltxmacro}
            \usepackage{imakeidx}

            \makeatletter
            \LetLtxMacro\orig@@index\index
            \let\orig@@index\index
            \newcommand\nindex[1]{\orig@@index{#1|innote}}
            \newcommand\innote[1]{#1\textit{n}}

            \makeindex[name=nome,title=Indice dei nomi]
            \makeindex[name=luogo,title=Indice dei luoghi]

            \AtBeginDocument{%
            \pretocommand{\@footnotetext}{\let\index\nindex}{}{}
            }
            `

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

        Go to top