texlive[75954] trunk: xindex (1aug25)

commits+karl at tug.org commits+karl at tug.org
Sat Aug 2 21:52:20 CEST 2025


Revision: 75954
          https://tug.org/svn/texlive?view=revision&revision=75954
Author:   karl
Date:     2025-08-02 21:52:19 +0200 (Sat, 02 Aug 2025)
Log Message:
-----------
xindex (1aug25)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/xindex/xindex.lua
    trunk/Master/texmf-dist/doc/lualatex/xindex/CHANGELOG
    trunk/Master/texmf-dist/doc/lualatex/xindex/Makefile
    trunk/Master/texmf-dist/doc/lualatex/xindex/README.md
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/HADW.ind
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/HADW.pdf
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/Umlaute.pdf
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/Umlaute2.pdf
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/buch.pdf
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo-hyperref.ind
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo-hyperref.pdf
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo.ind
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo.pdf
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo3.pdf
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo4.pdf
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/french.ind
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/french.pdf
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/see.idx
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/see.ind
    trunk/Master/texmf-dist/doc/lualatex/xindex/tests/see.pdf
    trunk/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.pdf
    trunk/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.tex
    trunk/Master/texmf-dist/scripts/xindex/xindex.lua
    trunk/Master/texmf-dist/tex/latex/xindex/xindex.sty
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-no_uca.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-norsk.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-unicode.lua

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-fr.lua

Modified: trunk/Build/source/texk/texlive/linked_scripts/xindex/xindex.lua
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/xindex/xindex.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Build/source/texk/texlive/linked_scripts/xindex/xindex.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -9,7 +9,7 @@
 -----------------------------------------------------------------------
 
         xindex = xindex or { }
- local version = 0.64
+ local version = 1.02
 xindex.version = version
 --xindex.self = "xindex"
 
@@ -57,8 +57,6 @@
     -o,--output (default "")
     -p,--prefix (default L)
     -s,--use_stdin
-    -u,--use_UCA     no more needed
-    -x,--no_UCA
     <files...> (default stdin) .idx file(s)
 ]]
 
@@ -255,45 +253,25 @@
   end
 end
 
--- next config is UCA
+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)
 
-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)
-
-  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)
-  writeLog(2," ... done\n",0)
+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)
+writeLog(2," ... done\n",0)
   
 -- language name specified on the command line doesn't seem to be available
 -- in the config file, so we just try to find it ourselves
-  for i, a in ipairs(arg) do
+for i, a in ipairs(arg) do
     if a == "-l" or a=="--language" then
       language = arg[i+1]
       break
     end
-  end
-
-  if languages[language] 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
@@ -313,6 +291,18 @@
   writeLog(2," ... done\n",0)
 end
 
+-- language can also be set in the config file
+
+if languages[language] 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 = {}
+
+
+
+
 --print("Sprache:"..language)
 
 language = string.lower(language)
@@ -334,7 +324,7 @@
 
 
 esc_char = args.escapechar
-print("Escape char "..esc_char)
+--print("Escape char "..esc_char)
 esc_char2 = esc_char..esc_char  
 writeLog(2,"Escapechar = "..esc_char.."\n",1)
 escape_chars = { -- by default " is the escape char

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/CHANGELOG
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/xindex/CHANGELOG	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/doc/lualatex/xindex/CHANGELOG	2025-08-02 19:52:19 UTC (rev 75954)
@@ -1,4 +1,6 @@
-0.64  2025-01-28 - add UCA conversion table for french
+1.02  2025-08-02 - small fixes 
+1.01  2025-06-29 - allow only UCA conversion tabel for all languages
+0.64  2025-01-28 - add UCA conversion tabel for french
 0.63  2024-11-23 - small fixes
 0.62  2024-10-19 - fix for page intervall, eg.  |(9-9|)->9
 0.61  2024-09-22 - fix for hyperref with \see and \seealso

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/Makefile
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/xindex/Makefile	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/doc/lualatex/xindex/Makefile	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,7 +5,7 @@
 
 MAIN = xindex-doc
 
-LATEX = lualatex
+LATEX = runtexfile
 
 ARCHNAME = $(MAIN)-$(shell date +%y%m%d)
 
@@ -13,17 +13,10 @@
 
 #TDS = ~/PSTricks/PSTricks-TDS
 
-all : doc 
+all : doc clean
 # clean
 doc: 	
-	$(LATEX) --shell-escape --interaction=nonstopmode $(MAIN)
-#	if ! test -f $(MAIN).glo ; then touch $(MAIN).glo; fi
-	if ! test -f $(MAIN).idx ; then touch $(MAIN).idx; fi
-#	makeindex -s gglo.ist -t $(MAIN).glg -o $(MAIN).gls $(MAIN).glo
-	xindex -a $(MAIN).idx
-#	bibtex $(MAIN)
-	$(LATEX) --shell-escape --interaction=nonstopmode $(MAIN)
-	$(LATEX) --shell-escape --interaction=nonstopmode $(MAIN)
+	$(LATEX)  $(MAIN)
 
 clean : 
 	$(RM) *.dvi *.aux *.log  *.xml xindex-?.tex xindex-??.tex *.ind *.idx *.toc *.out *.ilg
@@ -34,18 +27,4 @@
 arch :
 	zip $(ARCHNAME).zip $(ARCHFILES)
 
-tds:
-	cp -u Changes     $(TDS)/doc/latex/$(PACKAGE)/
-	cp -u README      $(TDS)/doc/latex/$(PACKAGE)/
-	cp -u $(MAIN).pdf $(TDS)/doc/latex/$(PACKAGE)/
-#
-	cp -u Changes        $(TDS)/tex/latex/$(PACKAGE)/
-	cp -u $(PACKAGE).sty $(TDS)/tex/latex/$(PACKAGE)/
-#
-	cp -u Changes     $(TDS)/source/$(PACKAGE)/
-	cp -u $(MAIN).tex $(TDS)/source/$(PACKAGE)/
-	cp -u $(MAIN).bib $(TDS)/source/$(PACKAGE)/
-	cp -u Makefile    $(TDS)/source/$(PACKAGE)/
-
-
 # EOF

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/xindex/README.md	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/doc/lualatex/xindex/README.md	2025-08-02 19:52:19 UTC (rev 75954)
@@ -45,8 +45,6 @@
     -o,--output (default "")
     -p,--prefix (default L)
     -s,--use_stdin
-    -u,--use_UCA     no more needed
-    -x,--no_UCA
     <files...> (default stdin) .idx file(s)
 
 Testfiles:

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/HADW.ind
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/xindex/tests/HADW.ind	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/doc/lualatex/xindex/tests/HADW.ind	2025-08-02 19:52:19 UTC (rev 75954)
@@ -1,38 +0,0 @@
-
-\begin{theindex}
-
-\indexspace
-\textbf{A}\label{L-xindex-A}
-\nopagebreak[4]
-  \item Aachen, Johannes von \dotfill  {\colorbox{black!15}{VII/1}:~215}
-  \item Aarones \dotfill  {\colorbox{black!15}{VII/2/1}:~1003}, {1012}
-  \item Abrahamson \dotfill  {\colorbox{black!15}{VII/2/1}:~864}, {991}, {1048}, {1067}, {1156}
-  \item Adamson \dotfill  {\colorbox{black!15}{VII/2/1}:~1223}, {\colorbox{black!15}{IX/1}:~1228}
-  \item Adrian
-    \subitem -\,Hauster \dotfill  {\colorbox{black!15}{VII/1}:~514}, {\colorbox{black!15}{XI/1}:~515}
-  \item Alting
-    \subitem -\,Mensa \dotfill  {\colorbox{black!15}{VII/1}:~426}, {434}, {453}, {455}, {466f.}
-
-\indexspace
-\textbf{B}\label{L-xindex-B}
-\nopagebreak[4]
-  \item Bremen
-    \subitem -\,Heinz von, Erzbischof \dotfill  \see{Sachsen-Lauenburg}{ }
-
-\indexspace
-\textbf{O}\label{L-xindex-O}
-\nopagebreak[4]
-  \item Osnabrück
-    \subitem -\,Heinz  von, Bischof \dotfill  \see{Sachsen-Lauenburg}{ }
-
-\indexspace
-\textbf{S}\label{L-xindex-S}
-\nopagebreak[4]
-  \item Schleswig-Holstein
-    \subitem -\,Rudolf von, Herzog \dotfill  {\colorbox{black!15}{VII/2/1}:~758--761}, {765}
-
-\indexspace
-\textbf{Z}\label{L-xindex-Z}
-\nopagebreak[4]
-  \item Zwingl, Haldrich \dotfill  {\colorbox{black!15}{IX}:~479}, {692}
-\end{theindex}

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/HADW.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/Umlaute.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/Umlaute2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/buch.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo-hyperref.ind
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo-hyperref.ind	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo-hyperref.ind	2025-08-02 19:52:19 UTC (rev 75954)
@@ -36,5 +36,5 @@
   \item demnach, \hyperpage{35}, \hyperpage{38}
   \item Demonstration, \hyperpage{29}, \hyperpage{35}
   \item den, \hyperpage{46}
-  \item der, \hyperpage{15}, \hyperpage{18\nohyperpage{f}}, \hyperpage{28\nohyperpage{f}}, \hyperpage{34}, \hyperpage{37}, \hyperpage{41}
+  \item der, \hyperpage{15}, \hyperpage{18\nohyperpage{f}}, \hyperpage{28\nohyperpage{f}}, \hyperpage{31}, \hyperpage{34}, \hyperpage{37}, \hyperpage{41}
 \end{theindex}

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo-hyperref.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo.ind
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo.ind	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo.ind	2025-08-02 19:52:19 UTC (rev 75954)
@@ -48,7 +48,7 @@
   \item demnach, {35}, {38}
   \item Demonstration, {29}, {35}
   \item den, {46}
-  \item der, {15}, {18f}, {28f}, {34}, {37}, {41}
+  \item der, {15}, {18f}, {28f}, {31}, {34}, {37}, {41}
 
 \indexspace
 \textbf{O}\label{L-xindex-O}

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/demo4.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/french.ind
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/xindex/tests/french.ind	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/doc/lualatex/xindex/tests/french.ind	2025-08-02 19:52:19 UTC (rev 75954)
@@ -16,7 +16,6 @@
   \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}
@@ -32,6 +31,7 @@
   \item Côté, {1}
   \item CÔTÉ, {1}
   \item coté, {2}
+  \item cœur, {1}
 
 \indexspace
 \textbf{E}\label{L-xindex-E}

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/french.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/see.idx
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/xindex/tests/see.idx	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/doc/lualatex/xindex/tests/see.idx	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,11 +5,11 @@
 \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{marriage|hyperxindexformat{\seealso{usus}}}{5}
+\indexentry{marriage|hyperxindexformat{\seealso{coemptio}}}{6}
+\indexentry{marriage|hyperxindexformat{\seealso{confarreatio}}}{6}
 \indexentry{"|hyperpage}{7}
 \indexentry{foo"|hyperpage}{8}
-\indexentry{comemp|hyperindexformat{\seealso{coemptio}}}{9}
+\indexentry{comemp|hyperxindexformat{\seealso{coemptio}}}{9}
 \indexentry{com"|hyperpage}{9}
-\indexentry{com|hyperindexformat{\seealso{coemptio}}}{9}
+\indexentry{com|hyperxindexformat{\seealso{coemptio}}}{9}

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/see.ind
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/xindex/tests/see.ind	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/doc/lualatex/xindex/tests/see.ind	2025-08-02 19:52:19 UTC (rev 75954)
@@ -9,8 +9,8 @@
 \nopagebreak[4]
   \item coemptio, \hyperpage{3}
   \item com", \hyperpage{9}
-  \item com, \hyperindexformat{\seealso{coemptio}}{9}
-  \item comemp, \hyperindexformat{\seealso{coemptio}}{9}
+  \item com, \hyperpage{9}
+  \item comemp, \hyperpage{9}
   \item confarreatio, \hyperpage{2}
 
 \indexspace
@@ -21,7 +21,7 @@
 \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}
+  \item marriage, \hyperpage{3\nohyperpage{ff}}, \hyperpage{5}, \hyperpage{6}, \hyperpage{6}
 
 \indexspace
 \textbf{U}\label{L-xindex-U}

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/tests/see.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.tex	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.tex	2025-08-02 19:52:19 UTC (rev 75954)
@@ -1,37 +1,42 @@
-%% $Id: xindex-doc.tex 22 2022-02-07 12:18:15Z hvoss $
+%! HV lualatex
+%! HV xindex
+%! HV lualatex
+%! HV lualatex
+
+%% $Id: xindex-doc.tex 2 2025-08-02 11:30:20Z herbert $
 %
 \listfiles\setcounter{errorcontextlines}{100}
-\documentclass[paper=a4,fontsize=11pt,DIV=14,parskip=half-,
-               captions=tableabove,twoside=on]{scrartcl}
+\documentclass[fontsize=11pt,parskip=half-,
+               captions=tableabove,twoside=on,usegeometry]{scrartcl}
 \usepackage{fontspec}
-%\usepackage{libertinus-otf}
 \setmainfont{AccanthisADFStdNo3}[
-  UprightFont   =*-Regular,
-  BoldFont      =*-Bold,
-  ItalicFont    =*-Italic,
-  BoldItalicFont=*-BoldItalic,
+  UprightFont   = *-Regular,
+  BoldFont      = *-Bold,
+  ItalicFont    = *-Italic,
+  BoldItalicFont= *-BoldItalic,
   RawFeature    = -rlig,
 ]
 \setsansfont{GilliusADF}[
-  UprightFont   =*-Regular,
-  BoldFont      =*-Bold,
-  ItalicFont    =*-Italic,
-  BoldItalicFont=*-BoldItalic,
-  RawFeature    = -rlig,
+  UprightFont   = *-Regular,
+  BoldFont      = *-Bold,
+  ItalicFont    = *-Italic,
+  BoldItalicFont= *-BoldItalic,
+  RawFeature    =  -rlig,
 ]
-\setmonofont{DejaVu Sans Mono}[Scale=MatchLowercase,FakeStretch=0.9]
 \newfontfamily\DejaVuMono[Scale=MatchLowercase,FakeStretch=0.9]{DejaVu Sans Mono}
-%\setmonofont{Anonymous Pro}[Scale=MatchLowercase,FakeStretch=0.9]
-
+\usepackage{juliamono}
 \newfontfamily\Japanese[Scale=MatchUppercase]{SourceHanSans}
 \newfontfamily\CODE{CODE2000}
 
 \usepackage[english]{babel}
-\usepackage{scrlayer-scrpage}
-\automark[section]{section}
-\automark*[subsection]{}
-\pagestyle{scrheadings}
+\usepackage[a4paper,twoside,
+    outer=2cm,
+    inner=1cm,tmargin=5mm,bmargin=1cm,
+    includeheadfoot]{geometry} %,scrlayer-scrpage}
 
+\usepackage{fancyhdr}
+\pagestyle{fancy}
+
 {\catcode`\%=12 
  \gdef\perCent{%}
  \gdef\DoubleperCent{%%}
@@ -46,6 +51,7 @@
 \usepackage{ragged2e}
 \usepackage{makeidx}\makeindex
 \usepackage{hvindex}
+\usepackage{pdflscape,multicol}
 \def\Lfile#1{\texttt{#1}\index{#1 file@\texttt{#1} file}}
 \def\Lext#1{\texttt{.#1}\index{#1 file extension@\texttt{.#1} file extension}}
 \def\Lcs#1{\texttt{\textbackslash#1}\index{#1@\texttt{\textbackslash#1}}}
@@ -81,10 +87,8 @@
 \def\setVersion#1{\setVVersion#1!!}
 \def\setVVersion#1=#2!!{\def\xIndexVersion{#2}} 
 
-\setVersion{version = 0.64}%  can be automatically changed by perl
+\setVersion{version = 1.02}%  can be automatically changed by perl
 
-
-
 \title{Program and package \texttt{xindex} \\--\\ \normalsize \xIndexVersion\ (\today)}
 \author{\shortstack{Herbert Voß\\\small \href{mailto:hvoss at tug.org}{hvoss at tug.org}}}
 \date{}
@@ -92,7 +96,7 @@
 \maketitle
 \thispagestyle{empty}
 %\enlargethispage{1cm}
-\tableofcontents
+\minipage{\textwidth}\tableofcontents\endminipage
 
 \begin{noteblock}
 \raggedright
@@ -117,7 +121,7 @@
 Simon Spiegel;
 Jürgen Spitzmüller;
 \end{noteblock}
-\clearpage
+%\clearpage
 
 \section{Introduction}
 The Lua program
@@ -189,7 +193,6 @@
     [-o,--output ]                        default is <input>.ind
     [-p,--prefix]                         default L
     [-s,--use_stdin ]                     default is false
-    [-x,--no_UCA ]                        default is false    
     <files...> (default stdin) file(s)[.idx]   one or more files
 \end{verbatim}
 
@@ -266,7 +269,9 @@
 \fi
 
 
-\setkeys{hv}{moveToExampleDir=true,ExampleDir=Examples,cleanup={},verbose,force=false,shellesc}
+\setkeys{hv}{moveToExampleDir=true,ExampleDir=Examples,
+  cleanup={},verbose,force=false,ext=tex,
+  progpath=/Library/TeX/texbin/}
 
 
 \begin{externalDocument}[
@@ -273,15 +278,20 @@
 %  grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
   pages={1,2},
   frame,
-  compiler=lualatex,
+  compiler=runtexfile,
   crop,
-  xindex,
-  xindexOptions=-l fr, 
-  runs=2,code,docType=latex,
+%  xindex,
+%  xindexOptions=-l fr, 
+%  runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
-%! lualatex
+%! HV lualatex 
+%! HV xindex -l fr
+%! HV lualatex 
+%! HV lualatex 
+
 \documentclass{scrartcl}
 \usepackage{multicol}
 \makeatletter
@@ -317,57 +327,6 @@
 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 (option \Loption{-x}):
-
-
-\begin{externalDocument}[
-%  grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
-  pages={1,2},
-  frame,
-  compiler=lualatex,
-  crop,
-  xindex,
-  xindexOptions=-x,  % do not use unicode
-  runs=2,code,docType=latex,
-  showFilename,
-  align=\centering,
-  lstOptions={columns=fixed}]{xindex}
-%! lualatex
-%! xindex  (no unicode sort -- simple ascii)
-\documentclass{scrartcl}
-\usepackage{multicol}
-\makeatletter
-\renewenvironment{theindex}{%    only for demonstration
-  \begin{multicols}{2}[\section*{\indexname}]
-  \parskip\z@ \@plus .3\p@\relax \parindent\z@
-  \let\item\@idxitem}{\end{multicols}}
-\makeatother
-%StartVisiblePreamble
-\usepackage{makeidx}\makeindex
-\usepackage{xindex}% for \braceLeft|\braceRight
-%StopVisiblePreamble
-\pagestyle{empty}
-\begin{document}
-\section{Escaping characters}
-\begin{itemize}
-\item Exclamation mark ! \index{Exclamation ("!)}\index{"!}
-\item Vertical bar | \index{Vertical bar ("|)}\index{"|}
-\item Doublequote \verb|"| \index{""}
-\item Double doublequote \verb|""| \index{""""}
-\item At character @ \index{At ("@)}\index{"@}
-\item Left paranthesis \{ \index{\braceLeft}
-\item Right paranthesis \}  \index{\braceRight}
-\end{itemize}
-run \texttt{xindex -x <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
-\index{Etage} \index{Ètagé}
-\twocolumn
-\printindex
-\end{document}
-\end{externalDocument}
-
-
-
-
 For the German language the double quote is an active character and it makes life easier
 if one chooses another character.
 The escape character can be changed easily by the optional argument \verb|-e "<char>"| or 
@@ -381,11 +340,12 @@
 The two characters \verb|{}| cannot be used as \verb|\{\}| inside the argument of \Lcs{index}.
 The package \Lpack{xindex} defines the two helper macros 
 
-\begin{verbatim}
-\providecommand\braceLeft{\{}
-\providecommand\braceRight{\}}
-\end{verbatim}
 
+\begin{importantblock}\ttfamily
+\Lcs{providecommand}\Lcs{braceLeft}\Largb{\Lcs{\{}}\newline
+\Lcs{providecommand}\Lcs{braceRight}\Largb{\Lcs{\}}}
+\end{importantblock}
+
 The following example shows how to use it:
 
 \begin{externalDocument}[
@@ -392,15 +352,19 @@
 %  grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
   pages={1,2},
   frame,
-  compiler=lualatex,
+  compiler=runtexfile,
   crop,
-  xindex,
-  xindexOptions=-e ">" -n,
-  runs=2,code,docType=latex,
+%  xindex,
+%  xindexOptions=-e ">" -n,
+%  runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
-%! lualatex
+%! HV lualatex
+%! HV xindex -e ">" -n
+%! HV lualatex
+%! HV lualatex
 \documentclass{scrartcl}
 \makeatletter
 \def\theindex{%    only for demonstration
@@ -431,6 +395,8 @@
 \end{externalDocument}
 
 
+
+
 \section{Language}\label{language}
 
 The \Index{language} is only important for the first two headers in the output of the index data.
@@ -462,15 +428,20 @@
 %  grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
   pages={1,2},
   frame,
-  compiler=lualatex,
+  compiler=runtexfile,
   crop,
-  xindex,
-  xindexOptions=-l it -e ">",
-  runs=2,code,docType=latex,
+%  xindex,
+%  xindexOptions=-l it -e ">",
+%  runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
-%! lualatex
+%! HV lualatex
+%! HV xindex -l it -e ">"
+%! HV lualatex
+%! HV lualatex
+
 \documentclass{scrartcl}
 \usepackage[italian]{babel}
 \usepackage{multicol}
@@ -508,15 +479,19 @@
 %  grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
   pages={1,2},
   frame,
-  compiler=lualatex,
+  compiler=runtexfile,
   crop,
-  xindex,
-  xindexOptions=-k -e "?",
-  runs=2,code,docType=latex,
+%  xindex,
+%  xindexOptions=-k -e "?",
+  %runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
-%! lualatex
+%! HV lualatex
+%! HV xindex -k -e "?"
+%! HV lualatex
+%! HV lualatex
 \documentclass{scrartcl}
 \usepackage{multicol}
 \makeatletter
@@ -547,27 +522,31 @@
 
 %Instead of using \verb|-l *| one can also use the parameter \verb|-k| or \verb|--checklang|.
 
+\clearpage
 
 For the Russian language you have to choose the language and the config file.
 This allows to have different indexes with different language.
 
 
-
 \begin{externalDocument}[
 %  grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
   pages={1},
   frame,
-  compiler=lualatex,
+  compiler=runtexfile,
   crop,
-  xindex,
-  xindexOptions=-l RU -c RU -n,
-  runs=2,code,docType=latex,
+%  xindex,
+%  xindexOptions=-l RU -c RU -n,
+%  runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
   usefancyvrb,
 %  lstOptions={columns=fixed}
 ]{xindex}
-%! lualatex
+%! HV lualatex
+%! HV xindex -l RU -c RU -n
+%! HV lualatex
+%! HV lualatex
 \documentclass{scrartcl}
 \usepackage{multicol}
 \makeatletter
@@ -614,16 +593,13 @@
 \clearpage
 
 
-\section{Sorting}
-
-
-
-\subsection{Default sorting by the UCA (Unicode Collection Algorithm)}
+\section{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, 
+\begin{noteblock}
+\ttfamily af, 
 am, 
 ar, 
 as, 
@@ -730,7 +706,8 @@
 yi, 
 yo, 
 zh, 
-zu}
+zu
+\end{noteblock}
 
 
 
@@ -737,30 +714,30 @@
 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}.
+by \Lprog{xindex}. Language-specific sorting orders can also be defined in a config file.
 
-\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,
+  compiler=runtexfile,
   crop,
-  xindex,
-  xindexOptions=-l cs,
-  runs=2,code,docType=latex,
+%  xindex,
+%  xindexOptions=-l cs,
+%  runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
   usefancyvrb,
 %  lstOptions={columns=fixed}
 ]{xindex}
-%! lualatex
+%! HV lualatex
+%! HV xindex -l cs
+%! HV lualatex
+%! HV lualatex
+
 \documentclass[paper=a6]{scrartcl}
 \makeatletter
 \def\theindex{%    only for demonstration
@@ -809,110 +786,35 @@
 config file and load it with \texttt{-c}.
 
 
-\subsection{Default sorting by a character table}
-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 sorting
-has to be choosen 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 one wants to use an own transformation table, then use something like:
-
-\begin{verbatim}
-alphabet_lower = { --   for sorting
-    { ' ' },  -- only for internal tests
-    { 'a', 'á', 'à', 'ä'},
-    { 'b' },
-    { 'c' },
-    { 'd' },
-    { 'e', 'é', 'è', 'ë' },
-    { 'f' },
-    { 'g' },
-    { 'h' },
-    { 'i', 'í', 'ì', 'ï' },
-    { 'j' },
-    { 'k' },
-    { 'l' },
-    { 'm' },
-    { 'n', 'ñ' },
-    { 'o', 'ó', 'ò', 'ö' },
-    { 'p' },
-    { 'q' },
-    { 'r' },
-    { 's' },
-    { 't' },
-    { 'u', 'ú', 'ù', 'ü' },
-    { 'v' },
-    { 'w' },
-    { 'x' },
-    { 'y' },
-    { 'z' }
-}
-\end{verbatim}
-
-There is also a table for the uppercase letters. If it should be edited or extended then first copy  the
-base configuration file \Lfile{xindex-cfg.lua} and modify that new file. It can be used by \XI
-with the optional argument \texttt{-c newfile} if it is named as \Lfile{xindex-newfile.lua}. 
-For German there already exists a configuration
-file \Lfile{xindex-DIN2.lua} which uses the so-called »Telefonbuchsortierung« which converts 
-the umlauts like ö$\rightarrow$oe:
-
-\begin{verbatim}
-alphabet_upper = { -- for sorting
-    { ' ' },
-    { 'A', 'Á', 'À', 'Ä'},
-    { 'B' },
-    { 'C' },
-    { 'D' },
-    { 'E', 'È', 'È', 'ë' },
-    { 'F' },
-    { 'G' },
-    { 'H' },
-    { 'I', 'Í', 'Ì', 'ï' },
-    { 'J' },
-    { 'K' },
-    { 'L' },
-    { 'M' },
-    { 'N', 'Ñ' },
-    { 'O', 'Ó', 'Ò', 'Ö' },
-    { 'P' },
-    { 'Q' },
-    { 'R' },
-    { 'S' },
-    { 'T' },
-    { 'U', 'Ú', 'Ù', 'Ü' },
-    { 'V' },
-    { 'W' },
-    { 'X' },
-    { 'Y' },
-    { 'Z' }
-}
-\end{verbatim}
-
-
 \subsection{Examples}
-\subsubsection{German language and no UCA}
+\subsubsection{French language}
 
 \begin{externalDocument}[
   grfOptions={scale=0.9},%width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
-  mpwidth=0.4\linewidth,
-  pages={2},
+%  mpwidth=0.45\linewidth,
+  pages={4},
   frame=false,
-  compiler=lualatex,
+  force=true,
+  compiler=runtexfile,
   crop,
-  xindex,
-  xindexOptions=-l de -x,
-  runs=2,code,docType=latex,
+%  xindex,
+%  xindexOptions=-k, % detect lang (french) and UCA
+%  runs=2,
+  code,docType=latex,
   showFilename,
   usefancyvrb,
   align=\centering,
 %  lstOptions={columns=fixed}
 ]{xindex}
-%! lualatex
-\documentclass[paper=a5]{scrartcl}
-\usepackage[ngerman]{babel}
+%! HV lualatex
+%! HV xindex -k 
+%! HV lualatex
+%! HV lualatex
+\documentclass[paper=a4]{scrartcl}
+\usepackage[french]{babel}
 %StartVisiblePreamble
 \usepackage{makeidx}\makeindex
-\newcommand\Index[1]{\index{#1}#1}
+\usepackage{hvindex}
 %StopVisiblePreamble
 \usepackage{multicol}
 \makeatletter
@@ -919,7 +821,7 @@
 \def\theindex{%    only for demonstration
   \newpage
   \section*{\indexname}
-  \begin{multicols}{2}
+  \begin{multicols}{3}
   \parskip\z@ \@plus .3\p@\relax \parindent\z@
   \let\item\@idxitem}
 \def\endtheindex{\end{multicols}}
@@ -926,97 +828,39 @@
 \makeatother
 \pagestyle{empty}
 \begin{document}
-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}
-
+\Index{CÔTÉ} \Index{cote} \Index{Côté} \Index{COTÉ} \Index{côte} \Index{COTE} 
+\Index{côté} \Index{Coté} \Index{coté} \Index{Cote} \Index{CÔTE} \Index{Côte} 
+\Index{lésé} \Index{péché}\Index{bohème} \Index{gêné} \Index{pêche} \Index{cæsium}
+\Index{pêcher} \Index{révèle} \Index{pécher} \Index{révélé} \Index{Bohême} \Index{relève} 
+\Index{PÉCHÉ} \Index{maçon} \Index{relevé} \Index{Élève} \Index{gêne} \Index{élevé}
+\Index{MÂCON} \Index{gène} \Index{Bohémien} \Index{caennais} \Index{lèse} 
+\Index{coexistence} \Index{cœur} \Index{coefficient} \Index{cafard} 
+\Index{CŒUR} \Index{CÆSIUM} \newpage \Index{coté} \Index{cœur} \Index{péché} \newpage
+\Index{coté}\Index{coefficient}
 \printindex
 \end{document}
 \end{externalDocument}
 
 
-\subsubsection{German language (DIN2) and no UCA}
+\begin{landscape}
 
-In this case a letter Ö, Ä, Ü, ö, ä, ü is converted to Oe, Ae, Ue, oe, ae, ue before sorting:
+\pagestyle{plain}
+\begin{multicols}{2}
+\subsubsection{German language}
 
-\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|
+The default sorting where Umlauts are identical to the base latter: ö$\rightarrow$o
+and »ß$\rightarrow$s«
 
-\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}
-
-
-\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,
+  compiler=runtexfile,
+%  force=true,
   crop,
-  xindex,
-  xindexOptions=-l de, % german and UCA
+%  xindex,
+%  xindexOptions=-l de,
   runs=2,code,docType=latex,
   showFilename,
   usefancyvrb,
@@ -1023,8 +867,11 @@
   align=\centering,
 %  lstOptions={columns=fixed}
 ]{xindex}
-%! lualatex
-\documentclass[paper=a5]{scrartcl}
+%! HV lualatex
+%! HV xindex -l de
+%! HV lualatex
+%! HV lualatex
+\documentclass[paper=a6]{scrartcl}
 \usepackage[ngerman]{babel}
 %StartVisiblePreamble
 \usepackage{makeidx}\makeindex
@@ -1042,7 +889,7 @@
 \makeatother
 \pagestyle{empty}
 \begin{document}
-Sorted with \verb|-l DE| and using UCA\par
+Sorted with \verb|-l DE |\par
 \Index{Österreich} \Index{Öresund} 
 \Index{Ostern} \Index{Ober} 
 \Index{Oberin} \Index{Österreich} 
@@ -1056,18 +903,23 @@
 \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. 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:
+\vfill
+\subsubsection{German language (DIN2)}
+The same sorted with the language setting »German DIN variant 2«, which can be set. 
+with \verb|--language de_din2| or \verb|l de_din2|. Umlauts are now converted into
+»ö$\rightarrow$oe« and »ß$\rightarrow$ss«: 
 
+%\newpage
+
+
+
 \noindent
 \begin{externalDocument}[
   grfOptions={scale=0.9},%width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
@@ -1075,14 +927,15 @@
   pages={2},
   frame=false,compiler=lualatex,
   crop,
+%  force=true,
   xindex,
-  xindexOptions=-c DIN2 -l DE,
+  xindexOptions=-l de_din2,
   runs=2,code,docType=latex,
   showFilename,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
 %! lualatex
-\documentclass[paper=a5]{scrartcl}
+\documentclass[paper=a6]{scrartcl}
 \usepackage[ngerman]{babel}
 %StartVisiblePreamble
 \usepackage{makeidx}\makeindex
@@ -1101,7 +954,7 @@
 \pagestyle{empty}
 \begin{document}
 Sorted with 
-\verb|--config DIN2 -l DE|
+\verb|-l de_din2|
 
 \Index{Österreich} \Index{Öresund} 
 \Index{Ostern} \Index{Ober} 
@@ -1120,75 +973,14 @@
 \printindex
 \end{document}
 \end{externalDocument}
+\end{multicols}
 
+\end{landscape}
 
-\clearpage%%%%%%%%%%%
 
-\subsubsection{french language with UCA}
+\subsubsection{Japanese language}
 
-\begin{externalDocument}[
-  grfOptions={scale=0.9},%width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
-  mpwidth=0.4\linewidth,
-  pages={4},
-  frame=false,
-  compiler=lualatex,
-  crop,
-  xindex,
-  xindexOptions=-k, % detect lang (french) and UCA
-  runs=2,
-  code,docType=latex,
-  showFilename,
-  usefancyvrb,
-  align=\centering,
-%  lstOptions={columns=fixed}
-]{xindex}
-%! lualatex
-\documentclass[paper=a5]{scrartcl}
-\usepackage[french]{babel}
-%StartVisiblePreamble
-\usepackage[makeidx]{hvindex}
-%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}
-\Index{CÔTÉ} \Index{cote} \Index{Côté} 
-\Index{COTÉ} \Index{côte} \Index{COTE} 
-\Index{côté} \Index{Coté} \Index{coté} 
-\Index{Cote} \Index{CÔTE} \Index{Côte} 
-\Index{lésé} \Index{péché}\Index{bohème} 
-\Index{gêné} \Index{pêche} \Index{cæsium}
-\Index{pêcher} \Index{révèle} 
-\Index{pécher} \Index{révélé}
-\Index{Bohême} \Index{relève} 
-\Index{PÉCHÉ} \Index{maçon}
-\Index{relevé} \Index{Élève} 
-\Index{gêne} \Index{élevé}
-\Index{MÂCON} \Index{gène} 
-\Index{Bohémien} \Index{caennais}
-\Index{lèse} \Index{coexistence} 
-\Index{cœur} \Index{coefficient} 
-\Index{cafard} \Index{CŒUR} 
-\Index{CÆSIUM} \newpage \Index{coté} 
-\Index{cœur} \Index{péché} \newpage
-\Index{coté}\Index{coefficient}
-\printindex
-\end{document}
-\end{externalDocument}
 
-\clearpage
-
-\subsubsection{Japanese language with UCA}
-
-
 The following runs with \verb|xindex -l jp <file>|:
 
 %  {begin\string{document\string}}%       #2
@@ -1322,7 +1114,6 @@
 \end{externalDocument}
 
 
-
 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.
 
@@ -1375,12 +1166,6 @@
 \end{document}
 \end{externalDocument}
 
-
-
-
-
-
-
 \subsection{Ignore space for sorting}
 By default »\textsf{alpha sort}« will be sorted \emph{before} »\textsf{alphaA}«:
 
@@ -1472,33 +1257,31 @@
 The so-called folio abbreviation is language dependent and defined in the
 file \Lfile{xindex-cfg-common.cfg}:
 
-{\setsansfont[Scale=MatchUppercase]{SourceHanSans}
-\small
-\begin{Verbatim}[fontfamily=helvetica]
-folium = { 
-  cs = {"f.", "ff."},
-  da = {"f", "ff"},
-  de = {"f", "ff"},
-  en = {"f", "ff"},
-  es = {"f", "ff"},
-  fr = {"\\,sq.","\\,sqq."},
-  it = {"f", "ff"},
-  jp = {"シンボル","番号"},
-  no = {"\\,f.","\\,ff."},
-}
-\end{Verbatim}
-}
+%\begin{Verbatim}[commandchars={![]}]
+\verb|folium = {|\\
+\verb|  cs = {"f.", "ff."},|\\
+\verb|  da = {"f", "ff"},|\\
+\verb|  de = {"f", "ff"},|\\
+\verb|  en = {"f", "ff"},|\\
+\verb|  es = {"f", "ff"},|\\
+\verb|  fr = {"\\,sq.","\\,sqq."}|,\\
+\verb|  it = {"f", "ff"}|,\\
+  {\Japanese\small~~ jp = \{"シンボル","番号"\}},\\
+\verb|  no = {"\\,f.","\\,ff."},|
+%\end{Verbatim}
 
+
+\rmfamily
 \begin{externalDocument}[
 %  grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
   mpwidth=0.55\linewidth,
   pages={6},
   frame=false,
-  compiler=lualatex,
+  compiler=runtexcode,
   crop,
-  xindex,
-  xindexOptions=-l fr,
-  runs=2,
+%  xindex,
+%  xindexOptions=-l fr,
+%  runs=2,
   code,docType=latex,
   showFilename,
 %  runsequence={lualatex,{xindex -l fr},lualatex,lualatex},
@@ -1505,7 +1288,10 @@
 %  shellesc=false,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
-%! lualatex
+%! HV lualatex
+%! HV xindex -l fr
+%! HV lualatex
+%! HV lualatex
 \documentclass{scrartcl}
 \makeatletter
 \def\theindex{%    only for demonstration
@@ -1588,7 +1374,7 @@
 to the long form \verb|--no_pagenumber|. The following example uses an own config file for
 the definition of the \Lenv{description} environment:
 
-\begin{verbatim}
+\begin{Verbatim}
 itemPageDelimiter = ""     
 compressPages     = true   
 fCompress         = false  
@@ -1605,7 +1391,7 @@
                      \\makeatother\z
                      \\itemsep 0.1ex" -- commands after envStart
 envStop           = "\\end{description}"
-\end{verbatim}
+\end{Verbatim}
 
 \begin{externalDocument}[
 %  grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
@@ -1612,12 +1398,12 @@
 %  mpwidth=0.55\linewidth,
   pages={2,3},
   frame=true,
-  compiler=lualatex,
+  compiler=runtexfile,
   verbose,
-  shellesc,
+%  shellesc,
 %  xindex,
 %  xindexOptions=-c description -g, 
-  runs=2,
+%  runs=2,
   code,docType=latex,
  %xindex -c description -n -g xindex-17.idx
  %xindex -c description -n --no_pagenumber gls.idx
@@ -1628,7 +1414,11 @@
   usefancyvrb,
   %lstOptions={columns=fixed}
   ]{xindex}
-%! lualatex
+%! HV lualatex --shell-escape
+%! HV xindex -c description -n -g 
+%! HV xindex -c description -n --no_pagenumber gls.idx
+%! HV lualatex --shell-escape
+%! HV lualatex --shell-escape
 \documentclass{article}
 \usepackage[a5paper]{geometry}
 \usepackage{libertinus}
@@ -1651,18 +1441,15 @@
 idxnewletter      = "\\textbf"  -- Only valid if -n is not set
 envStart          = "\\begin{description}"  
 indexOpening      = "\\makeatletter\z
-							\\def\\subitem{\\@idxitem} \\def\\subsubitem{\\@idxitem} \\def\\subsubsubitem{\\@idxitem}\z
-							\\makeatother\z
-							\\itemsep 0.1ex" -- commands after envStart
-envStop           = "\\end{description}"
-
-alphabet_lower = { { 'е', 'ё' } }
-alphabet_upper = { { 'Е', 'Ё' } }
+    \\def\\subitem{\\@idxitem} \\def\\subsubitem{\\@idxitem} \\def\\subsubsubitem{\\@idxitem}\z
+    \\makeatother\z
+    \\itemsep 0.1ex" -- commands after envStart
+    envStop           = "\\end{description}"
 \end{filecontents}
 %xindex -c description -n --no_pagenumber gls.idx
 %StartVisiblePreamble
 \usepackage[english]{babel}
-\usepackage[imakeidx]{xindex}%  run xindex internally
+\usepackage[noautomatic]{imakeidx}
 \makeindex
 \makeindex[name=gls, options= -c description -n --no_pagenumber]
 %StopVisiblePreamble
@@ -1725,13 +1512,14 @@
 and the file extension \Lext{lua}, for example: \Lfile{xindex-HAdW-eKO.lua} which can be used
 with \verb|--config HAdW-eKO|. The file must be saved in the documents directory or in
 one which is known to \Lprog{kpsewhich}, for example\footnote{The directory \texttt{xindex} must be created
-before saving the file.} \verb|$TEXMFLOCAL/tex/lualatex/xindex/| %$
+before saving the file.} \newline
+\verb|$TEXMFLOCAL/tex/lualatex/xindex/| %$
 Do not forget to update the filename database.
 
 A new config file must declare at least the variables which are part of the
 default config file: the translation tables and
 
-\begin{verbatim}
+\begin{Verbatim}
 itemPageDelimiter = ","     -- Hello, 14
 compressPages     = true    
   -- something like 12--15, instead of 12,13,14,15. the |( ... |) syntax is still valid
@@ -1743,7 +1531,7 @@
    -- for the sub(sub(sub-items, first one is empty
 pageNoPrefixDel   = ""     -- a delimiter for page numbers like "VI-17"  -- not used !!!
 indexOpening      = ""     -- commands/text after \begin{theindex}
-\end{verbatim}
+\end{Verbatim}
 
 The new config file can define own functions for compressing the pagelist
 for a given entry and for the formatting of the output. They must be called 
@@ -1753,7 +1541,7 @@
 
 For example:
 
-\begin{verbatim}
+\begin{Verbatim}
 function specialCompressPageList(pages)
   if (pages[1]["number"] == "") then pages[1]["number"] = " " end
   if (#pages <= 1) then 
@@ -1787,7 +1575,7 @@
     return pages
   end
 end
-\end{verbatim}
+\end{Verbatim}
 
 The above code 
 is a special function which can handle \Index{page number}s like VII-17, VIII/2/1-186.
@@ -1901,7 +1689,7 @@
 
 The \Index{config file} \Lfile{xindex-dtk.lua} defines a special page output:
 
-\begin{verbatim}
+\begin{Verbatim}
 function specialGetPageList(v,hyperpage)  -- Entry table, boolean
   local Pages = {}
 [..]
@@ -1918,16 +1706,16 @@
         end
 [..]
 end
-\end{verbatim}
+\end{Verbatim}
 
 
 The following example runs \verb|xindex -c dtk -l de -n <input>| and the \Lext{idx} file looks like
 
-\begin{verbatim}
+\begin{Verbatim}
 \indexentry{BährendtsenElke at Elke Bährendtsen!\Email {elke"@xyz.de}}{14}
 \indexentry{JacekJonasson Jared at Jonasson Jared Jazek!\Email {mail"@jones.net}}{20}
 [...]
-\end{verbatim}
+\end{Verbatim}
 
 \begin{externalDocument}[
   grfOptions={scale=0.9},% width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
@@ -1934,16 +1722,21 @@
 %  mpwidth=0.25\linewidth,
   pages={1},
   frame=false,
-  compiler=lualatex,
+  compiler=runtexfile,
   crop,
-  xindex,
-  xindexOptions=-c dtk -n -l de,
-  runs=2,code,docType=latex,
-  runsAfter=2,
+  force=true,
+  %xindex,
+  %xindexOptions=-c dtk -n -l de,
+  %runs=2,
+  code,docType=latex,
+  %runsAfter=2,
   showFilename,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
-%! lualatex
+%! HV lualatex
+%! HV xindex -c dtk -n -l de
+%! HV lualatex
+%! HV lualatex
 \begin{filecontents}[force,noheader]{\jobname.idx}
 \indexentry{VoßHerbert at Herbert Voß!Wasgensteig 12\protect \\10127 Potsdam\protect \\\Email {herbert"@xyz.de}}{3}
 \indexentry{SeversMarkus at Markus Severs!siehe Seite~\protect \pageref  {president}}{4}
@@ -1957,6 +1750,7 @@
 \indexentry{FanntHorst at Horst Fannt!Friedrichallee 74\protect \\13233 Neu-Isenburg\protect \\\Email {horst.fannt"@gmxnet.de}}{48}
 \end{filecontents}
 \documentclass{article}
+%StartVisiblePreamble
 \usepackage{url}
 \DeclareUrlCommand\Email{%
   \def\UrlLeft{}%
@@ -1987,7 +1781,6 @@
 }
 \def\endtheindex{\end{multicols}}
 \makeatother
-%StartVisiblePreamble
 \usepackage{makeidx}
 %StopVisiblePreamble
 \pagestyle{empty}
@@ -2007,15 +1800,20 @@
   mpwidth=0.55\linewidth,
   pages={2},
   frame=false,
-  compiler=lualatex,
+  compiler=runtexfile,
   crop,
-  xindex,
+%  xindex,
 %  xindexOptions=,
-  runs=2,code,docType=latex,
+%  runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
-%! lualatex
+%! HV lualatex
+%! HV xindex
+%! HV lualatex
+%! HV lualatex
+
 \documentclass{article}
 \makeatletter
 \def\theindex{%    only for demonstration
@@ -2046,6 +1844,7 @@
 
 \clearpage
 
+
 \section{\texttt{hyperref}}
 
 Using the package \Lpack{hyperref} is no problem:
@@ -2057,15 +1856,20 @@
   mpwidth=0.55\linewidth,
   pages={3},
   frame=false,
-  compiler=lualatex,
+  compiler=runtexfile,
   crop,
-  xindex,
-  xindexOptions=-l de,
-  runs=2,code,docType=latex,
+  %xindex,
+  %xindexOptions=-l de,
+  %runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
-%! lualatex
+%! HV lualatex
+%! HV xindex -l de
+%! HV lualatex
+%! HV lualatex
+
 \documentclass[paper=a6]{scrartcl}
 \usepackage{multicol}
 \makeatletter
@@ -2108,17 +1912,23 @@
 %  mpwidth=0.55\linewidth,
   pages={3},
   frame=false,
-  compiler=lualatex, 
+  compiler=runtexfile, 
   crop,
-  shellesc,
+%  shellesc,
 %  xindex,
 %  xindexOptions=-,
-  runs=2,code,docType=latex,
+  %runs=2,
+  code,
+  docType=latex,
   showFilename,
   align=\centering,
 %  grfOptions={width=\linewidth},
   lstOptions={columns=fixed}]{xindex}
-%! lualatex --shell-escape
+%! HV lualatex
+%! HV xindex
+%! HV lualatex
+%! HV lualatex
+
 \documentclass{article}
 \usepackage{libertinus}
 \let\NewPage\newpage% only for demo
@@ -2126,7 +1936,7 @@
 \renewcommand\newpage{\NewPage\let\ps at plain\ps at empty}
 \makeatother
 %StartVisiblePreamble
-\usepackage[imakeidx]{xindex}
+\usepackage[noautomatic]{imakeidx}
 \usepackage{hvindex}
 \makeindex[columns=5, columnsep=6pt, options=--fix_hyperref]
 \usepackage{hyperref}
@@ -2133,28 +1943,29 @@
 %StopVisiblePreamble
 \pagestyle{empty}
 \begin{document}
-	Symbols:\\
-	! \index{"!} " \index{""} \# \index{#@\#} \$ \index{$@\$}
-	\% \index{%@\%} \& \index{&@\&} ' \index{'} ) \index{)}
-	( \index{(} * \index{*} + \index{+} , \index{,@,\,}
-	- \index{-} . \index{.} / \index{/} : \index{:}
-	; \index{;} < \index{<} = \index{=} > \index{>}
-	? \index{?} @ \index{"@} [ \index{[} ] \index{]}
-	\_ \index{_@\_} ` \index{`} | \index{\textbar}
-	\newpage\index{"|}\index{\textbar}\index{123}\Index{Post}
-	\{ \index{\braceLeft} \} \index{\braceRight}
-	\textbackslash \index{\@\textbackslash}
-	\textasciicircum \index{^@\textasciicircum}
-	\textasciitilde \index{~@\textasciitilde}
-	Alphabet: \Index{Z},\Index{Zeppelin}\Index{Foo}\dots
-	\Index{...@\ldots}
-	\printindex
+Symbols:\\
+! \index{"!} " \index{""} \# \index{#@\#} \$ \index{$@\$}
+\% \index{%@\%} \& \index{&@\&} ' \index{'} ) \index{)}
+( \index{(} * \index{*} + \index{+} , \index{,@,\,}
+- \index{-} . \index{.} / \index{/} : \index{:}
+; \index{;} < \index{<} = \index{=} > \index{>}
+? \index{?} @ \index{"@} [ \index{[} ] \index{]}
+\_ \index{_@\_} ` \index{`} | \index{\textbar}
+\newpage\index{"|}\index{\textbar}\index{123}\Index{Post}
+\{ \index{\braceLeft} \} \index{\braceRight}
+\textbackslash \index{\@\textbackslash}
+\textasciicircum \index{^@\textasciicircum}
+\textasciitilde \index{~@\textasciitilde}
+
+Alphabet: \Index{Z},\Index{Zeppelin}\Index{Foo}\dots
+\Index{...@\ldots}
+\printindex
 \end{document}
 \end{externalDocument}
 
 
 
-\section{Including \LaTeX\ commands into the \Lext{idx} file}
+\section{Including commands into the \Lext{idx} file}
 The command \Lcs{addtocontents} doesn't work for the index file. With the \LaTeX\ package
 \Lpack{xindex} (same name as the Lua program \Lprog{xindex}) defines a macro \Lcs{writeidx}
 which writes its argument into the \Lext{idx} file. This can be useful to insert a 
@@ -2186,15 +1997,20 @@
 %  mpwidth=0.55\linewidth,
   pages={2},
   frame=false,
-  compiler=lualatex, 
+  compiler=runtexfile, 
   crop,
-  xindex,
-  xindexOptions=-l de,
-  runs=2,code,docType=latex,
+%  xindex,
+%  xindexOptions=-l de,
+%  runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
-%! lualatex --shell-escape
+%! HV lualatex --shell-escape
+%! HV xindex -l de
+%! HV lualatex --shell-escape
+%! HV lualatex --shell-escape
+
 \documentclass{scrartcl}
 \usepackage{libertinus-otf}
 %StartVisiblePreamble
@@ -2233,15 +2049,20 @@
   mpwidth=0.55\linewidth,
   pages={5},
   frame=false,
-  compiler=lualatex,
+  compiler=runtexfile,
   crop,
-  xindex,
-  xindexOptions=-n,
-  runs=2,code,docType=latex,
+%  xindex,
+%  xindexOptions=-n,
+%  runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
-%! lualatex
+%! HV lualatex 
+%! HV xindex -n 
+%! HV lualatex --shell-escape
+%! HV lualatex --shell-escape
+
 \documentclass{scrartcl}
 \makeatletter
 \def\theindex{%    only for demonstration
@@ -2275,32 +2096,29 @@
 
 \verb|idxnewletter = "\\idxnewletter"|
 
-
-\clearpage
-
-
 In the documents preamble there is the definition:
 
 \verb|\newcommand\idxnewletter[1]{\textbf{\textit{#1}}}|
 
-
-
-
 \begin{externalDocument}[
 %  grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
   mpwidth=0.6\linewidth,
   pages={2},
   frame=false,
-  compiler=lualatex,
+  compiler=runtexfile,
   crop,
-  xindex,
-  xindexOptions=-c header,
-  runs=2,code,docType=latex,
+%  xindex,
+%  xindexOptions=-c header,
+%  runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
-%! lualatex
-\documentclass{scrartcl}
+%! HV lualatex
+%! HV xindex -c header
+%! HV lualatex
+%! HV lualatex
+ \documentclass{scrartcl}
 \begin{filecontents}[force,noheader]{xindex-header.lua}
 -----------------------------------------------------------------------
 --         FILE:  xindex-header.lua
@@ -2330,69 +2148,6 @@
 idxnewletter      = "\\idxnewletter"
 envStart          = "\\begin{theindex}"  
 envStop           = "\\end{theindex}"
-
---[[
-    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', 'á', 'à', 'ä', 'â', 'å', 'æ', },
-    { 'b' },
-    { 'c', 'ç' },
-    { 'd' },
-    { 'e', 'é', 'è', 'ë', 'ê' },
-    { 'f' },
-    { 'g' },
-    { 'h' },
-    { 'i', 'í', 'ì', 'î', 'ï' },
-    { 'j' },
-    { 'k' },
-    { 'l' },
-    { 'm' },
-    { 'n', 'ñ' },
-    { 'o', 'ó', 'ò', 'ö', 'ô', 'ø', 'œ', 'ø'},
-    { 'p' },
-    { 'q' },
-    { 'r' },
-    { 's', 'š', 'ß' },
-    { 't' },
-    { 'u', 'ú', 'ù', 'ü' , 'û'},
-    { 'v' },
-    { 'w' },
-    { 'x' },
-    { 'y', 'ý', 'ÿ' },
-    { 'z', 'ž' }
-}
-alphabet_upper = { -- for sorting
-    { ' ' },
-    { 'A', 'Á', 'À', 'Ä', 'Å', 'Æ'},
-    { 'B' },
-    { 'C', 'Ç' },
-    { 'D' },
-    { 'E', 'È', 'É', 'Ë' },
-    { 'F' },
-    { 'G' },
-    { 'H' },
-    { 'I', 'Í', 'Ì', 'Ï' },
-    { 'J' },
-    { 'K' },
-    { 'L' },
-    { 'M' },
-    { 'N', 'Ñ' },
-    { 'O', 'Ó', 'Ò', 'Ö', 'Ø','Œ', 'Ø' },
-    { 'P' },
-    { 'Q' },
-    { 'R' },
-    { 'S', 'Š' },
-    { 'T' },
-    { 'U', 'Ú', 'Ù', 'Ü' },
-    { 'V' },
-    { 'W' },
-    { 'X' },
-    { 'Y', 'Ý', 'Ÿ' },
-    { 'Z', 'Ž' }
-}
 \end{filecontents}
 \makeatletter
 \def\theindex{%    only for demonstration
@@ -2439,15 +2194,19 @@
   crop,
 %  xindex,
 %  xindexOptions=-l de,
-  runs=2,code,docType=latex,
+%  runs=2,
+  code,docType=latex,
 %  runsAfter=2,
 %  cleanup={},
 %  moveToExampleDir=false,
-  shellesc,
+%  shellesc,
   showFilename,
   align=\centering,
   lstOptions={columns=fixed}]{xindex}
-%! lualatex --shell-escape
+%! HV lualatex 
+%! HV xindex -l DE
+%! HV lualatex 
+%! HV lualatex 
 \documentclass{scrartcl}
 \usepackage{libertinus-otf}
 \makeatletter
@@ -2456,7 +2215,7 @@
 %StartVisiblePreamble
 \usepackage[imakeidx]{xindex}
 \makeindex[name=persons,title=Index of names,
-   columns=1,options= --noheadings]
+  columns=1,options= --noheadings]
 \def\ThanhVN{Hàn Thê\protect\llap{%
   \raise 0.5ex\hbox{\'{}}}}
 %StopVisiblePreamble
@@ -2540,29 +2299,40 @@
 \begin{externalDocument}[
 %  grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
   mpwidth=0.55\linewidth,
-  pages={3},
+  pages={4},
   frame=false,
-  compiler=lualatex, 
+  force=true,
+  compiler=runtexfile, 
   crop,
-  xindex,
-  xindexOptions=-l fr,
-  runs=2,code,docType=latex,
+%  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}
+%! HV lualatex --shell-escape
+%! HV xindex -l fr
+%! HV lualatex --shell-escape
+%! HV lualatex --shell-escape
+
+\documentclass[paper=a4]{scrartcl}
 \usepackage{libertinus-otf}
-\let\NewPage\newpage% only for demo
+\usepackage[french]{babel}
+\usepackage{makeidx} \makeindex
+\usepackage{multicol}
+\usepackage{flushend}
+\newcommand*\IND[1]{\index{#1}#1\par}
+%StopVisiblePreamble
 \makeatletter
-\renewcommand\newpage{\NewPage\let\ps at plain\ps at empty}
+\def\theindex{%    only for demonstration
+  \section*{\indexname}
+  \begin{multicols}{3}
+  \parskip\z@ \@plus .3\p@\relax \parindent\z@
+  \let\item\@idxitem}
+\def\endtheindex{\end{multicols}}
 \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} 
@@ -2576,7 +2346,9 @@
 \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
+\IND{coté}\IND{coefficient} \newpage
+
+\pagestyle{empty} \printindex
 \end{document}
 \end{externalDocument}
 
@@ -2588,16 +2360,21 @@
   mpwidth=0.55\linewidth,
   pages={2},
   frame=false,
-  compiler=lualatex, 
+  compiler=runtexfile, 
+  force=true,
   crop,
 %  xindex,
 %  xindexOptions=-l de,
-  runs=2,code,docType=latex,
+  %runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
-  grfOptions={width=\linewidth},
+%  grfOptions={width=\linewidth},
   lstOptions={columns=fixed}]{xindex}
-%! lualatex --shell-escape
+%! HV lualatex --shell-escape
+%! HV xindex -l en
+%! HV lualatex 
+%! HV lualatex 
 \documentclass[paper=a5]{scrartcl}
 \usepackage{libertinus-otf}
 \let\NewPage\newpage% only for demo
@@ -2605,8 +2382,7 @@
 \renewcommand\newpage{\NewPage\let\ps at plain\ps at empty}
 \makeatother
 %StartVisiblePreamble
-\usepackage[imakeidx]{xindex}
-\makeindex
+\usepackage{makeidx} \makeindex
 % Brian Dunn
 %StopVisiblePreamble
 \begin{document}
@@ -2632,21 +2408,28 @@
 \end{externalDocument}
 
 
+\clearpage
+
 \begin{externalDocument}[
 %  grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
   mpwidth=0.55\linewidth,
   pages={2},
   frame=false,
-  compiler=lualatex, 
+  compiler=runtexcode, 
   crop,
 %  xindex,
 %  xindexOptions=-l de,
-  runs=2,code,docType=latex,
+%  runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
   grfOptions={width=\linewidth},
   lstOptions={columns=fixed}]{xindex}
-%! lualatex --shell-escape
+%! HV lualatex
+%! HV xindex -l DE
+%! HV lualatex
+%! HV lualatex
+
 \documentclass[paper=a5]{scrartcl}
 \usepackage{libertinus-otf}
 \let\NewPage\newpage% only for demo
@@ -2654,9 +2437,7 @@
 \renewcommand\newpage{\NewPage\let\ps at plain\ps at empty}
 \makeatother
 %StartVisiblePreamble
-\usepackage[imakeidx]{xindex}
-\makeindex[options=-l de]
-% Martin Sievers
+\usepackage{makeidx}\makeindex
 %StopVisiblePreamble
 \begin{document}
 Test \index{A!Test} oder auch \index{B!Test}
@@ -2666,7 +2447,6 @@
 \end{externalDocument}
 
 
-\clearpage
 
 
 \begin{externalDocument}[
@@ -2674,16 +2454,20 @@
   mpwidth=0.55\linewidth,
   pages={2},
   frame=false,
-  compiler=lualatex, 
+  compiler=runtexfile, 
   crop,
-  xindex,
+%  xindex,
 %  xindexOptions=-l de,
-  runs=2,code,docType=latex,
+  %runs=2,
+  code,docType=latex,
   showFilename,
   align=\centering,
 %  grfOptions={width=\linewidth},
   lstOptions={columns=fixed}]{xindex}
-%! lualatex --shell-escape
+%! HV lualatex --shell-escape
+%! HV xindex 
+%! HV lualatex --shell-escape
+%! HV lualatex --shell-escape
 \documentclass[paper=a5]{scrartcl}
 \usepackage{libertinus-otf}
 \let\NewPage\newpage% only for demo

Modified: trunk/Master/texmf-dist/scripts/xindex/xindex.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/xindex/xindex.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/scripts/xindex/xindex.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -9,7 +9,7 @@
 -----------------------------------------------------------------------
 
         xindex = xindex or { }
- local version = 0.64
+ local version = 1.02
 xindex.version = version
 --xindex.self = "xindex"
 
@@ -57,8 +57,6 @@
     -o,--output (default "")
     -p,--prefix (default L)
     -s,--use_stdin
-    -u,--use_UCA     no more needed
-    -x,--no_UCA
     <files...> (default stdin) .idx file(s)
 ]]
 
@@ -255,45 +253,25 @@
   end
 end
 
--- next config is UCA
+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)
 
-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)
-
-  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)
-  writeLog(2," ... done\n",0)
+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)
+writeLog(2," ... done\n",0)
   
 -- language name specified on the command line doesn't seem to be available
 -- in the config file, so we just try to find it ourselves
-  for i, a in ipairs(arg) do
+for i, a in ipairs(arg) do
     if a == "-l" or a=="--language" then
       language = arg[i+1]
       break
     end
-  end
-
-  if languages[language] 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
@@ -313,6 +291,18 @@
   writeLog(2," ... done\n",0)
 end
 
+-- language can also be set in the config file
+
+if languages[language] 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 = {}
+
+
+
+
 --print("Sprache:"..language)
 
 language = string.lower(language)
@@ -334,7 +324,7 @@
 
 
 esc_char = args.escapechar
-print("Escape char "..esc_char)
+--print("Escape char "..esc_char)
 esc_char2 = esc_char..esc_char  
 writeLog(2,"Escapechar = "..esc_char.."\n",1)
 escape_chars = { -- by default " is the escape char

Modified: trunk/Master/texmf-dist/tex/latex/xindex/xindex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/xindex/xindex.sty	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/latex/xindex/xindex.sty	2025-08-02 19:52:19 UTC (rev 75954)
@@ -13,7 +13,7 @@
 %
 %
 % -------------------------------------
-\ProvidesPackage{xindex}[2025/01/28 v. 0.64 write into an idx file (hv)]
+\ProvidesPackage{xindex}[2025/01/28 v. 0.65 write into an idx file (hv)]
 %
 \RequirePackage{xkeyval}
 

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,11 +5,11 @@
 --       AUTHOR:  Herbert Voß
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-DIN2.lua 13 2021-08-15 10:49:40Z hvoss $
+-- $Id: xindex-AU.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
 if not modules then modules = { } end modules ['xindex-AU'] = {
-      version = 0.64,
+      version = 1.02,
       comment = "configuration to xindex.lua",
        author = "Herbert Voss",
     copyright = "Herbert Voss",

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,7 +5,7 @@
 --       AUTHOR:  Herbert Voß
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-DIN2.lua 19 2022-01-22 09:59:15Z hvoss $
+-- $Id: xindex-DIN2.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
 if not modules then modules = { } end modules ['xindex-DIN2'] = {
@@ -17,7 +17,6 @@
 }
 
 --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)
@@ -26,83 +25,13 @@
   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"
+  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', 'á', 'à', 'å', 'æ', },
-    { 'ae', 'ä'},
-    { 'b' },
-    { 'c', 'ç' },
-    { 'd' },
-    { 'e', 'é', 'è', 'ë', 'ê' },
-    { 'f' },
-    { 'g' },
-    { 'h' },
-    { 'i', 'í', 'ì', 'î', 'ï' },
-    { 'j' },
-    { 'k' },
-    { 'l' },
-    { 'm' },
-    { 'n', 'ñ' },
-    { 'o', 'ó', 'ò', 'ô', 'ø', 'œ', 'ø'},
-    { 'oe', 'ö' },
-    { 'p' },
-    { 'q' },
-    { 'r' },
-    { 'ss', 'ß' },
-    { 's', 'š' },
-    { 't' },
-    { 'u', 'ú', 'ù', 'û'},
-    { 'ue', 'ü' },
-    { 'v' },
-    { 'w' },
-    { 'x' },
-    { 'y', 'ý', 'ÿ' },
-    { 'z', 'ž' }
-}
-alphabet_upper = { -- for sorting
-    { ' ' },
-    { 'A', 'Á', 'À', 'Å', 'Æ', 'Â'},
-    { 'AE', 'Ä'},
-    { 'B' },
-    { 'C', 'Ç' },
-    { 'D' },
-    { 'E', 'È', 'É', 'Ë', 'Ê' },
-    { 'F' },
-    { 'G' },
-    { 'H' },
-    { 'I', 'Í', 'Ì', 'Ï', 'Î' },
-    { 'J' },
-    { 'K' },
-    { 'L' },
-    { 'M' },
-    { 'N', 'Ñ' },
-    { 'O', 'Ó', 'Ò', 'Ø','Œ', 'Ø', 'Ô' },
-    { 'OE', 'Ö' },
-    { 'P' },
-    { 'Q' },
-    { 'R' },
-    { 'S', 'Š' },
-    { 'T' },
-    { 'U', 'Ú', 'Ù', 'Û' },
-    { 'UE', 'Ü' },
-    { 'V' },
-    { 'W' },
-    { 'X' },
-    { 'Y', 'Ý', 'Ÿ' },
-    { 'Z', 'Ž' }
-}
+

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,13 +5,13 @@
 --       AUTHOR:  Herbert Voß
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-HAdW-eKO.lua 22 2022-02-07 12:18:15Z hvoss $
+-- $Id: xindex-HAdW-eKO.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 --
 -- configuration for index files of the Heidelberger Akademie der Wissenschaften
 
 if not modules then modules = { } end modules ['xindex-HAdW-eKO'] = {
-      version = 0.64,
+      version = 1.02,
       comment = "configuration to xindex.lua",
        author = "Herbert Voss",
     copyright = "Herbert Voss",
@@ -41,72 +41,6 @@
 }
 
 
---[[
-    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', 'á', 'à', 'ä'},
-    { 'b' },
-    { 'c' },
-    { 'd' },
-    { 'e', 'é', 'è', 'ë' },
-    { 'f' },
-    { 'g' },
-    { 'h' },
-    { 'i', 'í', 'ì', 'ï' },
-    { 'j' },
-    { 'k' },
-    { 'l' },
-    { 'm' },
-    { 'n', 'ñ' },
-    { 'o', 'ó', 'ò', 'ö' },
-    { 'p' },
-    { 'q' },
-    { 'r' },
-    { 's' },
-    { 't' },
-    { 'u', 'ú', 'ù', 'ü' },
-    { 'v' },
-    { 'w' },
-    { 'x' },
-    { 'y' },
-    { 'z' }
-}
-alphabet_upper = { -- for sorting
-    { ' ' },
-    { 'A', 'Á', 'À', 'Ä'},
-    { 'B' },
-    { 'C' },
-    { 'D' },
-    { 'E', 'È', 'È', 'ë' },
-    { 'F' },
-    { 'G' },
-    { 'H' },
-    { 'I', 'Í', 'Ì', 'ï' },
-    { 'J' },
-    { 'K' },
-    { 'L' },
-    { 'M' },
-    { 'N', 'Ñ' },
-    { 'O', 'Ó', 'Ò', 'Ö' },
-    { 'P' },
-    { 'Q' },
-    { 'R' },
-    { 'S' },
-    { 'T' },
-    { 'U', 'Ú', 'Ù', 'Ü' },
-    { 'V' },
-    { 'W' },
-    { 'X' },
-    { 'Y' },
-    { 'Z' }
-}
-
---alphabet_lower_map = CreateCharListMap(alphabet_lower)-- jetzt in xindex.lua
---alphabet_upper_map = CreateCharListMap(alphabet_upper)
-
 --\indexentry{Ackers, Carolus}{VII/1-715}
 --\indexentry{Bremen!Adalbert I. von, Erzbischof}{VII/2/1-948}
 --\indexentry{Bremen!Adalbert I. von, Erzbischof}{VII/1-50}

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,11 +5,11 @@
 --       AUTHOR:  Alexey Kuznetzov
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-DIN2.lua 13 2021-08-15 10:49:40Z hvoss $
+-- $Id: xindex-RU.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
 if not modules then modules = { } end modules ['xindex-RU'] = {
-      version = 0.64,
+      version = 1.02,
       comment = "configuration to xindex.lua",
        author = "Alexey Kuznetzov",
     copyright = "Herbert Voß",
@@ -36,66 +36,3 @@
 -- There is no folio abbreviation in Russian
 -- folium = { ru = { "" , "" }, } -- Is this correct? 
 
---[[
-    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', 'á', 'à', 'ä', 'â', 'å', 'æ', },
-    { 'b' },
-    { 'c', 'ç' },
-    { 'd' },
-    { 'е', 'ё' },
-    { 'f' },
-    { 'g' },
-    { 'h' },
-    { 'i', 'í', 'ì', 'î', 'ï' },
-    { 'j' },
-    { 'k' },
-    { 'l' },
-    { 'm' },
-    { 'n', 'ñ' },
-    { 'o', 'ó', 'ò', 'ö', 'ô', 'ø', 'œ', 'ø'},
-    { 'p' },
-    { 'q' },
-    { 'r' },
-    { 's', 'š' },
-    { 'ss', 'ß' },
-    { 't' },
-    { 'u', 'ú', 'ù', 'ü' , 'û'},
-    { 'v' },
-    { 'w' },
-    { 'x' },
-    { 'y', 'ý', 'ÿ' },
-    { 'z', 'ž' }
-}
-alphabet_upper = { -- for sorting
-    { ' ' },
-    { 'A', 'Á', 'À', 'Ä', 'Å', 'Æ', 'Â' },
-    { 'B' },
-    { 'C', 'Ç' },
-    { 'D' },
-    { 'Е', 'Ё' },
-    { 'F' },
-    { 'G' },
-    { 'H' },
-    { 'I', 'Í', 'Ì', 'Ï', 'Î' },
-    { 'J' },
-    { 'K' },
-    { 'L' },
-    { 'M' },
-    { 'N', 'Ñ' },
-    { 'O', 'Ó', 'Ò', 'Ö', 'Ø','Œ', 'Ø', 'Ô'},
-    { 'P' },
-    { 'Q' },
-    { 'R' },
-    { 'S', 'Š' },
-    { 'T' },
-    { 'U', 'Ú', 'Ù', 'Ü', 'Û' },
-    { 'V' },
-    { 'W' },
-    { 'X' },
-    { 'Y', 'Ý', 'Ÿ' },
-    { 'Z', 'Ž' }
-}

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,10 +5,10 @@
 --       AUTHOR:  Herbert Voß
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-base.lua 22 2022-02-07 12:18:15Z hvoss $
+-- $Id: xindex-base.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
-local info = { version = 0.64 } 
+local info = { version = 1.02 } 
 
 -- check config
 if pageNoPrefixDel ~= "" then 
@@ -30,6 +30,10 @@
     lines = array_concat(lines, read_lines_from(inFiles[i]))
     writeLog(2,#lines.." lines of data read\n",0)
   end
+  --print("---------- 1 ----------")
+--  for i=1,#lines do
+--    print(lines[i])
+--  end
 end
 --print("Anzahl Zeilen: "..#lines)
 if #lines == 0 then
@@ -47,6 +51,10 @@
     os.exit()
 end
 
+
+
+
+
 writeLog(1,"check for hyperpages ... ",0)
 hyperpage, lines = checkHyperpage(lines)  -- hyperref used?
 --writeLog(1,"done \n",0)
@@ -94,14 +102,23 @@
   end
 end
 
+--  print("---------- 2a ----------")
+--  for i=1,#lines do
+--    print(lines[i])
+--  end
+
+--  print("---------- 2b ----------")
+--    print(require 'xindex-pretty'.dump(Index))
+
+
 writeLog(1,"... done\n",0)
 writeLog(1,"------------------ Start list after getEntryAndPage() ------------------------\n",2) 
-printList(Index,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)
+--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)
 
@@ -118,14 +135,15 @@
 
 k = 0
 writeLog(2, "Sort begin\n", 0)
-
-if use_UCA then
-  table.sort(Index, UCACompare)
-else
-  table.sort(Index,UTFCompare)
-end
+--print("---------- 2c ----------")
+--print(require 'xindex-pretty'.dump(Index))
+table.sort(Index, UCACompare)
 writeLog(2, "Sort end\n", 0)
 
+
+--print("---------- 2d ----------")
+--print(require 'xindex-pretty'.dump(Index))
+
 if SORTposthook then
   writeLog(2, "PostHook begin\n", 0)
   Index = SORTposthook(Index)
@@ -132,8 +150,16 @@
   writeLog(2, "PostHook end\n", 0)
 end
 
+--  print("---------- 2e ----------")
+
+--for i=1, #Index do
+--   print(Index[i]["SortKey"])
+--end
+
+
+
 writeLog(1,"\n------------------ Start list after table.sort(Index,UTFCompare)------------\n",2)
-printList(Index,2)
+--printList(Index,2)
 writeLog(1,require 'xindex-pretty'.dump(Index),3)    -- only for internal dump
 writeLog(1,"\n------------------ end list after table.sort(Index,UTFCompare)------------\n",2)
 
@@ -145,11 +171,18 @@
 
 Index = checkParenthesis(Index)
 
+
+--  print("---------- 2f ----------")
+--    print(require 'xindex-pretty'.dump(Index))
+
+
+
+
 writeLog(1,"\n",0)
 
 --for i=1,#Index do print(Index[i]["Entry"],Index[i]["pages"][1]["number"],Index[i]["pages"][1]["special"]) end
 writeLog(1,require 'xindex-pretty'.dump(Index),3)   -- only for internal dump
-printList(Index,2)
+--printList(Index,2)
 writeLog(1,"------------------ End list after checkParenthesis(Index) ------------\n",2)
 writeLog(2,"done\n",0)
 
@@ -163,10 +196,14 @@
 
 -- for i=1,#NewIndex do print(NewIndex[i]["Entry"],NewIndex[i]["pages"][1]["number"],NewIndex[i]["pages"][1]["special"]) end
 --writeLog(1,require 'xindex-pretty'.dump(NewIndex),3)   -- only for internal dump
-printList(NewIndex,2)
+--printList(NewIndex,2)
 writeLog(1,"------------------ End list after compressEntryList(Index)------------\n",1)
 writeLog(2,"done\n",0)
 
+
+
+
+
 -- output the .ind-list
 --[[
 for i, str0 in ipairs(escape_chars) do
@@ -174,7 +211,8 @@
 end
 ]]   -- no more needed, we redo the setting 
 
-if use_UCA then
+
+
   writeLog(2,"Endhook for UCA ...",0)
   for i=1, #NewIndex do
     v = NewIndex[i]
@@ -193,15 +231,6 @@
     end
 --    print("v.sortchar="..v.sortChar)
   end
-else
-  for i=1, #NewIndex do
-    if NewIndex[i]["SortKey"] ~= nil then
-      for _,w in pairs(escape_chars) do 
-        NewIndex[i]["SortKey"] = NewIndex[i]["SortKey"]:gsub(w[2], w[3])
-      end
-    end
-  end
-end
 
 
 writeLog(2,"done\n",0)

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,11 +5,11 @@
 --       AUTHOR:  Herbert Voß
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-baselib.lua 22 2022-02-07 12:18:15Z hvoss $
+-- $Id: xindex-baselib.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
 if not modules then modules = { } end modules ['xindex-baselib'] = {
-      version = 0.64,
+      version = 1.02,
       comment = "base library  to xindex.lua",
        author = "Herbert Voss",
     copyright = "Herbert Voss",

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,11 +5,11 @@
 --       AUTHOR:  Herbert Voß
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-cfg-common.lua 22 2022-02-07 12:18:15Z hvoss $
+-- $Id: xindex-cfg-common.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
 if not modules then modules = { } end modules ['xindex-cfg-common'] = {
-      version = 0.64,
+      version = 1.02,
       comment = "configuration to xindex.lua",
        author = "Herbert Voss",
     copyright = "Herbert Voss",
@@ -107,102 +107,3 @@
   ru = {"",""},       -- doesn't exist
 }
 
-alphabet_uppercase = {
-    { 'α', 'Α' },
-    { 'β', 'Β' },
-    { 'ϐ', 'ϐ' },   
-    { 'γ', 'Γ' },
-    { 'δ', 'Δ' },
-    { 'ε', 'Ε' },
-    { 'ζ', 'Ζ' },
-    { 'η', 'Η' },
-    { 'θ', 'Θ' },
-    { 'ι', 'Ι' },
-    { 'κ', 'Κ' },
-    { 'λ', 'Λ' },
-    { 'μ', 'Μ' },
-    { 'ν', 'Ν' },
-    { 'ξ', 'Ξ' },
-    { 'ο', 'Ο' },
-    { 'π', 'Π' },
-    { 'ρ', 'Ρ' },
-    { 'σ', 'Σ' },
-    { 'ς', 'ς' },
-    { 'τ', 'Τ' },
-    { 'υ', 'Υ' },
-    { 'φ', 'Φ' },
-    { 'χ', 'Χ' },
-    { 'ψ', 'Ψ' },
-    { 'ω', 'Ω' },
---
-    { 'a', 'A' },
-    { 'b', 'B' },
-    { 'c', 'C' },
-    { 'd', 'D' },
-    { 'e', 'E' },
-    { 'f', 'F' },
-    { 'g', 'G' },
-    { 'h', 'H' },
-    { 'i', 'I' },
-    { 'j', 'J' },
-    { 'k', 'K' },
-    { 'l', 'L' },
-    { 'm', 'M' },
-    { 'n', 'N' },
-    { 'o', 'O' },
-    { 'p', 'P' },
-    { 'q', 'Q' },
-    { 'r', 'R' },
-    { 's', 'S' },
-    { 't', 'T' },
-    { 'u', 'U' },
-    { 'v', 'V' },
-    { 'w', 'W' },
-    { 'x', 'X' },
-    { 'y', 'Y' },
-    { 'z', 'Z' },
---
-    { 'а', 'А' },
-    { 'б', 'Б' },
-    { 'в', 'В' },
-    { 'г', 'Г' },
-    { 'д', 'Д' },
-    { 'е', 'Е' },
-    { 'ж', 'Ж' },
-    { 'з', 'З' },
-    { 'и', 'И' },
-    { 'й', 'Й' },
-    { 'к', 'К' },
-    { 'л', 'Л' },
-    { 'м', 'М' },
-    { 'н', 'Н' },
-    { 'о', 'О' },
-    { 'п', 'П' },
-    { 'р', 'Р' },
-    { 'с', 'С' },
-    { 'т', 'Т' },
-    { 'у', 'У' },
-    { 'ф', 'Ф' },
-    { 'х', 'Х' },
-    { 'ц', 'Ц' },
-    { 'ч', 'Ч' },
-    { 'ш', 'Ш' },
-    { 'щ', 'Щ' },
-    { 'ъ', 'Ъ' },
-    { 'ы', 'Ы' },
-    { 'ь', 'Ь' },
-    { 'э', 'Э' },
-    { 'ю', 'Ю' },
-    { 'я', 'Я' }
-}
-
-local function create_map(char_list)
-  local map = {}
-  for i, pair in ipairs(char_list) do
-    map[pair[1]] = pair[2]
-  end
-  return map
-end
-
-alphabet_uppercase_map = create_map(alphabet_uppercase)
-

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-no_uca.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-no_uca.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-no_uca.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,11 +5,11 @@
 --       AUTHOR:  Herbert Voß
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-cfg.lua 22 2022-02-07 12:18:15Z hvoss $
+-- $Id: xindex-cfg-no_uca.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
 if not modules then modules = { } end modules ['xindex-cfg'] = {
-      version = 0.64,
+      version = 0.60,
       comment = "main configuration to xindex.lua",
        author = "Herbert Voss",
     copyright = "Herbert Voss",

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,11 +5,11 @@
 --       AUTHOR:  Herbert Voß
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-cfg-uca.lua 22 2022-02-07 12:18:15Z hvoss $
+-- $Id: xindex-cfg-uca.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
 if not modules then modules = { } end modules ['xindex-cfg-lua'] = {
-      version = 0.64,
+      version = 0.65,
       comment = "configuration to xindex-cfg-uca.lua",
        author = "Herbert Voss",
     copyright = "Herbert Voss",
@@ -63,6 +63,23 @@
   return collator_obj
 end
 
+--UCA language = "de_din2" -- 
+languages.de_din2 = function(collator_obj)
+  print("Using languages.de_din2")
+  local tailoring = function(s) collator_obj:tailor_string(s) end
+  collator_obj:uppercase_first()
+  tailoring("&Ö=Oe")
+  tailoring("&ö=oe")
+  tailoring("&Ä=Ae")
+  tailoring("&ä=ae")
+  tailoring("&Ü=Ue")
+  tailoring("&ü=ue")
+  tailoring("&ß=ss")
+  return collator_obj
+end
+
+
+
 --ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ
 
 --[[
@@ -74,3 +91,4 @@
 = 	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. 
 ]]
+

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,11 +5,11 @@
 --       AUTHOR:  Herbert Voß
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-danteedition.lua 22 2022-02-07 12:18:15Z hvoss $
+-- $Id: xindex-danteedition.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
 if not modules then modules = { } end modules ['xindex-cfg'] = {
-      version = 0.64,
+      version = 1.02,
       comment = "configuration file for the DANTE Edition",
        author = "Herbert Voss",
     copyright = "Herbert Voss",
@@ -18,7 +18,7 @@
 
 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"
@@ -28,69 +28,12 @@
 idxnewletter      = "\\idxnewletter"  -- Only valid if -n is not set
 envStart          = "\\begin{theindex}"  
 envStop           = "\\end{theindex}"
+language		  = "de"
 
 --[[
     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', 'á', 'à', 'ä', 'â', 'å', 'æ', },
-    { 'b' },
-    { 'c', 'ç' },
-    { 'd' },
-    { 'e', 'é', 'è', 'ë', 'ê' },
-    { 'f' },
-    { 'g' },
-    { 'h' },
-    { 'i', 'í', 'ì', 'î', 'ï' },
-    { 'j' },
-    { 'k' },
-    { 'l' },
-    { 'm' },
-    { 'n', 'ñ' },
-    { 'o', 'ó', 'ò', 'ö', 'ô', 'ø', 'œ', 'ø'},
-    { 'p' },
-    { 'q' },
-    { 'r' },
-    { 's', 'š', 'ß' },
-    { 't' },
-    { 'u', 'ú', 'ù', 'ü' , 'û'},
-    { 'v' },
-    { 'w' },
-    { 'x' },
-    { 'y', 'ý', 'ÿ' },
-    { 'z', 'ž' }
-}
-alphabet_upper = { -- for sorting
-    { ' ' },
-    { 'A', 'Á', 'À', 'Ä', 'Å', 'Æ', 'Â' },
-    { 'B' },
-    { 'C', 'Ç' },
-    { 'D' },
-    { 'E', 'È', 'É', 'Ë', 'Ê' },
-    { 'F' },
-    { 'G' },
-    { 'H' },
-    { 'I', 'Í', 'Ì', 'Ï', 'Î' },
-    { 'J' },
-    { 'K' },
-    { 'L' },
-    { 'M' },
-    { 'N', 'Ñ' },
-    { 'O', 'Ó', 'Ò', 'Ö', 'Ø','Œ', 'Ø', 'Ô'},
-    { 'P' },
-    { 'Q' },
-    { 'R' },
-    { 'S', 'Š' },
-    { 'T' },
-    { 'U', 'Ú', 'Ù', 'Ü', 'Û' },
-    { 'V' },
-    { 'W' },
-    { 'X' },
-    { 'Y', 'Ý', 'Ÿ' },
-    { 'Z', 'Ž' }
-}
 
 folium = { 
   cs = {"f.", "ff."},

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,11 +5,12 @@
 --       AUTHOR:  Herbert Voß
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-dtk.lua 22 2022-02-07 12:18:15Z hvoss $
+-- $Id: xindex-dtk.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
-if not modules then modules = { } end modules ['xindex-cfg'] = {
-      version = 0.64,
+if not modules then modules = { } end 
+modules ['xindex-cfg'] = {
+      version = 1.02,
       comment = "DTK configuration to xindex.lua",
        author = "Herbert Voss",
     copyright = "Herbert Voss",
@@ -33,71 +34,9 @@
 idxnewletter      = "\\textbf"  -- Only valid if -n is not set
 envStart          = "\\begin{theindex}"  
 envStop           = "\\end{theindex}"
+language          = "de"
 
 
---[[
-    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', 'á', 'à', 'ä', 'â', 'å', 'æ', },
-    { 'b' },
-    { 'c', 'ç' },
-    { 'd' },
-    { 'e', 'é', 'è', 'ë', 'ê' },
-    { 'f' },
-    { 'g' },
-    { 'h' },
-    { 'i', 'í', 'ì', 'î', 'ï' },
-    { 'j' },
-    { 'k' },
-    { 'l' },
-    { 'm' },
-    { 'n', 'ñ' },
-    { 'o', 'ó', 'ò', 'ö', 'ô', 'ø', 'œ', 'ø'},
-    { 'p' },
-    { 'q' },
-    { 'r' },
-    { 's', 'š', 'ß' },
-    { 't' },
-    { 'u', 'ú', 'ù', 'ü' , 'û'},
-    { 'v' },
-    { 'w' },
-    { 'x' },
-    { 'y', 'ý', 'ÿ' },
-    { 'z', 'ž' }
-}
-alphabet_upper = { -- for sorting
-    { ' ' },
-    { 'A', 'Á', 'À', 'Ä', 'Å', 'Æ', 'Â' },
-    { 'B' },
-    { 'C', 'Ç' },
-    { 'D' },
-    { 'E', 'È', 'É', 'Ë', 'Ê' },
-    { 'F' },
-    { 'G' },
-    { 'H' },
-    { 'I', 'Í', 'Ì', 'Ï', 'Î' },
-    { 'J' },
-    { 'K' },
-    { 'L' },
-    { 'M' },
-    { 'N', 'Ñ' },
-    { 'O', 'Ó', 'Ò', 'Ö', 'Ø','Œ', 'Ø', 'Ô'},
-    { 'P' },
-    { 'Q' },
-    { 'R' },
-    { 'S', 'Š' },
-    { 'T' },
-    { 'U', 'Ú', 'Ù', 'Ü', 'Û' },
-    { 'V' },
-    { 'W' },
-    { 'X' },
-    { 'Y', 'Ý', 'Ÿ' },
-    { 'Z', 'Ž' }
-}
-
 function specialGetPageList(v,hyperpage)
   local Pages = {}
   if v["pages"] then

Added: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-fr.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-fr.lua	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-fr.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -0,0 +1,48 @@
+-----------------------------------------------------------------------
+--         FILE:  xindex-cfg.lua
+--  DESCRIPTION:  configuration file for xindex.lua
+-- REQUIREMENTS:  
+--       AUTHOR:  Herbert Voß
+--      LICENSE:  LPPL1.3
+--
+-- $Id: xindex-fr.lua 2 2025-08-02 11:30:20Z herbert $
+-----------------------------------------------------------------------
+
+if not modules then modules = { } end modules ['xindex-cfg'] = {
+      version = 0.58,
+      comment = "DTK 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 
+numericPage       = true    -- for non numerical pagenumbers, like "VI-17"
+sublabels         = {"-","--","---",""} -- for the sub(sub(sub-items
+pageNoPrefixDel   = ""      -- a delimiter for page numbers like "VI-17"  -- not used !!!
+rangeSymbol       = "--"
+indexOpening      = "" --[[\providecommand*\lettergroupDefault[1]{}
+\providecommand*\lettergroup[1]{%
+      \par\textbf{#1}\par
+      \nopagebreak
+  } 
+]]
+idxnewletter      = "\\textbf"  -- Only valid if -n is not set
+envStart          = "\\begin{theindex}"  
+envStop           = "\\end{theindex}"
+
+
+--[[
+    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
+}
+alphabet_upper = { -- for sorting
+    { ' ' },
+}
+


Property changes on: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-fr.lua
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -1,7 +1,7 @@
 -- lapp.lua
 -- Simple command-line parsing using human-readable specification
 --
--- $Id: xindex-lapp.lua 12 2021-08-15 09:28:32Z hvoss $
+-- $Id: xindex-lapp.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------
 --~ -- args.lua
 --~ local args = require ('lapp') [[

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -5,11 +5,11 @@
 --       AUTHOR:  Herbert Voß
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-lib.lua 22 2022-02-07 12:18:15Z hvoss $
+-- $Id: xindex-lib.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
 if not modules then modules = { } end modules ['xindex-lib'] = {
-      version = 0.64,
+      version = 1.02,
       comment = "main library  to xindex.lua",
        author = "Herbert Voss",
     copyright = "Herbert Voss",
@@ -59,37 +59,11 @@
 end
 
 function NormalizedLower(strOrig)  -- return normalized UTF string.lower (ä -> a)
-  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
 end
 
 function NormalizedUpper(strOrig)  -- return normalized UTF string.upper (ä -> A)
-  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
 end
 
 function NormalizedUppercase(chr)  -- return normalized UTF uppercase letter
@@ -113,23 +87,6 @@
     return s:gsub("[%(%)%.%%%+%-%*%?%[%]%^%$]", function(c) return "%" .. c end)
 end  
   
---  local strOrigTrue = strOrig
---  strOrig = table.concat(str)
---  c = string.upper(get_normalized_char(alphabet_upper,utf.sub(strOrig,1,1)))
---  str = { c }
---  for i=2, utf.len(strOrig) do
---    c = get_normalized_char(alphabet_upper,utf.sub(strOrig,i,i))
---    str[#str + 1] = c
---  end
---  for ch in string.utfcharacters(strOrig, 2) do
---    str[#str + 1] = get_normalized_char(alphabet_upper, ch)
---  end
---  print(strOrigTrue.." -> "..str)
---  return table.concat(str)
---end
-
--- get all lines from a file, returns an empty 
--- list/table if the file does not exist
 function read_lines_from(infile)
   if not file_exists(infile) then return {} end
   local lines = {}
@@ -253,7 +210,7 @@
                                       Macro   = v["Macro"]
                                     }
         end
-        print("firstPage = "..firstPage)
+        --print("firstPage = "..firstPage)
         firstPage = 0
       elseif ((firstPage == 0) and not paraClose) then
         newEntries[#newEntries+1] = v    -- same Entry with greater page or new entry
@@ -618,13 +575,6 @@
 --  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
-       (a["SortKey"]:byte() > 122 and a["SortKey"]:byte() < 128) then  -- symbol above digits
-      a["SortKey"] = "/"..a["SortKey"]     -- sort it after /
-    end
-  end   
 end
 
 function GenerateSortKeys(Index)
@@ -638,10 +588,10 @@
 --      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)
@@ -649,20 +599,24 @@
     A = a["Entry"]..tostring(pageA)
     B = b["Entry"]..tostring(pageB)
   end
+--]]
+  A = a["SortKey"]
+  B = b["SortKey"]
+  --print(A,B)
   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)
+--[[
+  if compare then
+    print(A .. "<" .. B)
+  else
+    print(A .. ">" .. B)
+  end 
+--]] 
   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"
   writeLog(1,"pageCompare: "..a["number"].."  "..b["number"].."\n",2) 
@@ -895,7 +849,7 @@
               u1 = ''
           end
           v1 = var[1]:split("\\")[2]  -- bar
-          print(u1,v1,var[1],var[2])
+          --print(u1,v1,var[1],var[2])
           l = '{'..u1..'\\textbar '..v1.."|hyperindexformat}{"..var[2].."}"  
             -- l = foo"|bar -> foo\textbar bar
         end

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-norsk.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-norsk.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-norsk.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -6,11 +6,11 @@
 --     MODIFIED:  Sveinung Heggen (2020-01-02)
 --      LICENSE:  LPPL1.3
 --
--- $Id: xindex-norsk.lua 22 2022-02-07 12:18:15Z hvoss $
+-- $Id: xindex-norsk.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
 if not modules then modules = { } end modules ['xindex-no'] = {
-      version = 0.64,
+      version = 1.02,
       comment = "configuration to xindex.lua",
        author = "Herbert Voss",
     copyright = "Herbert Voss",

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -3,11 +3,11 @@
 -- Also provides a sandboxed Lua table reader and
 -- a function to present large numbers in human-friendly format.
 --
--- $Id: xindex-pretty.lua 22 2022-02-07 12:18:15Z hvoss $
+-- $Id: xindex-pretty.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
 if not modules then modules = { } end modules ['xindex-pretty'] = {
-      version = 0.64,
+      version = 1.02,
       comment = "dump a Lua table for debugging",
        author = "Steve Donovan",
     copyright = "Steve Donovan",

Modified: trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-unicode.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-unicode.lua	2025-08-02 19:51:53 UTC (rev 75953)
+++ trunk/Master/texmf-dist/tex/lualatex/xindex/xindex-unicode.lua	2025-08-02 19:52:19 UTC (rev 75954)
@@ -1,4 +1,4 @@
--- $Id: xindex-unicode.lua 4 2021-07-07 07:25:04Z hvoss $
+-- $Id: xindex-unicode.lua 2 2025-08-02 11:30:20Z herbert $
 -----------------------------------------------------------------------
 
 return {
@@ -141,7 +141,7 @@
 		 [0x00162] = "Lu",
 		 [0x00163] = "Ll",
 		 [0x00164] = "Lu",
-		 [0x00165] = "Ll",
+		 [0x01.01] = "Ll",
 		 [0x00166] = "Lu",
 		 [0x00167] = "Ll",
 		 [0x00168] = "Lu",
@@ -354,7 +354,7 @@
 		 [0x00462] = "Lu",
 		 [0x00463] = "Ll",
 		 [0x00464] = "Lu",
-		 [0x00465] = "Ll",
+		 [0x01.01] = "Ll",
 		 [0x00466] = "Lu",
 		 [0x00467] = "Ll",
 		 [0x00468] = "Lu",
@@ -1327,22 +1327,22 @@
 		 [0x0A64D] = "Ll",
 		 [0x0A64E] = "Lu",
 		 [0x0A64F] = "Ll",
-		 [0x0A650] = "Lu",
-		 [0x0A651] = "Ll",
-		 [0x0A652] = "Lu",
-		 [0x0A653] = "Ll",
-		 [0x0A654] = "Lu",
-		 [0x0A655] = "Ll",
-		 [0x0A656] = "Lu",
-		 [0x0A657] = "Ll",
-		 [0x0A658] = "Lu",
-		 [0x0A659] = "Ll",
-		 [0x0A65A] = "Lu",
-		 [0x0A65B] = "Ll",
-		 [0x0A65C] = "Lu",
-		 [0x0A65D] = "Ll",
-		 [0x0A65E] = "Lu",
-		 [0x0A65F] = "Ll",
+		 [0x1.010] = "Lu",
+		 [0x1.011] = "Ll",
+		 [0x1.012] = "Lu",
+		 [0x1.013] = "Ll",
+		 [0x1.014] = "Lu",
+		 [0x1.015] = "Ll",
+		 [0x1.016] = "Lu",
+		 [0x1.017] = "Ll",
+		 [0x1.018] = "Lu",
+		 [0x1.019] = "Ll",
+		 [0x1.01A] = "Lu",
+		 [0x1.01B] = "Ll",
+		 [0x1.01C] = "Lu",
+		 [0x1.01D] = "Ll",
+		 [0x1.01E] = "Lu",
+		 [0x1.01F] = "Ll",
 		 [0x0A660] = "Lu",
 		 [0x0A661] = "Ll",
 		 [0x0A662] = "Lu",
@@ -1857,7 +1857,7 @@
 		{ 0x00061E, 0x00061F, "Po" },
 		{ 0x000620, 0x00063F, "Lo" },
 		{ 0x000641, 0x00064A, "Lo" },
-		{ 0x00064B, 0x00065F, "Mn" },
+		{ 0x00064B, 0x01.01F, "Mn" },
 		{ 0x000660, 0x000669, "Nd" },
 		{ 0x00066A, 0x00066D, "Po" },
 		{ 0x00066E, 0x00066F, "Lo" },
@@ -1903,7 +1903,7 @@
 		{ 0x000951, 0x000957, "Mn" },
 		{ 0x000958, 0x000961, "Lo" },
 		{ 0x000962, 0x000963, "Mn" },
-		{ 0x000964, 0x000965, "Po" },
+		{ 0x000964, 0x001.01, "Po" },
 		{ 0x000966, 0x00096F, "Nd" },
 		{ 0x000972, 0x000980, "Lo" },
 		{ 0x000982, 0x000983, "Mc" },



More information about the tex-live-commits mailing list.