Aufwändige Lösung mit MakeIndex
-------------------------------
`makeindex` kann zwar bei den Seitenzahlen mit arabischen Zahlen, kleinen und großen römischen Zahlen und Klein- und Großbuchstaben umgehen, erwartet allerdings, dass bei Kombinationen davon ein Trennzeichen zwischen den unterschiedlichen Zahlenteilen steht. Dieses Trennzeichen kann im MakeIndex-Stil über die Variable `page_compositer` eingestellt werden. Es sind alle Zeichen außer dem NUL-Zeichen erlaubt. Zeichen, die gleichzeitig als Ziffern verwendet werden können, sollten allerdings besser nicht verwendet werden.
Um zu erkennen, ob ein Zeichen Teil einer Zahl ist waren in früheren Versionen von `makeindex` eine feste Reihenfolge eingestellt. Dabei wurden zunächst arabische Ziffern dann alle einzelnen Kleinbuchstaben erkannt. Bei mehreren Kleinbuchstaben wurde hingegen geprüft, ob beispielsweise mehrere `i` aufeinander folgen oder auf das `i` eine andere kleine römische Ziffer folgte. In dem Fall wurde auf eine römische Zahl erkannt. Dann fand für Großbuchstaben ein ähnlicher Test statt. Problematisch war dabei, dass einzelne römische Ziffern als Buchstaben erkannt und deshalb ggf. falsch einsortiert wurden. Seit einigen Versionen (AFAIK min. 2.12) wird die Reihenfolge, in der die Zahlen geprüft werden, jedoch über die Variable `page_precedence` erkannt. Der dort angegebene String gibt die Erkennungsreihenfolge an:
`r` – kleine römische Zahl</br>
`n` – arabische Zahl</br>
`a` – Kleinbuchstabe</br>
`R` – große römische Zahl</br>
`A` – Großbuchstabe
Die oben angegebene Reihenfolge ist gleichzeitig die normale Such-/Testreihenfolge.
Du hast also zwei Probleme.
1. Da zwischen arabischer Zahl und Kleinbuchstabe bei Dir kein Trennzeichen steht, erkennt MakeIndex keine Zahlengruppen, sondern meldet falsche Zeichen in der Seitenzahl.
2. Da MakeIndex in der Voreinstellung zuerst kleine römische Zahlen und dann Kleinbuchstaben erkennt, werden `c`, `d`, `i`, `m` und `x` eventuell falsch einsortiert.
Das zweite Problem ist einfach mit
page_precedence "narAR"
in der MakeIndex-Stildatei zu lösen.
Da es nicht möglich ist, bei `page_compositor` nichts anzugeben. Ist das erste Problem nur sehr umständlich zu lösen. Dazu muss man die Seitenzahlen mit einem Trennzeichen versehen, aber dafür sorgen, dass LaTeX dieses Trennzeichen nicht mit anzeigt.
% Zuerst `\jobname.mst` erzeugen. Diese wird von makeindex automatisch verwendet.
\begin{filecontents*}{\jobname.mst}
page_precedence "narAR"
page_compositor "."
\end{filecontents*}
\documentclass{article}
\usepackage{scrbase}
\usepackage{scrpage2}
\usepackage{lipsum}
\usepackage{makeidx}\makeindex
\makeatletter
% Der Befehl `\pagewithsuffix` schaltet auf die eingeschobenen Seiten um.
% Er definiert gleichzeitig `\endpagewithsuffix`, das dann wieder zurück
% schaltet.
\newcommand*{\pagewithsuffix}{%
\clearpage
\edef\endpagewithsuffix{\noexpand\clearpage
\noexpand\setcounter{page}{\the\value{page}}%
\noexpand\stepcounter{page}}%
\expandafter\l@addto@macro\expandafter\endpagewithsuffix\expandafter{%
\expandafter\def\expandafter\thepage\expandafter{\thepage}%
}%
\edef\thepage{\thepage.\noexpand\alph{page}}%
\setcounter{page}{1}%
}
% Mit `\specialpageformat` werden die Punkte in den Seitenzahlen
% für die Ausgabe entfernt. Es ist zu beachten, dass dies für
% alle Seitenzahlen anzuwenden ist! Das ganze funktioniert nur,
% solange nicht zwei unmittelbar aufeinanderfolgende Punkte in
% den Seitenzahlen auftreten können. Eine alternative Implementierung
% mit Hilfe des `xstrings`-Pakets wäre eventuell sinnvoll und möglich
\newcommand*{\specialpageformat}[1]{%
\begingroup
\edef\reserved@a{#1}%
\expandafter\@specialpageformat\reserved@a..%
\endgroup
}
\newcommand*{\@specialpageformat}{}
\def\@specialpageformat#1.#2{%
#1\ifx #2.\else #2\expandafter\@specialpageformat\fi
}
% Es wird scrpage2 für den Seitenstil verwendet, damit die Ausgabe
% der Seitenzahlen bei der Nummerierung der Seiten ebenfalls
% `\specialpageformat` verwenden kann. Eine Lösung mit fancyhdr
% wäre natürlich alternativ möglich.
\renewcommand*{\pagemark}{%
\specialpageformat{\thepage}%
}
\pagestyle{scrplain}
\makeatother
% Die folgende Anweisung dient nur meinem persönlichen Komfort.
\newcommand*\lipsumpages{%
\lipsum[1]\index{Eintrag|specialpageformat}
\lipsum[2-5]\index{Eintrag|specialpageformat}
\lipsum[6-10]\index{Eintrag|specialpageformat}
}
\begin{document}
\lipsumpages
\pagewithsuffix
\lipsumpages\lipsumpages
\endpagewithsuffix
\printindex
\end{document}
Kommt dann noch [`hyperref`][1] hinzu, so wird die Lösung schnell unübersichtlich und schwer beherrschbar. Daher sei stattdessen ausdrücklich [`xindy`][2] an Stelle von `makeindex` empfohlen. empfohlen.
Einfache Lösung mit Xindy:
--------------------------
`xindy` ist `makeindex` in vielerlei Hinsicht deutlich überlegen.
Bereits das folgende einfache Beispiel zeigt, wie man den neuen Nummerierungsstil, der aus arabischen Zahlen, denen unmittelbar ein Kleinbuchstabe folgt, definieren kann:
% Es wird ein neues xindy-Modul angelegt, das die neue Nummerierungsart für
% Seiten bereitstellt.
\begin{filecontents*}{arabicalpha.xdy}
(define-location-class "arabic-pages" ("arabic-numbers"))
(define-location-class "arabicalpha-pages" ("arabic-numbers" "alpha"))
(define-location-class-order ("arabic-pages" "arabicalpha-pages"))
\end{filecontents*}
\documentclass{article}
\usepackage{scrbase}% für \l@addto@macro
\usepackage{lipsum}
\usepackage{makeidx}\makeindex
\makeatletter
% Der Befehl `\pagewithsuffix` schaltet auf die eingeschobenen Seiten um.
% Er definiert gleichzeitig `\endpagewithsuffix`, das dann wieder zurück
% schaltet.
\newcommand*{\pagewithsuffix}{%
\clearpage
\edef\endpagewithsuffix{\noexpand\clearpage
\noexpand\setcounter{page}{\the\value{page}}%
\noexpand\stepcounter{page}}%
\expandafter\l@addto@macro\expandafter\endpagewithsuffix\expandafter{%
\expandafter\def\expandafter\thepage\expandafter{\thepage}%
}%
\edef\thepage{\thepage\noexpand\alph{page}}%
\setcounter{page}{1}%
}
\makeatother
% Die folgende Anweisung dient nur meinem persönlichen Komfort.
\newcommand*\lipsumpages{%
\lipsum[1]\index{Eintrag}
\lipsum[2-5]\index{Eintrag}
\lipsum[6-10]\index{Eintrag}
}
\begin{document}
\lipsumpages
\pagewithsuffix
\lipsumpages\lipsumpages
\endpagewithsuffix
\printindex
\end{document}
Nach dem ersten LaTeX-Lauf kann man in diesem einfachen Fall `xindy` über den MakeIndex-Kompatibilitäts-Wrapper `texindy` wie folgt aufrufen:
texindy -M arabicalpha.xdy <DATEINAME>
wobei `<DATEINAME>` der Name der `idx`-Datei ist. Dabei ist `xindy` sogar in der Lage, die aufeinanderfolgenden Seiten 3a bis 3d korrekt zusammenzufassen:
![alt text][3]
Wie man sieht, lohnt es sich, über einen Umstieg auf `xindy` nachzudenken.
[1]: http://www.ctan.org/pkg/hyperref
[2]: http://www.ctan.org/pkg/xindy
[3]: http://i.imgur.com/4pG2tGr.png