texlive[64710] trunk: bib2gls (15oct22)

commits+karl at tug.org commits+karl at tug.org
Sat Oct 15 22:19:59 CEST 2022


Revision: 64710
          http://tug.org/svn/texlive?view=revision&revision=64710
Author:   karl
Date:     2022-10-15 22:19:58 +0200 (Sat, 15 Oct 2022)
Log Message:
-----------
bib2gls (15oct22)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/simpdftex/simpdftex
    trunk/Master/texmf-dist/doc/man/man1/bib2gls.1
    trunk/Master/texmf-dist/doc/man/man1/bib2gls.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/convertgls2bib.1
    trunk/Master/texmf-dist/doc/man/man1/convertgls2bib.man1.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/CHANGES
    trunk/Master/texmf-dist/doc/support/bib2gls/README.md
    trunk/Master/texmf-dist/doc/support/bib2gls/bib2gls-begin.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/bib2gls.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-authors.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-bacteria.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-chemical.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-citations.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-constants.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-hierarchical.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-markuplanguages.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-maths.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-media.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-msymbols.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-multi1.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-multi2.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-nested.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-people.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-textsymbols.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-textsymbols2.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-units1.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-units2.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-units3.pdf
    trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-usergroups.pdf
    trunk/Master/texmf-dist/scripts/bib2gls/bib2gls.jar
    trunk/Master/texmf-dist/scripts/bib2gls/convertgls2bib.jar
    trunk/Master/texmf-dist/scripts/bib2gls/resources/bib2gls-en.xml
    trunk/Master/texmf-dist/scripts/bib2gls/texparserlib.jar
    trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls-begin.tex
    trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls-src.zip
    trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls-terms.bib
    trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls.bib
    trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls.pod
    trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls.tex
    trunk/Master/texmf-dist/source/support/bib2gls/src/gls2bib-src.zip
    trunk/Master/texmf-dist/source/support/bib2gls/src/texparser-src.zip
    trunk/Master/tlpkg/tlpsrc/bib2gls.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/support/bib2gls/DEPENDS.txt

Modified: trunk/Build/source/texk/texlive/linked_scripts/simpdftex/simpdftex
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/simpdftex/simpdftex	2022-10-15 20:18:37 UTC (rev 64709)
+++ trunk/Build/source/texk/texlive/linked_scripts/simpdftex/simpdftex	2022-10-15 20:19:58 UTC (rev 64710)
@@ -6,8 +6,9 @@
 # Modified by Joachim Kock, May 2003
 # Modified by Gerben Wierda, April 2007
 # Modified by Bruno Voisin and Herbert Schulz, September 2018
+# Typos corrected by Karl Berry, October 2022.
 
-# COPYRIGHT Gerben Wierda 2001--2018
+# COPYRIGHT Gerben Wierda 2001--2022
 # This file is free software. You are free to use this file in any way you like
 # However, if you change it you should note in this file that you did and who
 # you are, you also need to change the version string if you do. That way
@@ -87,7 +88,7 @@
 # Version 2.8:	Checked into CVS.
 #		Added handling of outdir for TeX
 # Version 2.9:	Added auto-outdir flag
-# Version 2.10:	Changed --outdir behaviour to mimick TEXMFOUTPUT,
+# Version 2.10:	Changed --outdir behaviour to mimic TEXMFOUTPUT,
 #		removed --auto-outdir
 # Version 2.11:	Fixed typo
 # Version 2.12:	RCS changes, from now on, the version number is the RCS number
@@ -101,7 +102,7 @@
 #		display a blank page until the new version is ready.
 # 2003/05/21	Joachim's modification used /bin/cp. Gerben made it truly
 #		atomic by using /bin/cp in combination with /bin/mv
-# 2003/11/23	Added supportfor passing flasg to tex at the request of
+# 2003/11/23	Added support for passing flags to tex at the request of
 #		Dick Koch.
 # 2004/09/05	Bugfix: make it work better with directories with whitespace
 #		in their name
@@ -122,18 +123,19 @@
 #		options to be added to the distiller application; 
 #		e.g. "-dCompatibilityLevel=1.5 -dNOSAFER".
 #		Removed uses of echo -n.
-# 2018/09/24 Added -dCompatibilityLevel=15 into the distillerprog definition
-#		and removed quotes around execution of ${distillerprog} so it can
-#		contain options.
-
+# 2018/09/24    Added -dCompatibilityLevel=15 into the distillerprog definition
+#		and removed quotes around execution of ${distillerprog}
+#		so it can contain options.
+# 2022/10/12    Fix typos; no functional changes.
+# 
 # FEATURE: it seems -u +foo.map -u -foo.map does not work. So --extradvipsopts
 # cannot be used to remove a map from the standard list
 
-# BUG: Handling of file name extensions is not completely equialent to TeX
+# BUG: Handling of file name extensions is not completely equivalent to TeX
 # i.e. foo.bar.bla gets you foo.bar.pdf not foo.bar.bla.pdf
 # Hint: Give all extensions explicitly on the command line
 
-version='20180924'
+version='20221012'
 calledas=`basename "$0"`
 if [ "${calledas}" = "simpdftex" ]
 then
@@ -232,7 +234,7 @@
 		Display this message and exit
 	--no-echo-version
 		Do not echo location and version of this script. Does not exit
-		so can be used tochange info to the output of a real run
+		so can be used to change info to the output of a real run
 	--debug
 		Add some debug output
 	--extendedname
@@ -298,7 +300,7 @@
 	--distiller prog
 		Use a distiller different from ps2pdf which is the default.
 		Argument must be an executable or executable script that
-		gets called iwth two arguments: input file (PS) and output
+		gets called with two arguments: input file (PS) and output
 		file (PDF). E.g.:
 		--distiller=/usr/local/alternate/bin/ps2pdf
 		--distiller=pstill
@@ -329,7 +331,7 @@
 		overrides other flags that set dvipdfmopts.
 	--outdir dir
 		Write files here *if* our current directory is unwritable. This
-		mimicks the TEXMFOUTPUT environment variable of TeX, but
+		mimics the TEXMFOUTPUT environment variable of TeX, but
 		differently. The current dir becomes the value of --outdir and
 		the directory where the old current dir is added to TEXINPUTS.
 		This is more robust for reading and locating files.
@@ -648,15 +650,15 @@
 
 	if [ "${startwithdvi}" = "yes" ]; then
 		if [ "${keeppsfile}" = "yes" ]; then
-			/bin/echo "### Succesfully generated ${savedpdffile} and ${savedpsfile}"
+			/bin/echo "### Successfully generated ${savedpdffile} and ${savedpsfile}"
 		else
-			/bin/echo "### Succesfully generated ${savedpdffile}"
+			/bin/echo "### Successfully generated ${savedpdffile}"
 		fi
 	else
 		if [ "${keeppsfile}" = "yes" ]; then
-			/bin/echo "### Succesfully generated ${dvifile}, ${savedpdffile} and ${savedpsfile}"
+			/bin/echo "### Successfully generated ${dvifile}, ${savedpdffile} and ${savedpsfile}"
 		else
-			/bin/echo "### Succesfully generated ${dvifile} and ${savedpdffile}"
+			/bin/echo "### Successfully generated ${dvifile} and ${savedpdffile}"
 		fi
 	fi
 

Modified: trunk/Master/texmf-dist/doc/man/man1/bib2gls.1
===================================================================
--- trunk/Master/texmf-dist/doc/man/man1/bib2gls.1	2022-10-15 20:18:37 UTC (rev 64709)
+++ trunk/Master/texmf-dist/doc/man/man1/bib2gls.1	2022-10-15 20:19:58 UTC (rev 64710)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "BIB2GLS 1"
-.TH BIB2GLS 1 "2021-11-06" "perl v5.32.1" "bib2gls"
+.TH BIB2GLS 1 "2022-10-09" "perl v5.34.1" "bib2gls"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -311,6 +311,10 @@
 The default is to do this for all fields.  To do this for only a
 subset of fields, set \fIfields\fR to a comma-separated list of fields
 (e.g. \fBname,short,long\fR).  The keyword \fBall\fR indicates all fields.
+.Sp
+If \fImfirstuc\fR v2.08+, \fIglossaries\fR v4.50+ and \fIglossaries-extra\fR v1.49+ 
+are detected, the default will be \fB\-\-no\-mfirstuc\-protection\fR
+as there should no longer be any need for this protection.
 .IP "\fB\-\-no\-mfirstuc\-protection\fR" 4
 .IX Item "--no-mfirstuc-protection"
 Switch off the auto-insertion of an empty group for all fields.
@@ -317,7 +321,10 @@
 .IP "\fB\-\-mfirstuc\-math\-protection\fR" 4
 .IX Item "--mfirstuc-math-protection"
 Switch on the auto-insertion of an empty group for math-shift (\f(CW\*(C`$\*(C'\fR).
-This option will be overridden by \fB\-\-no\-mfirstuc\-protection\fR.
+.Sp
+If \fImfirstuc\fR v2.08+, \fIglossaries\fR v4.50+ and \fIglossaries-extra\fR v1.49+ 
+are detected, the default will be \fB\-\-no\-mfirstuc\-math\-protection\fR
+as there should no longer be any need for this protection.
 .IP "\fB\-\-no\-mfirstuc\-math\-protection\fR" 4
 .IX Item "--no-mfirstuc-math-protection"
 Switch off the auto-insertion of an empty group for math-shift (\f(CW\*(C`$\*(C'\fR).
@@ -347,6 +354,23 @@
 .IP "\fB\-\-no\-group\fR" 4
 .IX Item "--no-group"
 Don't add \fBgroup\fR field to entries (default).
+.IP "\fB\-\-record\-count\-rule\fR \fIrule\fR or \fB\-r\fR \fIrule\fR" 4
+.IX Item "--record-count-rule rule or -r rule"
+Sets the rule used by \fB\-\-record\-count\fR and \fB\-\-record\-count\-unit\fR.
+This option automatically implements \fB\-\-record\-count\fR.
+.Sp
+The \fIrule\fR may be: \f(CW\*(C`all\*(C'\fR or \f(CW\*(C`a\*(C'\fR (count all records), 
+\&\f(CW\*(C`non\-ignored\*(C'\fR or \f(CW\*(C`n\*(C'\fR (count all non-ignored records), 
+\&\f(CW\*(C`f/\*(C'\fR\fIregex\fR\f(CW\*(C`/\*(C'\fR (only count records where the format 
+matches the regular expression \fIregex\fR),
+\&\f(CW\*(C`c/\*(C'\fR\fIregex\fR\f(CW\*(C`/\*(C'\fR (only count records where the counter name 
+matches the regular expression \fIregex\fR),
+or \f(CW\*(C`f/\*(C'\fR\fIregex1\fR\f(CW\*(C`/c/\*(C'\fR\fIregex2\fR\f(CW\*(C`/\*(C'\fR\fIop\fR (only count records where the format 
+matches the regular expression \fIregex1\fR and/or the counter name 
+matches the regular expression \fIregex2\fR). The \fIop\fR part is
+optional. If present it may be one of: \f(CW\*(C`and\*(C'\fR (format \s-1AND\s0 counter
+must match), \f(CW\*(C`or\*(C'\fR (format \s-1OR\s0 counter must match). If \fIop\fR is
+omitted, \s-1AND\s0 is assumed.
 .IP "\fB\-\-record\-count\fR or \fB\-c\fR" 4
 .IX Item "--record-count or -c"
 Add record count fields to entries.
@@ -397,6 +421,14 @@
 provide unknown glossaries except in documented situations
 (\fBmaster\fR, \fBsecondary\fR and \fBtrigger-type\fR resource options).
 This setting is the default.
+.IP "\fB\-\-replace\-quotes\fR" 4
+.IX Item "--replace-quotes"
+Replace single and double quote characters (\f(CW\*(C`\*(Aq\*(C'\fR and \f(CW\*(C`"\*(C'\fR) with 
+\&\f(CW\*(C`\ebibglsaposchar\*(C'\fR and \f(CW\*(C`\ebibglsdoublequotechar\*(C'\fR in field values
+and group information written to the \fI.glstex\fR file.
+.IP "\fB\-\-no\-replace\-quotes\fR" 4
+.IX Item "--no-replace-quotes"
+Don't replace quote characters (default).
 .SH "REQUIRES"
 .IX Header "REQUIRES"
 Java 7 or later and a TeX distribution.

Modified: trunk/Master/texmf-dist/doc/man/man1/bib2gls.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/convertgls2bib.1
===================================================================
--- trunk/Master/texmf-dist/doc/man/man1/convertgls2bib.1	2022-10-15 20:18:37 UTC (rev 64709)
+++ trunk/Master/texmf-dist/doc/man/man1/convertgls2bib.1	2022-10-15 20:19:58 UTC (rev 64710)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CONVERTGLS2BIB 1"
-.TH CONVERTGLS2BIB 1 "2020-02-11" "perl v5.32.1" "convertgls2bib"
+.TH CONVERTGLS2BIB 1 "2020-02-11" "perl v5.34.1" "convertgls2bib"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l

Modified: trunk/Master/texmf-dist/doc/man/man1/convertgls2bib.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/CHANGES
===================================================================
--- trunk/Master/texmf-dist/doc/support/bib2gls/CHANGES	2022-10-15 20:18:37 UTC (rev 64709)
+++ trunk/Master/texmf-dist/doc/support/bib2gls/CHANGES	2022-10-15 20:19:58 UTC (rev 64710)
@@ -1,3 +1,80 @@
+v3.0 (2022-10-14):
+
+  * support for \glsxtr at select@entry and \glsxtr at select@entry at nameref
+    (new to glossaries-extra-bib2gls v1.49)
+
+  * support for bibglsaux and \glsxtrsetbibglsaux
+    (new to glossaries-extra.sty v1.49)
+
+  * if mfirstuc v2.08+, glossaries v4.50+ and glossaries-extra
+    v1.49+ detected, default mfirstuc protection settings will
+    switch to --no-mfirstuc-protection --no-mfirstuc-math-protection
+
+  * bug fix: case changing options aren't recognising commands
+    identified with \glsxtrnewgls
+
+  * added support for \glsxtridentifyglsfamily (glossaries-extra
+    v1.49+)
+
+  * new switch --record-count-rule (or -r) which may be used to
+    determine whether or not certain types of records (such as
+    ignored records) should be included in the record count.
+
+  * new switch --replace-quotes
+
+  * issue #15: loc-prefix and type leads to undefined \bibglslocprefix with multiple glossaries
+    https://github.com/nlct/bib2gls/issues/15
+
+    This has led to new resource options:
+
+    - loc-prefix-def
+    - loc-suffix-def
+
+  * added support for sub-groups (requires glossaries-extra v1.49+):
+
+    - group-level
+
+  * new merge small groups option:
+
+    - merge-small-groups
+
+  * new option to save root label:
+
+    - save-root-ancestor
+
+  * new option to split primary locations into counter groups:
+
+    - primary-loc-counters (synonym: principal-loc-counters)
+
+  * new options to skip break-at via pattern matching:
+
+    - break-at-match
+    - break-at-not-match
+    - break-at-match-op
+    - dual-break-at-match
+    - dual-break-at-not-match
+    - dual-break-at-match-op
+    - secondary-break-at-match
+    - secondary-break-at-not-match
+    - secondary-break-at-match-op
+
+  * new options to prune "see" and "seealso" fields:
+
+    - prune-xr
+    - prune-see-op
+    - prune-see-match
+    - prune-seealso-op
+    - prune-seealso-match
+    - prune-iterations
+
+  * new save-locations values:
+
+    - save-locations=see
+    - save-locations=see not also
+    - save-locations=alias only
+
+  * bug fix: nameref records not merging for wrglossary counter
+
 v2.9 (2021-11-22):
 
   * Support for \multiglossaryentry (new to glossaries-extra v1.48)

Added: trunk/Master/texmf-dist/doc/support/bib2gls/DEPENDS.txt
===================================================================
--- trunk/Master/texmf-dist/doc/support/bib2gls/DEPENDS.txt	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/support/bib2gls/DEPENDS.txt	2022-10-15 20:19:58 UTC (rev 64710)
@@ -0,0 +1,2 @@
+glossaries-extra
+java


Property changes on: trunk/Master/texmf-dist/doc/support/bib2gls/DEPENDS.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/support/bib2gls/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/support/bib2gls/README.md	2022-10-15 20:18:37 UTC (rev 64709)
+++ trunk/Master/texmf-dist/doc/support/bib2gls/README.md	2022-10-15 20:19:58 UTC (rev 64710)
@@ -9,7 +9,7 @@
 
 # Licence
 
-Copyright (C) 2017-2021 Nicola L. C. Talbot (www.dickimaw-books.com)
+Copyright (C) 2017-2022 Nicola L. C. Talbot (dickimaw-books.com)
 
 License GPLv3+: GNU GPL version 3 or later
 http://gnu.org/licenses/gpl.html
@@ -131,9 +131,14 @@
 
 TUGboat articles:
 
-  - [Glossaries with bib2gls](http://tug.org/TUGboat/tb40-1/tb124talbot-bib2gls.pdf), issue [40:1, 2019](http://tug.org/TUGboat/Contents/contents40-1.html).
-  - [bib2gls: selection, cross-references and locations](http://tug.org/TUGboat/tb41-3/tb129talbot-bib2gls-more.pdf), issue [41:3, 2020](http://tug.org/TUGboat/Contents/contents41-3.html).
-  - bib2gls: sorting, issue [42:2, 2021](http://tug.org/TUGboat/Contents/contents42-2.html).
+  - Glossaries with bib2gls, issue [40:1, 2019](http://tug.org/TUGboat/Contents/contents40-1.html). 
+    [(PDF)](http://tug.org/TUGboat/tb40-1/tb124talbot-bib2gls.pdf)
+  - bib2gls: selection, cross-references and locations, issue [41:3, 2020](http://tug.org/TUGboat/Contents/contents41-3.html).
+    [(PDF)](http://tug.org/TUGboat/tb41-3/tb129talbot-bib2gls-more.pdf)
+  - bib2gls: sorting, issue [42:2, 2021](http://tug.org/TUGboat/Contents/contents42-2.html). [(PDF)](https://tug.org/TUGboat/tb42-2/tb131talbot-sorting.pdf)
+  - bib2gls: standalone entries and repeated lists (a little book of
+    poisons), issue [43:1, 2022](https://tug.org/TUGboat/Contents/contents43-1.html).
+    [(PDF)](https://tug.org/TUGboat/tb43-1/tb133talbot-bib2gls-reorder.pdf)
 
 # Installation
 

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/bib2gls-begin.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-authors.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-bacteria.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-chemical.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-citations.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-constants.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-hierarchical.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-markuplanguages.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-maths.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-media.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-msymbols.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-multi1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-multi2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-nested.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-people.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-textsymbols.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-textsymbols2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-units1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-units2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-units3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/bib2gls/examples/sample-usergroups.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/scripts/bib2gls/bib2gls.jar
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/scripts/bib2gls/convertgls2bib.jar
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/scripts/bib2gls/resources/bib2gls-en.xml
===================================================================
--- trunk/Master/texmf-dist/scripts/bib2gls/resources/bib2gls-en.xml	2022-10-15 20:18:37 UTC (rev 64709)
+++ trunk/Master/texmf-dist/scripts/bib2gls/resources/bib2gls-en.xml	2022-10-15 20:19:58 UTC (rev 64710)
@@ -48,6 +48,7 @@
 <entry key="syntax.custom.packages">{0} <list>	Instruct the interpreter to parse the listed packages.</entry>
 <entry key="syntax.list.known.packages">{0}	List the packages known to the interpreter and exit.</entry>
 <entry key="syntax.support.unicode.script">{0}	Text superscripts or subscripts will use Unicode superscript or subscript characters if possible.</entry>
+<entry key="syntax.replace.quotes">{0}	Replace single and double-quotes.</entry>
 <entry key="syntax.force.cross.resource.refs">{1}, {0}	Force cross-resource referencing mode on.</entry>
 
 <entry key="syntax.cite.as.record">{0}	Treat \citation as an ignored record.</entry>
@@ -57,6 +58,7 @@
 <entry key="syntax.merge.nameref.on">{0} <rule>	Rule for merging locations with record=nameref. <rule> may be one of: ''hcounter'', ''href'', ''title'' or ''location''.</entry>
 
 <entry key="syntax.format.map">{1}, {0} <key>:<value>[,<key>:<value>]*	Set location format mappings.</entry>
+<entry key="syntax.record.count.rule">{1} <rule>, {0} <rule>	Sets record count rule.</entry>
 <entry key="syntax.record.count">{1}, {0}	Add record count fields to entries.</entry>
 <entry key="syntax.record.count.unit">{1}, {0}	Add unit record count fields to entries.</entry>
 
@@ -79,6 +81,7 @@
 <entry key="syntax.expand.fields">{0}	Allow field expansion to occur when LaTeX inputs the glstex file.</entry>
 <entry key="syntax.provide.glossaries">{0}	Define any unknown glossaries with \provideignoredglossary*.</entry>
 
+<!-- These are messages used by the TeX Parser Library -->
 <entry key="message.reading">Reading {0}</entry>
 <entry key="message.writing">Writing {0}</entry>
 <entry key="message.no.read">No read access for {0}</entry>
@@ -87,7 +90,12 @@
 <entry key="message.processing">Processing {0}</entry>
 <entry key="message.copying">Copying {0} -> {1}</entry>
 <entry key="message.moving">Moving {0} -> {1}</entry>
+<entry key="message.charset">Encoding: {0}</entry>
+
+<!-- bib2gls messages -->
+<entry key="message.repruning">Pruning iteration {0}/{1}</entry>
 <entry key="message.crossref.found">Entry {0}: found cross-reference ({1}): {2}</entry>
+<entry key="message.crossref.pruned">Entry {0}: pruned cross-reference ({1}): {2}</entry>
 <entry key="message.compoundcrossref.found">Entry {0}: found compound cross-reference ({1}): {2}</entry>
 <entry key="message.crossref.by">Entry {0} cross-referenced by {1}</entry>
 <entry key="message.compoundcrossref.by">Compound entry {0} cross-referenced by {1}</entry>
@@ -190,11 +198,13 @@
 <entry key="message.calc.text.width">Calculating width of name field for entry ''{0}''</entry>
 <entry key="message.calc.text.width.result">Calculated width of ''{0}'': {1,number}</entry>
 <entry key="message.parsing.code">Parsing code block:</entry>
+<entry key="message.parsing.args">Parsing command line arguments</entry>
+<entry key="message.nomfirstuc.protect">No sentence case protection required now</entry>
+<entry key="message.default.arg">Default setting {0} now applied, use {1} to revert</entry>
 <entry key="message.unknown.tex.charset">Unable to detect character encoding for TeX file.
 Defaulting to: {0}.
 (Use {1} if this is incorrect.)</entry>
 <entry key="message.tex.charset">TeX character encoding: {0}</entry>
-<entry key="message.charset">Encoding: {0}</entry>
 <entry key="message.detected.charset">Detected encoding: {0}</entry>
 <entry key="message.default.charset">Default encoding: {0}</entry>
 <entry key="message.null">not set</entry>
@@ -201,11 +211,17 @@
 <entry key="message.detected.fontenc">Detected font encoding: {0}</entry>
 <entry key="message.missing.id">id missing</entry>
 <entry key="message.default.locale">Default document locale: {0} {1}</entry>
+<entry key="message.detected.sty">Detected package {0} {1}</entry>
 <entry key="message.adding.record">Adding record {0} to entry {1}''s record list.</entry>
+<entry key="message.adding.primary.record">Adding primary record {0} to entry {1}''s record list.</entry>
 <entry key="message.adding.supplemental.record">Adding supplemental record {0} to entry {1}''s record list.</entry>
 <entry key="message.adding.counter.record">Adding record {0} to entry {1}''s {2} record list.</entry>
+<entry key="message.adding.counter.primary.record">Adding primary record {0} to entry {1}''s {2} record list.</entry>
 <entry key="message.copying.record">Copying record {0} from entry {1} to entry {2}.</entry>
+<entry key="message.copying.primary.record">Copying primary record {0} from entry {1} to entry {2}.</entry>
 <entry key="message.ignored.record">Ignoring record {0}.</entry>
+<entry key="message.empty.location.ignored">Converting empty location to ignored record
+  (label: ''{0}'', counter: ''{1}'', encap: ''{2}'')</entry>
 <entry key="message.clearing.records">Clearing entry {0}''s record list.</entry>
 <entry key="message.normalizing">Normalising {0} to {1}.</entry>
 <entry key="message.norm.distinct">Normalized {0} distinct from {1}.</entry>
@@ -254,8 +270,14 @@
 <entry key="grouptitle.case.ij">IJ</entry>
 
 <entry key="warning.title">Warning: {0}</entry>
+
+<!-- These are warning strings from the TeX Parser Library -->
 <entry key="warning.substituting">Substituting {0} with {1}</entry>
 <entry key="warning.removing">Removing {0}</entry>
+<entry key="warning.unsupported.image.type">Unsupported image type {0}</entry>
+<entry key="warning.unsupported.generic">Not supported: {0}</entry>
+
+<!-- bib2gls warnings -->
 <entry key="warning.cant.parse.file">Can''t parse {0}
 {1}</entry>
 <entry key="warning.ignoring.unknown.entry.type">Ignoring unknown entry type: {0}</entry>
@@ -283,7 +305,7 @@
 Consider using a dual entry or add ''{2}'' to one of the cross-referencing fields instead.
 (With a dual entry type, you don''t need to link a primary to its dual
 with \glsadd. They are automatically dependent on each other.)</entry>
-<entry key="warning.dir.no.write">Directory not writable: {0}
+<entry key="warning.dir.no.write">Directory not writeable: {0}
 Using TEXMFOUTPUT instead: {1}</entry>
 <entry key="warning.conflicting.range.format">Entry location conflict for formats: {0} and {1}
 Replacing {1} with {2}</entry>
@@ -338,6 +360,10 @@
 <entry key="warning.unknown_entry_in_current_resource">Unknown entry ''{0}'' in current resource set: {1}</entry>
 <entry key="warning.unknown_compound_label">Unknown compound entry ''{0}''.</entry>
 <entry key="warning.unknown_compound_label.in_entry">Unknown compound entry ''{0}'' referenced in entry ''{1}''.</entry>
+<entry key="warning.max-prune-iteration-cap">Maximum value of ''{0}'' exceeded. Capping at {1}.</entry>
+<entry key="warning.exclusions.unknown.token">Unknown token in exclusion list: {0}</entry>
+<entry key="warning.blockers.unknown.token">Unknown token in blocker list: {0}</entry>
+<entry key="warning.mappings.cant.parse">Can''t parse mapping list: {0}</entry>
 
 <entry key="error.title">Error: {0}</entry>
 <entry key="error.alias.map.forbidden">The 'alias' field can't be mapped.</entry>
@@ -360,6 +386,7 @@
 <entry key="error.dir.not.found">Directory not found: {0}</entry>
 <entry key="error.not.dir">Not a directory: {0}</entry>
 <entry key="error.cant.open.log">Can''t open log file: {0}</entry>
+<entry key="error.invalid.record.count.rule">Invalid record count rule: {0}</entry>
 <entry key="error.invalid.id">Invalid or missing id
 {0}</entry>
 <entry key="error.invalid.sort.value">Invalid sort method ''{0}'' given in option: {1}</entry>
@@ -556,6 +583,7 @@
 <entry key="latex.error.undefined_counter">No counter ''{0}'' defined</entry>
 <entry key="latex.error.multi_begin_doc">Only one \begin'{document}' permitted</entry>
 <entry key="latex.error.no_begin_doc">No \begin'{document}' found</entry>
+<entry key="latex.error.missing_begin_doc">Missing \begin'{'document'}' (unexpected content ''{0}'')</entry>
 <entry key="latex.error.multi_cls">Only one \documentclass permitted</entry>
 <entry key="latex.error.missing_key">Missing ''{0}'' key</entry>
 <entry key="latex.error.extra_end">Extra \end'{'{0}'}' found</entry>

Modified: trunk/Master/texmf-dist/scripts/bib2gls/texparserlib.jar
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls-begin.tex
===================================================================
--- trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls-begin.tex	2022-10-15 20:18:37 UTC (rev 64709)
+++ trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls-begin.tex	2022-10-15 20:19:58 UTC (rev 64710)
@@ -427,7 +427,7 @@
 \newcommand{\addr}[1]{\\\href{https://www.#1/}{\nolinkurl{#1}}}
 \title{\styfmt{glossaries-extra} and \bibgls: An Introductory Guide}
 \author{Nicola Talbot\addr{dickimaw-books.com}}
-\date{\DTMusedate{moddate}}
+\input{version}
 
 \makeatletter
 \begingroup

Modified: trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls-src.zip
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls-terms.bib
===================================================================
--- trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls-terms.bib	2022-10-15 20:18:37 UTC (rev 64709)
+++ trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls-terms.bib	2022-10-15 20:19:58 UTC (rev 64710)
@@ -435,7 +435,7 @@
 }
 
 @entry{compoundentry,
-   name={compound \MFUskippunc(combined or multi) entry},
+   name={compound (combined or multi) entry},
    text={compound entry},
    plural={compound entries},
    description={A compound entry corresponds to the \ics{multiglossaryentry} 
@@ -448,7 +448,7 @@
 }
 
 @entry{compmainlabel,
-  name = {main label or element \MFUskippunc(compound entry)},
+  name = {main label or element (compound entry)},
   text = {main label},
   description = {The main element in the set that defines a 
   \gls{compoundentry}.}
@@ -455,7 +455,7 @@
 }
 
 @entry{compotherlabel,
-  name = {other label or element \MFUskippunc(compound entry)},
+  name = {other label or element (compound entry)},
   text = {other label},
   description = {The non-\glslink{compmainlabel}{main} elements in the 
   set that defines a \gls{compoundentry}.}

Modified: trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls.bib
===================================================================
--- trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls.bib	2022-10-15 20:18:37 UTC (rev 64709)
+++ trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls.bib	2022-10-15 20:19:58 UTC (rev 64710)
@@ -959,6 +959,43 @@
   category={command}
 }
 
+ at bibglscommand{bibglssettotalrecordcount,
+  name={\csfmt{bib\-gls\-set\-total\-record\-count}},
+  user1={\margm{entry-label}\margm{value}},
+  description={sets the total record count for the given entry},
+  topics={assigncommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglssetrecordcount,
+  name={\csfmt{bib\-gls\-set\-record\-count}},
+  user1={\margm{entry-label}\margm{counter}\margm{value}},
+  description={sets the \meta{counter} record count for the given entry},
+  topics={assigncommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglssetlocationrecordcount,
+  name={\csfmt{bib\-gls\-set\-location\-record\-count}},
+  user1={\margm{entry-label}\margm{counter}\margm{location}\margm{value}},
+  description={sets the location record count for the given entry},
+  topics={assigncommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at glscommand{glsxtrdetoklocation,
+  name={\csfmt{gls\-xtr\-de\-tok\-location}},
+  user1={\margm{location}},
+  description={may be used to detokenize problematic locations, but
+just does its argument by default},
+  note={\styfmt{glossaries-extra} v1.21+},
+  topics={assigncommands},
+  category={command}
+}
+
 @bibglscommand{bibglslocationgroup,
   name={\csfmt{bib\-gls\-location\-group}},
   user1={\margm{n}\margm{counter}\margm{list}},
@@ -977,6 +1014,24 @@
   category={command}
 }
 
+ at bibglscommand{bibglsprimarylocationgroup,
+  name={\csfmt{bib\-gls\-primary\-location\-group}},
+  user1={\margm{n}\margm{counter}\margm{list}},
+  description={primary location group encapsulator},
+  topics={glossarystylecommands,loclistcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsprimarylocationgroupsep,
+  name={\csfmt{bib\-gls\-primary\-location\-group\-sep}},
+  user1={},
+  description={primary location group separator},
+  topics={glossarystylecommands,loclistcommands,separatorcommands},
+  note={\bibgls},
+  category={command}
+}
+
 @bibglscommand{bibglssupplemental,
   name={\csfmt{bib\-gls\-supple\-mental}},
   user1={\margm{n}\margm{list}},
@@ -1032,15 +1087,6 @@
   category={command}
 }
 
- at bibglscommand{bibglssetlettergrouptitle,
-  name={\csfmt{bib\-gls\-set\-letter\-group\-title}},
-  user1={\marg{\margm{title}\margm{letter}\margm{id}\margm{type}}},
-  description={sets the letter group title},
-  topics={glossarystylecommands,assigncommands,groupcommands},
-  note={\bibgls},
-  category={command}
-}
-
 @mainglscommand{glsxtrsetgrouptitle,
   name={\csfmt{gls\-xtr\-set\-group\-title}},
   user1={\margm{group label}\margm{group title}},
@@ -1059,6 +1105,36 @@
   category={command}
 }
 
+ at bibglscommand{bibglsgrouplevel,
+  name={\csfmt{bib\-gls\-group\-level}},
+  user1={\margm{label}{n}},
+  description={expands to the group label for hierarchical level \meta{n}
+  where \meta{label} is the label that would normally be applied to
+  level~0},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglshiersubgrouptitle,
+  name={\csfmt{bib\-gls\-hier\-sub\-group\-title}},
+  user1={\marg{level}\marg{parent}\marg{title}},
+  description={formats the title for a hierarchical group where the
+   normal non-hierarchical title would be \meta{title}},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglssetlettergrouptitle,
+  name={\csfmt{bib\-gls\-set\-letter\-group\-title}},
+  user1={\marg{\margm{title}\margm{letter}\margm{id}\margm{type}}},
+  description={sets the letter group title},
+  topics={glossarystylecommands,assigncommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
 @bibglscommand{bibglslettergroup,
   name={\csfmt{bib\-gls\-letter\-group}},
   user1={\margm{title}\margm{letter}\margm{id}\margm{type}},
@@ -1077,6 +1153,33 @@
   category={command}
 }
 
+ at bibglscommand{bibglssetlettergrouptitlehier,
+  name={\csfmt{bib\-gls\-set\-letter\-group\-title\-hier}},
+  user1={\marg{\margm{title}\margm{letter}\margm{id}\margm{type}\margm{parent}\margm{level}}},
+  description={sets the hierarchical letter group title},
+  topics={glossarystylecommands,assigncommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglslettergrouphier,
+  name={\csfmt{bib\-gls\-letter\-group\-hier}},
+  user1={\margm{title}\margm{letter}\margm{id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical letter group label},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglslettergrouptitlehier,
+  name={\csfmt{bib\-gls\-letter\-group\-title\-hier}},
+  user1={\margm{title}\margm{letter}\margm{id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical letter group title},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
 @bibglscommand{bibglssetothergrouptitle,
   name={\csfmt{bib\-gls\-set\-other\-group\-title}},
   user1={\marg{\margm{character}\margm{id}\margm{type}}},
@@ -1104,6 +1207,33 @@
   category={command}
 }
 
+ at bibglscommand{bibglssetothergrouptitlehier,
+  name={\csfmt{bib\-gls\-set\-other\-group\-title\-hier}},
+  user1={\marg{\margm{character}\margm{id}\margm{type}\margm{parent}\margm{level}}},
+  description={sets the hierarchical non-letter group title},
+  topics={glossarystylecommands,assigncommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsothergrouphier,
+  name={\csfmt{bib\-gls\-other\-group\-hier}},
+  user1={\margm{character}\margm{id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical non-letter group label},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsothergrouptitlehier,
+  name={\csfmt{bib\-gls\-other\-group\-title\-hier}},
+  user1={\margm{character}\margm{id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical non-letter group title},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
 @bibglscommand{bibglssetemptygrouptitle,
   name={\csfmt{bib\-gls\-set\-empty\-group\-title}},
   user1={\marg{\margm{type}}},
@@ -1131,11 +1261,38 @@
   category={command}
 }
 
+ at bibglscommand{bibglssetemptygrouptitlehier,
+  name={\csfmt{bib\-gls\-set\-empty\-group\-title\-hier}},
+  user1={\marg{\margm{type}\margm{parent}\margm{level}}},
+  description={sets the hierarchical empty group title},
+  topics={glossarystylecommands,assigncommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsemptygrouphier,
+  name={\csfmt{bib\-gls\-empty\-group\-hier}},
+  user1={\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical empty group label},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsemptygrouptitlehier,
+  name={\csfmt{bib\-gls\-empty\-group\-title\-hier}},
+  user1={\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical empty group title},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
 @bibglscommand{bibglssetunicodegrouptitle,
   name={\csfmt{bib\-gls\-set\-unicode\-group\-title}},
   user1={\marg{\margm{label}\margm{character}\margm{id}\margm{type}}},
   description={sets the Unicode script, category or character code
-title},
+group title},
   topics={glossarystylecommands,assigncommands,groupcommands},
   note={\bibgls},
   category={command}
@@ -1144,8 +1301,8 @@
 @bibglscommand{bibglsunicodegroup,
   name={\csfmt{bib\-gls\-unicode\-group}},
   user1={\margm{label}\margm{character}\margm{id}\margm{type}},
-  description={expands to the Unicode script or category label or
-character code},
+  description={expands to the Unicode script or category or
+character code group label},
   note={\bibgls},
   topics={glossarystylecommands,groupcommands},
   category={command}
@@ -1154,13 +1311,43 @@
 @bibglscommand{bibglsunicodegrouptitle,
   name={\csfmt{bib\-gls\-unicode\-group\-title}},
   user1={\margm{label}\margm{character}\margm{id}\margm{type}},
-  description={expands to the Unicode script or category label or
-character code},
+  description={expands to the Unicode script or category or
+character code group label},
   topics={glossarystylecommands,groupcommands},
   note={\bibgls},
   category={command}
 }
 
+ at bibglscommand{bibglssetunicodegrouptitlehier,
+  name={\csfmt{bib\-gls\-set\-unicode\-group\-title\-hier}},
+  user1={\marg{\margm{label}\margm{character}\margm{id}\margm{type}\margm{parent}\margm{level}}},
+  description={sets the Unicode script, category or character code
+ hierarchical group title},
+  topics={glossarystylecommands,assigncommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsunicodegrouphier,
+  name={\csfmt{bib\-gls\-unicode\-group\-hier}},
+  user1={\margm{label}\margm{character}\margm{id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the Unicode script or category or
+character code hierarchical group label},
+  note={\bibgls},
+  topics={glossarystylecommands,groupcommands},
+  category={command}
+}
+
+ at bibglscommand{bibglsunicodegrouptitlehier,
+  name={\csfmt{bib\-gls\-unicode\-group\-title\-hier}},
+  user1={\margm{label}\margm{character}\margm{id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the Unicode script or category or
+character code hierarchical group label},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
 @bibglscommand{bibglssetnumbergrouptitle,
   name={\csfmt{bib\-gls\-set\-number\-group\-title}},
   user1={\marg{\margm{value}\margm{id}\margm{type}}},
@@ -1188,6 +1375,106 @@
   category={command}
 }
 
+ at bibglscommand{bibglssetnumbergrouptitlehier,
+  name={\csfmt{bib\-gls\-set\-number\-group\-title\-hier}},
+  user1={\marg{\margm{value}\margm{id}\margm{type}\margm{parent}\margm{level}}},
+  description={sets the hierarchical number group title},
+  topics={glossarystylecommands,assigncommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsnumbergrouphier,
+  name={\csfmt{bib\-gls\-number\-group\-hier}},
+  user1={\margm{value}\margm{id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical number group label},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsnumbergrouptitlehier,
+  name={\csfmt{bib\-gls\-number\-group\-title\-hier}},
+  user1={\margm{value}\margm{id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical number group title},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglssetmergedgrouptitle,
+  name={\csfmt{bib\-gls\-set\-merged\-group\-title}},
+  user1={\marg{\margm{id}\margm{type}\margm{n}\margm{g$_1$}\marg{\meta{g$_2$}\ldots\marg{g$_{n-1}$}}\margm{g$_n$}}},
+  description={sets the merged group title},
+  topics={glossarystylecommands,assigncommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsmergedgroup,
+  name={\csfmt{bib\-gls\-merged\-group}},
+  user1={\margm{id}\margm{type}\margm{n}\margm{g$_1$}\marg{\meta{g$_2$}\ldots\marg{g$_{n-1}$}}\margm{g$_n$}},
+  description={expands to the merged group label},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsmergedgrouptitle,
+  name={\csfmt{bib\-gls\-merged\-group\-title}},
+  user1={\margm{id}\margm{type}\margm{n}\margm{g$_1$}\marg{\meta{g$_2$}\ldots\marg{g$_{n-1}$}}\margm{g$_n$}},
+  description={expands to the merged group title},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsmergedgroupfmt,
+  name={\csfmt{bib\-gls\-merged\-group\-fmt}},
+  user1={\margm{n}\margm{g$_1$}\marg{\meta{g$_2$}\ldots\marg{g$_{n-1}$}}\margm{g$_n$}},
+  description={used by \gls{bibglsmergedgrouptitle} and
+    \gls{bibglsmergedgrouphierfmt} to format the title},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsmergedgrouphierfmt,
+  name={\csfmt{bib\-gls\-merged\-group\-hier\-fmt}},
+  user1={\margm{n}\margm{g$_1$}\marg{\meta{g$_2$}\ldots\marg{g$_{n-1}$}}\margm{g$_n$}},
+  description={used by \gls{bibglsmergedgrouptitlehier} to format the title},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglssetmergedgrouptitlehier,
+  name={\csfmt{bib\-gls\-set\-merged\-group\-title\-hier}},
+  user1={\marg{\margm{id}\margm{type}\margm{n}\margm{g$_1$}\marg{\meta{g$_2$}\ldots\marg{g$_{n-1}$}}\margm{g$_n$}\margm{parent}\margm{level}}},
+  description={sets the merged  hierarchicalgroup title},
+  topics={glossarystylecommands,assigncommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsmergedgrouphier,
+  name={\csfmt{bib\-gls\-merged\-group\-hier}},
+  user1={\margm{id}\margm{type}\margm{n}\margm{g$_1$}\marg{\meta{g$_2$}\ldots\marg{g$_{n-1}$}}\margm{g$_n$}\margm{parent}\margm{level}},
+  description={expands to the merged hierarchical group label},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsmergedgrouptitlehier,
+  name={\csfmt{bib\-gls\-merged\-group\-title\-hier}},
+  user1={\margm{id}\margm{type}\margm{n}\margm{g$_1$}\marg{\meta{g$_2$}\ldots\marg{g$_{n-1}$}}\margm{g$_n$}\margm{parent}\margm{level}},
+  description={expands to the merged hierarchical group title},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
 @bibglscommand{bibglssetdatetimegrouptitle,
   name={\csfmt{bib\-gls\-set\-date\-time\-group\-title}},
   user1={\marg{\margm{YYYY}\margm{MM}\margm{DD}\margm{hh}\margm{mm}\margm{ss}\margm{zone}\margm{title}\margm{group\dhyphen id}\margm{type}}},
@@ -1215,6 +1502,53 @@
   category={command}
 }
 
+ at bibglscommand{bibglssetdatetimegrouptitlehier,
+  name={\csfmt{bib\-gls\-set\-date\-time\-group\-title\-hier}},
+  user1={\marg{\margm{YYYY}\margm{MM}\margm{DD}\margm{hh}\margm{mm}\margm{ss}\margm{zone}\margm{title}\margm{group\dhyphen id}\margm{type}\margm{parent}\margm{level}}},
+  description={sets the hierarchical date-time group title},
+  topics={glossarystylecommands,assigncommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsdatetimegrouphier,
+  name={\csfmt{bib\-gls\-date\-time\-group\-hier}},
+  user1={\margm{YYYY}\margm{MM}\margm{DD}\margm{hh}\margm{mm}\margm{ss}\margm{zone}\margm{title}\margm{group\dhyphen id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical date-time group label},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsdatetimegrouptitlehier,
+  name={\csfmt{bib\-gls\-date\-time\-group\-title\-hier}},
+  user1={\margm{YYYY}\margm{MM}\margm{DD}\margm{hh}\margm{mm}\margm{ss}\margm{zone}\margm{title}\margm{group\dhyphen id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical date-time group title},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsdatetimegrouphierfinalargs,
+  name={\csfmt{bib\-gls\-date\-time\-group\-hier\-final\-args}},
+  user1={\margm{type}\margm{parent}\margm{level}},
+  description={used as a supporting command for
+\gls{bibglsdatetimegrouphier} to pick up the final arguments},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsdatetimegrouptitlehierfinalargs,
+  name={\csfmt{bib\-gls\-date\-time\-group\-title\-hier\-final\-args}},
+  user1={\marg{date}\margm{type}\margm{parent}\margm{level}},
+  description={used as a supporting command for
+\gls{bibglsdatetimegrouptitlehier} to pick up the final arguments},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
 @bibglscommand{bibglssetdategrouptitle,
   name={\csfmt{bib\-gls\-set\-date\-group\-title}},
   user1={\marg{\margm{YYYY}\margm{MM}\margm{DD}\margm{G}\margm{title}\margm{group\dhyphen id}\margm{type}}},
@@ -1242,6 +1576,33 @@
   category={command}
 }
 
+ at bibglscommand{bibglssetdategrouptitlehier,
+  name={\csfmt{bib\-gls\-set\-date\-group\-title\-hier}},
+  user1={\marg{\margm{YYYY}\margm{MM}\margm{DD}\margm{G}\margm{title}\margm{group\dhyphen id}\margm{type}\margm{parent}\margm{level}}},
+  description={sets the hierarchical date (no time) group title},
+  topics={glossarystylecommands,assigncommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsdategrouphier,
+  name={\csfmt{bib\-gls\-date\-group\-hier}},
+  user1={\margm{YYYY}\margm{MM}\margm{DD}\margm{G}\margm{title}\margm{group\dhyphen id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical date group label},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglsdategrouptitlehier,
+  name={\csfmt{bib\-gls\-date\-group\-title\-hier}},
+  user1={\margm{YYYY}\margm{MM}\margm{DD}\margm{G}\margm{title}\margm{group\dhyphen id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical date group title},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
 @bibglscommand{bibglssettimegrouptitle,
   name={\csfmt{bib\-gls\-set\-time\-group\-title}},
   user1={\marg{\margm{hh}\margm{mm}\margm{ss}\margm{zone}\margm{title}\margm{group\dhyphen id}\margm{type}}},
@@ -1269,6 +1630,33 @@
   category={command}
 }
 
+ at bibglscommand{bibglssettimegrouptitlehier,
+  name={\csfmt{bib\-gls\-set\-time\-group\-title\-hier}},
+  user1={\marg{\margm{hh}\margm{mm}\margm{ss}\margm{zone}\margm{title}\margm{group\dhyphen id}\margm{type}\margm{parent}\margm{level}}},
+  description={sets the hierarchical time (no date) group title},
+  topics={glossarystylecommands,assigncommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglstimegrouphier,
+  name={\csfmt{bib\-gls\-time\-group\-hier}},
+  user1={\margm{hh}\margm{mm}\margm{ss}\margm{zone}\margm{title}\margm{group\dhyphen id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical time group label},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
+ at bibglscommand{bibglstimegrouptitlehier,
+  name={\csfmt{bib\-gls\-time\-group\-title\-hier}},
+  user1={\margm{hh}\margm{mm}\margm{ss}\margm{zone}\margm{title}\margm{group\dhyphen id}\margm{type}\margm{parent}\margm{level}},
+  description={expands to the hierarchical time group title},
+  topics={glossarystylecommands,groupcommands},
+  note={\bibgls},
+  category={command}
+}
+
 @bibglscommand{bibglshypergroup,
   name={\csfmt{bib\-gls\-hyper\-group}},
   user1={\margm{type}\margm{group\dhyphen id}},
@@ -1431,12 +1819,30 @@
 @bibglscommand{bibglshashchar,
   name={\csfmt{bib\-gls\-hash\-char}},
   user1={},
-  description={expands to a literal hash character},
+  description={expands to a literal hash character \idx{hashchar}},
   topics={charcommands},
   note={\bibgls\texparserdefnote},
   category={command}
 }
 
+ at bibglscommand{bibglsaposchar,
+  name={\csfmt{bib\-gls\-apos\-char}},
+  user1={},
+  description={expands to a single-quote (\idx{aposchar}) character},
+  topics={charcommands},
+  note={\bibgls\texparserdefnote},
+  category={command}
+}
+
+ at bibglscommand{bibglsdoublequotechar,
+  name={\csfmt{bib\-gls\-double\-quote\-char}},
+  user1={},
+  description={expands to a double-quote (\idx{doublequotechar}) character},
+  topics={charcommands},
+  note={\bibgls\texparserdefnote},
+  category={command}
+}
+
 @bibglscommand{bibglsunderscorechar,
   name={\csfmt{bib\-gls\-under\-score\-char}},
   user1={},
@@ -2621,6 +3027,21 @@
    parent={resourceoptions}
 }
 
+ at resourceoption{opt.group-level,
+   name={\csoptfmt{group\dhyphen level}},
+   user1={\meta{value}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.merge-small-groups,
+   name={\csoptfmt{merge\dhyphen small\dhyphen groups}},
+   user1={\meta{n}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+
 @resourceoption{opt.group-formation,
    name={\csoptfmt{group\dhyphen formation}},
    user1={\meta{value}},
@@ -2656,6 +3077,13 @@
    parent={resourceoptions}
 }
 
+ at resourceoption{opt.save-root-ancestor,
+   name={\csoptfmt{save\dhyphen root\dhyphen ancestor}},
+   user1={\meta{boolean}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
 @resourceoption{opt.save-original-entrytype,
    name={\csoptfmt{save\dhyphen original\dhyphen entrytype}},
    user1={\meta{value}},
@@ -2686,7 +3114,7 @@
 
 @resourceoption{opt.save-locations,
    name={\csoptfmt{save\dhyphen locations}},
-   user1={\meta{boolean}},
+   user1={\meta{value}},
    category={resourceoption},
    parent={resourceoptions}
 }
@@ -2726,6 +3154,20 @@
    parent={resourceoptions}
 }
 
+ at resourceoption{opt.primary-loc-counters,
+   name={\csoptfmt{primary\dhyphen loc\dhyphen counters}},
+   user1={\meta{value}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.principal-loc-counters,
+   name={\csoptfmt{principal\dhyphen loc\dhyphen counters}},
+   user1={\meta{value}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
 @resourceoption{opt.min-loc-range,
    name={\csoptfmt{min\dhyphen loc\dhyphen range}},
    user1={\meta{value}},
@@ -2782,6 +3224,48 @@
    parent={resourceoptions}
 }
 
+ at resourceoption{opt.prune-xr,
+   name={\csoptfmt{prune\dhyphen xr}},
+   user1={\meta{boolean}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.prune-see-op,
+   name={\csoptfmt{prune\dhyphen see\dhyphen op}},
+   user1={\meta{value}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.prune-seealso-op,
+   name={\csoptfmt{prune\dhyphen see\dhyphen op}},
+   user1={\meta{value}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.prune-see-match,
+   name={\csoptfmt{prune\dhyphen see\dhyphen match}},
+   user1={\meta{\keyvallist}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.prune-seealso-match,
+   name={\csoptfmt{prune\dhyphen seealso\dhyphen match}},
+   user1={\meta{\keyvallist}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.prune-iterations,
+   name={\csoptfmt{prune\dhyphen iterations}},
+   user1={\meta{number}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
 @resourceoption{opt.alias-loc,
    name={\csoptfmt{alias\dhyphen loc}},
    user1={\meta{value}},
@@ -2796,6 +3280,13 @@
    parent={resourceoptions}
 }
 
+ at resourceoption{opt.loc-prefix-def,
+   name={\csoptfmt{loc\dhyphen prefix\dhyphen def}},
+   user1={\meta{value}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
 @resourceoption{opt.loc-suffix,
    name={\csoptfmt{loc\dhyphen suffix}},
    user1={\meta{value}},
@@ -2803,6 +3294,13 @@
    parent={resourceoptions}
 }
 
+ at resourceoption{opt.loc-suffix-def,
+   name={\csoptfmt{loc\dhyphen suffix\dhyphen def}},
+   user1={\meta{value}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
 @resourceoption{opt.loc-counters,
    name={\csoptfmt{loc\dhyphen counters}},
    user1={\meta{list}},
@@ -2985,6 +3483,69 @@
    parent={resourceoptions}
 }
 
+ at resourceoption{opt.break-at-match,
+   name={\csoptfmt{break\dhyphen at\dhyphen match}},
+   user1={\meta{\keyvallist}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.break-at-not-match,
+   name={\csoptfmt{break\dhyphen at\dhyphen not\dhyphen match}},
+   user1={\meta{\keyvallist}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.break-at-match-op,
+   name={\csoptfmt{break\dhyphen at\dhyphen match\dhyphen op}},
+   user1={\meta{value}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.dual-break-at-match,
+   name={\csoptfmt{dual\dhyphen break\dhyphen at\dhyphen match}},
+   user1={\meta{\keyvallist}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.dual-break-at-not-match,
+   name={\csoptfmt{dual\dhyphen break\dhyphen at\dhyphen not\dhyphen match}},
+   user1={\meta{\keyvallist}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.dual-break-at-match-op,
+   name={\csoptfmt{dual\dhyphen break\dhyphen at\dhyphen match\dhyphen op}},
+   user1={\meta{value}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.secondary-break-at-match,
+   name={\csoptfmt{secondary\dhyphen break\dhyphen at\dhyphen match}},
+   user1={\meta{\keyvallist}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.secondary-break-at-not-match,
+   name={\csoptfmt{secondary\dhyphen break\dhyphen at\dhyphen not\dhyphen match}},
+   user1={\meta{\keyvallist}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
+ at resourceoption{opt.secondary-break-at-match-op,
+   name={\csoptfmt{secondary\dhyphen break\dhyphen at\dhyphen match\dhyphen op}},
+   user1={\meta{value}},
+   category={resourceoption},
+   parent={resourceoptions}
+}
+
 @resourceoption{opt.identical-sort-action,
    name={\csoptfmt{identical\dhyphen sort\dhyphen action}},
    user1={\meta{value}},
@@ -8603,6 +9164,14 @@
   parent={internalfields}
 }
 
+ at field{field.rootancestor,
+  name={\fieldfmt{rootancestor}},
+  description={Stores the label of this entry's root ancestor.},
+  note={internal field set by \appfmt{bib2gls}},
+  category={internalfield},
+  parent={internalfields}
+}
+
 @field{field.definitionindex,
   name={\fieldfmt{definitionindex}},
   description={Stores the definition index.},
@@ -8840,6 +9409,14 @@
   parent={internalfields}
 }
 
+ at field{field.indexed,
+  name={\fieldfmt{indexed}},
+  description={The value is incremented everytime the entry is indexed.},
+  note={internal field set by \styfmt{glossaries-extra} v1.49+},
+  category={baseinternalfield},
+  parent={internalfields}
+}
+
 @field{field.desc,
   name={\fieldfmt{desc}},
   description={Corresponds to \field{description} key.},
@@ -8909,6 +9486,14 @@
   parent={fields}
 }
 
+ at field{field.prenumberlist,
+  name={\fieldfmt{prenumberlist}},
+  description={set by the \field{nonumberlist} entry key with \cs{makenoidxglossaries}},
+  note={internal field set by \styfmt{glossaries}},
+  category={baseinternalfield},
+  parent={internalfields}
+}
+
 @field{field.prevcount,
   name={\fieldfmt{prevcount}},
   description={Used with entry counting to store the total 
@@ -9517,6 +10102,20 @@
   parent={commandlineoptions}
 }
 
+ at switch{switch.replace-quotes,
+  name={\longargfmt{replace\dhyphen quotes}},
+  user1={},
+  category={switch},
+  parent={commandlineoptions}
+}
+
+ at switch{switch.no-replace-quotes,
+  name={\longargfmt{no\dhyphen replace\dhyphen quotes}},
+  user1={},
+  category={switch},
+  parent={commandlineoptions}
+}
+
 @switch{switch.packages,
   name={\longargfmt{packages}},
   symbol={\shortargfmt{p}},
@@ -9653,6 +10252,14 @@
   parent={commandlineoptions}
 }
 
+ at switch{switch.record-count-rule,
+  name={\longargfmt{record\dhyphen count\dhyphen rule}},
+  symbol={\shortargfmt{r}},
+  user1={\marg{rule}},
+  category={switch},
+  parent={commandlineoptions}
+}
+
 @switch{switch.record-count,
   name={\longargfmt{record\dhyphen count}},
   symbol={\shortargfmt{c}},
@@ -12982,7 +13589,7 @@
 @glsaddoption{glsadd.format,
   name={\csoptfmt{format}},
   user1={\margm{encap}},
-  description={sets the \gls{encap} for the record to 
+  description={sets the \idx{encap} for the record to 
   \meta{encap}, optionally with the start or end range markers},
   category={commandoption},
   note={\styfmt{glossaries}},
@@ -14148,6 +14755,14 @@
   category={command}
 }
 
+ at glscommand{glshashchar,
+  name={\csfmt{glshashchar}},
+  description={expands to a literal hash character \idx{hashchar}},
+  topics={charcommands},
+  note={\styfmt{glossaries-extra-bib2gls}\texparserdefnote\ v1.49+},
+  category={command}
+}
+
 @glscommand{GlsXtrBibTeXEntryAliases,
   name={\csfmt{Gls\-Xtr\-Bib\-TeX\-Entry\-Aliases}},
   user1={},
@@ -14818,7 +15433,7 @@
   name={\csoptfmt{format}},
   user1={\margm{encap}},
   category={commandoption},
-  description={sets the \gls{encap} for the record to 
+  description={sets the \idx{encap} for the record to 
   \meta{encap}, optionally with the start or end range markers},
   note={\styfmt{glossaries}},
   parent={glslink}
@@ -16629,7 +17244,7 @@
 @glscommand{glsxtrglossentryother,
   name={\csfmt{gls\-xtr\-gloss\-entry\-other}},
   user1={\margm{header}\margm{label}\margm{field}},
-  description={like \gls{glsxtrglossentry} but uses the value given
+  description={like \cs{glsxtrglossentry} but uses the value given
 in the supplied internal \meta{field} where \meta{header} is the
 code
 to use in the header (leave empty for default)},
@@ -16949,8 +17564,8 @@
 
 @glscommand{GlsXtrStandaloneGlossaryType,
   name={\csfmt{Gls\-Xtr\-Stand\-alone\-Glossary\-Type}},
-  description={expands to the label for \gls{currentglossary}
-   within \gls{glsxtrglossentry} and \gls{glsxtrglossentryother}},
+  description={expands to the label for \ics{currentglossary}
+   within \ics{glsxtrglossentry} and \ics{glsxtrglossentryother}},
   topics={hooks,glossrefs,standalonestyles},
   note={\styfmt{glossaries-extra} v1.31+},
   category={command}
@@ -16959,8 +17574,8 @@
 @glscommand{GlsXtrStandaloneSubEntryItem,
   name={\csfmt{Gls\-Xtr\-Stand\-alone\-Sub\-Entry\-Item}},
   user1 = {\margm{label}},
-  description={used within \gls{glsxtrglossentry} and
-\gls{glsxtrglossentryother} to display sub-item labels},
+  description={used within \ics{glsxtrglossentry} and
+\ics{glsxtrglossentryother} to display sub-item labels},
   topics={hooks,glossarystylecommands},
   note={\styfmt{glossaries-extra} v1.31+},
   category={command}
@@ -16969,7 +17584,7 @@
 @glscommand{GlsXtrStandaloneEntryName,
   name={\csfmt{Gls\-Xtr\-Stand\-alone\-Entry\-Name}},
   user1 = {\margm{label}},
-  description={used within \gls{glsxtrglossentry} to
+  description={used within \ics{glsxtrglossentry} to
    display the name (with a hypertarget, if supported)},
   topics={hooks,glossarystylecommands,fieldrefcommands,linkcommands},
   note={\styfmt{glossaries-extra} v1.37+},
@@ -16979,7 +17594,7 @@
 @glscommand{GlsXtrStandaloneEntryOther,
   name={\csfmt{Gls\-Xtr\-Stand\-alone\-Entry\-Other}},
   user1 = {\margm{label}\margm{field}},
-  description={used within \gls{glsxtrglossentryother} to
+  description={used within \ics{glsxtrglossentryother} to
    display the given field value (with a hypertarget, if supported)},
   topics={hooks,glossarystylecommands,fieldrefcommands,linkcommands},
   note={\styfmt{glossaries-extra} v1.37+},

Modified: trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls.pod
===================================================================
--- trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls.pod	2022-10-15 20:18:37 UTC (rev 64709)
+++ trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls.pod	2022-10-15 20:19:58 UTC (rev 64710)
@@ -212,6 +212,10 @@
 subset of fields, set I<fields> to a comma-separated list of fields
 (e.g. B<name,short,long>).  The keyword B<all> indicates all fields.
 
+If F<mfirstuc> v2.08+, F<glossaries> v4.50+ and F<glossaries-extra> v1.49+ 
+are detected, the default will be B<--no-mfirstuc-protection>
+as there should no longer be any need for this protection.
+
 =item B<--no-mfirstuc-protection>
 
 Switch off the auto-insertion of an empty group for all fields.
@@ -219,8 +223,11 @@
 =item B<--mfirstuc-math-protection>
 
 Switch on the auto-insertion of an empty group for math-shift (C<$>).
-This option will be overridden by B<--no-mfirstuc-protection>.
 
+If F<mfirstuc> v2.08+, F<glossaries> v4.50+ and F<glossaries-extra> v1.49+ 
+are detected, the default will be B<--no-mfirstuc-math-protection>
+as there should no longer be any need for this protection.
+
 =item B<--no-mfirstuc-math-protection>
 
 Switch off the auto-insertion of an empty group for math-shift (C<$>).
@@ -258,6 +265,24 @@
 
 Don't add B<group> field to entries (default).
 
+=item B<--record-count-rule> I<rule> or B<-r> I<rule>
+
+Sets the rule used by B<--record-count> and B<--record-count-unit>.
+This option automatically implements B<--record-count>.
+
+The I<rule> may be: C<all> or C<a> (count all records), 
+C<non-ignored> or C<n> (count all non-ignored records), 
+C<f/>I<regex>C</> (only count records where the format 
+matches the regular expression I<regex>),
+C<c/>I<regex>C</> (only count records where the counter name 
+matches the regular expression I<regex>),
+or C<f/>I<regex1>C</c/>I<regex2>C</>I<op> (only count records where the format 
+matches the regular expression I<regex1> and/or the counter name 
+matches the regular expression I<regex2>). The I<op> part is
+optional. If present it may be one of: C<and> (format AND counter
+must match), C<or> (format OR counter must match). If I<op> is
+omitted, AND is assumed.
+
 =item B<--record-count> or B<-c>
 
 Add record count fields to entries.
@@ -320,7 +345,16 @@
 (B<master>, B<secondary> and B<trigger-type> resource options).
 This setting is the default.
 
+=item B<--replace-quotes>
 
+Replace single and double quote characters (C<'> and C<">) with 
+C<\bibglsaposchar> and C<\bibglsdoublequotechar> in field values
+and group information written to the F<.glstex> file.
+
+=item B<--no-replace-quotes>
+
+Don't replace quote characters (default).
+
 =back
 
 =head1 REQUIRES

Modified: trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls.tex
===================================================================
--- trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls.tex	2022-10-15 20:18:37 UTC (rev 64709)
+++ trunk/Master/texmf-dist/source/support/bib2gls/src/bib2gls.tex	2022-10-15 20:19:58 UTC (rev 64710)
@@ -155,6 +155,7 @@
   see=omit,seealso=omit,alias=omit,
   field-aliases={topics=adoptparents,annote=user2},
   replicate-fields={name=nametitle,progeny=unsortedprogeny},
+  word-boundaries={white space,cs space,dash},
   field-case-change={nametitle=title},
   interpret-fields={nametitle},
   no-case-change-cs={fieldfmt,abbrstylefmt,glostylefmt},
@@ -179,6 +180,7 @@
   },
   dual-prefix={},
   dual-type={main},
+  ext-prefixes={},
   combine-dual-locations={primary},
   selection={recorded and deps and see not also},
   symbol-sort-fallback={name},
@@ -188,7 +190,9 @@
 ]
 
 \newglossary*{terms}{Glossary}
-\GlsXtrLoadResources[src=bib2gls-terms,type=terms,save-locations=false,category=term]
+\GlsXtrLoadResources[src=bib2gls-terms,
+ name-case-change=title,replicate-fields={name=text},
+ type=terms,save-locations=false,category=term]
 
 \newcommand{\igls}[2][]{%
  \glsxtrifhasfield{useri}{#2}{\glsadd{\glscurrentfieldvalue}}{}%
@@ -241,6 +245,7 @@
 % ignore locations outside of main matter
 \GlsXtrSetDefaultNumberFormat{glsignore}
 
+\GlsXtrSetPlusModifier{format=glsnumberformat}
 \GlsXtrSetAltModifier{!}{format=glsignore}
 
 \newcommand{\frontmatter}{%
@@ -493,7 +498,9 @@
  {key=value list}%
 }
 
-\newcommand{\cssection}[2][\subsection]{%
+\newcommand{\cssectioncmd}{\subsection}
+
+\newcommand{\cssection}[2][\cssectioncmd]{%
  #1{\texorpdfstring{\glsxtrglossentry{#2}}{\string\\#2}}%
 }
 
@@ -1284,7 +1291,7 @@
 \filefmt{.bib} files to \filefmt{glossaries-extra.sty} resource
 files}
 \author{Nicola Talbot\addr{dickimaw-books.com}}
-\date{\DTMusedate{moddate}}
+\input{version}
 
 \makeatletter
 \renewcommand{\fps at figure}{htbp}
@@ -1414,8 +1421,6 @@
 \listoffigures
 \printunsrtglossary*[type=terms,style=altlist,groups=false]
 {%
-  \MFUhyphentrue
-  \glssetcategoryattribute{term}{glossname}{title}%
   \renewcommand{\glslistitem}[1]{%
     \item[\glsentryitem{#1}%
           \glstarget{#1}{\glossentryname{#1}}]%
@@ -3698,6 +3703,12 @@
 number of records found for the entry for the given counter.
 \end{itemize}
 These fields can then be used with the \gls{rgls}-like commands.
+
+This option is governed by the \longarg{record-count-rule}, which
+can be used to exclude certain types of records from the count. The
+default rule is \optfmt{all}, which includes all
+\idxpl{ignoredrecord}.
+
 The default behaviour of
 \nosecdef{rgls}
 is to check the \field{recordcount} field against the \catattr{recordcount}
@@ -3739,6 +3750,14 @@
 See the \sty{glossaries-extra} user manual~\cite{glossaries-extra} 
 for further details.
 
+\begin{important}
+Take care not to confuse the \field{recordcount} field with the \field{indexed}
+field. The \field{indexed} field keeps a running total of the number of times an
+entry has been recorded \emph{so far}, and is updated every time the entry is
+indexed during the current \LaTeX\ run. The \field{recordcount} field stores the total number of records
+obtained by \bibgls\ from the \ext{aux} file.
+\end{important}
+
 \argsection{no-record-count}
 
 Switch off record counting. (Default.)
@@ -3748,7 +3767,8 @@
 Automatically implements \longarg{record-count} and additionally
 sets the \field{recordcount.counter.location} fields.
 These fields can then be used with the \gls{rgls}-like
-commands.
+commands. This option is governed by \longarg{record-count-rule},
+to determine which records should be counted.
 
 \argsection{no-record-count-unit}
 
@@ -3756,6 +3776,44 @@
 Note that you need \longarg{no-record-count} to completely
 switch off record counting.
 
+\argsection{record-count-rule}
+
+Automatically implements \longarg{record-count} and sets the rule
+that determines which records should contribute to the count.
+The \meta{rule} may be one of:
+\begin{itemize}
+\item \code{all} or \code{a}: these keywords indicate that all
+records should be included in the count (default).
+\item \code{non-ignored} or \code{n}: these keywords indicate that 
+\idxpl{ignoredrecord} should be excluded in the count.
+\item \code{c/\meta{regex}/}: only records where the associated
+counter name matches the regular expression \meta{regex} should be
+included in the count.
+\item \code{f/\meta{regex}/}: only records where the associated
+format matches the regular expression \meta{regex} should be
+included in the count.
+\item \code{f/\meta{format-regex}/c/\meta{counter-regex}/\meta{op}}: 
+this combines the format and counter name match. The trailing
+\meta{op} is optional. If present, it should be one of the keywords: 
+\code{and} (boolean AND) or \code{or} (boolean OR). If omitted, 
+\code{and} is assumed.
+\end{itemize}
+
+For example:
+\begin{verbatim}
+bib2gls --record-count-rule 'f/.*(bf|it)/c/(sub)?section/or' myDoc
+\end{verbatim}
+This will only count records where the format matches the regular
+expression \code{.*(bf|it)} (for example, \code{hyperbf} or
+\code{hyperit}) or the counter name matches \code{section} or
+\code{subsection} (but not \code{subsubsection}, since the
+expressions are anchored).
+
+This syntax doesn't permit the use of the sequence \code{/c/}
+appearing in the regular expressions, but both the format and
+counter name are either control sequence names or are a substring of
+a control sequence name, so they should typically just be
+alphabetical strings.
 \argsection{retain-formats}
 
 It's possible that you may not want to lose certain \gls{location}
@@ -3845,6 +3903,15 @@
 
 \argsection{mfirstuc-protection}
 
+If you have \isty{mfirstuc} v2.08+, \isty{glossaries} v4.50+
+and \isty{glossaries-extra} v1.49+ then this setting shouldn't be
+required any more as there's now better sentence-case handling.
+If these versions are detected in the \ext{log} file then the
+default will switch to \longarg{no-mfirstuc-protection}
+otherwise the default is \longarg{mfirstuc-protection}. If this causes any
+problems, use \longarg{mfirstuc-protection} to re-enable this
+setting. The information below relates to older versions.
+
 Commands like \ics{Gls} use \ics{makefirstuc} provided by the
 \isty{mfirstuc} package. This command has limitations and one of the
 things that can break it is the use of a referencing command 
@@ -3887,7 +3954,15 @@
 
 \argsection{mfirstuc-math-protection}
 
-This works in the same way as \longarg{mfirstuc-protection} but
+If you have \isty{mfirstuc} v2.08+, \isty{glossaries} v4.50+ and
+\isty{glossaries-extra} v1.49+ then this setting shouldn't be
+required any more as there's now better sentence-case handling.  If
+these versions are detected in the \ext{log} file then the default
+will switch to \longarg{no-mfirstuc-math-protection}. If this causes
+any problems, use \longarg{mfirstuc-math-protection} to re-enable
+this setting. The information below relates to older versions.
+
+This setting works in the same way as \longarg{mfirstuc-protection} but
 guards against fields starting with inline maths
 (\idx{mshiftchar}\ldots\idx{mshiftchar}). For example, if the
 \field{name} field starts with
@@ -4042,6 +4117,19 @@
 labels. It's harder to detect the problem if a misspelt label has
 caused an entry to be added to a hidden glossary.
 
+\argsection{replace-quotes}
+
+Single and double-quote characters (\idx{aposchar} and
+\idx{doublequotechar}) will be written as \cs{bibglsaposchar} and
+\cs{bibglsdoublequotechar} in field values and group information 
+written to the \ext{glstex} file.
+
+\argsection{no-replace-quotes}
+
+Single and double-quote characters (\idx{aposchar} and
+\idx{doublequotechar}) will be written as those actual characters
+(default).
+
 \chapter{\iext{bib} Format}
 \label{sec:bib}
 \setsecdepth{1}
@@ -8068,6 +8156,14 @@
 \glsdisp{parententry}{parent's} \field{childlist} is that the entry
 itself is excluded from the list.
 
+\optsection{save-root-ancestor}
+
+This is a boolean option. The default setting is
+\csopt[false]{save-root-ancestor}. If true, the entry's top-most
+\gls{ancestor} will be saved in the entry's \field{rootancestor} internal
+field. If the entry doesn't have a \parent\ (that it, the entry itself
+is the root) then the \field{rootancestor} field won't be set.
+
 \optsection{flatten}
 
 This is a boolean option. The default value is \csopt[false]{flatten}. 
@@ -8544,12 +8640,104 @@
  \item \code{same as base}: the \gls{parententry}['s] \field{category} is
   set to the base name of the \ext{bib} file that provided the
   \gls{childentry}['s] definition;
- \item \code{no value}: don't set the \field{category} field;
+ \item \code{no value} or \code{false}: don't set the \field{category} field;
  \item \meta{label}: the \gls{parententry}['s] \field{category} field is set to
   \meta{label} (which shouldn't contain any special characters). 
 \end{itemize}
 The default setting is \csopt[no value]{missing-parent-category}.
 
+\optsection{group-level}
+
+If letter group formation is enabled (see \csopt{group},
+\csopt{group-formation} and \longarg{group}) then the default
+behaviour is to only assign the group label for \glspl{top-levelentry}.
+This option allows the group label to be assigned to \glspl{sub-entry}.
+The value may be one of the following:
+\begin{itemize}
+\item \meta{n}: only assign the group for level~\meta{n} entries;
+\item \code{>}\meta{n}: only assign the group for entries with a
+level greater than \meta{n};
+\item \code{>=}\meta{n}: only assign the group for entries with a
+level greater than or equal to \meta{n};
+\item \code{<}\meta{n}: only assign the group for entries with a
+level less than \meta{n};
+\item \code{<=}\meta{n}: only assign the group for entries with a
+level less than or equal to \meta{n};
+\item \code{all}: equivalent to \csopt[>=0]{group-level}.
+\end{itemize}
+The default setting is \csopt[0]{group-level}.
+If no value is provided, \csopt[all]{group-level} is assumed. The
+hierarchical levels start at 0 (\gls{top-levelentry}). For any value
+other than \csopt[0]{group-level}, the parent entry label will be
+included in the group label.
+
+The hierarchical group titles are formatted according to
+\gls{bibglshiersubgrouptitle}. If the group title would
+usually be set with the command \csfmt{bibglsset\ldots group}
+for \glspl{top-levelentry} then the hierarchical group title would
+be set with the analogous \csfmt{bibglsset\ldots group} command.
+For example, letter groups are normally set with
+\gls{bibglssetlettergrouptitle} but hierarchical letter groups are set
+with \gls{bibglssetlettergrouptitlehier}.
+
+If the \longarg{no-group} setting is on then this option has no effect.
+
+\begin{important}
+Any value other than the default \csopt[0]{group-level} requires
+\sty{glossaries-extra} v1.49+.
+\end{important}
+
+\optsection{merge-small-groups}
+
+Merges consecutive groups that have less than \meta{n} entries. The
+default is \csopt[0]{merge-small-groups}, which switches off this
+action. If \meta{n} is omitted, \csopt[1]{merge-small-groups} is
+assumed.
+
+This setting only has an effect if group formation is enabled.
+If hierarchical sub-groups are enabled (\csopt{group-level}) then
+merging is only performed on consecutive small groups within the
+same hierarchical level. Any \glspl{childentry} that aren't in their
+own sub-group are included in the higher level group count. 
+
+For example, suppose you have a large number of entries in most of
+the letter groups:
+\begin{codeenv}
+\atentry{index}\marg{aardvark}
+\atentry{index}\marg{ant}
+\atentry{index}\marg{alligator}
+\atentry{index}\marg{ape}
+\comment{etc}
+\end{codeenv}
+but you only have one entry in each of the \qt{X}, \qt{Y} and \qt{Z}
+groups:
+\begin{codeenv}
+\atentry{index}\marg{xylem}
+\atentry{index}\marg{yak}
+\atentry{index}\marg{zebra}
+\end{codeenv}
+then you may prefer to merge these entries into a single group:
+\begin{codeenv}
+\gls{GlsXtrLoadResources}\oarg{merge-small-groups}
+\end{codeenv}
+The title of this merged group is obtained from
+\gls{bibglsmergedgrouptitle} (or \gls{bibglsmergedgrouptitle} if
+hierarchical groups have been enabled with \csopt{group-level}).
+For the above example, the merged letter group would have the title
+\qt{X, Y, Z}. If there are more than three groups then the middle
+group titles are replace with an ellipsis. For example, if there is
+also only one entry in the \qt{W} letter group, then the merged
+title would be \qt{W,\ldots, Z}.
+
+The small groups must be consecutive (there is no group between
+them) and on the same hierarchical level in order to be merged.
+In the above example, if the yak entry isn't selected so that there
+is no \qt{Y} letter group, then the \qt{X} and \qt{Z} groups can be
+merged (with the merged title \qt{X, Z}). If, on the other hand,
+extra entries occur in the \qt{Y} letter group, so that it is larger
+than the value of \csopt{merge-small-groups}, then \qt{X} and
+\qt{Z} can no longer be merged.
+
 \section{Master Documents}
 \label{sec:master}
 
@@ -8672,7 +8860,8 @@
 parsing and processing data contained in \iext{bib} files
 (since this option doesn't actually read any \ext{bib} files).
 It also can't be used with \csopt[copy]{action} or \csopt[define
-or copy]{action}.
+or copy]{action}. A value of \code{false} will switch off this
+setting (the default).
 
 The use of \optfmt{master} isn't always suitable. In particular
 if any of the terms cross-reference each other, such as through
@@ -9018,6 +9207,14 @@
 \meta{n} is an integer). Use \csopt{dual-prefix} to change the dual label
 prefixes and \csopt{ext-prefixes} to change the external label prefixes.
 
+If you set \csopt{label-prefix} and you define commands with
+\gls{glsxtrnewglslike}, then any of those commands found in entry
+fields won't have the \csopt{label-prefix} inserted if the prefix provided with
+the command starts with the prefix given in \csopt{label-prefix}.
+(This doesn't apply to other prefix options, such as
+\csopt{dual-prefix}, so take care if you have a mixture of prefix
+options and prefixes identified with \gls{glsxtrnewglslike}.)
+
 As from version 1.8, the \primary\ label prefix is identified
 in the \ext{glstex} file with:
 \begin{codeenv}
@@ -9494,7 +9691,8 @@
 The \csopt{group} option will set the \field{group} field to \meta{label}
 unless \meta{label} is \optfmt{auto}. If \csopt[auto]{group} then if
 the \longarg{group} switch is used the value of the \field{group}
-field is set automatically during the sorting (see also \csopt{group-formation}
+field is set automatically during the sorting (see also
+\csopt{group-formation}, \csopt{group-level}
 and \sectionref{sec:logicaldivisions}). If the \longarg{no-group}
 setting is on then \csopt[auto]{group} does nothing.
 
@@ -9523,6 +9721,7 @@
 changed before writing their definitions to the \ext{glstex} file.
 The \meta{value} may be:
 \begin{itemize}
+\item \optfmt{false}: switch off this setting (default);
 \item \optfmt{same as entry}: set the
 \field{category} to the \ext{bib} entry type used to define it
 (\idx!{lowercase} and without the initial \code{@}) after any aliasing,
@@ -9614,19 +9813,21 @@
 
 The \meta{value} may be one of:
 \begin{itemize}
- \item \optfmt{same as entry} set the \field{type} field
+ \item \optfmt{false}: switches off this setting (default);
+
+ \item \optfmt{same as entry}: set the \field{type} field
   to the entry type (\idx!{lowercase} and without the initial \code{@}); 
 
- \item \optfmt{same as original entry} set the \field{type} 
+ \item \optfmt{same as original entry}: set the \field{type} 
   to the original entry type (\idx!{lowercase} and without 
   the initial \code{@}) before it was aliased (behaves like 
   \optfmt{same as entry} if the entry type wasn't aliased);
 
- \optfmt{same as base} set the \field{type} field
+ \optfmt{same as base}: set the \field{type} field
   to the base name of the corresponding \ext{bib} file
   (without the extension);
 
- \item \optfmt{same as category} set the \field{type} field
+ \item \optfmt{same as category}: set the \field{type} field
    to the same value as the \field{category} field
    (\field{type} unchanged if \field{category} not set);
 
@@ -9639,7 +9840,7 @@
 (if it was explicitly set in the \ext{bib} file),
 which may be inappropriate.
 
- \item\meta{label} sets the \field{type} field to the glossary 
+ \item\meta{label}: sets the \field{type} field to the glossary 
    identified by \meta{label}.
 \end{itemize}
 When used with \csopt{entry-type-aliases}, the option \csopt[same as
@@ -9696,7 +9897,8 @@
 \csopt{secondary}.
 
 The provided value \meta{type} must be a glossary label (not one of
-the keywords allowed by \csopt{type}).
+the keywords allowed by \csopt{type}) or \code{false} to switch
+off this setting.
 You can define the glossary before loading the resource, but
 it's not required as \bibgls\ will write
 \code{\ics{provideignoredglossary*}\margm{type}} to the \ext{glstex} file
@@ -9940,6 +10142,7 @@
 which counters are defined within the document, there's no check to
 determine if the value is valid (except for ensuring that
 \meta{value} is non-empty).
+A value of \code{false} will switch off this setting (the default).
 
 Note that this will require an extra \LaTeX\ and \bibgls\ call since
 the counter can't be used for the indexing until the entry has been
@@ -10616,6 +10819,211 @@
 to be fetched from another \igls{resourceset}. So if the resulting
 order isn't what you expect, check the transcript file for messages.
 
+\optsection[\subsubsection]{prune-xr}
+
+If true, this is a shortcut for:
+\begin{codeenv}
+\csopt[entrytype=\marg{index(plural)?},see=\marg{},seealso=\marg{},alias=\marg{}]{prune-see-match},
+\csopt[entrytype=\marg{index(plural)?},see=\marg{},seealso=\marg{},alias=\marg{}]{prune-seealso-match},
+\end{codeenv}
+
+This will remove any labels in an entry's \field{see} or
+\field{seealso} field where the referenced label doesn't have any
+records and hasn't been selected as another form of dependency and
+whose entry type is either \atentry{index} or \atentry{indexplural}
+and doesn't have the \field{see}, \field{seealso} or \field{alias}
+fields set.
+
+Both \csopt{prune-see-match} and \csopt{prune-seealso-match} can be
+switched off at the same time with \csopt[false]{prune-xr}.
+
+\optsection[\subsubsection]{prune-see-match}
+
+The value has the same syntax as \csopt{match}. Omitting the value
+switches off the setting. This option is not cumulative.
+
+If a value is supplied, this setting will attempt to prune unnecessary
+labels from \field{see} fields. Note that pruning may fail if there
+are cross-reference trails.
+
+A label will be stripped from a \field{see} field if the label
+references an entry that has no records, isn't dependent on another
+entry, hasn't previously been selected, and matches the given
+criteria. If more that one pattern match is supplied,
+\csopt{prune-see-op} determines whether to apply a logical AND or a
+logical OR.
+
+For example, suppose the file \filefmt{entries.bib} contains the
+following:
+\begin{codeenv}
+\atentry{index}\marg{pumpkin}
+\atentry{index}\marg{cucumber}
+\atentry{index}\marg{melon}
+\atentry{index}\marg{cucurbit,\field{see}=\marg{gourd}}
+\atentry{index}\marg{gourd,\field{see}=\marg{pumpkin,cucumber,melon}}
+\atentry{index}\marg{courgette}
+\atentry{index}\marg{marrow,\field{seealso}=\marg{courgette}}
+\atentry{index}\marg{broccoli}
+\atentry{index}\marg{cauliflower,\field{seealso}=\marg{broccoli}}
+\end{codeenv}
+Suppose the document contains:
+\begin{codeenv}
+\gls{GlsXtrLoadResources}\oarg{\csopt[entries]{src}}
+\cmd{begin}\marg{document}
+\cs{gls}\marg{cucurbit}, \cs{gls}\marg{pumpkin}, \cs{gls}\marg{melon}, \cs{gls}\marg{broccoli},
+\cs{gls}\marg{marrow}, \cs{gls}\marg{cauliflower}.
+\cs{printunsrtglossary}\oarg{title=Index}
+\cmd{end}\marg{document}
+\end{codeenv}
+This uses the default \csopt[recorded and deps]{selection} setting,
+which selects recorded entries (cucurbit, pumpkin, melon, broccoli,
+marrow and cauliflower) and their dependencies. In this case, the
+dependencies are: courgette (because it's listed in the marrow's
+\field{seealso} field), gourd (because it's listed in the cucurbit's
+\field{see} field), and cucumber (because it's listed in the
+gourd's \field{see} field).
+The resulting list is:
+\begin{quote}
+\setlength{\parindent}{0pt}%
+\setlength{\parskip}{0pt plus 0.3pt}%
+\glstreeitem broccoli 1\par
+\glstreeitem cauliflower 1, \emph{see also} broccoli\par
+\glstreeitem courgette\par
+\glstreeitem cucumber\par
+\glstreeitem cucurbit 1, \emph{see} gourd\par
+\glstreeitem gourd \emph{see} pumpkin, cucumber \& melon\par
+\glstreeitem marrow 1, \emph{see also} courgette\par
+\glstreeitem melon 1\par
+\glstreeitem pumpkin 1\par
+\end{quote}
+
+This means that courgette and cucumber appear in the glossary
+without a \igls{locationlist}. If this was an actual glossary with
+descriptions, this may not be a problem, but it looks strange for an
+index since the cross-reference essentially leads the reader to a dead end.
+
+Switching to \csopt[recorded no deps]{selection} will remove
+courgette, gourd and cucumber but the \field{see} and
+\field{seealso} fields will be lost. Since gourd references both
+pumpkin and melon (which are used in the document), it might be
+useful to keep the gourd entry. The aim of pruning is to remove the
+unwanted cucumber entry from the gourd's \field{see} list but retain
+pumpkin and melon.
+
+An appropriate filter is needed to switch on pruning. (This is in
+addition to the criteria that the pruned entry has no records, isn't
+dependent on another entry, and hasn't previously been selected.)
+This type of pruning is usually only necessary for indexes so a
+useful filter may be simply on the entry type (either
+\atentry{index} or \atentry{indexplural}):
+\begin{codeenv}
+\gls{GlsXtrLoadResources}\oarg{\csopt[entries]{src},
+ \csopt[entrytype=\marg{index(plural)?}]{prune-see-match}}
+\end{codeenv}
+Another possibility is to filter on an empty \field{description}:
+\begin{codeenv}
+\gls{GlsXtrLoadResources}\oarg{\csopt[entries]{src},\csopt[description=\marg{}]{prune-see-match}}
+\end{codeenv}
+
+The result is that the cauliflower and marrow entries keep their
+\field{seealso} lists (since this option only applies to \field{see}
+lists) and the courgette entry has been added (because it's
+in the marrow entry's \field{seealso} list). The gourd entry is
+removed from the cucurbit's \field{see} list (because it matches the
+criteria) and is not selected (because it's no longer a dependency).
+
+In this case, I'd like to include the gourd entry because it has the
+\field{see} field set. This means adjusting the criteria so that
+only entries without the \field{see} field can be pruned:
+\begin{codeenv}
+\gls{GlsXtrLoadResources}\oarg{\csopt[entries]{src},
+ \csopt[entrytype=\marg{index(plural)?},see=\marg{}]{prune-see-match}}
+\end{codeenv}
+This means that gourd is now selected (and retained in the
+cucurbit's \field{see} field) but cucumber is removed from the
+gourd's \field{see} field.
+
+A similar method can be applied for the \field{seealso} fields using
+\csopt{prune-seealso-match}. There's no applicable setting for the
+\field{alias} field (since it's expected that the alias be present
+due to the nature of the way the \field{alias} field works).
+
+For convenience, the \csopt{prune-xr} option is provided as a
+shortcut. If the resource command in the above example is modified
+to:
+\begin{codeenv}
+\gls{GlsXtrLoadResources}\oarg{\csopt[entries]{src},\csopt{prune-xr}}
+\end{codeenv}
+then the resulting list will be:
+\begin{quote}
+\setlength{\parindent}{0pt}%
+\setlength{\parskip}{0pt plus 0.3pt}%
+\glstreeitem broccoli 1\par
+\glstreeitem cauliflower 1, \emph{see also} broccoli\par
+\glstreeitem cucurbit 1, \emph{see} gourd\par
+\glstreeitem gourd \emph{see} pumpkin \& melon\par
+\glstreeitem marrow 1\par
+\glstreeitem melon 1\par
+\glstreeitem pumpkin 1\par
+\end{quote}
+
+Note that if the pumpkin and melon references are removed from the
+document, then gourd will still be selected but will have no
+cross-reference. This is because the cucurbit entry is checked for
+pruning while the gourd entry still has a non-empty \field{see}
+field so it's not removed from the cucurbit entry.
+
+There are two ways around this problem: either switch the
+definitions of cucurbit and gourd around in the \ext{bib} file
+or use \csopt{prune-iterations} to reprune (in this case,
+\csopt[2]{prune-iterations} is sufficient).
+
+\begin{important}
+This setting is only compatible with the \qt{recorded and dep}
+selection criteria: \csopt[recorded and
+deps]{selection}, \csopt[recorded and deps and see]{selection}
+and \csopt[recorded and deps and see not also]{selection}.
+\end{important}
+
+\optsection[\subsubsection]{prune-see-op}
+
+If the value of \csopt{prune-see-match} contains more than one 
+\meta{key}=\meta{pattern} element, the \csopt{prune-see-op}
+determines whether to apply a logical AND or a logical OR.
+The \meta{value} may be either \optfmt{and} or \optfmt{or}.
+The default is \csopt[and]{prune-see-op}.
+
+\optsection[\subsubsection]{prune-seealso-match}
+
+As \csopt{prune-see-match} but for \field{seealso} fields. If more
+that one pattern match is supplied, \csopt{prune-seealso-op}
+determines whether to apply a logical AND or a logical OR.
+
+\begin{important}
+This setting is only compatible with the \qt{recorded and dep}
+selection criteria: \csopt[recorded and
+deps]{selection}, \csopt[recorded and deps and see]{selection}
+and \csopt[recorded and deps and see not also]{selection}.
+\end{important}
+
+\optsection[\subsubsection]{prune-seealso-op}
+
+If the value of \csopt{prune-seealso-match} contains more than one 
+\meta{key}=\meta{pattern} element, the \csopt{prune-seealso-op}
+determines whether to apply a logical AND or a logical OR.
+The \meta{value} may be either \optfmt{and} or \optfmt{or}.
+The default is \csopt[and]{prune-seealso-op}.
+
+\optsection[\subsubsection]{prune-iterations}
+
+If you have cross-reference trails, you may need to reprune. The
+value of this options indicates the number of pruning iterations.
+The default is 1. The higher the number, the longer \bibgls\ will
+take to complete. The value can't be less that 1.
+
+The maximum number of iterations is capped at 20. A cross-reference
+trail that long is excessive for an index.
+
 \optsection[\subsubsection]{bibtex-contributor-fields}
 
 This option indicates that the listed fields all use \BibTeX's name
@@ -11179,11 +11587,6 @@
 perform the actual \idx{case-change} according to its own algorithm.
 The results can vary according to the field content.
 
-Only a subset of known fields have a resource option that can be
-used to apply a \idx{case-change}. For example, \csopt{name-case-change}
-can be used to change the case of the \field{name} field, but
-there's no equivalent option for the \field{text} field.
-
 Each of the case-changing resource options may take one of the
 following values:
 \begin{itemize}
@@ -11274,6 +11677,14 @@
 \end{codeenv}
 
 \end{itemize}
+
+\begin{important}
+Major changes have been introduced to \sty{mfirstuc} v2.08. Some of
+the information below refers to older versions and is not
+applicable with \sty{mfirstuc} v2.08+. See the \sty{mfirstuc} manual
+for further details.
+\end{important}
+
 The \optfmt{firstuc-cs} and \optfmt{firstuc} options are essentially
 a \idx{sentencecase} change, but there's no check for
 sentence-breaks within the value, so even if the value contains
@@ -11919,6 +12330,11 @@
 \field{location} field contains the code to typeset the formatted
 \igls{locationlist}.
 
+Note that the cross-referencing information provided with the
+\field{see}, \field{seealso} and \field{alias} fields is put in the
+location list. If you only want the cross-reference and not any of
+the locations, use \csopt[see]{save-locations} (or similar).
+
 The \field{loclist} field has the syntax of an \isty{etoolbox}
 internal list and includes every \gls{location} (except for the
 \glsdisp{discardedrecord}{discarded duplicates} and
@@ -12149,6 +12565,28 @@
 
 \optsection{save-locations}
 
+This was originally a boolean setting, but as from v3.0 there are
+additional values.
+\begin{itemize}
+\item \optfmt{false}: don't save anything in the \field{location}
+field;
+
+\item \optfmt{true}: save cross-references and all non-ignored 
+locations in the \field{location} field;
+
+\item \optfmt{see}: only save cross-references (\field{see},
+\field{seealso} and \field{alias}) in the \field{location} field;
+
+\item \optfmt{see not also}: only save the \field{see} and
+\field{alias} cross-references (not \field{seealso}) in the
+\field{location} field;
+
+\item \optfmt{alias only}: only save the \field{alias}
+cross-references (not \field{see} or \field{seealso}) in the
+\field{location} field.
+
+\end{itemize}
+
 By default, the \glspl{location} will be processed and stored in the
 \field{location} and \field{loclist} fields. However, if you don't
 want the \glspl{locationlist} (for example, you are using the
@@ -12164,7 +12602,8 @@
 \gls{newglossaryentry} can also be used in a \ext{bib} file, but in
 this case it can't have an empty value. The value must be either
 \code{true} or \code{false}. If \code{true} then \bibgls\ won't
-save the \field{location} or \field{loclist} fields.
+save the \field{location} or \field{loclist} fields, regardless of
+the \csopt{save-locations} resource option.
 
 The \field{nonumberlist} key provided by the base \sty{glossaries}
 package doesn't represent a real field. The value isn't saved but,
@@ -12227,7 +12666,9 @@
 \end{itemize}
 
 The \glspl{principallocation} are copied to the \field{primarylocations}
-field and encapsulated with \gls!{bibglsprimary}.
+field and are either encapsulated with \gls!{bibglsprimary} or can
+be split into groups, according to \csopt{principal-loc-counters}.
+
 If you use \csopt[remove]{save-principal-locations}, the
 \field{location} field will end up empty if the \glspl{location} for the
 associated entry were all identified as principal. If you use
@@ -12496,6 +12937,142 @@
 definitions), which makes it easier to merge the \glspl{location} into
 ranges in the index.
 
+\optsection{primary-loc-counters}
+
+A synonym for \csopt{principal-loc-counters}.
+
+\optsection{principal-loc-counters}
+
+This option determines whether the \glspl{principallocation} should
+be split into groups according to the location counter. The value
+may be one or:
+\begin{itemize}
+\item \optfmt{combine}: don't split into groups (default);
+\item \optfmt{match}: match the \csopt{loc-counters} setting;
+\item \optfmt{split}: split into groups regardless of the
+\csopt{loc-counters} setting.
+\end{itemize}
+
+With \csopt[combine]{principal-loc-counters} or with
+\csopt[match]{principal-loc-counters} and the default \csopt[as
+use]{loc-counters} settings, no groups will be formed and the
+\glspl{principallocation} will be encapsulated with
+\gls{bibglsprimary}. Otherwise, the locations will be split into
+groups according to the counter and each group will be encapsulated
+with \gls{bibglsprimarylocationgroup} and separated with
+\gls{bibglsprimarylocationgroupsep}.
+
+For example, suppose the file \filefmt{topics.bib} contains the
+following entry:
+\begin{codeenv}
+\atentry{entry}\marg{zebra,
+  \field{name}=\marg{zebra},
+  \field{description}=\marg{striped African horse}
+}
+\end{codeenv}
+The document sets up a \gls{principallocation} format identified by
+the custom command \csfmt{primaryfmt}:
+\begin{codeenv}
+\cs{newcommand}\marg{\cmd{primaryfmt}}[1]\marg{\cs{hyperbf}\marg{\idx{param}1}}
+\end{codeenv}
+The \ics{GlsXtrAutoAddOnFormat} command is used to automatically
+record an entry with the \counter{chapter} counter (using
+\ics{glsadd}) every time the entry is
+recorded with the \gls{principallocation} format:
+\begin{codeenv}
+\cs{GlsXtrAutoAddOnFormat}\marg{primaryfmt}\marg{\glsopt{counter}=\counter{chapter},\glsopt{format}=primaryfmt}
+\end{codeenv}
+This means that, for example,
+\begin{codeenv}
+\cs{gls}\oarg{\glsopt{format}=primaryfmt}\margm{zebra}
+\end{codeenv}
+will also first do:
+\begin{codeenv}
+\cs{glsadd}\oarg{\glsopt{counter}=\counter{chapter},\glsopt{format}=primaryfmt}\margm{zebra}
+\end{codeenv}
+
+If \idx{resourceset} is loaded with:
+\begin{codeenv}
+\gls{GlsXtrLoadResources}\oarg{\csopt[topics]{src},
+ \csopt[primaryfmt]{primary-location-formats},
+ \csopt[retain]{save-primary-locations}
+}
+\end{codeenv}
+then both the \field{location} field and the
+\field{primarylocations} field will include both the \counter{page}
+and \counter{chapter} records mixed together. The
+\field{primarylocations} field will have the locations encapsulated
+with \gls{bibglsprimary}.
+
+With 
+\begin{codeenv}
+\gls{GlsXtrLoadResources}\oarg{\csopt[topics]{src},
+ \csopt[primaryfmt]{primary-location-formats},
+ \csopt[retain]{save-primary-locations},
+ \csopt[split]{primary-loc-counters}
+}
+\end{codeenv}
+the \field{primarylocations} field will have the locations split into
+two groups, each encapsulated with \gls{bibglsprimarylocationgroup}.
+The \field{location} field will have the \counter{chapter} and
+\counter{page} locations intermingled.
+
+With 
+\begin{codeenv}
+\gls{GlsXtrLoadResources}\oarg{\csopt[topics]{src},
+ \csopt[primaryfmt]{primary-location-formats},
+ \csopt[retain]{save-primary-locations},
+ \csopt[split]{primary-loc-counters},
+ \csopt[page]{loc-counters}
+}
+\end{codeenv}
+The \field{primarylocations} field will be the same as before, but
+the \field{location} field will only have the \counter{page}
+locations.
+
+Whereas with 
+\begin{codeenv}
+\gls{GlsXtrLoadResources}\oarg{\csopt[topics]{src},
+ \csopt[primaryfmt]{primary-location-formats},
+ \csopt[retain]{save-primary-locations},
+ \csopt[match]{primary-loc-counters},
+ \csopt[page]{loc-counters}
+}
+\end{codeenv}
+Both the \field{primarylocations} field and the \field{location}
+field will only have the \counter{page} locations.
+
+The order of the groups depends on whether \optfmt{split} or
+\optfmt{match} is used. With \csopt[match]{primary-loc-counters} the
+counter group order will match \csopt{loc-counters}. Whereas with
+\csopt[split]{primary-loc-counters} the counter group order will be determined by
+the order of records.
+
+So in the case of the above document where the \counter{chapter}
+record is automatically added before the \counter{page} record
+(where the \glsopt{format} is \code{primaryfmt}) then with:
+\begin{codeenv}
+\gls{GlsXtrLoadResources}\oarg{\csopt[topics]{src},
+ \csopt[primaryfmt]{primary-location-formats},
+ \csopt[retain]{save-primary-locations},
+ \csopt[match]{primary-loc-counters},
+ \csopt[page,chapter]{loc-counters}
+}
+\end{codeenv}
+then both the \field{location} field and the
+\field{primarylocations} field will have the \counter{page} group
+first, followed by the \counter{chapter} group. Whereas with:
+\begin{codeenv}
+\gls{GlsXtrLoadResources}\oarg{\csopt[topics]{src},
+ \csopt[primaryfmt]{primary-location-formats},
+ \csopt[retain]{save-primary-locations},
+ \csopt[skip]{primary-loc-counters},
+ \csopt[page,chapter]{loc-counters}
+}
+\end{codeenv}
+then the \field{primarylocations} field will have the
+\counter{chapter} group first, followed by the \counter{page} group.
+
 \optsection{min-loc-range}
 
 By default, three or more consecutive \glspl{location} \meta{loc-1},
@@ -12866,8 +13443,7 @@
 \item \optfmt{\margm{prefix-1},\margm{prefix-2},\ldots,\margm{prefix-n}}:
 insert \code{\gls{bibglslocprefix}\margm{n}} (where \meta{n} is the number of
 \glspl{location} in the list) at the start of each \gls{locationlist} and the
-definition of \gls{bibglslocprefix} will be appended to the glossary
-preamble providing an \ics{ifcase} condition:
+definition of \gls{bibglslocprefix} will have an \ics{ifcase} condition:
 \begin{codeenv}
 \cmd{providecommand}\marg{\gls{bibglslocprefix}}[1]\marg{\comment{}
   \ics{ifcase}\idx{param}1
@@ -12896,17 +13472,14 @@
 
 \end{itemize}
 
-If \meta{value} is omitted, \optfmt{true} is assumed. Take care not
-to mix different values of \csopt{loc-prefix} for entries for the
-same \csopt{type} setting. It's okay to mix \csopt[false]{loc-prefix} with 
-another value, but don't mix non-\optfmt{false} values. 
-See the description of \gls!{bibglslocprefix} for
-further details.
+If \meta{value} is omitted, \optfmt{true} is assumed. The definition
+will be placed in the \ext{glstex} file according to
+\csopt{loc-prefix-def}.
 
 For example:
 \begin{codeenv}
-\gls{GlsXtrLoadResources}\oarg{\csopt[main]{type},\csopt[entries1]{src},\csopt[false]{loc-prefix}}
-\gls{GlsXtrLoadResources}\oarg{\csopt[main]{type},\csopt[entries2]{src},\csopt{loc-prefix}}
+\gls{GlsXtrLoadResources}\oarg{\csopt[main]{type},\csopt[individual]{loc-prefix-def},\csopt[entries1]{src},\csopt[false]{loc-prefix}}
+\gls{GlsXtrLoadResources}\oarg{\csopt[main]{type},\csopt[individual]{loc-prefix-def},\csopt[entries2]{src},\csopt{loc-prefix}}
 \gls{GlsXtrLoadResources}\oarg{\csopt[symbols]{type},\csopt[entries3]{src},\csopt[p.,pp.]{loc-prefix}}
 \end{codeenv}
 This works since the conflicting \csopt[p.,pp.]{loc-prefix} and
@@ -12932,6 +13505,32 @@
 fetched from both \filefmt{entries2.bib} and \filefmt{entries3.bib}
 have the location prefixes obtained from the language resource file.
 
+Note that if you identify some glossaries but not others (for
+example, you have dual entries in separate glossaries but only
+use \csopt{type} and not \csopt{dual-type}), then you will need to
+use \csopt[global]{loc-prefix-def} or \csopt[local]{loc-prefix-def}.
+
+\optsection{loc-prefix-def}
+
+This determines how the location prefix identified by
+\csopt{loc-prefix} is written to the \ext{glstex} file. The value
+may be one of:
+\begin{itemize}
+\item\optfmt{global} the definition is globally defined using
+\cs{providecommand};
+\item\optfmt{local} the definition is locally defined using
+\cs{providecommand} in the general glossary preamble
+(\cs{glossarypreamble});
+\item\optfmt{individual} the definition is locally defined using
+\cs{providecommand} in the glossary preamble of each type that has
+been identified in the current \gls{resourceset}, using options like
+\csopt{type} and \csopt{dual-type}
+(\ics{apptoglossarypreamble}).
+\end{itemize}
+The default is \csopt[individual]{loc-prefix-def}. Note that this
+can lead to an undefined control sequence error if locations appear
+in a glossary that hasn't been detected by the \gls{resourceset}.
+
 \optsection{loc-suffix}
 
 This is similar to \csopt{loc-prefix} but there are some subtle
@@ -12957,9 +13556,34 @@
 If \meta{value} omitted, \csopt[\ics{at}\idx{periodchar}]{loc-suffix} 
 is assumed.  The default is \csopt[false]{loc-suffix}.
 
-As with \csopt{loc-prefix}, take care not to mix different values
-of \csopt{loc-suffix} for entries in the same glossary type.
+The way the definition is written to the \ext{glstex} file is determined
+by \csopt{loc-suffix-def}.
+Note that if you identify some glossaries but not others (for
+example, you have dual entries in separate glossaries but only
+use \csopt{type} and not \csopt{dual-type}), then you will need to
+use \csopt[global]{loc-suffix-def} or \csopt[local]{loc-suffix-def}.
 
+\optsection{loc-suffix-def}
+
+This determines how the location suffix identified by
+\csopt{loc-suffix} is written to the \ext{glstex} file. The value
+may be one of:
+\begin{itemize}
+\item\optfmt{global} the definition is globally defined using
+\cs{providecommand};
+\item\optfmt{local} the definition is locally defined using
+\cs{providecommand} in the general glossary preamble
+(\cs{glossarypreamble});
+\item\optfmt{individual} the definition is locally defined using
+\cs{providecommand} in the glossary preamble of each type that has
+been identified in the current \gls{resourceset}, using options like
+\csopt{type} and \csopt{dual-type}
+(\ics{apptoglossarypreamble}).
+\end{itemize}
+The default is \csopt[individual]{loc-suffix-def}. Note that this
+can lead to an undefined control sequence error if locations appear
+in a glossary that hasn't been detected by the \gls{resourceset}.
+
 \optsection{loc-counters}
 
 Commands like \ics{gls} allow you to select a different 
@@ -13067,6 +13691,12 @@
 allow \glspl{location} to link back to the particular part of the page where
 the term was referenced rather than to the top of the page.
 
+\begin{important}
+Take care not to confuse this with the \field{indexed} special internal field
+introduced in \sty{glossaries-extra} v1.49+. This is incremented on a per-entry basis 
+and does not have an associated counter.
+\end{important}
+
 The \styopt{indexcounter} package option also automatically
 implements the option \styopt[wrglossary]{counter}, which means that
 each instance of \code{\ics{gls}\margm{id}} writes the label
@@ -13501,6 +14131,8 @@
 \cmd{end}\marg{document}
 \end{codeenv}
 
+A value of \code{false} will switch off this setting (the default).
+
 \section{Sorting}
 \label{sec:sortingopts}
 
@@ -15373,6 +16005,9 @@
 the break points in the transcript. (This will also show the
 collation rule.) 
 
+If you want to selectively apply break points only to certain
+entries, use \csopt{break-at-match} or \csopt{break-at-not-match}.
+
 \optsection{break-marker}
 
 This option automatically implements the dual and secondary settings
@@ -15389,6 +16024,49 @@
 \code{sealion}. If \meta{marker} is omitted,
 \csopt[\empty]{break-marker} is assumed.
 
+\optsection{break-at-match}
+
+This option automatically implements
+\csopt[\meta{option}]{dual-break-at-match} and
+\csopt[\meta{option}]{secondary-break-at-match}.
+
+If you have \csopt{break-at} set to create break points (for
+example, with \csopt[word]{break-at}) then you can specify which
+entries should have break points with this option. The value has the same
+syntax as \csopt{match}. If an entry matches the criteria, then 
+break points are added, otherwise no break points are added.
+For example, to only have break points for entries defined with \atentry{index}
+or \atentry{indexplural}:
+\begin{codeenv}
+\csopt[entrytype=index(plural)?]{break-at-match}
+\end{codeenv}
+This option has no effect with \csopt[none]{break-at}.
+
+\optsection{break-at-match-op}
+This option automatically implements
+\csopt[\meta{option}]{dual-break-at-match-op} and
+\csopt[\meta{option}]{secondary-break-at-match-op}.
+
+If the value of \csopt{break-at-match} contains more than one 
+\meta{key}=\meta{pattern} element, the \csopt{break-at-match-op}
+determines whether to apply a logical AND or a logical OR.
+The \meta{value} may be either \optfmt{and} or \optfmt{or}.
+The default is \csopt[and]{break-at-match-op}.
+
+\optsection{break-at-not-match}
+
+This option automatically implements
+\csopt[\meta{option}]{dual-break-at-not-match} and
+\csopt[\meta{option}]{secondary-break-at-not-match}.
+
+ For example, to prevent entries defined with
+\atentry{symbol} from having break points:
+\begin{codeenv}
+\csopt[entrytype=symbol]{break-at-not-match}
+\end{codeenv}
+Like \csopt{break-at-match} but negates the match.
+This option has no effect with \csopt[none]{break-at}.
+
 \optsection{sort-number-pad}
 
 This option automatically implements the dual and secondary settings
@@ -16214,6 +16892,7 @@
 See also \sectionref{sec:logicaldivisions}.
 \end{important}
 
+
 \section{Secondary Glossary}
 \label{sec:secondaryopts}
 
@@ -16425,6 +17104,18 @@
 
 As \csopt{break-marker} but for \glsdisp{secondaryglossary}{secondary} entries.
 
+\optsection[\subsubsection]{secondary-break-at-match}
+
+As \csopt{break-at-match} but for \glsdisp{secondaryglossary}{secondary} entries.
+
+\optsection[\subsubsection]{secondary-break-at-match-op}
+
+As \csopt{break-at-match-op} but for \glsdisp{secondaryglossary}{secondary} entries.
+
+\optsection[\subsubsection]{secondary-break-at-not-match}
+
+As \csopt{break-at-not-match} but for \glsdisp{secondaryglossary}{secondary} entries.
+
 \optsection{secondary-sort-number-pad}
 
 As \csopt{sort-number-pad} but for \glsdisp{secondaryglossary}{secondary} entries.
@@ -16632,6 +17323,8 @@
 file (or created through a mapping). The \meta{value} is required and
 should be one of:
 \begin{itemize}
+\item \optfmt{false}: switches off this setting (default);
+
 \item \optfmt{same as entry}: sets the \field{type} to the entry
 type (\idx!{lowercase} and without 
 the initial \code{@}). For example, if the entry was defined with
@@ -16696,6 +17389,7 @@
 file (or created through a mapping). The \meta{value} may be empty or
 one of:
 \begin{itemize}
+\item \optfmt{false}: switch off this setting (default);
 \item \optfmt{same as entry}: sets the \field{category} to the entry
 type (\idx{lowercase} and without 
 the initial \code{@}). For example, if the entry was defined with
@@ -16733,7 +17427,7 @@
 As \csopt{counter} but for the \glspl{dualentry}. In this case
 \meta{value} may be the name of the counter or 
 \optfmt{same as primary} which uses the counter for the
-\gls{primaryentry}.
+\gls{primaryentry} or \optfmt{false} to switch off this setting.
 
 \optsection[\subsubsection]{dual-short-case-change}
 
@@ -16755,6 +17449,7 @@
 If \meta{value} is omitted \csopt[dual]{dual-field} is assumed. If
 you use a different value, you will need to redefine
 \gls{GlsXtrDualField} (either locally or globally).
+A value of \code{false} will switch off this setting (the default).
 
 For example, if the \ext{bib} file contains:
 \begin{codeenv}
@@ -16890,6 +17585,18 @@
 
 As \csopt{break-marker} but for \glspl{dualentry}.
 
+\optsection[\subsubsection]{dual-break-at-match}
+
+As \csopt{break-at-match} but for \glspl{dualentry}.
+
+\optsection[\subsubsection]{dual-break-at-match-op}
+
+As \csopt{break-at-match-op} but for \glspl{dualentry}.
+
+\optsection[\subsubsection]{dual-break-at-not-match}
+
+As \csopt{break-at-not-match} but for \glspl{dualentry}.
+
 \optsection[\subsubsection]{dual-sort-number-pad}
 
 As \csopt{sort-number-pad} but for \glspl{dualentry}.
@@ -18412,16 +19119,12 @@
 
 \formatdef{bibglslocprefix}
 If the \csopt{loc-prefix} option is on, this command will be
-provided. If the glossary type has been provided by \csopt{type}
-(and \csopt{dual-type} if there are any \glspl{dualentry}) then the
-definition of \gls{bibglslocprefix} will be appended to the glossary
-preamble for the given type (or types if there are \glspl{dualentry}).
-For example, if the document has:
+provided. The location of the definition is determined by the
+\csopt{loc-prefix-def} option.  For example, if the document has:
 \begin{codeenv}
-\gls{GlsXtrLoadResources}\oarg{\csopt[main]{type},\csopt[p.,pp.]{loc-prefix},\csopt[entries]{src}}
+\gls{GlsXtrLoadResources}\oarg{\csopt[main]{type},\csopt[individual]{loc-prefix-def},\csopt[p.,pp.]{loc-prefix},\csopt[entries]{src}}
 \end{codeenv}
-and there are no \glspl{dualentry}, then the following will be added to
-the \ext{glstex} file:
+then the following will be added to the \ext{glstex} file:
 \begin{codeenv}
 \cs{apptoglossarypreamble}\oarg{main}\marg{\comment{}
  \cs{providecommand}\marg{\gls{bibglslocprefix}}[1]\marg{\comment{}
@@ -18432,7 +19135,8 @@
  }\comment{}
 }
 \end{codeenv}
-However, if the \csopt{type} key is missing, then the following will
+However, if the \csopt{type} key is missing or if the option
+\csopt[local]{loc-prefix-def} is used, then the following will
 be added instead:
 \begin{codeenv}
 \cs{appto}\cs{glossarypreamble}\marg{\comment{}
@@ -18444,6 +19148,8 @@
  }\comment{}
 }
 \end{codeenv}
+If \csopt[global]{loc-prefix-def} is used then the definition is
+global (outside of the glossary preamble).
 
 \cssection{bibglspagename}
 
@@ -18467,12 +19173,10 @@
 
 \formatdef{bibglslocsuffix}
 If the \csopt{loc-suffix} option is on, this command will be
-provided. If the glossary type has been provided by \csopt{type}
-(and \csopt{dual-type} if there are any \glspl{dualentry}) then the
-definition of \gls{bibglslocsuffix} will be appended to the glossary
-preamble for the given type (or types if there are \glspl{dualentry}).
+provided. The location of the definition depends on the
+\csopt{loc-suffix-def} option.
 
-This commands definition depends on the value provided by
+This command's definition depends on the value provided by
 \csopt{loc-suffix}. For example, with 
 \csopt[\ics{at}{\idx{periodchar}}]{loc-suffix}
 the command is defined as:
@@ -18492,16 +19196,6 @@
 no \glspl{location} but there was a cross-reference. This command isn't
 added when the \gls{locationlist} is empty.
 
-\cssection{bibglsprimary}
-
-\formatdef{bibglsprimary}
-When the \csopt{save-principal-locations} option is used, the 
-\glspl{principallocation} are stored in the \field{primarylocations} field
-encapsulated with this command. The first argument is the number of
-\glspl{location} in the list. The second argument is the list of \glspl{location}
-formatted in the usual way. The default definition is to ignore the
-first argument and simply do the second.
-
 \cssection{bibglslocationgroup}
 
 \formatdef{bibglslocationgroup}
@@ -18578,6 +19272,34 @@
 \cs{glsrenewcommand}*\marg{\gls{bibglslocationgroupsep}}\marg{; }
 \end{codeenv}
 
+\cssection{bibglsprimary}
+
+\formatdef{bibglsprimary}
+When the \csopt{save-principal-locations} option is used, the 
+\glspl{principallocation} are stored in the \field{primarylocations} field
+encapsulated with this command, unless the locations are split into
+groups according to the location counter.
+
+The first argument is the number of \glspl{location} in the list.
+The second argument is the list of \glspl{location} formatted in the
+usual way. The default definition is to ignore the first argument
+and simply do the second.
+
+If the locations are split into groups, then \gls{bibglsprimarylocationgroup}
+is used for each group instead (separated with
+\gls{bibglsprimarylocationgroupsep}).
+
+\cssection{bibglsprimarylocationgroup}
+
+\formatdef{bibglsprimarylocationgroup}
+As \gls{bibglslocationgroup} but for primary group
+locations.
+
+\cssection{bibglsprimarylocationgroupsep}
+
+\formatdef{bibglsprimarylocationgroupsep}
+As \gls{bibglslocationgroupsep} but for primary group locations.
+
 \cssection{bibglssupplemental}
 
 \formatdef{bibglssupplemental}
@@ -18820,6 +19542,25 @@
  \marg{Foreign Words}\comment{title}
 \end{codeenv}
 
+\cssection{bibglshypergroup}
+
+\formatdef{bibglshypergroup}
+
+If the \iext{log} file indicates that \isty{hyperref} has been loaded
+and the \longarg{group} switch is used, then this command will be
+used to create the navigation information for glossary styles such
+as \glostyle{indexhypergroup}.
+
+\subsection{Top-Level Groups Only}
+\label{sec:toplevelgroups}
+\renewcommand{\cssectioncmd}{\subsubsection}
+
+The default \csopt{group-level} setting will only create groups for
+the \glspl{top-levelentry}. Any \glspl{sub-entry} are considered to
+be part of the \gls{top-levelentry}['s] group. If hierarchical
+groups are enabled, the commands defined in \sectionref{sec:hiergroups}
+are provided.
+
 \cssection{bibglssetlettergrouptitle}
 
 For each \idx{lettergroup} that's detected, \bibgls\ will write the line:
@@ -19252,15 +19993,318 @@
 grouping is correct, and then change the definition of 
 \gls{bibglsunicodegrouptitle} so that the title is correct.
 
-\cssection{bibglshypergroup}
+\cssection{bibglssetmergedgrouptitle}
 
-\formatdef{bibglshypergroup}
+Used when groups are merged by \csopt{merge-small-groups}. This command
+sets the label and title.
+\formatdef{bibglssetmergedgrouptitle}
+(Note the inner group, as with the other similar 
+\csfmt{bibglsset\ldots grouptitle} commands.)
 
-If the \iext{log} file indicates that \isty{hyperref} has been loaded
-and the \longarg{group} switch is used, then this command will be
-used to create the navigation information for glossary styles such
-as \glostyle{indexhypergroup}.
+\cssection{bibglsmergedgroup}
 
+\formatdef{bibglsmergedgroup}
+This expands to the label for merged groups.
+
+\cssection{bibglsmergedgrouptitle}
+
+\formatdef{bibglsmergedgrouptitle}
+This expands to the group title for merged groups.
+
+\cssection{bibglsmergedgroupfmt}
+
+\formatdef{bibglsmergedgroupfmt}
+Used by \gls{bibglsmergedgrouptitle} and
+\gls{bibglsmergedgrouphierfmt} to format merged group titles. The
+first argument \meta{n} is the total number of groups that have been
+merged, the second argument, \meta{g$_1$} is the first group title,
+\marg{\meta{g$_2$}\ldots\meta{g$_n$}} are the middle group titles
+(empty if $\meta{n}=2$), and \meta{g$_n$} is the last group title.
+
+The default definition is:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsmergedgroupfmt}}[4]\marg{\idx{param}2,
+\cs{ifcase}\idx{param}1\cmd{or}\cmd{or}\cmd{or} \idx{param}3,
+\cmd{else}\ldots, \cmd{fi} \idx{param}4}
+\end{codeenv}
+
+
+\subsection{Hierarchical Groups}
+\label{sec:hiergroups}
+
+Hierarchical letter groups are set with analogous commands that have
+\code{hier} appended to the command name. There are also two extra
+arguments, \meta{parent} (the \gls{parententry}['s] label) and
+\meta{level} (the hierarchical level).
+
+\cssection{bibglsgrouplevel}
+
+\formatdef{bibglsgrouplevel}
+This command is used when \csopt{group-level} is used to apply group
+formations for different hierarchical levels. The \meta{label}
+argument is the label that would normally be applied to level~0.
+The \meta{n} argument is the hierarchical level (0 for
+\glspl{top-levelentry}). By default, this command simply expands to
+\meta{label}.
+
+\cssection{bibglshiersubgrouptitle}
+
+Hierarchical group titles are formatted using:
+\formatdef{bibglshiersubgrouptitle}
+This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglshiersubgrouptitle}}[3]\marg{\cs{ifnum}\idx{param}1>0 \cs{Glsxtrhiername}\marg{\idx{param}2} / \cmd{fi} \idx{param}3}
+\end{codeenv}
+The first argument \meta{level} is the hierarchical level, the
+second argument is the \gls{parententry} label (empty for
+$\meta{level}=0$), and the third argument \meta{title} is the 
+normal title that would apply to the group with the default
+\csopt[0]{group-level} setting. Note that this uses
+\cs{Glsxtrhiername}\margm{parent} if $\meta{level}>0$.
+If this isn't required then redefine \gls{bibglshiersubgrouptitle}
+to simply expand to \meta{title} (\code{\idx{param}3}).
+
+\cssection{bibglssetlettergrouptitlehier}
+\formatdef{bibglssetlettergrouptitlehier}
+As \gls{bibglssetlettergrouptitle} but used for hierarchical groups.
+
+\cssection{bibglslettergrouphier}
+\formatdef{bibglslettergrouphier}
+As \gls{bibglslettergroup} but used for hierarchical groups. It
+expands to the hierarchical letter group label.
+This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglslettergrouphier}}[6]\marg{\idx{param}4\idx{param}5\idx{param}3}
+\end{codeenv}
+
+\cssection{bibglslettergrouptitlehier}
+\formatdef{bibglslettergrouptitlehier}
+As \gls{bibglslettergrouptitle} but used for hierarchical groups. It
+expands to the hierarchical letter group title. This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglslettergrouptitlehier}}[6]\marg{\cs{protect}\gls{bibglshiersubgrouptitle}\marg{\idx{param}6}\marg{\idx{param}5}\marg{\cs{unexpanded}\marg{\idx{param}1}}}
+\end{codeenv}
+
+\cssection{bibglssetothergrouptitlehier}
+\formatdef{bibglssetothergrouptitlehier}
+As \gls{bibglssetothergrouptitle} but used for hierarchical groups.
+
+\cssection{bibglsothergrouphier}
+\formatdef{bibglsothergrouphier}
+As \gls{bibglsothergroup} but used for hierarchical groups. It
+expands to the hierarchical other group label.
+This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsothergrouphier}}[5]\marg{\idx{param}3\idx{param}4glssymbols}
+\end{codeenv}
+
+\cssection{bibglsothergrouptitlehier}
+\formatdef{bibglsothergrouptitlehier}
+As \gls{bibglsothergrouptitle} but used for hierarchical groups. It
+expands to the hierarchical other group title. This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsothergrouptitlehier}}[5]\marg{\cs{protect}\gls{bibglshiersubgrouptitle}\marg{\idx{param}5}\marg{\idx{param}4}\marg{\cs{protect}\cs{glssymbolsgroupname}}}
+\end{codeenv}
+
+\cssection{bibglssetemptygrouptitlehier}
+\formatdef{bibglssetemptygrouptitlehier}
+As \gls{bibglssetemptygrouptitle} but used for hierarchical groups.
+
+\cssection{bibglsemptygrouphier}
+\formatdef{bibglsemptygrouphier}
+As \gls{bibglsemptygroup} but used for hierarchical groups. It
+expands to the hierarchical empty group label.
+This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsemptygrouphier}}[3]\marg{\idx{param}1\idx{param}2glssymbols}
+\end{codeenv}
+
+\cssection{bibglsemptygrouptitlehier}
+\formatdef{bibglsemptygrouptitlehier}
+As \gls{bibglsemptygrouptitle} but used for hierarchical groups. It
+expands to the hierarchical empty group title. This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsemptygrouptitlehier}}[3]\marg{\cs{protect}\gls{bibglshiersubgrouptitle}\marg{\idx{param}3}\marg{\idx{param}2}\marg{\cs{protect}\cs{glssymbolsgroupname}}}
+\end{codeenv}
+
+\cssection{bibglssetnumbergrouptitlehier}
+\formatdef{bibglssetnumbergrouptitlehier}
+As \gls{bibglssetnumbergrouptitle} but used for hierarchical groups.
+
+\cssection{bibglsnumbergrouphier}
+\formatdef{bibglsnumbergrouphier}
+As \gls{bibglsnumbergroup} but used for hierarchical groups. It
+expands to the hierarchical number group label.
+This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsnumbergrouphier}}[5]\marg{\idx{param}3\idx{param}4glsnumbers}
+\end{codeenv}
+
+\cssection{bibglsnumbergrouptitlehier}
+\formatdef{bibglsnumbergrouptitlehier}
+As \gls{bibglsnumbergrouptitle} but used for hierarchical groups. It
+expands to the hierarchical number group title. This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsnumbergrouptitlehier}}[5]\marg{\cs{protect}\gls{bibglshiersubgrouptitle}\marg{\idx{param}5}\marg{\idx{param}4}\marg{\cs{protect}\cs{glsnumbersgroupname}}}
+\end{codeenv}
+
+\cssection{bibglssetdatetimegrouptitlehier}
+\formatdef{bibglssetdatetimegrouptitlehier}
+As \gls{bibglssetdatetimegrouptitle} but used for hierarchical groups.
+
+\cssection{bibglsdatetimegrouphier}
+\formatdef{bibglsdatetimegrouphier}
+As \gls{bibglsdatetimegroup} but used for hierarchical groups. It
+expands to the hierarchical \idx{datetimegroup} label.
+Since this has more than 9 arguments, it is defined in two parts:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsdatetimegrouphier}}[9]\marg{\idx{param}1\idx{param}2\idx{param}3\gls{bibglsdatetimegrouphierfinalargs}}
+\end{codeenv}
+The final arguments are obtained with \gls{bibglsdatetimegrouphierfinalargs}.
+
+\cssection{bibglsdatetimegrouphierfinalargs}
+\formatdef{bibglsdatetimegrouphierfinalargs}
+This picks up the final three arguments for \gls{bibglsdatetimegrouphier}:
+\begin{codeenv}
+\cs{providecommand}*\marg{\gls{bibglsdatetimegrouphierfinalargs}}[3]\marg{\idx{param}1\idx{param}2}
+\end{codeenv}
+
+\cssection{bibglsdatetimegrouptitlehier}
+\formatdef{bibglsdatetimegrouptitlehier}
+As \gls{bibglsdatetimegrouptitle} but used for hierarchical groups. It
+expands to the hierarchical \idx{datetimegroup} title.
+Since this has more than 9 arguments, it is defined in two parts:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsdatetimegrouptitlehier}}[9]\marg{\gls{bibglsdatetimegrouptitlehierfinalargs}\marg{\idx{param}1-\idx{param}2-\idx{param}3}}
+\end{codeenv}
+The final arguments are obtained with \gls{bibglsdatetimegrouptitlehierfinalargs}.
+
+\cssection{bibglsdatetimegrouptitlehierfinalargs}
+\formatdef{bibglsdatetimegrouptitlehierfinalargs}
+This picks up the final three arguments for \gls{bibglsdatetimegrouptitlehier}:
+\begin{codeenv}
+\cs{providecommand}*\marg{\gls{bibglsdatetimegrouptitlehierfinalargs}}[4]\marg{\cs{protect}\gls{bibglshiersubgrouptitle}\marg{\idx{param}4}\marg{\idx{param}3}\marg{\idx{param}1}}
+\end{codeenv}
+In this case, the first argument is set by
+\gls{bibglsdatetimegrouptitlehier} to the date
+(\code{\meta{YYYY}-\meta{MM}-\meta{DD}}). The remaining arguments
+are the \meta{type}, \meta{parent} and \meta{level} information.
+
+\cssection{bibglssetdategrouptitlehier}
+\formatdef{bibglssetdategrouptitlehier}
+As \gls{bibglssetdategrouptitle} but used for hierarchical groups.
+
+\cssection{bibglsdategrouphier}
+\formatdef{bibglsdategrouphier}
+As \gls{bibglsdategroup} but used for hierarchical groups. It
+expands to the hierarchical date group label.
+This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsdategrouphier}}[9]\marg{\idx{param}1\idx{param}2\idx{param}4\idx{param}7\idx{param}8}
+\end{codeenv}
+
+\cssection{bibglsdategrouptitlehier}
+\formatdef{bibglsdategrouptitlehier}
+As \gls{bibglsdategrouptitle} but used for hierarchical groups. It
+expands to the hierarchical date group title. This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsdategrouptitlehier}}[9]\marg{\cs{protect}\gls{bibglshiersubgrouptitle}\marg{\idx{param}9}\marg{\idx{param}8}\marg{\idx{param}1-\idx{param}2}}
+\end{codeenv}
+
+\cssection{bibglssettimegrouptitlehier}
+\formatdef{bibglssettimegrouptitlehier}
+As \gls{bibglssettimegrouptitle} but used for hierarchical groups.
+
+\cssection{bibglstimegrouphier}
+\formatdef{bibglstimegrouphier}
+As \gls{bibglstimegroup} but used for hierarchical groups. It
+expands to the hierarchical time group label. This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglstimegrouphier}}[9]\marg{\idx{param}1\idx{param}2\idx{param}7\idx{param}8}
+\end{codeenv}
+
+\cssection{bibglstimegrouptitlehier}
+\formatdef{bibglstimegrouptitlehier}
+As \gls{bibglstimegrouptitle} but used for hierarchical groups. It
+expands to the hierarchical time group title. This is defined as:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglstimegrouptitlehier}}[9]\marg{\cs{protect}\gls{bibglshiersubgrouptitle}\marg{\idx{param}9}\marg{\idx{param}8}{\idx{param}1}}
+\end{codeenv}
+
+\cssection{bibglssetunicodegrouptitlehier}
+\formatdef{bibglssetunicodegrouptitlehier}
+As \gls{bibglssetunicodegrouptitle} but used for hierarchical groups.
+
+\cssection{bibglsunicodegrouphier}
+\formatdef{bibglsunicodegrouphier}
+As \gls{bibglsunicodegroup} but used for hierarchical groups. This
+expands to the hierarchical group label:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsunicodegrouphier}}[6]\marg{\idx{param}4\idx{param}5\idx{param}3}
+\end{codeenv}
+
+\cssection{bibglsunicodegrouptitlehier}
+\formatdef{bibglsunicodegrouptitlehier}
+As \gls{bibglsunicodegrouptitle} but used for hierarchical groups. This
+expands to the hierarchical group title:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsunicodegrouptitlehier}}[6]\marg{\cs{protect}\gls{bibglshiersubgrouptitle}\marg{\idx{param}6}\marg{\idx{param}5}\marg{\cs{unexpanded}\marg{\idx{param}1}}}
+\end{codeenv}
+
+\cssection{bibglssetmergedgrouptitlehier}
+\formatdef{bibglssetmergedgrouptitlehier}
+As \gls{bibglssetmergedgrouptitle} but used for hierarchical groups.
+
+\cssection{bibglsmergedgrouphier}
+\formatdef{bibglsmergedgrouphier}
+As \gls{bibglsmergedgroup} but used for hierarchical groups. This
+expands to the hierarchical group label:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsmergedgrouphier}}[8]\marg{merged.\idx{param}1}
+\end{codeenv}
+
+\cssection{bibglsmergedgrouptitlehier}
+\formatdef{bibglsmergedgrouptitlehier}
+As \gls{bibglsmergedgrouptitle} but used for hierarchical groups. This
+expands to the hierarchical group title:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsmergedgrouptitlehier}}[8]\marg{\comment{}
+ \cs{unexpanded}\marg{\cs{ifnum}\idx{param}8=0\gls{bibglsmergedgroupfmt}\marg{\idx{param}3}\marg{\idx{param}4}\marg{\idx{param}5}\marg{\idx{param}6}\cmd{else}\gls{bibglsmergedgrouphierfmt}\marg{\idx{param}3}\marg{\idx{param}4}\marg{\idx{param}5}\marg{\idx{param}6}\cmd{fi}}\comment{}
+}
+\end{codeenv}
+This uses \gls{bibglsmergedgroupfmt} ($\meta{level}=0$) or 
+\gls{bibglsmergedgrouphierfmt} ($\meta{level}>0$) to format the title.
+
+\cssection{bibglsmergedgrouphierfmt}
+
+\formatdef{bibglsmergedgrouphierfmt}
+Used by \gls{bibglsmergedgrouphierfmt} to format merged hierarchical group titles.
+The first argument \meta{n} is the total number of groups that have been
+merged, the second argument, \meta{g$_1$} is the first group title,
+\marg{\meta{g$_2$}\ldots\meta{g$_n$}} are the middle group titles
+(empty if $\meta{n}=2$), and \meta{g$_n$} is the last group title.
+
+The default definition depends on whether or not \bibgls\ has
+detected \sty{hyperref} in the document's \ext{log} file. If it has,
+then the definition is:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsmergedgrouphierfmt}}[4]\marg{\idx{param}2, 
+\ics{texorpdfstring}\marg{\marg{\cs{def}\gls{bibglshiersubgrouptitle}\idx{param}\idx{param}1\idx{param}\idx{param}2\idx{param}\idx{param}3{\idx{param}\idx{param}3}\cs{ifcase}\idx{param}1\cmd{or}\cmd{or}\cmd{or}
+\idx{param}3, \cmd{else}\cmd{ldots}, \cmd{fi}
+\idx{param}4}}\marg{\cs{ifcase}\idx{param}1\cmd{or}\cmd{or}\cmd{or}
+\idx{param}3, \cmd{else}\cmd{ldots}, \cmd{fi} \idx{param}4}}
+\end{codeenv}
+Otherwise the definition is:
+\begin{codeenv}
+\cs{providecommand}\marg{\gls{bibglsmergedgrouphierfmt}}[4]\marg{\idx{param}2, 
+\marg{\cs{def}\gls{bibglshiersubgrouptitle}\idx{param}\idx{param}1\idx{param}\idx{param}2\idx{param}\idx{param}3{\idx{param}\idx{param}3}\cs{ifcase}\idx{param}1\cmd{or}\cmd{or}\cmd{or}
+\idx{param}3, \cmd{else}\cmd{ldots}, \cmd{fi}
+\idx{param}4}}
+\end{codeenv}
+This locally redefines \gls{bibglshiersubgrouptitle} to just do its
+final argument to allow for a more compact title.
+
+\renewcommand{\cssectioncmd}{\subsection}
 \section{Flattened Entries}
 \label{sec:flattendefs}
 
@@ -19369,6 +20413,44 @@
 
 \section{Other}
 
+\cssection{bibglssettotalrecordcount}
+
+\formatdef{bibglssettotalrecordcount}
+This command is provided if \longarg{record-count} is used. It's
+used to set the \field{recordcount} field to the total number of
+records for the given entry. This is defined as:
+\begin{codeenv}
+\cmd{providecommand}*\marg{\gls{bibglssettotalrecordcount}}[2]\marg{\comment{}
+ \cs{GlsXtrSetField}\marg{\idx{param}1}\marg{\field{recordcount}}\marg{\idx{param}2}\comment{}
+}
+\end{codeenv}
+
+\cssection{bibglssetrecordcount}
+
+\formatdef{bibglssetrecordcount}
+This command is provided if \longarg{record-count} is used. It's
+used to set the \field{recordcount.counter} field to the total number of
+records associated with the given counter for the given entry. This
+is defined as:
+\begin{codeenv}
+\cmd{providecommand}*\marg{\gls{bibglssetrecordcount}}[3]\marg{\comment{}
+ \cs{GlsXtrSetField}\marg{\idx{param}1}\marg{recordcount.\idx{param}2}\marg{\idx{param}3}\comment{}
+}
+\end{codeenv}
+
+\cssection{bibglssetlocationrecordcount}
+
+\formatdef{bibglssetlocationrecordcount}
+This command is provided if \longarg{record-count-unit} is used.
+It's used to set the \field{recordcount.counter.location} field to
+the total number of records associated with the given location for
+the given entry. This is defined as:
+\begin{codeenv}
+\cmd{providecommand}*\marg{\gls{bibglssetlocationrecordcount}}[4]\marg{\comment{}
+ \cs{GlsXtrSetField}\marg{\idx{param}1}\marg{recordcount.\idx{param}2.\ics{glsxtrdetoklocation}\idx{param}3}\marg{\idx{param}4}\comment{}
+}
+\end{codeenv}
+
 \cssection{bibglshyperlink}
 
 \formatdef{bibglshyperlink}
@@ -19610,6 +20692,18 @@
 \formatdef{bibglscircumchar}
 Expands to a literal circumflex character (\,\idx{circumchar}\,).
 
+\cssection{bibglsaposchar}
+
+\formatdef{bibglsaposchar}
+Expands to a literal apostrophe character (\,\idx{aposchar}\,).
+This command is only provided if \longarg{replace-quotes} is used.
+
+\cssection{bibglsdoublequotechar}
+
+\formatdef{bibglsdoublequotechar}
+Expands to a literal double-quote character (\,\idx{doublequotechar}\,).
+This command is only provided if \longarg{replace-quotes} is used.
+
 \cssection{bibglsuppercase}
 
 \formatdef{bibglsuppercase}

Modified: trunk/Master/texmf-dist/source/support/bib2gls/src/gls2bib-src.zip
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/support/bib2gls/src/texparser-src.zip
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlpsrc/bib2gls.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/bib2gls.tlpsrc	2022-10-15 20:18:37 UTC (rev 64709)
+++ trunk/Master/tlpkg/tlpsrc/bib2gls.tlpsrc	2022-10-15 20:19:58 UTC (rev 64710)
@@ -1,3 +1,5 @@
+depend glossaries-extra
+#
 binpattern f bin/${ARCH}/${PKGNAME}
 binpattern f bin/${ARCH}/convertgls2bib
 docpattern +f texmf-dist/doc/man/man1/convertgls2bib.*



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