From 0f3f21d7a985893fe3c8a594937a84640b77b590 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 6 Jul 2023 19:47:42 +0000 Subject: xindex (6jul23) git-svn-id: svn://tug.org/texlive/trunk@67563 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/lualatex/xindex/Makefile | 6 +- Master/texmf-dist/doc/lualatex/xindex/README.md | 3 +- .../texmf-dist/doc/lualatex/xindex/xindex-doc.pdf | Bin 517402 -> 565339 bytes .../texmf-dist/doc/lualatex/xindex/xindex-doc.tex | 197 ++++++++++++++------- Master/texmf-dist/scripts/xindex/xindex.lua | 5 +- Master/texmf-dist/tex/latex/xindex/xindex.sty | 8 +- .../texmf-dist/tex/lualatex/xindex/xindex-AU.lua | 2 +- .../tex/lualatex/xindex/xindex-HAdW-eKO.lua | 2 +- .../texmf-dist/tex/lualatex/xindex/xindex-RU.lua | 2 +- .../texmf-dist/tex/lualatex/xindex/xindex-base.lua | 27 ++- .../tex/lualatex/xindex/xindex-baselib.lua | 2 +- .../tex/lualatex/xindex/xindex-cfg-common.lua | 2 +- .../tex/lualatex/xindex/xindex-cfg-uca.lua | 2 +- .../texmf-dist/tex/lualatex/xindex/xindex-cfg.lua | 2 +- .../tex/lualatex/xindex/xindex-danteedition.lua | 2 +- .../texmf-dist/tex/lualatex/xindex/xindex-dtk.lua | 2 +- .../texmf-dist/tex/lualatex/xindex/xindex-lib.lua | 51 ++++-- .../tex/lualatex/xindex/xindex-norsk.lua | 2 +- .../tex/lualatex/xindex/xindex-pretty.lua | 2 +- .../tex/lualatex/xindex/xindex-yannis.lua | 2 +- 20 files changed, 220 insertions(+), 101 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/doc/lualatex/xindex/Makefile b/Master/texmf-dist/doc/lualatex/xindex/Makefile index e5bddf07a9a..725576594dd 100644 --- a/Master/texmf-dist/doc/lualatex/xindex/Makefile +++ b/Master/texmf-dist/doc/lualatex/xindex/Makefile @@ -16,14 +16,14 @@ ARCHFILES = $(PACKAGE).sty $(PACKAGE).tex $(PACKAGE).pro $(MAIN).tex README Chan all : doc clean # clean doc: - $(LATEX) --shell-escape $(MAIN) + $(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 $(MAIN) - $(LATEX) --shell-escape $(MAIN) + $(LATEX) --shell-escape --interaction=nonstopmode $(MAIN) + $(LATEX) --shell-escape --interaction=nonstopmode $(MAIN) clean : $(RM) *.dvi *.aux *.log *.xml xindex-?.tex xindex-??.tex *.ind *.idx *.toc *.out *.ilg diff --git a/Master/texmf-dist/doc/lualatex/xindex/README.md b/Master/texmf-dist/doc/lualatex/xindex/README.md index 38dae0bdd00..3d4dbd01980 100644 --- a/Master/texmf-dist/doc/lualatex/xindex/README.md +++ b/Master/texmf-dist/doc/lualatex/xindex/README.md @@ -1,6 +1,6 @@ # xindex -Copyright 2019-2022 Herbert Voß +Copyright 2019-2023 Herbert Voß Unicode compatible index programm for LaTeX. It needs Lua 5.3 which will be included in at least LuaTeX 1.09 (TeXLive 2019) @@ -38,6 +38,7 @@ possible options are (short,long): -l,--language (default en) -p,--prefix (default L) -u,--use_UCA + -g,--no_pagenumber -s,--use_stdin -V,--version (default stdin) .idx file(s) diff --git a/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.pdf b/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.pdf index a501b957a41..b34251bf041 100644 Binary files a/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.pdf and b/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.pdf differ diff --git a/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.tex b/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.tex index 25058bc065b..bf2dd746da2 100644 --- a/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.tex +++ b/Master/texmf-dist/doc/lualatex/xindex/xindex-doc.tex @@ -81,9 +81,8 @@ \def\setVersion#1{\setVVersion#1!!} \def\setVVersion#1=#2!!{\def\xIndexVersion{#2}} -\setVersion{version = 0.48}% can be automatically changed by perl +\setVersion{version = 0.49}% can be automatically changed by perl -\setkeys{hv}{cleanup=true,force=false,ExampleDir=Examples,moveToExampleDir} \title{Program and package \texttt{xindex} \\--\\ \normalsize \xIndexVersion\ (\today)} @@ -138,11 +137,11 @@ data = { Entry = , -- like the input line without command \indexentry special = } }, sortChar = , -- of the first character of Entry - Macro = -- only useful with LaTeX package \Lpack{xindex} + Macro = -- only useful with LaTeX package xindex } \end{verbatim} -After reading the input file the table \texttt{pages} has only one element for the number\index{page number} +After reading the input file the Lua table \texttt{pages} has only one element for the number\index{page number} and the so-called special command. When the pages are compressed the table will collect all pages which refer to the same \Index{entry name}. @@ -249,6 +248,9 @@ are alphabetized. \fi +\setkeys{hv}{moveToExampleDir=true,ExampleDir=Examples,cleanup={},verbose,force=false,shellesc} + + \begin{externalDocument}[ % grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule}, pages={1,2}, @@ -256,12 +258,13 @@ are alphabetized. compiler=lualatex, crop, xindex, + xindexOptions=-u, % use unicode runs=2,code,docType=latex, showFilename, align=\centering, lstOptions={columns=fixed}]{xindex} %! lualatex -%! xindex +%! xindex -u (use unicode) \documentclass{scrartcl} \makeatletter \def\theindex{% only for demonstration @@ -269,27 +272,83 @@ are alphabetized. \parskip\z@ \@plus .3\p@\relax \parindent\z@ \let\item\@idxitem} \makeatother +%StartVisiblePreamble +\usepackage{makeidx}\makeindex +\usepackage{xindex}% for \left|\rightParen +%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{\parenLeft} +\item Right paranthesis \} \index{\parenRight} +\end{itemize} +run \texttt{xindex -u }\index{file.idx@\texttt{}|textit}\index{123} +\index{Etage} \index{Ètagé} +\newpage +\printindex +\end{document} +\end{externalDocument} + +It is by design that the parentheses \{ and \} cannot be used as index entry. The \emph{package} +xindex defines the two commands \Lcs{parenLeft} and \Lcs{parenRight} which can be used instead +(see examples above and and below). +The same example without using unicode sorting (no option \Loption{-u}): + + +\begin{externalDocument}[ +% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule}, + pages={1,2}, + frame, + compiler=lualatex, + crop, + xindex, +% xindexOptions=-u, % use unicode + runs=2,code,docType=latex, + showFilename, + align=\centering, + lstOptions={columns=fixed}]{xindex} +%! lualatex +%! xindex (no unicode sort -- simple ascii) +\documentclass{scrartcl} +\makeatletter +\def\theindex{% only for demonstration + \section*{\indexname} + \parskip\z@ \@plus .3\p@\relax \parindent\z@ + \let\item\@idxitem} +\makeatother %StartVisiblePreamble \usepackage{makeidx}\makeindex +\usepackage{xindex}% for \left|\rightParen %StopVisiblePreamble \pagestyle{empty} \begin{document} \section{Escaping characters} \begin{itemize} -\item Exclamation mark ! \index{exclaim ("!)} -\item Vertical bar| \index{Vertical bar ("|)} +\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 ("@)} +\item At character @ \index{At ("@)}\index{"@} +\item Left paranthesis \{ \index{\parenLeft} +\item Right paranthesis \} \index{\parenRight} \end{itemize} -run \texttt{xindex }\index{}\index{123} +run \texttt{xindex -u }\index{file.idx@\texttt{}|textit}\index{123} +\index{Etage} \index{Ètagé} \newpage \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 ""| or @@ -308,7 +367,15 @@ escape_chars = { -- by default " is the escape char which is, of course, not of interest for the user. With the beginning the escaped chars are converted into the internal strings and later back to the origin meaning. +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\parenLeft{\{} +\providecommand\parenRight{\}} +\end{verbatim} + +The following example shows how to use it: \begin{externalDocument}[ % grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule}, @@ -331,6 +398,7 @@ are converted into the internal strings and later back to the origin meaning. \let\item\@idxitem} \makeatother %StartVisiblePreamble +\usepackage{xindex} \usepackage{makeidx}\makeindex %StopVisiblePreamble \pagestyle{empty} @@ -342,6 +410,8 @@ are converted into the internal strings and later back to the origin meaning. \item Doublequote \verb|"| \index{>"} \item Double doublequote \verb|""| \index{>">"} \item At character @ \index{At (>@)} +\item Group start \{ \index{\parenLeft} +\item Group end \{ \index{\parenRight} \end{itemize} Run \texttt{xindex} with \texttt{xindex -e ">"}\index{}\index{123} \newpage @@ -728,23 +798,24 @@ The following runs with \verb|xindex -l jp |: % {\perCent StopVisiblePreamble}% #5 \noindent -\begin{minipage}[t]{0.45\linewidth} -\vspace{0pt} +%\begin{minipage}[t]{0.45\linewidth} +%\vspace{0pt} \setsansfont{SourceHanSans}\sffamily \edef\FancyVerbStartString{\perCent StartVisiblePreamble} \edef\FancyVerbStopString{\perCent StopVisiblePreamble} \colorbox{black!20}{\parbox{\linewidth}{% -\VerbatimInput[fontfamily=helvetica]{Examples/xindex-6.tex} +\VerbatimInput[fontfamily=helvetica]{Examples/xindex-9.tex} }} \edef\FancyVerbStartString{\string\begin\string{document\string}} \edef\FancyVerbStopString{\string\end\string{document\string}} \colorbox{black!10}{\parbox{\linewidth}{% -\VerbatimInput[fontfamily=helvetica]{Examples/xindex-6.tex} +\VerbatimInput[fontfamily=helvetica]{Examples/xindex-9.tex} }} -\end{minipage}\hfill -\begin{minipage}[t]{0.54\linewidth} -\vspace{0pt} + +%\end{minipage}\hfill +%\begin{minipage}[t]{0.54\linewidth} +%\vspace{0pt} \begin{externalDocument}[ % grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule}, % mpwidth=0.5\linewidth, @@ -785,18 +856,14 @@ The following runs with \verb|xindex -l jp |: \pagestyle{empty} \begin{document} \Index{車} \Index{車道} -日本\index{日本|fbox} -\Index{病院} \Index{コンピュータ} -\Index{プリンタ} \Index{印刷} -\Index{スイミングプール} \Index{天王} -\Index{広島} \Index{ドイツ} -\Index{日本} \Index{ワープロ} -\Index{foo} und \Index{bar} -\Index{//} \Index{4711} +日本\index{日本|fbox} \Index{病院} \Index{コンピュータ} +\Index{プリンタ} \Index{印刷} \Index{スイミングプール} \Index{天王} +\Index{広島} \Index{ドイツ} \Index{日本} \Index{ワープロ} +\Index{foo} und \Index{bar} \Index{//} \Index{4711} \newpage\printindex \end{document} \end{externalDocument} -\end{minipage} +%\end{minipage} \subsection{Sorting by using UCA (Unicode Collation Algorithm)} With the optional argument \verb|-u| or alternatively \verb|--use_UCA| the sorting will be done @@ -815,12 +882,15 @@ by \Lprog{xindex}. frame=false, compiler=lualatex, crop, + force=true, xindex, xindexOptions=-u -l cs, runs=2,code,docType=latex, showFilename, align=\centering, - lstOptions={columns=fixed}]{xindex} + usefancyvrb, +% lstOptions={columns=fixed} +]{xindex} %! lualatex \documentclass[paper=a6]{scrartcl} \makeatletter @@ -840,7 +910,7 @@ Sorted with \verb|-u -l cs| \Index{ahoj} \Index{crha}, \Index{čaj}, \Index{chachar}, \Index{rak}, \Index{řeka}, \Index{srp}, \Index{šutr}, \Index{hudba}, \Index{linux}, \Index{zebra}, -\Index{žába}, \Index{7 dubů} +\Index{žába}, \Index{7 dubů} \begin{multicols}{2} \printindex \end{multicols} \end{document} \end{externalDocument} @@ -858,7 +928,7 @@ the \verb|xindex-???| series because uppercase letters are sorted before lowerca mpwidth=0.55\linewidth, pages={2}, frame=false, - compiler=lualatex --shell-escape, + compiler=lualatex, crop, xindex, % xindexOptions=, @@ -903,6 +973,7 @@ foo\newpage \end{externalDocument} +\clearpage The same example sorted with the \verb|-a| or \verb|--no_casesensitive| has another output: now \verb|xindex-cfg-common.lua| is the first one of the \verb|xindex-???| series. @@ -913,7 +984,7 @@ The same example sorted with the \verb|-a| or \verb|--no_casesensitive| has anot mpwidth=0.55\linewidth, pages={2}, frame=false, - compiler=lualatex --shell-escape, + compiler=lualatex, crop, xindex, xindexOptions=-a, @@ -963,14 +1034,14 @@ foo\newpage \subsection{Ignore space for sorting} -By default \textsf{alpha sort} will be sorted \emph{before} \textsf{alphaA}: +By default »\textsf{alpha sort}« will be sorted \emph{before} »\textsf{alphaA}«: \begin{externalDocument}[ % grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule}, mpwidth=0.55\linewidth, pages={2}, frame=false, - compiler=lualatex --shell-escape, + compiler=lualatex, crop, xindex, % xindexOptions=, @@ -1008,7 +1079,7 @@ This can be changed with the optional argument \verb|-i| or \verb|--ignoreSpace| mpwidth=0.55\linewidth, pages={2}, frame=false, - compiler=lualatex --shell-escape, + compiler=lualatex, crop, xindex, xindexOptions=-i, @@ -1191,11 +1262,15 @@ envStop = "\\end{description}" pages={2,3}, frame=true, compiler=lualatex, - %crop, - force=true, + verbose, % xindex, % xindexOptions=-c description -g, - runs=2,code,docType=latex, + runs=2, + code,docType=latex, + force=true, + %xindex -c description -n -g xindex-17.idx + %xindex -c description -n --no_pagenumber gls.idx + runsequence={lualatex,{xindex -c description -n -g},lualatex,lualatex} showFilename, align=\centering, grfOptions={width=0.45\linewidth}, @@ -1233,10 +1308,11 @@ envStop = "\\end{description}" alphabet_lower = { { 'е', 'ё' } } alphabet_upper = { { 'Е', 'Ё' } } \end{filecontents} +%xindex -c description -n --no_pagenumber gls.idx %StartVisiblePreamble \usepackage[english]{babel} \usepackage[imakeidx]{xindex}% run xindex internally -\makeindex[options= -c description -n -g ] % -g same as --no_pagenumber +\makeindex \makeindex[name=gls, options= -c description -n --no_pagenumber] %StopVisiblePreamble \pagestyle{empty} @@ -1495,6 +1571,7 @@ The following example runs \verb|xindex -c dtk -l de -n | xindex, xindexOptions=-c dtk -n -l de, runs=2,code,docType=latex, + runsAfter=2, showFilename, align=\centering, lstOptions={columns=fixed}]{xindex} @@ -1689,7 +1766,7 @@ such commands are ignored. In the following example we put an horizontal line af mpwidth=0.55\linewidth, pages={2}, frame=false, - compiler=lualatex --shell-escape, + compiler=lualatex, crop, xindex, xindexOptions=-l de, @@ -1932,11 +2009,17 @@ and adds the program \Lprog{xindex} as the default program to \Lpack{imakeidx}. mpwidth=0.55\linewidth, pages={6}, frame=false, - compiler=lualatex --shell-escape, + force=true, + compiler=lualatex, crop, - xindex, - xindexOptions=-l de, + force=true, +% xindex, +% xindexOptions=-l de, runs=2,code,docType=latex, +% runsAfter=2, +% cleanup={}, +% moveToExampleDir=false, + shellesc, showFilename, align=\centering, lstOptions={columns=fixed}]{xindex} @@ -1949,7 +2032,7 @@ and adds the program \Lprog{xindex} as the default program to \Lpack{imakeidx}. %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 @@ -2033,10 +2116,10 @@ in the argument of \Lcs{indexentry}. mpwidth=0.55\linewidth, pages={2}, frame=false, - compiler=lualatex --shell-escape, + compiler=lualatex, crop, - xindex, - xindexOptions=-l de, +% xindex, +% xindexOptions=-l de, runs=2,code,docType=latex, showFilename, align=\centering, @@ -2082,10 +2165,10 @@ Duplicate alpha beta gamma.\index{alpha!beta!gamma} mpwidth=0.55\linewidth, pages={2}, frame=false, - compiler=lualatex --shell-escape, + compiler=lualatex, crop, - xindex, - xindexOptions=-l de, +% xindex, +% xindexOptions=-l de, runs=2,code,docType=latex, showFilename, align=\centering, @@ -2100,7 +2183,7 @@ Duplicate alpha beta gamma.\index{alpha!beta!gamma} \makeatother %StartVisiblePreamble \usepackage[imakeidx]{xindex} -\makeindex +\makeindex[options=-l de] % Martin Sievers %StopVisiblePreamble \begin{document} @@ -2119,7 +2202,7 @@ Test \index{A!Test} oder auch \index{B!Test} mpwidth=0.55\linewidth, pages={2}, frame=false, - compiler=lualatex --shell-escape, + compiler=lualatex, crop, xindex, % xindexOptions=-l de, @@ -2148,22 +2231,6 @@ Foo\index{foo!bar2!baz2} \end{document} \end{externalDocument} - - - - - - - - - - - - - - - - \printindex \end{document} diff --git a/Master/texmf-dist/scripts/xindex/xindex.lua b/Master/texmf-dist/scripts/xindex/xindex.lua index 22e07116cd9..ba351877637 100755 --- a/Master/texmf-dist/scripts/xindex/xindex.lua +++ b/Master/texmf-dist/scripts/xindex/xindex.lua @@ -6,11 +6,10 @@ -- AUTHOR: Herbert Voß -- LICENSE: LPPL 1.3 -- --- $Id: xindex.lua 22 2023-01-18 12:18:15Z hvoss $ ----------------------------------------------------------------------- xindex = xindex or { } - local version = 0.48 + local version = 0.49 xindex.version = version --xindex.self = "xindex" @@ -55,7 +54,7 @@ local args = require ('xindex-lapp') [[ -l,--language (default en) -g,--no_pagenumber -p,--prefix (default L) - -u,--use_UCA + -u,--use_UCA -s,--use_stdin -V,--version (default stdin) .idx file(s) diff --git a/Master/texmf-dist/tex/latex/xindex/xindex.sty b/Master/texmf-dist/tex/latex/xindex/xindex.sty index a2b229b74f3..4832bdf75d0 100644 --- a/Master/texmf-dist/tex/latex/xindex/xindex.sty +++ b/Master/texmf-dist/tex/latex/xindex/xindex.sty @@ -1,6 +1,6 @@ %% This is file `xindex.sty', %% -%% Copyright (C) 2018-2022 +%% Copyright (C) 2018-2023 %% Herbert Voss %% %% It may be distributed and/or modified under the @@ -11,10 +11,9 @@ %% and version 1.3c or later is part of all distributions of LaTeX %% version 2005/12/01 or later. % -% $Id: xindex.sty 836 2018-11-11 20:22:56Z herbert $ % % ------------------------------------- -\ProvidesPackage{xindex}[2018/11/11 v. 0.02 write into an idx file (hv)] +\ProvidesPackage{xindex}[2023/07/01 v. 0.03 write into an idx file (hv)] % \RequirePackage{xkeyval} @@ -72,5 +71,8 @@ \def\writeidx#1{\write\@indexfile{\noexpand#1}} \fi +\providecommand\parenLeft{\{} +\providecommand\parenRight{\}} + \endinput diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua index a544692b487..5fa7dbfd3dd 100644 --- a/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua +++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua @@ -9,7 +9,7 @@ ----------------------------------------------------------------------- if not modules then modules = { } end modules ['xindex-AU'] = { - version = 0.48, + version = 0.49, comment = "configuration to xindex.lua", author = "Herbert Voss", copyright = "Herbert Voss", diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua index c82b153e82e..d08942fb9a0 100644 --- a/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua +++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua @@ -11,7 +11,7 @@ -- configuration for index files of the Heidelberger Akademie der Wissenschaften if not modules then modules = { } end modules ['xindex-HAdW-eKO'] = { - version = 0.48, + version = 0.49, comment = "configuration to xindex.lua", author = "Herbert Voss", copyright = "Herbert Voss", diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua index 465a7bdb224..e9adda19358 100644 --- a/Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua +++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua @@ -9,7 +9,7 @@ ----------------------------------------------------------------------- if not modules then modules = { } end modules ['xindex-RU'] = { - version = 0.48, + version = 0.49, comment = "configuration to xindex.lua", author = "Alexey Kuznetzov", copyright = "Herbert Voß", diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua index 37a67838129..336142e30c8 100644 --- a/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua +++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua @@ -8,7 +8,7 @@ -- $Id: xindex-base.lua 22 2022-02-07 12:18:15Z hvoss $ ----------------------------------------------------------------------- -local info = { version = 0.48 } +local info = { version = 0.49 } -- check config if pageNoPrefixDel ~= "" then @@ -31,7 +31,7 @@ else writeLog(2,#lines.." lines of data read\n",0) end end -print("Anzahl Zeilen: "..#lines) +--print("Anzahl Zeilen: "..#lines) if #lines == 0 then print("=========================================") print("Input file(s) is/are empty!") @@ -48,9 +48,10 @@ if #lines == 0 then end print("Presort of \\indexentry lines") +for _,l in pairs(lines) do print (l) end table.sort(lines) if vlevel > 1 then - print("Pres-Sorted index list:") + print("Pre-Sorted index list:") for _,l in pairs(lines) do print (l) end end @@ -174,6 +175,17 @@ if use_UCA then end end writeLog(2,"done\n",0) +else + for i=1, #NewIndex do + v = NewIndex[i] + if findStr(v["SortKey"],"\\parenLeft") < 2 then v["SortKey"] = '{' v["sortChar"] = '{'end + if findStr(v["SortKey"],"\\parenRight") < 2 then v["SortKey"] = '}' end + if findStr(v["SortKey"],"//escapedexcl//") < 2 then v["SortKey"] = '!' end + if findStr(v["SortKey"],"//escapedquote//") < 2 then v["SortKey"] = '"' end + if findStr(v["SortKey"],"//escapedat//") < 2 then v["SortKey"] = '@' end + if findStr(v["SortKey"],"//escapedvert//") < 2 then v["SortKey"] = '|' end + NewIndex[i] = v + end end if SORTendhook then @@ -217,27 +229,34 @@ for k=1,#NewIndex do writeLog(1," NewIndex[k]: "..v["Entry"].."\n",2) writeLog(1,require 'xindex-pretty'.dump(v),3) -- only for internal dump entry = v["Entry"] +-- print("SortKey:"..v["SortKey"].." sortChar:"..v["sortChar"]) writeLog(1,"\nBase start: "..entry.."\n",2) -- local c = utf.sub(v["sortChar"],1,1) -- if utf8.codepoint(c) < 12288 then -- Japanese starts at hex 3000 -- firstChar = v["sortChar"] -- else +-- print(v["SortKey"],v["sortChar"],v["Entry"]) if language == "cs" then -- Czech language has special char ch if utf.sub(v["sortChar"],1,2) == "CH" then - firstChar = "Ch" + firstChar = "Ch" else +-- firstChar = utf.sub(v["SortKey"],1,1) firstChar = utf.sub(v["sortChar"],1,1) end else +-- firstChar = utf.sub(v["SortKey"],1,1) firstChar = utf.sub(v["sortChar"],1,1) -- catch a translatet Ö->OE end -- end currentChar = firstChar + local SortKey = tostring(v["SortKey"]) + writeLog(1,"SortKey="..SortKey.."; firstChar="..currentChar.."\n",2) if string.len(firstChar) > 1 then charType = getCharType(utf.sub(firstChar,1,1)) else charType = getCharType(firstChar) end +-- print(">>"..v["sortChar"].." "..firstChar.." "..tostring(charType)) if charType == 0 then numbers = false symbols = true diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua index 5e563aec478..9d7c9188eb4 100644 --- a/Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua +++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua @@ -9,7 +9,7 @@ ----------------------------------------------------------------------- if not modules then modules = { } end modules ['xindex-baselib'] = { - version = 0.48, + version = 0.49, comment = "base library to xindex.lua", author = "Herbert Voss", copyright = "Herbert Voss", diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua index 33f4b2cbb4e..4793d1758dd 100644 --- a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua +++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua @@ -9,7 +9,7 @@ ----------------------------------------------------------------------- if not modules then modules = { } end modules ['xindex-cfg-common'] = { - version = 0.48, + version = 0.49, comment = "configuration to xindex.lua", author = "Herbert Voss", copyright = "Herbert Voss", diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua index 2a87366dad8..014d3719d23 100644 --- a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua +++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua @@ -9,7 +9,7 @@ ----------------------------------------------------------------------- if not modules then modules = { } end modules ['xindex-cfg-lua'] = { - version = 0.48, + version = 0.49, comment = "configuration to xindex-cfg-uca.lua", author = "Herbert Voss", copyright = "Herbert Voss", diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua index b475a2eb7f9..24098c5272e 100644 --- a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua +++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua @@ -9,7 +9,7 @@ ----------------------------------------------------------------------- if not modules then modules = { } end modules ['xindex-cfg'] = { - version = 0.48, + version = 0.49, comment = "main configuration to xindex.lua", author = "Herbert Voss", copyright = "Herbert Voss", diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua index 80d7426381f..f7d2d09b5fe 100644 --- a/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua +++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua @@ -9,7 +9,7 @@ ----------------------------------------------------------------------- if not modules then modules = { } end modules ['xindex-cfg'] = { - version = 0.48, + version = 0.49, comment = "configuration file for the DANTE Edition", author = "Herbert Voss", copyright = "Herbert Voss", diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua index 0082be4dc94..74de071b0a3 100644 --- a/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua +++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua @@ -9,7 +9,7 @@ ----------------------------------------------------------------------- if not modules then modules = { } end modules ['xindex-cfg'] = { - version = 0.48, + version = 0.49, comment = "DTK configuration to xindex.lua", author = "Herbert Voss", copyright = "Herbert Voss", diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua index 97ede6b8fce..f321765c64c 100644 --- a/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua +++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua @@ -9,7 +9,7 @@ ----------------------------------------------------------------------- if not modules then modules = { } end modules ['xindex-lib'] = { - version = 0.48, + version = 0.49, comment = "main library to xindex.lua", author = "Herbert Voss", copyright = "Herbert Voss", @@ -125,7 +125,8 @@ function read_lines_from(infile) str = line:gsub('^\\%a+%s*{','{') -- remove "\\indexentry " writeLog(1,"read_lines: str="..str.." ("..utf.sub(str,2,2)..")\n",2) if getCharType(utf.sub(str,2,2)) == 0 then -- we have a symbol - lines[#lines + 1] = str:gsub('^{*','{ ') -- add a space before the symbol + lines[#lines + 1] = str:gsub('^{*','{') -- add a space ... why???? +-- lines[#lines + 1] = str:gsub('^{*','{ ') -- add a space before the symbol else lines[#lines + 1] = str end @@ -275,6 +276,7 @@ function getEntryAndPage(w, nextW, EntryList) sortChar= NormalizedUpper(utf.sub(IndexString,1,1)), -- :byte(), -- Initial for later output Macro = macro } + --print("Entry:"..EntryList[#EntryList]["sortChar"]) if args_v then if Special == "" then Special = "-" end writeLog(1,"getEntryAndPage: "..tostring(IndexString,pageNo,Special,utf.sub(IndexString,1,1),macro).."\n",2) @@ -318,7 +320,7 @@ end --[[ example entry EntryList[2] = { - Entry = "Johann", -- the index item foo@bar + Entry = 'Johann//escapedexcl//', -- the index item foo@bar pages = { -- the page number(s) and the part after | { number = 111, special = '\\emph' }, @@ -502,6 +504,19 @@ function getCharType(c) end end +function findStr(s,f) + if s == nil then return 99999 end + str = s:match'^%s*(.*)' -- strip left spaces +-- s:gsub("%s+", "")-- strip spaces +-- print(s,f) + local i,j = str:find(f) +-- print(tostring(i),tostring(j)) + if i == nil + then return 99999 -- makes it easier to compare with < + else return i + end +end + --print(get_category(utf8.codepoint('ö'))) --print(category_to_number(get_category(utf8.codepoint('ö')))) @@ -532,22 +547,36 @@ function GenerateSortKey(a) if ignoreSpace then a["SortKey"] = A:gsub("%s+", "") -- remove spaces else - a["SortKey"] = A + a["SortKey"] = A:match'^%s*(.*)' -- strip only left spaces end else A = NormalizedChars(getSortString(a["Entry"].." "..Apage..a["pages"][1]["special"]):gsub('!',' ')) -- replace! by empty if ignoreSpace then a["SortKey"] = A:gsub("%s+", "")-- remove spaces else - a["SortKey"] = A + a["SortKey"] = A:match'^%s*(.*)' -- strip only left spaces end end - -- print(a["SortKey"]) - -- return A +-- s:gsub("%s+", "") strip spaces + if findStr(a["SortKey"],"\\parenLeft") < 2 then a["SortKey"] = '{ '..Apage end + if findStr(a["SortKey"],"\\parenRight") < 2 then a["SortKey"] = '} '..Apage end + if findStr(a["SortKey"],"//escapedexcl//") < 2 then a["SortKey"] = '! '..Apage end + if findStr(a["SortKey"],"//escapedquote//") < 2 then a["SortKey"] = '" '..Apage end + if findStr(a["SortKey"],"//escapedat//") < 2 then a["SortKey"] = '@ '..Apage end + if findStr(a["SortKey"],"//escapedvert//") < 2 then a["SortKey"] = '| '..Apage end + -- 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() > 122 and a["SortKey"]:byte() < 128) then -- symbol above digits + a["SortKey"] = "/"..a["SortKey"] -- sort it after / + end + end end function GenerateSortKeys(Index) for _, entry in ipairs(Index) do +-- print("<<".._..entry["Entry"]) GenerateSortKey(entry) end end @@ -555,12 +584,13 @@ end function UTFCompare(a,b) local A = a["SortKey"] local B = b["SortKey"] - writeLog(1,"UTFCompare: A--B "..A.."--"..B.."\n",2) if use_UCA then - return collator_obj:compare_strings(A,B) + compare = collator_obj:compare_strings(A,B) else - return A