Problem mit betababel Thema ist als GELÖST markiert

Schriftbild, Absätze und Auflistungen einstellen


kouki

Problem mit betababel

Beitrag von kouki »

Hallo,

ich würde gerne neue Kommendos erstellen um jedesmal wenn ich ein griechisches Wort schreibe automatisch ein Index-Eintrag erstellt wird.
Die Definiton
\newcommand{\neu}{test\index[gr]{test}}
funktioniert.
Sobald ich aber im Index auch die betacode-Umgebung nutze funktioniert es nicht mehr :?
\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]{\bcode{t(/est}}}

\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}

Gast

Beitrag von Gast »

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.

kouki

Beitrag von kouki »

Vielen Dank!

Bin auf babel umgestiegen und der Hinweis mit \protect hat super funktioniert!

Antworten