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