Re: makeindex e lettere accentate

#59266
franen
Partecipante
    Up
    0
    Down
    ::


    Ti presento la mia casistica, partendo da questo codice:`\documentclass[a4paper,12pt]{book}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[italian]{babel}
    \usepackage{makeidx}
    \makeindex
    \usepackage{songs}
    \newindex{ind}{ind} % per gli indici di songs, da generare a parte
    \makeatletter
    \def\accents@list{\do\IeC\do\`\do\'}
    \def\letters@list{\do\i{i}}
    \newcommand{\noaccentindex}[1]{%
    \begingroup
    \protected@edef\next{#1}%
    \ifnum\pdfstrcmp{\detokenize\expandafter{\next}}{\detokenize{#1}}=\z@
    \index{#1}%
    \else
    \def\do##1{\def##1####1{####1}}\accents@list
    \def\do##1##2{\def##1{##2}}\letters@list
    \edef\next{\endgroup\def\noexpand\next{\next}}\next
    \expandafter\index\expandafter{\next @\detokenize{#1}}%
    \fi}
    \renewcommand\SB@@@beginsong{%
    \global\SB@stanzafalse%
    \setbox\SB@chorusbox\box\voidb@x%
    \SB@gotchorusfalse%
    \setbox\SB@songbox\vbox\bgroup\begingroup%
    \ifnum\SB@numcols>\z@\hsize\SB@colwidth\fi%
    \leftskip\z@skip\rightskip\z@skip%
    \parfillskip\@flushglue\parskip\z@skip%
    \SB@raggedright%
    \global\SB@transposefactor\z@%
    \global\SB@cr@{\\}%
    \protected@edef\@currentlabel{\p@songnum\thesongnum}%
    \setcounter{versenum}{1}%
    \SB@prevversetrue%
    \meter44%
    \resettitles%
    \SB@addtoindexes\songtitle\SB@rawrefs\songauthors%
    \expandafter\noaccentindex\expandafter{\songtitle} %MODIFICATO
    \nexttitle%
    \foreachtitle{\expandafter\SB@addtotitles\expandafter{\songtitle}
    }%
    \resettitles%
    \lyricfont%
    \SB@setbaselineskip%
    }
    \makeatother
    \begin{document}
    \printindex
    \begin{songs}{ind}
    \beginsong{Alleluia Passeranno i cieli}
    \beginchorus
    \[D]Alle\[A]luia, \[Bm]alleluia, \[F#m]alleluia,
    \endchorus
    \beginverse
    \[D]Passeranno i \[A]cieli e \[Bm]passerà la \[F#m]terra,
    \endverse
    \endsong
    \beginsong{È santo}[by={Daniele Ricci}]
    \beginverse
    \[E]\\[A]\[E]\\[A]\[E]\
    È \[E]san\to, santo \[A]san\[E]to,
    \endverse
    \endsong
    \end{songs}
    \end{document}`

    1. Così come scritto sopra, mi dà l’errore del messagio precedente.
    2. togliendo gli \ezpandafter non dà errore, ma genera l’indice vuoto (resta \songtitle del file idx)
    3. togliendo gli \expandafter e il \detokenize funzinona bene, salvo le “schifezze” nell’indice.

    Fran

    Go to top