indici

  • Creatore
    Topic
  • #109829
    Up
    0
    Down
    ::


    Ho necessità di realizzare due indici (argomenti e nomi). Ma quando compilo con PDFLatex gli indici non vengono stampati. Allego esempio. Non riesco a trovare l’errore. Qualcuno mi può aiutare?

    `
    \documentclass[11pt,a4paper,twoside]{book}
    \usepackage[splitindex]{imakeidx}
    \makeindex[name=sogg,title=Indice degli argomenti]
    \makeindex[name=nomi,title=Indice dei nomi]

    \begin{document}

    … bla\index[sogg]{bla} … blablabla[nomi]{blablabla} …

    \printindex[nomi]
    \printindex[sogg]
    \end{document}
    `

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #109830
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Debitamente corretto il file seguente funziona come previsto
        `% !TEX TS-program = pdflatex
        % !TEX encoding = UTF-8 Unicode
        \documentclass[11pt,a4paper,twoside]{book}
        \usepackage{imakeidx}
        \makeindex[name=sogg,title=Indice degli argomenti]
        \makeindex[name=nomi,title=Indice dei nomi]

        \begin{document}

        … bla\index[sogg]{bla} … blablabla\index[nomi]{blablabla} …

        \printindex[nomi]
        \printindex[sogg]
        \end{document}`

        Se usi l’opzione [splitindex] la generazione non è automatica e la devi eseguire da terminale con il dando il comando splitindex ma se la togli quell’opzione pdflatex fa tutto da solo,a meno che tu non gli abbia esplictamante vietato di eseguire lo “shell-escape”, Forse non è abilitato con l’installazione di MiKTeX, o forse hai una installazione vecchia, tuttavia oggi, almeno con TeXLive, l’esecuzione del comando makeindex avviente automaticamente in protected mode. Altrimenti da terminale devi dare i debiti comandi makeindex seguito da ciascono dei nomi dei file con estensione .idx.

        Io non devo fare niente, perché da me con TeXLive (MacTeX) è abiiitato allo shell escape.

      • #109831
        Up
        0
        Down
        ::


        Grazie mille. Cancellando [splitindex] funziona perfettamente.
        Se non abuso troppo della tua competenza e pazienza mi piacerebbe capire perché nel “The package imakeidx”, Version number v1.3e; last revision 2016/10/15, a pag. 3 è scritto:
        “splitindex calls the splitindex script by Markus Kohm, which is included in every TEX Live distribution since 2009. With this option all index entries, which are written in one raw index file, are successively split into all the requested index files; in this way there is virtually no limit on the number of indices that is possible to create for a particular document. The last described option deserves an explanation. …….. When should you apply this option, then? With one index it’s useless, you
        should begin to consider it for two or more indices and definitely use it if you get the error.”
        Usando splitindex io non avevo nessun messaggio di errore. Semplicemente gli indici non venivano stampati.
        Te lo chiedo per evitare di porre al Forum quesiti banali e inutili.
        Grazie ancora.

      • #109832
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          La spiegazione consiste in quello che c’è scritto nella documentazione di imakeidx.

          pdflatex (e forse anche xelatex e lualatex) hanno un massimo di 16 canali per leggere e 16 canali per scrivere.

          Per gestire i “raw index filex” (i file .idx che contengono i dati da indicizzare, raccolti durante la normale compilazione di un documento) il programma ha bisogno di usare un canale per ciascuno dei file .idx. Ora normalmente il programma usa dei canali di scrittura per i file .aux, .log, .toc,.lof, .lot, .out, eccetera; quindi i canali disponibili non sono in numero illimitato ed sarebbe possibile che durante l’esecuzione il programma emettesse un errore del tipo “No more writing channels available” (ho citato a memoria, perché sono almeno 10 anni che non mi capita di saturare i canali disponibili).

          Ecco allora che se si compilano molti indici analitici senza l’opzione splitindex, si impegnano altrettanti canali di scrittura ed è possibile arrivare a richiederne più di 16. Se invece si usa questa opzione, tutti i dati da indicizzare vengono scritti in un unico file .idx, impegnando un solo canale di scrittura; l’eventualità che pdflatex ne abbia già impegnati di suo 16 è remota, ma non è teoricamente impossibile. Ne consegue che scrivendo tutti i dati da indicizzare in un solo file minimizza l’eventualità di saturare i canali di scrittura, ma se il numero è già saturo a causa del programma, non c’è verso di comporre nessun indice analitico.

          Con splitindex si impegna un solo canale di scrittura, ma i dati dei vari indici sono mescolati; bisogna separarli in tanti file .idx distinti, ma questo può essere fatto solo esternamente al programma di composizione; mi pareva di ricordare che inizialmente imakeidx fosse in grado di farlo da solo, ed era così, perché era comunque necessario attivare esplicitamente lo shell escape; ma splitindex non fa parte della lista di programmi eseguibili in protected shell escape, mentre ne fa parte makeindex; ne consegue che senza l’opzione splitindex, pdflatex può lanciare makeindex e trasformare i vari file .idx nei file .ind, quelli che \printindex importa per comporre i vari indice. Invece se si è costretti ad usare splitindex o perché gli indici sono tanti, o perché pdflatex ha già usato troppi canali di scrittura (lasciandone troppo pochi per scrivere diversi file .idx), allora o si lancia a mano pdflatex con l’opzione –shell-scape, o si configura l’editor perché lanci pdflatex con quell’opzione, oppure si esegue a mano il programma splitindex.

          Quindi quando nella documentazione di imakeinde si dice che si può prendere in considerazione l’uso di splitindex quando ci sono almeno due indici analitici da eseguire, non vuol dire che siccome “si può” allora “si deve”; certo se lo si fa quando non è necessario, bisogna comportarsi come indicato per quando è necessario, cioè bisogna agire a mano o bisogna configurare l’editor in modo adatto per lanciare il programma con l’opzione shell escape che permette l’esecuzione di qualunque programma presente sul calcolatore in modalità non protetta, quindi consente di lanciare anche del malware; ecco perché la sicurezza consiglia di non lasciare permanentemente attiva l’impostazione dei programmi con l’opzione shell escape.

          Scusa lo spiegone interminabile, ma purtroppo la cosa non si può spiegare in due parole; nello stesso tempo si tratta di una questione delicata che richiede una certa comprensione di come fnziona il sistema TeX. Per noi vecchi utenti la cosa non è incomprensibile anche senza leggere tanti manuali, perché abbiamo cominciato ad usare il sistema Te quando esisteva solo il DOS; tu che sei giovane forse non hai nemmeno sentito nominare questo sistema operativo, ma era quello che si usava sui prmi PC degli anni ’80, che avevano normalmente 10 MIB di disco fisso e disporne con dischi fissi di 20MiB era un lusso che si potevano permettere solo pochi (in pratica lo stipendi di un anno). Capisci bene che noi eravamo abituati fin dall’inizio ad usare risorse minime, semplicemente ridicole al giorno d’oggi quando un normale telefonino dispone di risorse centinaia di volte maggiori di allora.

        • #109833
          Up
          0
          Down
          ::


          Grazie dell’esauriente risposta. Ho capito un po’ di più ma per ora mi basta.
          Quanto al “giovane” lo sono certamente dal punto di vista dell’esperienza in Latex, ma sono abbastanza vecchio da aver composto in Tex, parecchi decenni fa, un testo molto complesso su PC Olivetti M24. Da allora non ho più avuto necessità di comporre in Tex. Ora che ho ripreso a comporre in Tex lo trovo eccezionale rispetto a tutti i programmi di composizione attualmente in commercio. È comunque molto arduo districarsi tra le centinaia di contributi disponibili e sarebbe troppo lungo farsi un’idea dello stato dell’arte prima di incominciare a lavorare sul testo. Per cui ti otturi al naso e ti lanci. Per fortuna ci sono i forum, il web etc. e, nonostante la complessità, riesci a superare le difficoltà.

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

      Go to top