summaryrefslogtreecommitdiff
path: root/indexing
diff options
context:
space:
mode:
Diffstat (limited to 'indexing')
-rw-r--r--indexing/xindex/CHANGELOG6
-rw-r--r--indexing/xindex/README.md8
-rw-r--r--indexing/xindex/doc/tests/HADW.tex2
-rw-r--r--indexing/xindex/doc/tests/french.idx46
-rw-r--r--indexing/xindex/doc/tests/french.ind76
-rw-r--r--indexing/xindex/doc/tests/french.pdfbin0 -> 14439 bytes
-rw-r--r--indexing/xindex/doc/tests/french.tex20
-rw-r--r--indexing/xindex/doc/xindex-doc.pdfbin588580 -> 625110 bytes
-rw-r--r--indexing/xindex/doc/xindex-doc.tex580
-rw-r--r--indexing/xindex/latex/xindex.sty6
-rw-r--r--indexing/xindex/lualatex/xindex-AU.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-DIN2.lua37
-rw-r--r--indexing/xindex/lualatex/xindex-HAdW-eKO.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-RU.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-base.lua23
-rw-r--r--indexing/xindex/lualatex/xindex-baselib.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-cfg-common.lua17
-rw-r--r--indexing/xindex/lualatex/xindex-cfg-no_uca.lua (renamed from indexing/xindex/lualatex/xindex-cfg.lua)6
-rw-r--r--indexing/xindex/lualatex/xindex-cfg-uca.lua18
-rw-r--r--indexing/xindex/lualatex/xindex-danteedition.lua17
-rw-r--r--indexing/xindex/lualatex/xindex-dtk.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-lib.lua82
-rw-r--r--indexing/xindex/lualatex/xindex-norsk.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-pretty.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-yannis.lua2
-rwxr-xr-xindexing/xindex/scripts/xindex.lua124
26 files changed, 807 insertions, 277 deletions
diff --git a/indexing/xindex/CHANGELOG b/indexing/xindex/CHANGELOG
index df515fcbec..5551b6f718 100644
--- a/indexing/xindex/CHANGELOG
+++ b/indexing/xindex/CHANGELOG
@@ -1,3 +1,9 @@
+0.60 2024-05-16 - more fixes for UCA as default mode
+0.59 2024-05-13 - removed the xindex-cfg.lua
+0.58 2024-05-12 - Use UCA as default
+ fix for french sorting
+0.57 2024-01-20 - Test version for UCA
+0.56 2024-01-12 - fix for leading spaces of index entries
0.55 2023-07-30 - fix for wrong presort -- disabled the use of \writeidx
0.54 2023-07-28 - do not print control output for testing
0.53 2023-07-16 - added function literize to escape special lua characters
diff --git a/indexing/xindex/README.md b/indexing/xindex/README.md
index 3d4dbd0198..729e6766ae 100644
--- a/indexing/xindex/README.md
+++ b/indexing/xindex/README.md
@@ -1,15 +1,17 @@
# xindex
-Copyright 2019-2023 Herbert Voß
+Copyright 2019-2024 Herbert Voß
+The files xindex-lapp.lua and xindex-pretty.lua have the MIT licence.
+all other files are LPPL 1.3
Unicode compatible index programm for LaTeX. It needs Lua 5.3 which
will be included in at least LuaTeX 1.09 (TeXLive 2019)
* xindex.lua -- main file
-* xindex-cfg.lua -- config module
* xindex-cfg-common.lua -- main config module
* xindex-cfg-uca.lua -- config module for uca
+* xindex-cfg-no_uca.lua -- config module for old mode
* xindex-base.lua -- base file
* xindex-baselib.lua -- base file
* xindex-lib.lua -- functions module
@@ -37,9 +39,9 @@ possible options are (short,long):
-o,--output (default "")
-l,--language (default en)
-p,--prefix (default L)
- -u,--use_UCA
-g,--no_pagenumber
-s,--use_stdin
+ -x,--no_UCA
-V,--version
<files...> (default stdin) .idx file(s)
diff --git a/indexing/xindex/doc/tests/HADW.tex b/indexing/xindex/doc/tests/HADW.tex
index 0ce50d0b10..34feccc755 100644
--- a/indexing/xindex/doc/tests/HADW.tex
+++ b/indexing/xindex/doc/tests/HADW.tex
@@ -14,7 +14,7 @@
\makeatother
\begin{document}
-Run with \verb|xindex --config HAdW-eKO|
+Run with \verb|xindex --config HAdW-eKO -x| no UCA
\printindex
\end{document}
diff --git a/indexing/xindex/doc/tests/french.idx b/indexing/xindex/doc/tests/french.idx
new file mode 100644
index 0000000000..01b880e40f
--- /dev/null
+++ b/indexing/xindex/doc/tests/french.idx
@@ -0,0 +1,46 @@
+\indexentry{CÔTÉ}{1}
+\indexentry{cote}{1}
+\indexentry{Côté}{1}
+\indexentry{COTÉ}{1}
+\indexentry{côte}{1}
+\indexentry{COTE}{1}
+\indexentry{côté}{1}
+\indexentry{Coté}{1}
+\indexentry{coté}{1}
+\indexentry{Cote}{1}
+\indexentry{CÔTE}{1}
+\indexentry{Côte}{1}
+\indexentry{lésé}{1}
+\indexentry{péché}{1}
+\indexentry{bohème}{1}
+\indexentry{gêné}{1}
+\indexentry{pêche}{1}
+\indexentry{cæsium}{1}
+\indexentry{pêcher}{1}
+\indexentry{révèle}{1}
+\indexentry{pécher}{1}
+\indexentry{révélé}{1}
+\indexentry{Bohême}{1}
+\indexentry{relève}{1}
+\indexentry{PÉCHÉ}{1}
+\indexentry{maçon}{1}
+\indexentry{relevé}{1}
+\indexentry{Élève}{1}
+\indexentry{gêne}{1}
+\indexentry{élevé}{1}
+\indexentry{MÂCON}{1}
+\indexentry{gène}{1}
+\indexentry{Bohémien}{1}
+\indexentry{caennais}{1}
+\indexentry{lèse}{1}
+\indexentry{coexistence}{1}
+\indexentry{cœur}{1}
+\indexentry{coefficient}{1}
+\indexentry{cafard}{1}
+\indexentry{CŒUR}{1}
+\indexentry{CÆSIUM}{1}
+\indexentry{coté}{1}
+\indexentry{cœur}{1}
+\indexentry{péché}{1}
+\indexentry{coté}{2}
+\indexentry{coefficient}{2}
diff --git a/indexing/xindex/doc/tests/french.ind b/indexing/xindex/doc/tests/french.ind
new file mode 100644
index 0000000000..01b62fc86d
--- /dev/null
+++ b/indexing/xindex/doc/tests/french.ind
@@ -0,0 +1,76 @@
+
+\begin{theindex}
+
+\indexspace
+\textbf{B}\label{L-xindex-B}
+\nopagebreak[4]
+ \item bohème, {1}
+ \item Bohême, {1}
+ \item Bohémien, {1}
+
+\indexspace
+\textbf{C}\label{L-xindex-C}
+\nopagebreak[4]
+ \item caennais, {1}
+ \item cæsium, {1}
+ \item CÆSIUM, {1}
+ \item cafard, {1}
+ \item coefficient, {1\,sq.}
+ \item cœur, {1}
+ \item CŒUR, {1}
+ \item coexistence, {1}
+ \item cote, {1}
+ \item Cote, {1}
+ \item COTE, {1}
+ \item côte, {1}
+ \item Côte, {1}
+ \item CÔTE, {1}
+ \item coté, {1\,sq.}
+ \item Coté, {1}
+ \item COTÉ, {1}
+ \item côté, {1}
+ \item Côté, {1}
+ \item CÔTÉ, {1}
+
+\indexspace
+\textbf{E}\label{L-xindex-E}
+\nopagebreak[4]
+ \item Élève, {1}
+ \item élevé, {1}
+
+\indexspace
+\textbf{G}\label{L-xindex-G}
+\nopagebreak[4]
+ \item gène, {1}
+ \item gêne, {1}
+ \item gêné, {1}
+
+\indexspace
+\textbf{L}\label{L-xindex-L}
+\nopagebreak[4]
+ \item lèse, {1}
+ \item lésé, {1}
+
+\indexspace
+\textbf{M}\label{L-xindex-M}
+\nopagebreak[4]
+ \item MÂCON, {1}
+ \item maçon, {1}
+
+\indexspace
+\textbf{P}\label{L-xindex-P}
+\nopagebreak[4]
+ \item pêche, {1}
+ \item péché, {1}
+ \item PÉCHÉ, {1}
+ \item pécher, {1}
+ \item pêcher, {1}
+
+\indexspace
+\textbf{R}\label{L-xindex-R}
+\nopagebreak[4]
+ \item relève, {1}
+ \item relevé, {1}
+ \item révèle, {1}
+ \item révélé, {1}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/french.pdf b/indexing/xindex/doc/tests/french.pdf
new file mode 100644
index 0000000000..b7acdcb220
--- /dev/null
+++ b/indexing/xindex/doc/tests/french.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/french.tex b/indexing/xindex/doc/tests/french.tex
new file mode 100644
index 0000000000..8f2191c0dd
--- /dev/null
+++ b/indexing/xindex/doc/tests/french.tex
@@ -0,0 +1,20 @@
+\documentclass[paper=a4,twocolumn]{scrartcl}
+\usepackage{libertinus-otf}
+\usepackage[french]{babel}
+\usepackage{makeidx} \makeindex
+\newcommand*{\IND}[1]{\index{#1}#1\par}
+\begin{document}
+%%% xindex -l fr <file>
+\IND{CÔTÉ} \IND{cote} \IND{Côté} \IND{COTÉ} \IND{côte}
+\IND{COTE} \IND{côté} \IND{Coté} \IND{coté} \IND{Cote}
+\IND{CÔTE} \IND{Côte} \IND{lésé} \IND{péché}
+\IND{bohème} \IND{gêné} \IND{pêche} \IND{cæsium}
+\IND{pêcher} \IND{révèle} \IND{pécher} \IND{révélé}
+\IND{Bohême} \IND{relève} \IND{PÉCHÉ} \IND{maçon}
+\IND{relevé} \IND{Élève} \IND{gêne} \IND{élevé}
+\IND{MÂCON} \IND{gène} \IND{Bohémien} \IND{caennais}
+\IND{lèse} \IND{coexistence} \IND{cœur}
+\IND{coefficient} \IND{cafard} \IND{CŒUR} \IND{CÆSIUM}
+\newpage \IND{coté} \IND{cœur} \IND{péché} \newpage
+\IND{coté}\IND{coefficient} \printindex
+\end{document}
diff --git a/indexing/xindex/doc/xindex-doc.pdf b/indexing/xindex/doc/xindex-doc.pdf
index 31143f6fe1..6615903e34 100644
--- a/indexing/xindex/doc/xindex-doc.pdf
+++ b/indexing/xindex/doc/xindex-doc.pdf
Binary files differ
diff --git a/indexing/xindex/doc/xindex-doc.tex b/indexing/xindex/doc/xindex-doc.tex
index df19098a87..9af878cdd7 100644
--- a/indexing/xindex/doc/xindex-doc.tex
+++ b/indexing/xindex/doc/xindex-doc.tex
@@ -81,7 +81,7 @@
\def\setVersion#1{\setVVersion#1!!}
\def\setVVersion#1=#2!!{\def\xIndexVersion{#2}}
-\setVersion{version = 0.55}% can be automatically changed by perl
+\setVersion{version = 0.59}% can be automatically changed by perl
@@ -102,7 +102,7 @@ Mark Baudoin;
Denis Bitouzé;
Andreas Deininger;
Brian Dunn;
-Gonzalo Pesquero Serrano;
+Daniel Flipo;
Michal Hoftich;
Mykel Kochenderfer;
Alexey Kuznetsov;
@@ -112,6 +112,7 @@ Heiko Oberdiek;
Matteo Paolini;
Stefan Pinnow;
Florent Rougon;
+Gonzalo Pesquero Serrano;
Martin Sievers;
Simon Spiegel;
Jürgen Spitzmüller;
@@ -167,7 +168,7 @@ EntryList[2] = {
\subsection{Syntax}
The \Index{syntax} is \verb|xindex [...] <file(s)>| where \verb|[...]| are optional \Index{argument}s, either in short or
-long form which, of course, can be mixed:
+long7 form which, of course, can be mixed:
\begin{verbatim}
xindex
@@ -188,7 +189,7 @@ xindex
[-o,--output ] default is <input>.ind
[-p,--prefix] default L
[-s,--use_stdin ] default is false
- [-u,--use_UCA ] default is false
+ [-x,--no_UCA ] default is false
<files...> (default stdin) file(s)[.idx] one or more files
\end{verbatim}
@@ -269,19 +270,19 @@ are alphabetized.
compiler=lualatex,
crop,
xindex,
- xindexOptions=-u, % use unicode
+ xindexOptions=-l fr,
runs=2,code,docType=latex,
showFilename,
align=\centering,
lstOptions={columns=fixed}]{xindex}
%! lualatex
-%! xindex -u (use unicode)
\documentclass{scrartcl}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage{makeidx}\makeindex
@@ -299,9 +300,9 @@ are alphabetized.
\item Left paranthesis \{ \index{\braceLeft}
\item Right paranthesis \} \index{\braceRight}
\end{itemize}
-run \texttt{xindex -u <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
+run \texttt{xindex -l fr <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
\index{Etage} \index{Ètagé}
-\newpage
+\twocolumn
\printindex
\end{document}
\end{externalDocument}
@@ -310,7 +311,7 @@ It is by design that the braces \{ and \} cannot be used as index entry. The \em
xindex defines the two commands \Lcs{braceLeft} and \Lcs{braceRight} which can be used instead
(see examples above and and below).
-The same example without using unicode sorting (no option \Loption{-u}):
+The same example without using unicode sorting (option \Loption{-x}):
\begin{externalDocument}[
@@ -320,7 +321,7 @@ The same example without using unicode sorting (no option \Loption{-u}):
compiler=lualatex,
crop,
xindex,
-% xindexOptions=-u, % use unicode
+ xindexOptions=-x, % do not use unicode
runs=2,code,docType=latex,
showFilename,
align=\centering,
@@ -328,11 +329,12 @@ The same example without using unicode sorting (no option \Loption{-u}):
%! lualatex
%! xindex (no unicode sort -- simple ascii)
\documentclass{scrartcl}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage{makeidx}\makeindex
@@ -350,9 +352,9 @@ The same example without using unicode sorting (no option \Loption{-u}):
\item Left paranthesis \{ \index{\braceLeft}
\item Right paranthesis \} \index{\braceRight}
\end{itemize}
-run \texttt{xindex -u <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
+run \texttt{xindex -x <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
\index{Etage} \index{Ètagé}
-\newpage
+\twocolumn
\printindex
\end{document}
\end{externalDocument}
@@ -386,9 +388,8 @@ The following example shows how to use it:
frame,
compiler=lualatex,
crop,
- force=false,
xindex,
- xindexOptions=-e ">",
+ xindexOptions=-e ">" -n,
runs=2,code,docType=latex,
showFilename,
align=\centering,
@@ -417,7 +418,7 @@ The following example shows how to use it:
\item Group start \{ \index{\braceLeft}
\item Group end \{ \index{\braceRight}
\end{itemize}
-Run \texttt{xindex} with \texttt{xindex -e ">"}\index{<file.idx>}\index{123}
+Run \texttt{xindex} with \texttt{xindex -e ">" -n}\index{<file.idx>}\index{123}
\newpage
\printindex
\end{document}
@@ -457,7 +458,6 @@ The following example was run with \verb|xindex -l it <file>.idx|:
frame,
compiler=lualatex,
crop,
- force=false,
xindex,
xindexOptions=-l it -e ">",
runs=2,code,docType=latex,
@@ -467,11 +467,12 @@ The following example was run with \verb|xindex -l it <file>.idx|:
%! lualatex
\documentclass{scrartcl}
\usepackage[italian]{babel}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage{makeidx}\makeindex
@@ -487,8 +488,7 @@ The following example was run with \verb|xindex -l it <file>.idx|:
\item At siboli @ \index{At (>@)}
\end{itemize}
Initio \texttt{xindex} con \texttt{xindex -l it -e ">"}\index{123}
-\newpage
-\printindex
+\twocolumn \printindex
\end{document}
\end{externalDocument}
@@ -504,7 +504,6 @@ package \Lpack{babel} or \Lpack{polyglossia} are used.
frame,
compiler=lualatex,
crop,
- force=false,
xindex,
xindexOptions=-k -e "?",
runs=2,code,docType=latex,
@@ -513,11 +512,12 @@ package \Lpack{babel} or \Lpack{polyglossia} are used.
lstOptions={columns=fixed}]{xindex}
%! lualatex
\documentclass{scrartcl}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage[dutch]{babel} % !!!!
@@ -534,7 +534,7 @@ package \Lpack{babel} or \Lpack{polyglossia} are used.
\item At character @ \index{At (?@)}\index{?@}
\end{itemize}
Run \texttt{xindex} with \texttt{xindex -k -e "?"}\index{123}
-\newpage\index{xindex@\texttt{xindex}}
+\twocolumn\index{xindex@\texttt{xindex}}
\printindex
\end{document}
\end{externalDocument}
@@ -554,8 +554,9 @@ This allows to have different indexes with different language.
frame,
compiler=lualatex,
crop,
+ force,
xindex,
- xindexOptions=-u -l RU -c RU,
+ xindexOptions=-l RU -c RU -n,
runs=2,code,docType=latex,
showFilename,
align=\centering,
@@ -564,18 +565,19 @@ This allows to have different indexes with different language.
]{xindex}
%! lualatex
\documentclass{scrartcl}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage[russian]{babel}
\usepackage{fontspec}
\usepackage[regular]{newcomputermodern}
\defaultfontfeatures{Ligatures=TeX}
-\usepackage{xindex}\makeindex % run with xindex -u -l RU -c RU <file>
+\usepackage{xindex}\makeindex % run with xindex -l RU -c RU <file>
%StopVisiblePreamble
\pagestyle{empty}
\begin{document}
@@ -599,7 +601,7 @@ This allows to have different indexes with different language.
\verb|\index{Ёж!ушастый (Hemiechinus auritus)}|%
\index{Ёж!ушастый (Hemiechinus auritus)}
\end{tabular}
-\printindex % xindex -u -l RU -c RU <file>
+\printindex % xindex -l RU -c RU -n <file>
\end{document}
\end{externalDocument}
@@ -609,8 +611,207 @@ This allows to have different indexes with different language.
\section{Sorting}
+
+
+
+\subsection{Default sorting by the UCA (Unicode Collection Algorithm)}
+This Lua library from Michal Hoftich is part of \TeXLive\ and is used by default
+for sorting. The supported languages and variants are listed in the file
+\Lfile{lua-uca-languages.lua}:
+
+\texttt{af,
+am,
+ar,
+as,
+az,
+be,
+bg,
+bn,
+bs,
+bs\_cyrl,
+ca,
+chr,
+cs,
+cy,
+da,
+de,
+de\_din2,
+dsb,
+dz,
+ee,
+el,
+en,
+eo,
+es,
+et,
+fa,
+fi,
+fil,
+fo,
+fr,
+fr\_backward\_accents,
+ga,
+gl,
+gu,
+ha,
+haw,
+he,
+hr,
+hi,
+hsb,
+hu,
+hy,
+id,
+ig,
+is,
+it,
+ja,
+ka,
+kk,
+kl,
+km,
+kn,
+ko,
+kok,
+ky,
+lb,
+lkt,
+ln,
+lo,
+lt,
+lv,
+mk,
+ml,
+mn,
+mr,
+ms,
+mt,
+my,
+nb,
+ne,
+nl,
+nn,
+no,
+om,
+pa,
+pl,
+ps,
+pt,
+ro,
+ru,
+se,
+si,
+sk,
+sl,
+smn,
+sq,
+sr,
+sr\_latn,
+sv,
+sw,
+ta,
+te,
+th,
+tk,
+to,
+tr,
+ug,
+uk,
+ur,
+uz,
+vi,
+vo,
+wae,
+wo,
+yi,
+yo,
+zh,
+zu}
+
+
+
+The sorting order can be easily modified. Read the documentation of the package \texttt{LUA-UCA}
+on how to do it and what languages are supported so far. Any additional code setting for
+UCA should be done in the file \Lfile{xindex-cfg-uca.lua}, which will automatically be read
+by \Lprog{xindex}.
+
+\begin{importantblock}
+If possible, you should use the Unicode sorting by default and only for some special cases
+where you define your own sorting scheme, you should use the \verb|-x| option.
+\end{importantblock}
+
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+% pages={6},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l cs,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ usefancyvrb,
+% lstOptions={columns=fixed}
+]{xindex}
+%! lualatex
+\documentclass[paper=a6]{scrartcl}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+%StartVisiblePreamble
+\usepackage{multicol}
+\usepackage{makeidx}\makeindex
+\def\Index#1{#1\index{#1}}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+Sorted with \verb|-l cs|
+\Index{ahoj} \Index{crha}, \Index{čaj}, \Index{chachar},
+\Index{rak}, \Index{řeka}, \Index{srp}, \Index{šutr},
+\Index{hudba}, \Index{linux}, \Index{zebra},
+\Index{žába}, \Index{7 dubů}
+\begin{multicols}{2} \printindex \end{multicols}
+\end{document}
+\end{externalDocument}
+
+
+
+
+Modifications can be done in a config file which is then loaded by the
+option \texttt{-c}. For example: the file \Lfile{xindex-cfg-uca.lua} has
+modification for french and norwegian. For french the standard sorting rules
+\texttt{fr\_backward\_accents}, are a bit
+special and should be the default also for the language \texttt{fr}:
+
+\begin{verbatim}
+languages.fr = function(collator_obj)
+ -- reverse search for accents in French (recommended):
+ collator_obj.accents_backward = true
+ local tailoring = function(s) collator_obj:tailor_string(s) end
+ tailoring("&æ=ae")
+ tailoring("&œ=oe")
+ tailoring("&th<þ<<<Þ") -- Canadian, see SGQRI004.pdf
+ return collator_obj
+end
+\end{verbatim}
+
+Add any additional modifications to this file or create an own
+config file and load it with \texttt{-c}.
+
+
\subsection{Default sorting by a character table}
-The default sorting is unicode aware and uses a translation table for accented characters:
+This sorting is not completely unicode aware. It uses a translation table for accented characters,
+which should only be used if the standard sorting method with UCA is not possible! This kind of sortierung
+has to be choosed by the option \texttt{-x} (don't use UCA). The option \texttt{-u} for
+using UCA is deprecated, because using UCA is the default.
+
+Again, if on wants to use an own transformation table, then use something like:
\begin{verbatim}
alphabet_lower = { -- for sorting
@@ -684,6 +885,8 @@ alphabet_upper = { -- for sorting
\end{verbatim}
+\subsection{Examples}
+\subsubsection{German language and no UCA}
\begin{externalDocument}[
grfOptions={scale=0.9},%width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
@@ -693,7 +896,7 @@ alphabet_upper = { -- for sorting
compiler=lualatex,
crop,
xindex,
- xindexOptions=-l de,
+ xindexOptions=-l de -x,
runs=2,code,docType=latex,
showFilename,
usefancyvrb,
@@ -719,8 +922,7 @@ alphabet_upper = { -- for sorting
\makeatother
\pagestyle{empty}
\begin{document}
-Sorted with \verb|-l DE|
-
+Sorted with \verb|-l DE -x|\par
\Index{Österreich} \Index{Öresund}
\Index{Ostern} \Index{Ober}
\Index{Oberin} \Index{Österreich}
@@ -740,10 +942,126 @@ Sorted with \verb|-l DE|
\end{externalDocument}
+\subsubsection{German language (DIN2) and no UCA}
+
+In this case a letter Ö, Ä, Ü, ö, ä, ü is converted to Oe, Ae, Ue, oe, ae, ue before sorting:
+
+\noindent
+\begin{externalDocument}[
+ grfOptions={scale=0.9},%width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.4\linewidth,
+ pages={2},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-c DIN2 -l DE -x,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+%! lualatex
+\documentclass[paper=a5]{scrartcl}
+\usepackage[ngerman]{babel}
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+\newcommand\Index[1]{\index{#1}#1}
+%StopVisiblePreamble
+\usepackage{multicol}
+\makeatletter
+\def\theindex{% only for demonstration
+ \newpage
+ \section*{\indexname}
+ \begin{multicols}{2}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\def\endtheindex{\end{multicols}}
+\makeatother
+\pagestyle{empty}
+\begin{document}
+Sorted with
+\verb|--config DIN2 -l DE -x|
+
+\Index{Österreich} \Index{Öresund}
+\Index{Ostern} \Index{Ober}
+\Index{Oberin} \Index{Österreich}
+\Index{Öresund} \Index{Ostern}
+\Index{Ober} \Index{Oberin}
+\Index{Obstler} \Index{Öl}
+\Index{ölen} \Index{Ödem}
+\Index{Oligarch} \Index{Oder}
+\Index{oder} \index{Fluss!Oder}
+\index{Oder|seealso{Fluss}}
+\Index{Göbel} \Index{Goethe}
+\Index{Göthe} \Index{Götz}
+\Index{Goldmann}
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+
+\subsubsection{German language 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,
+ force,
+ crop,
+ xindex,
+ xindexOptions=-l de, % german and UCA
+ runs=2,code,docType=latex,
+ showFilename,
+ usefancyvrb,
+ align=\centering,
+% lstOptions={columns=fixed}
+]{xindex}
+%! lualatex
+\documentclass[paper=a5]{scrartcl}
+\usepackage[ngerman]{babel}
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+\newcommand\Index[1]{\index{#1}#1}
+%StopVisiblePreamble
+\usepackage{multicol}
+\makeatletter
+\def\theindex{% only for demonstration
+ \newpage
+ \section*{\indexname}
+ \begin{multicols}{2}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\def\endtheindex{\end{multicols}}
+\makeatother
+\pagestyle{empty}
+\begin{document}
+Sorted with \verb|-l DE| and using UCA\par
+\Index{Österreich} \Index{Öresund}
+\Index{Ostern} \Index{Ober}
+\Index{Oberin} \Index{Österreich}
+\Index{Öresund} \Index{Ostern}
+\Index{Ober} \Index{Oberin}
+\Index{Obstler} \Index{Öl}
+\Index{ölen} \Index{Ödem}
+\Index{Oligarch} \Index{Oder}
+\Index{oder} \index{Fluss!Oder}
+\index{Oder|seealso{Fluss}}
+\Index{Göbel} \Index{Goethe}
+\Index{Göthe} \Index{Götz}
+\Index{Goldmann}
+\printindex
+\end{document}
+\end{externalDocument}
+
+\subsubsection{German language (DIN2) with UCA}
-The same sorted with the German DIN variant 2 with \verb|--config DIN2|, which
-is part of the \TeX\ distribution. In this case a letter Ö is converted to Oe before sorting
-the word beginning with the letter Ö:
+The same sorted with the German DIN variant 2. It uses also the config
+file
+with \verb|--config DIN2|, but sets the language internally to \verb|de_din2| for
+UCA and do not use the character tables:
\noindent
\begin{externalDocument}[
@@ -799,6 +1117,10 @@ Sorted with
\end{externalDocument}
+\clearpage
+
+\subsubsection{Japanese language with UCA}
+
The following runs with \verb|xindex -l jp <file>|:
@@ -814,13 +1136,13 @@ The following runs with \verb|xindex -l jp <file>|:
\edef\FancyVerbStartString{\perCent StartVisiblePreamble}
\edef\FancyVerbStopString{\perCent StopVisiblePreamble}
\colorbox{black!20}{\parbox{\linewidth}{%
-\VerbatimInput[fontfamily=helvetica]{Examples/xindex-9.tex}
+\VerbatimInput[fontfamily=helvetica]{Examples/xindex-12.tex}
}}
\edef\FancyVerbStartString{\string\begin\string{document\string}}
\edef\FancyVerbStopString{\string\end\string{document\string}}
\colorbox{black!10}{\parbox{\linewidth}{%
-\VerbatimInput[fontfamily=helvetica]{Examples/xindex-9.tex}
+\VerbatimInput[fontfamily=helvetica]{Examples/xindex-12.tex}
}}
%\end{minipage}\hfill
@@ -849,8 +1171,7 @@ The following runs with \verb|xindex -l jp <file>|:
\usepackage{fontspec}
\setmainfont{SourceHanSans}
\usepackage[japanese]{babel}
-\addto\captionsjapanese{%
- \def\indexname{指数}}
+\addto\captionsjapanese{\def\indexname{指数}}
\usepackage{hvindex}% for \Index
\usepackage{makeidx}\makeindex
%StopVisiblePreamble
@@ -865,12 +1186,10 @@ The following runs with \verb|xindex -l jp <file>|:
\makeatother
\pagestyle{empty}
\begin{document}
-\Index{車} \Index{車道}
-日本\index{日本|fbox} \Index{病院} \Index{コンピュータ}
-\Index{プリンタ} \Index{印刷} \Index{スイミングプール} \Index{天王}
-\Index{広島} \Index{ドイツ} \Index{日本} \Index{ワープロ}
-\Index{foo} und \Index{bar} \Index{//} \Index{4711}
-\newpage\printindex
+\Index{車} \Index{車道} 日本\index{日本|fbox} \Index{病院} \Index{コンピュータ}
+\Index{プリンタ} \Index{印刷} \Index{スイミングプール} \Index{天王} \Index{広島}
+\Index{ドイツ} \Index{日本} \Index{ワープロ}
+\Index{foo} und \Index{bar} \Index{//} \Index{4711} \newpage\printindex
\end{document}
\end{externalDocument}
%\end{minipage}
@@ -878,70 +1197,6 @@ The following runs with \verb|xindex -l jp <file>|:
\setsansfont{Libertinus Sans}\rmfamily
-\subsection{Sorting by using UCA (Unicode Collation Algorithm)}
-With the optional argument \verb|-u| or alternatively \verb|--use_UCA| the sorting will be done
-by Michal Hoftich's Lua package \texttt{LUA-UCA}, which should be part of any \TeX{} installation.
-
-The sorting order can be easily modified. Read the documentation of the package \texttt{LUA-UCA}
-on how to do it and what languages are supported so far. Any additional code setting for
-UCA should be done in the file \Lfile{xindex-cfg-uca.lua}, which will automatically be read
-by \Lprog{xindex}.
-
-\iffalse
-\begin{noteblock}
-This package can display, in a
-\begin{itemize}
- \item to change dimensions and colors ;
-\end{itemize}
-It's
-\end{noteblock}
-\fi
-\begin{importantblock}
-If possible, you should use the Unicode sorting by default and only for some special cases
-where you define your own sorting scheme, you should not use the \verb|-u| option.
-\end{importantblock}
-
-
-\begin{externalDocument}[
-% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
- mpwidth=0.55\linewidth,
-% pages={6},
- frame=false,
- compiler=lualatex,
- crop,
- force=false,
- xindex,
- xindexOptions=-u -l cs,
- runs=2,code,docType=latex,
- showFilename,
- align=\centering,
- usefancyvrb,
-% lstOptions={columns=fixed}
-]{xindex}
-%! lualatex
-\documentclass[paper=a6]{scrartcl}
-\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
- \parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
-\makeatother
-%StartVisiblePreamble
-\usepackage{multicol}
-\usepackage{makeidx}\makeindex
-\def\Index#1{#1\index{#1}}
-%StopVisiblePreamble
-\pagestyle{empty}
-\begin{document}
-Sorted with \verb|-u -l cs|
-\Index{ahoj} \Index{crha}, \Index{čaj}, \Index{chachar},
-\Index{rak}, \Index{řeka}, \Index{srp}, \Index{šutr},
-\Index{hudba}, \Index{linux}, \Index{zebra},
-\Index{žába}, \Index{7 dubů}
-\begin{multicols}{2} \printindex \end{multicols}
-\end{document}
-\end{externalDocument}
-
\subsection{Case sensitive index entries}
@@ -1000,7 +1255,6 @@ foo\newpage
\end{externalDocument}
-\clearpage
The same example sorted with the \verb|-a| or \verb|--no_casesensitive| has another output: now
\verb|xindex-cfg-common.lua| is the first one of the \verb|xindex-???| series.
@@ -1138,7 +1392,6 @@ Test
-\clearpage
\section{Pagenumbers}
\subsection{Compressing pagenumber series}\label{Compressing}
@@ -1175,7 +1428,6 @@ folium = {
pages={6},
frame=false,
compiler=lualatex,
- force=false,
crop,
xindex,
xindexOptions=-l fr,
@@ -1234,7 +1486,6 @@ of the same type, so we get \texttt{1f} in the output.
frame=false,
compiler=lualatex,
crop,
- force=false,
xindex,
xindexOptions=-l de,
runs=2,code,docType=latex,
@@ -1301,7 +1552,6 @@ envStop = "\\end{description}"
% xindexOptions=-c description -g,
runs=2,
code,docType=latex,
- force=false,
%xindex -c description -n -g xindex-17.idx
%xindex -c description -n --no_pagenumber gls.idx
% runsequence={lualatex,{xindex -c description -n -g},lualatex,lualatex},
@@ -1727,14 +1977,13 @@ baz\index{foo!bar!baz} foobar%
\end{externalDocument}
-
-%\clearpage
+\clearpage
\section{\texttt{hyperref}}
Using the package \Lpack{hyperref} is no problem:
-\enlargethispage{2.5\normalbaselineskip}
+%\enlargethispage{2.5\normalbaselineskip}
\begin{externalDocument}[
% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
@@ -1743,6 +1992,7 @@ Using the package \Lpack{hyperref} is no problem:
frame=false,
compiler=lualatex,
crop,
+ force,
xindex,
xindexOptions=-l de,
runs=2,code,docType=latex,
@@ -1767,23 +2017,19 @@ Using the package \Lpack{hyperref} is no problem:
%StopVisiblePreamble
\pagestyle{empty}
\begin{document}
-Sorted with \verb|-l DE|
-\Index{Österreich} \Index{Öresund}
-\Index{Ostern} \Index{Ober} \Index{Oberin}
-\Index{Österreich} \index{Öresund|textbf}
-\Index{Ostern} \Index{Ober} \Index{Oberin}
-\Index{Obstler} \Index{Öl} \Index{ölen}
-\Index{Ödem} \Index{Oligarch} \Index{Oder}
-\Index{oder} \index{Fluss!Oder|textit}
-\Index{Oder|seealso{Fluss}} \Index{Göbel}
-\Index{Goethe} \Index{Göthe} \Index{Götz}
-\newpage\Index{Goldmann} \Index{Goethe}
-\newpage \printindex
+Sorted with \verb|-l DE| \par
+\Index{Österreich} \Index{Öresund} \Index{Ostern}
+\Index{Ober} \Index{Oberin} \Index{Österreich}
+\index{Öresund|textbf} \Index{Ostern} \Index{Ober}
+\Index{Oberin} \Index{Obstler} \Index{Öl} \Index{ölen}
+\Index{Ödem} \Index{Oligarch} \Index{Oder} \Index{oder}
+\index{Fluss!Oder|textit} \Index{Oder|seealso{Fluss}}
+\Index{Göbel} \Index{Goethe} \Index{Göthe} \Index{Götz}
+\newpage\Index{Goldmann} \Index{Goethe} \newpage \printindex
\end{document}
\end{externalDocument}
-
The following example fixes a problem with \Lpack{hyperref} and escaping the | character,
e.g.\verb/"|/. In such a case \Lpack{hyperref} ignores the vertical bar.
With the optional parameter \verb/-f | --fix_hyperref/, which is still experimental,
@@ -1791,7 +2037,6 @@ With the optional parameter \verb/-f | --fix_hyperref/, which is still experimen
of using this problematic vertical character, you can use \Lcs{textbar}, which also solves the
problem.
-
\begin{externalDocument}[
% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
% mpwidth=0.55\linewidth,
@@ -1799,7 +2044,6 @@ problem.
frame=false,
compiler=lualatex,
crop,
- force=false,
shellesc,
% xindex,
% xindexOptions=-,
@@ -1877,7 +2121,6 @@ such commands are ignored. In the following example we put an horizontal line af
pages={2},
frame=false,
compiler=lualatex,
- force=false,
crop,
xindex,
xindexOptions=-l de,
@@ -1981,7 +2224,6 @@ In the documents preamble there is the definition:
% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
mpwidth=0.6\linewidth,
pages={2},
- force=false,
frame=false,
compiler=lualatex,
crop,
@@ -2127,10 +2369,8 @@ and adds the program \Lprog{xindex} as the default program to \Lpack{imakeidx}.
mpwidth=0.55\linewidth,
pages={6},
frame=false,
- force=false,
compiler=lualatex,
crop,
- force=false,
% xindex,
% xindexOptions=-l de,
runs=2,code,docType=latex,
@@ -2229,6 +2469,54 @@ in the argument of \Lcs{indexentry}.
\appendix
\section{Examples}
+Correct french sorting with UCA:
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+ pages={3},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l fr,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ grfOptions={width=\linewidth},
+ lstOptions={columns=fixed}]{xindex}
+%! lualatex --shell-escape
+\documentclass[paper=a4,twocolumn]{scrartcl}
+\usepackage{libertinus-otf}
+\let\NewPage\newpage% only for demo
+\makeatletter
+\renewcommand\newpage{\NewPage\let\ps@plain\ps@empty}
+\makeatother
+%StartVisiblePreamble
+\usepackage[french]{babel}
+\usepackage[imakeidx]{xindex} \makeindex
+\newcommand*{\IND}[1]{\index{#1}#1\par}
+%StopVisiblePreamble
+\begin{document}
+%%% xindex -l fr <file>
+\IND{CÔTÉ} \IND{cote} \IND{Côté} \IND{COTÉ} \IND{côte}
+\IND{COTE} \IND{côté} \IND{Coté} \IND{coté} \IND{Cote}
+\IND{CÔTE} \IND{Côte} \IND{lésé} \IND{péché}
+\IND{bohème} \IND{gêné} \IND{pêche} \IND{cæsium}
+\IND{pêcher} \IND{révèle} \IND{pécher} \IND{révélé}
+\IND{Bohême} \IND{relève} \IND{PÉCHÉ} \IND{maçon}
+\IND{relevé} \IND{Élève} \IND{gêne} \IND{élevé}
+\IND{MÂCON} \IND{gène} \IND{Bohémien} \IND{caennais}
+\IND{lèse} \IND{coexistence} \IND{cœur}
+\IND{coefficient} \IND{cafard} \IND{CŒUR} \IND{CÆSIUM}
+\newpage \IND{coté} \IND{cœur} \IND{péché} \newpage
+\IND{coté}\IND{coefficient} \printindex
+\end{document}
+\end{externalDocument}
+
+
+
+
\begin{externalDocument}[
% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
mpwidth=0.55\linewidth,
diff --git a/indexing/xindex/latex/xindex.sty b/indexing/xindex/latex/xindex.sty
index 24d0076590..43cd71a324 100644
--- a/indexing/xindex/latex/xindex.sty
+++ b/indexing/xindex/latex/xindex.sty
@@ -1,10 +1,10 @@
%% This is file `xindex.sty',
%%
-%% Copyright (C) 2018-2023
+%% Copyright (C) 2018-2024
%% Herbert Voss
%%
%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3c
+%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
@@ -13,7 +13,7 @@
%
%
% -------------------------------------
-\ProvidesPackage{xindex}[2023/07/30 v. 0.55 write into an idx file (hv)]
+\ProvidesPackage{xindex}[2024/05/16 v. 0.60 write into an idx file (hv)]
%
\RequirePackage{xkeyval}
diff --git a/indexing/xindex/lualatex/xindex-AU.lua b/indexing/xindex/lualatex/xindex-AU.lua
index 59c26294bf..be3a46360f 100644
--- a/indexing/xindex/lualatex/xindex-AU.lua
+++ b/indexing/xindex/lualatex/xindex-AU.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-AU'] = {
- version = 0.55,
+ version = 0.58,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-DIN2.lua b/indexing/xindex/lualatex/xindex-DIN2.lua
index 5d9bd56dc8..445edc904e 100644
--- a/indexing/xindex/lualatex/xindex-DIN2.lua
+++ b/indexing/xindex/lualatex/xindex-DIN2.lua
@@ -16,25 +16,31 @@ if not modules then modules = { } end modules ['xindex-DIN2'] = {
license = "LPPL 1.3"
}
-itemPageDelimiter = "," -- Hello, 14
-compressPages = true -- something like 12--15, instead of 12,13,14,15. the |( ... |) syntax is still valid
-fCompress = true -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
-minCompress = 3 -- 14--17 or
-numericPage = true -- for non numerical pagenumbers, like "VI-17"
-sublabels = {"", "-\\,", "--\\,", "---\\,"} -- for the (sub(sub(sub-items first one is for item
-pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17"
-indexOpening = "" -- commands after \begin{theindex}
-rangeSymbol = "--"
-idxnewletter = "\\textbf" -- Only valid if -n is not set
-envStart = "\\begin{theindex}"
-envStop = "\\end{theindex}"
-
-
+--UCA language = "de_din2" --
+if use_UCA then
+languages.de = function(collator_obj)
+ local function tailor(a, b, tbl)
+ local autf = collator_obj:string_to_codepoints(a)
+ local butf = collator_obj:string_to_codepoints(b)
+ collator_obj:tailor(autf,butf, tbl)
+ end
+ local tailoring = function(s) collator_obj:tailor_string(s) end
+ languages.de(collator_obj)
+ tailoring "&Ö=Oe"
+ tailoring "&ö=oe"
+ tailoring "&Ä=Ae"
+ tailoring "&ä=ae"
+ tailoring "&Ü=Ue"
+ tailoring "&ü=ue"
+ tailoring "&ß=ss"
+ return collator_obj
+end
+end
--[[
+ Only used for -x option (no UCA):
Each character's position in this array-like table determines its 'priority'.
Several characters in the same slot have the same 'priority'.
]]
-
alphabet_lower = { -- for sorting
{ ' ' }, -- only for internal tests
{ 'a', 'á', 'à', 'å', 'æ', },
@@ -100,4 +106,3 @@ alphabet_upper = { -- for sorting
{ 'Y', 'Ý', 'Ÿ' },
{ 'Z', 'Ž' }
}
-
diff --git a/indexing/xindex/lualatex/xindex-HAdW-eKO.lua b/indexing/xindex/lualatex/xindex-HAdW-eKO.lua
index ecf51a290d..6eabbf472f 100644
--- a/indexing/xindex/lualatex/xindex-HAdW-eKO.lua
+++ b/indexing/xindex/lualatex/xindex-HAdW-eKO.lua
@@ -11,7 +11,7 @@
-- configuration for index files of the Heidelberger Akademie der Wissenschaften
if not modules then modules = { } end modules ['xindex-HAdW-eKO'] = {
- version = 0.55,
+ version = 0.58,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-RU.lua b/indexing/xindex/lualatex/xindex-RU.lua
index 626cc1c17d..7cfb9627b6 100644
--- a/indexing/xindex/lualatex/xindex-RU.lua
+++ b/indexing/xindex/lualatex/xindex-RU.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-RU'] = {
- version = 0.55,
+ version = 0.58,
comment = "configuration to xindex.lua",
author = "Alexey Kuznetzov",
copyright = "Herbert Voß",
diff --git a/indexing/xindex/lualatex/xindex-base.lua b/indexing/xindex/lualatex/xindex-base.lua
index ff44943724..77fc6894c9 100644
--- a/indexing/xindex/lualatex/xindex-base.lua
+++ b/indexing/xindex/lualatex/xindex-base.lua
@@ -8,7 +8,7 @@
-- $Id: xindex-base.lua 22 2022-02-07 12:18:15Z hvoss $
-----------------------------------------------------------------------
-local info = { version = 0.55 }
+local info = { version = 0.60 }
-- check config
if pageNoPrefixDel ~= "" then
@@ -112,8 +112,14 @@ writeLog(2, "GenerateSortKeys end\n", 0)
k = 0
writeLog(2, "Sort begin\n", 0)
-table.sort(Index,UTFCompare)
+
+if use_UCA then
+ table.sort(Index, UCACompare)
+else
+ table.sort(Index,UTFCompare)
+end
writeLog(2, "Sort end\n", 0)
+
if SORTposthook then
writeLog(2, "PostHook begin\n", 0)
Index = SORTposthook(Index)
@@ -168,15 +174,19 @@ if use_UCA then
v = NewIndex[i]
-- the collator:get_lowest_char will return character on the given
-- position. It will be lowercase and without accents.
- local codepoints = collator_obj:string_to_codepoints(NormalizedUpper(v.SortKey))
+ if v.SortKey ~= nil then
+ codepoints = collator_obj:string_to_codepoints(utf8_upper(v.SortKey))
+ else
+ codepoints = collator_obj:string_to_codepoints(utf8_upper(v.sortChar))
+ end
v.sortChar = getSortChar(codepoints) --or getSortChar(collator_obj:string_to_codepoints(NormalizedUpper(v.Entry)))
if not v.sortChar then
-- alternativelly use v.Entry if SortKey doesn't contain usable string
- codepoints = collator_obj:string_to_codepoints(NormalizedUpper(v.Entry))
+ codepoints = collator_obj:string_to_codepoints(utf8_upper(v.Entry))
v.sortChar = getSortChar(codepoints)
end
+-- print("v.sortchar="..v.sortChar)
end
- writeLog(2,"done\n",0)
else
for i=1, #NewIndex do
if NewIndex[i]["SortKey"] ~= nil then
@@ -187,6 +197,9 @@ else
end
end
+
+writeLog(2,"done\n",0)
+
if SORTendhook then
NewIndex = SORTendhook(NewIndex)
end
diff --git a/indexing/xindex/lualatex/xindex-baselib.lua b/indexing/xindex/lualatex/xindex-baselib.lua
index 36269520c9..fd7326efd1 100644
--- a/indexing/xindex/lualatex/xindex-baselib.lua
+++ b/indexing/xindex/lualatex/xindex-baselib.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-baselib'] = {
- version = 0.55,
+ version = 0.60,
comment = "base library to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-cfg-common.lua b/indexing/xindex/lualatex/xindex-cfg-common.lua
index e02da6f3fc..15c326c3bc 100644
--- a/indexing/xindex/lualatex/xindex-cfg-common.lua
+++ b/indexing/xindex/lualatex/xindex-cfg-common.lua
@@ -9,13 +9,27 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg-common'] = {
- version = 0.55,
+ version = 0.60,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
license = "LPPL 1.3"
}
+itemPageDelimiter = "," -- Hello, 14
+compressPages = true -- something like 12--15, instead of 12,13,14,15. the |( ... |) syntax is still valid
+fCompress = true -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
+minCompress = 3 -- 14--17 or
+rangeSymbol = "--"
+numericPage = true -- for non numerical pagenumbers, like "VI-17"
+sublabels = {"", "-\\,", "--\\,", "---\\,"} -- for the (sub(sub(sub-items first one is for item
+pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17" -- not used !!!
+indexOpening = "" -- commands after envStart
+idxnewletter = "\\textbf" -- Only valid if -n is not set
+envStart = "\\begin{theindex}"
+envStop = "\\end{theindex}"
+
+
indexheader = {
cs = {"Symboly", "Čísla", "czech"},
da = {"Symboler", "Tal", "danish"},
@@ -30,6 +44,7 @@ indexheader = {
ru = {"Символы", "Числа", "russian"},
}
+
--[[ babel
afrikaans
azerbaijani
diff --git a/indexing/xindex/lualatex/xindex-cfg.lua b/indexing/xindex/lualatex/xindex-cfg-no_uca.lua
index b9960963bd..d337047a1b 100644
--- a/indexing/xindex/lualatex/xindex-cfg.lua
+++ b/indexing/xindex/lualatex/xindex-cfg-no_uca.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.55,
+ version = 0.60,
comment = "main configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -18,7 +18,7 @@ if not modules then modules = { } end modules ['xindex-cfg'] = {
itemPageDelimiter = "," -- Hello, 14
compressPages = true -- something like 12--15, instead of 12,13,14,15. the |( ... |) syntax is still valid
-fCompress = true -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
+fCompress = true -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
minCompress = 3 -- 14--17 or
rangeSymbol = "--"
numericPage = true -- for non numerical pagenumbers, like "VI-17"
@@ -29,6 +29,8 @@ idxnewletter = "\\textbf" -- Only valid if -n is not set
envStart = "\\begin{theindex}"
envStop = "\\end{theindex}"
+-- The following is not needed for sorting with UCA !!!!
+
--[[
Each character's position in this array-like table determines its 'priority'.
Several characters in the same slot have the same 'priority'.
diff --git a/indexing/xindex/lualatex/xindex-cfg-uca.lua b/indexing/xindex/lualatex/xindex-cfg-uca.lua
index 8dad47adda..d7ab1f4224 100644
--- a/indexing/xindex/lualatex/xindex-cfg-uca.lua
+++ b/indexing/xindex/lualatex/xindex-cfg-uca.lua
@@ -9,13 +9,27 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg-lua'] = {
- version = 0.55,
+ version = 0.60,
comment = "configuration to xindex-cfg-uca.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
license = "LPPL 1.3"
}
+languages.fr = function(collator_obj)
+ -- reverse search for accents in French (recommended):
+ collator_obj.accents_backward = true
+ -- accents: sorting order in French
+ local tailoring = function(s) collator_obj:tailor_string(s) end
+ tailoring("&æ=ae")
+ tailoring("&œ=oe")
+ tailoring("&th<þ<<<Þ") -- Canadian, see SGQRI004.pdf
+ -- lowercase before uppercase in French
+ --collator_obj:uppercase_first()
+ return collator_obj
+end
+
+
-- put any additional code for lua-uca here ---
languages.no = function(collator_obj)
local tailoring = function(s) collator_obj:tailor_string(s) end
@@ -50,4 +64,4 @@ Symbol Example Description
<<<< か<<<<カ Identifies a quaternary difference between "か" and "カ". (New in ICU 53.) ICU permits up to three quaternary relations in a row (except for intervening "=" identity relations).
= x = y Signifies no difference between "x" and "y".
& &Z Instructs ICU to reset at this letter. These rules will be relative to this letter from here on, but will not affect the position of Z itself.
-]] \ No newline at end of file
+]]
diff --git a/indexing/xindex/lualatex/xindex-danteedition.lua b/indexing/xindex/lualatex/xindex-danteedition.lua
index 477eb5ccca..a17cfc77fa 100644
--- a/indexing/xindex/lualatex/xindex-danteedition.lua
+++ b/indexing/xindex/lualatex/xindex-danteedition.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.55,
+ version = 0.58,
comment = "configuration file for the DANTE Edition",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -91,3 +91,18 @@ alphabet_upper = { -- for sorting
{ 'Y', 'Ý', 'Ÿ' },
{ 'Z', 'Ž' }
}
+
+folium = {
+ cs = {"f.", "ff."},
+ da = {"f", "ff"},
+ de = {"f", "ff"},
+ en = {"f", "ff"},
+ es = {"f", "ff"},
+ fr = {"\\,sq.","\\,sqq."},
+ it = {"f", "ff"},
+ jp = {"シンボル","番号"},
+ nl = {"f.", "ff."},
+ no = {"\\,f.","\\,ff."},
+ ru = {"",""}, -- doesn't exist
+}
+
diff --git a/indexing/xindex/lualatex/xindex-dtk.lua b/indexing/xindex/lualatex/xindex-dtk.lua
index b420597720..332813ce02 100644
--- a/indexing/xindex/lualatex/xindex-dtk.lua
+++ b/indexing/xindex/lualatex/xindex-dtk.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.55,
+ version = 0.58,
comment = "DTK configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-lib.lua b/indexing/xindex/lualatex/xindex-lib.lua
index 60c4d9a196..595ffc2dd7 100644
--- a/indexing/xindex/lualatex/xindex-lib.lua
+++ b/indexing/xindex/lualatex/xindex-lib.lua
@@ -9,13 +9,17 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-lib'] = {
- version = 0.55,
+ version = 0.60,
comment = "main library to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
license = "LPPL 1.3"
}
+require ("unicode")
+utf8_lower = unicode.utf8.lower
+utf8_upper = unicode.utf8.upper
+
local escapechar1 = "\""
local escapechar2 = "\"\""
local Letters = "ÄÖÜäöüabcdefghijklmnopqrstuvwxyzßABCDEFGHIJKLMNOPQRSTUVWXYZ"
@@ -55,29 +59,37 @@ function Lower(strOrig) -- return UTF string.lower
end
function NormalizedLower(strOrig) -- return normalized UTF string.lower (ä -> a)
- local str = ""
- for i=1, utf.len(strOrig) do
- local c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
- str = str..string.lower(c)
+ if use_UCA then
+ return strOrig
+ else
+ local str = ""
+ for i=1, utf.len(strOrig) do
+ local c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
+ str = str..string.lower(c)
+ end
+ return str
end
- return str
end
function NormalizedUpper(strOrig) -- return normalized UTF string.upper (ä -> A)
- local str = {}
- local c
- for i=1, utf.len(strOrig) do
- c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
- str[#str + 1] = c
- end
- strOrig = table.concat(str)
- str = {}
- for i=1, utf.len(strOrig) do
- c = get_normalized_char(alphabet_upper_map,utf.sub(strOrig,i,i))
- c = NormalizedUppercase(c)
- str[#str + 1] = c
+ if use_UCA then
+ return strOrig
+ else
+ local str = {}
+ local c
+ for i=1, utf.len(strOrig) do
+ c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
+ str[#str + 1] = c
+ end
+ strOrig = table.concat(str)
+ str = {}
+ for i=1, utf.len(strOrig) do
+ c = get_normalized_char(alphabet_upper_map,utf.sub(strOrig,i,i))
+ c = NormalizedUppercase(c)
+ str[#str + 1] = c
+ end
+ return table.concat(str)
end
- return table.concat(str)
end
function NormalizedUppercase(chr) -- return normalized UTF uppercase letter
@@ -574,6 +586,7 @@ function GenerateSortKey(a)
end
-- s:gsub("%s+", "") strip spaces
-- a["SortKey"] = a["SortKey"]:gsub("%s+", "")
+ --print("Sortkey: " .. a["SortKey"])
if not use_UCA then -- test if it is a symbol after 9 and before A or after Z
if (a["SortKey"]:byte() > 57 and a["SortKey"]:byte() < 65) or
(a["SortKey"]:byte() > 90 and a["SortKey"]:byte() < 97) or
@@ -581,28 +594,35 @@ function GenerateSortKey(a)
a["SortKey"] = "/"..a["SortKey"] -- sort it after /
end
end
- --print("Sortkey: " .. a["SortKey"])
end
function GenerateSortKeys(Index)
- for _, entry in ipairs(Index) do
+ for _, entry in ipairs(Index) do
-- print("<<".._..entry["Entry"])
- GenerateSortKey(entry)
- end
+ GenerateSortKey(entry)
+ end
end
-function UTFCompare(a,b)
- local A = a["SortKey"]
- local B = b["SortKey"]
- if use_UCA then
- compare = collator_obj:compare_strings(A,B)
+function UCACompare(a,b)
+ if ignoreSpace then
+ A = a["Entry"]:gsub("%s+", "") -- str = str:gsub("%s+", "")
+ B = b["Entry"]:gsub("%s+", "")
else
- compare = A<B
+ A = a["Entry"]
+ B = b["Entry"]
end
- writeLog(1,"UTFCompare: "..A.."<"..B.." : "..tostring(compare).."\n",2)
+ --print(A,B)
+ compare = collator_obj:compare_strings(A,B)
+ writeLog(1,"UCACompare: "..A.."<"..B.." : "..tostring(compare).."\n",2)
return compare
end
+function UTFCompare(a,b)
+ local A = a["SortKey"]
+ local B = b["SortKey"]
+ writeLog(1,"UTFCompare: "..A.."<"..B.." : "..tostring(A<B).."\n",2)
+ return A<B
+end
function pageCompare(a,b) -- a = {{number=...,special=..},{...,...}}
-- a["number"], b["number"] are something like "3" or "VI-17" or "9--31"
@@ -1018,7 +1038,7 @@ function getSortChar(codepoints)
local sort_char = utf8.char(table.unpack(codes))
--print("SortChar:"..sort_char)
-- print unicode category of the first char
- return upper(sort_char) -- use unicode.utf8.upper to make the char uppercase
+ return unicode.utf8.upper(sort_char) -- use unicode.utf8.upper to make the char uppercase
end
end
diff --git a/indexing/xindex/lualatex/xindex-norsk.lua b/indexing/xindex/lualatex/xindex-norsk.lua
index f51d19db0e..4ed2664142 100644
--- a/indexing/xindex/lualatex/xindex-norsk.lua
+++ b/indexing/xindex/lualatex/xindex-norsk.lua
@@ -10,7 +10,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-no'] = {
- version = 0.55,
+ version = 0.58,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-pretty.lua b/indexing/xindex/lualatex/xindex-pretty.lua
index bdf6591ff8..59d96d889f 100644
--- a/indexing/xindex/lualatex/xindex-pretty.lua
+++ b/indexing/xindex/lualatex/xindex-pretty.lua
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-pretty'] = {
- version = 0.55,
+ version = 0.58,
comment = "dump a Lua table for debugging",
author = "Steve Donovan",
copyright = "Steve Donovan",
diff --git a/indexing/xindex/lualatex/xindex-yannis.lua b/indexing/xindex/lualatex/xindex-yannis.lua
index a07d5e2f4d..350102aa6c 100644
--- a/indexing/xindex/lualatex/xindex-yannis.lua
+++ b/indexing/xindex/lualatex/xindex-yannis.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-yannis'] = {
- version = 0.55,
+ version = 0.58,
comment = "main configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/scripts/xindex.lua b/indexing/xindex/scripts/xindex.lua
index 041235d289..b07a551f8c 100755
--- a/indexing/xindex/scripts/xindex.lua
+++ b/indexing/xindex/scripts/xindex.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
xindex = xindex or { }
- local version = 0.55
+ local version = 0.60
xindex.version = version
--xindex.self = "xindex"
@@ -46,7 +46,7 @@ local args = require ('xindex-lapp') [[
-V,--version
-a,--no_casesensitive
-b,--no_labels
- -c,--config (default cfg)
+ -c,--config (default "")
-e,--escapechar (default ")
-f,--fix_hyperref
-g,--no_pagenumber
@@ -57,7 +57,8 @@ local args = require ('xindex-lapp') [[
-o,--output (default "")
-p,--prefix (default L)
-s,--use_stdin
- -u,--use_UCA
+ -u,--use_UCA no more needed
+ -x,--no_UCA
<files...> (default stdin) .idx file(s)
]]
@@ -170,7 +171,6 @@ end
logFile = io.open(logfilename,"w+")
require('xindex-lib')
-
writeLog(2,"xindex v."..version.." (c) Herbert Voß\n",-1)
writeLog(1,"Verbose level = "..vlevel.."\n",1)
writeLog(2,"Logfile:"..logfilename.."\n",1)
@@ -202,45 +202,13 @@ writeLog(2,"ignore space for sorting: "..tostring(ignoreSpace).."\n",-1)
labelPrefix = args.prefix
writeLog(2,"Label prefix: "..labelPrefix.."\n",-1)
-writeLog(2,"Loading common config file ".."xindex-cfg-common\n",1)
+writeLog(2,"Loading all config files ... \n",1)
+writeLog(2,"Loading common config file ".."xindex-cfg-common\n",1) -- we need config for lang setting
Config_File_Common = kpse.find_file("xindex-cfg-common.lua")
cfg_common = require(Config_File_Common)
-local user_config_file = "xindex-"..args["config"]..".lua"
-print("Local config file is: "..user_config_file)
-writeLog(2,"Loading local config file "..user_config_file,0)
-if kpse.find_file(user_config_file)
- then Config_File = kpse.find_file(user_config_file)
- else print("Cannot find config file with kpse.find_file!!")
-end
-print("\nLocal KPSE config file is: "..Config_File.."\n")
-cfg = require(Config_File)
-writeLog(2," ... done\n",0)
-
--- Create the character list maps for faster sorting
-
-alphabet_lower_map = CreateCharListMap(alphabet_lower)
-alphabet_upper_map = CreateCharListMap(alphabet_upper)
-
-esc_char = args.escapechar
-esc_char2 = esc_char..esc_char
-writeLog(2,"Escapechar = "..esc_char.."\n",1)
-escape_chars = { -- by default " is the escape char
- {esc_char2, '//escaped2//', esc_char },
- {esc_char..'@', '//escapedat//', '@' },
- {esc_char..'|', '//escapedvert//', '|' },
- {esc_char..'!', '//escapedexcl//', '!' },
- {'', '\\textbar', '|' },
- {'', '\\braceLeft', '{' },
- {'', '\\braceRight', '}' }
-}
-
-outFile = io.open(outfilename,"w+")
-
check_language = args["checklang"]
local aux_language = ""
-
-
if check_language then
print("check aux file for unknown language")
-- writeLog(2,'Check language in aux file\n',0)
@@ -287,32 +255,17 @@ else
end
end
---print("Sprache:"..language)
-
-writeLog(2,"Language = "..language.."\n",1)
-if (indexheader[language] == nil) then
- writeLog(2,'Corrected the unknown language "'..language..'" to "en"'.."\n",0)
- language = "en"
-end
-
-index_header = indexheader[language]
-if vlevel > 0 then for i=1,#index_header do writeLog(2,index_header[i].."\n",1) end end
-if (folium[language] == nil) then
- writeLog(2,'Corrected the unknown language "'..language..'" for page folium to "en"'.."\n",0)
- page_folium = folium["en"]
-else
- page_folium = folium[language]
-end
+-- next config is UCA
-use_UCA = args["use_UCA"]
+use_UCA = not args["no_UCA"]
if use_UCA then
writeLog(1,"Will use LUA-UCA\n",1)
ducet = require "lua-uca.lua-uca-ducet"
collator = require "lua-uca.lua-uca-collator"
languages = require "lua-uca.lua-uca-languages"
collator_obj = collator.new(ducet)
-
- local uca_config_file = "xindex-cfg-uca.lua"
+
+ uca_config_file = "xindex-cfg-uca.lua" -- for additional language definition
writeLog(2,"Loading local UCA config file "..uca_config_file,0)
UCA_Config_File = kpse.find_file(uca_config_file)
uca_cfg = require(UCA_Config_File)
@@ -331,11 +284,66 @@ if use_UCA then
print("[Lua-UCA] Loading language: " .. language)
collator_obj = languages[language](collator_obj)
end
+ alphabet_lower_map = {} -- empty tables for UCA sorting
+ alphabet_upper_map = {}
else
writeLog(1,"Will _not_ use LUA-UCA\n",1)
+ -- Create the character list maps for faster sorting if not using UCA
+ writeLog(2,"Loading config file for no UCA".."xindex-cfg-no_uca\n",1)
+ Config_File_UCA = kpse.find_file("xindex-cfg-no_uca.lua")
+ cfg_UCA = require(Config_File_UCA)
+ alphabet_lower_map = CreateCharListMap(alphabet_lower)
+ alphabet_upper_map = CreateCharListMap(alphabet_upper)
+end
+
+-- at last the user config
+
+if args["config"] ~= '""' then
+ local user_config_file = "xindex-"..args["config"]..".lua"
+ print("Local config file is: "..user_config_file)
+ writeLog(2,"Loading local config file "..user_config_file,0)
+ if kpse.find_file(user_config_file) then
+ Config_File = kpse.find_file(user_config_file)
+ else
+ Config_File = ""
+ print("Cannot find config file with kpse.find_file!!")
+ end
+ print("\nLocal KPSE config file is: "..Config_File.."\n")
+ cfg = require(Config_File)
+ writeLog(2," ... done\n",0)
end
-upper = unicode.utf8.upper
+--print("Sprache:"..language)
+
+writeLog(2,"Language = "..language.."\n",1)
+if (indexheader[language] == nil) then
+ writeLog(2,'Corrected the unknown language "'..language..'" to "en"'.."\n",0)
+ language = "en"
+end
+
+index_header = indexheader[language]
+if vlevel > 0 then for i=1,#index_header do writeLog(2,index_header[i].."\n",1) end end
+if (folium[language] == nil) then
+ writeLog(2,'Corrected the unknown language "'..language..'" for page folium to "en"'.."\n",0)
+ page_folium = folium["en"]
+else
+ page_folium = folium[language]
+end
+
+
+
+esc_char = args.escapechar
+esc_char2 = esc_char..esc_char
+writeLog(2,"Escapechar = "..esc_char.."\n",1)
+escape_chars = { -- by default " is the escape char
+ {esc_char2, '//escaped2//', esc_char },
+ {esc_char..'@', '//escapedat//', '@' },
+ {esc_char..'|', '//escapedvert//', '|' },
+ {esc_char..'!', '//escapedexcl//', '!' },
+ {'', '\\textbar', '|' },
+ {'', '\\braceLeft', '{' },
+ {'', '\\braceRight', '}' }
+}
no_caseSensitive = args["no_casesensitive"]
if no_caseSensitive then