Stile per indice dei nomi

  • Creatore
    Topic
  • #95616
    Up
    0
    Down
    ::


    Questo il mio esempio minimo:
    `% !TEX encoding = UTF-8 Unicode
    % !TEX TS-program = pdflatex

    \documentclass[a4paper]{book}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[italian]{babel}
    \usepackage{emptypage}

    % impostazioni di imakeidx
    \usepackage{imakeidx}
    \makeindex[title=Indice dei nomi,intoc,columns=2]

    \begin{document}

    \tableofcontents

    \chapter{Per cominciare}

    Le ricerche compiute da Leslie Lamport,\index{Lamport, Leslie} nato a New York City\index{New York City} il 7 febbraio 1941, hanno gettato le basi della teoria dei sistemi distribuiti.

    \chapter{Per proseguire}

    Qui, invece, si parla di Donald Knuth\index{Knuth, Donald} e di Pinco Pallino.\index{Pallino, Pinco}

    % comandi per stampare l'indice dei nomi
    \indexprologue{\noindent Questo indice raccoglie tutti i nomi menzionati per esteso nel libro.}
    \printindex

    \end{document}`
    Aggiungendo qualcosa come
    `options={-s classic.ist}`
    alle opzioni di [tt]\makeindex[/tt], dove [tt]classic.ist[/tt] è
    `headings_flag 1
    heading_prefix “\\goodbreak\\textsf{\\scshape\\bfseries\\MakeUppercase{”
    heading_suffix “}}\\par\\nobreak\\vskip\\smallskipamount\\nobreak”
    symhead_positive “Comandi particolari”
    symhead_negative “comandi particolari”
    numhead_positive “Numeri”
    numhead_negative “numeri”`

    si ottiene un indice dei nomi nel quale il cambio d’iniziale è segnalato dalla corrispondente iniziale maiuscoletta senza grazie. Questo è quello che facciamo nell’Arte.

    Chiedo a chi ne sa di più di spiegarmi come va letto il codice che ho appena mostrato, insegnandomi a creare un nuovo stile o modificando quello qui sopra o ideandolo dal nulla. Se non sbaglio, il codice è breve, dato che nella documentazione di imakeidx si trova un esempio come il seguente:
    `headings_flag 1
    heading_prefix “\\par\\penalty-50\\textbf{”
    heading_suffix “}\\\\\*\~\\\\\*”
    symhead_positive “Symbols”
    symhead_negative “symbols”
    numhead_positive “Numbers”
    numhead_negative “numbers”
    delim_0 “,\~”`
    Ciao
    Tommaso

Visualizzazione 7 filoni di risposte
  • Autore
    Risposte
    • #95617
      franen
      Partecipante
        Up
        0
        Down
        ::


        [tt]headings_flag [/tt] Indica come trattare le intestazioni dei gruppi in cui vengono divise le voci dell’indice (cioè simboli, numeri e le 26 lettere). Valori positivi portano ad avere lettere maiuscole, numeri negativi portano ad avere lettere minuscole, lo zero (che è il valore di default), porta a non avere alcuna intestazione.

        [tt]heading_prefix [/tt] Comandi che vengono inseriti prima dell’intestazione. Vi si possono ad esempio inserire dei comandi di formattazione delle intestazioni, come \\textsc{ per avere le lettere in maiuscoletto. Di default la stringa è vuota. Da notare la ripetizione della [tt]\[/tt], perché la prima serve da carattere di escape per la seconda. Nel tuo esempio credo che il codice inserito si chiaro: si dice a LaTeX che quello è un buon posto per un’interruzione di pagina, si scrive in carattere senza grazie, maiuscoletto, nero, maiuscolo (quanta roba!!! maiuscoletto e maiuscolo a che servono assieme?)

        [tt]heading_suffix [/tt] Comandi che vengono inseriti dopo l’intestazione. Devono essere scritti coerentemente con quanto contenuto in [tt]heading_prefix [/tt] (ad esempio ci si deve ricordare di chiudere parentesi eventualmente aperte). IN questo caso di chiude il capoverso, si dice di non mettere là interruzioni di pagine, si lascia una spaziatura verticale e ancora si impedisce l’interruzione di pagina.

        [tt]symhead_positive [/tt] Intestazione per i simboli; viene inserita qualora il valore di [headings_flag] sia positivo. Di default è “Symbols”, in italiano occorre modificare in “Simboli” o quel che si preferisce, qui “Comandi particolari”.

        [tt]symhead_negative [/tt] Intestazione per i simboli; viene inserita qualora il valore di [headings_flag] sia negativo. Di default è “symbols”, in italiano occorre modificare in “simboli” o quel che si preferisce.

        [tt]numhead_positive [/tt] Intestazione per i numeri; viene inserita qualora il valore di [headings_flag] sia positivo. Di default è “Numbers”, in italiano occorre modificare in “Numeri”.

        [tt]numhead_negative [/tt] Intestazione per i simboli; viene inserita qualora il valore di [headings_flag] sia negativo. Di default è “numbers”, in italiano occorre modificare in “numeri”.

        Nella documentazione del programma makeindex trovi le spiegazioni di tutti gli altri comandi che puoi usare (qui a desempio).

        Per creare il tuo nuovo file di stile dovrebbe essere abbastanza. Se vuoi dirci come vuoi che diventi il tuo indice, ti si può aiutare.

        Fran

      • #95618
        Up
        0
        Down
        ::

        franen” post=95249[tt]headings_flag [/tt] Indica come trattare le intestazioni dei gruppi in cui vengono divise le voci dell’indice (cioè simboli, numeri e le 26 lettere). Valori positivi portano ad avere lettere maiuscole, numeri negativi portano ad avere lettere minuscole, lo zero (che è il valore di default), porta a non avere alcuna intestazione.

        [tt]heading_prefix [/tt] Comandi che vengono inseriti prima dell’intestazione. Vi si possono ad esempio inserire dei comandi di formattazione delle intestazioni, come \\textsc{ per avere le lettere in maiuscoletto. Di default la stringa è vuota. Da notare la ripetizione della [tt]\[/tt], perché la prima serve da carattere di escape per la seconda. Nel tuo esempio credo che il codice inserito si chiaro: si dice a LaTeX che quello è un buon posto per un’interruzione di pagina, si scrive in carattere senza grazie, maiuscoletto, nero, maiuscolo (quanta roba!!! maiuscoletto e maiuscolo a che servono assieme?)

        [tt]heading_suffix [/tt] Comandi che vengono inseriti dopo l’intestazione. Devono essere scritti coerentemente con quanto contenuto in [tt]heading_prefix [/tt] (ad esempio ci si deve ricordare di chiudere parentesi eventualmente aperte). IN questo caso di chiude il capoverso, si dice di non mettere là interruzioni di pagine, si lascia una spaziatura verticale e ancora si impedisce l’interruzione di pagina.

        [tt]symhead_positive [/tt] Intestazione per i simboli; viene inserita qualora il valore di [headings_flag] sia positivo. Di default è “Symbols”, in italiano occorre modificare in “Simboli” o quel che si preferisce, qui “Comandi particolari”.

        [tt]symhead_negative [/tt] Intestazione per i simboli; viene inserita qualora il valore di [headings_flag] sia negativo. Di default è “symbols”, in italiano occorre modificare in “simboli” o quel che si preferisce.

        [tt]numhead_positive [/tt] Intestazione per i numeri; viene inserita qualora il valore di [headings_flag] sia positivo. Di default è “Numbers”, in italiano occorre modificare in “Numeri”.

        [tt]numhead_negative [/tt] Intestazione per i simboli; viene inserita qualora il valore di [headings_flag] sia negativo. Di default è “numbers”, in italiano occorre modificare in “numeri”.

        Nella documentazione del programma makeindex trovi le spiegazioni di tutti gli altri comandi che puoi usare (qui a desempio).

        Per creare il tuo nuovo file di stile dovrebbe essere abbastanza. Se vuoi dirci come vuoi che diventi il tuo indice, ti si può aiutare.

        Fran

        Grazie! Quello che vorrei ottenere, terribile, tremendo, ma richiesto da una casa editrice è un indice dei nomi come il seguente:

        Andreose, Carlo
        Astolfi, Federigo
        Aziz, Ismael

        Baroncini, Simone
        Belleffi, Claudio
        Bolognina, Severino

        Zambonin, Andrea
        Zilli, Chiara

        Secondo te è possibile?

        Ciao
        Tommaso

      • #95619
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Bè se il probema è mettere l’elenco dei nomi su una sola colonna, massta scrivere nelle impostazioi di \makeindex: [tt]columns=1[/tt]; questo mi semnra elementare.
          Invece se il problema consiste nel NON mettere il numero della pagina, allora a che cosa serve l’indice dei nomi; in ogni caso non saprei come fare e non lo voglio sapere. 😉
          Non voglio sapere come si fa a fare qualcosa che non serve a niente.

          Se il problema è quello di non mettere la virgola fra il nome proprio e il numero della pagina, basta leggere le indicazioni che ti ha dato @elsond; meglio ancora, secondo me, apri il terminale e digita texdoc ind, nella tabella 2 nella pagina 13 c’è tutto quello che ti serve, con tutti i delimitatori che puoi mettere e togliere.; non è difficle usarli, ma bisogna di solito fare due o tre tentativi prima di ottenere quello che si vuole. Pehong Chen, l’autore di questa documentazione, è coli che ha materialmente scritto il programma makeindex che usiamo oggigiorno. Direi che sia un autore piuttosto affidabile.

        • #95620
          Up
          0
          Down
          ::

          OldClaudio” post=95255Bè se il probema è mettere l’elenco dei nomi su una sola colonna, massta scrivere nelle impostazioi di \makeindex: [tt]columns=1[/tt]; questo mi semnra elementare.
          Invece se il problema consiste nel NON mettere il numero della pagina, allora a che cosa serve l’indice dei nomi; in ogni caso non saprei come fare e non lo voglio sapere. 😉
          Non voglio sapere come si fa a fare qualcosa che non serve a niente.

          Se il problema è quello di non mettere la virgola fra il nome proprio e il numero della pagina, basta leggere le indicazioni che ti ha dato @elsond; meglio ancora, secondo me, apri il terminale e digita texdoc ind, nella tabella 2 nella pagina 13 c’è tutto quello che ti serve, con tutti i delimitatori che puoi mettere e togliere.; non è difficle usarli, ma bisogna di solito fare due o tre tentativi prima di ottenere quello che si vuole. Pehong Chen, l’autore di questa documentazione, è coli che ha materialmente scritto il programma makeindex che usiamo oggigiorno. Direi che sia un autore piuttosto affidabile.

          Grazie, Claudio, ma questa volta avrei dovuto aggiungere io qualche riga su ciò che mi è stato chiesto.

          Come spero che si veda dall’esempio che ho fatto, l’iniziale del primo cognome di ogni lettera (A, B, C…) è in nero. Naturalmente l’indice avrà il numero di colonne che voglio metterci e il numero di pagina, che nell’esempio non ho messo io per pigrizia.

          Io vorrei che venisse in nero e automaticamente solo l’iniziale del primo cognome di ciascun segmento di indice corrispondente a una delle diverse lettere del nostro alfabeto.

          In alternativa, è possibile farlo a mano? Come?

          Ciao
          Tommaso

        • #95621
          franen
          Partecipante
            Up
            0
            Down
            ::


            La prima cosa che mi viene in mente è questa:`% !TEX encoding = UTF-8 Unicode
            % !TEX TS-program = pdflatex

            \documentclass[a4paper]{book}
            \usepackage[T1]{fontenc}
            \usepackage[utf8]{inputenc}
            \usepackage[italian]{babel}
            \usepackage{emptypage}
            \usepackage{ifthen}
            % impostazioni di imakeidx
            \usepackage{imakeidx}
            \makeindex[title=Indice dei nomi,intoc,columns=2,options={-s classico.ist}]
            \newcommand{\donothing}[1]{#1}
            \newcounter{groupelement}
            \setcounter{groupelement}{1}
            \newcommand{\conditionalformat}[1]{%
            \ifthenelse{\value{groupelement}=1} {\textbf{#1}}{\donothing{#1}}%
            \stepcounter{groupelement}%
            }
            \let\oldindexspace\indexspace
            \def\indexspace{\setcounter{groupelement}{1}\oldindexspace}
            \begin{document}

            \tableofcontents

            \chapter{Per cominciare}

            Le ricerche compiute da Leslie Lamport,\index{Lamport, Leslie} nato a New York City\index{New York City} il 7 febbraio 1941, hanno gettato le basi della teoria dei sistemi distribuiti.

            \chapter{Per proseguire}

            \textbf
            Qui, invece, si parla di Donald Knuth\index{Knuth, Donald} e di Pinco Pallino\index{Kant, Immanuel}.\index{Pallino, Pinco}

            % comandi per stampare l'indice dei nomi
            \indexprologue{\noindent Questo indice raccoglie tutti i nomi menzionati per esteso nel libro.}
            \printindex

            \end{document}`Con classico.ist:`preamble “\\begin{theindex}\n
            \\def\\item#1{\\par\\hangindent 40pt\\conditionalformat{#1}}”

            symhead_positive “Comandi particolari”
            symhead_negative “comandi particolari”
            numhead_positive “Numeri”
            numhead_negative “numeri”`

            All’inizio dell’ambiente theindex ridefinisci il comando [tt]\item[/tt] che viene usato per stampare le voci dell’indice. Alla definizione standard, presa da book.cls aggiungi il comando \conditionalformat, che agirà solo sul primo token che incontra, quindi l’iniziale della voce dell’indice. Non si vuole che il neretto vada a tutte le voci, ma solo alla prima di ogni gruppo. Quindi creo un contatore che conta gli elementi dei gruppi. Se il contatore vale 1 allora [tt]\conditionalformat[/tt] crea il neretto, altrimenti non fa nulla.
            Perché il contatore torni a uno all’inizio di un nuovo gruppo alfabetico ridefinisco il comando \indexspace, che LaTeX mette fra un gruppo e l’altro.

          • #95622
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Aloora è semplice; nel tuo stile che dici essere usato da ArteLaTeX:`headings_flag 1
              heading_prefix “\\goodbreak\\textsf{\\scshape\\bfseries\\MakeUppercase{”
              heading_suffix “}}\\par\\nobreak\\vskip\\smallskipamount\\nobreak”
              symhead_positive “Comandi particolari”
              symhead_negative “comandi particolari”
              numhead_positive “Numeri”
              numhead_negative “numeri”`c’è una cosa che può funzionare con diversi font, ma non con tutti; [tt]\scshape[/tt] e [tt]\bfseries[/tt] son generalmente incompatibili, o l’uno o l’altro, specialmente per le lettere maisucole usare \scsshape non ha nessun effetto, salvo quello di essere incmpatibile con il nero. Prova`headings_flag 1
              heading_prefix “\\goodbreak\\textsf{\\bfseries\\MakeUppercase{”
              heading_suffix “}}\\par\\nobreak\\vskip\\smallskipamount\\nobreak”
              symhead_positive “Comandi particolari”
              symhead_negative “comandi particolari”
              numhead_positive “Numeri”
              numhead_negative “numeri”`

            • #95623
              franen
              Partecipante
                Up
                0
                Down
                ::


                Tommaso, la soluzione proposta soddisfa le tue esigenze o c’è da modificare qualcosa?

              • #95624
                Up
                0
                Down
                ::

                franen” post=95369Tommaso, la soluzione proposta soddisfa le tue esigenze o c’è da modificare qualcosa?

                Ciao,
                perdona il ritardo nella risposta. La cosa che ho chiesto non era per me. Oggi sento la persona interessata e ti faccio sapere. Grazie, intanto 🙂

                Ciao
                Tommaso

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

            Go to top