summaryrefslogtreecommitdiff
path: root/indexing/xindex/doc
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /indexing/xindex/doc
Initial commit
Diffstat (limited to 'indexing/xindex/doc')
-rw-r--r--indexing/xindex/doc/Makefile52
-rw-r--r--indexing/xindex/doc/tests/HADW.idx27
-rw-r--r--indexing/xindex/doc/tests/HADW.ind38
-rw-r--r--indexing/xindex/doc/tests/HADW.pdfbin0 -> 20275 bytes
-rw-r--r--indexing/xindex/doc/tests/HADW.tex19
-rw-r--r--indexing/xindex/doc/tests/HADW2.idx47
-rw-r--r--indexing/xindex/doc/tests/HADW2.ind68
-rw-r--r--indexing/xindex/doc/tests/Umlaute.idx24
-rw-r--r--indexing/xindex/doc/tests/Umlaute.ind34
-rw-r--r--indexing/xindex/doc/tests/Umlaute.pdfbin0 -> 17462 bytes
-rw-r--r--indexing/xindex/doc/tests/Umlaute.tex23
-rw-r--r--indexing/xindex/doc/tests/Umlaute2.idx24
-rw-r--r--indexing/xindex/doc/tests/Umlaute2.ind34
-rw-r--r--indexing/xindex/doc/tests/Umlaute2.pdfbin0 -> 21640 bytes
-rw-r--r--indexing/xindex/doc/tests/Umlaute2.tex25
-rw-r--r--indexing/xindex/doc/tests/buch.idx929
-rw-r--r--indexing/xindex/doc/tests/buch.pdfbin0 -> 49722 bytes
-rw-r--r--indexing/xindex/doc/tests/buch.tex19
-rw-r--r--indexing/xindex/doc/tests/demo-hyperref.idx187
-rw-r--r--indexing/xindex/doc/tests/demo-hyperref.ind233
-rw-r--r--indexing/xindex/doc/tests/demo-hyperref.pdfbin0 -> 32794 bytes
-rw-r--r--indexing/xindex/doc/tests/demo-hyperref.tex13
-rw-r--r--indexing/xindex/doc/tests/demo.idx206
-rw-r--r--indexing/xindex/doc/tests/demo.ind254
-rw-r--r--indexing/xindex/doc/tests/demo.pdfbin0 -> 39233 bytes
-rw-r--r--indexing/xindex/doc/tests/demo.tex56
-rw-r--r--indexing/xindex/doc/tests/demo2.idx5
-rw-r--r--indexing/xindex/doc/tests/demo2.ind8
-rw-r--r--indexing/xindex/doc/tests/demo3.idx5
-rw-r--r--indexing/xindex/doc/tests/demo3.ind8
-rw-r--r--indexing/xindex/doc/tests/demo3.pdfbin0 -> 10054 bytes
-rw-r--r--indexing/xindex/doc/tests/demo3.tex26
-rwxr-xr-xindexing/xindex/doc/tests/runTests.sh35
-rw-r--r--indexing/xindex/doc/xindex-doc.pdfbin0 -> 359030 bytes
-rw-r--r--indexing/xindex/doc/xindex-doc.tex1430
35 files changed, 3829 insertions, 0 deletions
diff --git a/indexing/xindex/doc/Makefile b/indexing/xindex/doc/Makefile
new file mode 100644
index 0000000000..a4fb2b95df
--- /dev/null
+++ b/indexing/xindex/doc/Makefile
@@ -0,0 +1,52 @@
+# `Makefile' for `pst-grad.pdf', hv, 2008/08/11
+
+.SUFFIXES : .tex .ltx .dvi .ps .pdf .eps
+
+PACKAGE = xhfill
+
+MAIN = xindex-doc
+
+LATEX = lualatex
+
+ARCHNAME = $(MAIN)-$(shell date +%y%m%d)
+
+ARCHFILES = $(PACKAGE).sty $(PACKAGE).tex $(PACKAGE).pro $(MAIN).tex README Changes Makefile
+
+#TDS = ~/PSTricks/PSTricks-TDS
+
+all : doc clean
+# clean
+doc:
+ $(LATEX) --shell-escape $(MAIN)
+# if ! test -f $(MAIN).glo ; then touch $(MAIN).glo; fi
+ if ! test -f $(MAIN).idx ; then touch $(MAIN).idx; fi
+# makeindex -s gglo.ist -t $(MAIN).glg -o $(MAIN).gls $(MAIN).glo
+ xindex -a $(MAIN).idx
+# bibtex $(MAIN)
+ $(LATEX) --shell-escape $(MAIN)
+# $(LATEX) --shell-escape $(MAIN)
+
+clean :
+ $(RM) *.dvi *.aux *.log *.xml xindex-?.tex xindex-??.tex *.ind *.idx *.toc *.out *.ilg
+
+veryclean : clean
+ $(RM) *.pdf
+
+arch :
+ zip $(ARCHNAME).zip $(ARCHFILES)
+
+tds:
+ cp -u Changes $(TDS)/doc/latex/$(PACKAGE)/
+ cp -u README $(TDS)/doc/latex/$(PACKAGE)/
+ cp -u $(MAIN).pdf $(TDS)/doc/latex/$(PACKAGE)/
+#
+ cp -u Changes $(TDS)/tex/latex/$(PACKAGE)/
+ cp -u $(PACKAGE).sty $(TDS)/tex/latex/$(PACKAGE)/
+#
+ cp -u Changes $(TDS)/source/$(PACKAGE)/
+ cp -u $(MAIN).tex $(TDS)/source/$(PACKAGE)/
+ cp -u $(MAIN).bib $(TDS)/source/$(PACKAGE)/
+ cp -u Makefile $(TDS)/source/$(PACKAGE)/
+
+
+# EOF
diff --git a/indexing/xindex/doc/tests/HADW.idx b/indexing/xindex/doc/tests/HADW.idx
new file mode 100644
index 0000000000..bc1e2f4ed4
--- /dev/null
+++ b/indexing/xindex/doc/tests/HADW.idx
@@ -0,0 +1,27 @@
+\indexentry{Aachen, Johannes von}{VII/1-215}
+\indexentry{Aarones}{VII/2/1-1003}
+\indexentry{Aarones}{VII/2/1-1012}
+\indexentry{Abrahamson}{VII/2/1-864}
+\indexentry{Abrahamson}{VII/2/1-991}
+\indexentry{Abrahamson}{VII/2/1-1048}
+\indexentry{Abrahamson}{VII/2/1-1067}
+\indexentry{Abrahamson}{VII/2/1-1156}
+\indexentry{Adamson}{VII/2/1-1223}
+\indexentry{Adamson}{IX/1-1228}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-758}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-759}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-760}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-761}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-765}
+\indexentry{Adrian!Hauster}{VII/1-514}
+\indexentry{Adrian!Hauster}{XI/1-515}
+\indexentry{Alting!Mensa}{VII/1-426}
+\indexentry{Alting!Mensa}{VII/1-434}
+\indexentry{Alting!Mensa}{VII/1-453}
+\indexentry{Alting!Mensa}{VII/1-455}
+\indexentry{Alting!Mensa}{VII/1-466}
+\indexentry{Alting!Mensa}{VII/1-467}
+\indexentry{Bremen!Heinz von, Erzbischof|see{Sachsen-Lauenburg}}{}
+\indexentry{Osnabrück!Heinz von, Bischof|see{Sachsen-Lauenburg}}{}
+\indexentry{Zwingl, Haldrich}{IX-479}
+\indexentry{Zwingl, Haldrich}{IX-692} \ No newline at end of file
diff --git a/indexing/xindex/doc/tests/HADW.ind b/indexing/xindex/doc/tests/HADW.ind
new file mode 100644
index 0000000000..06c3c2515a
--- /dev/null
+++ b/indexing/xindex/doc/tests/HADW.ind
@@ -0,0 +1,38 @@
+
+\begin{theindex}
+
+\indexspace
+\textbf{A}
+\nopagebreak[4]
+ \item Aachen, Johannes von, {VII/1 215}
+ \item Aarones, {VII/2/1 1003}, {1012}
+ \item Abrahamson, {VII/2/1 864}, {991}, {1048}, {1067}, {1156}
+ \item Adamson, {VII/2/1 1223}, {IX/1 1228}
+ \item Adrian
+ \subitem -\,Hauster, {VII/1 514}, {XI/1 515}
+ \item Alting
+ \subitem -\,Mensa, {VII/1 426}, {434}, {453}, {455}, {466f}
+
+\indexspace
+\textbf{B}
+\nopagebreak[4]
+ \item Bremen
+ \subitem -\,Heinz von, Erzbischof, \see{Sachsen-Lauenburg}{}
+
+\indexspace
+\textbf{O}
+\nopagebreak[4]
+ \item Osnabrück
+ \subitem -\,Heinz von, Bischof, \see{Sachsen-Lauenburg}{}
+
+\indexspace
+\textbf{S}
+\nopagebreak[4]
+ \item Schleswig-Holstein
+ \subitem -\,Rudolf von, Herzog, {VII/2/1 758--761}, {765}
+
+\indexspace
+\textbf{Z}
+\nopagebreak[4]
+ \item Zwingl, Haldrich, {IX 479}, {692}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/HADW.pdf b/indexing/xindex/doc/tests/HADW.pdf
new file mode 100644
index 0000000000..c569984fda
--- /dev/null
+++ b/indexing/xindex/doc/tests/HADW.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/HADW.tex b/indexing/xindex/doc/tests/HADW.tex
new file mode 100644
index 0000000000..2c26732da2
--- /dev/null
+++ b/indexing/xindex/doc/tests/HADW.tex
@@ -0,0 +1,19 @@
+\documentclass[paper=a4,parskip=half-,ngerman,DIV=13]{scrartcl}
+\usepackage{eurosym}
+\usepackage[silent]{fontspec}
+\usepackage{libertinus-otf}
+\usepackage{babel}
+\usepackage{makeidx}
+\usepackage{dtk-logos}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+
+\begin{document}
+Run with \verb|xindex --config HAdW|
+
+\printindex
+\end{document}
diff --git a/indexing/xindex/doc/tests/HADW2.idx b/indexing/xindex/doc/tests/HADW2.idx
new file mode 100644
index 0000000000..82bd8e365c
--- /dev/null
+++ b/indexing/xindex/doc/tests/HADW2.idx
@@ -0,0 +1,47 @@
+\indexentry{Aachen, Johannes von}{VII/1-215}
+\indexentry{Aarones}{VII/2/1-1003}
+\indexentry{Aarones}{VII/2/1-1012}
+\indexentry{Abrahamson}{VII/2/1-864}
+\indexentry{Abrahamson}{VII/2/1-991}
+\indexentry{Abrahamson}{VII/2/1-1048}
+\indexentry{Abrahamson}{VII/2/1-1067}
+\indexentry{Abrahamson}{VII/2/1-1156}
+\indexentry{Adamson}{VII/2/1-1223}
+\indexentry{Adamson}{IX/1-1228}
+\indexentry{Karl V}{VII/1-34}
+\indexentry{Karl II}{VII/1-147}
+\indexentry{Karl III}{VII/1-149}
+\indexentry{Karl VI}{VII/1-296}
+\indexentry{Karl IV}{VII/1-34}
+\indexentry{Karl IV}{VII/1-147}
+\indexentry{Karl X}{VII/1-149}
+\indexentry{Karl IX}{VII/1-296}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-758}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-759}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-760}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-761}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-765}
+\indexentry{Adrian!Hauster}{VII/1-514}
+\indexentry{Adrian!Hauster}{XI/1-515}
+\indexentry{Alting!Mensa}{VII/1-426}
+\indexentry{Alting!Mensa}{VII/1-434}
+\indexentry{Alting!Mensa}{VII/1-453}
+\indexentry{Alting!Mensa}{VII/1-455}
+\indexentry{Alting!Mensa}{VII/1-466}
+\indexentry{Alting!Mensa}{VII/1-467}
+\indexentry{Bremen!Heinz von, Erzbischof|see{Sachsen-Lauenburg}}{}
+\indexentry{Osnabrück!Heinz von, Bischof|see{Sachsen-Lauenburg}}{}
+\indexentry{Zwingl, Haldrich}{IX-479}
+\indexentry{Zwingl, Haldrich}{IX-692}
+\indexentry{Julian!Apostata, römischer Kaiser}{VII/2/1-904}
+\indexentry{Justinian I., byzantinischer Kaiser}{VII/1-326}
+\indexentry{Justinian I., byzantinischer Kaiser}{VII/1-734}
+\indexentry{Justinian I., byzantinischer Kaiser}{VII/2/1-1011}
+\indexentry{Karl!V., Kaiser}{VII/1-34}
+\indexentry{Karl!II., Kaiser}{VII/1-147}
+\indexentry{Karl!III., Kaiser}{VII/1-149}
+\indexentry{Karl!VI., Kaiser}{VII/1-296}
+\indexentry{Karl!IV., Kaiser}{VII/1-34}
+\indexentry{Karl!IV., Kaiser}{VII/1-147}
+\indexentry{Karl!X., Kaiser}{VII/1-149}
+\indexentry{Karl!IX., Kaiser}{VII/1-296}
diff --git a/indexing/xindex/doc/tests/HADW2.ind b/indexing/xindex/doc/tests/HADW2.ind
new file mode 100644
index 0000000000..04ba01c38b
--- /dev/null
+++ b/indexing/xindex/doc/tests/HADW2.ind
@@ -0,0 +1,68 @@
+
+\begin{theindex}
+
+\indexspace
+\textbf{K}
+\nopagebreak[4]
+ \item Karl II, {VII/1 147}
+ \item Karl III, {VII/1 149}
+ \item Karl IV, {VII/1 147}, {34}
+ \item Karl V, {VII/1 34}
+ \item Karl VI, {VII/1 296}
+ \item Karl IX, {VII/1 296}
+ \item Karl X, {VII/1 149}
+
+\indexspace
+\textbf{A}
+\nopagebreak[4]
+ \item Aachen, Johannes von, {VII/1 215}
+ \item Aarones, {VII/2/1 1003}, {1012}
+ \item Abrahamson, {VII/2/1 1048}, {1067}, {1156}, {864}, {991}
+ \item Adamson, {VII/2/1 1223}, {IX/1 1228}
+ \item Adrian
+ \subitem -\,Hauster, {VII/1 514}, {XI/1 515}
+ \item Alting
+ \subitem -\,Mensa, {VII/1 426}, {434}, {453}, {455}, {466f}
+
+\indexspace
+\textbf{B}
+\nopagebreak[4]
+ \item Bremen
+ \subitem -\,Heinz von, Erzbischof, \see{Sachsen-Lauenburg}{}
+
+\indexspace
+\textbf{J}
+\nopagebreak[4]
+ \item Julian
+ \subitem -\,Apostata, römischer Kaiser, {VII/2/1 904}
+ \item Justinian I., byzantinischer Kaiser, {VII/1 326}, {734}, {VII/2/1 1011}
+
+\indexspace
+\textbf{K}
+\nopagebreak[4]
+ \item Karl
+ \subitem -\,II., Kaiser, {VII/1 147}
+ \subitem -\,III., Kaiser, {VII/1 149}
+ \subitem -\,IV., Kaiser, {VII/1 147}, {34}
+ \subitem -\,IX., Kaiser, {VII/1 296}
+ \subitem -\,V., Kaiser, {VII/1 34}
+ \subitem -\,VI., Kaiser, {VII/1 296}
+ \subitem -\,X., Kaiser, {VII/1 149}
+
+\indexspace
+\textbf{O}
+\nopagebreak[4]
+ \item Osnabrück
+ \subitem -\,Heinz von, Bischof, \see{Sachsen-Lauenburg}{}
+
+\indexspace
+\textbf{S}
+\nopagebreak[4]
+ \item Schleswig-Holstein
+ \subitem -\,Rudolf von, Herzog, {VII/2/1 758--761}, {765}
+
+\indexspace
+\textbf{Z}
+\nopagebreak[4]
+ \item Zwingl, Haldrich, {IX 479}, {692}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/Umlaute.idx b/indexing/xindex/doc/tests/Umlaute.idx
new file mode 100644
index 0000000000..5c9f3c1427
--- /dev/null
+++ b/indexing/xindex/doc/tests/Umlaute.idx
@@ -0,0 +1,24 @@
+\indexentry{Österreich}{1}
+\indexentry{Öresund}{2}
+\indexentry{Ostern}{3}
+\indexentry{Ober}{4}
+\indexentry{Oberin}{5}
+\indexentry{Österreich}{2}
+\indexentry{Öresund}{4}
+\indexentry{Ostern}{4}
+\indexentry{Ober}{6}
+\indexentry{Oberin}{6}
+\indexentry{Obstler}{7}
+\indexentry{Öl}{8}
+\indexentry{ölen}{9}
+\indexentry{Ödem}{4}
+\indexentry{Oligarch}{28}
+\indexentry{Oder}{58}
+\indexentry{oder}{8}
+\indexentry{Fluss!Oder}{479}
+\indexentry{Oder|seealso{Fluss}}{33}
+\indexentry{Göbel}{58}
+\indexentry{Goethe}{58}
+\indexentry{Göthe}{58}
+\indexentry{Götz}{58}
+\indexentry{Goldmann}{58}
diff --git a/indexing/xindex/doc/tests/Umlaute.ind b/indexing/xindex/doc/tests/Umlaute.ind
new file mode 100644
index 0000000000..fe7d43950e
--- /dev/null
+++ b/indexing/xindex/doc/tests/Umlaute.ind
@@ -0,0 +1,34 @@
+
+\begin{theindex}
+
+\indexspace
+\textbf{F}
+\nopagebreak[4]
+ \item Fluss
+ \subitem -\,Oder, {479}
+
+\indexspace
+\textbf{G}
+\nopagebreak[4]
+ \item Göbel, {58}
+ \item Goethe, {58}
+ \item Goldmann, {58}
+ \item Göthe, {58}
+ \item Götz, {58}
+
+\indexspace
+\textbf{O}
+\nopagebreak[4]
+ \item Ober, {4}, {6}
+ \item Oberin, {5f}
+ \item Obstler, {7}
+ \item Ödem, {4}
+ \item oder, {8}
+ \item Oder, \seealso{Fluss}{33}, {58}
+ \item Öl, {8}
+ \item ölen, {9}
+ \item Oligarch, {28}
+ \item Öresund, {2}, {4}
+ \item Ostern, {3f}
+ \item Österreich, {1f}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/Umlaute.pdf b/indexing/xindex/doc/tests/Umlaute.pdf
new file mode 100644
index 0000000000..8e5e63500d
--- /dev/null
+++ b/indexing/xindex/doc/tests/Umlaute.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/Umlaute.tex b/indexing/xindex/doc/tests/Umlaute.tex
new file mode 100644
index 0000000000..7c0d4e9831
--- /dev/null
+++ b/indexing/xindex/doc/tests/Umlaute.tex
@@ -0,0 +1,23 @@
+\documentclass[paper=a4,parskip=half-,ngerman]{scrartcl}
+\usepackage{eurosym}
+\usepackage[silent]{fontspec}
+\usepackage{libertinus-otf}
+\usepackage{babel}
+\usepackage{hvindex}
+\usepackage{makeidx}
+
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+
+%\makeindex
+\begin{document}
+\def\indexname{Sortierung nach DIN Variante 1: Ö$\rightarrow$O}
+
+\printindex
+
+
+\end{document}
diff --git a/indexing/xindex/doc/tests/Umlaute2.idx b/indexing/xindex/doc/tests/Umlaute2.idx
new file mode 100644
index 0000000000..5c9f3c1427
--- /dev/null
+++ b/indexing/xindex/doc/tests/Umlaute2.idx
@@ -0,0 +1,24 @@
+\indexentry{Österreich}{1}
+\indexentry{Öresund}{2}
+\indexentry{Ostern}{3}
+\indexentry{Ober}{4}
+\indexentry{Oberin}{5}
+\indexentry{Österreich}{2}
+\indexentry{Öresund}{4}
+\indexentry{Ostern}{4}
+\indexentry{Ober}{6}
+\indexentry{Oberin}{6}
+\indexentry{Obstler}{7}
+\indexentry{Öl}{8}
+\indexentry{ölen}{9}
+\indexentry{Ödem}{4}
+\indexentry{Oligarch}{28}
+\indexentry{Oder}{58}
+\indexentry{oder}{8}
+\indexentry{Fluss!Oder}{479}
+\indexentry{Oder|seealso{Fluss}}{33}
+\indexentry{Göbel}{58}
+\indexentry{Goethe}{58}
+\indexentry{Göthe}{58}
+\indexentry{Götz}{58}
+\indexentry{Goldmann}{58}
diff --git a/indexing/xindex/doc/tests/Umlaute2.ind b/indexing/xindex/doc/tests/Umlaute2.ind
new file mode 100644
index 0000000000..d128238f69
--- /dev/null
+++ b/indexing/xindex/doc/tests/Umlaute2.ind
@@ -0,0 +1,34 @@
+
+\begin{theindex}
+
+\indexspace
+\textbf{F}
+\nopagebreak[4]
+ \item Fluss
+ \subitem -\,Oder, {479}
+
+\indexspace
+\textbf{G}
+\nopagebreak[4]
+ \item Göbel, {58}
+ \item Goethe, {58}
+ \item Göthe, {58}
+ \item Götz, {58}
+ \item Goldmann, {58}
+
+\indexspace
+\textbf{O}
+\nopagebreak[4]
+ \item Ober, {4}, {6}
+ \item Oberin, {5f}
+ \item Obstler, {7}
+ \item oder, {8}
+ \item Oder, \seealso{Fluss}{33}, {58}
+ \item Ödem, {4}
+ \item Öl, {8}
+ \item ölen, {9}
+ \item Öresund, {2}, {4}
+ \item Österreich, {1f}
+ \item Oligarch, {28}
+ \item Ostern, {3f}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/Umlaute2.pdf b/indexing/xindex/doc/tests/Umlaute2.pdf
new file mode 100644
index 0000000000..b2d94bde3f
--- /dev/null
+++ b/indexing/xindex/doc/tests/Umlaute2.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/Umlaute2.tex b/indexing/xindex/doc/tests/Umlaute2.tex
new file mode 100644
index 0000000000..a14b945de2
--- /dev/null
+++ b/indexing/xindex/doc/tests/Umlaute2.tex
@@ -0,0 +1,25 @@
+\documentclass[paper=a4,parskip=half-,ngerman]{scrartcl}
+\usepackage{eurosym}
+\usepackage[silent]{fontspec}
+\usepackage{libertinus-otf}
+\usepackage{babel}
+\usepackage{hvindex}
+\usepackage{makeidx}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+
+
+%\makeindex
+\begin{document}
+
+\def\indexname{Sortierung nach DIN Variante 2: Ö$\rightarrow$Oe}%
+\verb|xindex -l de -c DIN2 Umlaute2 |
+
+\printindex
+
+
+\end{document}
diff --git a/indexing/xindex/doc/tests/buch.idx b/indexing/xindex/doc/tests/buch.idx
new file mode 100644
index 0000000000..aab5e9be1b
--- /dev/null
+++ b/indexing/xindex/doc/tests/buch.idx
@@ -0,0 +1,929 @@
+\indexentry {TeXLive@\TeXLive}{3}
+\indexentry {Textverarbeitung}{6}
+\indexentry {programmiert}{6}
+\indexentry {Befehlssyntax}{6}
+\indexentry {Satzprogramm}{6}
+\indexentry {Textverarbeitungsprogramm}{7}
+\indexentry {Absatz}{7}
+\indexentry {Umbruch}{7}
+\indexentry {Mikrotypografie}{7}
+\indexentry {Dehnungspunkte}{9}
+\indexentry {Dokumentenklasse}{9}
+\indexentry {Sprachauswahl}{9}
+\indexentry {Eingabekodierung}{9}
+\indexentry {Schriftkodierung}{9}
+\indexentry {Layout}{9}
+\indexentry {Makefile}{9}
+\indexentry {GUI}{9}
+\indexentry {Schrifteinbindung}{9}
+\indexentry {etex@e\TeX }{11}
+\indexentry {pdf\TeX }{11}
+\indexentry {pdfe\TeX }{11}
+\indexentry {Unicode}{11}
+\indexentry {OpenType}{12}
+\indexentry {TrueType}{12}
+\indexentry {Type"~1}{12}
+\indexentry {Skriptsprache}{13}
+\indexentry {Format}{13}
+\indexentry {pdf\TeX }{13}
+\indexentry {TeXLive@\TeXLive}{13}
+\indexentry {Distribution}{13}
+\indexentry {TeXLive@\TeXLive}{13}
+\indexentry {Linux}{13}
+\indexentry {Mac OS~X}{13}
+\indexentry {Windows}{13}
+\indexentry {Solaris}{13}
+\indexentry {TeXLive@\TeXLive}{13}
+\indexentry {Mac\TeX }{13}
+\indexentry {TeXLive@\TeXLive}{13}
+\indexentry {MiK\TeX }{13}
+\indexentry {fp\TeX }{13}
+\indexentry {Xem\TeX }{13}
+\indexentry {TeXLive@\TeXLive}{13}
+\indexentry {TeXLive@\TeXLive}{13}
+\indexentry {TeX-Collection@\TeX -Collection}{13}
+\indexentry {ISO-Image}{14}
+\indexentry {TeXLive@\TeXLive}{14}
+\indexentry {Umgebungsvariable}{14}
+\indexentry {Systemadministrator}{14}
+\indexentry {root}{14}
+\indexentry {TeXLive@\TeXLive}{15}
+\indexentry {TeXLive@\TeXLive}{16}
+\indexentry {TeXLive@\TeXLive}{17}
+\indexentry {TeXLive@\TeXLive}{18}
+\indexentry {TeXLive@\TeXLive}{18}
+\indexentry {TeXLive@\TeXLive}{18}
+\indexentry {TeXLive@\TeXLive}{18}
+\indexentry {TeXLive@\TeXLive}{18}
+\indexentry {Updatemanager}{18}
+\indexentry {TeXLive@\TeXLive}{18}
+\indexentry {TeXLive@\TeXLive}{19}
+\indexentry {TeXLive@\TeXLive}{19}
+\indexentry {TeXLive@\TeXLive}{19}
+\indexentry {TeXLive@\TeXLive}{20}
+\indexentry {TeXLive@\TeXLive}{20}
+\indexentry {TeXLive@\TeXLive}{20}
+\indexentry {TeXLive@\TeXLive}{21}
+\indexentry {TeXLive@\TeXLive}{21}
+\indexentry {TeXLive@\TeXLive}{21}
+\indexentry {TeXLive@\TeXLive}{21}
+\indexentry {TeXLive@\TeXLive}{21}
+\indexentry {TeXLive@\TeXLive}{21}
+\indexentry {TeXLive@\TeXLive}{21}
+\indexentry {MiK\TeX }{21}
+\indexentry {TeXLive@\TeXLive}{21}
+\indexentry {Windows}{21}
+\indexentry {MiK\TeX !Paketmanager}{21}
+\indexentry {Adobe Reader}{22}
+\indexentry {pro\TeX t}{22}
+\indexentry {pro\TeX t}{22}
+\indexentry {Adobe Reader}{22}
+\indexentry {MiK\TeX }{23}
+\indexentry {Sumatra-PDF}{23}
+\indexentry {TeXStudio@\TeX Studio}{23}
+\indexentry {TeXLive@\TeXLive}{23}
+\indexentry {TeXLive@\TeXLive}{23}
+\indexentry {TeXShop@\TeX Shop}{23}
+\indexentry {TeXworks@\TeX works}{23}
+\indexentry {TeXLive@\TeXLive}{23}
+\indexentry {TeXLive@\TeXLive}{25}
+\indexentry {TeXLive@\TeXLive}{25}
+\indexentry {TeXLive@\TeXLive}{25}
+\indexentry {TeXLive@\TeXLive}{26}
+\indexentry {TeXLive@\TeXLive}{26}
+\indexentry {TeXLive@\TeXLive}{26}
+\indexentry {GUI}{29}
+\indexentry {IDE}{29}
+\indexentry {TeXmaker@\TeX maker}{29}
+\indexentry {Emacs}{29}
+\indexentry {AUC\TeX }{29}
+\indexentry {LaTeX-Editor@\LaTeX -Editor}{29}
+\indexentry {Fehlersuche}{29}
+\indexentry {TeXmaker@\TeX maker}{29}
+\indexentry {TeXnicCenter@\TeX nicCenter}{31}
+\indexentry {TeXnicCenter@\TeX nicCenter}{31}
+\indexentry {TeXLive@\TeXLive}{31}
+\indexentry {Viewer}{31}
+\indexentry {Bildschirmausgabe}{31}
+\indexentry {Pfade}{31}
+\indexentry {Inhaltsverzeichnis}{32}
+\indexentry {Bibliografie}{32}
+\indexentry {Index}{32}
+\indexentry {Glossar}{32}
+\indexentry {Projekt}{32}
+\indexentry {Viewer}{32}
+\indexentry {Endlosschleife}{32}
+\indexentry {Navigator}{33}
+\indexentry {Navigationsleiste}{33}
+\indexentry {Fehlersuche}{33}
+\indexentry {Batchmodus}{34}
+\indexentry {TeXnicCenter@\TeX nicCenter}{35}
+\indexentry {Rechtschreibprüfung}{35}
+\indexentry {OpenOffice}{35}
+\indexentry {Benutzerwörterbuch}{35}
+\indexentry {Gnome}{36}
+\indexentry {Kile}{36}
+\indexentry {Kodierung}{38}
+\indexentry {UTF-8}{38}
+\indexentry {Umkodierung}{38}
+\indexentry {TeXnicCenter@\TeX nicCenter}{38}
+\indexentry {Projekt}{38}
+\indexentry {Fehlersuche}{39}
+\indexentry {Batchmode}{39}
+\indexentry {Rechtschreibprüfung}{40}
+\indexentry {Rechtschreibprüfung}{40}
+\indexentry {Wörterbuch}{40}
+\indexentry {Rechtschreibprüfung}{47}
+\indexentry {Präambel}{51}
+\indexentry {Textkörper}{51}
+\indexentry {Document@\idxtextClasses !article@{\sffamily article}}{52}
+\indexentry {Document@\idxtextClasses !article@{\sffamily article}}{52}
+\indexentry {Document@\idxtextClasses !article@{\sffamily article}}{53}
+\indexentry {Präambel}{53}
+\indexentry {Dokumentenkörper}{53}
+\indexentry {Präambel}{53}
+\indexentry {Textkörper}{53}
+\indexentry {Präambel}{54}
+\indexentry {Schriftkodierung}{54}
+\indexentry {Schriftkodierung}{54}
+\indexentry {Vektorschrift}{54}
+\indexentry {Eingabekodierung}{54}
+\indexentry {Titel}{54}
+\indexentry {Autor}{54}
+\indexentry {Datum}{54}
+\indexentry {Adobe Reader}{55}
+\indexentry {Zeilenabstand}{56}
+\indexentry {Durchschuss}{56}
+\indexentry {skip}{58}
+\indexentry {Dokumentenklasse}{59}
+\indexentry {Logdatei}{59}
+\indexentry {Dokumentenklasse}{59}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{59}
+\indexentry {Document@\idxtextClasses !article@{\sffamily article}}{59}
+\indexentry {Document@\idxtextClasses !report@{\sffamily report}}{59}
+\indexentry {Document@\idxtextClasses !letter@{\sffamily letter}}{59}
+\indexentry {Document@\idxtextClasses !memoir@{\sffamily memoir}}{59}
+\indexentry {KOMAScript@\KOMAScript }{59}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{59}
+\indexentry {Document@\idxtextClasses !article@{\sffamily article}}{59}
+\indexentry {Document@\idxtextClasses !report@{\sffamily report}}{59}
+\indexentry {Document@\idxtextClasses !article@{\sffamily article}}{59}
+\indexentry {Document@\idxtextClasses !letter@{\sffamily letter}}{59}
+\indexentry {Document@\idxtextClasses !article@{\sffamily article}}{60}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{60}
+\indexentry {Document@\idxtextClasses !report@{\sffamily report}}{60}
+\indexentry {Document@\idxtextClasses !letter@{\sffamily letter}}{60}
+\indexentry {Document@\idxtextClasses !memoir@{\sffamily memoir}}{60}
+\indexentry {KOMAScript@\KOMAScript }{60}
+\indexentry {Document@\idxtextClasses !memoir@{\sffamily memoir}}{60}
+\indexentry {Schneidemarken}{60}
+\indexentry {KOMAScript@\KOMAScript }{61}
+\indexentry {Document@\idxtextClasses !scrbook@{\sffamily scrbook}}{61}
+\indexentry {Document@\idxtextClasses !scrartcl@{\sffamily scrartcl}}{61}
+\indexentry {Document@\idxtextClasses !scrreprt@{\sffamily scrreprt}}{61}
+\indexentry {Document@\idxtextClasses !scrlettr2@{\sffamily scrlettr2}}{61}
+\indexentry {Briefklasse}{61}
+\indexentry {Document@\idxtextClasses !letter@{\sffamily letter}}{61}
+\indexentry {Bindekorrektur}{61}
+\indexentry {Document@\idxtextClasses !scrlettr2@{\sffamily scrlettr2}}{61}
+\indexentry {Document@\idxtextClasses !scrartcl@{\sffamily scrartcl}}{61}
+\indexentry {Document@\idxtextClasses !scrreprt@{\sffamily scrreprt}}{61}
+\indexentry {Document@\idxtextClasses !scrbook@{\sffamily scrbook}}{61}
+\indexentry {Document@\idxtextClasses !scrlettr2@{\sffamily scrlettr2}}{61}
+\indexentry {Papierformat}{62}
+\indexentry {Bindekorrektur}{62}
+\indexentry {Teilungsverhältnis}{62}
+\indexentry {Kopfzeile}{62}
+\indexentry {Druckseiten}{62}
+\indexentry {Druckseiten}{62}
+\indexentry {Spalten}{62}
+\indexentry {Spalten}{62}
+\indexentry {Kapitelanfang}{62}
+\indexentry {Seitenvorschub}{62}
+\indexentry {Absatzabstand}{62}
+\indexentry {Absatzeinzug}{62}
+\indexentry {Kopf\/linie}{62}
+\indexentry {Fußlinie}{62}
+\indexentry {Kapitel}{62}
+\indexentry {Anhang}{62}
+\indexentry {Bildunterschrift}{62}
+\indexentry {Tabellenbeschriftung}{62}
+\indexentry {Schriftgröße}{63}
+\indexentry {Verzeichnisse}{63}
+\indexentry {Inhaltsverzeichnis}{63}
+\indexentry {Zusammenfassung}{63}
+\indexentry {Nummerierung}{63}
+\indexentry {Schrift!Höhe}{64}
+\indexentry {Schrift!Breite}{64}
+\indexentry {Schrift!Tiefe}{64}
+\indexentry {Schreibmaschinenschrift}{64}
+\indexentry {Typewriterschrift}{64}
+\indexentry {Monospaceschrift}{64}
+\indexentry {Backslash}{65}
+\indexentry {Eingabekodierung}{67}
+\indexentry {Kodierung}{67}
+\indexentry {Kodierung!ascii}{67}
+\indexentry {ISO 8859-1}{67}
+\indexentry {Albanisch}{67}
+\indexentry {Dänisch}{67}
+\indexentry {Deutsch}{67}
+\indexentry {Englisch}{67}
+\indexentry {Faröisch}{67}
+\indexentry {Finnisch}{67}
+\indexentry {Französisch}{67}
+\indexentry {Galizisch}{67}
+\indexentry {Irisch}{67}
+\indexentry {Isländisch}{67}
+\indexentry {Katalanisch}{67}
+\indexentry {Niederländisch}{67}
+\indexentry {Norwegisch}{67}
+\indexentry {Portugiesisch}{67}
+\indexentry {Schwedisch}{67}
+\indexentry {Spanisch}{67}
+\indexentry {ISO 8859-2}{67}
+\indexentry {Kroatisch}{67}
+\indexentry {Polnisch}{67}
+\indexentry {Rumänisch}{67}
+\indexentry {Slowakisch}{67}
+\indexentry {Slowenisch}{67}
+\indexentry {Tschechisch}{67}
+\indexentry {Ungarisch}{67}
+\indexentry {ISO 8859-3}{67}
+\indexentry {Esperanto}{67}
+\indexentry {Maltesisch}{67}
+\indexentry {Türkisch}{67}
+\indexentry {ISO 8859-4}{67}
+\indexentry {Estnisch}{67}
+\indexentry {Lettisch}{67}
+\indexentry {Litauisch}{67}
+\indexentry {ISO 8859-15}{67}
+\indexentry {Französisch}{67}
+\indexentry {Finnisch}{67}
+\indexentry {Windows 1250}{67}
+\indexentry {Windows 1252}{67}
+\indexentry {Windows 1257}{67}
+\indexentry {ANSI}{67}
+\indexentry {Mac OS~X}{67}
+\indexentry {UTF-8}{67}
+\indexentry {Eurozeichen}{67}
+\indexentry {\euro {}}{67}
+\indexentry {Eurozeichen}{68}
+\indexentry {Latin-1}{68}
+\indexentry {Glyph}{70}
+\indexentry {Encodingtabelle}{70}
+\indexentry {Schriftkodierung}{70}
+\indexentry {Bitmap}{70}
+\indexentry {Type-3}{70}
+\indexentry {Vektorschrift}{71}
+\indexentry {Bitmapschrift}{71}
+\indexentry {Cork-Kodierung}{72}
+\indexentry {IPA}{72}
+\indexentry {Cork-Kodierung}{72}
+\indexentry {IPA}{72}
+\indexentry {TrueType}{72}
+\indexentry {OpenType}{72}
+\indexentry {Akzent}{73}
+\indexentry {Trennalgorithmus}{75}
+\indexentry {Standardsprache}{76}
+\indexentry {Kapitel}{76}
+\indexentry {Inhaltsverzeichnis}{76}
+\indexentry {Kroatisch}{76}
+\indexentry {Tschechisch}{76}
+\indexentry {Dänisch}{76}
+\indexentry {Niederländisch}{76}
+\indexentry {Englisch}{76}
+\indexentry {Estländisch}{76}
+\indexentry {Finnisch}{76}
+\indexentry {Französisch}{76}
+\indexentry {Deutsch}{76}
+\indexentry {Griechisch}{76}
+\indexentry {Hebräisch}{76}
+\indexentry {Ungarisch}{76}
+\indexentry {Isländisch}{76}
+\indexentry {Italienisch}{76}
+\indexentry {Niedersorbisch}{76}
+\indexentry {Devnagari}{76}
+\indexentry {Norwegisch}{76}
+\indexentry {Polnisch}{76}
+\indexentry {Portugiesisch}{76}
+\indexentry {Rumänisch}{76}
+\indexentry {Russisch}{76}
+\indexentry {Spanisch}{76}
+\indexentry {Schwedisch}{76}
+\indexentry {Serbisch}{76}
+\indexentry {Türkisch}{76}
+\indexentry {Ukrainisch}{76}
+\indexentry {Datumsformat}{77}
+\indexentry {Uberschrift@Überschriftenformat}{77}
+\indexentry {Trennregeln}{77}
+\indexentry {shorthand}{78}
+\indexentry {\textacutedbl }{78}
+\indexentry {""~@\texttt{""\textasciitilde}}{79}
+\indexentry {""=@\texttt{""=}}{79}
+\indexentry {""""@\texttt{""""}}{79}
+\indexentry {""=@\texttt{""=}}{79}
+\indexentry {""~@\texttt{""\textasciitilde}}{79}
+\indexentry {""""@\texttt{""""}}{79}
+\indexentry {Kroatisch}{80}
+\indexentry {Tcheschisch}{80}
+\indexentry {Niederländisch}{80}
+\indexentry {Englisch}{80}
+\indexentry {Finnisch}{80}
+\indexentry {Französisch}{80}
+\indexentry {Deutsch}{80}
+\indexentry {Griechisch}{80}
+\indexentry {Ungarisch}{80}
+\indexentry {Italienisch}{80}
+\indexentry {Polnisch}{80}
+\indexentry {Portugiesisch}{80}
+\indexentry {Russisch}{80}
+\indexentry {Spanisch}{80}
+\indexentry {Slowakisch}{80}
+\indexentry {Slowenisch}{80}
+\indexentry {Schwedisch}{80}
+\indexentry {Serbisch}{80}
+\indexentry {Türkisch}{80}
+\indexentry {Ukrainisch}{80}
+\indexentry {Anführungszeichen}{81}
+\indexentry {Guillemets}{82}
+\indexentry {Internetadresse}{84}
+\indexentry {URL}{84}
+\indexentry {Serifenschrift}{85}
+\indexentry {Schrift!Serifen}{85}
+\indexentry {Mathematiksatz}{85}
+\indexentry {Vektorschrift}{85}
+\indexentry {Schriftfamilie}{85}
+\indexentry {shape}{86}
+\indexentry {italic}{86}
+\indexentry {slanted}{86}
+\indexentry {Glyph}{87}
+\indexentry {Schrift!Gewicht}{87}
+\indexentry {Schrift!Laufweite}{87}
+\indexentry {Schriftstärke}{87}
+\indexentry {Schriftgröße}{87}
+\indexentry {Zeichensatzbefehle}{87}
+\indexentry {Kursivkorrektur}{88}
+\indexentry {Italic-Korrektur}{88}
+\indexentry {Ligaturen}{89}
+\indexentry {Satzspiegel}{91}
+\indexentry {Papierformat}{91}
+\indexentry {DIN~476}{91}
+\indexentry {ISO~216}{91}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{93}
+\indexentry {Document@\idxtextClasses !article@{\sffamily article}}{93}
+\indexentry {Document@\idxtextClasses !report@{\sffamily report}}{93}
+\indexentry {KOMAScript@\KOMAScript }{93}
+\indexentry {Satzspiegel}{94}
+\indexentry {Papierformat}{96}
+\indexentry {Querformat}{96}
+\indexentry {Hochformat}{96}
+\indexentry {Papierhöhe}{96}
+\indexentry {Papierbreite}{96}
+\indexentry {Papiergröße}{96}
+\indexentry {Hurenkind}{102}
+\indexentry {Witwe}{102}
+\indexentry {Schusterjunge}{103}
+\indexentry {Waisenkind}{103}
+\indexentry {Satzspiegelberechnung}{103}
+\indexentry {Satzspiegel}{103}
+\indexentry {Doppelseite}{103}
+\indexentry {Bindekorrektur}{103}
+\indexentry {Neunerteilung}{103}
+\indexentry {Schnittmarken}{110}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{113}
+\indexentry {Schmutztitel}{115}
+\indexentry {Paginierung}{115}
+\indexentry {Seitenstil}{117}
+\indexentry {Fußzeile}{119}
+\indexentry {Kopfzeile}{119}
+\indexentry {Kolumnentitel}{121}
+\indexentry {Seitenstil}{122}
+\indexentry {Kolumnentitel}{126}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{128}
+\indexentry {Document@\idxtextClasses !scrbook@{\sffamily scrbook}}{128}
+\indexentry {Document@\idxtextClasses !report@{\sffamily report}}{128}
+\indexentry {Document@\idxtextClasses !scrreprt@{\sffamily scrreprt}}{128}
+\indexentry {TOC}{128}
+\indexentry {Document@\idxtextClasses !article@{\sffamily article}}{128}
+\indexentry {Document@\idxtextClasses !scrartcl@{\sffamily scrartcl}}{128}
+\indexentry {Inhaltsverzeichnis}{128}
+\indexentry {Gliederungsebene}{128}
+\indexentry {Document@\idxtextClasses !scrbook@{\sffamily scrbook}}{129}
+\indexentry {Document@\idxtextClasses !scrartcl@{\sffamily scrartcl}}{129}
+\indexentry {Zentrieren}{141}
+\indexentry {Flattersatz}{142}
+\indexentry {Flattersatz}{143}
+\indexentry {Worttrennung}{143}
+\indexentry {Liedtexte}{145}
+\indexentry {Silbentrennung}{149}
+\indexentry {Document@\idxtextClasses !article@{\sffamily article}}{150}
+\indexentry {Document@\idxtextClasses !report@{\sffamily report}}{150}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{150}
+\indexentry {Randbemerkung}{157}
+\indexentry {Marginalie}{157}
+\indexentry {optischer Randausgleich}{163}
+\indexentry {Wortzwischenraum}{165}
+\indexentry {Bounding Box}{165}
+\indexentry {Bounding Box}{166}
+\indexentry {TDS}{172}
+\indexentry {LR-Box}{173}
+\indexentry {Absatzbox}{174}
+\indexentry {Label}{181}
+\indexentry {Document@\idxtextClasses !IEEEtran@{\sffamily IEEEtran}}{185}
+\indexentry {Dateilinks}{188}
+\indexentry {PDF/A}{189}
+\indexentry {Bookmark}{189}
+\indexentry {UTF-16}{189}
+\indexentry {URL}{190}
+\indexentry {Gleitumgebung}{200}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{202}
+\indexentry {Übersetzung}{207}
+\indexentry {kritische Edition}{208}
+\indexentry {Projekt}{210}
+\indexentry {Präambel}{210}
+\indexentry {Querverweis}{212}
+\indexentry {Typografie}{213}
+\indexentry {Konventionen}{213}
+\indexentry {Fußnotenzähler}{213}
+\indexentry {tabular@{\ttfamily tabular} Env.|(idxbf}{214}
+\indexentry {Syntax}{214}
+\indexentry {Spaltendefinition}{214}
+\indexentry {Spaltendefinition}{214}
+\indexentry {Tabelle!Breite}{214}
+\indexentry {Wiederholungsfaktor}{215}
+\indexentry {Spaltenabstand}{215}
+\indexentry {Sternversion}{215}
+\indexentry {Tabellenbreite}{215}
+\indexentry {Spaltenabstand}{215}
+\indexentry {Linie!vertikal}{216}
+\indexentry {Linie!horizontal}{216}
+\indexentry {Linie!farbig}{217}
+\indexentry {Spaltendefinition}{217}
+\indexentry {tabular@{\ttfamily tabular} Env.|)idxbf}{218}
+\indexentry {Linie}{219}
+\indexentry {Zeile!Höhe}{219}
+\indexentry {Zeile!Tiefe}{220}
+\indexentry {Fettschrift}{220}
+\indexentry {Inlinemodus}{221}
+\indexentry {Trennlinie}{221}
+\indexentry {Spaltentyp}{222}
+\indexentry {Spaltendefinition}{222}
+\indexentry {Tabelle!Kopf}{222}
+\indexentry {Kopfzeile}{222}
+\indexentry {Trennung}{222}
+\indexentry {Worttrennung}{223}
+\indexentry {Flattersatz}{223}
+\indexentry {Linksbündig}{223}
+\indexentry {Rechtsbündig}{223}
+\indexentry {vertikale Linien}{223}
+\indexentry {Linie!vertikal}{223}
+\indexentry {Spaltendeklaration}{224}
+\indexentry {Tabelle!gerahmt}{224}
+\indexentry {Grundlinie}{224}
+\indexentry {Baseline}{224}
+\indexentry {Basislinie}{224}
+\indexentry {Matrix}{227}
+\indexentry {Spaltendefinition}{228}
+\indexentry {Dokumentenpräambel}{228}
+\indexentry {Spaltentyp}{229}
+\indexentry {delimiter}{229}
+\indexentry {Zeile!Zähler}{230}
+\indexentry {Fußnote}{230}
+\indexentry {Linie}{230}
+\indexentry {Linie!vertikal}{230}
+\indexentry {Linie!horizontal}{230}
+\indexentry {Zeile!Abstand}{234}
+\indexentry {Farbe}{236}
+\indexentry {Spaltenfarbe}{236}
+\indexentry {Zeile!Farbe}{236}
+\indexentry {Zellenfarbe}{236}
+\indexentry {Farbmodell}{236}
+\indexentry {Gleitumgebung}{240}
+\indexentry {Tortendiagramm}{244}
+\indexentry {Funktionsgraph}{244}
+\indexentry {Referenzieren}{245}
+\indexentry {Label}{245}
+\indexentry {Sortierung}{247}
+\indexentry {Null}{247}
+\indexentry {SQL-Datenbank}{247}
+\indexentry {Clipping}{247}
+\indexentry {Zahlenkolonnen}{247}
+\indexentry {Dezimalpunkt}{247}
+\indexentry {Dezimalkomma}{247}
+\indexentry {Punkt}{248}
+\indexentry {Komma}{248}
+\indexentry {Cluster}{248}
+\indexentry {Dezimalstellen}{248}
+\indexentry {Seitenumbruch}{252}
+\indexentry {Umbruchmöglichkeit}{252}
+\indexentry {Gruppe}{252}
+\indexentry {list of tables}{256}
+\indexentry {lot}{256}
+\indexentry {list of tables}{256}
+\indexentry {lot}{256}
+\indexentry {Clown}{256}
+\indexentry {lot}{256}
+\indexentry {multiply defined labels}{258}
+\indexentry {longtable@\nxLPack {longtable}!Tabellenüberschrift}{259}
+\indexentry {longtable@\nxLPack {longtable}!Tabellenunterschrift}{259}
+\indexentry {Tabellenüberschrift!longtable@\nxLPack {longtable}}{259}
+\indexentry {Tabellenunterschrift!longtable@\nxLPack {longtable}}{259}
+\indexentry {Fußnotenzählung}{260}
+\indexentry {Fußnote}{260}
+\indexentry {Grundlinie}{264}
+\indexentry {Baseline}{264}
+\indexentry {Zählung}{267}
+\indexentry {Tabelle!geschachtelt}{268}
+\indexentry {multirow-Zelle@\nxLenv {multirow}-Zelle}{268}
+\indexentry {Spaltentyp}{268}
+\indexentry {p-Spalte}{268}
+\indexentry {Zeile!Vorschub}{269}
+\indexentry {Feinjustierung}{270}
+\indexentry {p-Spalte@\protect \nxLnotation {p}-Spalte}{271}
+\indexentry {Blocksatz}{271}
+\indexentry {r-Spalte@\protect \nxLnotation {r}-Spalte}{271}
+\indexentry {Tabelle!Farbe}{273}
+\indexentry {Spaltentyp}{274}
+\indexentry {Spaltenabstand}{274}
+\indexentry {Tabellenkalkulation}{282}
+\indexentry {Tabelle!Breite}{289}
+\indexentry {Zeile!Breite}{289}
+\indexentry {Spaltentyp}{290}
+\indexentry {Spaltenbreite}{290}
+\indexentry {Spaltenzwischenraum}{290}
+\indexentry {X-Spalte}{290}
+\indexentry {X-Spalte}{290}
+\indexentry {Abbildung}{309}
+\indexentry {Tabelle}{309}
+\indexentry {Textanteil}{309}
+\indexentry {Gleitumgebung}{309}
+\indexentry {Float}{309}
+\indexentry {Tabelle}{310}
+\indexentry {Abbildungsverzeichnis}{310}
+\indexentry {Tabellenverzeichnis}{310}
+\indexentry {moving argument}{321}
+\indexentry {Beschriftung}{324}
+\indexentry {Bezeichner}{324}
+\indexentry {float box}{337}
+\indexentry {Legende}{350}
+\indexentry {Flattersatz}{358}
+\indexentry {Flattersatz}{358}
+\indexentry {AMS}{376}
+\indexentry {Zeilenmodus}{376}
+\indexentry {Zeilenmodus}{377}
+\indexentry {Layout}{377}
+\indexentry {robust}{377}
+\indexentry {Zeilenhöhe}{378}
+\indexentry {Zeilenmodus}{378}
+\indexentry {Superscript}{378}
+\indexentry {Subscript}{378}
+\indexentry {Bruch}{378}
+\indexentry {Schrift!Stil}{378}
+\indexentry {Operator}{378}
+\indexentry {robust}{378}
+\indexentry {Zeilenmodus}{379}
+\indexentry {Adobe Reader}{380}
+\indexentry {Zeilenumbruch}{380}
+\indexentry {Relationssymbol}{380}
+\indexentry {Zeilenmodus}{380}
+\indexentry {displaymath mode}{381}
+\indexentry {Absatz}{381}
+\indexentry {Matrix}{383}
+\indexentry {Gleichungsnummer}{383}
+\indexentry {Document@\idxtextClasses !article@{\sffamily article}}{383}
+\indexentry {Zähler}{383}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{383}
+\indexentry {Gleichungsnummerierung}{384}
+\indexentry {Zähler}{384}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{384}
+\indexentry {Rücksetzschalter}{385}
+\indexentry {Rücksetzbefehl}{385}
+\indexentry {Dokumentenklasse}{386}
+\indexentry {class option}{386}
+\indexentry {Marke}{387}
+\indexentry {Label}{387}
+\indexentry {Zähler}{387}
+\indexentry {Referenz}{387}
+\indexentry {Gleichungsnummer}{389}
+\indexentry {Phantom}{389}
+\indexentry {Rahmenfarbe}{389}
+\indexentry {Hintergrundfarbe}{389}
+\indexentry {Zeilenmodus}{391}
+\indexentry {Fallunterscheidung}{392}
+\indexentry {Subscript}{393}
+\indexentry {Summe}{393}
+\indexentry {Produkt}{393}
+\indexentry {Quadratwurzel}{393}
+\indexentry {Klammer}{394}
+\indexentry {Backslash}{394}
+\indexentry {Delimiter}{394}
+\indexentry {Klammersymbole}{394}
+\indexentry {Mathopen-Symbol}{396}
+\indexentry {largesymbols}{396}
+\indexentry {Basislinie}{397}
+\indexentry {Text}{398}
+\indexentry {Roman-Zeichensatz}{399}
+\indexentry {mu (Einheit)@\texttt {mu}}{399}
+\indexentry {dynamische Länge}{400}
+\indexentry {glue}{400}
+\indexentry {Symbol}{400}
+\indexentry {Operator}{400}
+\indexentry {Atom}{400}
+\indexentry {Atom}{401}
+\indexentry {Schriftstil}{404}
+\indexentry {Zeilenmodus}{404}
+\indexentry {inline mode}{404}
+\indexentry {Schriftgröße}{404}
+\indexentry {Bruch}{404}
+\indexentry {Index}{405}
+\indexentry {Exponent}{405}
+\indexentry {Dokumentenklasse}{405}
+\indexentry {interline spacing}{405}
+\indexentry {Matrix}{405}
+\indexentry {Punkte}{405}
+\indexentry {Dots}{405}
+\indexentry {Determinante}{406}
+\indexentry {Matrix}{406}
+\indexentry {Akzent}{406}
+\indexentry {Vektor}{407}
+\indexentry {Zeichen (aktives)}{408}
+\indexentry {Exponent}{408}
+\indexentry {Index}{408}
+\indexentry {Operator}{408}
+\indexentry {Operator-Symbol}{408}
+\indexentry {Operatorname}{408}
+\indexentry {Index}{409}
+\indexentry {Exponent}{409}
+\indexentry {Subscript}{409}
+\indexentry {Superscript}{409}
+\indexentry {Symbol!gestockt}{411}
+\indexentry {Textmodus}{411}
+\indexentry {Mathematikmodus}{411}
+\indexentry {Schrift!fett}{411}
+\indexentry {Textschrift}{411}
+\indexentry {Schrift!Größe}{412}
+\indexentry {Titel}{413}
+\indexentry {Items}{413}
+\indexentry {Differentialquotient}{414}
+\indexentry {Operator}{414}
+\indexentry {Variable}{414}
+\indexentry {Integrationsvariable}{414}
+\indexentry {Abstand}{414}
+\indexentry {Makronamen}{414}
+\indexentry {American Mathematical Society (AMS)}{415}
+\indexentry {Document@\idxtextClasses !amsbook@{\sffamily amsbook}}{415}
+\indexentry {Document@\idxtextClasses !amsart@{\sffamily amsart}}{415}
+\indexentry {Fallunterscheidung}{425}
+\indexentry {Matrix}{426}
+\indexentry {Klammerpaar}{427}
+\indexentry {Spalten}{428}
+\indexentry {Spaltenanzahl}{428}
+\indexentry {Punkte}{428}
+\indexentry {Schrittweite}{428}
+\indexentry {Tridiagonalmatrix}{428}
+\indexentry {Bruch}{429}
+\indexentry {Binom}{429}
+\indexentry {Bruch}{429}
+\indexentry {Binom}{429}
+\indexentry {Begrenzer}{430}
+\indexentry {Bruch}{430}
+\indexentry {Kettenbruch}{430}
+\indexentry {continued fraction}{430}
+\indexentry {Divisior}{431}
+\indexentry {Binom}{431}
+\indexentry {Binom}{431}
+\indexentry {Wurzel}{431}
+\indexentry {mu}{432}
+\indexentry {Index}{432}
+\indexentry {Radikand}{432}
+\indexentry {Wurzelexponent}{432}
+\indexentry {Akzent}{433}
+\indexentry {Modulo}{433}
+\indexentry {Gleichungsnummer}{433}
+\indexentry {Abschnittsnummer}{433}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{434}
+\indexentry {Gleichungsnummer}{434}
+\indexentry {Gleichungsnummerierung}{435}
+\indexentry {Untergleichung}{437}
+\indexentry {Referenz}{437}
+\indexentry {Untergleichung}{437}
+\indexentry {Grenzen}{438}
+\indexentry {Summe}{438}
+\indexentry {Produkt}{438}
+\indexentry {Integral}{438}
+\indexentry {Achse}{439}
+\indexentry {Schriftfamilie}{442}
+\indexentry {Pfeil}{443}
+\indexentry {Doppelpfeil}{444}
+\indexentry {mu}{444}
+\indexentry {Akzent}{447}
+\indexentry {Kommutative Diagramme}{448}
+\indexentry {Integralsymbol}{448}
+\indexentry {Vektor}{448}
+\indexentry {Gaußscher Algorithmus}{448}
+\indexentry {Zufallszahlen}{448}
+\indexentry {Unterstrich}{449}
+\indexentry {Operator}{449}
+\indexentry {Matrix}{449}
+\indexentry {Begrenzer}{450}
+\indexentry {Textmodus}{450}
+\indexentry {Schrift!fett}{451}
+\indexentry {Klammerhöhe}{452}
+\indexentry {Durchstreichen}{453}
+\indexentry {Untergleichung}{454}
+\indexentry {Begrenzer}{455}
+\indexentry {scriptwriting}{459}
+\indexentry {Document@\idxtextClasses !article@{\sffamily article}}{474}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{474}
+\indexentry {Tabellenverzeichnis}{475}
+\indexentry {Abbildungsverzeichnis}{475}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{475}
+\indexentry {Document@\idxtextClasses !book@{\sffamily book}}{475}
+\indexentry {indent}{476}
+\indexentry {numwidth}{476}
+\indexentry {Sortierung}{489}
+\indexentry {DIN\,5007}{512}
+\indexentry {TeXLive@\TeXLive}{512}
+\indexentry {Glossar}{523}
+\indexentry {Homograph}{529}
+\indexentry {Bibliografie|(}{537}
+\indexentry {Flattersatz}{538}
+\indexentry {Flattersatz}{539}
+\indexentry {TeXLive@\TeXLive}{542}
+\indexentry {Autor"=Jahr"=Schema}{544}
+\indexentry {bookauthor}{557}
+\indexentry {Onlinequelle}{561}
+\indexentry {Tagebuchnotation}{561}
+\indexentry {Sigel}{561}
+\indexentry {Patronyme}{564}
+\indexentry {Metronyme}{564}
+\indexentry {Betriebswirtschaftslehre}{571}
+\indexentry {Document@\idxtextClasses !ctexart@{\sffamily ctexart}}{572}
+\indexentry {Leibniz Universität Hannover}{583}
+\indexentry {NEJM}{585}
+\indexentry {MLA}{586}
+\indexentry {Autor-Stil}{586}
+\indexentry {TeXLive@\TeXLive}{590}
+\indexentry {Bibliografie|)}{592}
+\indexentry {Schriftfamilie}{595}
+\indexentry {Mediävalziffern}{595}
+\indexentry {Minuskelziffern}{595}
+\indexentry {Serienattribut}{596}
+\indexentry {Laufweite}{596}
+\indexentry {OpenType}{601}
+\indexentry {TrueType}{601}
+\indexentry {TeXLive@\TeXLive}{610}
+\indexentry {Document@\idxtextClasses !beamer@{\sffamily beamer}}{615}
+\indexentry {Document@\idxtextClasses !powerdot@{\sffamily powerdot}}{615}
+\indexentry {Document@\idxtextClasses !beamer@{\sffamily beamer}}{615}
+\indexentry {Navigationsleiste}{616}
+\indexentry {Document@\idxtextClasses !beamer@{\sffamily beamer}}{617}
+\indexentry {Document@\idxtextClasses !beamer@{\sffamily beamer}}{617}
+\indexentry {Document@\idxtextClasses !beamer@{\sffamily beamer}}{618}
+\indexentry {Layout}{618}
+\indexentry {Bildschirm}{619}
+\indexentry {Navigationsleiste}{619}
+\indexentry {sidebar}{619}
+\indexentry {Folie}{621}
+\indexentry {Overlay}{621}
+\indexentry {Seitenverhältnis}{621}
+\indexentry {4:3}{621}
+\indexentry {Document@\idxtextClasses !beamer@{\sffamily beamer}}{622}
+\indexentry {Label}{626}
+\indexentry {Overlayspezifikation}{627}
+\indexentry {Unsichtbarkeit}{631}
+\indexentry {Overlays}{631}
+\indexentry {Transparenz}{631}
+\indexentry {Transparenz}{631}
+\indexentry {Gleitumgebung}{634}
+\indexentry {Folienübergänge}{639}
+\indexentry {Vollbildmodus}{639}
+\indexentry {Adobe Reader}{639}
+\indexentry {Flattersatz}{640}
+\indexentry {Corporate Design}{642}
+\indexentry {Verbatim-Modus}{654}
+\indexentry {Template}{657}
+\indexentry {Template}{657}
+\indexentry {Titelkopf}{658}
+\indexentry {Vordergrundfarbe}{658}
+\indexentry {Hintergrundfarbe}{658}
+\indexentry {Beamer-Template!logo@\texttt {logo}}{659}
+\indexentry {Beamer-Template!navigation symbols@\texttt {navigation symbols}}{659}
+\indexentry {Schriftattribut}{660}
+\indexentry {Document@\idxtextClasses !beamer@{\sffamily beamer}}{660}
+\indexentry {Document@\idxtextClasses !beamer@{\sffamily beamer}}{660}
+\indexentry {Fontshape}{661}
+\indexentry {Fontserie}{661}
+\indexentry {Fontfamilie}{661}
+\indexentry {Farbe}{669}
+\indexentry {Farbmodell}{669}
+\indexentry {CMYK}{671}
+\indexentry {Farbserie}{672}
+\indexentry {Farbmodell!CMYK}{673}
+\indexentry {Farbmodell!RGB}{673}
+\indexentry {Farbmodell!HSB}{673}
+\indexentry {RGB}{674}
+\indexentry {Hintergrundfarbe}{679}
+\indexentry {Farbwert}{680}
+\indexentry {Farbserie}{680}
+\indexentry {Farbe!Modell}{680}
+\indexentry {Farbe!konvertieren}{680}
+\indexentry {Index}{699}
+\indexentry {Maßeinheit}{711}
+\indexentry {Bezierkurve@Bézierkurve}{715}
+\indexentry {Bezierkurve@Bézierkurve}{721}
+\indexentry {Schnittpunkt}{722}
+\indexentry {Bounding Box}{730}
+\indexentry {Tortendiagramm}{746}
+\indexentry {PostScript}{750}
+\indexentry {Seitenbeschreibungssprache}{750}
+\indexentry {Page Coded Language}{750}
+\indexentry {3D}{752}
+\indexentry {TeXLive@\TeXLive}{766}
+\indexentry {Ellipse}{770}
+\indexentry {Parabel}{770}
+\indexentry {Clippingpfad}{771}
+\indexentry {Knoten}{775}
+\indexentry {Kochsche Schneeflocke}{778}
+\indexentry {Entity-Relationship}{798}
+\indexentry {IUPAC}{814}
+\indexentry {Bounding Box}{825}
+\indexentry {Document@\idxtextClasses !europecv@{\sffamily europecv}}{827}
+\indexentry {Document@\idxtextClasses !europecv@{\sffamily europecv}}{827}
+\indexentry {Document@\idxtextClasses !europecv@{\sffamily europecv}}{828}
+\indexentry {Document@\idxtextClasses !europecv@{\sffamily europecv}}{830}
+\indexentry {Wickelfalz}{832}
+\indexentry {Zickzackfalz}{832}
+\indexentry {Document@\idxtextClasses !scrartcl@{\sffamily scrartcl}}{834}
+\indexentry {Document@\idxtextClasses !scrlttr2@{\sffamily scrlttr2}}{837}
+\indexentry {Makro}{848}
+\indexentry {Umgebung}{848}
+\indexentry {TeXLive@\TeXLive}{855}
+\indexentry {Maßzahl}{859}
+\indexentry {Maßeinheit}{859}
+\indexentry {bp}{859}
+\indexentry {cc}{859}
+\indexentry {cm}{859}
+\indexentry {dd}{859}
+\indexentry {in}{859}
+\indexentry {mm}{859}
+\indexentry {mu}{860}
+\indexentry {pc}{860}
+\indexentry {pt}{860}
+\indexentry {px}{860}
+\indexentry {sp}{860}
+\indexentry {em}{860}
+\indexentry {ex}{860}
+\indexentry {dimen register}{860}
+\indexentry {skip register}{860}
+\indexentry {rubber length}{860}
+\indexentry {Maßeinheit}{860}
+\indexentry {skip}{860}
+\indexentry {skip register}{861}
+\indexentry {Zähler}{862}
+\indexentry {Counter}{862}
+\indexentry {Gruppe}{864}
+\indexentry {global}{864}
+\indexentry {lokal}{864}
+\indexentry {Rekursion}{865}
+\indexentry {Leerzeichen}{866}
+\indexentry {Expansion}{868}
+\indexentry {Bad math}{869}
+\indexentry {GenericError}{869}
+\indexentry {math shift}{869}
+\indexentry {TeXLive@\TeXLive}{870}
+\indexentry {Präambel}{871}
+\indexentry {Textkörper}{871}
+\indexentry {option clash}{871}
+\indexentry {TDS}{872}
+\indexentry {TeXLive@\TeXLive}{872}
+\indexentry {FNDB}{872}
+\indexentry {TeXLive@\TeXLive}{872}
+\indexentry {TeXLive@\TeXLive}{872}
+\indexentry {TeXLive@\TeXLive}{872}
+\indexentry {TeXLive@\TeXLive}{872}
+\indexentry {TeXLive@\TeXLive}{873}
+\indexentry {TeXLive@\TeXLive}{873}
+\indexentry {TeXLive@\TeXLive}{873}
+\indexentry {TeXLive@\TeXLive}{874}
+\indexentry {TeXLive@\TeXLive}{874}
+\indexentry {TeXLive@\TeXLive}{874}
+\indexentry {TeXLive@\TeXLive}{874}
+\indexentry {TeXLive@\TeXLive}{877}
+\indexentry {TeXLive@\TeXLive}{878}
+\indexentry {TeXLive@\TeXLive}{879}
+\indexentry {USB-Stick}{879}
+\indexentry {TeXLive@\TeXLive}{879}
+\indexentry {TeXLive@\TeXLive}{879}
+\indexentry {Con\TeX t}{879}
+\indexentry {Logdatei}{880}
+\indexentry {Batchmode}{883}
+\indexentry {Logfile}{883}
+\indexentry {Systemmeldung}{883}
+\indexentry {Warnung}{883}
+\indexentry {Schrift!Warnung}{883}
+\indexentry {Overfull box}{883}
+\indexentry {Gleitumgebung}{885}
+\indexentry {Minimalbeispiel}{888}
+\indexentry {TeXLive@\TeXLive}{890}
+\indexentry {TeXLive@\TeXLive}{890}
diff --git a/indexing/xindex/doc/tests/buch.pdf b/indexing/xindex/doc/tests/buch.pdf
new file mode 100644
index 0000000000..67bfb3d191
--- /dev/null
+++ b/indexing/xindex/doc/tests/buch.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/buch.tex b/indexing/xindex/doc/tests/buch.tex
new file mode 100644
index 0000000000..8369a1fc63
--- /dev/null
+++ b/indexing/xindex/doc/tests/buch.tex
@@ -0,0 +1,19 @@
+\documentclass[paper=a4,parskip=half-,ngerman]{scrartcl}
+\usepackage{eurosym}
+\usepackage[silent]{fontspec}
+\usepackage{libertinus-otf}
+\usepackage{babel}
+\usepackage{makeidx}
+\usepackage{dtk-logos}
+
+%\newcommand\doublequote{"{}}
+\let\nxLnotation\texttt
+\let\nxLPack\texttt
+\let\nxLenv\texttt
+\let\nxLkeyword\texttt
+\let\idxbf\textbf
+\def\idxtextClasses{Dokumentenklasse}
+\begin{document}
+
+\printindex
+\end{document}
diff --git a/indexing/xindex/doc/tests/demo-hyperref.idx b/indexing/xindex/doc/tests/demo-hyperref.idx
new file mode 100644
index 0000000000..128eb26d69
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo-hyperref.idx
@@ -0,0 +1,187 @@
+\indexentry{Märtyrer|hyperpage}{1}
+\indexentry{erzählt|hyperpage}{1}
+\indexentry{Östereich|hyperpage}{1}
+\indexentry{Auto|hyperindexformat{\textbf}}{1}
+\indexentry{seiner|hyperpage}{1}
+\indexentry{Ansprache|hyperpage}{2}
+\indexentry{mahnte|hyperpage}{2}
+\indexentry{er|hyperpage}{2}
+\indexentry{zu|hyperpage}{3}
+\indexentry{mehr|hyperpage}{3}
+\indexentry{Gelassenheit|hyperpage}{4}
+\indexentry{Gleichzeitig|hyperpage}{4}
+\indexentry{warnte|hyperpage}{4}
+\indexentry{er|hyperindexformat{\seealso{foo}}}{4}
+\indexentry{Minderheiten|hyperpage}{5}
+\indexentry{und|hyperpage}{5}
+\indexentry{Volksvertreter|hyperpage}{6}
+\indexentry{zum|hyperpage}{7}
+\indexentry{Feindbild|hyperpage}{7}
+\indexentry{zu|hyperpage}{8}
+\indexentry{machen.|hyperpage}{8}
+\indexentry{Obwohl|hyperpage}{8}
+\indexentry{es|hyperpage}{8}
+\indexentry{Deutschland|hyperpage}{8}
+\indexentry{gut|hyperpage}{9}
+\indexentry{gehe|hyperpage}{9}
+\indexentry{dominiere|hyperpage}{9}
+\indexentry{der|(hyperpage}{9}
+\indexentry{Pessimismus.|hyperpage}{10}
+\indexentry{Hilfe|hyperpage}{10}
+\indexentry{für|hyperpage}{10}
+\indexentry{Flüchtlinge|hyperpage}{11}
+\indexentry{und|hyperpage}{11}
+\indexentry{andere|hyperpage}{12}
+\indexentry{Migranten|hyperpage}{12}
+\indexentry{sei|hyperpage}{12}
+\indexentry{wichtig|hyperpage}{12}
+\indexentry{und|hyperpage}{12}
+\indexentry{richtig|hyperpage}{13}
+\indexentry{aber|hyperpage}{13}
+\indexentry{nicht|hyperpage}{14}
+\indexentry{unbegrenzt|hyperpage}{14}
+\indexentry{möglich.|hyperpage}{14}
+\indexentry{Deshalb|hyperpage}{14}
+\indexentry{müsse|hyperpage}{14}
+\indexentry{man|hyperpage}{14}
+\indexentry{lernen|hyperpage}{14}
+\indexentry{mit|hyperpage}{14}
+\indexentry{dem|hyperpage}{14}
+\indexentry{Nicht-Perfekten|hyperpage}{14}
+\indexentry{zu|hyperpage}{14}
+\indexentry{leben.|hyperpage}{14}
+\indexentry{Wer|hyperpage}{14}
+\indexentry{das|hyperpage}{15}
+\indexentry{Perfekte|hyperpage}{15}
+\indexentry{anstrebt|hyperpage}{15}
+\indexentry{endet|hyperpage}{15}
+\indexentry{in|hyperpage}{15}
+\indexentry{der|hyperpage}{15}
+\indexentry{Diktatur|hyperpage}{16}
+\indexentry{Ägäis|hyperpage}{17}
+\indexentry{Überholmanöver|hyperpage}{17}
+\indexentry{Während|hyperpage}{17}
+\indexentry{Ägäis|hyperpage}{18}
+\indexentry{der|hyperpage}{18}
+\indexentry{Ägäis|hyperpage}{19}
+\indexentry{Festakt|hyperpage}{19}
+\indexentry{sich|hyperpage}{19}
+\indexentry{nach|hyperpage}{19}
+\indexentry{etwa|hyperpage}{19}
+\indexentry{anderthalb|hyperpage}{19}
+\indexentry{Stunden|hyperpage}{19}
+\indexentry{in|hyperpage}{19}
+\indexentry{der|hyperpage}{19}
+\indexentry{Ägäis|hyperpage}{20}
+\indexentry{Staatsoper|hyperpage}{20}
+\indexentry{dem|hyperpage}{21}
+\indexentry{Ende|hyperpage}{21}
+\indexentry{neigte|hyperpage}{21}
+\indexentry{versammelten|hyperpage}{21}
+\indexentry{sich|hyperpage}{21}
+\indexentry{etwa|hyperpage}{21}
+\indexentry{zeitgleich|hyperpage}{21}
+\indexentry{die|hyperpage}{21}
+\indexentry{ersten|hyperpage}{21}
+\indexentry{Teilnehmer|hyperpage}{21}
+\indexentry{einer|hyperpage}{22}
+\indexentry{rechten|hyperpage}{23}
+\indexentry{Kundgebung|hyperpage}{23}
+\indexentry{wenige|hyperpage}{23}
+\indexentry{Kilometer|hyperpage}{23}
+\indexentry{weiter|hyperpage}{24}
+\indexentry{am|hyperpage}{25}
+\indexentry{Europaplatz.|hyperpage}{25}
+\indexentry{Aufgerufen|hyperpage}{25}
+\indexentry{hatte|hyperpage}{25}
+\indexentry{das|hyperpage}{25}
+\indexentry{Bündnis|hyperpage}{25}
+\indexentry{Wir|hyperpage}{25}
+\indexentry{für|hyperpage}{26}
+\indexentry{Deutschland|hyperpage}{27}
+\indexentry{zu|hyperpage}{28}
+\indexentry{der|hyperpage}{28}
+\indexentry{Demonstration|hyperpage}{29}
+\indexentry{mit|hyperpage}{29}
+\indexentry{dem|hyperpage}{29}
+\indexentry{Motto|hyperpage}{29}
+\indexentry{Tag|hyperpage}{29}
+\indexentry{der|hyperpage}{29}
+\indexentry{Nation.|hyperpage}{30}
+\indexentry{Beobachtern|hyperpage}{30}
+\indexentry{zufolge|hyperpage}{30}
+\indexentry{gaben|hyperpage}{30}
+\indexentry{sich|hyperpage}{30}
+\indexentry{zahlreiche|hyperpage}{30}
+\indexentry{Teilnehmer|hyperpage}{30}
+\indexentry{durch|hyperpage}{31}
+\indexentry{einschlägige|hyperpage}{31}
+\indexentry{Szenecodes|hyperpage}{31}
+\indexentry{als|hyperpage}{31}
+\indexentry{Neonazis|hyperpage}{31}
+\indexentry{zu|hyperpage}{31}
+\indexentry{erkennen|hyperpage}{31}
+\indexentry{N|hyperpage}{31}
+\indexentry{Angaben|hyperpage}{31}
+\indexentry{der|)hyperpage}{31}
+\indexentry{Polizei|hyperpage}{32}
+\indexentry{haben|hyperpage}{32}
+\indexentry{sich|hyperpage}{32}
+\indexentry{mehr|hyperpage}{32}
+\indexentry{als|hyperpage}{33}
+\indexentry{tausend|hyperpage}{33}
+\indexentry{Menschen|hyperpage}{34}
+\indexentry{der|hyperpage}{34}
+\indexentry{Demonstration|hyperpage}{35}
+\indexentry{angeschlossen|hyperpage}{35}
+\indexentry{haben.|hyperpage}{35}
+\indexentry{Sie|hyperpage}{35}
+\indexentry{haben|hyperpage}{35}
+\indexentry{demnach|hyperpage}{35}
+\indexentry{Plakate|hyperpage}{35}
+\indexentry{und|hyperpage}{35}
+\indexentry{Flaggen|hyperpage}{36}
+\indexentry{dabei|hyperpage}{36}
+\indexentry{gehabt|hyperpage}{36}
+\indexentry{jedoch|hyperpage}{36}
+\indexentry{keine|hyperpage}{36}
+\indexentry{illegalen|hyperpage}{36}
+\indexentry{Symbole|hyperpage}{36}
+\indexentry{verwendet|hyperpage}{36}
+\indexentry{sagte|hyperpage}{36}
+\indexentry{ein|hyperpage}{36}
+\indexentry{Sprecher|hyperpage}{36}
+\indexentry{der|hyperpage}{37}
+\indexentry{Polizei|hyperpage}{38}
+\indexentry{Zwischenfällen|hyperpage}{38}
+\indexentry{sei|hyperpage}{38}
+\indexentry{es|hyperpage}{38}
+\indexentry{demnach|hyperpage}{38}
+\indexentry{zunächst|hyperpage}{38}
+\indexentry{nicht|hyperpage}{38}
+\indexentry{gekommen.|hyperpage}{38}
+\indexentry{Woher|hyperpage}{38}
+\indexentry{die|hyperpage}{39}
+\indexentry{überwiegend|hyperpage}{39}
+\indexentry{jungen|hyperpage}{40}
+\indexentry{Männer|hyperpage}{40}
+\indexentry{die|hyperpage}{41}
+\indexentry{an|hyperpage}{41}
+\indexentry{der|hyperpage}{41}
+\indexentry{Kundgebung|hyperpage}{42}
+\indexentry{teilgenommen|hyperpage}{42}
+\indexentry{haben|hyperpage}{42}
+\indexentry{angereist|hyperpage}{42}
+\indexentry{sind|hyperpage}{42}
+\indexentry{ist|hyperpage}{43}
+\indexentry{unklar.|hyperpage}{43}
+\indexentry{Im|hyperpage}{43}
+\indexentry{Netz|hyperpage}{43}
+\indexentry{wird|hyperpage}{43}
+\indexentry{allerdings|hyperpage}{44}
+\indexentry{wieder|hyperpage}{44}
+\indexentry{über|hyperpage}{45}
+\indexentry{den|hyperpage}{46}
+\indexentry{braunen|hyperpage}{46}
+\indexentry{Osten|hyperpage}{46}
+\indexentry{gelästert|hyperpage}{46}
diff --git a/indexing/xindex/doc/tests/demo-hyperref.ind b/indexing/xindex/doc/tests/demo-hyperref.ind
new file mode 100644
index 0000000000..6916f4d087
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo-hyperref.ind
@@ -0,0 +1,233 @@
+
+\begin{theindex}
+
+\indexspace
+\textbf{A}
+\nopagebreak[4]
+ \item aber, \hyperpage{13}
+ \item Ägäis, \hyperpage{17--20}
+ \item allerdings, \hyperpage{44}
+ \item als, \hyperpage{31}, \hyperpage{33}
+ \item am, \hyperpage{25}
+ \item an, \hyperpage{41}
+ \item andere, \hyperpage{12}
+ \item anderthalb, \hyperpage{19}
+ \item Angaben, \hyperpage{31}
+ \item angereist, \hyperpage{42}
+ \item angeschlossen, \hyperpage{35}
+ \item Ansprache, \hyperpage{2}
+ \item anstrebt, \hyperpage{15}
+ \item Aufgerufen, \hyperpage{25}
+ \item Auto, \hyperindexformat{\textbf}{1}
+
+\indexspace
+\textbf{B}
+\nopagebreak[4]
+ \item Beobachtern, \hyperpage{30}
+ \item braunen, \hyperpage{46}
+ \item Bündnis, \hyperpage{25}
+
+\indexspace
+\textbf{D}
+\nopagebreak[4]
+ \item dabei, \hyperpage{36}
+ \item das, \hyperpage{15}, \hyperpage{25}
+ \item dem, \hyperpage{14}, \hyperpage{21}, \hyperpage{29}
+ \item demnach, \hyperpage{35}, \hyperpage{38}
+ \item Demonstration, \hyperpage{29}, \hyperpage{35}
+ \item den, \hyperpage{46}
+ \item der, \hyperpage{9--31}, \hyperpage{15}, \hyperpage{18\nohyperpage{f}}, \hyperpage{28\nohyperpage{f}}, \hyperpage{34}, \hyperpage{37}, \hyperpage{41}
+ \item Deshalb, \hyperpage{14}
+ \item Deutschland, \hyperpage{8}, \hyperpage{27}
+ \item die, \hyperpage{21}, \hyperpage{39}, \hyperpage{41}
+ \item Diktatur, \hyperpage{16}
+ \item dominiere, \hyperpage{9}
+ \item durch, \hyperpage{31}
+
+\indexspace
+\textbf{E}
+\nopagebreak[4]
+ \item ein, \hyperpage{36}
+ \item einer, \hyperpage{22}
+ \item einschlägige, \hyperpage{31}
+ \item Ende, \hyperpage{21}
+ \item endet, \hyperpage{15}
+ \item er, \hyperpage{2}, \hyperindexformat{\seealso{foo}}{4}
+ \item erkennen, \hyperpage{31}
+ \item ersten, \hyperpage{21}
+ \item erzählt, \hyperpage{1}
+ \item es, \hyperpage{8}, \hyperpage{38}
+ \item etwa, \hyperpage{19}, \hyperpage{21}
+ \item Europaplatz., \hyperpage{25}
+
+\indexspace
+\textbf{F}
+\nopagebreak[4]
+ \item Feindbild, \hyperpage{7}
+ \item Festakt, \hyperpage{19}
+ \item Flaggen, \hyperpage{36}
+ \item Flüchtlinge, \hyperpage{11}
+ \item für, \hyperpage{10}, \hyperpage{26}
+
+\indexspace
+\textbf{G}
+\nopagebreak[4]
+ \item gaben, \hyperpage{30}
+ \item gehabt, \hyperpage{36}
+ \item gehe, \hyperpage{9}
+ \item gekommen., \hyperpage{38}
+ \item Gelassenheit, \hyperpage{4}
+ \item gelästert, \hyperpage{46}
+ \item Gleichzeitig, \hyperpage{4}
+ \item gut, \hyperpage{9}
+
+\indexspace
+\textbf{H}
+\nopagebreak[4]
+ \item haben, \hyperpage{32}, \hyperpage{35}, \hyperpage{42}
+ \item haben., \hyperpage{35}
+ \item hatte, \hyperpage{25}
+ \item Hilfe, \hyperpage{10}
+
+\indexspace
+\textbf{I}
+\nopagebreak[4]
+ \item illegalen, \hyperpage{36}
+ \item Im, \hyperpage{43}
+ \item in, \hyperpage{15}, \hyperpage{19}
+ \item ist, \hyperpage{43}
+
+\indexspace
+\textbf{J}
+\nopagebreak[4]
+ \item jedoch, \hyperpage{36}
+ \item jungen, \hyperpage{40}
+
+\indexspace
+\textbf{K}
+\nopagebreak[4]
+ \item keine, \hyperpage{36}
+ \item Kilometer, \hyperpage{23}
+ \item Kundgebung, \hyperpage{23}, \hyperpage{42}
+
+\indexspace
+\textbf{L}
+\nopagebreak[4]
+ \item leben., \hyperpage{14}
+ \item lernen, \hyperpage{14}
+
+\indexspace
+\textbf{M}
+\nopagebreak[4]
+ \item machen., \hyperpage{8}
+ \item mahnte, \hyperpage{2}
+ \item man, \hyperpage{14}
+ \item Männer, \hyperpage{40}
+ \item Märtyrer, \hyperpage{1}
+ \item mehr, \hyperpage{3}, \hyperpage{32}
+ \item Menschen, \hyperpage{34}
+ \item Migranten, \hyperpage{12}
+ \item Minderheiten, \hyperpage{5}
+ \item mit, \hyperpage{14}, \hyperpage{29}
+ \item möglich., \hyperpage{14}
+ \item Motto, \hyperpage{29}
+ \item müsse, \hyperpage{14}
+
+\indexspace
+\textbf{N}
+\nopagebreak[4]
+ \item N, \hyperpage{31}
+ \item nach, \hyperpage{19}
+ \item Nation., \hyperpage{30}
+ \item neigte, \hyperpage{21}
+ \item Neonazis, \hyperpage{31}
+ \item Netz, \hyperpage{43}
+ \item nicht, \hyperpage{14}, \hyperpage{38}
+ \item Nicht-Perfekten, \hyperpage{14}
+
+\indexspace
+\textbf{O}
+\nopagebreak[4]
+ \item Obwohl, \hyperpage{8}
+ \item Osten, \hyperpage{46}
+ \item Östereich, \hyperpage{1}
+
+\indexspace
+\textbf{P}
+\nopagebreak[4]
+ \item Perfekte, \hyperpage{15}
+ \item Pessimismus., \hyperpage{10}
+ \item Plakate, \hyperpage{35}
+ \item Polizei, \hyperpage{32}, \hyperpage{38}
+
+\indexspace
+\textbf{R}
+\nopagebreak[4]
+ \item rechten, \hyperpage{23}
+ \item richtig, \hyperpage{13}
+
+\indexspace
+\textbf{S}
+\nopagebreak[4]
+ \item sagte, \hyperpage{36}
+ \item sei, \hyperpage{12}, \hyperpage{38}
+ \item seiner, \hyperpage{1}
+ \item sich, \hyperpage{19}, \hyperpage{21}, \hyperpage{30}, \hyperpage{32}
+ \item Sie, \hyperpage{35}
+ \item sind, \hyperpage{42}
+ \item Sprecher, \hyperpage{36}
+ \item Staatsoper, \hyperpage{20}
+ \item Stunden, \hyperpage{19}
+ \item Symbole, \hyperpage{36}
+ \item Szenecodes, \hyperpage{31}
+
+\indexspace
+\textbf{T}
+\nopagebreak[4]
+ \item Tag, \hyperpage{29}
+ \item tausend, \hyperpage{33}
+ \item teilgenommen, \hyperpage{42}
+ \item Teilnehmer, \hyperpage{21}, \hyperpage{30}
+
+\indexspace
+\textbf{U}
+\nopagebreak[4]
+ \item über, \hyperpage{45}
+ \item Überholmanöver, \hyperpage{17}
+ \item überwiegend, \hyperpage{39}
+ \item unbegrenzt, \hyperpage{14}
+ \item und, \hyperpage{5}, \hyperpage{11\nohyperpage{f}}, \hyperpage{35}
+ \item unklar., \hyperpage{43}
+
+\indexspace
+\textbf{V}
+\nopagebreak[4]
+ \item versammelten, \hyperpage{21}
+ \item verwendet, \hyperpage{36}
+ \item Volksvertreter, \hyperpage{6}
+
+\indexspace
+\textbf{W}
+\nopagebreak[4]
+ \item Während, \hyperpage{17}
+ \item warnte, \hyperpage{4}
+ \item weiter, \hyperpage{24}
+ \item wenige, \hyperpage{23}
+ \item Wer, \hyperpage{14}
+ \item wichtig, \hyperpage{12}
+ \item wieder, \hyperpage{44}
+ \item Wir, \hyperpage{25}
+ \item wird, \hyperpage{43}
+ \item Woher, \hyperpage{38}
+
+\indexspace
+\textbf{Z}
+\nopagebreak[4]
+ \item zahlreiche, \hyperpage{30}
+ \item zeitgleich, \hyperpage{21}
+ \item zu, \hyperpage{3}, \hyperpage{8}, \hyperpage{14}, \hyperpage{28}, \hyperpage{31}
+ \item zufolge, \hyperpage{30}
+ \item zum, \hyperpage{7}
+ \item zunächst, \hyperpage{38}
+ \item Zwischenfällen, \hyperpage{38}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/demo-hyperref.pdf b/indexing/xindex/doc/tests/demo-hyperref.pdf
new file mode 100644
index 0000000000..4feaf3b3fa
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo-hyperref.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/demo-hyperref.tex b/indexing/xindex/doc/tests/demo-hyperref.tex
new file mode 100644
index 0000000000..757dcbcfe0
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo-hyperref.tex
@@ -0,0 +1,13 @@
+\documentclass[paper=a4,parskip=half-,ngerman]{scrartcl}
+\usepackage{eurosym}
+\usepackage[silent]{fontspec}
+\usepackage{libertinus-otf}
+\usepackage{babel}
+\usepackage[colorlinks]{hyperref}
+\usepackage{makeidx}
+
+\begin{document}
+
+\printindex
+
+\end{document}
diff --git a/indexing/xindex/doc/tests/demo.idx b/indexing/xindex/doc/tests/demo.idx
new file mode 100644
index 0000000000..6353966364
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo.idx
@@ -0,0 +1,206 @@
+\indexentry{Märtyrer}{1}
+\indexentry{erzählt}{1}
+\indexentry{Österreich|(}{1}
+\indexentry{Auto|textbf}{1}
+\indexentry{Ärger}{1}
+\indexentry{Automobil|fbox}{1}
+\indexentry{4711}{1}
+\indexentry{\textbackslash }{1}
+\indexentry{seiner}{1}
+\indexentry{Ansprache}{2}
+\indexentry{mahnte}{2}
+\indexentry{er}{2}
+\indexentry{zu}{3}
+\indexentry{mehr}{3}
+\indexentry{Gelassenheit}{4}
+\indexentry{Gleichzeitig}{4}
+\indexentry{warnte}{4}
+\indexentry{er}{4}
+\indexentry{Minderheiten}{5}
+\indexentry{und}{5}
+\indexentry{Volksvertreter}{6}
+\indexentry{zum}{7}
+\indexentry{Feindbild}{7}
+\indexentry{zu}{8}
+\indexentry{machen.}{8}
+\indexentry{Obwohl}{8}
+\indexentry{es}{8}
+\indexentry{Deutschland}{8}
+\indexentry{gut}{9}
+\indexentry{gehe}{9}
+\indexentry{dominiere}{9}
+\indexentry{der|(}{9}
+\indexentry{Pessimismus.}{10}
+\indexentry{Hilfe}{10}
+\indexentry{für}{10}
+\indexentry{Flüchtlinge}{11}
+\indexentry{und}{11}
+\indexentry{andere}{12}
+\indexentry{Migranten}{12}
+\indexentry{sei}{12}
+\indexentry{wichtig}{12}
+\indexentry{und}{12}
+\indexentry{richtig}{13}
+\indexentry{aber}{13}
+\indexentry{nicht}{14}
+\indexentry{unbegrenzt}{14}
+\indexentry{möglich.}{14}
+\indexentry{Deshalb}{14}
+\indexentry{müsse}{14}
+\indexentry{man}{14}
+\indexentry{lernen}{14}
+\indexentry{mit}{14}
+\indexentry{dem}{14}
+\indexentry{Nicht-Perfekten}{14}
+\indexentry{zu}{14}
+\indexentry{leben.}{14}
+\indexentry{Wer}{14}
+\indexentry{das}{15}
+\indexentry{Perfekte}{15}
+\indexentry{anstrebt}{15}
+\indexentry{endet}{15}
+\indexentry{in}{15}
+\indexentry{der}{15}
+\indexentry{Diktatur!Afrika!Nigeria}{16}
+\indexentry{Frust}{17}
+\indexentry{Ärgerlich}{17}
+\indexentry{Diktatur!Afrika!Kongo}{17}
+\indexentry{Ägäis}{17}
+\indexentry{sich}{17}
+\indexentry{Überholmanöver}{17}
+\clearpage
+\indexentry{Während|see{Was\_auch\_immmer}}{17}
+\indexentry{sich}{18}
+\indexentry{Ägäis|seealso{Griechenland}}{18}
+\indexentry{der}{18}
+\indexentry{Ägäis}{19}
+\indexentry{Festakt}{19}
+\indexentry{sich}{19}
+\indexentry{nach}{19}
+\indexentry{etwa}{19}
+\indexentry{anderthalb}{19}
+\indexentry{Stunden}{19}
+\indexentry{in}{19}
+\indexentry{der}{19}
+\indexentry{Ägäis}{20}
+\indexentry{Staatsoper}{20}
+\indexentry{dem}{21}
+\indexentry{Ende}{21}
+\indexentry{neigte}{21}
+\indexentry{versammelten}{21}
+\indexentry{sich}{21}
+\indexentry{etwa}{21}
+\indexentry{zeitgleich}{21}
+\indexentry{die}{21}
+\indexentry{ersten}{21}
+\indexentry{Teilnehmer}{21}
+\indexentry{einer}{22}
+\indexentry{rechten}{23}
+\indexentry{Kundgebung}{23}
+\indexentry{wenige}{23}
+\indexentry{Kilometer}{23}
+\indexentry{weiter}{24}
+\indexentry{am}{25}
+\indexentry{Europaplatz.}{25}
+\indexentry{Aufgerufen}{25}
+\indexentry{hatte}{25}
+\indexentry{das}{25}
+\indexentry{Bündnis}{25}
+\indexentry{Wir}{25}
+\indexentry{für}{26}
+\indexentry{Deutschland}{27}
+\indexentry{zu}{28}
+\indexentry{der}{28}
+\indexentry{Demonstration}{29}
+\indexentry{mit}{29}
+\indexentry{dem}{29}
+\indexentry{Diktatur!Regierungsform}{29}
+\indexentry{Motto}{29}
+\indexentry{Tag}{29}
+\indexentry{der}{29}
+\indexentry{Nation.}{30}
+\indexentry{Beobachtern}{30}
+\indexentry{zufolge}{30}
+\indexentry{gaben}{30}
+\indexentry{sich}{30}
+\indexentry{zahlreiche}{30}
+\indexentry{Teilnehmer}{30}
+\indexentry{durch}{31}
+\indexentry{einschlägige}{31}
+\indexentry{Szenecodes}{31}
+\indexentry{als}{31}
+\indexentry{Neonazis}{31}
+\indexentry{zu}{31}
+\indexentry{erkennen}{31}
+\indexentry{wieder}{31}
+\indexentry{Nach}{31}
+\indexentry{Ärger}{31}
+\indexentry{Angaben}{31}
+\indexentry{der|)}{31}
+\indexentry{Polizei}{32}
+\indexentry{haben}{32}
+\indexentry{sich}{32}
+\indexentry{mehr}{32}
+\indexentry{als}{33}
+\indexentry{tausend}{33}
+\indexentry{Menschen}{34}
+\indexentry{der}{34}
+\indexentry{Demonstration}{35}
+\indexentry{angeschlossen}{35}
+\indexentry{haben.}{35}
+\indexentry{Sie}{35}
+\indexentry{haben}{35}
+\indexentry{demnach}{35}
+\indexentry{Plakate}{35}
+\indexentry{und}{35}
+\indexentry{Flaggen}{36}
+\indexentry{dabei}{36}
+\indexentry{gehabt}{36}
+\indexentry{jedoch}{36}
+\indexentry{keine}{36}
+\indexentry{illegalen}{36}
+\indexentry{Symbole}{36}
+\indexentry{verwendet}{36}
+\indexentry{sagte}{36}
+\indexentry{ein}{36}
+\indexentry{Sprecher}{36}
+\indexentry{der}{37}
+\indexentry{Polizei}{38}
+\indexentry{überholt}{38}
+\indexentry{Ärgernis}{38}
+\indexentry{Österreich|)textbf}{38}
+\indexentry{Diktatur!Asien!Nordvietnam}{38}
+\indexentry{Zwischenfällen}{38}
+\indexentry{sei}{38}
+\indexentry{es}{38}
+\indexentry{demnach}{38}
+\indexentry{zunächst}{38}
+\indexentry{nicht}{38}
+\indexentry{gekommen.}{38}
+\indexentry{Woher}{38}
+\indexentry{die}{39}
+\indexentry{überwiegend}{39}
+\indexentry{jungen}{40}
+\indexentry{Männer}{40}
+\indexentry{die}{41}
+\indexentry{an}{41}
+\indexentry{der}{41}
+\indexentry{Kundgebung}{42}
+\indexentry{teilgenommen}{42}
+\indexentry{haben}{42}
+\indexentry{angereist}{42}
+\indexentry{sind}{42}
+\indexentry{ist}{43}
+\indexentry{unklar.}{43}
+\indexentry{Im}{43}
+\indexentry{Netz}{43}
+\indexentry{wird}{43}
+\indexentry{allerdings}{44}
+\indexentry{wieder}{44}
+\indexentry{wieder}{45}
+\indexentry{über}{45}
+\indexentry{wieder}{46}
+\indexentry{den}{46}
+\indexentry{braunen}{46}
+\indexentry{Osten}{46}
+\indexentry{gelästert}{46}
diff --git a/indexing/xindex/doc/tests/demo.ind b/indexing/xindex/doc/tests/demo.ind
new file mode 100644
index 0000000000..9f1484209f
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo.ind
@@ -0,0 +1,254 @@
+
+\begin{theindex}
+\textbf{Symbole}
+\nopagebreak[4]
+ \item \textbackslash , {1}
+
+\indexspace
+\textbf{Zahlen}
+\nopagebreak[4]
+ \item 4711, {1}
+
+\indexspace
+\textbf{A}
+\nopagebreak[4]
+ \item aber, {13}
+ \item Ägäis, {17}, \seealso{Griechenland}{18}, {19f}
+ \item allerdings, {44}
+ \item als, {31}, {33}
+ \item am, {25}
+ \item an, {41}
+ \item andere, {12}
+ \item anderthalb, {19}
+ \item Angaben, {31}
+ \item angereist, {42}
+ \item angeschlossen, {35}
+ \item Ansprache, {2}
+ \item anstrebt, {15}
+ \item Ärger, {1}, {31}
+ \item Ärgerlich, {17}
+ \item Ärgernis, {38}
+ \item Aufgerufen, {25}
+ \item Auto, \textbf{1}
+ \item Automobil, \fbox{1}
+
+\indexspace
+\textbf{B}
+\nopagebreak[4]
+ \item Beobachtern, {30}
+ \item braunen, {46}
+ \item Bündnis, {25}
+
+\indexspace
+\textbf{D}
+\nopagebreak[4]
+ \item dabei, {36}
+ \item das, {15}, {25}
+ \item dem, {14}, {21}, {29}
+ \item demnach, {35}, {38}
+ \item Demonstration, {29}, {35}
+ \item den, {46}
+ \item der, {9--31}, {15}, {18f}, {28f}, {34}, {37}, {41}
+ \item Deshalb, {14}
+ \item Deutschland, {8}, {27}
+ \item die, {21}, {39}, {41}
+ \item Diktatur
+ \subitem -\,Afrika, {17}
+ \subsubitem --\,Kongo, {17}
+ \subsubitem --\,Nigeria, {16}
+ \subitem -\,Asien, {38}
+ \subsubitem --\,Nordvietnam, {38}
+ \subitem -\,Regierungsform, {29}
+ \item dominiere, {9}
+ \item durch, {31}
+
+\indexspace
+\textbf{E}
+\nopagebreak[4]
+ \item ein, {36}
+ \item einer, {22}
+ \item einschlägige, {31}
+ \item Ende, {21}
+ \item endet, {15}
+ \item er, {2}, {4}
+ \item erkennen, {31}
+ \item ersten, {21}
+ \item erzählt, {1}
+ \item es, {8}, {38}
+ \item etwa, {19}, {21}
+ \item Europaplatz., {25}
+
+\indexspace
+\textbf{F}
+\nopagebreak[4]
+ \item Feindbild, {7}
+ \item Festakt, {19}
+ \item Flaggen, {36}
+ \item Flüchtlinge, {11}
+ \item Frust, {17}
+ \item für, {10}, {26}
+
+\indexspace
+\textbf{G}
+\nopagebreak[4]
+ \item gaben, {30}
+ \item gehabt, {36}
+ \item gehe, {9}
+ \item gekommen., {38}
+ \item Gelassenheit, {4}
+ \item gelästert, {46}
+ \item Gleichzeitig, {4}
+ \item gut, {9}
+
+\indexspace
+\textbf{H}
+\nopagebreak[4]
+ \item haben, {32}, {35}, {42}
+ \item haben., {35}
+ \item hatte, {25}
+ \item Hilfe, {10}
+
+\indexspace
+\textbf{I}
+\nopagebreak[4]
+ \item illegalen, {36}
+ \item Im, {43}
+ \item in, {15}, {19}
+ \item ist, {43}
+
+\indexspace
+\textbf{J}
+\nopagebreak[4]
+ \item jedoch, {36}
+ \item jungen, {40}
+
+\indexspace
+\textbf{K}
+\nopagebreak[4]
+ \item keine, {36}
+ \item Kilometer, {23}
+ \item Kundgebung, {23}, {42}
+
+\indexspace
+\textbf{L}
+\nopagebreak[4]
+ \item leben., {14}
+ \item lernen, {14}
+
+\indexspace
+\textbf{M}
+\nopagebreak[4]
+ \item machen., {8}
+ \item mahnte, {2}
+ \item man, {14}
+ \item Männer, {40}
+ \item Märtyrer, {1}
+ \item mehr, {3}, {32}
+ \item Menschen, {34}
+ \item Migranten, {12}
+ \item Minderheiten, {5}
+ \item mit, {14}, {29}
+ \item möglich., {14}
+ \item Motto, {29}
+ \item müsse, {14}
+
+\indexspace
+\textbf{N}
+\nopagebreak[4]
+ \item nach, {19}
+ \item Nach, {31}
+ \item Nation., {30}
+ \item neigte, {21}
+ \item Neonazis, {31}
+ \item Netz, {43}
+ \item nicht, {14}, {38}
+ \item Nicht-Perfekten, {14}
+
+\indexspace
+\textbf{O}
+\nopagebreak[4]
+ \item Obwohl, {8}
+ \item Osten, {46}
+ \item Österreich, \textbf{1--38}
+
+\indexspace
+\textbf{P}
+\nopagebreak[4]
+ \item Perfekte, {15}
+ \item Pessimismus., {10}
+ \item Plakate, {35}
+ \item Polizei, {32}, {38}
+
+\indexspace
+\textbf{R}
+\nopagebreak[4]
+ \item rechten, {23}
+ \item richtig, {13}
+
+\indexspace
+\textbf{S}
+\nopagebreak[4]
+ \item sagte, {36}
+ \item sei, {12}, {38}
+ \item seiner, {1}
+ \item sich, {17ff}, {21}, {30}, {32}
+ \item Sie, {35}
+ \item sind, {42}
+ \item Sprecher, {36}
+ \item Staatsoper, {20}
+ \item Stunden, {19}
+ \item Symbole, {36}
+ \item Szenecodes, {31}
+
+\indexspace
+\textbf{T}
+\nopagebreak[4]
+ \item Tag, {29}
+ \item tausend, {33}
+ \item teilgenommen, {42}
+ \item Teilnehmer, {21}, {30}
+
+\indexspace
+\textbf{U}
+\nopagebreak[4]
+ \item über, {45}
+ \item Überholmanöver, {17}
+ \clearpage
+ \item überholt, {38}
+ \item überwiegend, {39}
+ \item unbegrenzt, {14}
+ \item und, {5}, {11f}, {35}
+ \item unklar., {43}
+
+\indexspace
+\textbf{V}
+\nopagebreak[4]
+ \item versammelten, {21}
+ \item verwendet, {36}
+ \item Volksvertreter, {6}
+
+\indexspace
+\textbf{W}
+\nopagebreak[4]
+ \item Während, \see{Was\_auch\_immmer}{17}
+ \item warnte, {4}
+ \item weiter, {24}
+ \item wenige, {23}
+ \item Wer, {14}
+ \item wichtig, {12}
+ \item wieder, {31}, {44ff}
+ \item Wir, {25}
+ \item wird, {43}
+ \item Woher, {38}
+
+\indexspace
+\textbf{Z}
+\nopagebreak[4]
+ \item zahlreiche, {30}
+ \item zeitgleich, {21}
+ \item zu, {3}, {8}, {14}, {28}, {31}
+ \item zufolge, {30}
+ \item zum, {7}
+ \item zunächst, {38}
+ \item Zwischenfällen, {38}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/demo.pdf b/indexing/xindex/doc/tests/demo.pdf
new file mode 100644
index 0000000000..4b988c7d40
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/demo.tex b/indexing/xindex/doc/tests/demo.tex
new file mode 100644
index 0000000000..fcdccab765
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo.tex
@@ -0,0 +1,56 @@
+\documentclass[paper=a4,parskip=half-,ngerman]{scrartcl}
+\usepackage{eurosym}
+\usepackage[silent]{fontspec}
+\usepackage{libertinus-otf}
+\usepackage{babel}
+\usepackage{hvindex}
+\usepackage{makeidx}
+
+\let\idxtextClasses\texttt
+
+\makeindex
+\begin{document}
+Ein \Index{Märtyrer} \Index{erzählt} Österreich\index{Österreich|(}\index{Auto|textbf} \Index{Ärger}
+
+\index{Automobil|fbox}
+\Index{4711} \Index{\textbackslash}
+In \Index{seiner}\newpage \Index{Ansprache} \Index{mahnte} \Index{er}\newpage \Index{zu} \Index{mehr}\newpage \Index{Gelassenheit}.
+\Index{Gleichzeitig} \Index{warnte} \Index{er}\newpage, \Index{Minderheiten} \Index{und}\newpage \Index{Volksvertreter}\newpage \Index{zum}
+\Index{Feindbild}\newpage \Index{zu} \Index{machen.} \Index{Obwohl} \Index{es} \Index{Deutschland}\newpage \Index{gut} \Index{gehe}
+\Index{dominiere} \Index{der|(}\newpage \Index{Pessimismus.} \Index{Hilfe} \Index{für}\newpage \Index{Flüchtlinge} \Index{und}\newpage \Index{andere}
+\Index{Migranten} \Index{sei} \Index{wichtig} \Index{und}\newpage \Index{richtig} \Index{aber}\newpage \Index{nicht} \Index{unbegrenzt}
+\Index{möglich.} \Index{Deshalb} \Index{müsse} \Index{man} \Index{lernen} \Index{mit} \Index{dem} \Index{Nicht-Perfekten}
+\Index{zu} \Index{leben.} \Index{Wer}\newpage \Index{das} \Index{Perfekte} \Index{anstrebt} \Index{endet} \Index{in} \Index{der}\newpage
+\index{Diktatur!Afrika!Nigeria}.\newpage \Index{Ärger!Frust} \Index{Ärgerlich} \index{Diktatur!Afrika!Kongo}
+\Index{Ägäis} \Index{sich} \Index{Überholmanöver}
+\makeatletter
+\write\@indexfile{\string\clearpage}
+\makeatother
+
+\Index{Während|see{Was\_auch\_immmer}}\newpage\Index{sich} \Index{Ägäis|seealso{Griechenland}} \Index{der}\newpage \Index{Ägäis}\Index{Festakt} \Index{sich}
+\Index{nach} \Index{etwa} \Index{anderthalb} \Index{Stunden}
+\Index{in} \Index{der}\newpage \Index{Ägäis}\Index{Staatsoper}\newpage \Index{dem} \Index{Ende} \Index{neigte} \Index{versammelten} \Index{sich}
+\Index{etwa} \Index{zeitgleich} \Index{die} \Index{ersten} \Index{Teilnehmer}\newpage \Index{einer}\newpage \Index{rechten} \Index{Kundgebung}
+\Index{wenige} \Index{Kilometer}\newpage \Index{weiter}\newpage \Index{am} \Index{Europaplatz.} \Index{Aufgerufen} \Index{hatte} \Index{das}
+\Index{Bündnis} \Index{Wir}\newpage \Index{für}\newpage \Index{Deutschland}\newpage \Index{zu} \Index{der}\newpage \Index{Demonstration} \Index{mit}
+\Index{dem}\index{Diktatur!Regierungsform} \Index{Motto} \Index{Tag} \Index{der}\newpage \Index{Nation.} \Index{Beobachtern} \Index{zufolge} \Index{gaben}
+\Index{sich} \Index{zahlreiche} \Index{Teilnehmer}\newpage \Index{durch} \Index{einschlägige} \Index{Szenecodes} \Index{als}
+\Index{Neonazis} \Index{zu} \Index{erkennen}. \Index{wieder}
+\Index{Nach} \Index{Ärger} \Index{Angaben} \Index{der|)}\newpage \Index{Polizei} \Index{haben} \Index{sich} \Index{mehr}\newpage \Index{als} \Index{tausend}\newpage
+\Index{Menschen} \Index{der}\newpage \Index{Demonstration} \Index{angeschlossen} \Index{haben.} \Index{Sie} \Index{haben}
+\Index{demnach} \Index{Plakate} \Index{und}\newpage \Index{Flaggen} \Index{dabei} \Index{gehabt} \Index{jedoch} \Index{keine}
+\Index{illegalen} \Index{Symbole} \Index{verwendet} \Index{sagte} \Index{ein} \Index{Sprecher}\newpage \Index{der}\newpage \Index{Polizei}.
+\Index{überholt}
+\Index{Ärgernis} Österreich\index{Österreich|)textbf}
+\index{Diktatur!Asien!Nordvietnam}Zu \Index{Zwischenfällen} \Index{sei} \Index{es} \Index{demnach} \Index{zunächst} \Index{nicht} \Index{gekommen.} \Index{Woher}\newpage
+\Index{die} \Index{überwiegend}\newpage \Index{jungen} \Index{Männer}\newpage \Index{die} \Index{an} \Index{der}\newpage \Index{Kundgebung}
+\Index{teilgenommen} \Index{haben} \Index{angereist} \Index{sind}\newpage \Index{ist} \Index{unklar.} \Index{Im} \Index{Netz}
+\Index{wird}\newpage
+ \Index{allerdings} \Index{wieder}\newpage\Index{wieder} \Index{über}\newpage\Index{wieder}
+\Index{den} \Index{braunen} \Index{Osten} \Index{gelästert}.
+
+
+\printindex
+
+
+\end{document}
diff --git a/indexing/xindex/doc/tests/demo2.idx b/indexing/xindex/doc/tests/demo2.idx
new file mode 100644
index 0000000000..a1b2354471
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo2.idx
@@ -0,0 +1,5 @@
+\indexentry{foo}{1}
+\indexentry{foo|see{bar}}{2}
+\indexentry{foo|textit}{1}
+\indexentry{foo|textbf}{3}
+\indexentry{foo}{3}
diff --git a/indexing/xindex/doc/tests/demo2.ind b/indexing/xindex/doc/tests/demo2.ind
new file mode 100644
index 0000000000..724acd9654
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo2.ind
@@ -0,0 +1,8 @@
+
+\begin{theindex}
+
+\indexspace
+\textbf{F}
+\nopagebreak[4]
+ \item foo, {1}, \textit{1}, \see{bar}{2}, {3}, \textbf{3}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/demo3.idx b/indexing/xindex/doc/tests/demo3.idx
new file mode 100644
index 0000000000..b9afc364ed
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo3.idx
@@ -0,0 +1,5 @@
+\indexentry{foo}{1}
+\indexentry{foo}{2}
+\indexentry{foo|textit}{2}
+\indexentry{foo|textbf}{3}
+\indexentry{foo}{4}
diff --git a/indexing/xindex/doc/tests/demo3.ind b/indexing/xindex/doc/tests/demo3.ind
new file mode 100644
index 0000000000..327fe951e9
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo3.ind
@@ -0,0 +1,8 @@
+
+\begin{theindex}
+
+\indexspace
+\textbf{F}
+\nopagebreak[4]
+ \item foo, {1f}, \textit{2}, \textbf{3}, {4}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/demo3.pdf b/indexing/xindex/doc/tests/demo3.pdf
new file mode 100644
index 0000000000..7c7c67b681
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo3.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/demo3.tex b/indexing/xindex/doc/tests/demo3.tex
new file mode 100644
index 0000000000..81dd869e79
--- /dev/null
+++ b/indexing/xindex/doc/tests/demo3.tex
@@ -0,0 +1,26 @@
+\documentclass[paper=a4,parskip=half-,ngerman]{scrartcl}
+\usepackage{eurosym}
+\usepackage[silent]{fontspec}
+\usepackage{libertinus-otf}
+\usepackage{babel}
+\usepackage{hvindex}
+\usepackage{makeidx}
+
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+
+
+\let\idxtextClasses\texttt
+
+\makeindex
+\begin{document}
+Ein foo\index{foo} \newpage und \index{foo} ein foo\index{foo|textit} \newpage und foo\index{foo|textbf} \newpage und foo\index{foo}
+
+\printindex
+
+
+\end{document}
diff --git a/indexing/xindex/doc/tests/runTests.sh b/indexing/xindex/doc/tests/runTests.sh
new file mode 100755
index 0000000000..68f6c7850a
--- /dev/null
+++ b/indexing/xindex/doc/tests/runTests.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+echo "buch"
+xindex buch > /dev/null
+lualatex buch > /dev/null
+
+echo "demo"
+lualatex demo > /dev/null
+xindex -l de demo > /dev/null
+lualatex demo > /dev/null
+
+echo "demo2"
+xindex demo2 > /dev/null
+
+echo "demo3"
+lualatex demo3 > /dev/null
+xindex -l de demo3 > /dev/null
+lualatex demo3 > /dev/null
+
+echo "demo-hyperref"
+xindex demo-hyperref > /dev/null
+lualatex demo-hyperref > /dev/null
+
+echo "HADW"
+xindex -l de -c HAdW HADW > /dev/null
+lualatex HADW > /dev/null
+
+echo "Umlaute"
+xindex -l de Umlaute > /dev/null
+lualatex Umlaute > /dev/null
+
+echo "Umlaute2"
+xindex -l de -c DIN2 Umlaute2 > /dev/null
+lualatex Umlaute2 > /dev/null
+
+rm -fr *.aux *.log *.ilg *.out \ No newline at end of file
diff --git a/indexing/xindex/doc/xindex-doc.pdf b/indexing/xindex/doc/xindex-doc.pdf
new file mode 100644
index 0000000000..84fcec9a5e
--- /dev/null
+++ b/indexing/xindex/doc/xindex-doc.pdf
Binary files differ
diff --git a/indexing/xindex/doc/xindex-doc.tex b/indexing/xindex/doc/xindex-doc.tex
new file mode 100644
index 0000000000..b7870604a7
--- /dev/null
+++ b/indexing/xindex/doc/xindex-doc.tex
@@ -0,0 +1,1430 @@
+%% $Id: xltabular-doc.tex 635 2017-10-24 18:22:59Z herbert $
+%
+\listfiles\setcounter{errorcontextlines}{100}
+\documentclass[paper=a4,fontsize=11pt,DIV=13,parskip=half-,
+ captions=tableabove,twoside=on]{scrartcl}
+\usepackage{fontspec}
+\setmainfont{AccanthisADFStdNo3}[
+ UprightFont =*-Regular,
+ BoldFont =*-Bold,
+ ItalicFont =*-Italic,
+ BoldItalicFont=*-BoldItalic,
+ RawFeature = -rlig,
+]
+\setsansfont{GilliusADF}[
+ UprightFont =*-Regular,
+ BoldFont =*-Bold,
+ ItalicFont =*-Italic,
+ BoldItalicFont=*-BoldItalic,
+ RawFeature = -rlig,
+]
+\setmonofont{DejaVu Sans Mono}[Scale=MatchLowercase,FakeStretch=0.9]
+%\setmonofont{Anonymous Pro}[Scale=MatchLowercase,FakeStretch=0.9]
+
+\newfontfamily\Japanese[Scale=MatchUppercase]{SourceHanSans}
+\newfontfamily\CODE{CODE2000}
+
+\usepackage[english]{babel}
+\usepackage{scrlayer-scrpage}
+\automark[section]{section}
+\automark*[subsection]{}
+\pagestyle{scrheadings}
+
+{\catcode`\%=12
+ \gdef\perCent{%}
+ \gdef\DoubleperCent{%%}
+}
+
+
+\usepackage{xcolor,fancyvrb,varioref}
+\usepackage{xltabular}
+\usepackage{dtk-logos} % for Wikipedia W
+\usepackage{listings}
+\usepackage{dtk-extern} % for Wikipedia W
+\lstset{basicstyle=\ttfamily\small,language=[LaTeX]TeX}
+\usepackage{ragged2e}
+\usepackage{makeidx}\makeindex
+\usepackage{hvindex}
+\def\Lfile#1{\texttt{#1}\index{#1 file@\texttt{#1} file}}
+\def\Lext#1{\texttt{.#1}\index{#1 file extension@\texttt{.#1} file extension}}
+\def\Lcs#1{\texttt{\textbackslash#1}\index{#1@\texttt{\textbackslash#1}}}
+\def\Lenv#1{\texttt{#1}\index{#1 environment@\texttt{#1} environment}}
+\def\Lpack#1{\texttt{#1}\index{#1 package@\texttt{#1} package}}
+\def\Lprog#1{\texttt{#1}\index{#1 program@\texttt{#1} program}}
+\def\Loption#1{\texttt{#1}\index{#1@\texttt{#1} package option}}
+
+%\usepackage[bibstyle=dtk]{biblatex}
+%\addbibresource{\jobname.bib}
+
+\raggedbottom
+\usepackage{url}
+\usepackage[colorlinks,linktocpage]{hyperref}
+
+\makeatletter% from: doc.sty
+\newcommand*\GetFileInfo[1]{%
+ \def\filename{#1}%
+ \def\@tempb##1 ##2 ##3\relax##4\relax{%
+ \def\filedate{##1}%
+ \def\fileversion{##2}%
+ \def\fileinfo{##3}}%
+ \edef\@tempa{\csname ver@#1\endcsname}%
+ \expandafter\@tempb\@tempa\relax? ? \relax\relax}
+\makeatother
+
+%\GetFileInfo{xltabular.sty}
+\usepackage{xspace}
+
+\newcommand\XI{\texttt{xindex}\xspace}
+
+\def\setVersion#1{\setVVersion#1!!}
+\def\setVVersion#1=#2!!{\def\xIndexVersion{#2}}
+
+\setVersion{version = 0.13}% can be autimatically changed by perl
+
+\title{Program and package \texttt{xindex} \\--\\ \normalsize \xIndexVersion\ (\today)}
+\author{Herbert Voß\thanks{hvoss@tug.org}}
+\begin{document}
+\maketitle
+\tableofcontents
+
+
+\clearpage
+
+\section{Introduction}
+The Lua program
+\XI is a \Index{unicode} aware program for creating an index file from an \Lext{idx} source
+file. It is completely compatible to the current \Lprog{makeindex} program, but can handle
+\Index{UTF-8}, 16, 32, and 64. The \LaTeX\ package \Lpack{xindex} is a package which provides
+a \LaTeX\ command which writes additional text into the index file. This text (comments and/or macros)
+will be accepted by the program \XI.
+
+The general structure of a \Index{data element} in the Lua table is:
+
+\begin{verbatim}
+data = { Entry = <text>, -- like the input line without command \indexentry
+ pages = {
+ { number = <roman/arabic number or text>,
+ special = <macro> }, -- the part after | in the input
+ [...]
+ { number = <roman/arabic number or text>,
+ special = <macro> }
+ },
+ sortChar = <unicode codepoint>, -- of the first character of Entry
+ Macro = <TeX macro> -- only useful with LaTeX package \Lpack{xindex}
+ }
+\end{verbatim}
+
+After reading the input file the table \texttt{pages} has only one element for the number\index{page number}
+and the so-called special command. When the pages are compressed the table will collect all pages which
+refer to the same \Index{entry name}.
+
+
+\iffalse
+EntryList[2] = {
+ Entry = "Johann", -- the index item foo@bar
+ pages = { -- the page number(s) and the part after |
+ { number = 111,
+ special = '\\emph' },
+ { number = 11,
+ special = "\\textit"}
+ },
+ sortChar= 80, -- Initial for later output
+ Macro = ""
+}
+
+\fi
+
+
+
+\subsection{Syntax}
+
+The \Index{syntax} is \verb|xindex [...] <file>| where \verb|[...]| are optional \Index{argument}s, either in short or
+long form which, of course, can be mixed:
+
+\begin{verbatim}
+xindex
+ [-q,--quiet ]
+ [-h,--help ]
+ [-v ] verbose
+ [-c,--config ] default is cfg
+ [-e,--escapechar ] default is "
+ [-a, --nocasesensitive ] default is false
+ [-n,--noheadings ] default is false
+ [-o,--output ] default is <input>.ind
+ [-l,--language ] default is en
+ [-p,--prefix] default L
+ <input file>
+\end{verbatim}
+
+
+
+The \Index{language} has to be chosen as an international abbreviation in lower- or uppercase letters, see
+\url{https://en.wikipedia.org/wiki/ISO_3166-2}
+
+
+\subsection{How it works}
+\XI creates by default an \Index{output} file \texttt{<input>.ind} which can be read
+by the \LaTeX\ document with the default command \Lcs{printindex}. One can use another
+output filename, which makes only sense if one doesn't use the \Lcs{printindex} command
+for typesetting the index.
+The default \Index{sorting}
+is given by the configuration file, which defines replacements for \Index{accented characters},
+like \texttt{ö}$\rightarrow$\texttt{o}.
+
+\subsection{The \texttt{.idx} file}
+There are four characters which must be escaped if used in the command \Lcs{index}:
+\verb=!=, \verb=@=, \verb="=, or \verb=|=. These charactzers have a special meaning for
+the index.\index{"!}\index{"@}\index{"|}
+The default \Index{escape character} is the double quote \verb|"|:
+
+\iffalse
+To put a !\index{"!}, @\index{"@}, or |\index{"|} character in an index entry, quote it by preceding the
+character with a quote ". More precisely, any character is said to be quoted if it
+follows an unquoted " that is not part of a \" command. A quoted !, @, or
+| character is treated like an ordinary character rather than having its usual
+meaning. The " preceding a quoted character is deleted before the entries
+are alphabetized.
+\fi
+
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ pages={1,2},
+ frame,
+ compiler=lualatex,
+ crop,
+ xindex,
+ force=true,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass{scrartcl}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+\section{Escaping characters}
+\begin{itemize}
+\item Exclamation mark ! \index{exclaim ("!)}
+\item Vertical bar| \index{Vertical bar ("|)}
+\item Doublequote \verb|"| \index{""}
+\item Double doublequote \verb|""| \index{""""}
+\item At character @ \index{At ("@)}
+\end{itemize}
+run \texttt{xindex <file.idx>}\index{<file.idx>}\index{123}
+\newpage
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+For the german language the double quote is an active character and it makes live easier
+if one chooses another character.
+The escape character can be changed easily by the optional argument \verb|-e "<char>"| or
+\verb|--escapechar "<char">|. The following example shows how
+it works for the \Index{escape character} > (greater). Internally the escape sequences are
+now defined as:
+
+\begin{verbatim}
+escape_chars = { -- by default " is the escape char
+ {esc_char..'"', '//escapedquote//', '\\"{}' },
+ {esc_char..'@', '//escapedat//', '@' },
+ {esc_char..'|', '//escapedvert//', "|" },
+ {esc_char..'!', '//scapedexcl//', '!' }
+}
+\end{verbatim}
+
+which is, of course, not of interest for the user. With the beginning the escaped chars
+are converted into the internal strings and later back to the origin meaning.
+
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ pages={1,2},
+ frame,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-e ">",
+ force=true,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass{scrartcl}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+\section{Escaping characters with >}
+\begin{itemize}
+\item Exclamation mark ! \index{exclaim (>!)}
+\item Vertical bar| \index{Vertical bar (>|)}
+\item Doublequote \verb|"| \index{>"}
+\item Double doublequote \verb|""| \index{>">"}
+\item At character @ \index{At (>@)}
+\end{itemize}
+Run \texttt{xindex} with \texttt{xindex -e ">"}\index{<file.idx>}\index{123}
+\newpage
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+\section{Language}\label{language}
+
+The \Index{language} is only important for the first two headers in the output of the index data.
+They are by default \emph{Symbols} followed by \emph{Numbers}. In a new version of \Lprog{xindex}
+it will be customizable.
+The predefined language is »en« and currently the following languages are possible:
+
+
+{\Japanese\small
+indexheader = \{ \\
+\quad de = \{\"{}Symbole\"{}, \"{}Zahlen\"{}\},\\
+\quad en = \{\"{}Symbols\"{}, \"{}Numbers\"{}\},\\
+\quad fr = \{\"{}Symboles\"{},\"{}Chiffre\"{}\},\\
+\quad jp = \{\"{}シンボル\"{},\"{}番号\"{}\},\\
+\}
+%\end{verbatim}
+}
+
+The following example was run with \verb|xindex -l de <file>.idx|:
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ pages={1,2},
+ frame,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l de -e ">",
+ force=true,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass{scrartcl}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+\section{Escaping characters with >}
+\begin{itemize}
+\item Exclamation mark ! \index{exclaim (>!)}
+\item Vertical bar| \index{Vertical bar (>|)}
+\item Doublequote \verb|"| \index{>"}
+\item Double doublequote \verb|""| \index{>">"}
+\item At character @ \index{At (>@)}
+\end{itemize}
+Run \texttt{xindex} with \texttt{xindex -l de -e ">"}\index{123}
+\newpage
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+\section{Sorting}
+
+The default sorting is unicode aware and uses a translation table for accented characters:
+
+\begin{verbatim}
+alphabet_lower = { -- for sorting
+ { ' ' }, -- only for internal tests
+ { 'a', 'á', 'à', 'ä', 'å', 'æ', },
+ { 'b' },
+ { 'c', 'ç' },
+ { 'd' },
+ { 'e', 'é', 'è', 'ë' },
+ { 'f' },
+ { 'g' },
+ { 'h' },
+ { 'i', 'í', 'ì', 'ï' },
+ { 'j' },
+ { 'k' },
+ { 'l' },
+ { 'm' },
+ { 'n', 'ñ' },
+ { 'o', 'ó', 'ò', 'ö', 'ø', 'œ'},
+ { 'p' },
+ { 'q' },
+ { 'r' },
+ { 's', 'š', 'ß' },
+ { 't' },
+ { 'u', 'ú', 'ù', 'ü' },
+ { 'v' },
+ { 'w' },
+ { 'x' },
+ { 'y', 'ý', 'ÿ' },
+ { 'z', 'ž' }
+}
+\end{verbatim}
+
+There is also a table for the uppercase letters. If it should be edited or extended then copy first the
+base configuration file \Lfile{xindex-cfg.lua} and modify that new file. It can be used by \XI
+with the optional argument \texttt{-c newfile} if it is named as \Lfile{xindex-newfile.lua}.
+For german there already exists a configuration
+file \Lfile{xindex-DIN2.lua} which uses the so-called »Telefonbuchsortierung« which converts
+the umlauts like ö$\rightarrow$oe:
+
+\begin{verbatim}
+alphabet_upper = { -- for sorting
+ { ' ' },
+ { 'A', 'Á', 'À', 'Å', 'Æ'},
+ { 'AE', 'Ä'},
+ { 'B' },
+ { 'C', 'Ç' },
+ { 'D' },
+ { 'E', 'È', 'È', 'Ë' },
+ { 'F' },
+ { 'G' },
+ { 'H' },
+ { 'I', 'Í', 'Ì', 'Ï' },
+ { 'J' },
+ { 'K' },
+ { 'L' },
+ { 'M' },
+ { 'N', 'Ñ' },
+ { 'O', 'Ó', 'Ò', 'Ø','Œ' },
+ { 'OE', 'Ö' },
+ { 'P' },
+ { 'Q' },
+ { 'R' },
+ { 'S', 'Š' },
+ { 'T' },
+ { 'U', 'Ú', 'Ù' },
+ { 'UE', 'Ü' },
+ { 'V' },
+ { 'W' },
+ { 'X' },
+ { 'Y', 'Ý', 'Ÿ' },
+ { 'Z', 'Ž' }
+}
+\end{verbatim}
+
+
+
+\begin{externalDocument}[
+ grfOptions={scale=0.9},%width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.4\linewidth,
+ pages={2},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l de,
+ force=true,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass[paper=a5]{scrartcl}
+\usepackage[ngerman]{babel}
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+\newcommand\Index[1]{\index{#1}#1}
+%StopVisiblePreamble
+\usepackage{multicol}
+\makeatletter
+\def\theindex{% only for demonstration
+ \newpage
+ \section*{\indexname}
+ \begin{multicols}{2}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\def\endtheindex{\end{multicols}}
+\makeatother
+\pagestyle{empty}
+\begin{document}
+Sorted with \verb|-l DE|
+
+\Index{Österreich} \Index{Öresund}
+\Index{Ostern} \Index{Ober}
+\Index{Oberin} \Index{Österreich}
+\Index{Öresund} \Index{Ostern}
+\Index{Ober} \Index{Oberin}
+\Index{Obstler} \Index{Öl}
+\Index{ölen} \Index{Ödem}
+\Index{Oligarch} \Index{Oder}
+\Index{oder} \index{Fluss!Oder}
+\index{Oder|seealso{Fluss}}
+\Index{Göbel} \Index{Goethe}
+\Index{Göthe} \Index{Götz}
+\Index{Goldmann}
+
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+
+The same sorted with the german DIN variant 2 with \verb|--config DIN2|, which
+is part of the \TeX\ distribution. In this case a letter Ö is converted to Oe before sorting
+the word beginninjg with the letter Ö:
+
+\noindent
+\begin{externalDocument}[
+ grfOptions={scale=0.9},%width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.4\linewidth,
+ pages={2},
+ frame=false,compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-c DIN2 -l DE,
+ force=true,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass[paper=a5]{scrartcl}
+\usepackage[ngerman]{babel}
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+\newcommand\Index[1]{\index{#1}#1}
+%StopVisiblePreamble
+\usepackage{multicol}
+\makeatletter
+\def\theindex{% only for demonstration
+ \newpage
+ \section*{\indexname}
+ \begin{multicols}{2}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\def\endtheindex{\end{multicols}}
+\makeatother
+\pagestyle{empty}
+\begin{document}
+Sorted with
+\verb|--config DIN2 -l DE|
+
+\Index{Österreich} \Index{Öresund}
+\Index{Ostern} \Index{Ober}
+\Index{Oberin} \Index{Österreich}
+\Index{Öresund} \Index{Ostern}
+\Index{Ober} \Index{Oberin}
+\Index{Obstler} \Index{Öl}
+\Index{ölen} \Index{Ödem}
+\Index{Oligarch} \Index{Oder}
+\Index{oder} \index{Fluss!Oder}
+\index{Oder|seealso{Fluss}}
+\Index{Göbel} \Index{Goethe}
+\Index{Göthe} \Index{Götz}
+\Index{Goldmann}
+
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+
+The following runs with \verb|xindex -l jp <file>|:
+
+% {begin\string{document\string}}% #2
+% {end\string{document\string}}% #3
+% {\perCent StartVisiblePreamble}% #4
+% {\perCent StopVisiblePreamble}% #5
+
+\noindent
+\begin{minipage}[t]{0.45\linewidth}
+\vspace{0pt}
+\setsansfont{SourceHanSans}\sffamily
+\edef\FancyVerbStartString{\perCent StartVisiblePreamble}
+\edef\FancyVerbStopString{\perCent StopVisiblePreamble}
+\colorbox{black!20}{\parbox{\linewidth}{%
+\VerbatimInput[fontfamily=helvetica]{Examples/xindex-6.tex}
+}}
+
+\edef\FancyVerbStartString{\string\begin\string{document\string}}
+\edef\FancyVerbStopString{\string\end\string{document\string}}
+\colorbox{black!10}{\parbox{\linewidth}{%
+\VerbatimInput[fontfamily=helvetica]{Examples/xindex-6.tex}
+}}
+\end{minipage}\hfill
+\begin{minipage}[t]{0.54\linewidth}
+\vspace{0pt}
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+% mpwidth=0.5\linewidth,
+ pages={2},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l jp,
+ force=true,
+ runs=2,
+ code=false,
+ docType=latex,
+ showFilename,
+ align=\centering,
+% usefancyvrb,
+ lstOptions={fontfamily=helvetica}]{xindex}
+\documentclass[a5paper]{article}
+%StartVisiblePreamble
+\usepackage{fontspec}
+\setmainfont{SourceHanSans}
+\usepackage[japanese]{babel}
+\addto\captionsjapanese{%
+ \def\indexname{指数}}
+\usepackage{hvindex}% for \Index
+\usepackage{makeidx}\makeindex
+%StopVisiblePreamble
+\usepackage{multicol}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \begin{multicols}{2}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\def\endtheindex{\end{multicols}}
+\makeatother
+\pagestyle{empty}
+\begin{document}
+\Index{車} \Index{車道}
+日本\index{日本|fbox}
+\Index{病院} \Index{コンピュータ}
+\Index{プリンタ} \Index{印刷}
+\Index{スイミングプール} \Index{天王}
+\Index{広島} \Index{ドイツ}
+\Index{日本} \Index{ワープロ}
+\Index{foo} und \Index{bar}
+\Index{//} \Index{4711}
+\newpage\printindex
+\end{document}
+\end{externalDocument}
+\end{minipage}
+
+
+
+%\clearpage
+
+\section{Compressing pagenumbers}\label{Compressing}
+By default page sequences of an entry are compressed to
+\begin{description}
+\item[8f] page 8 and 9
+\item[8ff] page 8, 9, and 10
+\item[8-12] page 8, 9, \ldots, 12
+\end{description}
+
+The so-called folio abbreviation is language dependent and defined in the
+file \Lfile{xindex-cfg-common.cfg}:
+
+{\setsansfont[Scale=MatchUppercase]{SourceHanSans}
+\small
+\begin{Verbatim}[fontfamily=helvetica]
+folium = {
+ de = {"f", "ff"},
+ en = {"f", "ff"},
+ fr = {"\,sq","\,sqq"},
+ jp = {"シンボル","番号"},
+}
+\end{Verbatim}
+}
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+ pages={6},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l fr,
+ force=true,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass{scrartcl}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+Sorted with \verb|-l fr|
+
+foobar\index{foobar|(}
+foo\index{foo}\index{bar}\index{baz}\newpage
+foo\index{foo}\index{bar}\index{baz}\newpage
+foo\index{bar}\index{baz}\newpage
+foo\index{baz}\newpage
+foo\index{foo}foobar\index{foobar|)}
+\newpage
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+
+\section{\texttt{hyperref}}
+
+Using the package \Lpack{hyperref} is no problem:
+
+\enlargethispage{2.5\normalbaselineskip}
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+ pages={3},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l de,
+ force,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass[paper=a6]{scrartcl}
+\usepackage{multicol}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \begin{multicols}{2}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\def\endtheindex{\end{multicols}}
+\makeatother
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+\usepackage{hvindex}% for \Index
+\usepackage[colorlinks]{hyperref}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+Sorted with \verb|-l DE|
+\Index{Österreich} \Index{Öresund}
+\Index{Ostern} \Index{Ober} \Index{Oberin}
+\Index{Österreich} \index{Öresund|textbf}
+\Index{Ostern} \Index{Ober} \Index{Oberin}
+\Index{Obstler} \Index{Öl} \Index{ölen}
+\Index{Ödem} \Index{Oligarch} \Index{Oder}
+\Index{oder} \index{Fluss!Oder|textit}
+\Index{Oder|seealso{Fluss}} \Index{Göbel}
+\Index{Goethe} \Index{Göthe} \Index{Götz}
+\newpage\Index{Goldmann} \Index{Goethe}
+\newpage \printindex
+\end{document}
+\end{externalDocument}
+
+
+\section{Page argument}
+Every page can be combined with an additional macro, like \verb=\index{foo|fbox}=, the page number
+will be set into a framebox. If we have on the same page the two commands:
+
+\begin{verbatim}
+foo\index{foo} and foo\index{foo|bar}
+\end{verbatim}
+
+then we have two \emph{different} index entries which will not be compressed to one entry.
+In the follwoing example we have four different entries for \emph{foo} which is the reason
+that we do not get an output like \texttt{foo, 1--4}. Only the first two entries are
+of the same type, so we get \texttt{1f} in the output.
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+ pages={5},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l de,
+ force=true,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass{scrartcl}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+Ein foo\index{foo} \newpage und \index{foo}
+ein foo\index{foo|textit} \newpage
+und foo\index{foo|textbf} \newpage
+und foo\index{foo|fbox}
+
+\newpage
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+
+
+
+
+\section{The config file}
+
+The main config file is \Lfile{xindex-cfg.lua} is used by default and loading it by the
+optional parameter -c makes no sense. A new config file must have the prefix \texttt{xindex-}
+and the file extension \Lext{lua}, for example: \Lfile{xindex-HAdW-eKO.lua} which can be used
+with \verb|--config HAdW-eKO|. The file must be saved in the documents directory or in
+one which is known to \Lprog{kpsewhich}, for example\footnote{The directory \texttt{xindex} must be created
+before saving the file.} \verb|$TEXMFLOCAL/tex/lualatex/xindex/| %$
+Don not forgot to update the filename database.
+
+A new config file must declare at least the variables which are part of the
+default config file: the translation tables and
+
+\begin{verbatim}
+itemPageDelimiter = "," -- Hello, 14
+compressPages = true
+ -- something like 12--15, instaead of 12,13,14,15. the |( ... |) syntax is still valid
+fCompress = true -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
+minCompress = 3 -- 14--17 or
+rangeSymbol = "--"
+numericPage = true -- for non numerical pagenumbers, like "VI-17"
+sublabels = {"", "-\\-", "--\\-", "---\\-"}
+ -- for the sub(sub(sub-items, first one is empty
+pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17" -- not used !!!
+indexOpening = "" -- commands/text after \begin{theindex}
+\end{verbatim}
+
+The new config file can define own functions for compressing the pagelist
+for a given entry and for the formatting of the output. They must be called
+\verb|specialCompressPageList| and \verb|specialGetPageList|.
+%needs
+%the unmodified list of pages for one entry.
+
+For example:
+
+\begin{verbatim}
+function specialCompressPageList(pages)
+ if (pages[1]["number"] == "") then pages[1]["number"] = " " end
+ if (#pages <= 1) then
+ pages[1]["number"] = pages[1]["number"]:gsub('-',':~')-- replace "-" with ":~"
+ return pages
+ end -- only one pageno
+ local sortPages = {}
+ local roman
+ local volume
+ local page
+ local i
+ for i=1,#pages do
+ roman = string.gsub(pages[i]["number"],'%U*','') -- only uppercase to catch VII/1-123f and VII/3-123ff (folium pages)
+ if romanToNumber(roman) then
+ roman = string.format("%05d",tonumber(romanToNumber(roman))) -- only roman part VII
+ else
+ roman = ""
+ end
+ volume = string.gsub(pages[i]["number"],'%a*','') -- only the number /2 123 or /2-123
+ if volume then volume = volume:gsub('-%d*','') end -- delete - char to get /2
+ page = string.gsub(pages[i]["number"],'.*-','')
+ page = string.format("%5s",page)
+ sortPages[#sortPages+1] = {
+ origin = pages[i],
+ sort = roman..volume.." "..page } -- no minus between Roman/Volume and first page
+ end
+ table.sort(sortPages, function(a,b) return a["sort"] < b["sort"] end )
+
+[...]
+
+ return pages
+ end
+end
+\end{verbatim}
+
+is a special function which can handle \Index{page number}s like VII-17, VIII/2/1-186.
+Internally exists a function \verb|compressPageList| which is used if no
+\verb|specialCompressPageList| is defined.
+
+\begin{externalDocument}[
+ grfOptions={scale=0.9},% width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+% mpwidth=0.25\linewidth,
+ pages={2},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-c HAdW-eKO,
+ force,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\RequirePackage{filecontents}
+\begin{filecontents*}{\jobname.idx}
+\indexentry{Aachen, Johannes von}{VII/1-215}
+\indexentry{Aarones}{VII/2/1-1003}
+\indexentry{Aarones}{VII/2/1-1012}
+\indexentry{Abrahamson}{VII/2/1-864}
+\indexentry{Abrahamson}{VII/2/1-991}
+\indexentry{Abrahamson}{VII/2/1-1048}
+\indexentry{Abrahamson}{VII/2/1-1067}
+\indexentry{Abrahamson}{VII/2/1-1156}
+\indexentry{Adamson}{VII/2/1-1223}
+\indexentry{Adamson}{IX/1-1228}
+\indexentry{Karl!der Große, Kaiser}{VI/2-987}
+\indexentry{Karl!der Große, Kaiser}{VI/2-989}
+\indexentry{Karl!der Große, Kaiser}{VI/2-1028}
+\indexentry{Karl!IV., Kaiser}{VI/1-12}
+\indexentry{Karl!V., Kaiser}{VI/1-84}
+\indexentry{Karl!V., Kaiser}{VI/1-284}
+\indexentry{Karl!V., Kaiser}{VI/1-654}
+\indexentry{Karl!V., Kaiser}{VI/2-708}
+\indexentry{Karl!V., Kaiser}{VI/2-1014}
+\indexentry{Karl!V., Kaiser}{VI/2-1043}
+\indexentry{Karl!V., Kaiser}{VI/2-1131}
+\indexentry{Karl!V., Kaiser}{VI/2-1210}
+\indexentry{Braunschweig-Wolfenbüttel!Karl Viktor von, Herzog}{VI/1-83}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-758}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-759}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-760}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-761}
+\indexentry{Schleswig-Holstein!Rudolf von, Herzog}{VII/2/1-765}
+\indexentry{Adrian!Hauster}{VII/1-514}
+\indexentry{Adrian!Hauster}{XI/1-515}
+\indexentry{Alting!Mensa}{VII/1-426}
+\indexentry{Alting!Mensa}{VII/1-434}
+\indexentry{Alting!Mensa}{VII/1-453}
+\indexentry{Alting!Mensa}{VII/1-455}
+\indexentry{Alting!Mensa}{VII/1-466}
+\indexentry{Alting!Mensa}{VII/1-467}
+\indexentry{Bremen!Heinz von, Erzbischof|see{Sachsen-Lauenburg}}{}
+\indexentry{Osnabrück!Heinz von, Bischof|see{Sachsen-Lauenburg}}{}
+\indexentry{Zwingl, Haldrich}{IX-479}
+\indexentry{Zwingl, Haldrich}{IX-692}
+\indexentry{Julian!Apostata, römischer Kaiser}{VII/2/1-904}
+\indexentry{Justinian I., byzantinischer Kaiser}{VII/1-326}
+\indexentry{Justinian I., byzantinischer Kaiser}{VII/1-734}
+\indexentry{Justinian I., byzantinischer Kaiser}{VII/2/1-1011}
+\indexentry{Karl!V., Kaiser}{VII/1-34}
+\indexentry{Karl!II., Kaiser}{VII/1-147}
+\indexentry{Karl!III., Kaiser}{VII/1-149}
+\indexentry{Karl!VI., Kaiser}{VII/1-296}
+\indexentry{Karl!IV., Kaiser}{VII/1-34}
+\indexentry{Karl!IV., Kaiser}{VII/1-147}
+\indexentry{Karl!X., Kaiser}{VII/1-149}
+\indexentry{Karl!IX., Kaiser}{VII/1-296}
+\end{filecontents*}
+\documentclass[a4paper]{article}
+\usepackage[margin=1cm]{geometry}
+\usepackage{xcolor}
+\usepackage{url}
+\usepackage{multicol}
+\makeatletter
+\def\theindex{% only for demonstration
+ \newpage
+ \section*{Personenverzeichnis}
+ \begin{multicols}{2}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@ \raggedright
+ \let\item\@idxitem}
+\def\endtheindex{\end{multicols}}
+\makeatother
+%StartVisiblePreamble
+\usepackage{makeidx}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+\mbox{}\printindex
+\end{document}
+\end{externalDocument}
+
+
+
+
+
+
+The \Index{config file} \Lfile{xindex-dtk.lua} defines a special page output:
+
+\begin{verbatim}
+function specialGetPageList(v,hyperpage) -- Entry table, boolean
+ local Pages = {}
+[..]
+ if (Pages[1]["special"] == nil) or (Pages[1]["number"] == nil) then return "" end
+ if #Pages == 1 then
+ return "\\relax"..Pages[1]["number"].."\\@nil"
+ else
+ pageNo = "\\relax"..Pages[1]["number"]
+ for i=2,#Pages do
+ if Pages[i]["number"] then
+ pageNo = pageNo..", "..Pages[i]["number"].."\\@nil"
+ Pages[i] = {}
+ end
+ end
+[..]
+end
+\end{verbatim}
+
+
+The following example runs \verb|xindex -c dtk -l de -n <input>|
+
+\begin{externalDocument}[
+ grfOptions={scale=0.9},% width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.25\linewidth,
+ pages={1},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-c dtk -n -l de,
+ force,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\RequirePackage{filecontents}
+\begin{filecontents*}{\jobname.idx}
+\indexentry{VoßHerbert@Herbert Voß!Wasgenstraße 121\protect \\10127 Potsdam\protect \\\Email {herbert"@xyz.de}}{3}
+\indexentry{SeversMartin@Martin Severs!siehe Seite~\protect \pageref {president}}{4}
+\indexentry{VoßHerbert@Herbert Voß!Wasgensteig 12\protect \\10127 Potsdam\protect \\\Email {herbert"@xyz.de}}{5}
+\indexentry{ZiegendatenMichael@Michael Ziegendaten!Lokostr. 19 \protect \\ 20713 Kalln \protect \\\Email {ziegendaten"@mail.com}}{9}
+\indexentry{BährendtsenElke@Elke Baehrendtsen!\Email {dori"@xyz.de}}{14}
+\indexentry{JacekJonasson Jared@Jonasson Jared Jazek!\Email {mail"@jones.net}}{20}
+\indexentry{KoomerMartin@Martin Koomer!Freiherr-von-Stein-Weg~16\protect \\ 15525~Erdingen-Neckar\protect \\ \Email {kooma"@xyz.info}}{24}
+\indexentry{KoomerMartin@Martin Koomer!Freiherr-von-Stein-Weg~16\protect \\ 15525~Erdingen-Neckar\protect \\ \Email {kooma"@xyz.info}}{31}
+\indexentry{SchusterEike@Eike Schuster!Haussteig~15\protect \\ 36396~Stuttens\protect \\ \Email {elke.schuster"@kabelxyz.de}}{40}
+\indexentry{FanntHorst@Horst Fannt!Friedrichallee 74\protect \\13233 Neu-Isenburg\protect \\\Email {juergen.fannt"@gmxnet.de}}{48}
+\end{filecontents*}
+\documentclass{article}
+\usepackage{url}
+\DeclareUrlCommand\Email{%
+ \def\UrlLeft{}%
+ \def\UrlRight{}%
+ \def\UrlLinkPrefix{mailto:}%
+ \def\UrlType{email}%
+}
+\usepackage{multicol}
+\makeatletter
+\def\DTK@scan@item#1\subitem#2\relax#3\@nil{%
+ \def\DTK@tempa{#1}\def\DTK@tempb{#2}\def\DTK@tempc{#3}%
+}
+\def\theindex{% only for demonstration
+ \columnseprule=\z@ \columnsep=10\p@
+ \begin{multicols}{2}[\noindent\textbf{\large Autorenliste}]%
+ \makeatletter
+ \def\indexspace{}%
+ \parindent\z@
+ \setlength{\parskip}{\z@ \@plus .3\p@}%
+ \setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \raggedright
+ \def\item##1\@nil{\DTK@scan@item##1\@nil
+ \par\parbox{\columnwidth}{%
+ \textbf{\DTK@tempa}\hfill[\DTK@tempc]\par\DTK@tempb
+ }%
+ \par\bigskip
+ }%
+}
+\def\endtheindex{\end{multicols}}
+\makeatother
+%StartVisiblePreamble
+\usepackage{makeidx}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+\mbox{}\ref{president}
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+\subsection{Sublabels}
+There are three predefined sublabels for \Lcs{subitems}. The program itself can handle more, there is
+no limit for \Lprog{xindex}.
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+ pages={2},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+% xindexOptions=,
+ force=true,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass{article}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \pagestyle{empty}%
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+\pagestyle{empty}%
+%StartVisiblePreamble
+\makeatletter
+\g@addto@macro{\theindex}{%
+ \def\subsubsubitem{\@idxitem\hspace*{35\p@}}
+ \def\subsubsubsubitem{\@idxitem\hspace*{40\p@}}
+}
+\makeatother
+\usepackage{makeidx}\makeindex
+%StopVisiblePreamble
+\begin{document}
+foo\index{foo} bar\index{foo!bar}
+baz\index{foo!bar!baz} foobar%
+\index{foo!bar!baz!foobar} Kuba
+\index{foo!bar!baz!foobar!Kuba}
+\newpage \printindex
+\end{document}
+\end{externalDocument}
+
+
+
+
+
+
+
+
+\section{Including \LaTeX\ commands into the \Lext{idx} file}
+The command \Lcs{addtocontents} doesn't work for the index file. With the \LaTeX\ package
+\Lpack{xindex} (same name as the Lua program \Lprog{xindex}) defines a macro \Lcs{writeidx}
+which writes its argument into the \Lext{idx} file. This can be usefull to insert a
+\Index{pagebreak}/""\Index{columnbreak}
+before a new letter in the output of the index file:
+
+
+\begin{verbatim}
+\documentclass{article}
+\usepackage{makeidx}
+\makeindex
+\usepackage{xindex}
+\begin{document}
+
+\index{foo}foo and
+\writeidx{\clearpage}
+\index{bar}bar
+
+\printindex
+\end{document}
+\end{verbatim}
+
+
+Such commands are then taken into account by the program \Lprog{xindex}. With the often used program \Lprog{makeindex}
+such commands are ignored. In the following example we put an horizontal line after the first entry:
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+ pages={2},
+ frame=false,
+ compiler=lualatex --shell-escape,
+ crop,
+ xindex,
+ xindexOptions=-l de,
+ force,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass{scrartcl}
+\usepackage{libertinus-otf}
+%StartVisiblePreamble
+\usepackage{xindex}
+\makeindex
+%StopVisiblePreamble
+\pagestyle{empty}
+\makeatletter
+\def\theindex{% only for demonstration
+ \newpage
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+\begin{document}
+\index{foo}foo and
+\writeidx{\item\protect\hrulefill}
+\index{bar}bar
+\index{gex}gex
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+\section{Headings}
+By default the output uses the english headings: \textit{Symbols}, \textit{Numbers}, and \textit{A} \ldots
+There are three predefined languages \texttt{en}, \texttt{de}, and \texttt{fr}. The definition is in the file
+\Lfile{xindex-cfg-common.lua} (see also section \vref{language}).
+%
+It can easily be extended for other \Index{language}s. Sometimes the headers are not needed, for example in a name
+list. With the optional argument \verb=-n= or \verb=--noheadings= the created \Lext{ind} file has only
+the vertical space between different first letters:
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+ pages={5},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-n,
+ force,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass{scrartcl}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+Ein foo\index{foo}\index{bar|(}
+ \newpage und \index{foo}
+ein foo\index{foo|textit} \newpage
+und foo\index{foo|textbf} \newpage
+und foo\index{foo|fbox}
+\index{bar|)}
+\newpage
+\verb|xindex -n <file>|
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+\section{Case sensitive index entries}
+By default \textsf{foo} and \textsf{Foo} are two different entries and will handled differently
+by \Lprog{xindex}: \textsf{Foo} will be as an own entry \emph{before} \textsf{foo}. Let's see
+a more complex example. In the index the entry \verb|xindex-DIN2.lua| is the first one of
+the \verb|xindex-???| series because uppercase letters are sorted before lowercase letters.
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+ pages={2},
+ frame=false,
+ compiler=lualatex --shell-escape,
+ crop,
+ xindex,
+% xindexOptions=,
+ force,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass{scrartcl}
+\usepackage{libertinus-otf}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+\usepackage{filecontents}
+\begin{filecontents*}{\jobname.idx}
+\indexentry{xindex package@\texttt {xindex} package|hyperpage}{2}
+\indexentry{xindex program@\texttt {xindex} program|hyperpage}{4}
+\indexentry{xindex-cfg.lua file@\texttt {xindex-cfg.lua} file|hyperpage}{6}
+\indexentry{xindex-newfile.lua file@\texttt {xindex-newfile.lua} file|hyperpage}{6}
+\indexentry{xindex-DIN2.lua file@\texttt {xindex-DIN2.lua} file|hyperpage}{6}
+\indexentry{xindex-cfg-common.cfg file@\texttt {xindex-cfg-common.cfg} file|hyperpage}{9}
+\indexentry{xindex-cfg.lua file@\texttt {xindex-cfg.lua} file|hyperpage}{10}
+\indexentry{xindex-HAdW-eKO.lua file@\texttt {xindex-HAdW-eKO.lua} file|hyperpage}{10}
+\indexentry{xindex-dtk.lua file@\texttt {xindex-dtk.lua} file|hyperpage}{12}
+\indexentry{xindex program@\texttt {xindex} program|hyperpage}{13}
+\indexentry{xindex program@\texttt {xindex} program|hyperpage}{14}
+\indexentry{xindex-cfg-common.lua file@\texttt {xindex-cfg-common.lua} file|hyperpage}{14}
+\indexentry{xindex package@\texttt {xindex} package|hyperpage}{15}
+\end{filecontents*}
+%StartVisiblePreamble
+\usepackage{makeidx}
+\usepackage{hyperref}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+foo\newpage
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+The same example sorted with the \verb|-a| or \verb|--nocasesensitive| has another output: now
+\verb|xindex-cfg-common.lua| is the first one of the \verb|xindex-???| series.
+
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+ pages={2},
+ frame=false,
+ compiler=lualatex --shell-escape,
+ crop,
+ xindex,
+ xindexOptions=-a,
+ force,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass{scrartcl}
+\usepackage{libertinus-otf}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+\usepackage{filecontents}
+\begin{filecontents*}{\jobname.idx}
+\indexentry{xindex package@\texttt {xindex} package|hyperpage}{2}
+\indexentry{xindex program@\texttt {xindex} program|hyperpage}{4}
+\indexentry{xindex-cfg.lua file@\texttt {xindex-cfg.lua} file|hyperpage}{6}
+\indexentry{xindex-newfile.lua file@\texttt {xindex-newfile.lua} file|hyperpage}{6}
+\indexentry{xindex-DIN2.lua file@\texttt {xindex-DIN2.lua} file|hyperpage}{6}
+\indexentry{xindex-cfg-common.cfg file@\texttt {xindex-cfg-common.cfg} file|hyperpage}{9}
+\indexentry{xindex-cfg.lua file@\texttt {xindex-cfg.lua} file|hyperpage}{10}
+\indexentry{xindex-HAdW-eKO.lua file@\texttt {xindex-HAdW-eKO.lua} file|hyperpage}{10}
+\indexentry{xindex-dtk.lua file@\texttt {xindex-dtk.lua} file|hyperpage}{12}
+\indexentry{xindex program@\texttt {xindex} program|hyperpage}{13}
+\indexentry{xindex program@\texttt {xindex} program|hyperpage}{14}
+\indexentry{xindex-cfg-common.lua file@\texttt {xindex-cfg-common.lua} file|hyperpage}{14}
+\indexentry{xindex package@\texttt {xindex} package|hyperpage}{15}
+\end{filecontents*}
+%StartVisiblePreamble
+\usepackage{makeidx}
+\usepackage{hyperref}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+foo\newpage
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+
+
+\section{Automatic index creation}
+With package \Lpack{xindex} one can define several different index files, e.\,g.
+an \Index{index of names}. With the optional argument \Loption{imakeidx} the package itself loads \Lpack{imakeidx}
+and adds the program \Lprog{xindex} as the default program to \Lpack{imakeidx}.
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+ pages={6},
+ frame=false,
+ compiler=lualatex --shell-escape,
+ crop,
+ xindex,
+ xindexOptions=-l de,
+ force,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+\documentclass{scrartcl}
+\usepackage{libertinus-otf}
+\makeatletter
+\let\ps@plain\ps@empty
+\makeatother
+%StartVisiblePreamble
+\usepackage[imakeidx]{xindex}
+\makeindex[name=persons,title=Index of names,
+ columns=1,options=--noheadings]
+\def\ThanhVN{Hàn Thê\protect\llap{%
+ \raise 0.5ex\hbox{\'{}}}}
+%StopVisiblePreamble
+\pagestyle{empty}\renewcommand\thepage{}
+\begin{document}
+foo\index[persons]{Niepraschk,~ Rolf}
+foo\index[persons]{Lamport,~ Leslie}
+foo\index[persons]{Knuth,~ Donald}
+foo\index[persons]{Knuth,~ Donald}
+\newpage
+foo\index[persons]{Lamport,~ Leslie}
+foo\index[persons]{Thành,~ \ThanhVN}
+foo\index[persons]{Kew,~ Jonathan}
+foo\index[persons]{Kohm,~ Markus}
+foo\index[persons]{Preining,~ Norbert}
+\newpage
+foo\index[persons]{Schenk,~ Christian}
+foo\index[persons]{Feuerstack,~ Thomas}
+foo\index[persons]{Tobin,~ Geoffrey}
+foo\index[persons]{Wilson,~ Peter}
+\newpage
+foo\index[persons]{Kohm,~ Markus}
+foo\index[persons]{Theiling,~ Henrik}
+foo\index[persons]{Pégourié-Gonnard,~ Manuel}
+foo\index[persons]{Roux,~ Élie}
+\newpage
+foo\index[persons]{Mittelbach,~ Frank}
+foo\index[persons]{Fairbairns,~ Robin}
+foo\index[persons]{Lemberg,~ Werner}
+foo\index[persons]{Volovich,~ Vladimir}
+
+\printindex[persons]
+\end{document}
+\end{externalDocument}
+
+
+You have to run \LaTeX\ with the \verb|--shell-escape|\index{Shell escape} option to run \Lprog{xindex}
+from within the \LaTeX\ document.
+
+\section{Demerits}
+\begin{itemize}
+\item For more than 5000 entries in the \Lext{idx} file the internal Lua function
+for \Index{sorting} may take some time.
+\item The \Lext{idx} file is not checked for \LaTeX\ errors\index{LaTeX\ errors@\LaTeX\ errors}
+in the argument of \Lcs{indexentry}.
+\end{itemize}
+
+
+
+
+
+%\nocite{*}
+%\printbibliography
+
+
+\printindex
+
+\end{document}
+
+
+
+folium = {
+ de = {"f", "ff"},
+ en = {"f", "ff"},
+ fr = {"sq","sqq"},
+}