Re: Stile per indice dei nomi

#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.

    Go to top