summaryrefslogtreecommitdiff
path: root/indexing
diff options
context:
space:
mode:
Diffstat (limited to 'indexing')
-rw-r--r--indexing/makeindexk/Makefile.in126
-rw-r--r--indexing/makeindexk/aclocal.m4421
-rwxr-xr-xindexing/makeindexk/configure.texk338
-rw-r--r--indexing/xindex/CHANGELOG7
-rw-r--r--indexing/xindex/README.md24
-rw-r--r--indexing/xindex/doc/Makefile2
-rw-r--r--indexing/xindex/doc/tests/HADW.pdfbin18342 -> 18570 bytes
-rw-r--r--indexing/xindex/doc/tests/HADW.tex2
-rw-r--r--indexing/xindex/doc/tests/Umlaute.ind2
-rw-r--r--indexing/xindex/doc/tests/Umlaute.pdfbin15196 -> 15195 bytes
-rw-r--r--indexing/xindex/doc/tests/Umlaute2.ind16
-rw-r--r--indexing/xindex/doc/tests/Umlaute2.pdfbin18886 -> 18880 bytes
-rw-r--r--indexing/xindex/doc/tests/buch.ind216
-rw-r--r--indexing/xindex/doc/tests/buch.pdfbin39017 -> 42779 bytes
-rw-r--r--indexing/xindex/doc/tests/demo-hyperref.ind195
-rw-r--r--indexing/xindex/doc/tests/demo-hyperref.pdfbin28624 -> 12469 bytes
-rw-r--r--indexing/xindex/doc/tests/demo.ind119
-rw-r--r--indexing/xindex/doc/tests/demo.pdfbin34598 -> 31866 bytes
-rw-r--r--indexing/xindex/doc/tests/demo2.ind2
-rw-r--r--indexing/xindex/doc/tests/demo3.pdfbin9216 -> 9216 bytes
-rw-r--r--indexing/xindex/doc/tests/demo4.pdfbin11884 -> 11884 bytes
-rw-r--r--indexing/xindex/doc/tests/french.idx46
-rw-r--r--indexing/xindex/doc/tests/french.ind77
-rw-r--r--indexing/xindex/doc/tests/french.pdfbin0 -> 14435 bytes
-rw-r--r--indexing/xindex/doc/tests/french.tex20
-rwxr-xr-xindexing/xindex/doc/tests/runTests.sh12
-rw-r--r--indexing/xindex/doc/tests/see.idx15
-rw-r--r--indexing/xindex/doc/tests/see.ind30
-rw-r--r--indexing/xindex/doc/tests/see.pdfbin0 -> 15149 bytes
-rw-r--r--indexing/xindex/doc/tests/see.tex31
-rw-r--r--indexing/xindex/doc/xindex-doc.pdfbin588580 -> 626383 bytes
-rw-r--r--indexing/xindex/doc/xindex-doc.tex579
-rw-r--r--indexing/xindex/latex/xindex.sty6
-rw-r--r--indexing/xindex/lualatex/xindex-AU.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-DIN2.lua37
-rw-r--r--indexing/xindex/lualatex/xindex-HAdW-eKO.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-RU.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-base.lua35
-rw-r--r--indexing/xindex/lualatex/xindex-baselib.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-cfg-common.lua17
-rw-r--r--indexing/xindex/lualatex/xindex-cfg-no_uca.lua (renamed from indexing/xindex/lualatex/xindex-cfg.lua)6
-rw-r--r--indexing/xindex/lualatex/xindex-cfg-uca.lua18
-rw-r--r--indexing/xindex/lualatex/xindex-danteedition.lua17
-rw-r--r--indexing/xindex/lualatex/xindex-dtk.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-lib.lua186
-rw-r--r--indexing/xindex/lualatex/xindex-norsk.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-pretty.lua2
-rw-r--r--indexing/xindex/lualatex/xindex-yannis.lua2
-rwxr-xr-xindexing/xindex/scripts/xindex.lua123
49 files changed, 1785 insertions, 956 deletions
diff --git a/indexing/makeindexk/Makefile.in b/indexing/makeindexk/Makefile.in
index 4432246d20..2a75a2366b 100644
--- a/indexing/makeindexk/Makefile.in
+++ b/indexing/makeindexk/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# Makefile.in generated by automake 1.17 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+# Copyright (C) 1994-2024 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -71,6 +71,8 @@ am__make_running_with_option = \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+am__rm_f = rm -f $(am__rm_f_notfound)
+am__rm_rf = rm -rf $(am__rm_f_notfound)
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -150,10 +152,9 @@ am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
+ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \
}
SCRIPTS = $(dist_bin_SCRIPTS)
AM_V_P = $(am__v_P_@AM_V@)
@@ -330,6 +331,7 @@ am__sh_e_setup = case $$- in *e*) set +e;; esac
# Default flags passed to test drivers.
am__common_driver_flags = \
--color-tests "$$am__color_tests" \
+ $$am__collect_skipped_logs \
--enable-hard-errors "$$am__enable_hard_errors" \
--expect-failure "$$am__expect_failure"
# To be inserted before the command running the test. Creates the
@@ -354,6 +356,11 @@ if test -f "./$$f"; then dir=./; \
elif test -f "$$f"; then dir=; \
else dir="$(srcdir)/"; fi; \
tst=$$dir$$f; log='$@'; \
+if test -n '$(IGNORE_SKIPPED_LOGS)'; then \
+ am__collect_skipped_logs='--collect-skipped-logs no'; \
+else \
+ am__collect_skipped_logs=''; \
+fi; \
if test -n '$(DISABLE_HARD_ERRORS)'; then \
am__enable_hard_errors=no; \
else \
@@ -420,20 +427,22 @@ distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
if test -d "$(distdir)"; then \
- find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -rf "$(distdir)" \
+ find "$(distdir)" -type d ! -perm -700 -exec chmod u+rwx {} ';' \
+ ; rm -rf "$(distdir)" \
|| { sleep 5 && rm -rf "$(distdir)"; }; \
else :; fi
am__post_remove_distdir = $(am__remove_distdir)
DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
+GZIP_ENV = -9
DIST_TARGETS = dist-gzip
# Exists only to be overridden by the user if desired.
AM_DISTCHECK_DVI_TARGET = dvi
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
+distcleancheck_listfiles = \
+ find . \( -type f -a \! \
+ \( -name .nfs* -o -name .smb* -o -name .__afs* \) \) -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
@@ -517,8 +526,10 @@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__rm_f_notfound = @am__rm_f_notfound@
am__tar = @am__tar@
am__untar = @am__untar@
+am__xargs_n = @am__xargs_n@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -641,12 +652,12 @@ c-auto.h: stamp-h1
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
stamp-h1: $(srcdir)/c-auto.in $(top_builddir)/config.status
- @rm -f stamp-h1
- cd $(top_builddir) && $(SHELL) ./config.status c-auto.h
+ $(AM_V_at)rm -f stamp-h1
+ $(AM_V_GEN)cd $(top_builddir) && $(SHELL) ./config.status c-auto.h
$(srcdir)/c-auto.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
- rm -f stamp-h1
- touch $@
+ $(AM_V_GEN)($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ $(AM_V_at)rm -f stamp-h1
+ $(AM_V_at)touch $@
distclean-hdr:
-rm -f c-auto.h stamp-h1
@@ -689,16 +700,11 @@ uninstall-binPROGRAMS:
`; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(bindir)" && rm -f $$files
+ cd "$(DESTDIR)$(bindir)" && $(am__rm_f) $$files
clean-binPROGRAMS:
- @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
+ $(am__rm_f) $(bin_PROGRAMS)
+ test -z "$(EXEEXT)" || $(am__rm_f) $(bin_PROGRAMS:$(EXEEXT)=)
makeindex$(EXEEXT): $(makeindex_OBJECTS) $(makeindex_DEPENDENCIES) $(EXTRA_makeindex_DEPENDENCIES)
@rm -f makeindex$(EXEEXT)
@@ -754,7 +760,7 @@ distclean-compile:
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
- @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+ @: >>$@
am--depfiles: $(am__depfiles_remade)
@@ -904,7 +910,6 @@ distclean-tags:
am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
am--force-recheck:
@:
-
$(TEST_SUITE_LOG): $(TEST_LOGS)
@$(am__set_TESTS_bases); \
am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
@@ -980,10 +985,37 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
result_count $$1 "XPASS:" $$xpass "$$red"; \
result_count $$1 "ERROR:" $$error "$$mgn"; \
}; \
+ output_system_information () \
+ { \
+ echo; \
+ { uname -a | $(AWK) '{ \
+ printf "System information (uname -a):"; \
+ for (i = 1; i < NF; ++i) \
+ { \
+ if (i != 2) \
+ printf " %s", $$i; \
+ } \
+ printf "\n"; \
+}'; } 2>&1; \
+ if test -r /etc/os-release; then \
+ echo "Distribution information (/etc/os-release):"; \
+ sed 8q /etc/os-release; \
+ elif test -r /etc/issue; then \
+ echo "Distribution information (/etc/issue):"; \
+ cat /etc/issue; \
+ fi; \
+ }; \
+ please_report () \
+ { \
+echo "Some test(s) failed. Please report this to $(PACKAGE_BUGREPORT),"; \
+echo "together with the test-suite.log file (gzipped) and your system"; \
+echo "information. Thanks."; \
+ }; \
{ \
echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
$(am__rst_title); \
create_testsuite_report --no-color; \
+ output_system_information; \
echo; \
echo ".. contents:: :depth: 2"; \
echo; \
@@ -1003,26 +1035,25 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
if $$success; then :; else \
- echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG) for debugging.$${std}";\
if test -n "$(PACKAGE_BUGREPORT)"; then \
- echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ please_report | sed -e "s/^/$${col}/" -e s/'$$'/"$${std}"/; \
fi; \
echo "$$col$$br$$std"; \
fi; \
$$success || exit 1
check-TESTS:
- @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
- @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @$(am__rm_f) $(RECHECK_LOGS)
+ @$(am__rm_f) $(RECHECK_LOGS:.log=.trs)
+ @$(am__rm_f) $(TEST_SUITE_LOG)
@set +e; $(am__set_TESTS_bases); \
log_list=`for i in $$bases; do echo $$i.log; done`; \
- trs_list=`for i in $$bases; do echo $$i.trs; done`; \
- log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ log_list=`echo $$log_list`; \
$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
exit $$?;
recheck: all
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @$(am__rm_f) $(TEST_SUITE_LOG)
@set +e; $(am__set_TESTS_bases); \
bases=`for i in $$bases; do echo $$i; done \
| $(am__list_recheck_tests)` || exit 1; \
@@ -1065,7 +1096,7 @@ distdir: $(BUILT_SOURCES)
distdir-am: $(DISTFILES)
$(am__remove_distdir)
- test -d "$(distdir)" || mkdir "$(distdir)"
+ $(AM_V_at)$(MKDIR_P) "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@@ -1151,7 +1182,7 @@ dist dist-all:
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
- eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
+ eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lz*) \
@@ -1161,7 +1192,7 @@ distcheck: dist
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
- eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
+ eval GZIP= gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
*.tar.zst*) \
@@ -1260,16 +1291,16 @@ install-strip:
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
- -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
- -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
- -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ -$(am__rm_f) $(TEST_LOGS)
+ -$(am__rm_f) $(TEST_LOGS:.log=.trs)
+ -$(am__rm_f) $(TEST_SUITE_LOG)
clean-generic:
distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+ -$(am__rm_f) $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
+ -$(am__rm_f) $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -1280,7 +1311,7 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -f ./$(DEPDIR)/genind.Po
+ -rm -f ./$(DEPDIR)/genind.Po
-rm -f ./$(DEPDIR)/mkind.Po
-rm -f ./$(DEPDIR)/qsort.Po
-rm -f ./$(DEPDIR)/scanid.Po
@@ -1333,7 +1364,7 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
- -rm -f ./$(DEPDIR)/genind.Po
+ -rm -f ./$(DEPDIR)/genind.Po
-rm -f ./$(DEPDIR)/mkind.Po
-rm -f ./$(DEPDIR)/qsort.Po
-rm -f ./$(DEPDIR)/scanid.Po
@@ -1393,3 +1424,10 @@ tests/nested-range-test.log tests/makeindex.log: makeindex$(EXEEXT)
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+
+# Tell GNU make to disable its built-in pattern rules.
+%:: %,v
+%:: RCS/%,v
+%:: RCS/%
+%:: s.%
+%:: SCCS/s.%
diff --git a/indexing/makeindexk/aclocal.m4 b/indexing/makeindexk/aclocal.m4
index c1cc61ca02..05f3e5eb21 100644
--- a/indexing/makeindexk/aclocal.m4
+++ b/indexing/makeindexk/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.16.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.17 -*- Autoconf -*-
-# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+# Copyright (C) 1996-2024 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@ You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# Copyright (C) 2002-2021 Free Software Foundation, Inc.
+# Copyright (C) 2002-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.])
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.16'
+[am__api_version='1.17'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.16.5], [],
+m4_if([$1], [1.17], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -51,12 +51,12 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.5])dnl
+[AM_AUTOMAKE_VERSION([1.17])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-# Copyright (C) 2011-2021 Free Software Foundation, Inc.
+# Copyright (C) 2011-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -70,16 +70,18 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
AC_DEFUN([AM_PROG_AR],
[AC_BEFORE([$0], [LT_INIT])dnl
AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl
+AC_BEFORE([$0], [AC_PROG_AR])dnl
AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([ar-lib])dnl
AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
: ${AR=ar}
+: ${ARFLAGS=cr}
AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
[AC_LANG_PUSH([C])
am_cv_ar_interface=ar
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
- [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+ [am_ar_try='$AR $ARFLAGS libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
AC_TRY_EVAL([am_ar_try])
if test "$ac_status" -eq 0; then
am_cv_ar_interface=ar
@@ -118,7 +120,7 @@ AC_SUBST([AR])dnl
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -170,7 +172,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2021 Free Software Foundation, Inc.
+# Copyright (C) 1997-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -201,7 +203,7 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2021 Free Software Foundation, Inc.
+# Copyright (C) 1999-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -333,7 +335,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
# icc doesn't choke on unknown options, it will just issue warnings
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # When given -MP, icc 7.0 and 7.1 complain thus:
# icc: Command line warning: ignoring option '-M'; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option '-MP' not supported
@@ -392,7 +394,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2021 Free Software Foundation, Inc.
+# Copyright (C) 1999-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -460,7 +462,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+# Copyright (C) 1996-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -594,7 +596,7 @@ if test -z "$CSCOPE"; then
fi
AC_SUBST([CSCOPE])
-AC_REQUIRE([AM_SILENT_RULES])dnl
+AC_REQUIRE([_AM_SILENT_RULES])dnl
dnl The testsuite driver may need to know about EXEEXT, so add the
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
@@ -602,47 +604,9 @@ AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes. So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
- cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present. This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message. This
-can help us improve future automake versions.
+AC_REQUIRE([_AM_PROG_RM_F])
+AC_REQUIRE([_AM_PROG_XARGS_N])
-END
- if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
- echo 'Configuration will proceed anyway, since you have set the' >&2
- echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
- echo >&2
- else
- cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <https://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
- AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
- fi
-fi
dnl The trailing newline in this macro's definition is deliberate, for
dnl backward compatibility and to allow trailing 'dnl'-style comments
dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
@@ -675,7 +639,7 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -696,7 +660,7 @@ if test x"${install_sh+set}" != xset; then
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2021 Free Software Foundation, Inc.
+# Copyright (C) 2003-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -718,7 +682,7 @@ AC_SUBST([am__leading_dot])])
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering
-# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+# Copyright (C) 1996-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -753,7 +717,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -796,7 +760,7 @@ AC_SUBST([am__quote])])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2021 Free Software Foundation, Inc.
+# Copyright (C) 1997-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -830,7 +794,7 @@ fi
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -859,7 +823,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2021 Free Software Foundation, Inc.
+# Copyright (C) 1999-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -906,7 +870,23 @@ AC_LANG_POP([C])])
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+# Copyright (C) 2022-2024 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_RM_F
+# ---------------
+# Check whether 'rm -f' without any arguments works.
+# https://bugs.gnu.org/10828
+AC_DEFUN([_AM_PROG_RM_F],
+[am__rm_f_notfound=
+AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""'])
+AC_SUBST(am__rm_f_notfound)
+])
+
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -925,16 +905,169 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+# Copyright (C) 1996-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# _AM_SLEEP_FRACTIONAL_SECONDS
+# ----------------------------
+AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl
+AC_CACHE_CHECK([whether sleep supports fractional seconds],
+ am_cv_sleep_fractional_seconds, [dnl
+AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes],
+ [am_cv_sleep_fractional_seconds=no])
+])])
+
+# _AM_FILESYSTEM_TIMESTAMP_RESOLUTION
+# -----------------------------------
+# Determine the filesystem's resolution for file modification
+# timestamps. The coarsest we know of is FAT, with a resolution
+# of only two seconds, even with the most recent "exFAT" extensions.
+# The finest (e.g. ext4 with large inodes, XFS, ZFS) is one
+# nanosecond, matching clock_gettime. However, it is probably not
+# possible to delay execution of a shell script for less than one
+# millisecond, due to process creation overhead and scheduling
+# granularity, so we don't check for anything finer than that. (See below.)
+AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl
+AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS])
+AC_CACHE_CHECK([filesystem timestamp resolution],
+ am_cv_filesystem_timestamp_resolution, [dnl
+# Default to the worst case.
+am_cv_filesystem_timestamp_resolution=2
+
+# Only try to go finer than 1 sec if sleep can do it.
+# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work,
+# - 1 sec is not much of a win compared to 2 sec, and
+# - it takes 2 seconds to perform the test whether 1 sec works.
+#
+# Instead, just use the default 2s on platforms that have 1s resolution,
+# accept the extra 1s delay when using $sleep in the Automake tests, in
+# exchange for not incurring the 2s delay for running the test for all
+# packages.
+#
+am_try_resolutions=
+if test "$am_cv_sleep_fractional_seconds" = yes; then
+ # Even a millisecond often causes a bunch of false positives,
+ # so just try a hundredth of a second. The time saved between .001 and
+ # .01 is not terribly consequential.
+ am_try_resolutions="0.01 0.1 $am_try_resolutions"
+fi
+
+# In order to catch current-generation FAT out, we must *modify* files
+# that already exist; the *creation* timestamp is finer. Use names
+# that make ls -t sort them differently when they have equal
+# timestamps than when they have distinct timestamps, keeping
+# in mind that ls -t prints the *newest* file first.
+rm -f conftest.ts?
+: > conftest.ts1
+: > conftest.ts2
+: > conftest.ts3
+
+# Make sure ls -t actually works. Do 'set' in a subshell so we don't
+# clobber the current shell's arguments. (Outer-level square brackets
+# are removed by m4; they're present so that m4 does not expand
+# <dollar><star>; be careful, easy to get confused.)
+if (
+ set X `[ls -t conftest.ts[12]]` &&
+ {
+ test "$[]*" != "X conftest.ts1 conftest.ts2" ||
+ test "$[]*" != "X conftest.ts2 conftest.ts1";
+ }
+); then :; else
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ _AS_ECHO_UNQUOTED(
+ ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""],
+ [AS_MESSAGE_LOG_FD])
+ AC_MSG_FAILURE([ls -t produces unexpected output.
+Make sure there is not a broken ls alias in your environment.])
+fi
+
+for am_try_res in $am_try_resolutions; do
+ # Any one fine-grained sleep might happen to cross the boundary
+ # between two values of a coarser actual resolution, but if we do
+ # two fine-grained sleeps in a row, at least one of them will fall
+ # entirely within a coarse interval.
+ echo alpha > conftest.ts1
+ sleep $am_try_res
+ echo beta > conftest.ts2
+ sleep $am_try_res
+ echo gamma > conftest.ts3
+
+ # We assume that 'ls -t' will make use of high-resolution
+ # timestamps if the operating system supports them at all.
+ if (set X `ls -t conftest.ts?` &&
+ test "$[]2" = conftest.ts3 &&
+ test "$[]3" = conftest.ts2 &&
+ test "$[]4" = conftest.ts1); then
+ #
+ # Ok, ls -t worked. If we're at a resolution of 1 second, we're done,
+ # because we don't need to test make.
+ make_ok=true
+ if test $am_try_res != 1; then
+ # But if we've succeeded so far with a subsecond resolution, we
+ # have one more thing to check: make. It can happen that
+ # everything else supports the subsecond mtimes, but make doesn't;
+ # notably on macOS, which ships make 3.81 from 2006 (the last one
+ # released under GPLv2). https://bugs.gnu.org/68808
+ #
+ # We test $MAKE if it is defined in the environment, else "make".
+ # It might get overridden later, but our hope is that in practice
+ # it does not matter: it is the system "make" which is (by far)
+ # the most likely to be broken, whereas if the user overrides it,
+ # probably they did so with a better, or at least not worse, make.
+ # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html
+ #
+ # Create a Makefile (real tab character here):
+ rm -f conftest.mk
+ echo 'conftest.ts1: conftest.ts2' >conftest.mk
+ echo ' touch conftest.ts2' >>conftest.mk
+ #
+ # Now, running
+ # touch conftest.ts1; touch conftest.ts2; make
+ # should touch ts1 because ts2 is newer. This could happen by luck,
+ # but most often, it will fail if make's support is insufficient. So
+ # test for several consecutive successes.
+ #
+ # (We reuse conftest.ts[12] because we still want to modify existing
+ # files, not create new ones, per above.)
+ n=0
+ make=${MAKE-make}
+ until test $n -eq 3; do
+ echo one > conftest.ts1
+ sleep $am_try_res
+ echo two > conftest.ts2 # ts2 should now be newer than ts1
+ if $make -f conftest.mk | grep 'up to date' >/dev/null; then
+ make_ok=false
+ break # out of $n loop
+ fi
+ n=`expr $n + 1`
+ done
+ fi
+ #
+ if $make_ok; then
+ # Everything we know to check worked out, so call this resolution good.
+ am_cv_filesystem_timestamp_resolution=$am_try_res
+ break # out of $am_try_res loop
+ fi
+ # Otherwise, we'll go on to check the next resolution.
+ fi
+done
+rm -f conftest.ts?
+# (end _am_filesystem_timestamp_resolution)
+])])
+
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
+[AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION])
+# This check should not be cached, as it may vary across builds of
+# different projects.
+AC_MSG_CHECKING([whether build environment is sane])
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
@@ -953,49 +1086,40 @@ esac
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
-if (
- am_has_slept=no
- for am_try in 1 2; do
- echo "timestamp, slept: $am_has_slept" > conftest.file
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
- alias in your environment])
- fi
- if test "$[2]" = conftest.file || test $am_try -eq 2; then
- break
- fi
- # Just in case.
- sleep 1
- am_has_slept=yes
- done
- test "$[2]" = conftest.file
- )
-then
- # Ok.
- :
-else
- AC_MSG_ERROR([newly created file is older than distributed files!
+am_build_env_is_sane=no
+am_has_slept=no
+rm -f conftest.file
+for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[]*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ test "$[]2" = conftest.file
+ ); then
+ am_build_env_is_sane=yes
+ break
+ fi
+ # Just in case.
+ sleep "$am_cv_filesystem_timestamp_resolution"
+ am_has_slept=yes
+done
+
+AC_MSG_RESULT([$am_build_env_is_sane])
+if test "$am_build_env_is_sane" = no; then
+ AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
-AC_MSG_RESULT([yes])
+
# If we didn't sleep, we still need to ensure time stamps of config.status and
# generated files are strictly newer.
am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
- ( sleep 1 ) &
+AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl
+ ( sleep "$am_cv_filesystem_timestamp_resolution" ) &
am_sleep_pid=$!
-fi
+])
AC_CONFIG_COMMANDS_PRE(
[AC_MSG_CHECKING([that generated files are newer than configure])
if test -n "$am_sleep_pid"; then
@@ -1006,18 +1130,18 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file
])
-# Copyright (C) 2009-2021 Free Software Foundation, Inc.
+# Copyright (C) 2009-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# AM_SILENT_RULES([DEFAULT])
-# --------------------------
-# Enable less verbose build rules; with the default set to DEFAULT
-# ("yes" being less verbose, "no" or empty being verbose).
-AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules], [dnl
+# _AM_SILENT_RULES
+# ----------------
+# Enable less verbose build rules support.
+AC_DEFUN([_AM_SILENT_RULES],
+[AM_DEFAULT_VERBOSITY=1
+AC_ARG_ENABLE([silent-rules], [dnl
AS_HELP_STRING(
[--enable-silent-rules],
[less verbose build output (undo: "make V=1")])
@@ -1025,11 +1149,6 @@ AS_HELP_STRING(
[--disable-silent-rules],
[verbose build output (undo: "make V=0")])dnl
])
-case $enable_silent_rules in @%:@ (((
- yes) AM_DEFAULT_VERBOSITY=0;;
- no) AM_DEFAULT_VERBOSITY=1;;
- *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
dnl
dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
dnl do not support nested variable expansions.
@@ -1048,14 +1167,6 @@ am__doit:
else
am_cv_make_support_nested_variables=no
fi])
-if test $am_cv_make_support_nested_variables = yes; then
- dnl Using '$V' instead of '$(V)' breaks IRIX make.
- AM_V='$(V)'
- AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
- AM_V=$AM_DEFAULT_VERBOSITY
- AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
AC_SUBST([AM_V])dnl
AM_SUBST_NOTMAKE([AM_V])dnl
AC_SUBST([AM_DEFAULT_V])dnl
@@ -1064,9 +1175,33 @@ AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
AM_BACKSLASH='\'
AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls
+dnl to AM_SILENT_RULES to change the default value.
+AC_CONFIG_COMMANDS_PRE([dnl
+case $enable_silent_rules in @%:@ (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+esac
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using '$V' instead of '$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+])dnl
])
-# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Set the default verbosity level to DEFAULT ("yes" being less verbose, "no" or
+# empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_REQUIRE([_AM_SILENT_RULES])
+AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])])
+
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1094,7 +1229,7 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2021 Free Software Foundation, Inc.
+# Copyright (C) 2006-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1113,7 +1248,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2021 Free Software Foundation, Inc.
+# Copyright (C) 2004-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1159,15 +1294,19 @@ m4_if([$1], [v7],
am_uid=`id -u || echo unknown`
am_gid=`id -g || echo unknown`
AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
- if test $am_uid -le $am_max_uid; then
- AC_MSG_RESULT([yes])
+ if test x$am_uid = xunknown; then
+ AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work])
+ elif test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
else
- AC_MSG_RESULT([no])
- _am_tools=none
+ AC_MSG_RESULT([no])
+ _am_tools=none
fi
AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
- if test $am_gid -le $am_max_gid; then
- AC_MSG_RESULT([yes])
+ if test x$gm_gid = xunknown; then
+ AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work])
+ elif test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
_am_tools=none
@@ -1244,6 +1383,26 @@ AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
+# Copyright (C) 2022-2024 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_XARGS_N
+# ----------------
+# Check whether 'xargs -n' works. It should work everywhere, so the fallback
+# is not optimized at all as we never expect to use it.
+AC_DEFUN([_AM_PROG_XARGS_N],
+[AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl
+AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2
+3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])])
+AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl
+ am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }'
+])dnl
+AC_SUBST(am__xargs_n)
+])
+
m4_include([../../m4/kpse-common.m4])
m4_include([../../m4/kpse-kpathsea-flags.m4])
m4_include([../../m4/kpse-warnings.m4])
diff --git a/indexing/makeindexk/configure.texk b/indexing/makeindexk/configure.texk
index 2038d0e81c..6663dede13 100755
--- a/indexing/makeindexk/configure.texk
+++ b/indexing/makeindexk/configure.texk
@@ -716,6 +716,8 @@ CC
MAINT
MAINTAINER_MODE_FALSE
MAINTAINER_MODE_TRUE
+am__xargs_n
+am__rm_f_notfound
AM_BACKSLASH
AM_DEFAULT_VERBOSITY
AM_DEFAULT_V
@@ -2876,7 +2878,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-am__api_version='1.16'
+am__api_version='1.17'
@@ -2979,6 +2981,165 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5
+printf %s "checking whether sleep supports fractional seconds... " >&6; }
+if test ${am_cv_sleep_fractional_seconds+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if sleep 0.001 2>/dev/null
+then :
+ am_cv_sleep_fractional_seconds=yes
+else case e in #(
+ e) am_cv_sleep_fractional_seconds=no ;;
+esac
+fi
+ ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5
+printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; }
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5
+printf %s "checking filesystem timestamp resolution... " >&6; }
+if test ${am_cv_filesystem_timestamp_resolution+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) # Default to the worst case.
+am_cv_filesystem_timestamp_resolution=2
+
+# Only try to go finer than 1 sec if sleep can do it.
+# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work,
+# - 1 sec is not much of a win compared to 2 sec, and
+# - it takes 2 seconds to perform the test whether 1 sec works.
+#
+# Instead, just use the default 2s on platforms that have 1s resolution,
+# accept the extra 1s delay when using $sleep in the Automake tests, in
+# exchange for not incurring the 2s delay for running the test for all
+# packages.
+#
+am_try_resolutions=
+if test "$am_cv_sleep_fractional_seconds" = yes; then
+ # Even a millisecond often causes a bunch of false positives,
+ # so just try a hundredth of a second. The time saved between .001 and
+ # .01 is not terribly consequential.
+ am_try_resolutions="0.01 0.1 $am_try_resolutions"
+fi
+
+# In order to catch current-generation FAT out, we must *modify* files
+# that already exist; the *creation* timestamp is finer. Use names
+# that make ls -t sort them differently when they have equal
+# timestamps than when they have distinct timestamps, keeping
+# in mind that ls -t prints the *newest* file first.
+rm -f conftest.ts?
+: > conftest.ts1
+: > conftest.ts2
+: > conftest.ts3
+
+# Make sure ls -t actually works. Do 'set' in a subshell so we don't
+# clobber the current shell's arguments. (Outer-level square brackets
+# are removed by m4; they're present so that m4 does not expand
+# <dollar><star>; be careful, easy to get confused.)
+if (
+ set X `ls -t conftest.ts[12]` &&
+ {
+ test "$*" != "X conftest.ts1 conftest.ts2" ||
+ test "$*" != "X conftest.ts2 conftest.ts1";
+ }
+); then :; else
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+as_fn_error $? "ls -t produces unexpected output.
+Make sure there is not a broken ls alias in your environment.
+See 'config.log' for more details" "$LINENO" 5; }
+fi
+
+for am_try_res in $am_try_resolutions; do
+ # Any one fine-grained sleep might happen to cross the boundary
+ # between two values of a coarser actual resolution, but if we do
+ # two fine-grained sleeps in a row, at least one of them will fall
+ # entirely within a coarse interval.
+ echo alpha > conftest.ts1
+ sleep $am_try_res
+ echo beta > conftest.ts2
+ sleep $am_try_res
+ echo gamma > conftest.ts3
+
+ # We assume that 'ls -t' will make use of high-resolution
+ # timestamps if the operating system supports them at all.
+ if (set X `ls -t conftest.ts?` &&
+ test "$2" = conftest.ts3 &&
+ test "$3" = conftest.ts2 &&
+ test "$4" = conftest.ts1); then
+ #
+ # Ok, ls -t worked. If we're at a resolution of 1 second, we're done,
+ # because we don't need to test make.
+ make_ok=true
+ if test $am_try_res != 1; then
+ # But if we've succeeded so far with a subsecond resolution, we
+ # have one more thing to check: make. It can happen that
+ # everything else supports the subsecond mtimes, but make doesn't;
+ # notably on macOS, which ships make 3.81 from 2006 (the last one
+ # released under GPLv2). https://bugs.gnu.org/68808
+ #
+ # We test $MAKE if it is defined in the environment, else "make".
+ # It might get overridden later, but our hope is that in practice
+ # it does not matter: it is the system "make" which is (by far)
+ # the most likely to be broken, whereas if the user overrides it,
+ # probably they did so with a better, or at least not worse, make.
+ # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html
+ #
+ # Create a Makefile (real tab character here):
+ rm -f conftest.mk
+ echo 'conftest.ts1: conftest.ts2' >conftest.mk
+ echo ' touch conftest.ts2' >>conftest.mk
+ #
+ # Now, running
+ # touch conftest.ts1; touch conftest.ts2; make
+ # should touch ts1 because ts2 is newer. This could happen by luck,
+ # but most often, it will fail if make's support is insufficient. So
+ # test for several consecutive successes.
+ #
+ # (We reuse conftest.ts[12] because we still want to modify existing
+ # files, not create new ones, per above.)
+ n=0
+ make=${MAKE-make}
+ until test $n -eq 3; do
+ echo one > conftest.ts1
+ sleep $am_try_res
+ echo two > conftest.ts2 # ts2 should now be newer than ts1
+ if $make -f conftest.mk | grep 'up to date' >/dev/null; then
+ make_ok=false
+ break # out of $n loop
+ fi
+ n=`expr $n + 1`
+ done
+ fi
+ #
+ if $make_ok; then
+ # Everything we know to check worked out, so call this resolution good.
+ am_cv_filesystem_timestamp_resolution=$am_try_res
+ break # out of $am_try_res loop
+ fi
+ # Otherwise, we'll go on to check the next resolution.
+ fi
+done
+rm -f conftest.ts?
+# (end _am_filesystem_timestamp_resolution)
+ ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5
+printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; }
+
+# This check should not be cached, as it may vary across builds of
+# different projects.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
printf %s "checking whether build environment is sane... " >&6; }
# Reject unsafe characters in $srcdir or the absolute working directory
@@ -2999,49 +3160,45 @@ esac
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
-if (
- am_has_slept=no
- for am_try in 1 2; do
- echo "timestamp, slept: $am_has_slept" > conftest.file
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$*" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- if test "$*" != "X $srcdir/configure conftest.file" \
- && test "$*" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
- alias in your environment" "$LINENO" 5
- fi
- if test "$2" = conftest.file || test $am_try -eq 2; then
- break
- fi
- # Just in case.
- sleep 1
- am_has_slept=yes
- done
- test "$2" = conftest.file
- )
-then
- # Ok.
- :
-else
- as_fn_error $? "newly created file is older than distributed files!
+am_build_env_is_sane=no
+am_has_slept=no
+rm -f conftest.file
+for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ test "$2" = conftest.file
+ ); then
+ am_build_env_is_sane=yes
+ break
+ fi
+ # Just in case.
+ sleep "$am_cv_filesystem_timestamp_resolution"
+ am_has_slept=yes
+done
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5
+printf "%s\n" "$am_build_env_is_sane" >&6; }
+if test "$am_build_env_is_sane" = no; then
+ as_fn_error $? "newly created file is older than distributed files!
Check your system clock" "$LINENO" 5
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
+
# If we didn't sleep, we still need to ensure time stamps of config.status and
# generated files are strictly newer.
am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
- ( sleep 1 ) &
+if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1
+then :
+
+else case e in #(
+ e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) &
am_sleep_pid=$!
+ ;;
+esac
fi
rm -f conftest.file
@@ -3331,17 +3488,13 @@ else
fi
rmdir .tst 2>/dev/null
+AM_DEFAULT_VERBOSITY=1
# Check whether --enable-silent-rules was given.
if test ${enable_silent_rules+y}
then :
enableval=$enable_silent_rules;
fi
-case $enable_silent_rules in # (((
- yes) AM_DEFAULT_VERBOSITY=0;;
- no) AM_DEFAULT_VERBOSITY=1;;
- *) AM_DEFAULT_VERBOSITY=1;;
-esac
am_make=${MAKE-make}
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
printf %s "checking whether $am_make supports nested variables... " >&6; }
@@ -3364,15 +3517,45 @@ esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
printf "%s\n" "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
- AM_V='$(V)'
- AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
- AM_V=$AM_DEFAULT_VERBOSITY
- AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
AM_BACKSLASH='\'
+am__rm_f_notfound=
+if (rm -f && rm -fr && rm -rf) 2>/dev/null
+then :
+
+else case e in #(
+ e) am__rm_f_notfound='""' ;;
+esac
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5
+printf %s "checking xargs -n works... " >&6; }
+if test ${am_cv_xargs_n_works+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2
+3"
+then :
+ am_cv_xargs_n_works=yes
+else case e in #(
+ e) am_cv_xargs_n_works=no ;;
+esac
+fi ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5
+printf "%s\n" "$am_cv_xargs_n_works" >&6; }
+if test "$am_cv_xargs_n_works" = yes
+then :
+ am__xargs_n='xargs -n'
+else case e in #(
+ e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }'
+ ;;
+esac
+fi
+
@@ -4619,7 +4802,7 @@ else case e in #(
# icc doesn't choke on unknown options, it will just issue warnings
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # When given -MP, icc 7.0 and 7.1 complain thus:
# icc: Command line warning: ignoring option '-M'; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option '-MP' not supported
@@ -8865,47 +9048,9 @@ fi
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes. So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
- cat >&2 <<'END'
-Oops!
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present. This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message. This
-can help us improve future automake versions.
-END
- if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
- echo 'Configuration will proceed anyway, since you have set the' >&2
- echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
- echo >&2
- else
- cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <https://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
- as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
- fi
-fi
# am_maintainer_mode
@@ -9149,6 +9294,7 @@ esac
fi
: ${AR=ar}
+: ${ARFLAGS=cr}
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5
printf %s "checking the archiver ($AR) interface... " >&6; }
@@ -9169,7 +9315,7 @@ int some_variable = 0;
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5'
+ am_ar_try='$AR $ARFLAGS libconftest.a conftest.$ac_objext >&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
(eval $am_ar_try) 2>&5
ac_status=$?
@@ -16463,6 +16609,18 @@ printf %s "checking that generated files are newer than configure... " >&6; }
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5
printf "%s\n" "done" >&6; }
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+esac
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+
if test -n "$EXEEXT"; then
am__EXEEXT_TRUE=
am__EXEEXT_FALSE='#'
diff --git a/indexing/xindex/CHANGELOG b/indexing/xindex/CHANGELOG
index df515fcbec..3684255a78 100644
--- a/indexing/xindex/CHANGELOG
+++ b/indexing/xindex/CHANGELOG
@@ -1,3 +1,10 @@
+0.61 2024-09-22 - fix for hyperref with \see and \seealso
+0.60 2024-05-16 - more fixes for UCA as default mode
+0.59 2024-05-13 - removed the xindex-cfg.lua
+0.58 2024-05-12 - Use UCA as default
+ fix for french sorting
+0.57 2024-01-20 - Test version for UCA
+0.56 2024-01-12 - fix for leading spaces of index entries
0.55 2023-07-30 - fix for wrong presort -- disabled the use of \writeidx
0.54 2023-07-28 - do not print control output for testing
0.53 2023-07-16 - added function literize to escape special lua characters
diff --git a/indexing/xindex/README.md b/indexing/xindex/README.md
index 3d4dbd0198..b35fa53647 100644
--- a/indexing/xindex/README.md
+++ b/indexing/xindex/README.md
@@ -1,15 +1,17 @@
# xindex
-Copyright 2019-2023 Herbert Voß
+Copyright 2019-2024 Herbert Voß
+The files xindex-lapp.lua and xindex-pretty.lua have the MIT licence.
+all other files are LPPL 1.3
Unicode compatible index programm for LaTeX. It needs Lua 5.3 which
will be included in at least LuaTeX 1.09 (TeXLive 2019)
* xindex.lua -- main file
-* xindex-cfg.lua -- config module
* xindex-cfg-common.lua -- main config module
* xindex-cfg-uca.lua -- config module for uca
+* xindex-cfg-no_uca.lua -- config module for old mode
* xindex-base.lua -- base file
* xindex-baselib.lua -- base file
* xindex-lib.lua -- functions module
@@ -29,18 +31,22 @@ possible options are (short,long):
-q,--quiet
-h,--help
-v... Verbosity level; can be -v, -vv, -vvv
- -c,--config (default cfg)
- -e,--escapechar (default ")
- -n,--noheadings
+ -V,--version
-a,--no_casesensitive
-b,--no_labels
+ -c,--config (default "")
+ -e,--escapechar (default ")
+ -f,--fix_hyperref
+ -g,--no_pagenumber
+ -i,--ignoreSpace
+ -k,--checklang
+ -l,--language (default en)
+ -n,--noheadings
-o,--output (default "")
- -l,--language (default en)
-p,--prefix (default L)
- -u,--use_UCA
- -g,--no_pagenumber
-s,--use_stdin
- -V,--version
+ -u,--use_UCA no more needed
+ -x,--no_UCA
<files...> (default stdin) .idx file(s)
Testfiles:
diff --git a/indexing/xindex/doc/Makefile b/indexing/xindex/doc/Makefile
index 725576594d..4cf5b6ef78 100644
--- a/indexing/xindex/doc/Makefile
+++ b/indexing/xindex/doc/Makefile
@@ -13,7 +13,7 @@ ARCHFILES = $(PACKAGE).sty $(PACKAGE).tex $(PACKAGE).pro $(MAIN).tex README Chan
#TDS = ~/PSTricks/PSTricks-TDS
-all : doc clean
+all : doc
# clean
doc:
$(LATEX) --shell-escape --interaction=nonstopmode $(MAIN)
diff --git a/indexing/xindex/doc/tests/HADW.pdf b/indexing/xindex/doc/tests/HADW.pdf
index b5be513894..6adda4baa5 100644
--- a/indexing/xindex/doc/tests/HADW.pdf
+++ b/indexing/xindex/doc/tests/HADW.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/HADW.tex b/indexing/xindex/doc/tests/HADW.tex
index 0ce50d0b10..34feccc755 100644
--- a/indexing/xindex/doc/tests/HADW.tex
+++ b/indexing/xindex/doc/tests/HADW.tex
@@ -14,7 +14,7 @@
\makeatother
\begin{document}
-Run with \verb|xindex --config HAdW-eKO|
+Run with \verb|xindex --config HAdW-eKO -x| no UCA
\printindex
\end{document}
diff --git a/indexing/xindex/doc/tests/Umlaute.ind b/indexing/xindex/doc/tests/Umlaute.ind
index 3ad13d9ff0..5367f8bbc0 100644
--- a/indexing/xindex/doc/tests/Umlaute.ind
+++ b/indexing/xindex/doc/tests/Umlaute.ind
@@ -23,8 +23,8 @@
\item Oberin, {5f}
\item Obstler, {7}
\item Ödem, {4}
- \item oder, {8}
\item Oder, \seealso{Fluss}{33}, {58}
+ \item oder, {8}
\item Öl, {8}
\item ölen, {9}
\item Oligarch, {28}
diff --git a/indexing/xindex/doc/tests/Umlaute.pdf b/indexing/xindex/doc/tests/Umlaute.pdf
index 7fdc54812c..6060678d9c 100644
--- a/indexing/xindex/doc/tests/Umlaute.pdf
+++ b/indexing/xindex/doc/tests/Umlaute.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/Umlaute2.ind b/indexing/xindex/doc/tests/Umlaute2.ind
index 94419c09d2..5367f8bbc0 100644
--- a/indexing/xindex/doc/tests/Umlaute2.ind
+++ b/indexing/xindex/doc/tests/Umlaute2.ind
@@ -11,24 +11,24 @@
\textbf{G}\label{L-xindex-G}
\nopagebreak[4]
\item Göbel, {58}
- \item Göthe, {58}
\item Goethe, {58}
- \item Götz, {58}
\item Goldmann, {58}
+ \item Göthe, {58}
+ \item Götz, {58}
\indexspace
\textbf{O}\label{L-xindex-O}
\nopagebreak[4]
- \item Ödem, {4}
- \item Öl, {8}
- \item ölen, {9}
- \item Öresund, {2}, {4}
- \item Österreich, {1f}
\item Ober, {4}, {6}
\item Oberin, {5f}
\item Obstler, {7}
- \item oder, {8}
+ \item Ödem, {4}
\item Oder, \seealso{Fluss}{33}, {58}
+ \item oder, {8}
+ \item Öl, {8}
+ \item ölen, {9}
\item Oligarch, {28}
+ \item Öresund, {2}, {4}
\item Ostern, {3f}
+ \item Österreich, {1f}
\end{theindex}
diff --git a/indexing/xindex/doc/tests/Umlaute2.pdf b/indexing/xindex/doc/tests/Umlaute2.pdf
index d19db6ea79..a07a43df34 100644
--- a/indexing/xindex/doc/tests/Umlaute2.pdf
+++ b/indexing/xindex/doc/tests/Umlaute2.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/buch.ind b/indexing/xindex/doc/tests/buch.ind
index 91f07404d0..3567565fae 100644
--- a/indexing/xindex/doc/tests/buch.ind
+++ b/indexing/xindex/doc/tests/buch.ind
@@ -17,9 +17,6 @@
\indexspace
\textbf{A}\label{L-xindex-A}
\nopagebreak[4]
- \item AMS, {376}
- \item ANSI, {67}
- \item AUC\TeX , {29}
\item Abbildung, {309}
\item Abbildungsverzeichnis, {310}, {475}
\item Absatz, {7}, {381}
@@ -33,12 +30,15 @@
\item Akzent, {73}, {406}, {433}, {447}
\item Albanisch, {67}
\item American Mathematical Society (AMS), {415}
+ \item AMS, {376}
\item Anführungszeichen, {81}
\item Anhang, {62}
+ \item ANSI, {67}
\item Atom, {400f}
- \item Autor, {54}
- \item Autor"=Jahr"=Schema, {544}
+ \item AUC\TeX , {29}
\item Autor-Stil, {586}
+ \item Autor"=Jahr"=Schema, {544}
+ \item Autor, {54}
\indexspace
\textbf{B}\label{L-xindex-B}
@@ -78,7 +78,6 @@
\indexspace
\textbf{C}\label{L-xindex-C}
\nopagebreak[4]
- \item CMYK, {671}
\item cc, {859}
\item class option, {386}
\item Clipping, {247}
@@ -86,6 +85,7 @@
\item Clown, {256}
\item Cluster, {248}
\item cm, {859}
+ \item CMYK, {671}
\item Con\TeX t, {879}
\item continued fraction, {430}
\item Cork-Kodierung, {72}
@@ -95,8 +95,6 @@
\indexspace
\textbf{D}\label{L-xindex-D}
\nopagebreak[4]
- \item DIN\,5007, {512}
- \item DIN~476, {91}
\item Dänisch, {67}, {76}
\item Dateilinks, {188}
\item Datum, {54}
@@ -113,11 +111,12 @@
\item Dezimalstellen, {248}
\item Differentialquotient, {414}
\item dimen register, {860}
+ \item DIN\,5007, {512}
+ \item DIN~476, {91}
\item displaymath mode, {381}
\item Distribution, {13}
\item Divisior, {431}
\item \idxtextClasses
- \subitem -\,{\sffamily IEEEtran}, {185}
\subitem -\,{\sffamily amsart}, {415}
\subitem -\,{\sffamily amsbook}, {415}
\subitem -\,{\sffamily article}, {52f}, {59f}, {93}, {128}, {150}, {383}, {474}
@@ -125,6 +124,7 @@
\subitem -\,{\sffamily book}, {59f}, {93}, {113}, {128}, {150}, {202}, {383f}, {434}, {474f}
\subitem -\,{\sffamily ctexart}, {572}
\subitem -\,{\sffamily europecv}, {827f}, {830}
+ \subitem -\,{\sffamily IEEEtran}, {185}
\subitem -\,{\sffamily letter}, {59ff}
\subitem -\,{\sffamily memoir}, {59f}
\subitem -\,{\sffamily powerdot}, {615}
@@ -168,15 +168,16 @@
\indexspace
\textbf{F}\label{L-xindex-F}
\nopagebreak[4]
- \item FNDB, {872}
\item Fallunterscheidung, {392}, {425}
- \item Farbe, {236}, {669}
- \subitem -\,Modell, {680}
+ \item Farbe
\subitem -\,konvertieren, {680}
- \item Farbmodell, {236}, {669}
+ \subitem -\,Modell, {680}
+ \item Farbe, {236}, {669}
+ \item Farbmodell
\subitem -\,CMYK, {673}
\subitem -\,HSB, {673}
\subitem -\,RGB, {673}
+ \item Farbmodell, {236}, {669}
\item Farbserie, {672}, {680}
\item Farbwert, {680}
\item Faröisch, {67}
@@ -185,8 +186,9 @@
\item Fettschrift, {220}
\item Finnisch, {67}, {76}, {80}
\item Flattersatz, {142f}, {223}, {358}, {538f}, {640}
- \item Float, {309}
\item float box, {337}
+ \item Float, {309}
+ \item FNDB, {872}
\item Folie, {621}
\item Folienübergänge, {639}
\item Fontfamilie, {661}
@@ -205,7 +207,6 @@
\indexspace
\textbf{G}\label{L-xindex-G}
\nopagebreak[4]
- \item GUI, {9}, {29}
\item Galizisch, {67}
\item Gaußscher Algorithmus, {448}
\item GenericError, {869}
@@ -222,6 +223,7 @@
\item Griechisch, {76}, {80}
\item Grundlinie, {224}, {264}
\item Gruppe, {252}, {864}
+ \item GUI, {9}, {29}
\item Guillemets, {82}
\indexspace
@@ -237,15 +239,6 @@
\textbf{I}\label{L-xindex-I}
\nopagebreak[4]
\item IDE, {29}
- \item IPA, {72}
- \item ISO 8859-1, {67}
- \item ISO 8859-15, {67}
- \item ISO 8859-2, {67}
- \item ISO 8859-3, {67}
- \item ISO 8859-4, {67}
- \item ISO-Image, {14}
- \item ISO~216, {91}
- \item IUPAC, {814}
\item in, {859}
\item indent, {476}
\item Index, {32}, {405}, {408f}, {432}, {699}
@@ -257,17 +250,25 @@
\item Integrationsvariable, {414}
\item interline spacing, {405}
\item Internetadresse, {84}
+ \item IPA, {72}
\item Irisch, {67}
\item Isländisch, {67}, {76}
- \item italic, {86}
+ \item ISO 8859-15, {67}
+ \item ISO 8859-1, {67}
+ \item ISO 8859-2, {67}
+ \item ISO 8859-3, {67}
+ \item ISO 8859-4, {67}
+ \item ISO-Image, {14}
+ \item ISO~216, {91}
\item Italic-Korrektur, {88}
+ \item italic, {86}
\item Italienisch, {76}, {80}
\item Items, {413}
+ \item IUPAC, {814}
\indexspace
\textbf{K}\label{L-xindex-K}
\nopagebreak[4]
- \item \KOMAScript , {59ff}, {93}
\item Kapitel, {62}, {76}
\item Kapitelanfang, {62}
\item Katalanisch, {67}
@@ -279,9 +280,11 @@
\item Klammersymbole, {394}
\item Knoten, {775}
\item Kochsche Schneeflocke, {778}
- \item Kodierung, {38}, {67}
+ \item Kodierung
\subitem -\,ascii, {67}
+ \item Kodierung, {38}, {67}
\item Kolumnentitel, {121}, {126}
+ \item \KOMAScript , {59ff}, {93}
\item Komma, {248}
\item Kommutative Diagramme, {448}
\item Konventionen, {213}
@@ -294,10 +297,9 @@
\indexspace
\textbf{L}\label{L-xindex-L}
\nopagebreak[4]
- \item LR-Box, {173}
- \item \LaTeX -Editor, {29}
\item Label, {181}, {245}, {387}, {626}
\item largesymbols, {396}
+ \item \LaTeX -Editor, {29}
\item Latin-1, {68}
\item Laufweite, {596}
\item Layout, {9}, {377}, {618}
@@ -307,10 +309,11 @@
\item Lettisch, {67}
\item Liedtexte, {145}
\item Ligaturen, {89}
- \item Linie, {219}, {230}
+ \item Linie
\subitem -\,farbig, {217}
\subitem -\,horizontal, {216}, {230}
\subitem -\,vertikal, {216}, {223}, {230}
+ \item Linie, {219}, {230}
\item Linksbündig, {223}
\item Linux, {13}
\item list of tables, {256}
@@ -322,11 +325,11 @@
\subitem -\,Tabellenüberschrift, {259}
\subitem -\,Tabellenunterschrift, {259}
\item lot, {256}
+ \item LR-Box, {173}
\indexspace
\textbf{M}\label{L-xindex-M}
\nopagebreak[4]
- \item MLA, {586}
\item Mac OS~X, {13}, {67}
\item Mac\TeX , {13}
\item Makefile, {9}
@@ -344,11 +347,13 @@
\item Matrix, {227}, {383}, {405f}, {426}, {449}
\item Mediävalziffern, {595}
\item Metronyme, {564}
- \item MiK\TeX , {13}, {21}, {23}
+ \item MiK\TeX
\subitem -\,Paketmanager, {21}
+ \item MiK\TeX , {13}, {21}, {23}
\item Mikrotypografie, {7}
\item Minimalbeispiel, {888}
\item Minuskelziffern, {595}
+ \item MLA, {586}
\item mm, {859}
\item Modulo, {433}
\item Monospaceschrift, {64}
@@ -361,9 +366,9 @@
\indexspace
\textbf{N}\label{L-xindex-N}
\nopagebreak[4]
- \item NEJM, {585}
\item Navigationsleiste, {33}, {616}, {619}
\item Navigator, {33}
+ \item NEJM, {585}
\item Neunerteilung, {103}
\item Niederländisch, {67}, {76}, {80}
\item Niedersorbisch, {76}
@@ -378,8 +383,8 @@
\item Onlinequelle, {561}
\item OpenOffice, {35}
\item OpenType, {12}, {72}, {601}
- \item Operator, {378}, {400}, {408}, {414}, {449}
\item Operator-Symbol, {408}
+ \item Operator, {378}, {400}, {408}, {414}, {449}
\item Operatorname, {408}
\item option clash, {871}
\item optischer Randausgleich, {163}
@@ -393,7 +398,6 @@
\nopagebreak[4]
\item \protect \nxLnotation {p}-Spalte, {271}
\item p-Spalte, {268}
- \item PDF/A, {189}
\item Page Coded Language, {750}
\item Paginierung, {115}
\item Papierbreite, {96}
@@ -403,6 +407,7 @@
\item Parabel, {770}
\item Patronyme, {564}
\item pc, {860}
+ \item PDF/A, {189}
\item pdf\TeX , {11}, {13}
\item pdfe\TeX , {11}
\item Pfade, {31}
@@ -432,7 +437,6 @@
\textbf{R}\label{L-xindex-R}
\nopagebreak[4]
\item \protect \nxLnotation {r}-Spalte, {271}
- \item RGB, {674}
\item Radikand, {432}
\item Rahmenfarbe, {389}
\item Randbemerkung, {157}
@@ -442,6 +446,7 @@
\item Referenzieren, {245}
\item Rekursion, {865}
\item Relationssymbol, {380}
+ \item RGB, {674}
\item robust, {377f}
\item Roman-Zeichensatz, {399}
\item root, {14}
@@ -454,7 +459,6 @@
\indexspace
\textbf{S}\label{L-xindex-S}
\nopagebreak[4]
- \item SQL-Datenbank, {247}
\item Satzprogramm, {6}
\item Satzspiegel, {91}, {94}, {103}
\item Satzspiegelberechnung, {103}
@@ -465,6 +469,7 @@
\item Schreibmaschinenschrift, {64}
\item Schrift
\subitem -\,Breite, {64}
+ \subitem -\,fett, {411}, {451}
\subitem -\,Gewicht, {87}
\subitem -\,Größe, {412}
\subitem -\,Höhe, {64}
@@ -473,7 +478,6 @@
\subitem -\,Stil, {378}
\subitem -\,Tiefe, {64}
\subitem -\,Warnung, {883}
- \subitem -\,fett, {411}, {451}
\item Schriftattribut, {660}
\item Schrifteinbindung, {9}
\item Schriftfamilie, {85}, {442}, {595}
@@ -498,8 +502,8 @@
\item sidebar, {619}
\item Sigel, {561}
\item Silbentrennung, {149}
- \item skip, {58}, {860}
\item skip register, {860f}
+ \item skip, {58}, {860}
\item Skriptsprache, {13}
\item slanted, {86}
\item Slowakisch, {67}, {80}
@@ -518,14 +522,16 @@
\item Spaltenzwischenraum, {290}
\item Spanisch, {67}, {76}, {80}
\item Sprachauswahl, {9}
+ \item SQL-Datenbank, {247}
\item Standardsprache, {76}
\item Sternversion, {215}
\item Subscript, {378}, {393}, {409}
\item Sumatra-PDF, {23}
\item Summe, {393}, {438}
\item Superscript, {378}, {409}
- \item Symbol, {400}
+ \item Symbol
\subitem -\,gestockt, {411}
+ \item Symbol, {400}
\item Syntax, {214}
\item Systemadministrator, {14}
\item Systemmeldung, {883}
@@ -533,14 +539,13 @@
\indexspace
\textbf{T}\label{L-xindex-T}
\nopagebreak[4]
- \item TDS, {172}, {872}
- \item TOC, {128}
- \item Tabelle, {309f}
+ \item Tabelle
\subitem -\,Breite, {214}, {289}
\subitem -\,Farbe, {273}
- \subitem -\,Kopf, {222}
\subitem -\,gerahmt, {224}
\subitem -\,geschachtelt, {268}
+ \subitem -\,Kopf, {222}
+ \item Tabelle, {309f}
\item Tabellenbeschriftung, {62}
\item Tabellenbreite, {215}
\item Tabellenkalkulation, {282}
@@ -549,5 +554,126 @@
\item Tabellenunterschrift
\subitem -\,\nxLPack {longtable}, {259}
\item Tabellenverzeichnis, {310}, {475}
- \item {\ttfamily tabular} Env., \idxbf{0--218}
+ \item {\ttfamily tabular} Env., \idxbf{214--218}
+ \item Tagebuchnotation, {561}
+ \item Tcheschisch, {80}
+ \item TDS, {172}, {872}
+ \item Teilungsverhältnis, {62}
+ \item Template, {657}
+ \item \TeX -Collection, {13}
+ \item \TeXLive, {3}, {13--21}, {23}, {25f}, {31}, {512}, {542}, {590}, {610}, {766}, {855}, {870}, {872ff}, {877ff}, {890}
+ \item \TeX maker, {29}
+ \item \TeX nicCenter, {31}, {35}, {38}
+ \item \TeX Shop, {23}
+ \item \TeX Studio, {23}
+ \item Text, {398}
+ \item Textanteil, {309}
+ \item Textkörper, {51}, {53}, {871}
+ \item Textmodus, {411}, {450}
+ \item Textschrift, {411}
+ \item Textverarbeitung, {6}
+ \item Textverarbeitungsprogramm, {7}
+ \item \TeX works, {23}
+ \item Titel, {54}, {413}
+ \item Titelkopf, {658}
+ \item TOC, {128}
+ \item Tortendiagramm, {244}, {746}
+ \item Transparenz, {631}
+ \item Trennalgorithmus, {75}
+ \item Trennlinie, {221}
+ \item Trennregeln, {77}
+ \item Trennung, {222}
+ \item Tridiagonalmatrix, {428}
+ \item TrueType, {12}, {72}, {601}
+ \item Tschechisch, {67}, {76}
+ \item Türkisch, {67}, {76}, {80}
+ \item Type-3, {70}
+ \item Type"~1, {12}
+ \item Typewriterschrift, {64}
+ \item Typografie, {213}
+
+\indexspace
+\textbf{U}\label{L-xindex-U}
+\nopagebreak[4]
+ \item Überschriftenformat, {77}
+ \item Übersetzung, {207}
+ \item Ukrainisch, {76}, {80}
+ \item Umbruch, {7}
+ \item Umbruchmöglichkeit, {252}
+ \item Umgebung, {848}
+ \item Umgebungsvariable, {14}
+ \item Umkodierung, {38}
+ \item Ungarisch, {67}, {76}, {80}
+ \item Unicode, {11}
+ \item Unsichtbarkeit, {631}
+ \item Untergleichung, {437}, {454}
+ \item Unterstrich, {449}
+ \item Updatemanager, {18}
+ \item URL, {84}, {190}
+ \item USB-Stick, {879}
+ \item UTF-16, {189}
+ \item UTF-8, {38}, {67}
+
+\indexspace
+\textbf{V}\label{L-xindex-V}
+\nopagebreak[4]
+ \item Variable, {414}
+ \item Vektor, {407}, {448}
+ \item Vektorschrift, {54}, {71}, {85}
+ \item Verbatim-Modus, {654}
+ \item vertikale Linien, {223}
+ \item Verzeichnisse, {63}
+ \item Viewer, {31f}
+ \item Vollbildmodus, {639}
+ \item Vordergrundfarbe, {658}
+
+\indexspace
+\textbf{W}\label{L-xindex-W}
+\nopagebreak[4]
+ \item Waisenkind, {103}
+ \item Warnung, {883}
+ \item Wickelfalz, {832}
+ \item Wiederholungsfaktor, {215}
+ \item Windows 1250, {67}
+ \item Windows 1252, {67}
+ \item Windows 1257, {67}
+ \item Windows, {13}, {21}
+ \item Witwe, {102}
+ \item Wörterbuch, {40}
+ \item Worttrennung, {143}, {223}
+ \item Wortzwischenraum, {165}
+ \item Wurzel, {431}
+ \item Wurzelexponent, {432}
+
+\indexspace
+\textbf{X}\label{L-xindex-X}
+\nopagebreak[4]
+ \item X-Spalte, {290}
+ \item Xem\TeX , {13}
+
+\indexspace
+\textbf{Z}\label{L-xindex-Z}
+\nopagebreak[4]
+ \item Zahlenkolonnen, {247}
+ \item Zähler, {383f}, {387}, {862}
+ \item Zählung, {267}
+ \item Zeichen (aktives), {408}
+ \item Zeichensatzbefehle, {87}
+ \item Zeile
+ \subitem -\,Abstand, {234}
+ \subitem -\,Breite, {289}
+ \subitem -\,Farbe, {236}
+ \subitem -\,Höhe, {219}
+ \subitem -\,Tiefe, {220}
+ \subitem -\,Vorschub, {269}
+ \subitem -\,Zähler, {230}
+ \item Zeilenabstand, {56}
+ \item Zeilenhöhe, {378}
+ \item Zeilenmodus, {376--380}, {391}, {404}
+ \item Zeilenumbruch, {380}
+ \item Zellenfarbe, {236}
+ \item Zentrieren, {141}
+ \item Zickzackfalz, {832}
+ \item Zufallszahlen, {448}
+ \item Zusammenfassung, {63}
\end{theindex}
diff --git a/indexing/xindex/doc/tests/buch.pdf b/indexing/xindex/doc/tests/buch.pdf
index 15984473ac..6ac37cb8a6 100644
--- a/indexing/xindex/doc/tests/buch.pdf
+++ b/indexing/xindex/doc/tests/buch.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/demo-hyperref.ind b/indexing/xindex/doc/tests/demo-hyperref.ind
index 639cedcaab..50054a6a7e 100644
--- a/indexing/xindex/doc/tests/demo-hyperref.ind
+++ b/indexing/xindex/doc/tests/demo-hyperref.ind
@@ -36,198 +36,5 @@
\item demnach, \hyperpage{35}, \hyperpage{38}
\item Demonstration, \hyperpage{29}, \hyperpage{35}
\item den, \hyperpage{46}
- \item der, \hyperpage{34}, \hyperpage{37}, \hyperpage{41}
- \item Deshalb, \hyperpage{14}
- \item Deutschland, \hyperpage{8}, \hyperpage{27}
- \item die, \hyperpage{21}, \hyperpage{39}, \hyperpage{41}
- \item Diktatur, \hyperpage{16}
- \item dominiere, \hyperpage{9}
- \item durch, \hyperpage{31}
-
-\indexspace
-\textbf{E}\label{L-xindex-E}
-\nopagebreak[4]
- \item ein, \hyperpage{36}
- \item einer, \hyperpage{22}
- \item einschlägige, \hyperpage{31}
- \item Ende, \hyperpage{21}
- \item endet, \hyperpage{15}
- \item er, \hyperpage{2}, \hyperindexformat{\seealso{foo}}{4}
- \item erkennen, \hyperpage{31}
- \item ersten, \hyperpage{21}
- \item erzählt, \hyperpage{1}
- \item es, \hyperpage{8}, \hyperpage{38}
- \item etwa, \hyperpage{19}, \hyperpage{21}
- \item Europaplatz., \hyperpage{25}
-
-\indexspace
-\textbf{F}\label{L-xindex-F}
-\nopagebreak[4]
- \item Feindbild, \hyperpage{7}
- \item Festakt, \hyperpage{19}
- \item Flaggen, \hyperpage{36}
- \item Flüchtlinge, \hyperpage{11}
- \item für, \hyperpage{10}, \hyperpage{26}
-
-\indexspace
-\textbf{G}\label{L-xindex-G}
-\nopagebreak[4]
- \item gaben, \hyperpage{30}
- \item gehabt, \hyperpage{36}
- \item gehe, \hyperpage{9}
- \item gekommen., \hyperpage{38}
- \item Gelassenheit, \hyperpage{4}
- \item gelästert, \hyperpage{46}
- \item Gleichzeitig, \hyperpage{4}
- \item gut, \hyperpage{9}
-
-\indexspace
-\textbf{H}\label{L-xindex-H}
-\nopagebreak[4]
- \item haben, \hyperpage{32}, \hyperpage{35}, \hyperpage{42}
- \item haben., \hyperpage{35}
- \item hatte, \hyperpage{25}
- \item Hilfe, \hyperpage{10}
-
-\indexspace
-\textbf{I}\label{L-xindex-I}
-\nopagebreak[4]
- \item illegalen, \hyperpage{36}
- \item Im, \hyperpage{43}
- \item in, \hyperpage{15}, \hyperpage{19}
- \item ist, \hyperpage{43}
-
-\indexspace
-\textbf{J}\label{L-xindex-J}
-\nopagebreak[4]
- \item jedoch, \hyperpage{36}
- \item jungen, \hyperpage{40}
-
-\indexspace
-\textbf{K}\label{L-xindex-K}
-\nopagebreak[4]
- \item keine, \hyperpage{36}
- \item Kilometer, \hyperpage{23}
- \item Kundgebung, \hyperpage{23}, \hyperpage{42}
-
-\indexspace
-\textbf{L}\label{L-xindex-L}
-\nopagebreak[4]
- \item leben., \hyperpage{14}
- \item lernen, \hyperpage{14}
-
-\indexspace
-\textbf{M}\label{L-xindex-M}
-\nopagebreak[4]
- \item machen., \hyperpage{8}
- \item mahnte, \hyperpage{2}
- \item man, \hyperpage{14}
- \item Männer, \hyperpage{40}
- \item Märtyrer, \hyperpage{1}
- \item mehr, \hyperpage{3}, \hyperpage{32}
- \item Menschen, \hyperpage{34}
- \item Migranten, \hyperpage{12}
- \item Minderheiten, \hyperpage{5}
- \item mit, \hyperpage{14}, \hyperpage{29}
- \item möglich., \hyperpage{14}
- \item Motto, \hyperpage{29}
- \item müsse, \hyperpage{14}
-
-\indexspace
-\textbf{N}\label{L-xindex-N}
-\nopagebreak[4]
- \item N, \hyperpage{31}
- \item nach, \hyperpage{19}
- \item Nation., \hyperpage{30}
- \item neigte, \hyperpage{21}
- \item Neonazis, \hyperpage{31}
- \item Netz, \hyperpage{43}
- \item nicht, \hyperpage{14}, \hyperpage{38}
- \item Nicht-Perfekten, \hyperpage{14}
-
-\indexspace
-\textbf{O}\label{L-xindex-O}
-\nopagebreak[4]
- \item Obwohl, \hyperpage{8}
- \item Osten, \hyperpage{46}
- \item Östereich, \hyperpage{1}
-
-\indexspace
-\textbf{P}\label{L-xindex-P}
-\nopagebreak[4]
- \item Perfekte, \hyperpage{15}
- \item Pessimismus., \hyperpage{10}
- \item Plakate, \hyperpage{35}
- \item Polizei, \hyperpage{32}, \hyperpage{38}
-
-\indexspace
-\textbf{R}\label{L-xindex-R}
-\nopagebreak[4]
- \item rechten, \hyperpage{23}
- \item richtig, \hyperpage{13}
-
-\indexspace
-\textbf{S}\label{L-xindex-S}
-\nopagebreak[4]
- \item sagte, \hyperpage{36}
- \item sei, \hyperpage{12}, \hyperpage{38}
- \item seiner, \hyperpage{1}
- \item sich, \hyperpage{19}, \hyperpage{21}, \hyperpage{30}, \hyperpage{32}
- \item Sie, \hyperpage{35}
- \item sind, \hyperpage{42}
- \item Sprecher, \hyperpage{36}
- \item Staatsoper, \hyperpage{20}
- \item Stunden, \hyperpage{19}
- \item Symbole, \hyperpage{36}
- \item Szenecodes, \hyperpage{31}
-
-\indexspace
-\textbf{T}\label{L-xindex-T}
-\nopagebreak[4]
- \item Tag, \hyperpage{29}
- \item tausend, \hyperpage{33}
- \item teilgenommen, \hyperpage{42}
- \item Teilnehmer, \hyperpage{21}, \hyperpage{30}
-
-\indexspace
-\textbf{U}\label{L-xindex-U}
-\nopagebreak[4]
- \item über, \hyperpage{45}
- \item Überholmanöver, \hyperpage{17}
- \item überwiegend, \hyperpage{39}
- \item unbegrenzt, \hyperpage{14}
- \item und, \hyperpage{5}, \hyperpage{11\nohyperpage{f}}, \hyperpage{35}
- \item unklar., \hyperpage{43}
-
-\indexspace
-\textbf{V}\label{L-xindex-V}
-\nopagebreak[4]
- \item versammelten, \hyperpage{21}
- \item verwendet, \hyperpage{36}
- \item Volksvertreter, \hyperpage{6}
-
-\indexspace
-\textbf{W}\label{L-xindex-W}
-\nopagebreak[4]
- \item Während, \hyperpage{17}
- \item warnte, \hyperpage{4}
- \item weiter, \hyperpage{24}
- \item wenige, \hyperpage{23}
- \item Wer, \hyperpage{14}
- \item wichtig, \hyperpage{12}
- \item wieder, \hyperpage{44}
- \item Wir, \hyperpage{25}
- \item wird, \hyperpage{43}
- \item Woher, \hyperpage{38}
-
-\indexspace
-\textbf{Z}\label{L-xindex-Z}
-\nopagebreak[4]
- \item zahlreiche, \hyperpage{30}
- \item zeitgleich, \hyperpage{21}
- \item zu, \hyperpage{3}, \hyperpage{8}, \hyperpage{14}, \hyperpage{28}, \hyperpage{31}
- \item zufolge, \hyperpage{30}
- \item zum, \hyperpage{7}
- \item zunächst, \hyperpage{38}
- \item Zwischenfällen, \hyperpage{38}
+ \item der, \hyperpage{15}, \hyperpage{18\nohyperpage{f}}, \hyperpage{28\nohyperpage{f}}, \hyperpage{34}, \hyperpage{37}, \hyperpage{41}
\end{theindex}
diff --git a/indexing/xindex/doc/tests/demo-hyperref.pdf b/indexing/xindex/doc/tests/demo-hyperref.pdf
index 6f8ce53806..4555bea9a5 100644
--- a/indexing/xindex/doc/tests/demo-hyperref.pdf
+++ b/indexing/xindex/doc/tests/demo-hyperref.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/demo.ind b/indexing/xindex/doc/tests/demo.ind
index d53fd6826f..7ab85d75a4 100644
--- a/indexing/xindex/doc/tests/demo.ind
+++ b/indexing/xindex/doc/tests/demo.ind
@@ -48,127 +48,11 @@
\item demnach, {35}, {38}
\item Demonstration, {29}, {35}
\item den, {46}
- \item der, {34}, {37}, {41}
- \item Deshalb, {14}
- \item Deutschland, {8}, {27}
- \item die, {21}, {39}, {41}
- \item Diktatur
- \subitem -\,Afrika
- \subsubitem --\,Kongo, {17}
- \subsubitem --\,Nigeria, {16}
- \subitem -\,Asien
- \subsubitem --\,Nordvietnam, {38}
- \subitem -\,Regierungsform, {29}
- \item dominiere, {9}
- \item durch, {31}
-
-\indexspace
-\textbf{E}\label{L-xindex-E}
-\nopagebreak[4]
- \item ein, {36}
- \item einer, {22}
- \item einschlägige, {31}
- \item Ende, {21}
- \item endet, {15}
- \item er, {2}, {4}
- \item erkennen, {31}
- \item ersten, {21}
- \item erzählt, {1}
- \item es, {8}, {38}
- \item etwa, {19}, {21}
- \item Europaplatz., {25}
-
-\indexspace
-\textbf{F}\label{L-xindex-F}
-\nopagebreak[4]
- \item Feindbild, {7}
- \item Festakt, {19}
- \item Flaggen, {36}
- \item Flüchtlinge, {11}
- \item Frust, {17}
- \item für, {10}, {26}
-
-\indexspace
-\textbf{G}\label{L-xindex-G}
-\nopagebreak[4]
- \item gaben, {30}
- \item gehabt, {36}
- \item gehe, {9}
- \item gekommen., {38}
- \item Gelassenheit, {4}
- \item gelästert, {46}
- \item Gleichzeitig, {4}
- \item gut, {9}
-
-\indexspace
-\textbf{H}\label{L-xindex-H}
-\nopagebreak[4]
- \item haben, {32}, {35}, {42}
- \item haben., {35}
- \item hatte, {25}
- \item Hilfe, {10}
-
-\indexspace
-\textbf{I}\label{L-xindex-I}
-\nopagebreak[4]
- \item illegalen, {36}
- \item Im, {43}
- \item in, {15}, {19}
- \item ist, {43}
-
-\indexspace
-\textbf{J}\label{L-xindex-J}
-\nopagebreak[4]
- \item jedoch, {36}
- \item jungen, {40}
-
-\indexspace
-\textbf{K}\label{L-xindex-K}
-\nopagebreak[4]
- \item keine, {36}
- \item Kilometer, {23}
- \item Kundgebung, {23}, {42}
-
-\indexspace
-\textbf{L}\label{L-xindex-L}
-\nopagebreak[4]
- \item leben., {14}
- \item lernen, {14}
-
-\indexspace
-\textbf{M}\label{L-xindex-M}
-\nopagebreak[4]
- \item machen., {8}
- \item mahnte, {2}
- \item man, {14}
- \item Männer, {40}
- \item Märtyrer, {1}
- \item mehr, {3}, {32}
- \item Menschen, {34}
- \item Migranten, {12}
- \item Minderheiten, {5}
- \item mit, {14}, {29}
- \item möglich., {14}
- \item Motto, {29}
- \item müsse, {14}
-
-\indexspace
-\textbf{N}\label{L-xindex-N}
-\nopagebreak[4]
- \item nach, {19}
- \item Nach, {31}
- \item Nation., {30}
- \item neigte, {21}
- \item Neonazis, {31}
- \item Netz, {43}
- \item nicht, {14}, {38}
- \item Nicht-Perfekten, {14}
+ \item der, {15}, {18f}, {28f}, {34}, {37}, {41}
\indexspace
\textbf{O}\label{L-xindex-O}
\nopagebreak[4]
- \item Obwohl, {8}
- \item Osten, {46}
\item Österreich, \textbf{1--38}
\indexspace
@@ -213,6 +97,7 @@
\nopagebreak[4]
\item über, {45}
\item Überholmanöver, {17}
+ \clearpage
\item überholt, {38}
\item überwiegend, {39}
\item unbegrenzt, {14}
diff --git a/indexing/xindex/doc/tests/demo.pdf b/indexing/xindex/doc/tests/demo.pdf
index 27a9ed59f7..20e969941c 100644
--- a/indexing/xindex/doc/tests/demo.pdf
+++ b/indexing/xindex/doc/tests/demo.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/demo2.ind b/indexing/xindex/doc/tests/demo2.ind
index a2bfb309fc..00c8844d21 100644
--- a/indexing/xindex/doc/tests/demo2.ind
+++ b/indexing/xindex/doc/tests/demo2.ind
@@ -14,7 +14,7 @@
\indexspace
\textbf{F}\label{L-xindex-F}
\nopagebreak[4]
- \item foo, {1}, \textit{1f}, \see{bar}{2}, {2}, \textbf{3}, {3f}
+ \item foo, {1}, \textit{1}, {2}, \textit{2}, \see{bar}{2}, \textbf{3}, {3f}
\indexspace
\textbf{G}\label{L-xindex-G}
diff --git a/indexing/xindex/doc/tests/demo3.pdf b/indexing/xindex/doc/tests/demo3.pdf
index 942185026b..0a645eabc5 100644
--- a/indexing/xindex/doc/tests/demo3.pdf
+++ b/indexing/xindex/doc/tests/demo3.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/demo4.pdf b/indexing/xindex/doc/tests/demo4.pdf
index 24d7696e5b..2a06e1fa08 100644
--- a/indexing/xindex/doc/tests/demo4.pdf
+++ b/indexing/xindex/doc/tests/demo4.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/french.idx b/indexing/xindex/doc/tests/french.idx
new file mode 100644
index 0000000000..01b880e40f
--- /dev/null
+++ b/indexing/xindex/doc/tests/french.idx
@@ -0,0 +1,46 @@
+\indexentry{CÔTÉ}{1}
+\indexentry{cote}{1}
+\indexentry{Côté}{1}
+\indexentry{COTÉ}{1}
+\indexentry{côte}{1}
+\indexentry{COTE}{1}
+\indexentry{côté}{1}
+\indexentry{Coté}{1}
+\indexentry{coté}{1}
+\indexentry{Cote}{1}
+\indexentry{CÔTE}{1}
+\indexentry{Côte}{1}
+\indexentry{lésé}{1}
+\indexentry{péché}{1}
+\indexentry{bohème}{1}
+\indexentry{gêné}{1}
+\indexentry{pêche}{1}
+\indexentry{cæsium}{1}
+\indexentry{pêcher}{1}
+\indexentry{révèle}{1}
+\indexentry{pécher}{1}
+\indexentry{révélé}{1}
+\indexentry{Bohême}{1}
+\indexentry{relève}{1}
+\indexentry{PÉCHÉ}{1}
+\indexentry{maçon}{1}
+\indexentry{relevé}{1}
+\indexentry{Élève}{1}
+\indexentry{gêne}{1}
+\indexentry{élevé}{1}
+\indexentry{MÂCON}{1}
+\indexentry{gène}{1}
+\indexentry{Bohémien}{1}
+\indexentry{caennais}{1}
+\indexentry{lèse}{1}
+\indexentry{coexistence}{1}
+\indexentry{cœur}{1}
+\indexentry{coefficient}{1}
+\indexentry{cafard}{1}
+\indexentry{CŒUR}{1}
+\indexentry{CÆSIUM}{1}
+\indexentry{coté}{1}
+\indexentry{cœur}{1}
+\indexentry{péché}{1}
+\indexentry{coté}{2}
+\indexentry{coefficient}{2}
diff --git a/indexing/xindex/doc/tests/french.ind b/indexing/xindex/doc/tests/french.ind
new file mode 100644
index 0000000000..e9a08a059b
--- /dev/null
+++ b/indexing/xindex/doc/tests/french.ind
@@ -0,0 +1,77 @@
+
+\begin{theindex}
+
+\indexspace
+\textbf{B}\label{L-xindex-B}
+\nopagebreak[4]
+ \item bohème, {1}
+ \item Bohême, {1}
+ \item Bohémien, {1}
+
+\indexspace
+\textbf{C}\label{L-xindex-C}
+\nopagebreak[4]
+ \item caennais, {1}
+ \item cæsium, {1}
+ \item CÆSIUM, {1}
+ \item cafard, {1}
+ \item coefficient, {1\,sq.}
+ \item cœur, {1}
+ \item CŒUR, {1}
+ \item coexistence, {1}
+ \item cote, {1}
+ \item Cote, {1}
+ \item COTE, {1}
+ \item côte, {1}
+ \item Côte, {1}
+ \item CÔTE, {1}
+ \item coté, {1}
+ \item Coté, {1}
+ \item COTÉ, {1}
+ \item côté, {1}
+ \item Côté, {1}
+ \item CÔTÉ, {1}
+ \item coté, {2}
+
+\indexspace
+\textbf{E}\label{L-xindex-E}
+\nopagebreak[4]
+ \item Élève, {1}
+ \item élevé, {1}
+
+\indexspace
+\textbf{G}\label{L-xindex-G}
+\nopagebreak[4]
+ \item gène, {1}
+ \item gêne, {1}
+ \item gêné, {1}
+
+\indexspace
+\textbf{L}\label{L-xindex-L}
+\nopagebreak[4]
+ \item lèse, {1}
+ \item lésé, {1}
+
+\indexspace
+\textbf{M}\label{L-xindex-M}
+\nopagebreak[4]
+ \item MÂCON, {1}
+ \item maçon, {1}
+
+\indexspace
+\textbf{P}\label{L-xindex-P}
+\nopagebreak[4]
+ \item pêche, {1}
+ \item péché, {1}
+ \item PÉCHÉ, {1}
+ \item pécher, {1}
+ \item pêcher, {1}
+
+\indexspace
+\textbf{R}\label{L-xindex-R}
+\nopagebreak[4]
+ \item relève, {1}
+ \item relevé, {1}
+ \item révèle, {1}
+ \item révélé, {1}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/french.pdf b/indexing/xindex/doc/tests/french.pdf
new file mode 100644
index 0000000000..80f4889341
--- /dev/null
+++ b/indexing/xindex/doc/tests/french.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/french.tex b/indexing/xindex/doc/tests/french.tex
new file mode 100644
index 0000000000..8f2191c0dd
--- /dev/null
+++ b/indexing/xindex/doc/tests/french.tex
@@ -0,0 +1,20 @@
+\documentclass[paper=a4,twocolumn]{scrartcl}
+\usepackage{libertinus-otf}
+\usepackage[french]{babel}
+\usepackage{makeidx} \makeindex
+\newcommand*{\IND}[1]{\index{#1}#1\par}
+\begin{document}
+%%% xindex -l fr <file>
+\IND{CÔTÉ} \IND{cote} \IND{Côté} \IND{COTÉ} \IND{côte}
+\IND{COTE} \IND{côté} \IND{Coté} \IND{coté} \IND{Cote}
+\IND{CÔTE} \IND{Côte} \IND{lésé} \IND{péché}
+\IND{bohème} \IND{gêné} \IND{pêche} \IND{cæsium}
+\IND{pêcher} \IND{révèle} \IND{pécher} \IND{révélé}
+\IND{Bohême} \IND{relève} \IND{PÉCHÉ} \IND{maçon}
+\IND{relevé} \IND{Élève} \IND{gêne} \IND{élevé}
+\IND{MÂCON} \IND{gène} \IND{Bohémien} \IND{caennais}
+\IND{lèse} \IND{coexistence} \IND{cœur}
+\IND{coefficient} \IND{cafard} \IND{CŒUR} \IND{CÆSIUM}
+\newpage \IND{coté} \IND{cœur} \IND{péché} \newpage
+\IND{coté}\IND{coefficient} \printindex
+\end{document}
diff --git a/indexing/xindex/doc/tests/runTests.sh b/indexing/xindex/doc/tests/runTests.sh
index a8a8b5fe6d..d1a181db1c 100755
--- a/indexing/xindex/doc/tests/runTests.sh
+++ b/indexing/xindex/doc/tests/runTests.sh
@@ -25,7 +25,7 @@ xindex demo-hyperref > /dev/null
lualatex demo-hyperref > /dev/null
echo "HADW"
-xindex -l de -c HAdW-eKO HADW > /dev/null
+xindex -l de -c HAdW-eKO HADW -x > /dev/null
lualatex HADW > /dev/null
echo "Umlaute"
@@ -36,4 +36,14 @@ echo "Umlaute2"
xindex -l de -c DIN2 Umlaute2 > /dev/null
lualatex Umlaute2 > /dev/null
+echo "french"
+lualatex french > /dev/null
+xindex -l fr french > /dev/null
+lualatex Umlaute2 > /dev/null
+
+echo "see"
+lualatex see > /dev/null
+xindex see > /dev/null
+lualatex see > /dev/null
+
rm -fr *.aux *.log *.ilg *.out \ No newline at end of file
diff --git a/indexing/xindex/doc/tests/see.idx b/indexing/xindex/doc/tests/see.idx
new file mode 100644
index 0000000000..52326372ba
--- /dev/null
+++ b/indexing/xindex/doc/tests/see.idx
@@ -0,0 +1,15 @@
+\indexentry{usus|hyperpage}{2}
+\indexentry{confarreatio|hyperpage}{2}
+\indexentry{coemptio|hyperpage}{3}
+\indexentry{marriage|hyperpage}{3}
+\indexentry{marriage|hyperpage}{4}
+\indexentry{marriage|hyperpage}{4}
+\indexentry{marriage|hyperpage}{5}
+\indexentry{marriage|hyperindexformat{\seealso{usus}}}{5}
+\indexentry{marriage|hyperindexformat{\seealso{coemptio}}}{6}
+\indexentry{marriage|hyperindexformat{\seealso{confarreatio}}}{6}
+\indexentry{"|hyperpage}{7}
+\indexentry{foo"|hyperpage}{8}
+\indexentry{comemp|hyperindexformat{\seealso{coemptio}}}{9}
+\indexentry{com"|hyperpage}{9}
+\indexentry{com|hyperindexformat{\seealso{coemptio}}}{9}
diff --git a/indexing/xindex/doc/tests/see.ind b/indexing/xindex/doc/tests/see.ind
new file mode 100644
index 0000000000..83b103c64b
--- /dev/null
+++ b/indexing/xindex/doc/tests/see.ind
@@ -0,0 +1,30 @@
+
+\begin{theindex}
+\textbf{Symbols}\label{L-xindex-symbols}
+\nopagebreak[4]
+ \item ", \hyperpage{7}
+
+\indexspace
+\textbf{C}\label{L-xindex-C}
+\nopagebreak[4]
+ \item coemptio, \hyperpage{3}
+ \item com", \hyperpage{9}
+ \item com, \hyperindexformat{\seealso{coemptio}}{9}
+ \item comemp, \hyperindexformat{\seealso{coemptio}}{9}
+ \item confarreatio, \hyperpage{2}
+
+\indexspace
+\textbf{F}\label{L-xindex-F}
+\nopagebreak[4]
+ \item foo", \hyperpage{8}
+
+\indexspace
+\textbf{M}\label{L-xindex-M}
+\nopagebreak[4]
+ \item marriage, \hyperpage{3\nohyperpage{ff}}, \hyperindexformat{\seealso{usus}}{5}, \hyperindexformat{\seealso{confarreatio}}{6}, \hyperindexformat{\seealso{coemptio}}{6}
+
+\indexspace
+\textbf{U}\label{L-xindex-U}
+\nopagebreak[4]
+ \item usus, \hyperpage{2}
+\end{theindex}
diff --git a/indexing/xindex/doc/tests/see.pdf b/indexing/xindex/doc/tests/see.pdf
new file mode 100644
index 0000000000..4f8c759611
--- /dev/null
+++ b/indexing/xindex/doc/tests/see.pdf
Binary files differ
diff --git a/indexing/xindex/doc/tests/see.tex b/indexing/xindex/doc/tests/see.tex
new file mode 100644
index 0000000000..5f63c68ea6
--- /dev/null
+++ b/indexing/xindex/doc/tests/see.tex
@@ -0,0 +1,31 @@
+\documentclass[paper=a4,parskip=half-,ngerman]{scrartcl}
+\usepackage{fontspec}
+\usepackage{libertinus-otf}
+\usepackage{babel}
+\usepackage{makeidx}
+\makeindex
+\usepackage{hyperref}
+\begin{document}
+
+
+\printindex
+
+
+Page 1
+\index{usus}
+\index{confarreatio} \newpage Page 2
+\index{coemptio}
+\index{marriage}\newpage Page 3
+\index{marriage}
+\index{marriage}\newpage Page 4
+\index{marriage}
+\index{marriage|seealso{usus}}\newpage Page 5
+\index{marriage|seealso{coemptio}}
+\index{marriage|seealso{confarreatio}} \newpage Page 6
+Vert\index{"|} \newpage Page 7
+\index{foo"||see{bar}} \newpage Page 8
+\index{comemp|seealso{coemptio}}
+\index{com"||seealso{coemptio}}
+\index{com|seealso{coemptio}}
+
+\end{document}
diff --git a/indexing/xindex/doc/xindex-doc.pdf b/indexing/xindex/doc/xindex-doc.pdf
index 31143f6fe1..911775ac8a 100644
--- a/indexing/xindex/doc/xindex-doc.pdf
+++ b/indexing/xindex/doc/xindex-doc.pdf
Binary files differ
diff --git a/indexing/xindex/doc/xindex-doc.tex b/indexing/xindex/doc/xindex-doc.tex
index df19098a87..8508ace554 100644
--- a/indexing/xindex/doc/xindex-doc.tex
+++ b/indexing/xindex/doc/xindex-doc.tex
@@ -81,7 +81,7 @@
\def\setVersion#1{\setVVersion#1!!}
\def\setVVersion#1=#2!!{\def\xIndexVersion{#2}}
-\setVersion{version = 0.55}% can be automatically changed by perl
+\setVersion{version = 0.61}% can be automatically changed by perl
@@ -94,7 +94,6 @@
%\enlargethispage{1cm}
\tableofcontents
-\clearpage
\begin{noteblock}
\raggedright
Thanks to: \\
@@ -102,8 +101,9 @@ Mark Baudoin;
Denis Bitouzé;
Andreas Deininger;
Brian Dunn;
-Gonzalo Pesquero Serrano;
+Daniel Flipo;
Michal Hoftich;
+Dohyun Kim;
Mykel Kochenderfer;
Alexey Kuznetsov;
Frank Mittelbach;
@@ -112,6 +112,7 @@ Heiko Oberdiek;
Matteo Paolini;
Stefan Pinnow;
Florent Rougon;
+Gonzalo Pesquero Serrano;
Martin Sievers;
Simon Spiegel;
Jürgen Spitzmüller;
@@ -167,7 +168,7 @@ EntryList[2] = {
\subsection{Syntax}
The \Index{syntax} is \verb|xindex [...] <file(s)>| where \verb|[...]| are optional \Index{argument}s, either in short or
-long form which, of course, can be mixed:
+long7 form which, of course, can be mixed:
\begin{verbatim}
xindex
@@ -188,7 +189,7 @@ xindex
[-o,--output ] default is <input>.ind
[-p,--prefix] default L
[-s,--use_stdin ] default is false
- [-u,--use_UCA ] default is false
+ [-x,--no_UCA ] default is false
<files...> (default stdin) file(s)[.idx] one or more files
\end{verbatim}
@@ -269,19 +270,19 @@ are alphabetized.
compiler=lualatex,
crop,
xindex,
- xindexOptions=-u, % use unicode
+ xindexOptions=-l fr,
runs=2,code,docType=latex,
showFilename,
align=\centering,
lstOptions={columns=fixed}]{xindex}
%! lualatex
-%! xindex -u (use unicode)
\documentclass{scrartcl}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage{makeidx}\makeindex
@@ -299,9 +300,9 @@ are alphabetized.
\item Left paranthesis \{ \index{\braceLeft}
\item Right paranthesis \} \index{\braceRight}
\end{itemize}
-run \texttt{xindex -u <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
+run \texttt{xindex -l fr <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
\index{Etage} \index{Ètagé}
-\newpage
+\twocolumn
\printindex
\end{document}
\end{externalDocument}
@@ -310,7 +311,7 @@ It is by design that the braces \{ and \} cannot be used as index entry. The \em
xindex defines the two commands \Lcs{braceLeft} and \Lcs{braceRight} which can be used instead
(see examples above and and below).
-The same example without using unicode sorting (no option \Loption{-u}):
+The same example without using unicode sorting (option \Loption{-x}):
\begin{externalDocument}[
@@ -320,7 +321,7 @@ The same example without using unicode sorting (no option \Loption{-u}):
compiler=lualatex,
crop,
xindex,
-% xindexOptions=-u, % use unicode
+ xindexOptions=-x, % do not use unicode
runs=2,code,docType=latex,
showFilename,
align=\centering,
@@ -328,11 +329,12 @@ The same example without using unicode sorting (no option \Loption{-u}):
%! lualatex
%! xindex (no unicode sort -- simple ascii)
\documentclass{scrartcl}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage{makeidx}\makeindex
@@ -350,9 +352,9 @@ The same example without using unicode sorting (no option \Loption{-u}):
\item Left paranthesis \{ \index{\braceLeft}
\item Right paranthesis \} \index{\braceRight}
\end{itemize}
-run \texttt{xindex -u <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
+run \texttt{xindex -x <file.idx>}\index{file.idx@\texttt{<file.idx>}|textit}\index{123}
\index{Etage} \index{Ètagé}
-\newpage
+\twocolumn
\printindex
\end{document}
\end{externalDocument}
@@ -386,9 +388,8 @@ The following example shows how to use it:
frame,
compiler=lualatex,
crop,
- force=false,
xindex,
- xindexOptions=-e ">",
+ xindexOptions=-e ">" -n,
runs=2,code,docType=latex,
showFilename,
align=\centering,
@@ -417,7 +418,7 @@ The following example shows how to use it:
\item Group start \{ \index{\braceLeft}
\item Group end \{ \index{\braceRight}
\end{itemize}
-Run \texttt{xindex} with \texttt{xindex -e ">"}\index{<file.idx>}\index{123}
+Run \texttt{xindex} with \texttt{xindex -e ">" -n}\index{<file.idx>}\index{123}
\newpage
\printindex
\end{document}
@@ -457,7 +458,6 @@ The following example was run with \verb|xindex -l it <file>.idx|:
frame,
compiler=lualatex,
crop,
- force=false,
xindex,
xindexOptions=-l it -e ">",
runs=2,code,docType=latex,
@@ -467,11 +467,12 @@ The following example was run with \verb|xindex -l it <file>.idx|:
%! lualatex
\documentclass{scrartcl}
\usepackage[italian]{babel}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage{makeidx}\makeindex
@@ -487,8 +488,7 @@ The following example was run with \verb|xindex -l it <file>.idx|:
\item At siboli @ \index{At (>@)}
\end{itemize}
Initio \texttt{xindex} con \texttt{xindex -l it -e ">"}\index{123}
-\newpage
-\printindex
+\twocolumn \printindex
\end{document}
\end{externalDocument}
@@ -504,7 +504,6 @@ package \Lpack{babel} or \Lpack{polyglossia} are used.
frame,
compiler=lualatex,
crop,
- force=false,
xindex,
xindexOptions=-k -e "?",
runs=2,code,docType=latex,
@@ -513,11 +512,12 @@ package \Lpack{babel} or \Lpack{polyglossia} are used.
lstOptions={columns=fixed}]{xindex}
%! lualatex
\documentclass{scrartcl}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage[dutch]{babel} % !!!!
@@ -534,7 +534,7 @@ package \Lpack{babel} or \Lpack{polyglossia} are used.
\item At character @ \index{At (?@)}\index{?@}
\end{itemize}
Run \texttt{xindex} with \texttt{xindex -k -e "?"}\index{123}
-\newpage\index{xindex@\texttt{xindex}}
+\twocolumn\index{xindex@\texttt{xindex}}
\printindex
\end{document}
\end{externalDocument}
@@ -555,7 +555,7 @@ This allows to have different indexes with different language.
compiler=lualatex,
crop,
xindex,
- xindexOptions=-u -l RU -c RU,
+ xindexOptions=-l RU -c RU -n,
runs=2,code,docType=latex,
showFilename,
align=\centering,
@@ -564,18 +564,19 @@ This allows to have different indexes with different language.
]{xindex}
%! lualatex
\documentclass{scrartcl}
+\usepackage{multicol}
\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
+\renewenvironment{theindex}{% only for demonstration
+ \begin{multicols}{2}[\section*{\indexname}]
\parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
+ \let\item\@idxitem}{\end{multicols}}
\makeatother
%StartVisiblePreamble
\usepackage[russian]{babel}
\usepackage{fontspec}
\usepackage[regular]{newcomputermodern}
\defaultfontfeatures{Ligatures=TeX}
-\usepackage{xindex}\makeindex % run with xindex -u -l RU -c RU <file>
+\usepackage{xindex}\makeindex % run with xindex -l RU -c RU <file>
%StopVisiblePreamble
\pagestyle{empty}
\begin{document}
@@ -599,7 +600,7 @@ This allows to have different indexes with different language.
\verb|\index{Ёж!ушастый (Hemiechinus auritus)}|%
\index{Ёж!ушастый (Hemiechinus auritus)}
\end{tabular}
-\printindex % xindex -u -l RU -c RU <file>
+\printindex % xindex -l RU -c RU -n <file>
\end{document}
\end{externalDocument}
@@ -609,8 +610,207 @@ This allows to have different indexes with different language.
\section{Sorting}
+
+
+
+\subsection{Default sorting by the UCA (Unicode Collection Algorithm)}
+This Lua library from Michal Hoftich is part of \TeXLive\ and is used by default
+for sorting. The supported languages and variants are listed in the file
+\Lfile{lua-uca-languages.lua}:
+
+\texttt{af,
+am,
+ar,
+as,
+az,
+be,
+bg,
+bn,
+bs,
+bs\_cyrl,
+ca,
+chr,
+cs,
+cy,
+da,
+de,
+de\_din2,
+dsb,
+dz,
+ee,
+el,
+en,
+eo,
+es,
+et,
+fa,
+fi,
+fil,
+fo,
+fr,
+fr\_backward\_accents,
+ga,
+gl,
+gu,
+ha,
+haw,
+he,
+hr,
+hi,
+hsb,
+hu,
+hy,
+id,
+ig,
+is,
+it,
+ja,
+ka,
+kk,
+kl,
+km,
+kn,
+ko,
+kok,
+ky,
+lb,
+lkt,
+ln,
+lo,
+lt,
+lv,
+mk,
+ml,
+mn,
+mr,
+ms,
+mt,
+my,
+nb,
+ne,
+nl,
+nn,
+no,
+om,
+pa,
+pl,
+ps,
+pt,
+ro,
+ru,
+se,
+si,
+sk,
+sl,
+smn,
+sq,
+sr,
+sr\_latn,
+sv,
+sw,
+ta,
+te,
+th,
+tk,
+to,
+tr,
+ug,
+uk,
+ur,
+uz,
+vi,
+vo,
+wae,
+wo,
+yi,
+yo,
+zh,
+zu}
+
+
+
+The sorting order can be easily modified. Read the documentation of the package \texttt{LUA-UCA}
+on how to do it and what languages are supported so far. Any additional code setting for
+UCA should be done in the file \Lfile{xindex-cfg-uca.lua}, which will automatically be read
+by \Lprog{xindex}.
+
+\begin{importantblock}
+If possible, you should use the Unicode sorting by default and only for some special cases
+where you define your own sorting scheme, you should use the \verb|-x| option.
+\end{importantblock}
+
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+% pages={6},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l cs,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ usefancyvrb,
+% lstOptions={columns=fixed}
+]{xindex}
+%! lualatex
+\documentclass[paper=a6]{scrartcl}
+\makeatletter
+\def\theindex{% only for demonstration
+ \section*{\indexname}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\makeatother
+%StartVisiblePreamble
+\usepackage{multicol}
+\usepackage{makeidx}\makeindex
+\def\Index#1{#1\index{#1}}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+Sorted with \verb|-l cs|
+\Index{ahoj} \Index{crha}, \Index{čaj}, \Index{chachar},
+\Index{rak}, \Index{řeka}, \Index{srp}, \Index{šutr},
+\Index{hudba}, \Index{linux}, \Index{zebra},
+\Index{žába}, \Index{7 dubů}
+\begin{multicols}{2} \printindex \end{multicols}
+\end{document}
+\end{externalDocument}
+
+
+
+
+Modifications can be done in a config file which is then loaded by the
+option \texttt{-c}. For example: the file \Lfile{xindex-cfg-uca.lua} has
+modification for french and norwegian. For french the standard sorting rules
+\texttt{fr\_backward\_accents}, are a bit
+special and should be the default also for the language \texttt{fr}:
+
+\begin{verbatim}
+languages.fr = function(collator_obj)
+ -- reverse search for accents in French (recommended):
+ collator_obj.accents_backward = true
+ local tailoring = function(s) collator_obj:tailor_string(s) end
+ tailoring("&æ=ae")
+ tailoring("&œ=oe")
+ tailoring("&th<þ<<<Þ") -- Canadian, see SGQRI004.pdf
+ return collator_obj
+end
+\end{verbatim}
+
+Add any additional modifications to this file or create an own
+config file and load it with \texttt{-c}.
+
+
\subsection{Default sorting by a character table}
-The default sorting is unicode aware and uses a translation table for accented characters:
+This sorting is not completely unicode aware. It uses a translation table for accented characters,
+which should only be used if the standard sorting method with UCA is not possible! This kind of sortierung
+has to be choosed by the option \texttt{-x} (don't use UCA). The option \texttt{-u} for
+using UCA is deprecated, because using UCA is the default.
+
+Again, if on wants to use an own transformation table, then use something like:
\begin{verbatim}
alphabet_lower = { -- for sorting
@@ -684,6 +884,8 @@ alphabet_upper = { -- for sorting
\end{verbatim}
+\subsection{Examples}
+\subsubsection{German language and no UCA}
\begin{externalDocument}[
grfOptions={scale=0.9},%width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
@@ -693,7 +895,7 @@ alphabet_upper = { -- for sorting
compiler=lualatex,
crop,
xindex,
- xindexOptions=-l de,
+ xindexOptions=-l de -x,
runs=2,code,docType=latex,
showFilename,
usefancyvrb,
@@ -719,7 +921,65 @@ alphabet_upper = { -- for sorting
\makeatother
\pagestyle{empty}
\begin{document}
-Sorted with \verb|-l DE|
+Sorted with \verb|-l DE -x|\par
+\Index{Österreich} \Index{Öresund}
+\Index{Ostern} \Index{Ober}
+\Index{Oberin} \Index{Österreich}
+\Index{Öresund} \Index{Ostern}
+\Index{Ober} \Index{Oberin}
+\Index{Obstler} \Index{Öl}
+\Index{ölen} \Index{Ödem}
+\Index{Oligarch} \Index{Oder}
+\Index{oder} \index{Fluss!Oder}
+\index{Oder|seealso{Fluss}}
+\Index{Göbel} \Index{Goethe}
+\Index{Göthe} \Index{Götz}
+\Index{Goldmann}
+
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+\subsubsection{German language (DIN2) and no UCA}
+
+In this case a letter Ö, Ä, Ü, ö, ä, ü is converted to Oe, Ae, Ue, oe, ae, ue before sorting:
+
+\noindent
+\begin{externalDocument}[
+ grfOptions={scale=0.9},%width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.4\linewidth,
+ pages={2},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-c DIN2 -l DE -x,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ lstOptions={columns=fixed}]{xindex}
+%! lualatex
+\documentclass[paper=a5]{scrartcl}
+\usepackage[ngerman]{babel}
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+\newcommand\Index[1]{\index{#1}#1}
+%StopVisiblePreamble
+\usepackage{multicol}
+\makeatletter
+\def\theindex{% only for demonstration
+ \newpage
+ \section*{\indexname}
+ \begin{multicols}{2}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\def\endtheindex{\end{multicols}}
+\makeatother
+\pagestyle{empty}
+\begin{document}
+Sorted with
+\verb|--config DIN2 -l DE -x|
\Index{Österreich} \Index{Öresund}
\Index{Ostern} \Index{Ober}
@@ -734,16 +994,74 @@ Sorted with \verb|-l DE|
\Index{Göbel} \Index{Goethe}
\Index{Göthe} \Index{Götz}
\Index{Goldmann}
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+\clearpage%%%%%%%%%%%
+\subsubsection{German language with UCA}
+
+\begin{externalDocument}[
+ grfOptions={scale=0.9},%width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.4\linewidth,
+ pages={2},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l de, % german and UCA
+ runs=2,code,docType=latex,
+ showFilename,
+ usefancyvrb,
+ align=\centering,
+% lstOptions={columns=fixed}
+]{xindex}
+%! lualatex
+\documentclass[paper=a5]{scrartcl}
+\usepackage[ngerman]{babel}
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+\newcommand\Index[1]{\index{#1}#1}
+%StopVisiblePreamble
+\usepackage{multicol}
+\makeatletter
+\def\theindex{% only for demonstration
+ \newpage
+ \section*{\indexname}
+ \begin{multicols}{2}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\def\endtheindex{\end{multicols}}
+\makeatother
+\pagestyle{empty}
+\begin{document}
+Sorted with \verb|-l DE| and using UCA\par
+\Index{Österreich} \Index{Öresund}
+\Index{Ostern} \Index{Ober}
+\Index{Oberin} \Index{Österreich}
+\Index{Öresund} \Index{Ostern}
+\Index{Ober} \Index{Oberin}
+\Index{Obstler} \Index{Öl}
+\Index{ölen} \Index{Ödem}
+\Index{Oligarch} \Index{Oder}
+\Index{oder} \index{Fluss!Oder}
+\index{Oder|seealso{Fluss}}
+\Index{Göbel} \Index{Goethe}
+\Index{Göthe} \Index{Götz}
+\Index{Goldmann}
\printindex
\end{document}
\end{externalDocument}
+\subsubsection{German language (DIN2) with UCA}
-The same sorted with the German DIN variant 2 with \verb|--config DIN2|, which
-is part of the \TeX\ distribution. In this case a letter Ö is converted to Oe before sorting
-the word beginning with the letter Ö:
+The same sorted with the German DIN variant 2. It uses also the config
+file
+with \verb|--config DIN2|, but sets the language internally to \verb|de_din2| for
+UCA and do not use the character tables:
\noindent
\begin{externalDocument}[
@@ -799,6 +1117,10 @@ Sorted with
\end{externalDocument}
+\clearpage
+
+\subsubsection{Japanese language with UCA}
+
The following runs with \verb|xindex -l jp <file>|:
@@ -814,13 +1136,13 @@ The following runs with \verb|xindex -l jp <file>|:
\edef\FancyVerbStartString{\perCent StartVisiblePreamble}
\edef\FancyVerbStopString{\perCent StopVisiblePreamble}
\colorbox{black!20}{\parbox{\linewidth}{%
-\VerbatimInput[fontfamily=helvetica]{Examples/xindex-9.tex}
+\VerbatimInput[fontfamily=helvetica]{Examples/xindex-12.tex}
}}
\edef\FancyVerbStartString{\string\begin\string{document\string}}
\edef\FancyVerbStopString{\string\end\string{document\string}}
\colorbox{black!10}{\parbox{\linewidth}{%
-\VerbatimInput[fontfamily=helvetica]{Examples/xindex-9.tex}
+\VerbatimInput[fontfamily=helvetica]{Examples/xindex-12.tex}
}}
%\end{minipage}\hfill
@@ -849,8 +1171,7 @@ The following runs with \verb|xindex -l jp <file>|:
\usepackage{fontspec}
\setmainfont{SourceHanSans}
\usepackage[japanese]{babel}
-\addto\captionsjapanese{%
- \def\indexname{指数}}
+\addto\captionsjapanese{\def\indexname{指数}}
\usepackage{hvindex}% for \Index
\usepackage{makeidx}\makeindex
%StopVisiblePreamble
@@ -865,12 +1186,10 @@ The following runs with \verb|xindex -l jp <file>|:
\makeatother
\pagestyle{empty}
\begin{document}
-\Index{車} \Index{車道}
-日本\index{日本|fbox} \Index{病院} \Index{コンピュータ}
-\Index{プリンタ} \Index{印刷} \Index{スイミングプール} \Index{天王}
-\Index{広島} \Index{ドイツ} \Index{日本} \Index{ワープロ}
-\Index{foo} und \Index{bar} \Index{//} \Index{4711}
-\newpage\printindex
+\Index{車} \Index{車道} 日本\index{日本|fbox} \Index{病院} \Index{コンピュータ}
+\Index{プリンタ} \Index{印刷} \Index{スイミングプール} \Index{天王} \Index{広島}
+\Index{ドイツ} \Index{日本} \Index{ワープロ}
+\Index{foo} und \Index{bar} \Index{//} \Index{4711} \newpage\printindex
\end{document}
\end{externalDocument}
%\end{minipage}
@@ -878,70 +1197,6 @@ The following runs with \verb|xindex -l jp <file>|:
\setsansfont{Libertinus Sans}\rmfamily
-\subsection{Sorting by using UCA (Unicode Collation Algorithm)}
-With the optional argument \verb|-u| or alternatively \verb|--use_UCA| the sorting will be done
-by Michal Hoftich's Lua package \texttt{LUA-UCA}, which should be part of any \TeX{} installation.
-
-The sorting order can be easily modified. Read the documentation of the package \texttt{LUA-UCA}
-on how to do it and what languages are supported so far. Any additional code setting for
-UCA should be done in the file \Lfile{xindex-cfg-uca.lua}, which will automatically be read
-by \Lprog{xindex}.
-
-\iffalse
-\begin{noteblock}
-This package can display, in a
-\begin{itemize}
- \item to change dimensions and colors ;
-\end{itemize}
-It's
-\end{noteblock}
-\fi
-\begin{importantblock}
-If possible, you should use the Unicode sorting by default and only for some special cases
-where you define your own sorting scheme, you should not use the \verb|-u| option.
-\end{importantblock}
-
-
-\begin{externalDocument}[
-% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
- mpwidth=0.55\linewidth,
-% pages={6},
- frame=false,
- compiler=lualatex,
- crop,
- force=false,
- xindex,
- xindexOptions=-u -l cs,
- runs=2,code,docType=latex,
- showFilename,
- align=\centering,
- usefancyvrb,
-% lstOptions={columns=fixed}
-]{xindex}
-%! lualatex
-\documentclass[paper=a6]{scrartcl}
-\makeatletter
-\def\theindex{% only for demonstration
- \section*{\indexname}
- \parskip\z@ \@plus .3\p@\relax \parindent\z@
- \let\item\@idxitem}
-\makeatother
-%StartVisiblePreamble
-\usepackage{multicol}
-\usepackage{makeidx}\makeindex
-\def\Index#1{#1\index{#1}}
-%StopVisiblePreamble
-\pagestyle{empty}
-\begin{document}
-Sorted with \verb|-u -l cs|
-\Index{ahoj} \Index{crha}, \Index{čaj}, \Index{chachar},
-\Index{rak}, \Index{řeka}, \Index{srp}, \Index{šutr},
-\Index{hudba}, \Index{linux}, \Index{zebra},
-\Index{žába}, \Index{7 dubů}
-\begin{multicols}{2} \printindex \end{multicols}
-\end{document}
-\end{externalDocument}
-
\subsection{Case sensitive index entries}
@@ -1000,7 +1255,6 @@ foo\newpage
\end{externalDocument}
-\clearpage
The same example sorted with the \verb|-a| or \verb|--no_casesensitive| has another output: now
\verb|xindex-cfg-common.lua| is the first one of the \verb|xindex-???| series.
@@ -1138,7 +1392,6 @@ Test
-\clearpage
\section{Pagenumbers}
\subsection{Compressing pagenumber series}\label{Compressing}
@@ -1175,7 +1428,6 @@ folium = {
pages={6},
frame=false,
compiler=lualatex,
- force=false,
crop,
xindex,
xindexOptions=-l fr,
@@ -1234,7 +1486,6 @@ of the same type, so we get \texttt{1f} in the output.
frame=false,
compiler=lualatex,
crop,
- force=false,
xindex,
xindexOptions=-l de,
runs=2,code,docType=latex,
@@ -1301,7 +1552,6 @@ envStop = "\\end{description}"
% xindexOptions=-c description -g,
runs=2,
code,docType=latex,
- force=false,
%xindex -c description -n -g xindex-17.idx
%xindex -c description -n --no_pagenumber gls.idx
% runsequence={lualatex,{xindex -c description -n -g},lualatex,lualatex},
@@ -1727,14 +1977,13 @@ baz\index{foo!bar!baz} foobar%
\end{externalDocument}
-
-%\clearpage
+\clearpage
\section{\texttt{hyperref}}
Using the package \Lpack{hyperref} is no problem:
-\enlargethispage{2.5\normalbaselineskip}
+%\enlargethispage{2.5\normalbaselineskip}
\begin{externalDocument}[
% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
@@ -1767,23 +2016,19 @@ Using the package \Lpack{hyperref} is no problem:
%StopVisiblePreamble
\pagestyle{empty}
\begin{document}
-Sorted with \verb|-l DE|
-\Index{Österreich} \Index{Öresund}
-\Index{Ostern} \Index{Ober} \Index{Oberin}
-\Index{Österreich} \index{Öresund|textbf}
-\Index{Ostern} \Index{Ober} \Index{Oberin}
-\Index{Obstler} \Index{Öl} \Index{ölen}
-\Index{Ödem} \Index{Oligarch} \Index{Oder}
-\Index{oder} \index{Fluss!Oder|textit}
-\Index{Oder|seealso{Fluss}} \Index{Göbel}
-\Index{Goethe} \Index{Göthe} \Index{Götz}
-\newpage\Index{Goldmann} \Index{Goethe}
-\newpage \printindex
+Sorted with \verb|-l DE| \par
+\Index{Österreich} \Index{Öresund} \Index{Ostern}
+\Index{Ober} \Index{Oberin} \Index{Österreich}
+\index{Öresund|textbf} \Index{Ostern} \Index{Ober}
+\Index{Oberin} \Index{Obstler} \Index{Öl} \Index{ölen}
+\Index{Ödem} \Index{Oligarch} \Index{Oder} \Index{oder}
+\index{Fluss!Oder|textit} \Index{Oder|seealso{Fluss}}
+\Index{Göbel} \Index{Goethe} \Index{Göthe} \Index{Götz}
+\newpage\Index{Goldmann} \Index{Goethe} \newpage \printindex
\end{document}
\end{externalDocument}
-
The following example fixes a problem with \Lpack{hyperref} and escaping the | character,
e.g.\verb/"|/. In such a case \Lpack{hyperref} ignores the vertical bar.
With the optional parameter \verb/-f | --fix_hyperref/, which is still experimental,
@@ -1791,7 +2036,6 @@ With the optional parameter \verb/-f | --fix_hyperref/, which is still experimen
of using this problematic vertical character, you can use \Lcs{textbar}, which also solves the
problem.
-
\begin{externalDocument}[
% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
% mpwidth=0.55\linewidth,
@@ -1799,7 +2043,6 @@ problem.
frame=false,
compiler=lualatex,
crop,
- force=false,
shellesc,
% xindex,
% xindexOptions=-,
@@ -1877,7 +2120,6 @@ such commands are ignored. In the following example we put an horizontal line af
pages={2},
frame=false,
compiler=lualatex,
- force=false,
crop,
xindex,
xindexOptions=-l de,
@@ -1981,7 +2223,6 @@ In the documents preamble there is the definition:
% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
mpwidth=0.6\linewidth,
pages={2},
- force=false,
frame=false,
compiler=lualatex,
crop,
@@ -2127,10 +2368,8 @@ and adds the program \Lprog{xindex} as the default program to \Lpack{imakeidx}.
mpwidth=0.55\linewidth,
pages={6},
frame=false,
- force=false,
compiler=lualatex,
crop,
- force=false,
% xindex,
% xindexOptions=-l de,
runs=2,code,docType=latex,
@@ -2229,6 +2468,54 @@ in the argument of \Lcs{indexentry}.
\appendix
\section{Examples}
+Correct french sorting with UCA:
+
+\begin{externalDocument}[
+% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
+ mpwidth=0.55\linewidth,
+ pages={3},
+ frame=false,
+ compiler=lualatex,
+ crop,
+ xindex,
+ xindexOptions=-l fr,
+ runs=2,code,docType=latex,
+ showFilename,
+ align=\centering,
+ grfOptions={width=\linewidth},
+ lstOptions={columns=fixed}]{xindex}
+%! lualatex --shell-escape
+\documentclass[paper=a4,twocolumn]{scrartcl}
+\usepackage{libertinus-otf}
+\let\NewPage\newpage% only for demo
+\makeatletter
+\renewcommand\newpage{\NewPage\let\ps@plain\ps@empty}
+\makeatother
+%StartVisiblePreamble
+\usepackage[french]{babel}
+\usepackage[imakeidx]{xindex} \makeindex
+\newcommand*{\IND}[1]{\index{#1}#1\par}
+%StopVisiblePreamble
+\begin{document}
+%%% xindex -l fr <file>
+\IND{CÔTÉ} \IND{cote} \IND{Côté} \IND{COTÉ} \IND{côte}
+\IND{COTE} \IND{côté} \IND{Coté} \IND{coté} \IND{Cote}
+\IND{CÔTE} \IND{Côte} \IND{lésé} \IND{péché}
+\IND{bohème} \IND{gêné} \IND{pêche} \IND{cæsium}
+\IND{pêcher} \IND{révèle} \IND{pécher} \IND{révélé}
+\IND{Bohême} \IND{relève} \IND{PÉCHÉ} \IND{maçon}
+\IND{relevé} \IND{Élève} \IND{gêne} \IND{élevé}
+\IND{MÂCON} \IND{gène} \IND{Bohémien} \IND{caennais}
+\IND{lèse} \IND{coexistence} \IND{cœur}
+\IND{coefficient} \IND{cafard} \IND{CŒUR} \IND{CÆSIUM}
+\newpage \IND{coté} \IND{cœur} \IND{péché} \newpage
+\IND{coté}\IND{coefficient} \printindex
+\end{document}
+\end{externalDocument}
+
+
+
+
\begin{externalDocument}[
% grfOptions={width=\dimexpr\linewidth-2\fboxsep-2\fboxrule},
mpwidth=0.55\linewidth,
diff --git a/indexing/xindex/latex/xindex.sty b/indexing/xindex/latex/xindex.sty
index 24d0076590..143e36b431 100644
--- a/indexing/xindex/latex/xindex.sty
+++ b/indexing/xindex/latex/xindex.sty
@@ -1,10 +1,10 @@
%% This is file `xindex.sty',
%%
-%% Copyright (C) 2018-2023
+%% Copyright (C) 2018-2024
%% Herbert Voss
%%
%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3c
+%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
@@ -13,7 +13,7 @@
%
%
% -------------------------------------
-\ProvidesPackage{xindex}[2023/07/30 v. 0.55 write into an idx file (hv)]
+\ProvidesPackage{xindex}[2024/05/16 v. 0.61 write into an idx file (hv)]
%
\RequirePackage{xkeyval}
diff --git a/indexing/xindex/lualatex/xindex-AU.lua b/indexing/xindex/lualatex/xindex-AU.lua
index 59c26294bf..845fc45c5d 100644
--- a/indexing/xindex/lualatex/xindex-AU.lua
+++ b/indexing/xindex/lualatex/xindex-AU.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-AU'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-DIN2.lua b/indexing/xindex/lualatex/xindex-DIN2.lua
index 5d9bd56dc8..445edc904e 100644
--- a/indexing/xindex/lualatex/xindex-DIN2.lua
+++ b/indexing/xindex/lualatex/xindex-DIN2.lua
@@ -16,25 +16,31 @@ if not modules then modules = { } end modules ['xindex-DIN2'] = {
license = "LPPL 1.3"
}
-itemPageDelimiter = "," -- Hello, 14
-compressPages = true -- something like 12--15, instead of 12,13,14,15. the |( ... |) syntax is still valid
-fCompress = true -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
-minCompress = 3 -- 14--17 or
-numericPage = true -- for non numerical pagenumbers, like "VI-17"
-sublabels = {"", "-\\,", "--\\,", "---\\,"} -- for the (sub(sub(sub-items first one is for item
-pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17"
-indexOpening = "" -- commands after \begin{theindex}
-rangeSymbol = "--"
-idxnewletter = "\\textbf" -- Only valid if -n is not set
-envStart = "\\begin{theindex}"
-envStop = "\\end{theindex}"
-
-
+--UCA language = "de_din2" --
+if use_UCA then
+languages.de = function(collator_obj)
+ local function tailor(a, b, tbl)
+ local autf = collator_obj:string_to_codepoints(a)
+ local butf = collator_obj:string_to_codepoints(b)
+ collator_obj:tailor(autf,butf, tbl)
+ end
+ local tailoring = function(s) collator_obj:tailor_string(s) end
+ languages.de(collator_obj)
+ tailoring "&Ö=Oe"
+ tailoring "&ö=oe"
+ tailoring "&Ä=Ae"
+ tailoring "&ä=ae"
+ tailoring "&Ü=Ue"
+ tailoring "&ü=ue"
+ tailoring "&ß=ss"
+ return collator_obj
+end
+end
--[[
+ Only used for -x option (no UCA):
Each character's position in this array-like table determines its 'priority'.
Several characters in the same slot have the same 'priority'.
]]
-
alphabet_lower = { -- for sorting
{ ' ' }, -- only for internal tests
{ 'a', 'á', 'à', 'å', 'æ', },
@@ -100,4 +106,3 @@ alphabet_upper = { -- for sorting
{ 'Y', 'Ý', 'Ÿ' },
{ 'Z', 'Ž' }
}
-
diff --git a/indexing/xindex/lualatex/xindex-HAdW-eKO.lua b/indexing/xindex/lualatex/xindex-HAdW-eKO.lua
index ecf51a290d..52edc98854 100644
--- a/indexing/xindex/lualatex/xindex-HAdW-eKO.lua
+++ b/indexing/xindex/lualatex/xindex-HAdW-eKO.lua
@@ -11,7 +11,7 @@
-- configuration for index files of the Heidelberger Akademie der Wissenschaften
if not modules then modules = { } end modules ['xindex-HAdW-eKO'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-RU.lua b/indexing/xindex/lualatex/xindex-RU.lua
index 626cc1c17d..3d2610d994 100644
--- a/indexing/xindex/lualatex/xindex-RU.lua
+++ b/indexing/xindex/lualatex/xindex-RU.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-RU'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration to xindex.lua",
author = "Alexey Kuznetzov",
copyright = "Herbert Voß",
diff --git a/indexing/xindex/lualatex/xindex-base.lua b/indexing/xindex/lualatex/xindex-base.lua
index ff44943724..d06df7cb2f 100644
--- a/indexing/xindex/lualatex/xindex-base.lua
+++ b/indexing/xindex/lualatex/xindex-base.lua
@@ -8,7 +8,7 @@
-- $Id: xindex-base.lua 22 2022-02-07 12:18:15Z hvoss $
-----------------------------------------------------------------------
-local info = { version = 0.55 }
+local info = { version = 0.61 }
-- check config
if pageNoPrefixDel ~= "" then
@@ -53,13 +53,13 @@ hyperpage, lines = checkHyperpage(lines) -- hyperref used?
if hyperpage
then writeLog(1,"We have hyperpages.\n",1)
else writeLog(1,"We have no hyperpages.\n",1)
- end
+end
--print("Presort of \\indexentry lines")
--table.sort(lines) -- no presort to keep macros inserted by \writeidx
if vlevel > 1 then
- writeLog(1,"--------------- Input data (mot sorted) ----------------\n",2)
+ writeLog(1,"--------------- Input data (not sorted) ----------------\n",2)
for _,l in pairs(lines) do writeLog(1,l.."\n",2) end
writeLog(1,"--------------- end Input data -------------------------\n",2)
end
@@ -95,11 +95,17 @@ for k,v in ipairs(lines) do
end
writeLog(1,"... done\n",0)
-writeLog(1,"------------------ Start list after getEntryAndPage() ------------------------\n,",2)
+writeLog(1,"------------------ Start list after getEntryAndPage() ------------------------\n",2)
printList(Index,2)
writeLog(1,"\n------------------ end list after getEntryAndPage() ------------------------\n",2)
writeLog(2,"Sorting entries: for LARGE idx files it can take some minutes ... \n",0)
+writeLog(1,"\n------------------ Start list before table.sort(Hooks and UTFCompare)------------\n",2)
+printList(Index,2)
+writeLog(1,require 'xindex-pretty'.dump(Index),3) -- only for internal dump
+writeLog(1,"\n------------------ end list before table.sort(Hooks and UTFCompare)------------\n",2)
+
+
if SORTprehook then
writeLog(2, "PreHook begin\n", 0)
Index = SORTprehook(Index)
@@ -112,8 +118,14 @@ writeLog(2, "GenerateSortKeys end\n", 0)
k = 0
writeLog(2, "Sort begin\n", 0)
-table.sort(Index,UTFCompare)
+
+if use_UCA then
+ table.sort(Index, UCACompare)
+else
+ table.sort(Index,UTFCompare)
+end
writeLog(2, "Sort end\n", 0)
+
if SORTposthook then
writeLog(2, "PostHook begin\n", 0)
Index = SORTposthook(Index)
@@ -168,15 +180,19 @@ if use_UCA then
v = NewIndex[i]
-- the collator:get_lowest_char will return character on the given
-- position. It will be lowercase and without accents.
- local codepoints = collator_obj:string_to_codepoints(NormalizedUpper(v.SortKey))
+ if v.SortKey ~= nil then
+ codepoints = collator_obj:string_to_codepoints(utf8_upper(v.SortKey))
+ else
+ codepoints = collator_obj:string_to_codepoints(utf8_upper(v.sortChar))
+ end
v.sortChar = getSortChar(codepoints) --or getSortChar(collator_obj:string_to_codepoints(NormalizedUpper(v.Entry)))
if not v.sortChar then
-- alternativelly use v.Entry if SortKey doesn't contain usable string
- codepoints = collator_obj:string_to_codepoints(NormalizedUpper(v.Entry))
+ codepoints = collator_obj:string_to_codepoints(utf8_upper(v.Entry))
v.sortChar = getSortChar(codepoints)
end
+-- print("v.sortchar="..v.sortChar)
end
- writeLog(2,"done\n",0)
else
for i=1, #NewIndex do
if NewIndex[i]["SortKey"] ~= nil then
@@ -187,6 +203,9 @@ else
end
end
+
+writeLog(2,"done\n",0)
+
if SORTendhook then
NewIndex = SORTendhook(NewIndex)
end
diff --git a/indexing/xindex/lualatex/xindex-baselib.lua b/indexing/xindex/lualatex/xindex-baselib.lua
index 36269520c9..1f278b31ad 100644
--- a/indexing/xindex/lualatex/xindex-baselib.lua
+++ b/indexing/xindex/lualatex/xindex-baselib.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-baselib'] = {
- version = 0.55,
+ version = 0.61,
comment = "base library to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-cfg-common.lua b/indexing/xindex/lualatex/xindex-cfg-common.lua
index e02da6f3fc..e727a75113 100644
--- a/indexing/xindex/lualatex/xindex-cfg-common.lua
+++ b/indexing/xindex/lualatex/xindex-cfg-common.lua
@@ -9,13 +9,27 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg-common'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
license = "LPPL 1.3"
}
+itemPageDelimiter = "," -- Hello, 14
+compressPages = true -- something like 12--15, instead of 12,13,14,15. the |( ... |) syntax is still valid
+fCompress = true -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
+minCompress = 3 -- 14--17 or
+rangeSymbol = "--"
+numericPage = true -- for non numerical pagenumbers, like "VI-17"
+sublabels = {"", "-\\,", "--\\,", "---\\,"} -- for the (sub(sub(sub-items first one is for item
+pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17" -- not used !!!
+indexOpening = "" -- commands after envStart
+idxnewletter = "\\textbf" -- Only valid if -n is not set
+envStart = "\\begin{theindex}"
+envStop = "\\end{theindex}"
+
+
indexheader = {
cs = {"Symboly", "Čísla", "czech"},
da = {"Symboler", "Tal", "danish"},
@@ -30,6 +44,7 @@ indexheader = {
ru = {"Символы", "Числа", "russian"},
}
+
--[[ babel
afrikaans
azerbaijani
diff --git a/indexing/xindex/lualatex/xindex-cfg.lua b/indexing/xindex/lualatex/xindex-cfg-no_uca.lua
index b9960963bd..7a013a3025 100644
--- a/indexing/xindex/lualatex/xindex-cfg.lua
+++ b/indexing/xindex/lualatex/xindex-cfg-no_uca.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.55,
+ version = 0.61,
comment = "main configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -18,7 +18,7 @@ if not modules then modules = { } end modules ['xindex-cfg'] = {
itemPageDelimiter = "," -- Hello, 14
compressPages = true -- something like 12--15, instead of 12,13,14,15. the |( ... |) syntax is still valid
-fCompress = true -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
+fCompress = true -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
minCompress = 3 -- 14--17 or
rangeSymbol = "--"
numericPage = true -- for non numerical pagenumbers, like "VI-17"
@@ -29,6 +29,8 @@ idxnewletter = "\\textbf" -- Only valid if -n is not set
envStart = "\\begin{theindex}"
envStop = "\\end{theindex}"
+-- The following is not needed for sorting with UCA !!!!
+
--[[
Each character's position in this array-like table determines its 'priority'.
Several characters in the same slot have the same 'priority'.
diff --git a/indexing/xindex/lualatex/xindex-cfg-uca.lua b/indexing/xindex/lualatex/xindex-cfg-uca.lua
index 8dad47adda..e13803f7ca 100644
--- a/indexing/xindex/lualatex/xindex-cfg-uca.lua
+++ b/indexing/xindex/lualatex/xindex-cfg-uca.lua
@@ -9,13 +9,27 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg-lua'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration to xindex-cfg-uca.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
license = "LPPL 1.3"
}
+languages.fr = function(collator_obj)
+ -- reverse search for accents in French (recommended):
+ collator_obj.accents_backward = true
+ -- accents: sorting order in French
+ local tailoring = function(s) collator_obj:tailor_string(s) end
+ tailoring("&æ=ae")
+ tailoring("&œ=oe")
+ tailoring("&th<þ<<<Þ") -- Canadian, see SGQRI004.pdf
+ -- lowercase before uppercase in French
+ --collator_obj:uppercase_first()
+ return collator_obj
+end
+
+
-- put any additional code for lua-uca here ---
languages.no = function(collator_obj)
local tailoring = function(s) collator_obj:tailor_string(s) end
@@ -50,4 +64,4 @@ Symbol Example Description
<<<< か<<<<カ Identifies a quaternary difference between "か" and "カ". (New in ICU 53.) ICU permits up to three quaternary relations in a row (except for intervening "=" identity relations).
= x = y Signifies no difference between "x" and "y".
& &Z Instructs ICU to reset at this letter. These rules will be relative to this letter from here on, but will not affect the position of Z itself.
-]] \ No newline at end of file
+]]
diff --git a/indexing/xindex/lualatex/xindex-danteedition.lua b/indexing/xindex/lualatex/xindex-danteedition.lua
index 477eb5ccca..b615b2b220 100644
--- a/indexing/xindex/lualatex/xindex-danteedition.lua
+++ b/indexing/xindex/lualatex/xindex-danteedition.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration file for the DANTE Edition",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -91,3 +91,18 @@ alphabet_upper = { -- for sorting
{ 'Y', 'Ý', 'Ÿ' },
{ 'Z', 'Ž' }
}
+
+folium = {
+ cs = {"f.", "ff."},
+ da = {"f", "ff"},
+ de = {"f", "ff"},
+ en = {"f", "ff"},
+ es = {"f", "ff"},
+ fr = {"\\,sq.","\\,sqq."},
+ it = {"f", "ff"},
+ jp = {"シンボル","番号"},
+ nl = {"f.", "ff."},
+ no = {"\\,f.","\\,ff."},
+ ru = {"",""}, -- doesn't exist
+}
+
diff --git a/indexing/xindex/lualatex/xindex-dtk.lua b/indexing/xindex/lualatex/xindex-dtk.lua
index b420597720..c7822591ff 100644
--- a/indexing/xindex/lualatex/xindex-dtk.lua
+++ b/indexing/xindex/lualatex/xindex-dtk.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.55,
+ version = 0.61,
comment = "DTK configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-lib.lua b/indexing/xindex/lualatex/xindex-lib.lua
index 60c4d9a196..3f24bee367 100644
--- a/indexing/xindex/lualatex/xindex-lib.lua
+++ b/indexing/xindex/lualatex/xindex-lib.lua
@@ -9,13 +9,17 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-lib'] = {
- version = 0.55,
+ version = 0.61,
comment = "main library to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
license = "LPPL 1.3"
}
+require ("unicode")
+utf8_lower = unicode.utf8.lower
+utf8_upper = unicode.utf8.upper
+
local escapechar1 = "\""
local escapechar2 = "\"\""
local Letters = "ÄÖÜäöüabcdefghijklmnopqrstuvwxyzßABCDEFGHIJKLMNOPQRSTUVWXYZ"
@@ -55,29 +59,37 @@ function Lower(strOrig) -- return UTF string.lower
end
function NormalizedLower(strOrig) -- return normalized UTF string.lower (ä -> a)
- local str = ""
- for i=1, utf.len(strOrig) do
- local c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
- str = str..string.lower(c)
+ if use_UCA then
+ return strOrig
+ else
+ local str = ""
+ for i=1, utf.len(strOrig) do
+ local c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
+ str = str..string.lower(c)
+ end
+ return str
end
- return str
end
function NormalizedUpper(strOrig) -- return normalized UTF string.upper (ä -> A)
- local str = {}
- local c
- for i=1, utf.len(strOrig) do
- c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
- str[#str + 1] = c
- end
- strOrig = table.concat(str)
- str = {}
- for i=1, utf.len(strOrig) do
- c = get_normalized_char(alphabet_upper_map,utf.sub(strOrig,i,i))
- c = NormalizedUppercase(c)
- str[#str + 1] = c
+ if use_UCA then
+ return strOrig
+ else
+ local str = {}
+ local c
+ for i=1, utf.len(strOrig) do
+ c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
+ str[#str + 1] = c
+ end
+ strOrig = table.concat(str)
+ str = {}
+ for i=1, utf.len(strOrig) do
+ c = get_normalized_char(alphabet_upper_map,utf.sub(strOrig,i,i))
+ c = NormalizedUppercase(c)
+ str[#str + 1] = c
+ end
+ return table.concat(str)
end
- return table.concat(str)
end
function NormalizedUppercase(chr) -- return normalized UTF uppercase letter
@@ -284,7 +296,8 @@ function getEntryAndPage(w, nextW, EntryList)
--print("Entry:"..EntryList[#EntryList]["sortChar"])
if args_v then
if Special == "" then Special = "-" end
- writeLog(1,"getEntryAndPage: "..tostring(IndexString,pageNo,Special,utf.sub(IndexString,1,1),macro).."\n",2)
+ writeLog(1,"getEntryAndPage: "..
+ tostring(IndexString,pageNo,Special,utf.sub(IndexString,1,1),macro).."\n",2)
end
return EntryList
end
@@ -293,6 +306,7 @@ function compressEntryList(EntryList)
-- require 'xindex-pretty'.dump(EntryList) -- only for internal dump
local newList = {}
newList[1] = EntryList[1] -- at least one entry
+ print("----------------- start compressEntryList ----------------")
local nPages = 1
for k=2,#EntryList do
if EntryList[k] then -- exists?
@@ -337,7 +351,6 @@ EntryList[2] = {
}
]]
-
function deletePageDups(pages)
if #pages == 1 then return pages end
local newPages = {pages[1]}
@@ -360,7 +373,7 @@ end
function compressPageList(pages) -- called with (v["pages"])
writeLog(1,"compressPageList: we have "..#pages.." pages for this entry\n",2)
--- require 'xindex-pretty'.dump(pages) -- only for internal dump
+ --print(require 'xindex-pretty'.dump(pages)) -- only for internal dump
pages = deletePageDups(pages) -- delete duplicate page numbers with same special
local str
if #pages == 1 then -- only one pageno
@@ -380,6 +393,26 @@ function compressPageList(pages) -- called with (v["pages"])
-- (pages[1]["special"] == pages[2]["special"]) then
-- pages[2] = nil
end
+ else -- pages are not numbers
+ rangeStartA,rangeEndA = pages[1]["number"]:find("-") or 0,0
+ rangeStartB,rangeEndB = pages[2]["number"]:find("-") or 0,0
+ if rangeStartA > 1 then
+ pageA = pages[1]["number"]:gmatch("([^-]+)")(1) -- split 12--44 into 12
+ pageB = pages[2]["number"]
+ if pageA > pageB then -- change pages
+ local temp = pages[1]["number"]
+ pages[1]["number"] = pages[2]["number"]
+ pages[2]["number"] = temp
+ end
+ elseif rangeStartB > 1 then -- change pages
+ pageA = pages[1]["number"]
+ pageB = pages[2]["number"]:gmatch("([^-]+)")(1) -- split 12--44 into 12
+ if pageA > pageB then
+ local temp = pages[1]["number"]
+ pages[1]["number"] = pages[2]["number"]
+ pages[2]["number"] = temp
+ end
+ end
end
return pages
end
@@ -397,7 +430,7 @@ function compressPageList(pages) -- called with (v["pages"])
series = {pages[2]}
startIndex = 3
end
-if args_v then print ("compressPageList: more than two pages for the entry\n") end
+ if args_v then print ("compressPageList: more than two pages for the entry\n") end
for i=startIndex,#pages do
if (toNumber(pages[i-1]["number"]) and toNumber(pages[i]["number"])) then -- do we have two arabic or two roman numbers?
if ((toNumber(pages[i]["number"])-toNumber(pages[i-1]["number"])) == 1) and
@@ -574,6 +607,7 @@ function GenerateSortKey(a)
end
-- s:gsub("%s+", "") strip spaces
-- a["SortKey"] = a["SortKey"]:gsub("%s+", "")
+ --print("Sortkey: " .. a["SortKey"])
if not use_UCA then -- test if it is a symbol after 9 and before A or after Z
if (a["SortKey"]:byte() > 57 and a["SortKey"]:byte() < 65) or
(a["SortKey"]:byte() > 90 and a["SortKey"]:byte() < 97) or
@@ -581,28 +615,44 @@ function GenerateSortKey(a)
a["SortKey"] = "/"..a["SortKey"] -- sort it after /
end
end
- --print("Sortkey: " .. a["SortKey"])
end
function GenerateSortKeys(Index)
- for _, entry in ipairs(Index) do
+ for _, entry in ipairs(Index) do
-- print("<<".._..entry["Entry"])
- GenerateSortKey(entry)
- end
+ GenerateSortKey(entry)
+ end
end
-function UTFCompare(a,b)
- local A = a["SortKey"]
- local B = b["SortKey"]
- if use_UCA then
- compare = collator_obj:compare_strings(A,B)
+-- Entry = "Johann", -- the index item foo@bar
+-- pages = { -- the page number(s) and the part after |
+-- { number = 111,
+
+
+function UCACompare(a,b)
+ local pageA = a["pages"][1]["number"]
+ local pageB = b["pages"][1]["number"]
+ if ignoreSpace then
+ A = a["Entry"]:gsub("%s+", "")..tostring(pageA) -- str = str:gsub("%s+", "")
+ B = b["Entry"]:gsub("%s+", "")..tostring(pageB)
else
- compare = A<B
+ A = a["Entry"]..tostring(pageA)
+ B = b["Entry"]..tostring(pageB)
end
- writeLog(1,"UTFCompare: "..A.."<"..B.." : "..tostring(compare).."\n",2)
+ if A=="Abendmahl" or B=="Abendmahl" then print(A,B,A==B) end
+ if A==B then return True end
+ --print(A,B)
+ compare = collator_obj:compare_strings(A,B)
+-- writeLog(1,"UCACompare: "..A.."<"..B.." : "..tostring(compare).."\n",2)
return compare
end
+function UTFCompare(a,b)
+ local A = a["SortKey"]
+ local B = b["SortKey"]
+-- writeLog(1,"UTFCompare: "..A.."<"..B.." : "..tostring(A<B).."\n",2)
+ return A<B
+end
function pageCompare(a,b) -- a = {{number=...,special=..},{...,...}}
-- a["number"], b["number"] are something like "3" or "VI-17" or "9--31"
@@ -709,7 +759,7 @@ function getPageList(v,hyperpage)
else
Pages = compressPageList(v["pages"])
end
--- require 'xindex-pretty'.dump(Pages) -- only for internal dump
+-- print(require 'xindex-pretty'.dump(Pages)) -- only for internal dump
local pageNo
--[[
\indexentry{Auto|hyperindexformat{\textbf}}{1}
@@ -719,18 +769,17 @@ function getPageList(v,hyperpage)
\item foo, \hyperpage{1\nohyperpage{f}},
\hyperpage{4\nohyperpage{ff}}, \hyperpage{8}
-
]]
if hyperpage then
- if string.find(v["pages"][1]["special"],"hyperindexformat") then
--- pageNo = v["pages"][1]["special"].."{"..checkFF(Pages[1]["number"].."}")
- pageNo = v["pages"][1]["special"].."{"..Pages[1]["number"].."}"
+ if string.find(Pages[1]["special"],"hyperindexformat") then
+-- pageNo = Pages[1]["special"].."{"..checkFF(Pages[1]["number"].."}")
+ pageNo = Pages[1]["special"].."{"..Pages[1]["number"].."}"
else
pageNo = "\\hyperpage{"..checkFF(Pages[1]["number"]).."}"
end
for i=2,#Pages do
- if string.find(v["pages"][i]["special"],"hyperindexformat") then
- pageNo = pageNo..", "..v["pages"][i]["special"].."{"..Pages[i]["number"].."}"
+ if string.find(Pages[i]["special"],"hyperindexformat") then
+ pageNo = pageNo..", "..Pages[i]["special"].."{"..Pages[i]["number"].."}"
-- pageNo = pageNo..", "..v["pages"][i]["special"].."{"..checkFF(Pages[i]["number"].."}")
else
pageNo = pageNo..", \\hyperpage{"..checkFF(Pages[i]["number"]).."}"
@@ -784,8 +833,9 @@ end
function checkHyperpage(lines)
local hyperpage = false
+ local l
for i=1,#lines do
- if string.find(lines[i],'hyperpage}') then
+ if string.find(lines[i],'hyperpage}') or string.find(lines[i],'hyperindexformat}') then
hyperpage = true
break
end
@@ -796,49 +846,49 @@ function checkHyperpage(lines)
-- hyperref ignores the vertical bar in "| and also other escape chars
--
-- \index{"|} -> \indexentry{"|hyperpage}{1} -> \textbar|hyperpage
- -- \index{foo"|bar} -> \indexentry{foo"|hyperindexformat{\bar}}{1} -> foo\textbar bar|hyperpage
+ -- \index{foo"|bar} -> \indexentry{foo"||hyperindexformat{\bar}}{1} -> foo\textbar bar|hyperpage
end
local sub_str0 = esc_char..'|hyperpage'
local sub_str1 = esc_char..'|hyperindexformat'
for i=1,#lines do
- local l = lines[i]
+ l = lines[i]
if fix_hyperref then
- s0 = l:find(sub_str0) -- test for hyperpage
- s1 = l:find(esc_char..sub_str0)
- --print(i,l,s0,s1)
+ s0 = l:find(sub_str0) -- test for "|hyperpage
+ s1 = l:find(esc_char..sub_str0) -- test for ”"|hyperpage
if s0 == nil then
s0 = 0
s1 = 0
end
if s1 == nil and s0 > 0 then -- no ""|
- l = l:gsub(sub_str0, '\\textbar|hyperpage') -- "| -> \textbar
- else
- -- part 2
- s0 = l:find(sub_str1)
- s1 = l:find(esc_char..sub_str1)
- --print(i,l,s0,s1)
- if s0 == nil then
+ l = l:gsub(sub_str0, '\\textbar|hyperpage') -- "|hyperpage -> \textbar|hyperpage
+ end
+ -- part 2
+ s0 = l:find(sub_str1) -- look for "|hyperindexformat
+ s1 = l:find(esc_char..sub_str1) -- look for ""|hyperindexformat
+ --print(i,l,s0,s1)
+ if s0 == nil then
s0 = 0
s1 = 0
- elseif s1 == nil then
+ elseif s1 == nil then
s1 = 0
- end
- if s1 == 0 and s0 > 0 then
+ end
+ if s1 == 0 and s0 > 0 then -- found "|hyperindexformat
-- get foo and bar from {foo"|hyperindexformat{\bar}}
- items = l:gmatch("%{(.-)%}")
- var = {}
- for item in items do
+ -- \indexentry{marriage|hyperindexformat{\seealso{coemptio}}}{301}
+ items = l:gmatch("%{(.-)%}")
+ var = {}
+ for item in items do
var[#var+1] = item
- end
- if s0 > 2 then
+ end
+ if s0 > 2 then
u1 = var[1]:split('"|')[1] -- foo
- else
+ else
u1 = ''
- end
- v1 = var[1]:split("\\")[2] -- bar
- l = '{'..u1..'\\textbar '..v1.."|hyperpage}{"..var[2].."}"
- -- l = foo"|bar -> foo\textbar bar
end
+ v1 = var[1]:split("\\")[2] -- bar
+ print(u1,v1,var[1],var[2])
+ l = '{'..u1..'\\textbar '..v1.."|hyperindexformat}{"..var[2].."}"
+ -- l = foo"|bar -> foo\textbar bar
end
end
lines[i] = string.gsub(l,'|?hyperpage}{','}{')
@@ -1018,7 +1068,7 @@ function getSortChar(codepoints)
local sort_char = utf8.char(table.unpack(codes))
--print("SortChar:"..sort_char)
-- print unicode category of the first char
- return upper(sort_char) -- use unicode.utf8.upper to make the char uppercase
+ return unicode.utf8.upper(sort_char) -- use unicode.utf8.upper to make the char uppercase
end
end
diff --git a/indexing/xindex/lualatex/xindex-norsk.lua b/indexing/xindex/lualatex/xindex-norsk.lua
index f51d19db0e..91d83a95a2 100644
--- a/indexing/xindex/lualatex/xindex-norsk.lua
+++ b/indexing/xindex/lualatex/xindex-norsk.lua
@@ -10,7 +10,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-no'] = {
- version = 0.55,
+ version = 0.61,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/lualatex/xindex-pretty.lua b/indexing/xindex/lualatex/xindex-pretty.lua
index bdf6591ff8..c41ba8c8cc 100644
--- a/indexing/xindex/lualatex/xindex-pretty.lua
+++ b/indexing/xindex/lualatex/xindex-pretty.lua
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-pretty'] = {
- version = 0.55,
+ version = 0.61,
comment = "dump a Lua table for debugging",
author = "Steve Donovan",
copyright = "Steve Donovan",
diff --git a/indexing/xindex/lualatex/xindex-yannis.lua b/indexing/xindex/lualatex/xindex-yannis.lua
index a07d5e2f4d..ebf27cfb75 100644
--- a/indexing/xindex/lualatex/xindex-yannis.lua
+++ b/indexing/xindex/lualatex/xindex-yannis.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-yannis'] = {
- version = 0.55,
+ version = 0.61,
comment = "main configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/indexing/xindex/scripts/xindex.lua b/indexing/xindex/scripts/xindex.lua
index 041235d289..fd510451ca 100755
--- a/indexing/xindex/scripts/xindex.lua
+++ b/indexing/xindex/scripts/xindex.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
xindex = xindex or { }
- local version = 0.55
+ local version = 0.61
xindex.version = version
--xindex.self = "xindex"
@@ -46,7 +46,7 @@ local args = require ('xindex-lapp') [[
-V,--version
-a,--no_casesensitive
-b,--no_labels
- -c,--config (default cfg)
+ -c,--config (default "")
-e,--escapechar (default ")
-f,--fix_hyperref
-g,--no_pagenumber
@@ -57,7 +57,8 @@ local args = require ('xindex-lapp') [[
-o,--output (default "")
-p,--prefix (default L)
-s,--use_stdin
- -u,--use_UCA
+ -u,--use_UCA no more needed
+ -x,--no_UCA
<files...> (default stdin) .idx file(s)
]]
@@ -170,7 +171,6 @@ end
logFile = io.open(logfilename,"w+")
require('xindex-lib')
-
writeLog(2,"xindex v."..version.." (c) Herbert Voß\n",-1)
writeLog(1,"Verbose level = "..vlevel.."\n",1)
writeLog(2,"Logfile:"..logfilename.."\n",1)
@@ -202,45 +202,13 @@ writeLog(2,"ignore space for sorting: "..tostring(ignoreSpace).."\n",-1)
labelPrefix = args.prefix
writeLog(2,"Label prefix: "..labelPrefix.."\n",-1)
-writeLog(2,"Loading common config file ".."xindex-cfg-common\n",1)
+writeLog(2,"Loading all config files ... \n",1)
+writeLog(2,"Loading common config file ".."xindex-cfg-common\n",1) -- we need config for lang setting
Config_File_Common = kpse.find_file("xindex-cfg-common.lua")
cfg_common = require(Config_File_Common)
-local user_config_file = "xindex-"..args["config"]..".lua"
-print("Local config file is: "..user_config_file)
-writeLog(2,"Loading local config file "..user_config_file,0)
-if kpse.find_file(user_config_file)
- then Config_File = kpse.find_file(user_config_file)
- else print("Cannot find config file with kpse.find_file!!")
-end
-print("\nLocal KPSE config file is: "..Config_File.."\n")
-cfg = require(Config_File)
-writeLog(2," ... done\n",0)
-
--- Create the character list maps for faster sorting
-
-alphabet_lower_map = CreateCharListMap(alphabet_lower)
-alphabet_upper_map = CreateCharListMap(alphabet_upper)
-
-esc_char = args.escapechar
-esc_char2 = esc_char..esc_char
-writeLog(2,"Escapechar = "..esc_char.."\n",1)
-escape_chars = { -- by default " is the escape char
- {esc_char2, '//escaped2//', esc_char },
- {esc_char..'@', '//escapedat//', '@' },
- {esc_char..'|', '//escapedvert//', '|' },
- {esc_char..'!', '//escapedexcl//', '!' },
- {'', '\\textbar', '|' },
- {'', '\\braceLeft', '{' },
- {'', '\\braceRight', '}' }
-}
-
-outFile = io.open(outfilename,"w+")
-
check_language = args["checklang"]
local aux_language = ""
-
-
if check_language then
print("check aux file for unknown language")
-- writeLog(2,'Check language in aux file\n',0)
@@ -287,32 +255,17 @@ else
end
end
---print("Sprache:"..language)
-
-writeLog(2,"Language = "..language.."\n",1)
-if (indexheader[language] == nil) then
- writeLog(2,'Corrected the unknown language "'..language..'" to "en"'.."\n",0)
- language = "en"
-end
-
-index_header = indexheader[language]
-if vlevel > 0 then for i=1,#index_header do writeLog(2,index_header[i].."\n",1) end end
-if (folium[language] == nil) then
- writeLog(2,'Corrected the unknown language "'..language..'" for page folium to "en"'.."\n",0)
- page_folium = folium["en"]
-else
- page_folium = folium[language]
-end
+-- next config is UCA
-use_UCA = args["use_UCA"]
+use_UCA = not args["no_UCA"]
if use_UCA then
writeLog(1,"Will use LUA-UCA\n",1)
ducet = require "lua-uca.lua-uca-ducet"
collator = require "lua-uca.lua-uca-collator"
languages = require "lua-uca.lua-uca-languages"
collator_obj = collator.new(ducet)
-
- local uca_config_file = "xindex-cfg-uca.lua"
+
+ uca_config_file = "xindex-cfg-uca.lua" -- for additional language definition
writeLog(2,"Loading local UCA config file "..uca_config_file,0)
UCA_Config_File = kpse.find_file(uca_config_file)
uca_cfg = require(UCA_Config_File)
@@ -331,11 +284,65 @@ if use_UCA then
print("[Lua-UCA] Loading language: " .. language)
collator_obj = languages[language](collator_obj)
end
+ alphabet_lower_map = {} -- empty tables for UCA sorting
+ alphabet_upper_map = {}
else
writeLog(1,"Will _not_ use LUA-UCA\n",1)
+ -- Create the character list maps for faster sorting if not using UCA
+ writeLog(2,"Loading config file for no UCA".."xindex-cfg-no_uca\n",1)
+ Config_File_UCA = kpse.find_file("xindex-cfg-no_uca.lua")
+ cfg_UCA = require(Config_File_UCA)
+ alphabet_lower_map = CreateCharListMap(alphabet_lower)
+ alphabet_upper_map = CreateCharListMap(alphabet_upper)
+end
+
+-- at last the user config
+
+if args["config"] ~= '""' then
+ local user_config_file = "xindex-"..args["config"]..".lua"
+ print("Local config file is: "..user_config_file)
+ writeLog(2,"Loading local config file "..user_config_file,0)
+ if kpse.find_file(user_config_file) then
+ Config_File = kpse.find_file(user_config_file)
+ else
+ Config_File = ""
+ print("Cannot find config file with kpse.find_file!!")
+ end
+ print("\nLocal KPSE config file is: "..Config_File.."\n")
+ cfg = require(Config_File)
+ writeLog(2," ... done\n",0)
end
-upper = unicode.utf8.upper
+--print("Sprache:"..language)
+
+writeLog(2,"Language = "..language.."\n",1)
+if (indexheader[language] == nil) then
+ writeLog(2,'Corrected the unknown language "'..language..'" to "en"'.."\n",0)
+ language = "en"
+end
+
+index_header = indexheader[language]
+if vlevel > 0 then for i=1,#index_header do writeLog(2,index_header[i].."\n",1) end end
+if (folium[language] == nil) then
+ writeLog(2,'Corrected the unknown language "'..language..'" for page folium to "en"'.."\n",0)
+ page_folium = folium["en"]
+else
+ page_folium = folium[language]
+end
+
+
+esc_char = args.escapechar
+esc_char2 = esc_char..esc_char
+writeLog(2,"Escapechar = "..esc_char.."\n",1)
+escape_chars = { -- by default " is the escape char
+ {esc_char2, '//escaped2//', esc_char },
+ {esc_char..'@', '//escapedat//', '@' },
+ {esc_char..'|', '//escapedvert//', '|' },
+ {esc_char..'!', '//escapedexcl//', '!' },
+ {'', '\\textbar', '|' },
+ {'', '\\braceLeft', '{' },
+ {'', '\\braceRight', '}' }
+}
no_caseSensitive = args["no_casesensitive"]
if no_caseSensitive then