summaryrefslogtreecommitdiff
path: root/indexing/xindex
diff options
context:
space:
mode:
Diffstat (limited to 'indexing/xindex')
-rw-r--r--indexing/xindex/CHANGELOG7
-rw-r--r--indexing/xindex/README.md24
-rw-r--r--indexing/xindex/doc/Makefile2
-rw-r--r--indexing/xindex/doc/tests/HADW.pdfbin18342 -> 18570 bytes
-rw-r--r--indexing/xindex/doc/tests/HADW.tex2
-rw-r--r--indexing/xindex/doc/tests/Umlaute.ind2
-rw-r--r--indexing/xindex/doc/tests/Umlaute.pdfbin15196 -> 15195 bytes
-rw-r--r--indexing/xindex/doc/tests/Umlaute2.ind16
-rw-r--r--indexing/xindex/doc/tests/Umlaute2.pdfbin18886 -> 18880 bytes
-rw-r--r--indexing/xindex/doc/tests/buch.ind216
-rw-r--r--indexing/xindex/doc/tests/buch.pdfbin39017 -> 42779 bytes
-rw-r--r--indexing/xindex/doc/tests/demo-hyperref.ind195
-rw-r--r--indexing/xindex/doc/tests/demo-hyperref.pdfbin28624 -> 12469 bytes
-rw-r--r--indexing/xindex/doc/tests/demo.ind119
-rw-r--r--indexing/xindex/doc/tests/demo.pdfbin34598 -> 31866 bytes
-rw-r--r--indexing/xindex/doc/tests/demo2.ind2
-rw-r--r--indexing/xindex/doc/tests/demo3.pdfbin9216 -> 9216 bytes
-rw-r--r--indexing/xindex/doc/tests/demo4.pdfbin11884 -> 11884 bytes
-rw-r--r--indexing/xindex/doc/tests/french.idx46
-rw-r--r--indexing/xindex/doc/tests/french.ind77
-rw-r--r--indexing/xindex/doc/tests/french.pdfbin0 -> 14435 bytes
-rw-r--r--indexing/xindex/doc/tests/french.tex20
-rwxr-xr-xindexing/xindex/doc/tests/runTests.sh12
-rw-r--r--indexing/xindex/doc/tests/see.idx15
-rw-r--r--indexing/xindex/doc/tests/see.ind30
-rw-r--r--indexing/xindex/doc/tests/see.pdfbin0 -> 15149 bytes
-rw-r--r--indexing/xindex/doc/tests/see.tex31
-rw-r--r--indexing/xindex/doc/xindex-doc.pdfbin588580 -> 626383 bytes
-rw-r--r--indexing/xindex/doc/xindex-doc.tex579
-rw-r--r--indexing/xindex/latex/xindex.sty6
-rw-r--r--indexing/xindex/lualatex/xindex-AU.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-DIN2.lua37
-rw-r--r--indexing/xindex/lualatex/xindex-HAdW-eKO.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-RU.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-base.lua35
-rw-r--r--indexing/xindex/lualatex/xindex-baselib.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-cfg-common.lua17
-rw-r--r--indexing/xindex/lualatex/xindex-cfg-no_uca.lua (renamed from indexing/xindex/lualatex/xindex-cfg.lua)6
-rw-r--r--indexing/xindex/lualatex/xindex-cfg-uca.lua18
-rw-r--r--indexing/xindex/lualatex/xindex-danteedition.lua17
-rw-r--r--indexing/xindex/lualatex/xindex-dtk.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-lib.lua186
-rw-r--r--indexing/xindex/lualatex/xindex-norsk.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-pretty.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-yannis.lua2
-rwxr-xr-xindexing/xindex/scripts/xindex.lua123
46 files changed, 1165 insertions, 691 deletions
diff --git a/indexing/xindex/CHANGELOG b/indexing/xindex/CHANGELOG
index df515fcbec..3684255a78 100644
--- a/indexing/xindex/CHANGELOG
+++ b/indexing/xindex/CHANGELOG
@@ -1,3 +1,10 @@
+0.61 2024-09-22 - fix for hyperref with \see and \seealso
+0.60 2024-05-16 - more fixes for UCA as default mode
+0.59 2024-05-13 - removed the xindex-cfg.lua
+0.58 2024-05-12 - Use UCA as default
+ fix for french sorting
+0.57 2024-01-20 - Test version for UCA
+0.56 2024-01-12 - fix for leading spaces of index entries
0.55 2023-07-30 - fix for wrong presort -- disabled the use of \writeidx
0.54 2023-07-28 - do not print control output for testing
0.53 2023-07-16 - added function literize to escape special lua characters
diff --git a/indexing/xindex/README.md b/indexing/xindex/README.md
index 3d4dbd0198..b35fa53647 100644
--- a/indexing/xindex/README.md
+++ b/indexing/xindex/README.md
@@ -1,15 +1,17 @@
# xindex
-Copyright 2019-2023 Herbert Voß
+Copyright 2019-2024 Herbert Voß
+The files xindex-lapp.lua and xindex-pretty.lua have the MIT licence.
+all other files are LPPL 1.3
Unicode compatible index programm for LaTeX. It needs Lua 5.3 which
will be included in at least LuaTeX 1.09 (TeXLive 2019)
* xindex.lua -- main file
-* xindex-cfg.lua -- config module
* xindex-cfg-common.lua -- main config module
* xindex-cfg-uca.lua -- config module for uca
+* xindex-cfg-no_uca.lua -- config module for old mode
* xindex-base.lua -- base file
* xindex-baselib.lua -- base file
* xindex-lib.lua -- functions module
@@ -29,18 +31,22 @@ possible options are (short,long):
-q,--quiet
-h,--help
-v... Verbosity level; can be -v, -vv, -vvv
- -c,--config (default cfg)
- -e,--escapechar (default ")
- -n,--noheadings
+ -V,--version
-a,--no_casesensitive
-b,--no_labels
+ -c,--config (default "")
+ -e,--escapechar (default ")
+ -f,--fix_hyperref
+ -g,--no_pagenumber
+ -i,--ignoreSpace
+ -k,--checklang
+ -l,--language (default en)
+ -n,--noheadings
-o,--output (default "")
- -l,--language (default en)
-p,--prefix (default L)
- -u,--use_UCA
- -g,--no_pagenumber
-s,--use_stdin
- -V,--version
+ -u,--use_UCA no more needed
+ -x,--no_UCA
<files...> (default stdin) .idx file(s)
Testfiles:
diff --git a/indexing/xindex/doc/Makefile b/indexing/xindex/doc/Makefile
index 725576594d..4cf5b6ef78 100644
--- a/indexing/xindex/doc/Makefile
+++ b/indexing/xindex/doc/Makefile
@@ -13,7 +13,7 @@ ARCHFILES = $(PACKAGE).sty $(PACKAGE).tex $(PACKAGE).pro $(MAIN).tex README Chan
#TDS = ~/PSTricks/PSTricks-TDS
-all : doc clean
+all : doc
# clean
doc:
$(LATEX) --shell-escape --interaction=nonstopmode $(MAIN)
diff --git a/indexing/xindex/doc/tests/HADW.pdf b/indexing/xindex/doc/tests/HADW.pdf
index b5be513894..6adda4baa5 100644
--- a/indexing/xindex/doc/tests/HADW.pdf
+++ 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
index 0ce50d0b10..34feccc755 100644
--- a/indexing/xindex/doc/tests/HADW.tex
+++ b/indexing/xindex/doc/tests/HADW.tex
@@ -14,7 +14,7 @@
\makeatother
\begin{document}
-Run with \verb|xindex --config HAdW-eKO|
+Run with \verb|xindex --config HAdW-eKO -x| no UCA
\printindex
\end{document}
diff --git a/indexing/xindex/doc/tests/Umlaute.ind b/indexing/xindex/doc/tests/Umlaute.ind
index 3ad13d9ff0..5367f8bbc0 100644
--- a/indexing/xindex/doc/tests/Umlaute.ind
+++ b/indexing/xindex/doc/tests/Umlaute.ind
@@ -23,8 +23,8 @@
\item Oberin, {5f}
\item Obstler, {7}
\item Ödem, {4}
- \item oder, {8}
\item Oder, \seealso{Fluss}{33}, {58}
+ \item oder, {8}
\item Öl, {8}
\item ölen, {9}
\item Oligarch, {28}
diff --git a/indexing/xindex/doc/tests/Umlaute.pdf b/indexing/xindex/doc/tests/Umlaute.pdf
index 7fdc54812c..6060678d9c 100644
--- a/indexing/xindex/doc/tests/Umlaute.pdf
+++ b/indexing/xindex/doc/tests/Umlaute.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/Umlaute2.ind b/indexing/xindex/doc/tests/Umlaute2.ind
index 94419c09d2..5367f8bbc0 100644
--- a/indexing/xindex/doc/tests/Umlaute2.ind
+++ b/indexing/xindex/doc/tests/Umlaute2.ind
@@ -11,24 +11,24 @@
\textbf{G}\label{L-xindex-G}
\nopagebreak[4]
\item Göbel, {58}
- \item Göthe, {58}
\item Goethe, {58}
- \item Götz, {58}
\item Goldmann, {58}
+ \item Göthe, {58}
+ \item Götz, {58}
\indexspace
\textbf{O}\label{L-xindex-O}
\nopagebreak[4]
- \item Ödem, {4}
- \item Öl, {8}
- \item ölen, {9}
- \item Öresund, {2}, {4}
- \item Österreich, {1f}
\item Ober, {4}, {6}
\item Oberin, {5f}
\item Obstler, {7}
- \item oder, {8}
+ \item Ödem, {4}
\item Oder, \seealso{Fluss}{33}, {58}
+ \item oder, {8}
+ \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/Umlaute2.pdf b/indexing/xindex/doc/tests/Umlaute2.pdf
index d19db6ea79..a07a43df34 100644
--- a/indexing/xindex/doc/tests/Umlaute2.pdf
+++ b/indexing/xindex/doc/tests/Umlaute2.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/buch.ind b/indexing/xindex/doc/tests/buch.ind
index 91f07404d0..3567565fae 100644
--- a/indexing/xindex/doc/tests/buch.ind
+++ b/indexing/xindex/doc/tests/buch.ind
@@ -17,9 +17,6 @@
\indexspace
\textbf{A}\label{L-xindex-A}
\nopagebreak[4]
- \item AMS, {376}
- \item ANSI, {67}
- \item AUC\TeX , {29}
\item Abbildung, {309}
\item Abbildungsverzeichnis, {310}, {475}
\item Absatz, {7}, {381}
@@ -33,12 +30,15 @@
\item Akzent, {73}, {406}, {433}, {447}
\item Albanisch, {67}
\item American Mathematical Society (AMS), {415}
+ \item AMS, {376}
\item Anführungszeichen, {81}
\item Anhang, {62}
+ \item ANSI, {67}
\item Atom, {400f}
- \item Autor, {54}
- \item Autor"=Jahr"=Schema, {544}
+ \item AUC\TeX , {29}
\item Autor-Stil, {586}
+ \item Autor"=Jahr"=Schema, {544}
+ \item Autor, {54}
\indexspace
\textbf{B}\label{L-xindex-B}
@@ -78,7 +78,6 @@
\indexspace
\textbf{C}\label{L-xindex-C}
\nopagebreak[4]
- \item CMYK, {671}
\item cc, {859}
\item class option, {386}
\item Clipping, {247}
@@ -86,6 +85,7 @@
\item Clown, {256}
\item Cluster, {248}
\item cm, {859}
+ \item CMYK, {671}
\item Con\TeX t, {879}
\item continued fraction, {430}
\item Cork-Kodierung, {72}
@@ -95,8 +95,6 @@
\indexspace
\textbf{D}\label{L-xindex-D}
\nopagebreak[4]
- \item DIN\,5007, {512}
- \item DIN~476, {91}
\item Dänisch, {67}, {76}
\item Dateilinks, {188}
\item Datum, {54}
@@ -113,11 +111,12 @@
\item Dezimalstellen, {248}
\item Differentialquotient, {414}
\item dimen register, {860}
+ \item DIN\,5007, {512}
+ \item DIN~476, {91}
\item displaymath mode, {381}
\item Distribution, {13}
\item Divisior, {431}
\item \idxtextClasses
- \subitem -\,{\sffamily IEEEtran}, {185}
\subitem -\,{\sffamily amsart}, {415}
\subitem -\,{\sffamily amsbook}, {415}
\subitem -\,{\sffamily article}, {52f}, {59f}, {93}, {128}, {150}, {383}, {474}
@@ -125,6 +124,7 @@
\subitem -\,{\sffamily book}, {59f}, {93}, {113}, {128}, {150}, {202}, {383f}, {434}, {474f}
\subitem -\,{\sffamily ctexart}, {572}
\subitem -\,{\sffamily europecv}, {827f}, {830}
+ \subitem -\,{\sffamily IEEEtran}, {185}
\subitem -\,{\sffamily letter}, {59ff}
\subitem -\,{\sffamily memoir}, {59f}
\subitem -\,{\sffamily powerdot}, {615}
@@ -168,15 +168,16 @@
\indexspace
\textbf{F}\label{L-xindex-F}
\nopagebreak[4]
- \item FNDB, {872}
\item Fallunterscheidung, {392}, {425}
- \item Farbe, {236}, {669}
- \subitem -\,Modell, {680}
+ \item Farbe
\subitem -\,konvertieren, {680}
- \item Farbmodell, {236}, {669}
+ \subitem -\,Modell, {680}
+ \item Farbe, {236}, {669}
+ \item Farbmodell
\subitem -\,CMYK, {673}
\subitem -\,HSB, {673}
\subitem -\,RGB, {673}
+ \item Farbmodell, {236}, {669}
\item Farbserie, {672}, {680}
\item Farbwert, {680}
\item Faröisch, {67}
@@ -185,8 +186,9 @@
\item Fettschrift, {220}
\item Finnisch, {67}, {76}, {80}
\item Flattersatz, {142f}, {223}, {358}, {538f}, {640}
- \item Float, {309}
\item float box, {337}
+ \item Float, {309}
+ \item FNDB, {872}
\item Folie, {621}
\item Folienübergänge, {639}
\item Fontfamilie, {661}
@@ -205,7 +207,6 @@
\indexspace
\textbf{G}\label{L-xindex-G}
\nopagebreak[4]
- \item GUI, {9}, {29}
\item Galizisch, {67}
\item Gaußscher Algorithmus, {448}
\item GenericError, {869}
@@ -222,6 +223,7 @@
\item Griechisch, {76}, {80}
\item Grundlinie, {224}, {264}
\item Gruppe, {252}, {864}
+ \item GUI, {9}, {29}
\item Guillemets, {82}
\indexspace
@@ -237,15 +239,6 @@
\textbf{I}\label{L-xindex-I}
\nopagebreak[4]
\item IDE, {29}
- \item IPA, {72}
- \item ISO 8859-1, {67}
- \item ISO 8859-15, {67}
- \item ISO 8859-2, {67}
- \item ISO 8859-3, {67}
- \item ISO 8859-4, {67}
- \item ISO-Image, {14}
- \item ISO~216, {91}
- \item IUPAC, {814}
\item in, {859}
\item indent, {476}
\item Index, {32}, {405}, {408f}, {432}, {699}
@@ -257,17 +250,25 @@
\item Integrationsvariable, {414}
\item interline spacing, {405}
\item Internetadresse, {84}
+ \item IPA, {72}
\item Irisch, {67}
\item Isländisch, {67}, {76}
- \item italic, {86}
+ \item ISO 8859-15, {67}
+ \item ISO 8859-1, {67}
+ \item ISO 8859-2, {67}
+ \item ISO 8859-3, {67}
+ \item ISO 8859-4, {67}
+ \item ISO-Image, {14}
+ \item ISO~216, {91}
\item Italic-Korrektur, {88}
+ \item italic, {86}
\item Italienisch, {76}, {80}
\item Items, {413}
+ \item IUPAC, {814}
\indexspace
\textbf{K}\label{L-xindex-K}
\nopagebreak[4]
- \item \KOMAScript , {59ff}, {93}
\item Kapitel, {62}, {76}
\item Kapitelanfang, {62}
\item Katalanisch, {67}
@@ -279,9 +280,11 @@
\item Klammersymbole, {394}
\item Knoten, {775}
\item Kochsche Schneeflocke, {778}
- \item Kodierung, {38}, {67}
+ \item Kodierung
\subitem -\,ascii, {67}
+ \item Kodierung, {38}, {67}
\item Kolumnentitel, {121}, {126}
+ \item \KOMAScript , {59ff}, {93}
\item Komma, {248}
\item Kommutative Diagramme, {448}
\item Konventionen, {213}
@@ -294,10 +297,9 @@
\indexspace
\textbf{L}\label{L-xindex-L}
\nopagebreak[4]
- \item LR-Box, {173}
- \item \LaTeX -Editor, {29}
\item Label, {181}, {245}, {387}, {626}
\item largesymbols, {396}
+ \item \LaTeX -Editor, {29}
\item Latin-1, {68}
\item Laufweite, {596}
\item Layout, {9}, {377}, {618}
@@ -307,10 +309,11 @@
\item Lettisch, {67}
\item Liedtexte, {145}
\item Ligaturen, {89}
- \item Linie, {219}, {230}
+ \item Linie
\subitem -\,farbig, {217}
\subitem -\,horizontal, {216}, {230}
\subitem -\,vertikal, {216}, {223}, {230}
+ \item Linie, {219}, {230}
\item Linksbündig, {223}
\item Linux, {13}
\item list of tables, {256}
@@ -322,11 +325,11 @@
\subitem -\,Tabellenüberschrift, {259}
\subitem -\,Tabellenunterschrift, {259}
\item lot, {256}
+ \item LR-Box, {173}
\indexspace
\textbf{M}\label{L-xindex-M}
\nopagebreak[4]
- \item MLA, {586}
\item Mac OS~X, {13}, {67}
\item Mac\TeX , {13}
\item Makefile, {9}
@@ -344,11 +347,13 @@
\item Matrix, {227}, {383}, {405f}, {426}, {449}
\item Mediävalziffern, {595}
\item Metronyme, {564}
- \item MiK\TeX , {13}, {21}, {23}
+ \item MiK\TeX
\subitem -\,Paketmanager, {21}
+ \item MiK\TeX , {13}, {21}, {23}
\item Mikrotypografie, {7}
\item Minimalbeispiel, {888}
\item Minuskelziffern, {595}
+ \item MLA, {586}
\item mm, {859}
\item Modulo, {433}
\item Monospaceschrift, {64}
@@ -361,9 +366,9 @@
\indexspace
\textbf{N}\label{L-xindex-N}
\nopagebreak[4]
- \item NEJM, {585}
\item Navigationsleiste, {33}, {616}, {619}
\item Navigator, {33}
+ \item NEJM, {585}
\item Neunerteilung, {103}
\item Niederländisch, {67}, {76}, {80}
\item Niedersorbisch, {76}
@@ -378,8 +383,8 @@
\item Onlinequelle, {561}
\item OpenOffice, {35}
\item OpenType, {12}, {72}, {601}
- \item Operator, {378}, {400}, {408}, {414}, {449}
\item Operator-Symbol, {408}
+ \item Operator, {378}, {400}, {408}, {414}, {449}
\item Operatorname, {408}
\item option clash, {871}
\item optischer Randausgleich, {163}
@@ -393,7 +398,6 @@
\nopagebreak[4]
\item \protect \nxLnotation {p}-Spalte, {271}
\item p-Spalte, {268}
- \item PDF/A, {189}
\item Page Coded Language, {750}
\item Paginierung, {115}
\item Papierbreite, {96}
@@ -403,6 +407,7 @@
\item Parabel, {770}
\item Patronyme, {564}
\item pc, {860}
+ \item PDF/A, {189}
\item pdf\TeX , {11}, {13}
\item pdfe\TeX , {11}
\item Pfade, {31}
@@ -432,7 +437,6 @@
\textbf{R}\label{L-xindex-R}
\nopagebreak[4]
\item \protect \nxLnotation {r}-Spalte, {271}
- \item RGB, {674}
\item Radikand, {432}
\item Rahmenfarbe, {389}
\item Randbemerkung, {157}
@@ -442,6 +446,7 @@
\item Referenzieren, {245}
\item Rekursion, {865}
\item Relationssymbol, {380}
+ \item RGB, {674}
\item robust, {377f}
\item Roman-Zeichensatz, {399}
\item root, {14}
@@ -454,7 +459,6 @@
\indexspace
\textbf{S}\label{L-xindex-S}
\nopagebreak[4]
- \item SQL-Datenbank, {247}
\item Satzprogramm, {6}
\item Satzspiegel, {91}, {94}, {103}
\item Satzspiegelberechnung, {103}
@@ -465,6 +469,7 @@
\item Schreibmaschinenschrift, {64}
\item Schrift
\subitem -\,Breite, {64}
+ \subitem -\,fett, {411}, {451}
\subitem -\,Gewicht, {87}
\subitem -\,Größe, {412}
\subitem -\,Höhe, {64}
@@ -473,7 +478,6 @@
\subitem -\,Stil, {378}
\subitem -\,Tiefe, {64}
\subitem -\,Warnung, {883}
- \subitem -\,fett, {411}, {451}
\item Schriftattribut, {660}
\item Schrifteinbindung, {9}
\item Schriftfamilie, {85}, {442}, {595}
@@ -498,8 +502,8 @@
\item sidebar, {619}
\item Sigel, {561}
\item Silbentrennung, {149}
- \item skip, {58}, {860}
\item skip register, {860f}
+ \item skip, {58}, {860}
\item Skriptsprache, {13}
\item slanted, {86}
\item Slowakisch, {67}, {80}
@@ -518,14 +522,16 @@
\item Spaltenzwischenraum, {290}
\item Spanisch, {67}, {76}, {80}
\item Sprachauswahl, {9}
+ \item SQL-Datenbank, {247}
\item Standardsprache, {76}
\item Sternversion, {215}
\item Subscript, {378}, {393}, {409}
\item Sumatra-PDF, {23}
\item Summe, {393}, {438}
\item Superscript, {378}, {409}
- \item Symbol, {400}
+ \item Symbol
\subitem -\,gestockt, {411}
+ \item Symbol, {400}
\item Syntax, {214}
\item Systemadministrator, {14}
\item Systemmeldung, {883}
@@ -533,14 +539,13 @@
\indexspace
\textbf{T}\label{L-xindex-T}
\nopagebreak[4]
- \item TDS, {172}, {872}
- \item TOC, {128}
- \item Tabelle, {309f}
+ \item Tabelle
\subitem -\,Breite, {214}, {289}
\subitem -\,Farbe, {273}
- \subitem -\,Kopf, {222}
\subitem -\,gerahmt, {224}
\subitem -\,geschachtelt, {268}
+ \subitem -\,Kopf, {222}
+ \item Tabelle, {309f}
\item Tabellenbeschriftung, {62}
\item Tabellenbreite, {215}
\item Tabellenkalkulation, {282}
@@ -549,5 +554,126 @@
\item Tabellenunterschrift
\subitem -\,\nxLPack {longtable}, {259}
\item Tabellenverzeichnis, {310}, {475}
- \item {\ttfamily tabular} Env., \idxbf{0--218}
+ \item {\ttfamily tabular} Env., \idxbf{214--218}
+ \item Tagebuchnotation, {561}
+ \item Tcheschisch, {80}
+ \item TDS, {172}, {872}
+ \item Teilungsverhältnis, {62}
+ \item Template, {657}
+ \item \TeX -Collection, {13}
+ \item \TeXLive, {3}, {13--21}, {23}, {25f}, {31}, {512}, {542}, {590}, {610}, {766}, {855}, {870}, {872ff}, {877ff}, {890}
+ \item \TeX maker, {29}
+ \item \TeX nicCenter, {31}, {35}, {38}
+ \item \TeX Shop, {23}
+ \item \TeX Studio, {23}
+ \item Text, {398}
+ \item Textanteil, {309}
+ \item Textkörper, {51}, {53}, {871}
+ \item Textmodus, {411}, {450}
+ \item Textschrift, {411}
+ \item Textverarbeitung, {6}
+ \item Textverarbeitungsprogramm, {7}
+ \item \TeX works, {23}
+ \item Titel, {54}, {413}
+ \item Titelkopf, {658}
+ \item TOC, {128}
+ \item Tortendiagramm, {244}, {746}
+ \item Transparenz, {631}
+ \item Trennalgorithmus, {75}
+ \item Trennlinie, {221}
+ \item Trennregeln, {77}
+ \item Trennung, {222}
+ \item Tridiagonalmatrix, {428}
+ \item TrueType, {12}, {72}, {601}
+ \item Tschechisch, {67}, {76}
+ \item Türkisch, {67}, {76}, {80}
+ \item Type-3, {70}
+ \item Type"~1, {12}
+ \item Typewriterschrift, {64}
+ \item Typografie, {213}
+
+\indexspace
+\textbf{U}\label{L-xindex-U}
+\nopagebreak[4]
+ \item Überschriftenformat, {77}
+ \item Übersetzung, {207}
+ \item Ukrainisch, {76}, {80}
+ \item Umbruch, {7}
+ \item Umbruchmöglichkeit, {252}
+ \item Umgebung, {848}
+ \item Umgebungsvariable, {14}
+ \item Umkodierung, {38}
+ \item Ungarisch, {67}, {76}, {80}
+ \item Unicode, {11}
+ \item Unsichtbarkeit, {631}
+ \item Untergleichung, {437}, {454}
+ \item Unterstrich, {449}
+ \item Updatemanager, {18}
+ \item URL, {84}, {190}
+ \item USB-Stick, {879}
+ \item UTF-16, {189}
+ \item UTF-8, {38}, {67}
+
+\indexspace
+\textbf{V}\label{L-xindex-V}
+\nopagebreak[4]
+ \item Variable, {414}
+ \item Vektor, {407}, {448}
+ \item Vektorschrift, {54}, {71}, {85}
+ \item Verbatim-Modus, {654}
+ \item vertikale Linien, {223}
+ \item Verzeichnisse, {63}
+ \item Viewer, {31f}
+ \item Vollbildmodus, {639}
+ \item Vordergrundfarbe, {658}
+
+\indexspace
+\textbf{W}\label{L-xindex-W}
+\nopagebreak[4]
+ \item Waisenkind, {103}
+ \item Warnung, {883}
+ \item Wickelfalz, {832}
+ \item Wiederholungsfaktor, {215}
+ \item Windows 1250, {67}
+ \item Windows 1252, {67}
+ \item Windows 1257, {67}
+ \item Windows, {13}, {21}
+ \item Witwe, {102}
+ \item Wörterbuch, {40}
+ \item Worttrennung, {143}, {223}
+ \item Wortzwischenraum, {165}
+ \item Wurzel, {431}
+ \item Wurzelexponent, {432}
+
+\indexspace
+\textbf{X}\label{L-xindex-X}
+\nopagebreak[4]
+ \item X-Spalte, {290}
+ \item Xem\TeX , {13}
+
+\indexspace
+\textbf{Z}\label{L-xindex-Z}
+\nopagebreak[4]
+ \item Zahlenkolonnen, {247}
+ \item Zähler, {383f}, {387}, {862}
+ \item Zählung, {267}
+ \item Zeichen (aktives), {408}
+ \item Zeichensatzbefehle, {87}
+ \item Zeile
+ \subitem -\,Abstand, {234}
+ \subitem -\,Breite, {289}
+ \subitem -\,Farbe, {236}
+ \subitem -\,Höhe, {219}
+ \subitem -\,Tiefe, {220}
+ \subitem -\,Vorschub, {269}
+ \subitem -\,Zähler, {230}
+ \item Zeilenabstand, {56}
+ \item Zeilenhöhe, {378}
+ \item Zeilenmodus, {376--380}, {391}, {404}
+ \item Zeilenumbruch, {380}
+ \item Zellenfarbe, {236}
+ \item Zentrieren, {141}
+ \item Zickzackfalz, {832}
+ \item Zufallszahlen, {448}
+ \item Zusammenfassung, {63}
\end{theindex}
diff --git a/indexing/xindex/doc/tests/buch.pdf b/indexing/xindex/doc/tests/buch.pdf
index 15984473ac..6ac37cb8a6 100644
--- a/indexing/xindex/doc/tests/buch.pdf
+++ b/indexing/xindex/doc/tests/buch.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/demo-hyperref.ind b/indexing/xindex/doc/tests/demo-hyperref.ind
index 639cedcaab..50054a6a7e 100644
--- a/indexing/xindex/doc/tests/demo-hyperref.ind
+++ b/indexing/xindex/doc/tests/demo-hyperref.ind
@@ -36,198 +36,5 @@
\item demnach, \hyperpage{35}, \hyperpage{38}
\item Demonstration, \hyperpage{29}, \hyperpage{35}
\item den, \hyperpage{46}
- \item der, \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}\label{L-xindex-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}\label{L-xindex-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}\label{L-xindex-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}\label{L-xindex-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}\label{L-xindex-I}
-\nopagebreak[4]
- \item illegalen, \hyperpage{36}
- \item Im, \hyperpage{43}
- \item in, \hyperpage{15}, \hyperpage{19}
- \item ist, \hyperpage{43}
-
-\indexspace
-\textbf{J}\label{L-xindex-J}
-\nopagebreak[4]
- \item jedoch, \hyperpage{36}
- \item jungen, \hyperpage{40}
-
-\indexspace
-\textbf{K}\label{L-xindex-K}
-\nopagebreak[4]
- \item keine, \hyperpage{36}
- \item Kilometer, \hyperpage{23}
- \item Kundgebung, \hyperpage{23}, \hyperpage{42}
-
-\indexspace
-\textbf{L}\label{L-xindex-L}
-\nopagebreak[4]
- \item leben., \hyperpage{14}
- \item lernen, \hyperpage{14}
-
-\indexspace
-\textbf{M}\label{L-xindex-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}\label{L-xindex-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}\label{L-xindex-O}
-\nopagebreak[4]
- \item Obwohl, \hyperpage{8}
- \item Osten, \hyperpage{46}
- \item Östereich, \hyperpage{1}
-
-\indexspace
-\textbf{P}\label{L-xindex-P}
-\nopagebreak[4]
- \item Perfekte, \hyperpage{15}
- \item Pessimismus., \hyperpage{10}
- \item Plakate, \hyperpage{35}
- \item Polizei, \hyperpage{32}, \hyperpage{38}
-
-\indexspace
-\textbf{R}\label{L-xindex-R}
-\nopagebreak[4]
- \item rechten, \hyperpage{23}
- \item richtig, \hyperpage{13}
-
-\indexspace
-\textbf{S}\label{L-xindex-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}\label{L-xindex-T}
-\nopagebreak[4]
- \item Tag, \hyperpage{29}
- \item tausend, \hyperpage{33}
- \item teilgenommen, \hyperpage{42}
- \item Teilnehmer, \hyperpage{21}, \hyperpage{30}
-
-\indexspace
-\textbf{U}\label{L-xindex-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}\label{L-xindex-V}
-\nopagebreak[4]
- \item versammelten, \hyperpage{21}
- \item verwendet, \hyperpage{36}
- \item Volksvertreter, \hyperpage{6}
-
-\indexspace
-\textbf{W}\label{L-xindex-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}\label{L-xindex-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}
+ \item der, \hyperpage{15}, \hyperpage{18\nohyperpage{f}}, \hyperpage{28\nohyperpage{f}}, \hyperpage{34}, \hyperpage{37}, \hyperpage{41}
\end{theindex}
diff --git a/indexing/xindex/doc/tests/demo-hyperref.pdf b/indexing/xindex/doc/tests/demo-hyperref.pdf
index 6f8ce53806..4555bea9a5 100644
--- a/indexing/xindex/doc/tests/demo-hyperref.pdf
+++ b/indexing/xindex/doc/tests/demo-hyperref.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/demo.ind b/indexing/xindex/doc/tests/demo.ind
index d53fd6826f..7ab85d75a4 100644
--- a/indexing/xindex/doc/tests/demo.ind
+++ b/indexing/xindex/doc/tests/demo.ind
@@ -48,127 +48,11 @@
\item demnach, {35}, {38}
\item Demonstration, {29}, {35}
\item den, {46}
- \item der, {34}, {37}, {41}
- \item Deshalb, {14}
- \item Deutschland, {8}, {27}
- \item die, {21}, {39}, {41}
- \item Diktatur
- \subitem -\,Afrika
- \subsubitem --\,Kongo, {17}
- \subsubitem --\,Nigeria, {16}
- \subitem -\,Asien
- \subsubitem --\,Nordvietnam, {38}
- \subitem -\,Regierungsform, {29}
- \item dominiere, {9}
- \item durch, {31}
-
-\indexspace
-\textbf{E}\label{L-xindex-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}\label{L-xindex-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}\label{L-xindex-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}\label{L-xindex-H}
-\nopagebreak[4]
- \item haben, {32}, {35}, {42}
- \item haben., {35}
- \item hatte, {25}
- \item Hilfe, {10}
-
-\indexspace
-\textbf{I}\label{L-xindex-I}
-\nopagebreak[4]
- \item illegalen, {36}
- \item Im, {43}
- \item in, {15}, {19}
- \item ist, {43}
-
-\indexspace
-\textbf{J}\label{L-xindex-J}
-\nopagebreak[4]
- \item jedoch, {36}
- \item jungen, {40}
-
-\indexspace
-\textbf{K}\label{L-xindex-K}
-\nopagebreak[4]
- \item keine, {36}
- \item Kilometer, {23}
- \item Kundgebung, {23}, {42}
-
-\indexspace
-\textbf{L}\label{L-xindex-L}
-\nopagebreak[4]
- \item leben., {14}
- \item lernen, {14}
-
-\indexspace
-\textbf{M}\label{L-xindex-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}\label{L-xindex-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}
+ \item der, {15}, {18f}, {28f}, {34}, {37}, {41}
\indexspace
\textbf{O}\label{L-xindex-O}
\nopagebreak[4]
- \item Obwohl, {8}
- \item Osten, {46}
\item Österreich, \textbf{1--38}
\indexspace
@@ -213,6 +97,7 @@
\nopagebreak[4]
\item über, {45}
\item Überholmanöver, {17}
+ \clearpage
\item überholt, {38}
\item überwiegend, {39}
\item unbegrenzt, {14}
diff --git a/indexing/xindex/doc/tests/demo.pdf b/indexing/xindex/doc/tests/demo.pdf
index 27a9ed59f7..20e969941c 100644
--- a/indexing/xindex/doc/tests/demo.pdf
+++ b/indexing/xindex/doc/tests/demo.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/demo2.ind b/indexing/xindex/doc/tests/demo2.ind
index a2bfb309fc..00c8844d21 100644
--- a/indexing/xindex/doc/tests/demo2.ind
+++ b/indexing/xindex/doc/tests/demo2.ind
@@ -14,7 +14,7 @@
\indexspace
\textbf{F}\label{L-xindex-F}
\nopagebreak[4]
- \item foo, {1}, \textit{1f}, \see{bar}{2}, {2}, \textbf{3}, {3f}
+ \item foo, {1}, \textit{1}, {2}, \textit{2}, \see{bar}{2}, \textbf{3}, {3f}
\indexspace
\textbf{G}\label{L-xindex-G}
diff --git a/indexing/xindex/doc/tests/demo3.pdf b/indexing/xindex/doc/tests/demo3.pdf
index 942185026b..0a645eabc5 100644
--- a/indexing/xindex/doc/tests/demo3.pdf
+++ b/indexing/xindex/doc/tests/demo3.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/demo4.pdf b/indexing/xindex/doc/tests/demo4.pdf
index 24d7696e5b..2a06e1fa08 100644
--- a/indexing/xindex/doc/tests/demo4.pdf
+++ b/indexing/xindex/doc/tests/demo4.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/french.idx b/indexing/xindex/doc/tests/french.idx
new file mode 100644
index 0000000000..01b880e40f
--- /dev/null
+++ b/indexing/xindex/doc/tests/french.idx
@@ -0,0 +1,46 @@
+\indexentry{CÔTÉ}{1}
+\indexentry{cote}{1}
+\indexentry{Côté}{1}
+\indexentry{COTÉ}{1}
+\indexentry{côte}{1}
+\indexentry{COTE}{1}
+\indexentry{côté}{1}
+\indexentry{Coté}{1}
+\indexentry{coté}{1}
+\indexentry{Cote}{1}
+\indexentry{CÔTE}{1}
+\indexentry{Côte}{1}
+\indexentry{lésé}{1}
+\indexentry{péché}{1}
+\indexentry{bohème}{1}
+\indexentry{gêné}{1}
+\indexentry{pêche}{1}
+\indexentry{cæsium}{1}
+\indexentry{pêcher}{1}
+\indexentry{révèle}{1}
+\indexentry{pécher}{1}
+\indexentry{révélé}{1}
+\indexentry{Bohême}{1}
+\indexentry{relève}{1}
+\indexentry{PÉCHÉ}{1}
+\indexentry{maçon}{1}
+\indexentry{relevé}{1}
+\indexentry{Élève}{1}
+\indexentry{gêne}{1}
+\indexentry{élevé}{1}
+\indexentry{MÂCON}{1}
+\indexentry{gène}{1}
+\indexentry{Bohémien}{1}
+\indexentry{caennais}{1}
+\indexentry{lèse}{1}
+\indexentry{coexistence}{1}
+\indexentry{cœur}{1}
+\indexentry{coefficient}{1}
+\indexentry{cafard}{1}
+\indexentry{CŒUR}{1}
+\indexentry{CÆSIUM}{1}
+\indexentry{coté}{1}
+\indexentry{cœur}{1}
+\indexentry{péché}{1}
+\indexentry{coté}{2}
+\indexentry{coefficient}{2}
diff --git a/indexing/xindex/doc/tests/french.ind b/indexing/xindex/doc/tests/french.ind
new file mode 100644
index 0000000000..e9a08a059b
--- /dev/null
+++ b/indexing/xindex/doc/tests/french.ind
@@ -0,0 +1,77 @@
+
+\begin{theindex}
+
+\indexspace
+\textbf{B}\label{L-xindex-B}
+\nopagebreak[4]
+ \item bohème, {1}
+ \item Bohême, {1}
+ \item Bohémien, {1}
+
+\indexspace
+\textbf{C}\label{L-xindex-C}
+\nopagebreak[4]
+ \item caennais, {1}
+ \item cæsium, {1}
+ \item CÆSIUM, {1}
+ \item cafard, {1}
+ \item coefficient, {1\,sq.}
+ \item cœur, {1}
+ \item CŒUR, {1}
+ \item coexistence, {1}
+ \item cote, {1}
+ \item Cote, {1}
+ \item COTE, {1}
+ \item côte, {1}
+ \item Côte, {1}
+ \item CÔTE, {1}
+ \item coté, {1}
+ \item Coté, {1}
+ \item COTÉ, {1}
+ \item côté, {1}
+ \item Côté, {1}
+ \item CÔTÉ, {1}
+ \item coté, {2}
+
+\indexspace
+\textbf{E}\label{L-xindex-E}
+\nopagebreak[4]
+ \item Élève, {1}
+ \item élevé, {1}
+
+\indexspace
+\textbf{G}\label{L-xindex-G}
+\nopagebreak[4]
+ \item gène, {1}
+ \item gêne, {1}
+ \item gêné, {1}
+
+\indexspace
+\textbf{L}\label{L-xindex-L}
+\nopagebreak[4]
+ \item lèse, {1}
+ \item lésé, {1}
+
+\indexspace
+\textbf{M}\label{L-xindex-M}
+\nopagebreak[4]
+ \item MÂCON, {1}
+ \item maçon, {1}
+
+\indexspace
+\textbf{P}\label{L-xindex-P}
+\nopagebreak[4]
+ \item pêche, {1}
+ \item péché, {1}
+ \item PÉCHÉ, {1}
+ \item pécher, {1}
+ \item pêcher, {1}
+
+\indexspace
+\textbf{R}\label{L-xindex-R}
+\nopagebreak[4]
+ \item relève, {1}
+ \item relevé, {1}
+ \item révèle, {1}
+ \item révélé, {1}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/french.pdf b/indexing/xindex/doc/tests/french.pdf
new file mode 100644
index 0000000000..80f4889341
--- /dev/null
+++ b/indexing/xindex/doc/tests/french.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/french.tex b/indexing/xindex/doc/tests/french.tex
new file mode 100644
index 0000000000..8f2191c0dd
--- /dev/null
+++ b/indexing/xindex/doc/tests/french.tex
@@ -0,0 +1,20 @@
+\documentclass[paper=a4,twocolumn]{scrartcl}
+\usepackage{libertinus-otf}
+\usepackage[french]{babel}
+\usepackage{makeidx} \makeindex
+\newcommand*{\IND}[1]{\index{#1}#1\par}
+\begin{document}
+%%% xindex -l fr <file>
+\IND{CÔTÉ} \IND{cote} \IND{Côté} \IND{COTÉ} \IND{côte}
+\IND{COTE} \IND{côté} \IND{Coté} \IND{coté} \IND{Cote}
+\IND{CÔTE} \IND{Côte} \IND{lésé} \IND{péché}
+\IND{bohème} \IND{gêné} \IND{pêche} \IND{cæsium}
+\IND{pêcher} \IND{révèle} \IND{pécher} \IND{révélé}
+\IND{Bohême} \IND{relève} \IND{PÉCHÉ} \IND{maçon}
+\IND{relevé} \IND{Élève} \IND{gêne} \IND{élevé}
+\IND{MÂCON} \IND{gène} \IND{Bohémien} \IND{caennais}
+\IND{lèse} \IND{coexistence} \IND{cœur}
+\IND{coefficient} \IND{cafard} \IND{CŒUR} \IND{CÆSIUM}
+\newpage \IND{coté} \IND{cœur} \IND{péché} \newpage
+\IND{coté}\IND{coefficient} \printindex
+\end{document}
diff --git a/indexing/xindex/doc/tests/runTests.sh b/indexing/xindex/doc/tests/runTests.sh
index a8a8b5fe6d..d1a181db1c 100755
--- a/indexing/xindex/doc/tests/runTests.sh
+++ b/indexing/xindex/doc/tests/runTests.sh
@@ -25,7 +25,7 @@ xindex demo-hyperref > /dev/null
lualatex demo-hyperref > /dev/null
echo "HADW"
-xindex -l de -c HAdW-eKO HADW > /dev/null
+xindex -l de -c HAdW-eKO HADW -x > /dev/null
lualatex HADW > /dev/null
echo "Umlaute"
@@ -36,4 +36,14 @@ echo "Umlaute2"
xindex -l de -c DIN2 Umlaute2 > /dev/null
lualatex Umlaute2 > /dev/null
+echo "french"
+lualatex french > /dev/null
+xindex -l fr french > /dev/null
+lualatex Umlaute2 > /dev/null
+
+echo "see"
+lualatex see > /dev/null
+xindex see > /dev/null
+lualatex see > /dev/null
+
rm -fr *.aux *.log *.ilg *.out \ No newline at end of file
diff --git a/indexing/xindex/doc/tests/see.idx b/indexing/xindex/doc/tests/see.idx
new file mode 100644
index 0000000000..52326372ba
--- /dev/null
+++ b/indexing/xindex/doc/tests/see.idx
@@ -0,0 +1,15 @@
+\indexentry{usus|hyperpage}{2}
+\indexentry{confarreatio|hyperpage}{2}
+\indexentry{coemptio|hyperpage}{3}
+\indexentry{marriage|hyperpage}{3}
+\indexentry{marriage|hyperpage}{4}
+\indexentry{marriage|hyperpage}{4}
+\indexentry{marriage|hyperpage}{5}
+\indexentry{marriage|hyperindexformat{\seealso{usus}}}{5}
+\indexentry{marriage|hyperindexformat{\seealso{coemptio}}}{6}
+\indexentry{marriage|hyperindexformat{\seealso{confarreatio}}}{6}
+\indexentry{"|hyperpage}{7}
+\indexentry{foo"|hyperpage}{8}
+\indexentry{comemp|hyperindexformat{\seealso{coemptio}}}{9}
+\indexentry{com"|hyperpage}{9}
+\indexentry{com|hyperindexformat{\seealso{coemptio}}}{9}
diff --git a/indexing/xindex/doc/tests/see.ind b/indexing/xindex/doc/tests/see.ind
new file mode 100644
index 0000000000..83b103c64b
--- /dev/null
+++ b/indexing/xindex/doc/tests/see.ind
@@ -0,0 +1,30 @@
+
+\begin{theindex}
+\textbf{Symbols}\label{L-xindex-symbols}
+\nopagebreak[4]
+ \item ", \hyperpage{7}
+
+\indexspace
+\textbf{C}\label{L-xindex-C}
+\nopagebreak[4]
+ \item coemptio, \hyperpage{3}
+ \item com", \hyperpage{9}
+ \item com, \hyperindexformat{\seealso{coemptio}}{9}
+ \item comemp, \hyperindexformat{\seealso{coemptio}}{9}
+ \item confarreatio, \hyperpage{2}
+
+\indexspace
+\textbf{F}\label{L-xindex-F}
+\nopagebreak[4]
+ \item foo", \hyperpage{8}
+
+\indexspace
+\textbf{M}\label{L-xindex-M}
+\nopagebreak[4]
+ \item marriage, \hyperpage{3\nohyperpage{ff}}, \hyperindexformat{\seealso{usus}}{5}, \hyperindexformat{\seealso{confarreatio}}{6}, \hyperindexformat{\seealso{coemptio}}{6}
+
+\indexspace
+\textbf{U}\label{L-xindex-U}
+\nopagebreak[4]
+ \item usus, \hyperpage{2}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/see.pdf b/indexing/xindex/doc/tests/see.pdf
new file mode 100644
index 0000000000..4f8c759611
--- /dev/null
+++ b/indexing/xindex/doc/tests/see.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/see.tex b/indexing/xindex/doc/tests/see.tex
new file mode 100644
index 0000000000..5f63c68ea6
--- /dev/null
+++ b/indexing/xindex/doc/tests/see.tex
@@ -0,0 +1,31 @@
+\documentclass[paper=a4,parskip=half-,ngerman]{scrartcl}
+\usepackage{fontspec}
+\usepackage{libertinus-otf}
+\usepackage{babel}
+\usepackage{makeidx}
+\makeindex
+\usepackage{hyperref}
+\begin{document}
+
+
+\printindex
+
+
+Page 1
+\index{usus}
+\index{confarreatio} \newpage Page 2
+\index{coemptio}
+\index{marriage}\newpage Page 3
+\index{marriage}
+\index{marriage}\newpage Page 4
+\index{marriage}
+\index{marriage|seealso{usus}}\newpage Page 5
+\index{marriage|seealso{coemptio}}
+\index{marriage|seealso{confarreatio}} \newpage Page 6
+Vert\index{"|} \newpage Page 7
+\index{foo"||see{bar}} \newpage Page 8
+\index{comemp|seealso{coemptio}}
+\index{com"||seealso{coemptio}}
+\index{com|seealso{coemptio}}
+
+\end{document}
diff --git a/indexing/xindex/doc/xindex-doc.pdf b/indexing/xindex/doc/xindex-doc.pdf
index 31143f6fe1..911775ac8a 100644
--- a/indexing/xindex/doc/xindex-doc.pdf
+++ 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
index df19098a87..8508ace554 100644
--- a/indexing/xindex/doc/xindex-doc.tex
+++ b/indexing/xindex/doc/xindex-doc.tex
@@ -81,7 +81,7 @@
\def\setVersion#1{\setVVersion#1!!}
\def\setVVersion#1=#2!!{\def\xIndexVersion{#2}}
-\setVersion{version = 0.55}% can be automatically changed by perl
+\setVersion{version = 0.61}% can be automatically changed by perl
@@ -94,7 +94,6 @@
%\enlargethispage{1cm}
\tableofcontents
-\clearpage
\begin{noteblock}
\raggedright
Thanks to: \\
@@ -102,8 +101,9 @@ Mark Baudoin;
Denis Bitouzé;
Andreas Deininger;
Brian Dunn;
-Gonzalo Pesquero Serrano;
+Daniel Flipo;
Michal Hoftich;
+Dohyun Kim;
Mykel Kochenderfer;
Alexey Kuznetsov;
Frank Mittelbach;
@@ -112,6 +112,7 @@ Heiko Oberdiek;
Matteo Paolini;
Stefan Pinnow;
Florent Rougon;
+Gonzalo Pesquero Serrano;
Martin Sievers;
Simon Spiegel;
Jürgen Spitzmüller;
@@ -167,7 +168,7 @@ EntryList[2] = {
\subsection{Syntax}
The \Index{syntax} is \verb|xindex [...] <file(s)>| where \verb|[...]| are optional \Index{argument}s, either in short or
-long form which, of course, can be mixed:
+long7 form which, of course, can be mixed:
\begin{verbatim}
xindex
@@ -188,7 +189,7 @@ xindex
[-o,--output ] default is <input>.ind
[-p,--prefix] default L
[-s,--use_stdin ] default is false
- [-u,--use_UCA ] default is false
+ [-x,--no_UCA ] default is false
<files...> (default stdin) file(s)[.idx] one or more files
\end{verbatim}
@@ -269,19 +270,19 @@ are alphabetized.
compiler=lualatex,
crop,
xindex,
- xindexOptions=-u, % use unicode
+ xindexOptions=-l fr,
runs=2,code,docType=latex,
showFilename,
align=\centering,
lstOptions={columns=fixed}]{xindex}
%! lualatex
-%! xindex -u (use unicode)
\documentclass{scrartcl}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage{makeidx}\makeindex
@@ -299,9 +300,9 @@ are alphabetized.
\item Left paranthesis \{ \index{\braceLeft}
\item Right paranthesis \} \index{\braceRight}
\end{itemize}
-run \texttt{xindex -u <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
+run \texttt{xindex -l fr <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
\index{Etage} \index{Ètagé}
-\newpage
+\twocolumn
\printindex
\end{document}
\end{externalDocument}
@@ -310,7 +311,7 @@ It is by design that the braces \{ and \} cannot be used as index entry. The \em
xindex defines the two commands \Lcs{braceLeft} and \Lcs{braceRight} which can be used instead
(see examples above and and below).
-The same example without using unicode sorting (no option \Loption{-u}):
+The same example without using unicode sorting (option \Loption{-x}):
\begin{externalDocument}[
@@ -320,7 +321,7 @@ The same example without using unicode sorting (no option \Loption{-u}):
compiler=lualatex,
crop,
xindex,
-% xindexOptions=-u, % use unicode
+ xindexOptions=-x, % do not use unicode
runs=2,code,docType=latex,
showFilename,
align=\centering,
@@ -328,11 +329,12 @@ The same example without using unicode sorting (no option \Loption{-u}):
%! lualatex
%! xindex (no unicode sort -- simple ascii)
\documentclass{scrartcl}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage{makeidx}\makeindex
@@ -350,9 +352,9 @@ The same example without using unicode sorting (no option \Loption{-u}):
\item Left paranthesis \{ \index{\braceLeft}
\item Right paranthesis \} \index{\braceRight}
\end{itemize}
-run \texttt{xindex -u <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
+run \texttt{xindex -x <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
\index{Etage} \index{Ètagé}
-\newpage
+\twocolumn
\printindex
\end{document}
\end{externalDocument}
@@ -386,9 +388,8 @@ The following example shows how to use it:
frame,
compiler=lualatex,
crop,
- force=false,
xindex,
- xindexOptions=-e ">",
+ xindexOptions=-e ">" -n,
runs=2,code,docType=latex,
showFilename,
align=\centering,
@@ -417,7 +418,7 @@ The following example shows how to use it:
\item Group start \{ \index{\braceLeft}
\item Group end \{ \index{\braceRight}
\end{itemize}
-Run \texttt{xindex} with \texttt{xindex -e ">"}\index{<file.idx>}\index{123}
+Run \texttt{xindex} with \texttt{xindex -e ">" -n}\index{<file.idx>}\index{123}
\newpage
\printindex
\end{document}
@@ -457,7 +458,6 @@ The following example was run with \verb|xindex -l it <file>.idx|:
frame,
compiler=lualatex,
crop,
- force=false,
xindex,
xindexOptions=-l it -e ">",
runs=2,code,docType=latex,
@@ -467,11 +467,12 @@ The following example was run with \verb|xindex -l it <file>.idx|:
%! lualatex
\documentclass{scrartcl}
\usepackage[italian]{babel}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage{makeidx}\makeindex
@@ -487,8 +488,7 @@ The following example was run with \verb|xindex -l it <file>.idx|:
\item At siboli @ \index{At (>@)}
\end{itemize}
Initio \texttt{xindex} con \texttt{xindex -l it -e ">"}\index{123}
-\newpage
-\printindex
+\twocolumn \printindex
\end{document}
\end{externalDocument}
@@ -504,7 +504,6 @@ package \Lpack{babel} or \Lpack{polyglossia} are used.
frame,
compiler=lualatex,
crop,
- force=false,
xindex,
xindexOptions=-k -e "?",
runs=2,code,docType=latex,
@@ -513,11 +512,12 @@ package \Lpack{babel} or \Lpack{polyglossia} are used.
lstOptions={columns=fixed}]{xindex}
%! lualatex
\documentclass{scrartcl}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage[dutch]{babel} % !!!!
@@ -534,7 +534,7 @@ package \Lpack{babel} or \Lpack{polyglossia} are used.
\item At character @ \index{At (?@)}\index{?@}
\end{itemize}
Run \texttt{xindex} with \texttt{xindex -k -e "?"}\index{123}
-\newpage\index{xindex@\texttt{xindex}}
+\twocolumn\index{xindex@\texttt{xindex}}
\printindex
\end{document}
\end{externalDocument}
@@ -555,7 +555,7 @@ This allows to have different indexes with different language.
compiler=lualatex,
crop,
xindex,
- xindexOptions=-u -l RU -c RU,
+ xindexOptions=-l RU -c RU -n,
runs=2,code,docType=latex,
showFilename,
align=\centering,
@@ -564,18 +564,19 @@ This allows to have different indexes with different language.
]{xindex}
%! lualatex
\documentclass{scrartcl}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage[russian]{babel}
\usepackage{fontspec}
\usepackage[regular]{newcomputermodern}
\defaultfontfeatures{Ligatures=TeX}
-\usepackage{xindex}\makeindex % run with xindex -u -l RU -c RU <file>
+\usepackage{xindex}\makeindex % run with xindex -l RU -c RU <file>
%StopVisiblePreamble
\pagestyle{empty}
\begin{document}
@@ -599,7 +600,7 @@ This allows to have different indexes with different language.
\verb|\index{Ёж!ушастый (Hemiechinus auritus)}|%
\index{Ёж!ушастый (Hemiechinus auritus)}
\end{tabular}
-\printindex % xindex -u -l RU -c RU <file>
+\printindex % xindex -l RU -c RU -n <file>
\end{document}
\end{externalDocument}
@@ -609,8 +610,207 @@ This allows to have different indexes with different language.
\section{Sorting}
+
+
+
+\subsection{Default sorting by the UCA (Unicode Collection Algorithm)}
+This Lua library from Michal Hoftich is part of \TeXLive\ and is used by default
+for sorting. The supported languages and variants are listed in the file
+\Lfile{lua-uca-languages.lua}:
+
+\texttt{af,
+am,
+ar,
+as,
+az,
+be,
+bg,
+bn,
+bs,
+bs\_cyrl,
+ca,
+chr,
+cs,
+cy,
+da,
+de,
+de\_din2,
+dsb,
+dz,
+ee,
+el,
+en,
+eo,
+es,
+et,
+fa,
+fi,
+fil,
+fo,
+fr,
+fr\_backward\_accents,
+ga,
+gl,
+gu,
+ha,
+haw,
+he,
+hr,
+hi,
+hsb,
+hu,
+hy,
+id,
+ig,
+is,
+it,
+ja,
+ka,
+kk,
+kl,
+km,
+kn,
+ko,
+kok,
+ky,
+lb,
+lkt,
+ln,
+lo,
+lt,
+lv,
+mk,
+ml,
+mn,
+mr,
+ms,
+mt,
+my,
+nb,
+ne,
+nl,
+nn,
+no,
+om,
+pa,
+pl,
+ps,
+pt,
+ro,
+ru,
+se,
+si,
+sk,
+sl,
+smn,
+sq,
+sr,
+sr\_latn,
+sv,
+sw,
+ta,
+te,
+th,
+tk,
+to,
+tr,
+ug,
+uk,
+ur,
+uz,
+vi,
+vo,
+wae,
+wo,
+yi,
+yo,
+zh,
+zu}
+
+
+
+The sorting order can be easily modified. Read the documentation of the package \texttt{LUA-UCA}
+on how to do it and what languages are supported so far. Any additional code setting for
+UCA should be done in the file \Lfile{xindex-cfg-uca.lua}, which will automatically be read
+by \Lprog{xindex}.
+
+\begin{importantblock}
+If possible, you should use the Unicode sorting by default and only for some special cases
+where you define your own sorting scheme, you should use the \verb|-x| option.
+\end{importantblock}
+
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+% pages={6},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l cs,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ usefancyvrb,
+% lstOptions={columns=fixed}
+]{xindex}
+%! lualatex
+\documentclass[paper=a6]{scrartcl}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+%StartVisiblePreamble
+\usepackage{multicol}
+\usepackage{makeidx}\makeindex
+\def\Index#1{#1\index{#1}}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+Sorted with \verb|-l cs|
+\Index{ahoj} \Index{crha}, \Index{čaj}, \Index{chachar},
+\Index{rak}, \Index{řeka}, \Index{srp}, \Index{šutr},
+\Index{hudba}, \Index{linux}, \Index{zebra},
+\Index{žába}, \Index{7 dubů}
+\begin{multicols}{2} \printindex \end{multicols}
+\end{document}
+\end{externalDocument}
+
+
+
+
+Modifications can be done in a config file which is then loaded by the
+option \texttt{-c}. For example: the file \Lfile{xindex-cfg-uca.lua} has
+modification for french and norwegian. For french the standard sorting rules
+\texttt{fr\_backward\_accents}, are a bit
+special and should be the default also for the language \texttt{fr}:
+
+\begin{verbatim}
+languages.fr = function(collator_obj)
+ -- reverse search for accents in French (recommended):
+ collator_obj.accents_backward = true
+ local tailoring = function(s) collator_obj:tailor_string(s) end
+ tailoring("&æ=ae")
+ tailoring("&œ=oe")
+ tailoring("&th<þ<<<Þ") -- Canadian, see SGQRI004.pdf
+ return collator_obj
+end
+\end{verbatim}
+
+Add any additional modifications to this file or create an own
+config file and load it with \texttt{-c}.
+
+
\subsection{Default sorting by a character table}
-The default sorting is unicode aware and uses a translation table for accented characters:
+This sorting is not completely unicode aware. It uses a translation table for accented characters,
+which should only be used if the standard sorting method with UCA is not possible! This kind of sortierung
+has to be choosed by the option \texttt{-x} (don't use UCA). The option \texttt{-u} for
+using UCA is deprecated, because using UCA is the default.
+
+Again, if on wants to use an own transformation table, then use something like:
\begin{verbatim}
alphabet_lower = { -- for sorting
@@ -684,6 +884,8 @@ alphabet_upper = { -- for sorting
\end{verbatim}
+\subsection{Examples}
+\subsubsection{German language and no UCA}
\begin{externalDocument}[
grfOptions={scale=0.9},%width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
@@ -693,7 +895,7 @@ alphabet_upper = { -- for sorting
compiler=lualatex,
crop,
xindex,
- xindexOptions=-l de,
+ xindexOptions=-l de -x,
runs=2,code,docType=latex,
showFilename,
usefancyvrb,
@@ -719,7 +921,65 @@ alphabet_upper = { -- for sorting
\makeatother
\pagestyle{empty}
\begin{document}
-Sorted with \verb|-l DE|
+Sorted with \verb|-l DE -x|\par
+\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}
+
+
+\subsubsection{German language (DIN2) and no UCA}
+
+In this case a letter Ö, Ä, Ü, ö, ä, ü is converted to Oe, Ae, Ue, oe, ae, ue before sorting:
+
+\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 -x,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+%! lualatex
+\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 -x|
\Index{Österreich} \Index{Öresund}
\Index{Ostern} \Index{Ober}
@@ -734,16 +994,74 @@ Sorted with \verb|-l DE|
\Index{Göbel} \Index{Goethe}
\Index{Göthe} \Index{Götz}
\Index{Goldmann}
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+\clearpage%%%%%%%%%%%
+\subsubsection{German language with UCA}
+
+\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, % german and UCA
+ runs=2,code,docType=latex,
+ showFilename,
+ usefancyvrb,
+ align=\centering,
+% lstOptions={columns=fixed}
+]{xindex}
+%! lualatex
+\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| and using UCA\par
+\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}
+\subsubsection{German language (DIN2) with UCA}
-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 beginning with the letter Ö:
+The same sorted with the German DIN variant 2. It uses also the config
+file
+with \verb|--config DIN2|, but sets the language internally to \verb|de_din2| for
+UCA and do not use the character tables:
\noindent
\begin{externalDocument}[
@@ -799,6 +1117,10 @@ Sorted with
\end{externalDocument}
+\clearpage
+
+\subsubsection{Japanese language with UCA}
+
The following runs with \verb|xindex -l jp <file>|:
@@ -814,13 +1136,13 @@ The following runs with \verb|xindex -l jp <file>|:
\edef\FancyVerbStartString{\perCent StartVisiblePreamble}
\edef\FancyVerbStopString{\perCent StopVisiblePreamble}
\colorbox{black!20}{\parbox{\linewidth}{%
-\VerbatimInput[fontfamily=helvetica]{Examples/xindex-9.tex}
+\VerbatimInput[fontfamily=helvetica]{Examples/xindex-12.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-9.tex}
+\VerbatimInput[fontfamily=helvetica]{Examples/xindex-12.tex}
}}
%\end{minipage}\hfill
@@ -849,8 +1171,7 @@ The following runs with \verb|xindex -l jp <file>|:
\usepackage{fontspec}
\setmainfont{SourceHanSans}
\usepackage[japanese]{babel}
-\addto\captionsjapanese{%
- \def\indexname{指数}}
+\addto\captionsjapanese{\def\indexname{指数}}
\usepackage{hvindex}% for \Index
\usepackage{makeidx}\makeindex
%StopVisiblePreamble
@@ -865,12 +1186,10 @@ The following runs with \verb|xindex -l jp <file>|:
\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
+\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}
@@ -878,70 +1197,6 @@ The following runs with \verb|xindex -l jp <file>|:
\setsansfont{Libertinus Sans}\rmfamily
-\subsection{Sorting by using UCA (Unicode Collation Algorithm)}
-With the optional argument \verb|-u| or alternatively \verb|--use_UCA| the sorting will be done
-by Michal Hoftich's Lua package \texttt{LUA-UCA}, which should be part of any \TeX{} installation.
-
-The sorting order can be easily modified. Read the documentation of the package \texttt{LUA-UCA}
-on how to do it and what languages are supported so far. Any additional code setting for
-UCA should be done in the file \Lfile{xindex-cfg-uca.lua}, which will automatically be read
-by \Lprog{xindex}.
-
-\iffalse
-\begin{noteblock}
-This package can display, in a
-\begin{itemize}
- \item to change dimensions and colors ;
-\end{itemize}
-It's
-\end{noteblock}
-\fi
-\begin{importantblock}
-If possible, you should use the Unicode sorting by default and only for some special cases
-where you define your own sorting scheme, you should not use the \verb|-u| option.
-\end{importantblock}
-
-
-\begin{externalDocument}[
-% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
- mpwidth=0.55\linewidth,
-% pages={6},
- frame=false,
- compiler=lualatex,
- crop,
- force=false,
- xindex,
- xindexOptions=-u -l cs,
- runs=2,code,docType=latex,
- showFilename,
- align=\centering,
- usefancyvrb,
-% lstOptions={columns=fixed}
-]{xindex}
-%! lualatex
-\documentclass[paper=a6]{scrartcl}
-\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
- \parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
-\makeatother
-%StartVisiblePreamble
-\usepackage{multicol}
-\usepackage{makeidx}\makeindex
-\def\Index#1{#1\index{#1}}
-%StopVisiblePreamble
-\pagestyle{empty}
-\begin{document}
-Sorted with \verb|-u -l cs|
-\Index{ahoj} \Index{crha}, \Index{čaj}, \Index{chachar},
-\Index{rak}, \Index{řeka}, \Index{srp}, \Index{šutr},
-\Index{hudba}, \Index{linux}, \Index{zebra},
-\Index{žába}, \Index{7 dubů}
-\begin{multicols}{2} \printindex \end{multicols}
-\end{document}
-\end{externalDocument}
-
\subsection{Case sensitive index entries}
@@ -1000,7 +1255,6 @@ foo\newpage
\end{externalDocument}
-\clearpage
The same example sorted with the \verb|-a| or \verb|--no_casesensitive| has another output: now
\verb|xindex-cfg-common.lua| is the first one of the \verb|xindex-???| series.
@@ -1138,7 +1392,6 @@ Test
-\clearpage
\section{Pagenumbers}
\subsection{Compressing pagenumber series}\label{Compressing}
@@ -1175,7 +1428,6 @@ folium = {
pages={6},
frame=false,
compiler=lualatex,
- force=false,
crop,
xindex,
xindexOptions=-l fr,
@@ -1234,7 +1486,6 @@ of the same type, so we get \texttt{1f} in the output.
frame=false,
compiler=lualatex,
crop,
- force=false,
xindex,
xindexOptions=-l de,
runs=2,code,docType=latex,
@@ -1301,7 +1552,6 @@ envStop = "\\end{description}"
% xindexOptions=-c description -g,
runs=2,
code,docType=latex,
- force=false,
%xindex -c description -n -g xindex-17.idx
%xindex -c description -n --no_pagenumber gls.idx
% runsequence={lualatex,{xindex -c description -n -g},lualatex,lualatex},
@@ -1727,14 +1977,13 @@ baz\index{foo!bar!baz} foobar%
\end{externalDocument}
-
-%\clearpage
+\clearpage
\section{\texttt{hyperref}}
Using the package \Lpack{hyperref} is no problem:
-\enlargethispage{2.5\normalbaselineskip}
+%\enlargethispage{2.5\normalbaselineskip}
\begin{externalDocument}[
% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
@@ -1767,23 +2016,19 @@ Using the package \Lpack{hyperref} is no problem:
%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
+Sorted with \verb|-l DE| \par
+\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}
-
The following example fixes a problem with \Lpack{hyperref} and escaping the | character,
e.g.\verb/"|/. In such a case \Lpack{hyperref} ignores the vertical bar.
With the optional parameter \verb/-f | --fix_hyperref/, which is still experimental,
@@ -1791,7 +2036,6 @@ With the optional parameter \verb/-f | --fix_hyperref/, which is still experimen
of using this problematic vertical character, you can use \Lcs{textbar}, which also solves the
problem.
-
\begin{externalDocument}[
% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
% mpwidth=0.55\linewidth,
@@ -1799,7 +2043,6 @@ problem.
frame=false,
compiler=lualatex,
crop,
- force=false,
shellesc,
% xindex,
% xindexOptions=-,
@@ -1877,7 +2120,6 @@ such commands are ignored. In the following example we put an horizontal line af
pages={2},
frame=false,
compiler=lualatex,
- force=false,
crop,
xindex,
xindexOptions=-l de,
@@ -1981,7 +2223,6 @@ In the documents preamble there is the definition:
% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
mpwidth=0.6\linewidth,
pages={2},
- force=false,
frame=false,
compiler=lualatex,
crop,
@@ -2127,10 +2368,8 @@ and adds the program \Lprog{xindex} as the default program to \Lpack{imakeidx}.
mpwidth=0.55\linewidth,
pages={6},
frame=false,
- force=false,
compiler=lualatex,
crop,
- force=false,
% xindex,
% xindexOptions=-l de,
runs=2,code,docType=latex,
@@ -2229,6 +2468,54 @@ in the argument of \Lcs{indexentry}.
\appendix
\section{Examples}
+Correct french sorting with UCA:
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+ pages={3},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l fr,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ grfOptions={width=\linewidth},
+ lstOptions={columns=fixed}]{xindex}
+%! lualatex --shell-escape
+\documentclass[paper=a4,twocolumn]{scrartcl}
+\usepackage{libertinus-otf}
+\let\NewPage\newpage% only for demo
+\makeatletter
+\renewcommand\newpage{\NewPage\let\ps@plain\ps@empty}
+\makeatother
+%StartVisiblePreamble
+\usepackage[french]{babel}
+\usepackage[imakeidx]{xindex} \makeindex
+\newcommand*{\IND}[1]{\index{#1}#1\par}
+%StopVisiblePreamble
+\begin{document}
+%%% xindex -l fr <file>
+\IND{CÔTÉ} \IND{cote} \IND{Côté} \IND{COTÉ} \IND{côte}
+\IND{COTE} \IND{côté} \IND{Coté} \IND{coté} \IND{Cote}
+\IND{CÔTE} \IND{Côte} \IND{lésé} \IND{péché}
+\IND{bohème} \IND{gêné} \IND{pêche} \IND{cæsium}
+\IND{pêcher} \IND{révèle} \IND{pécher} \IND{révélé}
+\IND{Bohême} \IND{relève} \IND{PÉCHÉ} \IND{maçon}
+\IND{relevé} \IND{Élève} \IND{gêne} \IND{élevé}
+\IND{MÂCON} \IND{gène} \IND{Bohémien} \IND{caennais}
+\IND{lèse} \IND{coexistence} \IND{cœur}
+\IND{coefficient} \IND{cafard} \IND{CŒUR} \IND{CÆSIUM}
+\newpage \IND{coté} \IND{cœur} \IND{péché} \newpage
+\IND{coté}\IND{coefficient} \printindex
+\end{document}
+\end{externalDocument}
+
+
+
+
\begin{externalDocument}[
% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
mpwidth=0.55\linewidth,
diff --git a/indexing/xindex/latex/xindex.sty b/indexing/xindex/latex/xindex.sty
index 24d0076590..143e36b431 100644
--- a/indexing/xindex/latex/xindex.sty
+++ b/indexing/xindex/latex/xindex.sty
@@ -1,10 +1,10 @@
%% This is file `xindex.sty',
%%
-%% Copyright (C) 2018-2023
+%% Copyright (C) 2018-2024
%% Herbert Voss
%%
%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3c
+%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
@@ -13,7 +13,7 @@
%
%
% -------------------------------------
-\ProvidesPackage{xindex}[2023/07/30 v. 0.55 write into an idx file (hv)]
+\ProvidesPackage{xindex}[2024/05/16 v. 0.61 write into an idx file (hv)]
%
\RequirePackage{xkeyval}
diff --git a/indexing/xindex/lualatex/xindex-AU.lua b/indexing/xindex/lualatex/xindex-AU.lua
index 59c26294bf..845fc45c5d 100644
--- a/indexing/xindex/lualatex/xindex-AU.lua
+++ b/indexing/xindex/lualatex/xindex-AU.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-AU'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-DIN2.lua b/indexing/xindex/lualatex/xindex-DIN2.lua
index 5d9bd56dc8..445edc904e 100644
--- a/indexing/xindex/lualatex/xindex-DIN2.lua
+++ b/indexing/xindex/lualatex/xindex-DIN2.lua
@@ -16,25 +16,31 @@ if not modules then modules = { } end modules ['xindex-DIN2'] = {
license = "LPPL 1.3"
}
-itemPageDelimiter = "," -- Hello, 14
-compressPages = true -- something like 12--15, instead 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
-numericPage = true -- for non numerical pagenumbers, like "VI-17"
-sublabels = {"", "-\\,", "--\\,", "---\\,"} -- for the (sub(sub(sub-items first one is for item
-pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17"
-indexOpening = "" -- commands after \begin{theindex}
-rangeSymbol = "--"
-idxnewletter = "\\textbf" -- Only valid if -n is not set
-envStart = "\\begin{theindex}"
-envStop = "\\end{theindex}"
-
-
+--UCA language = "de_din2" --
+if use_UCA then
+languages.de = function(collator_obj)
+ local function tailor(a, b, tbl)
+ local autf = collator_obj:string_to_codepoints(a)
+ local butf = collator_obj:string_to_codepoints(b)
+ collator_obj:tailor(autf,butf, tbl)
+ end
+ local tailoring = function(s) collator_obj:tailor_string(s) end
+ languages.de(collator_obj)
+ tailoring "&Ö=Oe"
+ tailoring "&ö=oe"
+ tailoring "&Ä=Ae"
+ tailoring "&ä=ae"
+ tailoring "&Ü=Ue"
+ tailoring "&ü=ue"
+ tailoring "&ß=ss"
+ return collator_obj
+end
+end
--[[
+ Only used for -x option (no UCA):
Each character's position in this array-like table determines its 'priority'.
Several characters in the same slot have the same 'priority'.
]]
-
alphabet_lower = { -- for sorting
{ ' ' }, -- only for internal tests
{ 'a', 'á', 'à', 'å', 'æ', },
@@ -100,4 +106,3 @@ alphabet_upper = { -- for sorting
{ 'Y', 'Ý', 'Ÿ' },
{ 'Z', 'Ž' }
}
-
diff --git a/indexing/xindex/lualatex/xindex-HAdW-eKO.lua b/indexing/xindex/lualatex/xindex-HAdW-eKO.lua
index ecf51a290d..52edc98854 100644
--- a/indexing/xindex/lualatex/xindex-HAdW-eKO.lua
+++ b/indexing/xindex/lualatex/xindex-HAdW-eKO.lua
@@ -11,7 +11,7 @@
-- configuration for index files of the Heidelberger Akademie der Wissenschaften
if not modules then modules = { } end modules ['xindex-HAdW-eKO'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-RU.lua b/indexing/xindex/lualatex/xindex-RU.lua
index 626cc1c17d..3d2610d994 100644
--- a/indexing/xindex/lualatex/xindex-RU.lua
+++ b/indexing/xindex/lualatex/xindex-RU.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-RU'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration to xindex.lua",
author = "Alexey Kuznetzov",
copyright = "Herbert Voß",
diff --git a/indexing/xindex/lualatex/xindex-base.lua b/indexing/xindex/lualatex/xindex-base.lua
index ff44943724..d06df7cb2f 100644
--- a/indexing/xindex/lualatex/xindex-base.lua
+++ b/indexing/xindex/lualatex/xindex-base.lua
@@ -8,7 +8,7 @@
-- $Id: xindex-base.lua 22 2022-02-07 12:18:15Z hvoss $
-----------------------------------------------------------------------
-local info = { version = 0.55 }
+local info = { version = 0.61 }
-- check config
if pageNoPrefixDel ~= "" then
@@ -53,13 +53,13 @@ hyperpage, lines = checkHyperpage(lines) -- hyperref used?
if hyperpage
then writeLog(1,"We have hyperpages.\n",1)
else writeLog(1,"We have no hyperpages.\n",1)
- end
+end
--print("Presort of \\indexentry lines")
--table.sort(lines) -- no presort to keep macros inserted by \writeidx
if vlevel > 1 then
- writeLog(1,"--------------- Input data (mot sorted) ----------------\n",2)
+ writeLog(1,"--------------- Input data (not sorted) ----------------\n",2)
for _,l in pairs(lines) do writeLog(1,l.."\n",2) end
writeLog(1,"--------------- end Input data -------------------------\n",2)
end
@@ -95,11 +95,17 @@ for k,v in ipairs(lines) do
end
writeLog(1,"... done\n",0)
-writeLog(1,"------------------ Start list after getEntryAndPage() ------------------------\n,",2)
+writeLog(1,"------------------ Start list after getEntryAndPage() ------------------------\n",2)
printList(Index,2)
writeLog(1,"\n------------------ end list after getEntryAndPage() ------------------------\n",2)
writeLog(2,"Sorting entries: for LARGE idx files it can take some minutes ... \n",0)
+writeLog(1,"\n------------------ Start list before table.sort(Hooks and UTFCompare)------------\n",2)
+printList(Index,2)
+writeLog(1,require 'xindex-pretty'.dump(Index),3) -- only for internal dump
+writeLog(1,"\n------------------ end list before table.sort(Hooks and UTFCompare)------------\n",2)
+
+
if SORTprehook then
writeLog(2, "PreHook begin\n", 0)
Index = SORTprehook(Index)
@@ -112,8 +118,14 @@ writeLog(2, "GenerateSortKeys end\n", 0)
k = 0
writeLog(2, "Sort begin\n", 0)
-table.sort(Index,UTFCompare)
+
+if use_UCA then
+ table.sort(Index, UCACompare)
+else
+ table.sort(Index,UTFCompare)
+end
writeLog(2, "Sort end\n", 0)
+
if SORTposthook then
writeLog(2, "PostHook begin\n", 0)
Index = SORTposthook(Index)
@@ -168,15 +180,19 @@ if use_UCA then
v = NewIndex[i]
-- the collator:get_lowest_char will return character on the given
-- position. It will be lowercase and without accents.
- local codepoints = collator_obj:string_to_codepoints(NormalizedUpper(v.SortKey))
+ if v.SortKey ~= nil then
+ codepoints = collator_obj:string_to_codepoints(utf8_upper(v.SortKey))
+ else
+ codepoints = collator_obj:string_to_codepoints(utf8_upper(v.sortChar))
+ end
v.sortChar = getSortChar(codepoints) --or getSortChar(collator_obj:string_to_codepoints(NormalizedUpper(v.Entry)))
if not v.sortChar then
-- alternativelly use v.Entry if SortKey doesn't contain usable string
- codepoints = collator_obj:string_to_codepoints(NormalizedUpper(v.Entry))
+ codepoints = collator_obj:string_to_codepoints(utf8_upper(v.Entry))
v.sortChar = getSortChar(codepoints)
end
+-- print("v.sortchar="..v.sortChar)
end
- writeLog(2,"done\n",0)
else
for i=1, #NewIndex do
if NewIndex[i]["SortKey"] ~= nil then
@@ -187,6 +203,9 @@ else
end
end
+
+writeLog(2,"done\n",0)
+
if SORTendhook then
NewIndex = SORTendhook(NewIndex)
end
diff --git a/indexing/xindex/lualatex/xindex-baselib.lua b/indexing/xindex/lualatex/xindex-baselib.lua
index 36269520c9..1f278b31ad 100644
--- a/indexing/xindex/lualatex/xindex-baselib.lua
+++ b/indexing/xindex/lualatex/xindex-baselib.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-baselib'] = {
- version = 0.55,
+ version = 0.61,
comment = "base library to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-cfg-common.lua b/indexing/xindex/lualatex/xindex-cfg-common.lua
index e02da6f3fc..e727a75113 100644
--- a/indexing/xindex/lualatex/xindex-cfg-common.lua
+++ b/indexing/xindex/lualatex/xindex-cfg-common.lua
@@ -9,13 +9,27 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg-common'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
license = "LPPL 1.3"
}
+itemPageDelimiter = "," -- Hello, 14
+compressPages = true -- something like 12--15, instead 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 for item
+pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17" -- not used !!!
+indexOpening = "" -- commands after envStart
+idxnewletter = "\\textbf" -- Only valid if -n is not set
+envStart = "\\begin{theindex}"
+envStop = "\\end{theindex}"
+
+
indexheader = {
cs = {"Symboly", "Čísla", "czech"},
da = {"Symboler", "Tal", "danish"},
@@ -30,6 +44,7 @@ indexheader = {
ru = {"Символы", "Числа", "russian"},
}
+
--[[ babel
afrikaans
azerbaijani
diff --git a/indexing/xindex/lualatex/xindex-cfg.lua b/indexing/xindex/lualatex/xindex-cfg-no_uca.lua
index b9960963bd..7a013a3025 100644
--- a/indexing/xindex/lualatex/xindex-cfg.lua
+++ b/indexing/xindex/lualatex/xindex-cfg-no_uca.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.55,
+ version = 0.61,
comment = "main configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -18,7 +18,7 @@ if not modules then modules = { } end modules ['xindex-cfg'] = {
itemPageDelimiter = "," -- Hello, 14
compressPages = true -- something like 12--15, instead of 12,13,14,15. the |( ... |) syntax is still valid
-fCompress = true -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
+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"
@@ -29,6 +29,8 @@ idxnewletter = "\\textbf" -- Only valid if -n is not set
envStart = "\\begin{theindex}"
envStop = "\\end{theindex}"
+-- The following is not needed for sorting with UCA !!!!
+
--[[
Each character's position in this array-like table determines its 'priority'.
Several characters in the same slot have the same 'priority'.
diff --git a/indexing/xindex/lualatex/xindex-cfg-uca.lua b/indexing/xindex/lualatex/xindex-cfg-uca.lua
index 8dad47adda..e13803f7ca 100644
--- a/indexing/xindex/lualatex/xindex-cfg-uca.lua
+++ b/indexing/xindex/lualatex/xindex-cfg-uca.lua
@@ -9,13 +9,27 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg-lua'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration to xindex-cfg-uca.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
license = "LPPL 1.3"
}
+languages.fr = function(collator_obj)
+ -- reverse search for accents in French (recommended):
+ collator_obj.accents_backward = true
+ -- accents: sorting order in French
+ local tailoring = function(s) collator_obj:tailor_string(s) end
+ tailoring("&æ=ae")
+ tailoring("&œ=oe")
+ tailoring("&th<þ<<<Þ") -- Canadian, see SGQRI004.pdf
+ -- lowercase before uppercase in French
+ --collator_obj:uppercase_first()
+ return collator_obj
+end
+
+
-- put any additional code for lua-uca here ---
languages.no = function(collator_obj)
local tailoring = function(s) collator_obj:tailor_string(s) end
@@ -50,4 +64,4 @@ Symbol Example Description
<<<< か<<<<カ Identifies a quaternary difference between "か" and "カ". (New in ICU 53.) ICU permits up to three quaternary relations in a row (except for intervening "=" identity relations).
= x = y Signifies no difference between "x" and "y".
& &Z Instructs ICU to reset at this letter. These rules will be relative to this letter from here on, but will not affect the position of Z itself.
-]] \ No newline at end of file
+]]
diff --git a/indexing/xindex/lualatex/xindex-danteedition.lua b/indexing/xindex/lualatex/xindex-danteedition.lua
index 477eb5ccca..b615b2b220 100644
--- a/indexing/xindex/lualatex/xindex-danteedition.lua
+++ b/indexing/xindex/lualatex/xindex-danteedition.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration file for the DANTE Edition",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -91,3 +91,18 @@ alphabet_upper = { -- for sorting
{ 'Y', 'Ý', 'Ÿ' },
{ 'Z', 'Ž' }
}
+
+folium = {
+ cs = {"f.", "ff."},
+ da = {"f", "ff"},
+ de = {"f", "ff"},
+ en = {"f", "ff"},
+ es = {"f", "ff"},
+ fr = {"\\,sq.","\\,sqq."},
+ it = {"f", "ff"},
+ jp = {"シンボル","番号"},
+ nl = {"f.", "ff."},
+ no = {"\\,f.","\\,ff."},
+ ru = {"",""}, -- doesn't exist
+}
+
diff --git a/indexing/xindex/lualatex/xindex-dtk.lua b/indexing/xindex/lualatex/xindex-dtk.lua
index b420597720..c7822591ff 100644
--- a/indexing/xindex/lualatex/xindex-dtk.lua
+++ b/indexing/xindex/lualatex/xindex-dtk.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.55,
+ version = 0.61,
comment = "DTK configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-lib.lua b/indexing/xindex/lualatex/xindex-lib.lua
index 60c4d9a196..3f24bee367 100644
--- a/indexing/xindex/lualatex/xindex-lib.lua
+++ b/indexing/xindex/lualatex/xindex-lib.lua
@@ -9,13 +9,17 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-lib'] = {
- version = 0.55,
+ version = 0.61,
comment = "main library to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
license = "LPPL 1.3"
}
+require ("unicode")
+utf8_lower = unicode.utf8.lower
+utf8_upper = unicode.utf8.upper
+
local escapechar1 = "\""
local escapechar2 = "\"\""
local Letters = "ÄÖÜäöüabcdefghijklmnopqrstuvwxyzßABCDEFGHIJKLMNOPQRSTUVWXYZ"
@@ -55,29 +59,37 @@ function Lower(strOrig) -- return UTF string.lower
end
function NormalizedLower(strOrig) -- return normalized UTF string.lower (ä -> a)
- local str = ""
- for i=1, utf.len(strOrig) do
- local c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
- str = str..string.lower(c)
+ if use_UCA then
+ return strOrig
+ else
+ local str = ""
+ for i=1, utf.len(strOrig) do
+ local c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
+ str = str..string.lower(c)
+ end
+ return str
end
- return str
end
function NormalizedUpper(strOrig) -- return normalized UTF string.upper (ä -> A)
- local str = {}
- local c
- for i=1, utf.len(strOrig) do
- c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
- str[#str + 1] = c
- end
- strOrig = table.concat(str)
- str = {}
- for i=1, utf.len(strOrig) do
- c = get_normalized_char(alphabet_upper_map,utf.sub(strOrig,i,i))
- c = NormalizedUppercase(c)
- str[#str + 1] = c
+ if use_UCA then
+ return strOrig
+ else
+ local str = {}
+ local c
+ for i=1, utf.len(strOrig) do
+ c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
+ str[#str + 1] = c
+ end
+ strOrig = table.concat(str)
+ str = {}
+ for i=1, utf.len(strOrig) do
+ c = get_normalized_char(alphabet_upper_map,utf.sub(strOrig,i,i))
+ c = NormalizedUppercase(c)
+ str[#str + 1] = c
+ end
+ return table.concat(str)
end
- return table.concat(str)
end
function NormalizedUppercase(chr) -- return normalized UTF uppercase letter
@@ -284,7 +296,8 @@ function getEntryAndPage(w, nextW, EntryList)
--print("Entry:"..EntryList[#EntryList]["sortChar"])
if args_v then
if Special == "" then Special = "-" end
- writeLog(1,"getEntryAndPage: "..tostring(IndexString,pageNo,Special,utf.sub(IndexString,1,1),macro).."\n",2)
+ writeLog(1,"getEntryAndPage: "..
+ tostring(IndexString,pageNo,Special,utf.sub(IndexString,1,1),macro).."\n",2)
end
return EntryList
end
@@ -293,6 +306,7 @@ function compressEntryList(EntryList)
-- require 'xindex-pretty'.dump(EntryList) -- only for internal dump
local newList = {}
newList[1] = EntryList[1] -- at least one entry
+ print("----------------- start compressEntryList ----------------")
local nPages = 1
for k=2,#EntryList do
if EntryList[k] then -- exists?
@@ -337,7 +351,6 @@ EntryList[2] = {
}
]]
-
function deletePageDups(pages)
if #pages == 1 then return pages end
local newPages = {pages[1]}
@@ -360,7 +373,7 @@ end
function compressPageList(pages) -- called with (v["pages"])
writeLog(1,"compressPageList: we have "..#pages.." pages for this entry\n",2)
--- require 'xindex-pretty'.dump(pages) -- only for internal dump
+ --print(require 'xindex-pretty'.dump(pages)) -- only for internal dump
pages = deletePageDups(pages) -- delete duplicate page numbers with same special
local str
if #pages == 1 then -- only one pageno
@@ -380,6 +393,26 @@ function compressPageList(pages) -- called with (v["pages"])
-- (pages[1]["special"] == pages[2]["special"]) then
-- pages[2] = nil
end
+ else -- pages are not numbers
+ rangeStartA,rangeEndA = pages[1]["number"]:find("-") or 0,0
+ rangeStartB,rangeEndB = pages[2]["number"]:find("-") or 0,0
+ if rangeStartA > 1 then
+ pageA = pages[1]["number"]:gmatch("([^-]+)")(1) -- split 12--44 into 12
+ pageB = pages[2]["number"]
+ if pageA > pageB then -- change pages
+ local temp = pages[1]["number"]
+ pages[1]["number"] = pages[2]["number"]
+ pages[2]["number"] = temp
+ end
+ elseif rangeStartB > 1 then -- change pages
+ pageA = pages[1]["number"]
+ pageB = pages[2]["number"]:gmatch("([^-]+)")(1) -- split 12--44 into 12
+ if pageA > pageB then
+ local temp = pages[1]["number"]
+ pages[1]["number"] = pages[2]["number"]
+ pages[2]["number"] = temp
+ end
+ end
end
return pages
end
@@ -397,7 +430,7 @@ function compressPageList(pages) -- called with (v["pages"])
series = {pages[2]}
startIndex = 3
end
-if args_v then print ("compressPageList: more than two pages for the entry\n") end
+ if args_v then print ("compressPageList: more than two pages for the entry\n") end
for i=startIndex,#pages do
if (toNumber(pages[i-1]["number"]) and toNumber(pages[i]["number"])) then -- do we have two arabic or two roman numbers?
if ((toNumber(pages[i]["number"])-toNumber(pages[i-1]["number"])) == 1) and
@@ -574,6 +607,7 @@ function GenerateSortKey(a)
end
-- s:gsub("%s+", "") strip spaces
-- a["SortKey"] = a["SortKey"]:gsub("%s+", "")
+ --print("Sortkey: " .. a["SortKey"])
if not use_UCA then -- test if it is a symbol after 9 and before A or after Z
if (a["SortKey"]:byte() > 57 and a["SortKey"]:byte() < 65) or
(a["SortKey"]:byte() > 90 and a["SortKey"]:byte() < 97) or
@@ -581,28 +615,44 @@ function GenerateSortKey(a)
a["SortKey"] = "/"..a["SortKey"] -- sort it after /
end
end
- --print("Sortkey: " .. a["SortKey"])
end
function GenerateSortKeys(Index)
- for _, entry in ipairs(Index) do
+ for _, entry in ipairs(Index) do
-- print("<<".._..entry["Entry"])
- GenerateSortKey(entry)
- end
+ GenerateSortKey(entry)
+ end
end
-function UTFCompare(a,b)
- local A = a["SortKey"]
- local B = b["SortKey"]
- if use_UCA then
- compare = collator_obj:compare_strings(A,B)
+-- Entry = "Johann", -- the index item foo@bar
+-- pages = { -- the page number(s) and the part after |
+-- { number = 111,
+
+
+function UCACompare(a,b)
+ local pageA = a["pages"][1]["number"]
+ local pageB = b["pages"][1]["number"]
+ if ignoreSpace then
+ A = a["Entry"]:gsub("%s+", "")..tostring(pageA) -- str = str:gsub("%s+", "")
+ B = b["Entry"]:gsub("%s+", "")..tostring(pageB)
else
- compare = A<B
+ A = a["Entry"]..tostring(pageA)
+ B = b["Entry"]..tostring(pageB)
end
- writeLog(1,"UTFCompare: "..A.."<"..B.." : "..tostring(compare).."\n",2)
+ if A=="Abendmahl" or B=="Abendmahl" then print(A,B,A==B) end
+ if A==B then return True end
+ --print(A,B)
+ compare = collator_obj:compare_strings(A,B)
+-- writeLog(1,"UCACompare: "..A.."<"..B.." : "..tostring(compare).."\n",2)
return compare
end
+function UTFCompare(a,b)
+ local A = a["SortKey"]
+ local B = b["SortKey"]
+-- writeLog(1,"UTFCompare: "..A.."<"..B.." : "..tostring(A<B).."\n",2)
+ return A<B
+end
function pageCompare(a,b) -- a = {{number=...,special=..},{...,...}}
-- a["number"], b["number"] are something like "3" or "VI-17" or "9--31"
@@ -709,7 +759,7 @@ function getPageList(v,hyperpage)
else
Pages = compressPageList(v["pages"])
end
--- require 'xindex-pretty'.dump(Pages) -- only for internal dump
+-- print(require 'xindex-pretty'.dump(Pages)) -- only for internal dump
local pageNo
--[[
\indexentry{Auto|hyperindexformat{\textbf}}{1}
@@ -719,18 +769,17 @@ function getPageList(v,hyperpage)
\item foo, \hyperpage{1\nohyperpage{f}},
\hyperpage{4\nohyperpage{ff}}, \hyperpage{8}
-
]]
if hyperpage then
- if string.find(v["pages"][1]["special"],"hyperindexformat") then
--- pageNo = v["pages"][1]["special"].."{"..checkFF(Pages[1]["number"].."}")
- pageNo = v["pages"][1]["special"].."{"..Pages[1]["number"].."}"
+ if string.find(Pages[1]["special"],"hyperindexformat") then
+-- pageNo = Pages[1]["special"].."{"..checkFF(Pages[1]["number"].."}")
+ pageNo = Pages[1]["special"].."{"..Pages[1]["number"].."}"
else
pageNo = "\\hyperpage{"..checkFF(Pages[1]["number"]).."}"
end
for i=2,#Pages do
- if string.find(v["pages"][i]["special"],"hyperindexformat") then
- pageNo = pageNo..", "..v["pages"][i]["special"].."{"..Pages[i]["number"].."}"
+ if string.find(Pages[i]["special"],"hyperindexformat") then
+ pageNo = pageNo..", "..Pages[i]["special"].."{"..Pages[i]["number"].."}"
-- pageNo = pageNo..", "..v["pages"][i]["special"].."{"..checkFF(Pages[i]["number"].."}")
else
pageNo = pageNo..", \\hyperpage{"..checkFF(Pages[i]["number"]).."}"
@@ -784,8 +833,9 @@ end
function checkHyperpage(lines)
local hyperpage = false
+ local l
for i=1,#lines do
- if string.find(lines[i],'hyperpage}') then
+ if string.find(lines[i],'hyperpage}') or string.find(lines[i],'hyperindexformat}') then
hyperpage = true
break
end
@@ -796,49 +846,49 @@ function checkHyperpage(lines)
-- hyperref ignores the vertical bar in "| and also other escape chars
--
-- \index{"|} -> \indexentry{"|hyperpage}{1} -> \textbar|hyperpage
- -- \index{foo"|bar} -> \indexentry{foo"|hyperindexformat{\bar}}{1} -> foo\textbar bar|hyperpage
+ -- \index{foo"|bar} -> \indexentry{foo"||hyperindexformat{\bar}}{1} -> foo\textbar bar|hyperpage
end
local sub_str0 = esc_char..'|hyperpage'
local sub_str1 = esc_char..'|hyperindexformat'
for i=1,#lines do
- local l = lines[i]
+ l = lines[i]
if fix_hyperref then
- s0 = l:find(sub_str0) -- test for hyperpage
- s1 = l:find(esc_char..sub_str0)
- --print(i,l,s0,s1)
+ s0 = l:find(sub_str0) -- test for "|hyperpage
+ s1 = l:find(esc_char..sub_str0) -- test for ”"|hyperpage
if s0 == nil then
s0 = 0
s1 = 0
end
if s1 == nil and s0 > 0 then -- no ""|
- l = l:gsub(sub_str0, '\\textbar|hyperpage') -- "| -> \textbar
- else
- -- part 2
- s0 = l:find(sub_str1)
- s1 = l:find(esc_char..sub_str1)
- --print(i,l,s0,s1)
- if s0 == nil then
+ l = l:gsub(sub_str0, '\\textbar|hyperpage') -- "|hyperpage -> \textbar|hyperpage
+ end
+ -- part 2
+ s0 = l:find(sub_str1) -- look for "|hyperindexformat
+ s1 = l:find(esc_char..sub_str1) -- look for ""|hyperindexformat
+ --print(i,l,s0,s1)
+ if s0 == nil then
s0 = 0
s1 = 0
- elseif s1 == nil then
+ elseif s1 == nil then
s1 = 0
- end
- if s1 == 0 and s0 > 0 then
+ end
+ if s1 == 0 and s0 > 0 then -- found "|hyperindexformat
-- get foo and bar from {foo"|hyperindexformat{\bar}}
- items = l:gmatch("%{(.-)%}")
- var = {}
- for item in items do
+ -- \indexentry{marriage|hyperindexformat{\seealso{coemptio}}}{301}
+ items = l:gmatch("%{(.-)%}")
+ var = {}
+ for item in items do
var[#var+1] = item
- end
- if s0 > 2 then
+ end
+ if s0 > 2 then
u1 = var[1]:split('"|')[1] -- foo
- else
+ else
u1 = ''
- end
- v1 = var[1]:split("\\")[2] -- bar
- l = '{'..u1..'\\textbar '..v1.."|hyperpage}{"..var[2].."}"
- -- l = foo"|bar -> foo\textbar bar
end
+ v1 = var[1]:split("\\")[2] -- bar
+ print(u1,v1,var[1],var[2])
+ l = '{'..u1..'\\textbar '..v1.."|hyperindexformat}{"..var[2].."}"
+ -- l = foo"|bar -> foo\textbar bar
end
end
lines[i] = string.gsub(l,'|?hyperpage}{','}{')
@@ -1018,7 +1068,7 @@ function getSortChar(codepoints)
local sort_char = utf8.char(table.unpack(codes))
--print("SortChar:"..sort_char)
-- print unicode category of the first char
- return upper(sort_char) -- use unicode.utf8.upper to make the char uppercase
+ return unicode.utf8.upper(sort_char) -- use unicode.utf8.upper to make the char uppercase
end
end
diff --git a/indexing/xindex/lualatex/xindex-norsk.lua b/indexing/xindex/lualatex/xindex-norsk.lua
index f51d19db0e..91d83a95a2 100644
--- a/indexing/xindex/lualatex/xindex-norsk.lua
+++ b/indexing/xindex/lualatex/xindex-norsk.lua
@@ -10,7 +10,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-no'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-pretty.lua b/indexing/xindex/lualatex/xindex-pretty.lua
index bdf6591ff8..c41ba8c8cc 100644
--- a/indexing/xindex/lualatex/xindex-pretty.lua
+++ b/indexing/xindex/lualatex/xindex-pretty.lua
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-pretty'] = {
- version = 0.55,
+ version = 0.61,
comment = "dump a Lua table for debugging",
author = "Steve Donovan",
copyright = "Steve Donovan",
diff --git a/indexing/xindex/lualatex/xindex-yannis.lua b/indexing/xindex/lualatex/xindex-yannis.lua
index a07d5e2f4d..ebf27cfb75 100644
--- a/indexing/xindex/lualatex/xindex-yannis.lua
+++ b/indexing/xindex/lualatex/xindex-yannis.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-yannis'] = {
- version = 0.55,
+ version = 0.61,
comment = "main configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/scripts/xindex.lua b/indexing/xindex/scripts/xindex.lua
index 041235d289..fd510451ca 100755
--- a/indexing/xindex/scripts/xindex.lua
+++ b/indexing/xindex/scripts/xindex.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
xindex = xindex or { }
- local version = 0.55
+ local version = 0.61
xindex.version = version
--xindex.self = "xindex"
@@ -46,7 +46,7 @@ local args = require ('xindex-lapp') [[
-V,--version
-a,--no_casesensitive
-b,--no_labels
- -c,--config (default cfg)
+ -c,--config (default "")
-e,--escapechar (default ")
-f,--fix_hyperref
-g,--no_pagenumber
@@ -57,7 +57,8 @@ local args = require ('xindex-lapp') [[
-o,--output (default "")
-p,--prefix (default L)
-s,--use_stdin
- -u,--use_UCA
+ -u,--use_UCA no more needed
+ -x,--no_UCA
<files...> (default stdin) .idx file(s)
]]
@@ -170,7 +171,6 @@ end
logFile = io.open(logfilename,"w+")
require('xindex-lib')
-
writeLog(2,"xindex v."..version.." (c) Herbert Voß\n",-1)
writeLog(1,"Verbose level = "..vlevel.."\n",1)
writeLog(2,"Logfile:"..logfilename.."\n",1)
@@ -202,45 +202,13 @@ writeLog(2,"ignore space for sorting: "..tostring(ignoreSpace).."\n",-1)
labelPrefix = args.prefix
writeLog(2,"Label prefix: "..labelPrefix.."\n",-1)
-writeLog(2,"Loading common config file ".."xindex-cfg-common\n",1)
+writeLog(2,"Loading all config files ... \n",1)
+writeLog(2,"Loading common config file ".."xindex-cfg-common\n",1) -- we need config for lang setting
Config_File_Common = kpse.find_file("xindex-cfg-common.lua")
cfg_common = require(Config_File_Common)
-local user_config_file = "xindex-"..args["config"]..".lua"
-print("Local config file is: "..user_config_file)
-writeLog(2,"Loading local config file "..user_config_file,0)
-if kpse.find_file(user_config_file)
- then Config_File = kpse.find_file(user_config_file)
- else print("Cannot find config file with kpse.find_file!!")
-end
-print("\nLocal KPSE config file is: "..Config_File.."\n")
-cfg = require(Config_File)
-writeLog(2," ... done\n",0)
-
--- Create the character list maps for faster sorting
-
-alphabet_lower_map = CreateCharListMap(alphabet_lower)
-alphabet_upper_map = CreateCharListMap(alphabet_upper)
-
-esc_char = args.escapechar
-esc_char2 = esc_char..esc_char
-writeLog(2,"Escapechar = "..esc_char.."\n",1)
-escape_chars = { -- by default " is the escape char
- {esc_char2, '//escaped2//', esc_char },
- {esc_char..'@', '//escapedat//', '@' },
- {esc_char..'|', '//escapedvert//', '|' },
- {esc_char..'!', '//escapedexcl//', '!' },
- {'', '\\textbar', '|' },
- {'', '\\braceLeft', '{' },
- {'', '\\braceRight', '}' }
-}
-
-outFile = io.open(outfilename,"w+")
-
check_language = args["checklang"]
local aux_language = ""
-
-
if check_language then
print("check aux file for unknown language")
-- writeLog(2,'Check language in aux file\n',0)
@@ -287,32 +255,17 @@ else
end
end
---print("Sprache:"..language)
-
-writeLog(2,"Language = "..language.."\n",1)
-if (indexheader[language] == nil) then
- writeLog(2,'Corrected the unknown language "'..language..'" to "en"'.."\n",0)
- language = "en"
-end
-
-index_header = indexheader[language]
-if vlevel > 0 then for i=1,#index_header do writeLog(2,index_header[i].."\n",1) end end
-if (folium[language] == nil) then
- writeLog(2,'Corrected the unknown language "'..language..'" for page folium to "en"'.."\n",0)
- page_folium = folium["en"]
-else
- page_folium = folium[language]
-end
+-- next config is UCA
-use_UCA = args["use_UCA"]
+use_UCA = not args["no_UCA"]
if use_UCA then
writeLog(1,"Will use LUA-UCA\n",1)
ducet = require "lua-uca.lua-uca-ducet"
collator = require "lua-uca.lua-uca-collator"
languages = require "lua-uca.lua-uca-languages"
collator_obj = collator.new(ducet)
-
- local uca_config_file = "xindex-cfg-uca.lua"
+
+ uca_config_file = "xindex-cfg-uca.lua" -- for additional language definition
writeLog(2,"Loading local UCA config file "..uca_config_file,0)
UCA_Config_File = kpse.find_file(uca_config_file)
uca_cfg = require(UCA_Config_File)
@@ -331,11 +284,65 @@ if use_UCA then
print("[Lua-UCA] Loading language: " .. language)
collator_obj = languages[language](collator_obj)
end
+ alphabet_lower_map = {} -- empty tables for UCA sorting
+ alphabet_upper_map = {}
else
writeLog(1,"Will _not_ use LUA-UCA\n",1)
+ -- Create the character list maps for faster sorting if not using UCA
+ writeLog(2,"Loading config file for no UCA".."xindex-cfg-no_uca\n",1)
+ Config_File_UCA = kpse.find_file("xindex-cfg-no_uca.lua")
+ cfg_UCA = require(Config_File_UCA)
+ alphabet_lower_map = CreateCharListMap(alphabet_lower)
+ alphabet_upper_map = CreateCharListMap(alphabet_upper)
+end
+
+-- at last the user config
+
+if args["config"] ~= '""' then
+ local user_config_file = "xindex-"..args["config"]..".lua"
+ print("Local config file is: "..user_config_file)
+ writeLog(2,"Loading local config file "..user_config_file,0)
+ if kpse.find_file(user_config_file) then
+ Config_File = kpse.find_file(user_config_file)
+ else
+ Config_File = ""
+ print("Cannot find config file with kpse.find_file!!")
+ end
+ print("\nLocal KPSE config file is: "..Config_File.."\n")
+ cfg = require(Config_File)
+ writeLog(2," ... done\n",0)
end
-upper = unicode.utf8.upper
+--print("Sprache:"..language)
+
+writeLog(2,"Language = "..language.."\n",1)
+if (indexheader[language] == nil) then
+ writeLog(2,'Corrected the unknown language "'..language..'" to "en"'.."\n",0)
+ language = "en"
+end
+
+index_header = indexheader[language]
+if vlevel > 0 then for i=1,#index_header do writeLog(2,index_header[i].."\n",1) end end
+if (folium[language] == nil) then
+ writeLog(2,'Corrected the unknown language "'..language..'" for page folium to "en"'.."\n",0)
+ page_folium = folium["en"]
+else
+ page_folium = folium[language]
+end
+
+
+esc_char = args.escapechar
+esc_char2 = esc_char..esc_char
+writeLog(2,"Escapechar = "..esc_char.."\n",1)
+escape_chars = { -- by default " is the escape char
+ {esc_char2, '//escaped2//', esc_char },
+ {esc_char..'@', '//escapedat//', '@' },
+ {esc_char..'|', '//escapedvert//', '|' },
+ {esc_char..'!', '//escapedexcl//', '!' },
+ {'', '\\textbar', '|' },
+ {'', '\\braceLeft', '{' },
+ {'', '\\braceRight', '}' }
+}
no_caseSensitive = args["no_casesensitive"]
if no_caseSensitive then