Lies mal was unter "Known limitations" in der [d]betababel[/d]-Anleitung steht. Auch \newcommand gehört in die Kategory "Other commands". Danach sollte halbwegs klar werden, warum in gr.idx solch ein Salat geschrieben wird:
\indexentry{\def <'\char 116\char 101sv\char 116{}\Bet@Mode =1 \FirstP@r =1 \noindent \begingroup \catcode `\=0 \catcode `\\=12 \catcode `\&=6 \catcode `\#=12 \catcode `\==12 \lccode `(=0\lccode `)=0 \lccode `[=0\lccode `]=0 \lccode `+=0\lccode `/=0 \lccode `\==0\lccode `|=0 \uccode `(=0\uccode `)=0 \uccode `[=0\uccode `]=0 \uccode `+=0\uccode `/=0 \uccode `\==0\uccode `|=0 \lccode `-=0\lccode `_=0 \lccode `.=0\lccode `,=0 \lccode `:=0\lccode `;=0 \lccode `'=0\lccode `?=0 \gdef {}\gdef Terminus{t(/est}Terminus\par \endgroup \gdef {}\foreignlanguage {polutonikogreek}{\catcode `\ \active <'\char 116\char 101sv\char 116}}{1}
bei dem makeindex dann Probleme hat, das zu verarbeiten:
!! Input index error (file = gr.idx, line = 1):
-- Extra `@' at position 59 of first argument.
Eine mögliche Lösung im konkreten Fall wäre
\documentclass[
a4paper
parskip,
]{scrreprt}
\usepackage[polutonikogreek, german]{babel}
\usepackage[german]{betababel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[]{imakeidx}
\makeindex[name=gr,title=Griechischer Index,intoc,columns=2]
\makeindex[name=dt,title=Deutscher Index,intoc,columns=2]
\usepackage[font=footnotesize]{caption}
\newcommand{\test}{\bcode{t(/est}}
\newcommand{\IDXtest}{\index[gr]{\protect\bcode{t(/est}}}% ggf. \protect durch \string ersetzen und ggf. weitere "Befehle" schützen.
\begin{document}
Hier soll \test\IDXtest~stehen
Hier funktioiert es \test\index[gr]{\bcode{t(/eeeest}}
\printindex[gr]
\indexprologue{\small In this index you’ll find only
german words}
\end{document}
Eventuell wäre auch die Verwendung von \detokenize sinnvoll, kann aber (wie \protect) auch zu zusätzlichen Leerzeichen führen.
BTW:
betababel wurde zuletzt vor über zehn Jahren aktualisiert.
babel wird hingegen inzwischen wieder aktiv weiterentwickelt. Das muss nicht zu einem Problem führen, kann aber.
Lies mal was unter "Known limitations" in der [d]betababel[/d]-Anleitung steht. Auch [tt]\newcommand[/tt] gehört in die Kategory "Other commands". Danach sollte halbwegs klar werden, warum in [tt]gr.idx[/tt] solch ein Salat geschrieben wird: [code]\indexentry{\def <'\char 116\char 101sv\char 116{}\Bet@Mode =1 \FirstP@r =1 \noindent \begingroup \catcode `\=0 \catcode `\\=12 \catcode `\&=6 \catcode `\#=12 \catcode `\==12 \lccode `(=0\lccode `)=0 \lccode `[=0\lccode `]=0 \lccode `+=0\lccode `/=0 \lccode `\==0\lccode `|=0 \uccode `(=0\uccode `)=0 \uccode `[=0\uccode `]=0 \uccode `+=0\uccode `/=0 \uccode `\==0\uccode `|=0 \lccode `-=0\lccode `_=0 \lccode `.=0\lccode `,=0 \lccode `:=0\lccode `;=0 \lccode `'=0\lccode `?=0 \gdef {}\gdef Terminus{t(/est}Terminus\par \endgroup \gdef {}\foreignlanguage {polutonikogreek}{\catcode `\ \active <'\char 116\char 101sv\char 116}}{1}[/code] bei dem [tt]makeindex[/tt] dann Probleme hat, das zu verarbeiten:
[tt]!! Input index error (file = gr.idx, line = 1):
-- Extra `@' at position 59 of first argument.[/tt]
Eine mögliche Lösung im konkreten Fall wäre [code]\documentclass[
a4paper
parskip,
]{scrreprt}
\usepackage[polutonikogreek, german]{babel}
\usepackage[german]{betababel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[]{imakeidx}
\makeindex[name=gr,title=Griechischer Index,intoc,columns=2]
\makeindex[name=dt,title=Deutscher Index,intoc,columns=2]
\usepackage[font=footnotesize]{caption}
\newcommand{\test}{\bcode{t(/est}}
\newcommand{\IDXtest}{\index[gr]{\protect\bcode{t(/est}}}% ggf. \protect durch \string ersetzen und ggf. weitere "Befehle" schützen.
\begin{document}
Hier soll \test\IDXtest~stehen
Hier funktioiert es \test\index[gr]{\bcode{t(/eeeest}}
\printindex[gr]
\indexprologue{\small In this index you’ll find only
german words}
\end{document}[/code]
Eventuell wäre auch die Verwendung von [tt]\detokenize[/tt] sinnvoll, kann aber (wie [tt]\protect[/tt]) auch zu zusätzlichen Leerzeichen führen.
BTW: [p]betababel[/p] wurde zuletzt vor über zehn Jahren aktualisiert. [p]babel[/p] wird hingegen inzwischen wieder aktiv weiterentwickelt. Das muss nicht zu einem Problem führen, kann aber.