Riprendiamo tutto dal principio:
`
\newcommand*\csindex[1]{\texsc{#1}\index{#1@\textsc{#1}}}
`
esegue le azioni seguenti che usano l’argomento del comando tre volte:
1) \textsc{#1} scrive nel testo l’argomento in maiuscoletto;
2) \index{#1@\textsc{#1}} usa due volte l’argomento, e precisamente la prima volta per dare a makeindex una chiave per alfabetizzare, e la seocndo volta per scrivere la voce da indicizzare in maiuscoletto.
Perciò non puoi usare questo comando come se fosse semplicemente \index; è ovvio che se scrivi
`
accelerazione\csindex{accelerazione}
`
ti scrive due volte di seguito accelerazione, la prima volta perché l’hai scritto tu e la seconda perché l’ha scritto \csindex.
Vediamo se possiamo risolvere il tuo problema in modo che tu possa usare il comando \index nel solito modo, sia per la voce primaria, sia per le subalterne: non definire nessuna macro ma scrivi:
`
accelerazione\index{accelerazione@\textsc{accelerazione}} e le schede ATI\index{accelerazione!schede ATI}
`
Scrivere macro serve per introdurre meno roba nel file sorgente, e ridurre il rischio di errori; siccome la prima scrittura ti obbliga a scrivere accelerazione tre vole, la mia macro ti avrebbe permesso di scriverla una volta sola. Ma siccome non l’hai saputa leggere/interpretare e quindi non l’hai saputa usare bene (nonostante i miei esempi d’uso fossero espliciti), non usare macro e vai tranquillo.