diff options
author | Karl Berry <karl@freefriends.org> | 2022-11-05 19:53:30 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-11-05 19:53:30 +0000 |
commit | 2aca2444cf547b6f922e64b2508e8d0070d2a699 (patch) | |
tree | 89093b17e38d53ed39c1a4fa5a60d2f5be2a4dca /Master/texmf-dist/source | |
parent | 5e5bc089585a30c115710cc3d1d570ecc538f47b (diff) |
bib2gls (5nov22)
git-svn-id: svn://tug.org/texlive/trunk@64945 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r-- | Master/texmf-dist/source/support/bib2gls/src/bib2gls-begin.tex | 189 | ||||
-rw-r--r-- | Master/texmf-dist/source/support/bib2gls/src/bib2gls-src.zip | bin | 264591 -> 266494 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/support/bib2gls/src/bib2gls-terms.bib | 2 | ||||
-rw-r--r-- | Master/texmf-dist/source/support/bib2gls/src/bib2gls.bib | 204 | ||||
-rw-r--r-- | Master/texmf-dist/source/support/bib2gls/src/bib2gls.tex | 254 | ||||
-rw-r--r-- | Master/texmf-dist/source/support/bib2gls/src/gls2bib-src.zip | bin | 33144 -> 33176 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/support/bib2gls/src/texparser-src.zip | bin | 1322528 -> 1391320 bytes |
7 files changed, 401 insertions, 248 deletions
diff --git a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-begin.tex b/Master/texmf-dist/source/support/bib2gls/src/bib2gls-begin.tex index 95993aae363..b0c002641e9 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-begin.tex +++ b/Master/texmf-dist/source/support/bib2gls/src/bib2gls-begin.tex @@ -655,7 +655,29 @@ as \gls{commentchar} (percent), \gls{ampchar} (ampersand), \gls{param} (hash), \gls{mshiftchar} (dollar), or \gls{nbspchar} (tilde). Be careful of packages that make other characters active (such as \isty{babel} with its shortcuts). If you are using \isty{inputenc}, this also includes extended Latin characters and -characters from other scripts. If you want to include UTF-8 characters in the +characters from other scripts. + +Recent updates to the \LaTeX\ kernel mean that there's much better +support for UTF-8 characters. Ensure that you have at least +\sty{glossaries} v4.50, \sty{glossaries-extra} v1.49 and +\sty{mfirstuc} 2.08. It's now possible to have: +\begin{codeenv} +\gls{newglossaryentry}\marg{élite}\comment{label} +\marg{ + \field{name} = \marg{élite}, + \field{description} = \marg{group of people regarded as + the best of a particular society or organisation} +} +\end{codeenv} +Regardless of whether or not you use a native UTF-8 engine, provided +you have a new \TeX\ distribution. + +\begin{important} +The UTF-8 information below refers to older +versions and older kernels. +\end{important} + +If you want to include UTF-8 characters in the label then you must use a \TeX\ engine with native Unicode support (that is, \XeLaTeX\ or \LuaLaTeX). @@ -4665,36 +4687,14 @@ Additionally, depending on the page style, the section argument may also be reproduced in the page header. This repeated use of the same material can cause complications, in particular it can prematurely triggering the \idx{firstuseflag} switch and cause unwanted -indexing. If the content appears in the page header and the page -styles converts headers to upper case, this can also cause a -problem. +indexing. -For example: -\begin{codeenv} -\cmd{documentclass}\marg{book} -\strut -\cmd{usepackage}\marg{lipsum}\comment{provides \cmd{lipsum}} -\cmd{usepackage}\marg{glossaries} -\strut -\gls{newglossaryentry}\marg{sample}\marg{\field{name}=\marg{sample},\field{description}=\marg{an example}} -\strut -\cmd{begin}{document} -\gls{chapter}\marg{A \gls{gls}\marg{sample} chapter} -\cmd{lipsum} \comment{dummy text} -\cmd{end}\marg{document} -\end{codeenv} -I've used \csfmt{lipsum} here to create some dummy text that ensures -a multi-paged document because the problem doesn't occur until the second -page. The error message is: -\begin{verbatim} -Glossary entry `SAMPLE' has not been defined. -\end{verbatim} -The problem here is that the chapter title is copied to the header -(which doesn't appear on the chapter's first page) but the header -uses \gls{MakeUppercase}, which can't expand \gls{gls} but it does -change the label, so \code{\gls{gls}\marg{sample}} is converted to -\code{\gls{gls}\marg{SAMPLE}}, but there's no entry with that label. -(Labels are case-sensitive.) +If the content appears in the page header and the page +styles converts headers to upper case, this can also cause a +problem. However, if you make sure you have \sty{glossaries} v4.50+, +\sty{glossaries-extra} v1.49+ and \sty{mfirstuc} v2.08+ with a +recent \TeX\ distribution, most of the case-changing problems should +now no longer occur. Here's an example that doesn't cause an error (because there's not enough text to trigger a page break) but does cause unexpected output: @@ -4769,8 +4769,8 @@ case-change hasn't been applied, so the page heading appears as: \begin{result} 4\hfill \emph{CHAPTER 1. A CHAPTER ABOUT hypertext markup language} \end{result} -This can be corrected by setting the \catattr{headuc} attribute to -\code{true}: +This shouldn't occur any more, but if it does, it can be corrected by +setting the \catattr{headuc} attribute to \code{true}: \begin{codeenv} \gls{glssetcategoryattribute}\marg{abbreviation}\marg{headuc}\marg{true} \end{codeenv} @@ -4802,14 +4802,14 @@ the \sty{slantsc} package. Another possibility is to redefine: which is used by the \qt{sc} abbreviation styles: \begin{codeenv} \cmd{renewcommand}\marg{\gls{glsabbrvscfont}}[1]\marg{\comment{} - \gls{glsxtrifinmark}\marg{\gls{MakeTextUppercase}\marg{\gls{param}1}}\marg{\gls{textsc}\marg{\gls{param}1}}\comment{} + \gls{glsxtrifinmark}\marg{\gls{glsuppercase}\marg{\gls{param}1}}\marg{\gls{textsc}\marg{\gls{param}1}}\comment{} } \end{codeenv} This uses: \nosecformatdef{glsxtrifinmark} which expands to \meta{true} in headings and the \gls{toc}, otherwise it expands to \meta{false}. This use of -\gls{MakeTextUppercase} replaces the need for the \catattr{headuc} +\gls{glsuppercase} replaces the need for the \catattr{headuc} attribute. Both \catattr{headuc} and the above redefinition of \gls{glsabbrvscfont} will cause the abbreviation to appear in \idx{uppercase} in the \gls{toc}. If you don't want this, @@ -4826,7 +4826,7 @@ which makes \gls{glsxtrifinmark} expand to \meta{false} in the \cmd{usepackage}\marg{glossaries-extra} \strut \cmd{renewcommand}\marg{\gls{glsabbrvscfont}}[1]\marg{\comment{} - \gls{glsxtrifinmark}\marg{\gls{MakeTextUppercase}\marg{\gls{param}1}}\marg{\gls{textsc}{\gls{param}1}}\comment{} + \gls{glsxtrifinmark}\marg{\gls{glsuppercase}\marg{\gls{param}1}}\marg{\gls{textsc}{\gls{param}1}}\comment{} } \strut \gls{setabbreviationstyle}\marg{\abbrstyle{long-short-sc}} @@ -4867,125 +4867,6 @@ Instead, use \gls{glsentrysymbol}: Better still, use commands like \gls{glsxtrpostlinkAddSymbolOnFirstUse} (see \sectionref{sec:postlinkhooks}). -The next most problematic nesting is the use of \gls{gls} in -abbreviations. It's far more of a problem if you only use the base -\sty{glossaries} package. For example: -\begin{codeenv} -\cmd{documentclass}\marg{book} -\strut -\gls{usepackage}\marg{glossaries} -\strut -\gls{newacronym}\marg{ssi}\marg{SSI}\marg{server-side includes} -\gls{newacronym}\marg{html}\marg{HTML}\marg{hypertext markup language} -\gls{newacronym}\marg{shtml}\marg{SHTML}\marg{\gls{gls}\marg{ssi} enabled \gls{gls}\marg{html}}\incorrect -\strut -\cmd{begin}\marg{document} -\gls{gls}\marg{shtml}. -\cmd{end}\marg{document} -\end{codeenv} -This results in: -\begin{result} -server-side includes (SSI) enabled hypertext markup language (HTML) (SHTML). -\end{result} -The \sty{glossaries-extra} package temporarily changes \gls{gls} -within the \idx{link-text} to avoid this type of problem. -\begin{codeenv} -\cmd{documentclass}\marg{book} -\strut -\cmd{usepackage}\marg{glossaries-extra} -\strut -\gls{newabbreviation}\marg{ssi}\marg{SSI}\marg{server-side includes} -\gls{newabbreviation}\marg{html}\marg{HTML}\marg{hypertext markup language} -\gls{newabbreviation}\marg{shtml}\marg{SHTML}\marg{\gls{gls}\marg{ssi} enabled \gls{gls}\marg{html}} -\strut -\cmd{begin}\marg{document} -\gls{gls}\marg{shtml}. -\cmd{end}\marg{document} -\end{codeenv} -This now produces: -\begin{result} -SSI enabled HTML (SHTML). -\end{result} -This doesn't seem so bad, but now let's see what happens if the -\catattr{glossdesc} is set to \code{firstuc}: -\begin{codeenv} -\cmd{documentclass}\marg{book} -\strut -\cmd{usepackage}\marg{glossaries-extra} -\strut -\gls{glssetcategoryattribute}\marg{abbreviation}\marg{\catattr{glossdesc}}\marg{firstuc} -\gls{newabbreviation}\marg{ssi}\marg{SSI}\marg{server-side includes} -\gls{newabbreviation}\marg{html}\marg{HTML}\marg{hypertext markup language} -\gls{newabbreviation}\marg{shtml}\marg{SHTML}\marg{\gls{gls}\marg{ssi} enabled \gls{gls}\marg{html}}\incorrect -\strut -\cmd{begin}\marg{document} -\gls{gls}\marg{shtml}. -\gls{printunsrtglossary} -\cmd{end}\marg{document} -\end{codeenv} -This now causes an error: -\begin{verbatim} -! Missing \endcsname inserted. -<to be read again> - \protect -\end{verbatim} -The problem here is that the first-letter upper-casing command is -being applied to \code{\gls{gls}\marg{ssi}}. This results in -\code{\gls{gls}\marg{\gls{MakeTextUppercase} ssi}} which has an -invalid label. A workaround is to insert an empty group before -the initial \gls{gls}: -\begin{codeenv} -\gls{newabbreviation}\marg{shtml}\marg{SHTML}\marg{\marg{}\gls{gls}\marg{ssi} enabled \gls{gls}\marg{html}} -\end{codeenv} -However, \gls{gls} functions normally within the glossary, so the -result is: -\begin{result} -\textbf{SSI} Server-side includes - -\textbf{HTML} Hypertext markup language - -\textbf{SHTML} server-side includes (SSI) enabled hypertext markup language (HTML) -\end{result} -Since neither \code{ssi} nor \code{html} have been referenced in the -document, the reference in the \code{shtml} description in the -glossary is the \idx{firstuse} for both of them, so they show the -full form, but the upper-casing can't be applied. This means that -the description for the \code{shtml} entry doesn't start with an -\idx{uppercase} letter. The best solution is to avoid using -\gls{gls} in the \field{long} field: -\begin{codeenv} -\cmd{documentclass}\marg{book} -\strut -\cmd{usepackage}[\styopt{record}]\marg{glossaries-extra} -\strut -\gls{glssetcategoryattribute}\marg{abbreviation}\marg{glossdesc}\marg{firstuc} -\strut -\gls[noindex]{glsdefpostdesc}\marg{abbreviation}\marg{\comment{} - \gls{glsxtrifhasfield}\marg{\field{seealso}}\marg{\gls{glscurrententrylabel}}\comment{} - \marg{ (\gls{emph}\marg{see also} \gls[noindex=false]{glsxtrseelist}\marg{\gls{glscurrentfieldvalue}})}\comment{} - \marg{}\comment{} -} -\strut -\gls{newabbreviation}\marg{ssi}\marg{SSI}\marg{server-side includes} -\gls{newabbreviation}\marg{html}\marg{HTML}\marg{hypertext markup language} -\gls{newabbreviation}\oarg{\field{seealso}=\marg{ssi,html}}\marg{shtml}\marg{SHTML} -\marg{server-side includes enabled hypertext markup language} -\strut -\cmd{begin}\marg{document} -\gls{Gls}\marg{shtml}. -\gls{printunsrtglossary} -\cmd{end}\marg{document} -\end{codeenv} -I've used the \field{seealso} key here. (The value should be a -comma-separated list of labels.) It doesn't show -in the glossary by default as it needs an indexing application to add it -automatically to the \idx{locationlist}, so I've used the -\idx{postdescriptionhook} to append the cross-reference. The -\styopt{record} option is needed, otherwise the default -\gls{makeindex} setting will be assumed and an error will occur as -the associated \gls{makeindex} file hasn't been opened. If \bibgls\ -support is added then the hook won't be needed. - \section{Shortcut Commands or Active Characters} \label{sec:activeshortcuts} diff --git a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-src.zip b/Master/texmf-dist/source/support/bib2gls/src/bib2gls-src.zip Binary files differindex fc984a1dfe6..02674421879 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-src.zip +++ b/Master/texmf-dist/source/support/bib2gls/src/bib2gls-src.zip diff --git a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-terms.bib b/Master/texmf-dist/source/support/bib2gls/src/bib2gls-terms.bib index 10cb3b3eece..8ca871f6053 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-terms.bib +++ b/Master/texmf-dist/source/support/bib2gls/src/bib2gls-terms.bib @@ -409,7 +409,7 @@ user1={idx.ignoredglossary}, description={A glossary defined with commands like \cs{newignoredglossary}. An ignored glossary doesn't have an -associated title (so it one is required it needs to be explicitly +associated title (so if one is required it needs to be explicitly set), and isn't picked up by iterative commands such as \cs{printunsrtglossaries}. See \sectionref{sec:newglossary}.} } diff --git a/Master/texmf-dist/source/support/bib2gls/src/bib2gls.bib b/Master/texmf-dist/source/support/bib2gls/src/bib2gls.bib index b55acf3f203..9f2d002928b 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/bib2gls.bib +++ b/Master/texmf-dist/source/support/bib2gls/src/bib2gls.bib @@ -1078,6 +1078,16 @@ given label}, category={command} } +@mainglscommand{glssubgroupheading, + name={\csfmt{gls\-sub\-group\-heading}}, + user1={\margm{previous level}\margm{level}\margm{parent-label}\margm{group-label}}, + description={formats the heading for the \idx{sub-group} identified by the +given label}, + topics={glossarystylecommands,formattingcommands}, + note={\styfmt{glossaries-extra} v1.49+}, + category={command} +} + @bibglscommand{bibglssetlastgrouptitle, name={\csfmt{bib\-gls\-set\-last\-group\-title}}, user1={\margm{cs}\margm{specs}}, @@ -1108,7 +1118,7 @@ given label}, @bibglscommand{bibglsgrouplevel, name={\csfmt{bib\-gls\-group\-level}}, user1={\margm{label}{n}}, - description={expands to the group label for hierarchical level \meta{n} + description={expands to the \idx{sub-group} label for hierarchical level \meta{n} where \meta{label} is the label that would normally be applied to level~0}, topics={glossarystylecommands,groupcommands}, @@ -1119,7 +1129,7 @@ given label}, @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 + description={formats the title for a \idx{hiergroup} where the normal non-hierarchical title would be \meta{title}}, topics={glossarystylecommands,groupcommands}, note={\bibgls}, @@ -3168,6 +3178,13 @@ field\dhyphen locale}}, parent={resourceoptions} } +@resourceoption{opt.merge-ranges, + name={\csoptfmt{merge\dhyphen ranges}}, + user1={\meta{boolean}}, + category={resourceoption}, + parent={resourceoptions} +} + @resourceoption{opt.min-loc-range, name={\csoptfmt{min\dhyphen loc\dhyphen range}}, user1={\meta{value}}, @@ -10570,6 +10587,73 @@ primary formats, if enabled.}, name={custom group} } +@index{sub-group} +@index{hiergroup, + name={hierarchical group}, + alias={sub-group} +} +@index{smallgroup, + name={small group} +} + +@indexplural{group} +@index{groups.letter, + parent={group}, + name={letter}, + text={letter group}, + alias={lettergroup}} +@index{groups.nonletter, + parent={group}, + name={non-letter}, + text={non-letter group}, + alias={nonlettergroup} +} +@index{groups.symbol, + parent={group}, + name={symbol}, + text={symbol group}, + alias={symbolgroup}} +@index{groups.empty, + parent={group}, + name={empty}, + text={empty group}, + alias={emptygroup}} +@index{groups.number, + parent={group}, + name={number}, + text={number group}, + alias={numbergroup}} +@index{groups.datetime, + parent={group}, + name={datetime}, + text={datetime group}, + alias={datetimegroup}} +@index{groups.date, + parent={group}, + name={date}, + text={date group}, + alias={dategroup}} +@index{groups.time, + parent={group}, + name={time}, + text={time group}, + alias={timegroup}} +@index{groups.custom, + parent={group}, + name={custom}, + text={custom group}, + alias={customgroup}} +@index{groups.sub, + parent={group}, + name={hierarchical}, + text={hierarchical group}, + alias={sub-group}} +@index{groups.small, + parent={group}, + name={small}, + text={small group}, + alias={smallgroup}} + @index{localeprovider, name={locale provider} } @@ -10591,6 +10675,24 @@ primary formats, if enabled.}, name = {location list} } +@index{range} +@index{explicit-range, + parent={range}, + name={explicit}, + text={explicit range} +} +@index{implicit-range, + parent={range}, + name={implicit}, + text={implicit range} +} +@index{interloper,parent={range}} +@index{locationrange, + parent={locationlist}, + name={ranges}, + alias={range} +} + @index{postlinkhook, name={post-link hook} } @@ -12703,14 +12805,31 @@ field value}, category={command} } +@glscommand{ifglsfieldvoid, + name={\csfmt{if\-gls\-field\-void}}, + user1={\margm{field label}\margm{entry label}\margm{true}\margm{false}}, + description={expands to \meta{true} if the given entry doesn't +exist, or exists but doesn't have the field (identified by its +internal field label) defined or does have the field defined but the +field is empty. Otherwise expands to \meta{false}. This is +essentially like \gls{GlsXtrIfFieldUndef} but also +tests for an empty value}, + topics={conditional,fieldrefcommands}, + note={\styfmt{glossaries} v4.50+\texparserdefnote}, + seealso={GlsXtrIfFieldUndef}, + category={command} +} + @glscommand{GlsXtrIfFieldUndef, name={\csfmt{Gls\-Xtr\-If\-Field\-Undef}}, user1={\margm{field label}\margm{entry label}\margm{true}\margm{false}}, - description={tests if the given field isn't defined for the given + description={tests if the given field (identified by its +internal field label) isn't defined for the given entry, which may also not exist}, topics={conditional,fieldrefcommands}, note={\styfmt{glossaries-extra} v1.23+}, - category={command} + category={command}, + seealso={ifglsfieldvoid}, } @glscommand{GlsXtrIfFieldEqStr, @@ -13566,6 +13685,30 @@ letter to \idx{uppercase}}, category={command} } +@glscommand{glsstartrange, + name={\csfmt{gls\-start\-range}}, + user1={\oargm{options}\margm{label list}}, + description={essentially like + \code{\cs{glsaddeach}\oarg{\glsopt[\idx{openrange}]{format},\meta{options}}\margm{label-list}}. + If \glsopt{format} is used in \meta{options}, the open marker + \idx{openrange} will be inserted in front of the value}, + topics={indexing}, + note={\styfmt{glossaries-extra} v1.50+}, + category={command} +} + +@glscommand{glsendrange, + name={\csfmt{gls\-end\-range}}, + user1={\oargm{options}\margm{label list}}, + description={essentially like + \code{\cs{glsaddeach}\oarg{\glsopt[\idx{closerange}]{format},\meta{options}}\margm{label-list}}. + If \glsopt{format} is used in \meta{options}, the close marker + \idx{closerange} will be inserted in front of the value}, + topics={indexing}, + note={\styfmt{glossaries-extra} v1.50+}, + category={command} +} + @glsaddoption{glsadd.thevalue, name={\csoptfmt{thevalue}}, user1={\margm{value}}, @@ -14093,6 +14236,43 @@ usual delay}, category={command} } +@command{NewDocumentCommand, + name={\csfmt{New\-Document\-Com\-mand}}, + user1={\margm{cs}\margm{arg specs}\margm{code}}, + description={defines a new robust command (only partially +implemented by \TeX\ Parser Library)}, + note={\LaTeX3 command\texparserdefnote}, + category={command} +} + +@command{RenewDocumentCommand, + name={\csfmt{Renew\-Document\-Com\-mand}}, + user1={\margm{cs}\margm{arg specs}\margm{code}}, + description={redefines a new robust command (only partially +implemented by \TeX\ Parser Library)}, + note={\LaTeX3 command\texparserdefnote}, + category={command} +} + +@command{ProvideDocumentCommand, + name={\csfmt{Provide\-Document\-Com\-mand}}, + user1={\margm{cs}\margm{arg specs}\margm{code}}, + description={provides a robust command, if not already defined (only partially +implemented by \TeX\ Parser Library)}, + note={\LaTeX3 command\texparserdefnote}, + category={command} +} + +@command{DeclareDocumentCommand, + name={\csfmt{Declare\-Document\-Com\-mand}}, + user1={\margm{cs}\margm{arg specs}\margm{code}}, + description={defines a robust command, regardless of whether or not + it has already been defined (only partially +implemented by \TeX\ Parser Library)}, + note={\LaTeX3 command\texparserdefnote}, + category={command} +} + @command{section, name={\csfmt{section}}, user1={\oargm{\idx{toc} title}\margm{title}}, @@ -16646,6 +16826,22 @@ has three or more items}, category={command} } +@command{glslowercase, + name={\csfmt{gls\-lower\-case}}, + user1={\margm{text}}, + description={converts \meta{text} to lower case}, + note={\styfmt{glossaries} v4.50+\texparserdefnote}, + category={command} +} + +@command{glsuppercase, + name={\csfmt{gls\-upper\-case}}, + user1={\margm{text}}, + description={converts \meta{text} to \idx{uppercase}}, + note={\styfmt{glossaries} v4.50+\texparserdefnote}, + category={command} +} + @command{MakeTextLowercase, name={\csfmt{Make\-Text\-Lower\-case}}, user1={\margm{text}}, diff --git a/Master/texmf-dist/source/support/bib2gls/src/bib2gls.tex b/Master/texmf-dist/source/support/bib2gls/src/bib2gls.tex index 0bee0fd3146..dd56fedc310 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/bib2gls.tex +++ b/Master/texmf-dist/source/support/bib2gls/src/bib2gls.tex @@ -1663,14 +1663,14 @@ the order in which the glossaries were defined. You may use preferred order. \end{important} -\item[\field{group}] The entries within a glossary can form groups +\item[\field{group}] The entries within a glossary can form \idxpl{group} as a by-product of the sorting method. This must be enabled with the \longarg{group} switch and isn't available for the sort methods listed in \tableref{tab:sortoptionsnosort}. The group label is stored in the \field{group} field. This is an internal field that typically shouldn't be set in the \ext{bib} file. -You can specify your own custom groups but if you do so you must +You can specify your own \idxpl{customgroup} but if you do so you must ensure that the terms are ordered in such a way that they are gathered according to group. This is typically done by splitting the glossary into blocks using a separate \gls{GlsXtrLoadResources} with @@ -1719,7 +1719,7 @@ commands within the document. For example: Suppose that your list of terms spans many pages and you feel it would be helpful to the reader to split it up into letter groups then you would need to run \bibgls\ with the \longarg{group} switch -and use a glossary style that supports letter groups for that +and use a glossary style that supports \idxpl{lettergroup} for that glossary. For example: \begin{codeenv} \cs{printunsrtglossary}\oarg{\printglossopt[indexgroup]{style}} @@ -3042,7 +3042,7 @@ The \styfmt{glossaries-extra} \styopt{record} package option automatically creates a new internal field called \field{group}. If the \longarg{group} switch is used with the default \csopt[auto]{group} option then, when sorting, \bibgls\ will try -to determine the letter group for each entry and assign it to the +to determine the \idx{group} for each entry and assign it to the \field{group} field. (Some \csopt{sort} options ignore this setting.) This value will be picked up by \ics{printunsrtglossary} if group headings are required (for example with the @@ -3052,6 +3052,11 @@ if group headings are required (for example with the the glossary, there's no need to use this switch. Note that this switch doesn't automatically select an appropriate glossary style. +If you want \idxpl{sub-group}, you will need to use the \csopt{group-level} +resource option and ensure you have \sty{glossaries-extra} v1.49+. +\Idxpl{smallgroup} can be merged with the \csopt{merge-small-groups} +resource option. + \begin{important} The \field{group} field should typically not be set in the \ext{bib} file and will trigger a warning if found. The explicit use of the @@ -3514,13 +3519,18 @@ Don't check for instances of \ics{citation} in the \ext{aux} file \argsection{collapse-same-location-range} -Collapse any explicit \gls{location} range into a normal \gls{record} if -the \glspl{location} are the same (default). +Collapse any \idx{explicit-range} into a normal \gls{record} if +the start and end \glspl{location} are the same (default). +This record will be treated as a normal \gls{location} that can be +merged with neighbouring \glspl{location}, regardless of +\csopt{merge-ranges}. \argsection{no-collapse-same-location-range} -Don't collapse any explicit \gls{location} range into a normal -\gls{record} if the \glspl{location} are the same. +Don't collapse any \idx{explicit-range} into a normal +\gls{record} if the start and end \glspl{location} are the same. +The \idx{explicit-range} will only be able to merge with +neighbouring \glspl{location} if \csopt[true]{merge-ranges}. \argsection{map-format} @@ -3539,8 +3549,8 @@ This essentially means that if there's a \gls{record} conflict involving \encap{emph}, try replacing \encap{emph} with \encap{hyperbf} and see if that resolves the conflict. -Note that if the conflict includes a range formation, the -range takes precedence. +Note that if the conflict includes a \idx{range} formation, the +\idx{range} takes precedence. The mapping tests are applied as the records are read. For example, suppose the records are listed in the \ext{aux} file as: @@ -3824,11 +3834,12 @@ switch with a comma-separated list of formats that should be retained. Note that exact duplicates will still be merged. This switch has a cumulative effect. -Take care if you use this switch and you have an explicit range with +Take care if you use this switch and you have an \idx{explicit-range} with coincident start and end locations. If the \glsdisp{principallocation}{principal record} is between -the start and end format markers then the range can't collapse -to an ordinary \gls{record}. +the start and end format markers then the \idx{range} can't collapse +to an ordinary \gls{record}. (You may need to use +\csopt[true]{merge-ranges}.) \argsection{no-retain-formats} @@ -8648,10 +8659,11 @@ The default setting is \csopt[no value]{missing-parent-category}. \optsection{group-level} -If letter group formation is enabled (see \csopt{group}, +If letter \idx{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}. +This option allows the group label to be assigned to \glspl{sub-entry} +if \idxpl{sub-group} are required. The value may be one of the following: \begin{itemize} \item \meta{n}: only assign the group for level~\meta{n} entries; @@ -8671,10 +8683,10 @@ 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 +The \idx{hiergroup} 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 +for \glspl{top-levelentry} then the \idx{hiergroup} 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 @@ -8684,21 +8696,30 @@ 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+. +\sty{glossaries-extra} v1.49+, which provides \cs{glssubgroupheading}. \end{important} +\Idxpl{sub-group} are implemented by the glossary style command: +\nosecformatdef{glssubgroupheading} +The \sty{glossaries-extra} package automatically implements: +\begin{codeenv} +\cmd{renewcommand}*\marg{\cs{glssubgroupheading}}[4]\marg{\cs{glsgroupheading}\marg{\idx{param}4}} +\end{codeenv} +whenever a style is set, so that if the style doesn't provide a +definition for this command, it will behave like \cs{glsgroupheading}. + \optsection{merge-small-groups} -Merges consecutive groups that have less than \meta{n} entries. The +Merges consecutive \idxpl{smallgroup} 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 +If hierarchical \idxpl{sub-group} 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. +own \idx{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: @@ -12338,7 +12359,7 @@ 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 -\iglspl{ignoredrecord}) with no range formations. Any explicit range +\iglspl{ignoredrecord}) with no \idx{range} formations. Any \idx{explicit-range} markup is stripped from the \glsopt{format} information to leave just the \idx{encap} name, so you just get the start and end \glspl{location} added as individual elements but they are still @@ -12396,34 +12417,54 @@ The \csfmt{hyper}\meta{xx} set of commands all internally use \gls{location}. See Table~6.1 in the \styfmt{glossaries}~\cite{glossaries} user manual for a list of all the \csfmt{hyper}\meta{xx} commands. -Ranges can be explicitly formed using the parenthetical +\Idxpl{range} can be explicitly formed using the parenthetical syntax \glsopt[\idx{openrange}]{format} and \glsopt[\idx{openrange}]{format} or \glsopt[\idx{openrange}\meta{csname}]{format} and \glsopt[\idx{closerange}\meta{csname}]{format} (where \meta{csname} is again the name of a text-block command without the initial backslash) in the optional -argument of commands like \ics{gls} or \ics{glsadd}. These will always -form a range, regardless of \csopt{min-loc-range}, and will be -encapsulated by \gls!{bibglsrange}. (This command is not used with -ranges that are formed by collating consecutive \glspl{location}.) The -initial marker is stripped from the \meta{format} argument of the -\gls{location} formatting commands, such as \gls{glsnoidxdisplayloc}, to -allow for easy conversion to the corresponding text-block command. - -Explicit ranges don't merge with neighbouring \glspl{location}, but -will absorb any single \glspl{location} within the range that don't -conflict. (Conflicts will be moved to the start of the explicit -range.) For example, if \code{\cs{gls}\marg{sample}} is used on -page~1, +argument of commands like \ics{gls} or \ics{glsadd}. With +\sty{glossaries-extra} v1.50+, you can also use \ics{glsstartrange} +and \ics{glsendrange} (which is useful if the unbalanced parentheses +upset syntax highlighting). + +These \idxpl{explicit-range} will always form a \idx{range}, +regardless of \csopt{min-loc-range}, unless the start and end +coincide and \longarg{collapse-same-location-range} is in effect. +The \idx{explicit-range} will be encapsulated with \gls!{bibglsrange} +(unless \csopt[true]{merge-ranges}). (This command is not used with +\idxpl{implicit-range} that are formed by collating consecutive \glspl{location}.) +The initial marker is stripped from the \meta{format} argument of +the \gls{location} formatting commands, such as +\gls{glsnoidxdisplayloc}, to allow for easy conversion to the +corresponding text-block command. + +\Idxpl{explicit-range} don't merge with neighbouring +\glspl{location} (unless \csopt[true]{merge-ranges}), but will +absorb any individual \glspl{location} within the \idx{range} that doesn't +conflict. (Conflicts, denoted \idxpl{interloper}, will be moved to the start of the +\idx{explicit-range}, regardless of \csopt{merge-ranges}.) +For example, if \code{\cs{gls}\marg{sample}} is used on page~1, \code{\cs{gls}\oarg{\glsopt[\idx{openrange}]{format}}\marg{sample}} is used on page~2, \code{\cs{gls}\marg{sample}} is used on page~3, and \code{\cs{gls}\oarg{\glsopt[\idx{closerange}]{format}}\marg{sample}} is used on page~4, then the \gls{locationlist} will be 1, 2--4. The -entry on page~3 is absorbed into the explicit range, but the range -can't be expanded to include page~1. If the entry on page~3 had a -different format to the explicit range, for example +entry on page~3 is absorbed into the \idx{explicit-range}, but, with +the default \csopt[false]{merge-ranges}, the +\idx{range} can't be expanded to include page~1. If the entry on page~3 had a +different format to the \idx{explicit-range}, for example \code{\cs{gls}\oarg{\glsopt[\encap{textbf}]{format}}\marg{sample}} -then it would cause a warning and be moved before the start of the -range so that the \gls{locationlist} would then be 1, \textbf{3}, 2--4. +then this will cause a warning and the \idx{interloper} will be +moved before the start of the \idx{range} so that the +\gls{locationlist} would then be 1, \textbf{3}, 2--4. + +The \csopt[true]{merge-ranges} option will make \idxpl{explicit-range} +behave like \idxpl{implicit-range}, which allows them to merge with +neighbouring \idxpl{range}. The \gls{bibglsrange} command won't be used in +this case (regardless of whether or not the \idx{range} was merged with +neighbouring \glspl{location}). Options such as +\csopt{min-loc-range} won't have an effect on the merged \idx{range}, but +will still effect \idxpl{implicit-range} that haven't been merged with an +\idx{explicit-range}. An \igls{ignoredrecord} identifies a term that needs to be treated as though it has a \gls{record} for selection purposes, but the @@ -12464,14 +12505,14 @@ If you also want to drop front matter \glspl{location} as well: \cs{GlsXtrSetDefaultNumberFormat}\marg{\encap{glsignore}} \end{codeenv} -Note that explicit range formations aren't discarded, so if -\encap{glsignore} is used in a range, such as: +Note that \idx{explicit-range} formations aren't discarded, so if +\encap{glsignore} is used in a \idx{range}, such as: \begin{codeenv} \ics{glsadd}\oarg{\glsopt[\idx{openrange}\encap{glsignore}]{format}}\marg{sample} \ldots \cs{glsadd}\oarg{\glsopt[\idx{closerange}\encap{glsignore}]{format}}\marg{sample} \end{codeenv} -then the range will be included in the \gls{locationlist} (encapsulated +then the \idx{range} will be included in the \gls{locationlist} (encapsulated with \ics{glsignore}), but this case would be a rather odd use of this special format and is not recommended. @@ -12531,8 +12572,8 @@ then the \ext{aux} file will contain: This is a partial \gls{record} match. In this case, \bibgls\ makes the following tests: \begin{itemize} -\item If one of the formats includes a range formation, the -range takes precedence. +\item If one of the formats includes an \idx{explicit-range} formation marker, the +\idx{range} takes precedence. \item If one of the formats is \encap{glsnumberformat} (as in the above example) or an \igls{ignoredrecord} format such as @@ -12661,7 +12702,8 @@ usual \igls{locationlist}; \igls{locationlist}. You may want to consider using the \longswitch{retain-formats} switch with this setting if you don't want to lose a partial \gls{location} match (for example, if the -\gls{principallocation} coincides with the start of an explicit range). +\gls{principallocation} coincides with the start of an +\idx{explicit-range}). \end{itemize} @@ -12812,7 +12854,7 @@ the \field{location} field due to the \csopt[remove]{save-principal-locations} setting. This can lead to a ragged \gls{locationlist}. The option \csopt[default format]{save-principal-locations} can allow the -\gls{principallocation} to be absorbed into a range. +\gls{principallocation} to be absorbed into a \idx{range}. The \gls{mainglossary} records are added through the category-independent post-name hook with \cs{glsadd}. This won't be implemented until the entries are actually @@ -12935,7 +12977,7 @@ define the custom commands as follows: This is more useful if you want to simply omit the \code{\glsopt[primaryfmt]{format}} option (just remove it from the above four definitions), which makes it easier to merge the \glspl{location} into -ranges in the index. +\idxpl{range} in the index. \optsection{primary-loc-counters} @@ -13073,18 +13115,39 @@ first, followed by the \counter{chapter} group. Whereas with: then the \field{primarylocations} field will have the \counter{chapter} group first, followed by the \counter{page} group. +\optsection{merge-ranges} + +This boolean option determines whether or not \idxpl{explicit-range} should +merge with neighbouring \glspl{location} on either side of the +\idx{range}. The default setting is \csopt[false]{merge-ranges}. + +Note that \gls{bibglsrange} won't be used with +\csopt[true]{merge-ranges}, regardless of whether or not the \idx{range} +was merged with neighbouring \glspl{location}. Options such as +\csopt{min-loc-range}, \csopt{suffixF} and \csopt{suffixFF} +won't have an effect on the merged range, but +will still effect \idxpl{implicit-range} that haven't been merged with an +\idx{explicit-range}. + +Regardless of the value of this option, \idxpl{interloper} will still be +moved to the start of the \idx{range} and encapsulated with +\gls{bibglsinterloper}. + \optsection{min-loc-range} By default, three or more consecutive \glspl{location} \meta{loc-1}, \meta{loc-2}, \ldots, \meta{loc-n} are compressed into -the range \code{\meta{loc-1}\ics{delimR} \meta{loc-n}}. Otherwise +the \idx{range} \code{\meta{loc-1}\ics{delimR} \meta{loc-n}} +(an \idx{implicit-range}). Otherwise the \glspl{location} are separated by \gls!{bibglsdelimN} or \gls!{bibglslastDelimN}. -As mentioned above, these aren't merged with explicit range formations. +As mentioned above, these aren't merged with \idx{explicit-range} +formations unless \csopt[true]{merge-ranges}. -You can change this with the \csopt{min-loc-range} setting where +You can change how many consecutive \glspl{location} are need to +form an \idx{implicit-range} with the \csopt{min-loc-range} setting where \meta{value} is either \optfmt{none} (don't form ranges) or an integer greater than one indicating how many consecutive -\glspl{location} should be converted into a range. +\glspl{location} should be converted into a \idx{range}. \bibgls\ determines if one \gls{location} \code{\margm{prefix-2}\margm{counter-2}\margm{format-2}\margm{location-2}} @@ -13278,7 +13341,8 @@ For example, if \meta{location-1} is \qt{B} and \meta{location-2} is \qt{C}, then $n_1 = 66$ and $n_2 = 67$. Since $n_2 = 67 = 66+1= n_1+1$ then \meta{location-2} immediately follows \meta{location-1}. -This is used in the range formations within the \glspl{locationlist} (as described +This is used in the \idx{implicit-range} formations within +the \glspl{locationlist} (as described in the above section). So, for example, the list \qt{1, 2, 3, 5, 7, 8, 10, 11, 12, 58, 59, 61} becomes @@ -13288,9 +13352,9 @@ The automatically indexing of commands like \ics{gls} means that the \glspl{locationlist} can become long and ragged. You could deal with this by switching off the automatic indexing and only explicitly index pertinent use or you can adjust -the value of \optfmt{max-loc-diff} so that a range can be formed even +the value of \optfmt{max-loc-diff} so that a \idx{range} can be formed even if there are one or two gaps in it. -By default, any \gls{location} ranges that have skipped gaps in this +By default, any \idxpl{range} that have skipped gaps in this manner will be followed by \gls!{bibglspassim}. The default definition of this command is obtained from the resource file. For English, this is \verb*| passim| (space followed by \qt{passim}). @@ -13302,9 +13366,11 @@ term. \optsection{suffixF} -If set, a range consisting of two consecutive \glspl{location} -\meta{loc-1} and \meta{loc-2} will be -displayed in the \gls{locationlist} as \meta{loc-1}\meta{value}. +If set, an \idx{implicit-range} consisting of two consecutive +\glspl{location} \meta{loc-1} and \meta{loc-2} will be displayed in +the \gls{locationlist} as \meta{loc-1}\meta{value}. This option +doesn't affect \idxpl{explicit-range}, even with +\csopt[true]{merge-ranges}. Note that \csopt[\empty]{suffixF} sets the suffix to the empty string. To remove the suffix formation use @@ -13314,9 +13380,11 @@ The default is \csopt[none]{suffixF}. \optsection{suffixFF} -If set, a range consisting of three or more consecutive \glspl{location} -\meta{loc-1} and \meta{loc-2} will be +If set, an \idx{implicit-range} consisting of three or more +consecutive \glspl{location} \meta{loc-1} and \meta{loc-2} will be displayed in the \gls{locationlist} as \meta{loc-1}\meta{value}. +This option doesn't affect \idxpl{explicit-range}, even with +\csopt[true]{merge-ranges}. Note that \csopt[\empty]{suffixFF} sets the suffix to the empty string. To remove the suffix formation use @@ -13331,9 +13399,9 @@ The \meta{value} may be an integer \meta{n} or \optfmt{false} (equivalent to \csopt[3]{compact-ranges}). If no \meta{value} is specified, \optfmt{true} is assumed. -This setting allows \gls{location} ranges such as 184--189 to appear +This setting allows location \idxpl{range} such as 184--189 to appear more compactly as 184--9. The end \gls{location} is encapsulated -in the command \gls{bibglscompact}, so the range would actually +in the command \gls{bibglscompact}, so the \idx{range} would actually become: \begin{codeenv} 184\ics{delimR}\gls{bibglscompact}\marg{digit}\marg{18}\marg{9} @@ -13341,7 +13409,7 @@ become: If the \gls{location} is in the form \code{\meta{cs}\margm{loc}} (where \meta{cs} is a command) then \gls{bibglscompact} will be inside the argument. -For example, if the range would normally be: +For example, if the \idx{range} would normally be: \begin{codeenv} \cmd{custom}\marg{184}\ics{delimR}\cmd{custom}\marg{189} \end{codeenv} @@ -13630,9 +13698,9 @@ consider the following document: \cmd{end}\marg{document} \end{codeenv} This results in the \gls{locationlist} \qt{1, 1--3, 3--5}. This -looks a little odd and it may seem as though the range formation +looks a little odd and it may seem as though the \idx{implicit-range} formation hasn't worked, but the \glspl{location} are actually: page~1, equation~1, -equation~2, equation~3, page~3, page~4 and page~5. Ranges can't +equation~2, equation~3, page~3, page~4 and page~5. \Idxpl{range} can't be formed across different counters. The \csopt[\meta{list}]{loc-counters} option instructs \bibgls\ @@ -13727,7 +13795,7 @@ the place where the corresponding \cs{label} occurred. This method works partially with \idx!{makeindex} and \idx!{xindy} but from their point of view the \gls{location} is the value of the \counter{wrglossary} counter, which interferes with their ability to -merge duplicate page numbers and form ranges. Since \bibgls\ is +merge duplicate page numbers and form \idxpl{range}. Since \bibgls\ is designed specifically to work with \sty{glossaries-extra}, it's aware of this special counter and will merge and collate the \glspl{location} according to the corresponding page number instead. @@ -16962,9 +17030,9 @@ will be adjusted to locally change the field to in the \gls{secondaryglossary} will be the same as for the \gls{primaryglossary}. -(If the glossary \meta{type} doesn't exist, it will be +If the glossary \meta{type} doesn't exist, it will be defined with \ics{provideignoredglossary*}\margm{type} -even if \longarg{no-provide-glossaries} is set.) +even if \longarg{no-provide-glossaries} is set. Note that if the glossary already exists and contains entries, the existing entries aren't re-ordered. The new entries are simply appended to the list. @@ -19006,6 +19074,8 @@ This defaults to \code{,\idx{nbspchar}} to discourage lonely \glspl{location}. \cssection{bibglscompact} \formatdef{bibglscompact} +This command is used with \csopt{compact-ranges} when the end +\gls{location} in a \idx{range} is compacted. The first argument \meta{pattern} indicates the \gls{location} pattern: \code{digit} for digits, \code{roman} for \idx!{lowercase} Roman numerals, \code{ROMAN} for \idx!{uppercase} Roman @@ -19019,9 +19089,9 @@ This just does \meta{part2} by default. \cssection{bibglspassim} \formatdef{bibglspassim} -If \csopt{max-loc-diff} is greater than~1, then any ranges that have -skipped over gaps will be followed by \gls{bibglspassim}, which is -defined as: +If \csopt{max-loc-diff} is greater than~1, then any +\idxpl{implicit-range} that have skipped over gaps will be followed +by \gls{bibglspassim}, which is defined as: \begin{codeenv} \cs{providecommand}\marg{\gls{bibglspassim}}\marg{ \gls{bibglspassimname}} \end{codeenv} @@ -19048,25 +19118,26 @@ The default definition is obtained from the \langxml. For example, with \cssection{bibglsrange} \formatdef{bibglsrange} -Explicit ranges formed using \glsopt[\idx{openrange}]{format} and +\Idxpl{explicit-range} formed using \glsopt[\idx{openrange}]{format} and \glsopt[\idx{closerange}]{format} or \glsopt[\idx{openrange}\meta{csname}]{format} and \glsopt[\idx{closerange}\meta{csname}]{format} (where \meta{csname} matches and is a text-block command without the initial backslash) in the optional argument of commands like \ics{gls} or \ics{glsadd} are encapsulated within -the argument of \gls{bibglsrange}. By default this simply does its -argument. This command is not used with ranges that are formed by collating -consecutive \glspl{location}. +the argument of \gls{bibglsrange}. By default, this simply does its +argument. This command is not used with \idxpl{implicit-range} that +are formed by collating consecutive \glspl{location} or when +\csopt[true]{merge-ranges} is used. \cssection{bibglsinterloper} \formatdef{bibglsinterloper} -If an explicit range conflicts with a record, a warning will be -issued and the conflicting record will be shifted to the front -of the range inside the argument of \gls{bibglsinterloper}. +If an \idxpl{explicit-range} conflicts with a record, a warning will be +issued and the conflicting record (the \idx{interloper}) will be shifted to the front +of the \idx{range} inside the argument of \gls{bibglsinterloper}. The default definition just does \meta{location}\gls!{bibglsdelimN} so that it fits neatly into the list. -For example, suppose on page~4 of my document I start a range with: +For example, suppose on page~4 of my document I start a \idx{range} with: \begin{codeenv*} \cs{glsadd}\oarg{\glsaddopt[\idx{openrange}]{format}}\marg{sample} \end{codeenv*} @@ -19074,21 +19145,22 @@ and end it on page~9 with: \begin{codeenv*} \cs{glsadd}\oarg{\glsaddopt[\idx{closerange}]{format}}\marg{sample} \end{codeenv*} -This forms an explicit range, but let's suppose on page~6 I +This forms an \idx{explicit-range}, but let's suppose on page~6 I have: \begin{codeenv} \cs{gls}\oarg{\glsopt[\encap{hyperbf}]{format}}\marg{sample} \end{codeenv} -This record conflicts with the explicit range (which doesn't include +This record conflicts with the \idx{explicit-range} (which doesn't include \encap{hyperbf} in the format). This causes a warning and the conflicting entry will be moved before the start of the -explicit range resulting in \textbf{6}, 4--9. +\idx{explicit-range} resulting in \textbf{6}, 4--9. -Note that implicit ranges can't be formed from interlopers (nor can -implicit ranges be merged with explicit ones), +Note that \idxpl{implicit-range} can't be formed from \idxpl{interloper} (nor can +\idxpl{implicit-range} be merged with explicit ones with the default +\csopt[false]{merge-ranges}), so if \code{\cs{gls}\oarg{\glsopt[\encap{hyperbf}]{format}}\marg{sample}} also occurs on pages~7 and~8 then the result will be \textbf{6}, \textbf{7}, -\textbf{8}, 4--9. Either remove the explicit range or +\textbf{8}, 4--9. Either remove the \idx{explicit-range} or remove the conflicting entries. (Alternatively, redefine \gls{bibglsinterloper} to ignore its argument, which will discard the conflicting entries.) @@ -20708,12 +20780,16 @@ This command is only provided if \longarg{replace-quotes} is used. \formatdef{bibglsuppercase} Converts \meta{text} to \idx{uppercase}. This just uses -\ics{MakeTextUppercase} by default. +\ics{glsuppercase} (if \sty{glossaries} v4.50+, +\sty{glossaries-extra} v1.49+ and \sty{mfirstuc} v2.08+) +or \ics{MakeTextUppercase} by default. \cssection{bibglslowercase} \formatdef{bibglslowercase} Converts \meta{text} to \idx{lowercase}. This just uses +\ics{glslowercase} (if \sty{glossaries} v4.50+, +\sty{glossaries-extra} v1.49+ and \sty{mfirstuc} v2.08+) \ics{MakeTextLowercase} by default. \cssection{bibglstitlecase} @@ -24532,14 +24608,14 @@ The tagging format is governed by \ics{glsxtrtagfont} which underlines its argument by default. I've redefined it to also convert the letter to \idx{uppercase}: \begin{codeenv} -\cs{renewcommand}*\marg{\cs{glsxtrtagfont}}[1]\marg{\ics{underline}\marg{\cs{MakeTextUppercase}\marg{\idx{param}1}}} +\cs{renewcommand}*\marg{\cs{glsxtrtagfont}}[1]\marg{\ics{underline}\marg{\cs{glsuppercase}\marg{\idx{param}1}}} \end{codeenv} Note that in the \code{mathml} case, the first tag consists of more than one letter: \begin{codeenv} \field{long}=\marg{\cmd{abbrvtag}\marg{m\cs{NoCaseChange}\marg{ath}}ematical }\idx{stringconcat}markuplang \end{codeenv} -Here \ics{NoCaseChange} prevents \ics{MakeTextUppercase} +Here \ics{NoCaseChange} prevents \ics{glsuppercase} from applying the case change. The default \csopt{selection} criteria includes entries that have diff --git a/Master/texmf-dist/source/support/bib2gls/src/gls2bib-src.zip b/Master/texmf-dist/source/support/bib2gls/src/gls2bib-src.zip Binary files differindex a1921797d92..bf21db49439 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/gls2bib-src.zip +++ b/Master/texmf-dist/source/support/bib2gls/src/gls2bib-src.zip diff --git a/Master/texmf-dist/source/support/bib2gls/src/texparser-src.zip b/Master/texmf-dist/source/support/bib2gls/src/texparser-src.zip Binary files differindex b2d2349cfeb..e0496feef00 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/texparser-src.zip +++ b/Master/texmf-dist/source/support/bib2gls/src/texparser-src.zip |