indice con documentclass memoir

  • Creatore
    Topic
  • #89727
    Up
    0
    Down
    ::


    Salve a tutti,
    sto cercando di creare un indice analitico con alcuni sotto-indici e ho qualche problema. (Ambiente OS X e composizione con XeLateX)
    Un esempio di codifica è in allegato.
    Vengono creati i due files idx dell’esempio ma non ottengo nulla alla fine del documento.
    Una frase del manuale forse fornisce la chiave ma mi è sembrato strano far elaborare l’indice da un’applicazione esterna.
    A pag. 302 del manuale della classe memoir si legge:
    “The raw index data is then processed, not by
    LaTeX but by yourself if you have plenty of spare time on your hands, or more usually by
    a separate program, to create a sorted list of indexed items in a second file (usually an ind
    file). This can then be input to LaTeX to print the sorted index data.”
    Ho provato a usare imakeidx e qualche cosa ottengo, forse lavorandoci un po’ riesco ad avere quanto desidero ma ho letto
    nella documentazione di imakeidx che in teoria ci sarebbe incompatibilità con memoir. Da alcune prove che ho fatto mi sembra
    che ad ogni passaggio di composizione, i files idx non vengano ricreati ma rimangono sempre i primi che sono stati creati.
    Grazie per l’assistenza.
    PM

    Attachments:
    You must be logged in to view attached files.
Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #89728
      franen
      Partecipante
        Up
        0
        Down
        ::

        piemme” post=89254Una frase del manuale forse fornisce la chiave ma mi è sembrato strano far elaborare l’indice da un’applicazione esterna.

        Eppure è proprio così, lo trovi scritto in tutte le guide di base:
        per avere un indice analitico devi fare questi tre passaggi:
        – pdflatex (o xelatex)
        – makeindex (o xindy)
        – pdflatex (o xelatex)

        Oppure usare il pacchetto imakeidx che ti fa fare tutto in una sola passata.

        Detto questo, non conosco memoir, quindi non so se la sintassi da usare sia la tua, ma solitamente prima di \makeindex si carica il pacchetto makeidx (o imakeidx). Con le classi standard sarebbe:
        `\documentclass[10pt]{book}
        \usepackage{imakeidx}
        \makeindex[name=principale,title=Indice principale]
        \makeindex[name=luoghi,title=Indice dei luoghi]

        \begin{document}
        ….
        \printindex[principale]
        \printindex[luoghi]
        \end{document}
        `con memoir non lo so…
        Fran

      • #89729
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Se leggi la documentazione di imakeiidx (terminale: texdoc imakeidx) trovi scritto che esso è compatibile con memoir, purché si usino solo i comandi di imakidx e non li si mescoli con quelli di memoir.

          Il fatto che tu abbia letto che imakeidx e memoir sono incompatibili si riferisce ad una vecchia distribuzione di imakeidix; da un paio d’anni i due sono compatibili, purché si seguano le istruzioni della documentazione di imakeidx.

          Prima di metterti a creare uno, anzi due indici analitici per lo stesso documento, hai fatto bene a documentarti su memoir, ma la frase che hai citato e che ti sorprende, indica che si tratta della tua prima esperienza con l’indice analitico e che non hai mai letto una guida su come si fanno gli indici analitici.

          La spiegazione è questa: i comandi \indiec che distribuisci nel documento, dopo aver inserito almeno un comando \makeindex nel preambolo, raccolgie i dati e li scirve in un file con estensione .idx. per avere un indice analitico presentabile le voci raccolte nel file idx devono essere messe in ordine alfabetico e gerarchico, i doppioni devono essere eliminati e le sequenze di numeri di pagine consecutivi devono essere raccolti in un range di pagine; questo lavoro viene fatto da un programma esterno ; il sistema tex ne contiene due makeindex e xindy, il primo è molto veloce ma ha dei limiti, il secondo virtualmente non ha limiti e può persino mescolare voci scritte con alfabeti diversi (per esempio latino, greco, cirillico,…) ma è più lento e complicato da usare; per questo, se non ci sono motivi particolari, di solito si usa makeindex. Elaborato il file idx mettemdo il risultato dell’elaborazione inel file ind, questo viene preso in carica dal comando pritindex che lo compone nel documento finale. Ecco perché qualunque guida dice che bisogna seguire la sequenza:

          pdflatex myfile
          makeindex myfile
          pdflatex myfile

          Il pacchetto imakeidx permette di ottenere il documento finale con un passaggio solo, se e solo se si usa una distribuzione moderna del programma pdflatex che è configurato per poter eseguire da solo alcuni selezionati programmi esterni, tra cui makindex (ma non xindy) in modo da sollevare l’utente dal eseguire a mano o tramite gli appositoi bottoni del suo shell editor le tre esecuzioni di programmi indicate sopra.

        • #89730
          franen
          Partecipante
            Up
            0
            Down
            ::

            OldClaudio” post=89258Il pacchetto imakeidx permette di ottenere il documento finale con un passaggio solo, se e solo se si usa una distribuzione moderna del programma pdflatex che è configurato per poter eseguire da solo alcuni selezionati programmi esterni, tra cui makindex (ma non xindy) in modo da sollevare l’utente dal eseguire a mano o tramite gli appositoi bottoni del suo shell editor le tre esecuzioni di programmi indicate sopra.

            Visto che è un argomento a me caro, chiedo a Claudio se può approfondire questa affermazione.
            Io compilo (o almeno finora ho creduto di farlo) documenti creando indici con xindy e imakeidx in una sola passata (qui un esempio).

            Fran

          • #89731
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Il file texmf/dist/web2c/texmf.cnf contiene l’elenco dei file la cui esecuzione tramite \write18 è protetta; fra questi, l’ultima volta che l’ho letto, xindi non c’era, ma evidentemente non leggo quel file di configurazione come se fosse un breviario per recitare le laudi ogni giorno… (*)
              Se però hai configurato il tuo shell editor affinché esegua sempre pdflatex in modalità NON PROTETTA, avendo specificato -shell-escape fra le opzioni che lo shell editor invia al sistema operativo per comporre il documento, oppure se lanci il comando di composizione dal terminale specificando l’opzione -shell-escape, allora pdflatex lavora in modalità non protetta ed esegue qualunque programma e qualunque coando del sitema operativo, con il rischio di fare danni ingenti se c’è qualche errore nella stirnga che vien inviata al sistema operativo.
              Lo so che ti usi xindy e che configuri imakeindx con la specificazione truexindy (che permette di lanciare davvero xindy, e non texindy che è uno script che lancia xindy con una serie di opzioni precostituita); ma che tu usi truexindy(=xindy) o texindy, il risultato è che non è una esecuzione protetta.

              (*) Ora ho parto il file di configurazione predefinta in web2c/ e verso la riga 561 c’è l’elenco dei programmi la cui esecuzione è lecita senza bisogno di specificare l’opzione -shell-escape: ricopio:`% The programs listed here are as safe as any we know: they either do
              % not write any output files, respect openout_any, or have hard-coded
              % restrictions similar or higher to openout_any=p. They also have no
              % features to invoke arbitrary other programs, and no known exploitable
              % bugs. All to the best of our knowledge. They also have practical use
              % for being called from TeX.
              %
              shell_escape_commands = \
              bibtex,bibtex8,\
              kpsewhich,\
              makeindex,\
              mpost,\
              repstopdf,\

              % we'd like to allow:
              % dvips – but external commands can be executed, need at least -R1.
              % epspdf, ps2pdf, pstopdf – need to respect openout_any,
              % and gs -dSAFER must be used and check for shell injection with filenames.
              % (img)convert (ImageMagick) – delegates.mgk possible misconfig, besides,
              % without Unix convert it hardly seems worth it, and Windows convert
              % is something completely different that destroys filesystems, so skip.
              % pygmentize – but is the filter feature insecure?
              % ps4pdf – but it calls an unrestricted latex.
              % rpdfcrop – maybe ok, but let's get experience with repstopdf first.
              % texindy,xindy – but is the module feature insecure?
              % ulqda – but requires optional SHA1.pm, so why bother.
              % tex, latex, etc. – need to forbid –shell-escape, and inherit openout_any.
              `Come vedi nessuna variante di xindy è eseguibile in modalità protetta ed è necessario specificare l’opzione -shell-escape per poterlo fare dall’interno di pdflatex.

              Ciao
              Claudio

            • #89732
              franen
              Partecipante
                Up
                0
                Down
                ::


                bene, grazie.
                Non avevo colte che intendessi che imakeidx permette di lanciare makeindex senza -shell-escape mentre per xindy serve attivare l’opzione. (che solitamente attivo con arara.)

                Fran

              • #89733
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Vedi, di fatto con arara non sfrutti la capacità di imakeidx di fare tutto da solo; comunque va bene come hai fatto.

                • #89734
                  Up
                  0
                  Down
                  ::


                  Dopo vari test, sta funzionando egregiamente con 7 indici.

                  Grazie per il supporto!

                  PM

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

              Go to top