summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-10-20 03:04:26 +0000
committerNorbert Preining <norbert@preining.info>2022-10-20 03:04:26 +0000
commit3b961a61ef9fb89adf20a89550d5de0bfe135448 (patch)
treee36f997e624c704dbb4ed2b5fdbd02835ea3c133 /macros/latex/contrib/glossaries-extra/glossaries-extra.dtx
parent7b6cdf4c23e6ed232601dabc70f5553a8dee9c9b (diff)
CTAN sync 202210200304
Diffstat (limited to 'macros/latex/contrib/glossaries-extra/glossaries-extra.dtx')
-rw-r--r--macros/latex/contrib/glossaries-extra/glossaries-extra.dtx48545
1 files changed, 40944 insertions, 7601 deletions
diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx b/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx
index 530455599f..ff8449fc09 100644
--- a/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx
+++ b/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx
@@ -1,25 +1,28 @@
%\iffalse
% glossaries-extra.dtx generated using makedtx version 1.2 (c) Nicola Talbot
% Command line args:
-% -comment ".*\.tex"
-% -comment ".*\.bib"
+% -doc "glossaries-extra-codedoc.tex"
% -setambles ".*\.bib=>\nopreamble\nopostamble"
-% -author "Nicola Talbot"
% -macrocode ".*\.tex"
% -macrocode ".*\.bib"
-% -codetitle "Main Package Code (\\styfmt{glossaries-extra.sty})"
-% -doc "glossaries-extra-codedoc.tex"
+% -comment ".*\.tex"
+% -comment ".*\.bib"
+% -codetitle "Main Package Code (glossaries-extra.sty)"
+% -section "section"
+% -author "Nicola Talbot"
% -src "glossaries-extra.sty\Z=>glossaries-extra.sty"
+% -src "(.+)\.def\Z=>\1.def"
% -src "glossaries-extra-bib2gls.sty\Z=>glossaries-extra-bib2gls.sty"
% -src "glossaries-extra-stylemods.sty\Z=>glossaries-extra-stylemods.sty"
% -src "glossary-bookindex.sty\Z=>glossary-bookindex.sty"
% -src "glossary-longextra.sty\Z=>glossary-longextra.sty"
% -src "glossary-topic.sty\Z=>glossary-topic.sty"
+% -src "glossary-table.sty\Z=>glossary-table.sty"
% -src "(example-glossaries-.+\.tex)\Z=>\1"
% -src "(example-glossaries-.+\.bib)\Z=>\1"
-% -section "chapter"
+% -src "(glossar.+-2021-11-22.sty)\Z=>\1"
% glossaries-extra
-% Created on 2021/11/22 21:22
+% Created on 2022/10/19 17:47
%\fi
%\iffalse
%<*package>
@@ -42,198 +45,118 @@
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
-% Copyright (C) 2021 Nicola Talbot, all rights reserved.
+% Copyright (C) 2022 Nicola Talbot, all rights reserved.
% \fi
% \iffalse
%<*driver>
-\documentclass[report,widecs]{nlctdoc}
-
\iffalse
glossaries-extra-codedoc.tex is a stub file used by makedtx to create
glossaries-extra.dtx
\fi
-\usepackage{alltt}
-\usepackage{pifont}
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage[colorlinks,
- bookmarks,
- hyperindex=false,
- pdfauthor={Nicola L.C. Talbot},
- pdftitle={glossaries-extra.sty: an extension to the glossaries
-package},
- pdfkeywords={LaTeX,package,glossary,abbreviations}]{hyperref}
-\usepackage[nonumberlist,nopostdot=false]{glossaries-extra}
+\documentclass{article}
+\usepackage{doc}
-\RecordChanges
-
-\makeglossaries
-
-\renewcommand*{\main}[1]{\hyperpage{#1}}
-\newcommand*{\htextbf}[1]{\textbf{\hyperpage{#1}}}
-\newcommand*{\itermdef}[1]{\index{#1|htextbf}}
-
-\newglossaryentry{xindy}{
- name={\appfmt{xindy}\index{xindy|htextbf}},
- sort={xindy},
- text={\protect\app{xindy}},
- description={An flexible indexing application with multilingual
- support written in Perl}
-}
-
-\newglossaryentry{makeindex}{%
- name={\appfmt{makeindex}\index{makeindex|htextbf}},%
- sort={makeindex},%
- text={\protect\app{makeindex}},%
- description={An indexing application},
-}
-
-\newglossaryentry{bib2gls}{%
-name={\appfmt{bib2gls}\index{bib2gls=\appfmt{bib2gls}|htextbf}},%
-sort={bib2gls},%
-text={\appfmt{bib2gls}\iapp{bib2gls}},%
-description={A command line Java application that selects
-entries from a .bib file and converts them to glossary
-definitions (like \appfmt{bibtex} but also performs hierarchical
-sorting and collation, thus omitting the need for \gls{xindy} or
-\gls{makeindex}). Further details at:
-\url{http://www.dickimaw-books.com/software/bib2gls/}.}%
-}
-
-\let\glsd\glsuseri
-\let\glsation\glsuserii
-
-\newglossaryentry{firstuse}{%
- name={First use\ifirstuse},
- sort={first use},%
- text={first use},%
- user1={first used},
- description={The first time a glossary entry is used (from the start
- of the document or after a reset) with one of the
- following commands: \ics{gls}, \ics{Gls}, \ics{GLS}, \ics{glspl},
- \ics{Glspl}, \ics{GLSpl} or \ics{glsdisp}.
- \glsadd{firstuseflag}\glsadd{firstusetext}%
- \glsseeformat{firstuseflag,firstusetext}{}\nopostdesc}%
-}
-
-\newglossaryentry{firstuseflag}{%
-name={First use flag\ifirstuseflag},
-sort={first use flag},%
-text={first use flag},%
-description={A conditional that determines whether or not the entry
-has been used according to the rules of \gls{firstuse}}%
-}
-
-\newglossaryentry{firstusetext}{%
-name={First use text\ifirstusetext},
-sort={first use text},%
-text={first use text},%
-description={The text that is displayed on \gls{firstuse}, which is
-governed by the \gloskey{first} and \gloskey{firstplural} keys of
-\ics{newglossaryentry}. (May be overridden by
-\ics{glsdisp}.)\nopostdesc}%
-}
-
-\doxitem{Option}{option}{package options}
-\doxitem{Counter}{counter}{glossary counters}
-\doxitem{AbbrvStyle}{abbrvstyle}{abbreviation styles}
-\doxitem{Style}{style}{glossary styles}
+\CheckSum{69102}
+\RecordChanges
+\PageIndex
+\SetupDoc{reportchangedates}
\setcounter{IndexColumns}{2}
-\CheckSum{30886}
-
-\newcommand*{\ifirstuse}{\iterm{first use}}
-\newcommand*{\firstuse}{\gls{firstuse}}
-\newcommand*{\firstuseflag}{\gls{firstuseflag}}
-\newcommand*{\firstusetext}{\gls{firstusetext}}
-
-\newcommand*{\ifirstuseflag}{\iterm{first use>flag}}
-\newcommand*{\ifirstusetext}{\iterm{first use>text}}
-
-\newcommand*{\istkey}[1]{\appfmt{#1}\index{makeindex=\appfmt{makeindex}>#1=\texttt{#1}}}
-\newcommand*{\locfmt}[1]{\texttt{#1}\SpecialMainIndex{#1}}
-\newcommand*{\mkidxspch}{\index{makeindex=\appfmt{makeindex}>special characters}}
-
-\newcommand*{\igloskey}[2][newglossaryentry]{\icsopt{#1}{#2}}
-\newcommand*{\gloskey}[2][newglossaryentry]{\csopt{#1}{#2}}
-
-\newcommand*{\stylefmt}[1]{\textsf{#1}}
+\usepackage[T1]{fontenc}
+\usepackage{etoolbox}
+\usepackage{tcolorbox}
+\usepackage[colorlinks]{hyperref}
-\newcommand*{\glostyle}[1]{\stylefmt{#1}%
- \index{glossary styles:>#1=\protect\stylefmt{#1}|main}}
+\definecolor{defbackground}{rgb}{1,1,0.75}
-\newcommand*{\acrstyle}[1]{\stylefmt{#1}%
- \index{acronym styles (glossaries):>#1=\protect\stylefmt{#1}|main}}
+\newtcolorbox{definition}{halign=flush left,
+ colframe=black,colback=defbackground,
+ fontupper=\ttfamily,
+ before upper={\frenchspacing\obeylines},
+ after={\par\noindent\ignorespacesafterend}
+}
-\newcommand*{\abbrstyle}[1]{\stylefmt{#1}%
- \index{abbreviation styles:>#1=\protect\stylefmt{#1}|main}}
+\NewDocElement{Option}{option}
+\NewDocElement{AbbrvStyle}{abbrvstyle}
+\NewDocElement{Style}{style}
-\newcommand*{\category}[1]{\textsf{#1}\index{entry categories:>#1={\protect\sffamily#1}|main}}
+\pdfstringdefDisableCommands{%
+ \let\sty\@firstofone
+ \let\app\@firstofone
+ \let\ctr\@firstofone
+ \let\category\@firstofone
+ \let\catattr\@firstofone
+ \let\glostyle\@firstofone
+ \let\abbrstyle\@firstofone
+ \let\pkgoptfmt\@firstofone
+ \renewcommand{\marg}[1]{\string<#1\string>}%
+ \renewcommand{\oarg}[1]{\string[#1\string]}%
+}
-\newcommand*{\catattr}[1]{\textsf{#1}\index{category attributes:>#1={\protect\sffamily#1}|main}}
+\newcommand{\sty}[1]{\textsf{#1}}
+\newcommand{\app}[1]{\texttt{#1}}
+\newcommand{\ctr}[1]{\textsf{#1}}
+\newcommand{\env}[1]{\textsf{#1}}
+\newcommand{\category}[1]{\textsf{#1}}
+\newcommand{\catattr}[1]{\textsf{#1}}
+\newcommand{\glostyle}[1]{\textsf{#1}}
+\newcommand{\abbrstyle}[1]{\textsf{#1}}
+\newcommand{\pkgoptfmt}[1]{\textsf{#1}}
+\newcommand{\pkgopt}[2][]{\pkgoptfmt{#2\ifstrempty{#1}{}{=#1}}}
+\newcommand{\gloskey}[2][]{\textsf{#2}}
+\newcommand{\qt}[1]{``#1''}
+\newcommand{\sectionref}[1]{\S\ref{#1}}
+\newcommand{\dequals}{=}
-\GlossaryPrologue{%
- \chapter*{{Change History}}%
- \markboth{{Change History}}{{Change History}}%
- \phantomsection
- \addcontentsline{toc}{chapter}{Change History}%
- \raggedright
-}
+\providecommand\marg[1]{%
+ \allowbreak{\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
+\providecommand\oarg[1]{%
+ \allowbreak{\ttfamily[}\meta{#1}{\ttfamily]}}
-\title{glossaries-extra.sty v1.48:
+\title{glossaries-extra.sty v1.49:
documented code}
\author{Nicola L.C. Talbot\\[10pt]
Dickimaw Books\\
\url{http://www.dickimaw-books.com/}}
-\date{2021-11-22}
+\date{2022-10-14}
\begin{document}
\DocInput{glossaries-extra.dtx}
\end{document}
%</driver>
%\fi
-%\MakeShortVerb{"}
-%\DeleteShortVerb{\|}
+%\maketitle
%
-% \maketitle
-%
-%\begin{abstract}
%This is the documented code for the \sty{glossaries-extra} package.
-%See glossaries-extra-manual.pdf for the user manual.
-%
-%\begin{important}
-%This package is experimental and not stable. It's provided for
-%testing purposes only. Future versions may not be compatible with
-%this version. Once it has stabilised I'll add it to CTAN, at which
-%point compatibility with the first stable version will be
-%maintained.
-%\end{important}
-%\end{abstract}
+%See \texttt{glossaries-extra-manual.pdf} for the user manual.
%
%\tableofcontents
%
-%\StopEventually{%
-% \printglossaries
-% \PrintChanges
-% \PrintIndex
-%}
-%
+%\StopEventually{\PrintChanges \PrintIndex}
%
%
-%\chapter{Main Package Code (\styfmt{glossaries-extra.sty})}
+%\section{Main Package Code (glossaries-extra.sty)}
%\iffalse
% \begin{macrocode}
%<*glossaries-extra.sty>
% \end{macrocode}
%\fi
%\changes{0.1}{2015-11-22}{Initial experimental release}
-%\section{Package Initialisation and Options}
+%\subsection{Package Initialisation and Options}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossaries-extra}[2021/11/22 v1.48 (NLCT)]
+% \end{macrocode}
+% Rollback releases:
+% \begin{macrocode}
+\DeclareRelease{v1.48}{2021-11-22}{glossaries-extra-2021-11-22.sty}
+\DeclareCurrentRelease{v1.49}{2022-10-14}
+% \end{macrocode}
+% Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossaries-extra}[2022/10/14 v1.49 (NLCT)]
% \end{macrocode}
% Requires \sty{xkeyval} to define package options.
% \begin{macrocode}
@@ -243,21 +166,21 @@ Dickimaw Books\\
% \begin{macrocode}
\RequirePackage{etoolbox}
% \end{macrocode}
-% Has \styfmt{glossaries} already been loaded?
+% Has \sty{glossaries} already been loaded?
% \begin{macrocode}
\@ifpackageloaded{glossaries}
{%
% \end{macrocode}
% Already loaded so pass any options to \cs{setupglossaries}.
% This means that the options that can only be set when
-% \styfmt{glossaries} is loaded can't be used.
+% \sty{glossaries} is loaded can't be used.
% \begin{macrocode}
\newcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}%
\let\@glsxtr@declareoption\@gls@declareoption
}
{%
% \end{macrocode}
-% Not already loaded, so pass options to \styfmt{glossaries}.
+% Not already loaded, so pass options to \sty{glossaries}.
% \begin{macrocode}
\newcommand{\glsxtr@dooption}[1]{%
\PassOptionsToPackage{#1}{glossaries}%
@@ -293,7 +216,7 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%\begin{macro}{\glsxtr@warnonexistsordo}
-% If user wants \pkgopt[warn]{undefaction}, then \styfmt{glossaries}
+% If user wants \pkgopt[warn]{undefaction}, then \sty{glossaries}
% v4.19 is required.
% \begin{macrocode}
\newcommand*{\glsxtr@warnonexistsordo}[1]{}
@@ -664,6 +587,15 @@ Dickimaw Books\\
%\changes{1.19}{2017-09-09}{Use \cs{@glsrecordlocref} instead of \cs{@glslocref}}
% \begin{macrocode}
\newcommand*\@glsxtr@dorecord{%
+ \@@glsxtr@dorecord\@gls@label\glsxtr@record\@glsxtr@do@nameref@record
+}
+% \end{macrocode}
+%\end{macro}
+
+%\begin{macro}{\@@glsxtr@dorecord}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*\@@glsxtr@dorecord[3]{%
\global\let\@glsrecordlocref\theglsentrycounter
\let\@glsxtr@orgprefix\@glo@counterprefix
\ifx\theglsentrycounter\theHglsentrycounter
@@ -677,28 +609,26 @@ Dickimaw Books\\
\protected@edef\@glsxtr@theHentrycounter{\theHglsentrycounter}%
\@onelevel@sanitize\@glsxtr@theentrycounter
\@onelevel@sanitize\@glsxtr@theHentrycounter
- \protected@edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
+ \@xp@gls@getcounterprefix
{\@glsxtr@theentrycounter}{\@glsxtr@theHentrycounter}%
- }%
- \@do@gls@getcounterprefix
\fi
% \end{macrocode}
%\changes{1.30}{2018-04-25}{don't suppress expansion of \cs{@glsrecordlocref}}
%\changes{1.29}{2018-04-09}{don't suppress expansion of
%\cs{@glsrecordlocref} if counter isn't page}
%Don't protect the \cs{@glsrecordlocref} from premature expansion.
-%If the counter isn't \counter{page} then it needs expanding. If the
+%If the counter isn't \ctr{page} then it needs expanding. If the
%location includes \cs{thepage} then \cs{protected@write} will
%automatically deal with it.
%\changes{1.37}{2018-11-30}{added check for record=nameref}
% \begin{macrocode}
\ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
- \@glsxtr@do@nameref@record
- {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}%
+ #3%
+ {#1}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}%
{\@glsrecordlocref}%
\else
- \protected@write\@auxout{}{\string\glsxtr@record
- {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}%
+ \@bibgls@write@aux{}{\string#2%
+ {#1}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}%
{\@glsrecordlocref}}%
\fi
\@glsxtr@counterrecordhook
@@ -723,21 +653,18 @@ Dickimaw Books\\
{\@gls@label}{}{\@gls@counter}{\@glsnumberformat}%
{\theglsentrycounter}%
\else
- \protected@write\@auxout{}{\string\glsxtr@record
+ \@bibgls@write@aux{}{\string\glsxtr@record
{\@gls@label}{}{\@gls@counter}{\@glsnumberformat}%
{\theglsentrycounter}}%
\fi
\else
- \edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
- {\theglsentrycounter}{\theHglsentrycounter}%
- }%
- \@do@gls@getcounterprefix
+ \@xp@gls@getcounterprefix{\theglsentrycounter}{\theHglsentrycounter}%
\ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
\@glsxtr@do@nameref@record
{\@gls@label}{\@glo@counterprefix}{\@gls@counter}%
{\@glsnumberformat}{\theglsentrycounter}%
\else
- \protected@write\@auxout{}{\string\glsxtr@record
+ \@bibgls@write@aux{}{\string\glsxtr@record
{\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}%
{\theglsentrycounter}}%
\fi
@@ -790,7 +717,7 @@ Dickimaw Books\\
\newcommand*{\@glsxtr@do@nameref@record}[5]{%
\gls@ifnotmeasuring
{%
- \protected@write\@auxout{}{\string\glsxtr@record@nameref
+ \@bibgls@write@aux{}{\string\glsxtr@record@nameref
{#1}{#2}{#3}{#4}{#5}%
{\csuse{@currentlabelname}}{\csuse{@currentHref}}%
{\theHglsentrycounter}}%
@@ -837,7 +764,7 @@ Dickimaw Books\\
\@@glsxtrwrglossmark
\def\@gls@xref{#2}%
\@onelevel@sanitize\@gls@xref
- \protected@write\@auxout{}{\string\glsxtr@recordsee{#1}{\@gls@xref}}%
+ \@bibgls@write@aux{}{\string\glsxtr@recordsee{#1}{\@gls@xref}}%
}
% \end{macrocode}
%\end{macro}
@@ -1135,6 +1062,79 @@ Dickimaw Books\\
% \end{macrocode}
%\end{option}
%
+%
+%\begin{option}{bibglsaux}
+%\changes{1.49}{2022-10-14}{new}
+%Provide an option to put the records in a different aux file that
+%will only be read by bib2gls and not by \LaTeX. A large number of
+%records in the aux file can slow down the document build as \LaTeX\
+%has to parse it all. This will require an extra write register, so
+%may not be so desirable for documents with small glossaries but a
+%large number of temporary files.
+% \begin{macrocode}
+\define@key{glossaries-extra.sty}{bibglsaux}{%
+ \glsxtrsetbibglsaux{#1}%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\glsxtrsetbibglsaux}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glsxtrsetbibglsaux}[1]{%
+ \renewcommand{\@glsxtr@setup@bibglsaux}{\@@glsxtr@setup@bibglsaux{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@setup@bibglsaux}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\@glsxtr@setup@bibglsaux}{%
+ \renewcommand{\glsxtrsetbibglsaux}[1]{%
+ \@@glsxtr@setup@bibglsaux{##1}%
+ }%
+}
+\AtBeginDocument{\@glsxtr@setup@bibglsaux}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glsxtr@setup@bibglsaux}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\@@glsxtr@setup@bibglsaux}[1]{%
+ \ifstrempty{#1}%
+ {\renewcommand{\@bibgls@write@aux}{\protected@write\@auxout}}%
+ {\@set@bibgls@write@aux{#1.aux}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@bibgls@write@aux}
+%\changes{1.49}{2022-10-14}{new}
+%Just used for writing records.
+% \begin{macrocode}
+\newcommand{\@bibgls@write@aux}{\protected@write\@auxout}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@set@bibgls@write@aux}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\@set@bibgls@write@aux}[1]{%
+ \protected@write\@auxout{}%
+ {\string\providecommand{\string\@bibgls@input}[1]{}}%
+ \protected@write\@auxout{}{\string\@bibgls@input{#1}}%
+ \global\newwrite\@bibgls@auxout
+ \openout\@bibgls@auxout=#1
+ \AtEndDocument{\closeout\@bibgls@auxout}%
+ \gdef\@bibgls@write@aux{\protected@write\@bibgls@auxout}%
+ \gdef\@set@bibgls@write@aux##1{\GlossariesExtraWarning{repeated
+ invocation of bibglsaux option ignored}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\changes{1.06}{2016-06-18}{docdef option changed to choice}
%Version 1.06 changes the \pkgopt{docdef} option to a choice rather
%than boolean setting. The available values are: false, true or
@@ -1221,7 +1221,7 @@ Dickimaw Books\\
% \begin{macrocode}
\@glsxtrindexcrossrefsfalse
% \end{macrocode}
-% But allow \gloskey{see} key to switch it on automatically.
+% But allow \gloskey{see} and \gloskey{seealso} keys to switch it on automatically.
%\begin{macro}{\@glsxtr@autoindexcrossrefs}
%\changes{1.0}{2016-01-24}{new}
% \begin{macrocode}
@@ -1414,7 +1414,7 @@ Dickimaw Books\\
\disable@keys{glossaries-extra.sty}{abbreviations}%
% \end{macrocode}
% If the \pkgopt{acronym} option hasn't been used, change
-% \ics{acronymtype} to \ics{glsxtrabbrvtype}.
+% \cs{acronymtype} to \cs{glsxtrabbrvtype}.
%\changes{0.4}{2015-12-03}{added redefinition of \cs{acronymtype}}
% \begin{macrocode}
\ifglsacronym
@@ -1434,37 +1434,95 @@ Dickimaw Books\\
% \end{macrocode}
%\end{option}
%
+%\begin{macro}{\shortcut@gls}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\shortcut@gls}{\cgls}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\shortcut@glspl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\shortcut@glspl}{\cglspl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\shortcut@Gls}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\shortcut@Gls}{\cGls}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\shortcut@Glspl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\shortcut@Glspl}{\cGlspl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\shortcut@GLS}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\shortcut@GLS}{\cGLS}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\shortcut@GLSpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\shortcut@GLSpl}{\cGLSpl}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GlsXtrDefineAbbreviationShortcuts}
% Enable shortcut commands for the abbreviations. Unlike the analogous
-% command provided by \styfmt{glossaries}, this uses \cs{newcommand}
+% command provided by \sty{glossaries}, this uses \cs{newcommand}
% instead of \cs{let} as a safety feature (except for \cs{newabbr}
% which is also provided with \cs{GlsXtrDefineAcShortcuts}).
% \begin{macrocode}
\newcommand*{\GlsXtrDefineAbbreviationShortcuts}{%
- \newcommand*{\ab}{\cgls}%
- \newcommand*{\abp}{\cglspl}%
+ \newcommand*{\ab}{\shortcut@gls}%
+ \newcommand*{\abp}{\shortcut@glspl}%
\newcommand*{\as}{\glsxtrshort}%
\newcommand*{\asp}{\glsxtrshortpl}%
\newcommand*{\al}{\glsxtrlong}%
\newcommand*{\alp}{\glsxtrlongpl}%
\newcommand*{\af}{\glsxtrfull}%
\newcommand*{\afp}{\glsxtrfullpl}%
- \newcommand*{\Ab}{\cGls}%
- \newcommand*{\Abp}{\cGlspl}%
+ \newcommand*{\Ab}{\shortcut@Gls}%
+ \newcommand*{\Abp}{\shortcut@Glspl}%
\newcommand*{\As}{\Glsxtrshort}%
\newcommand*{\Asp}{\Glsxtrshortpl}%
\newcommand*{\Al}{\Glsxtrlong}%
\newcommand*{\Alp}{\Glsxtrlongpl}%
\newcommand*{\Af}{\Glsxtrfull}%
\newcommand*{\Afp}{\Glsxtrfullpl}%
- \newcommand*{\AB}{\cGLS}%
- \newcommand*{\ABP}{\cGLSpl}%
+ \newcommand*{\AB}{\shortcut@GLS}%
+ \newcommand*{\ABP}{\shortcut@GLSpl}%
\newcommand*{\AS}{\GLSxtrshort}%
\newcommand*{\ASP}{\GLSxtrshortpl}%
\newcommand*{\AL}{\GLSxtrlong}%
\newcommand*{\ALP}{\GLSxtrlongpl}%
\newcommand*{\AF}{\GLSxtrfull}%
\newcommand*{\AFP}{\GLSxtrfullpl}%
+ \glsmfuaddmap{\ab}{\Ab}%
+ \glsmfublocker{\AB}%
+ \glsmfuaddmap{\abp}{\Abp}%
+ \glsmfublocker{\ABP}%
+ \glsmfuaddmap{\as}{\As}%
+ \glsmfublocker{\AS}%
+ \glsmfuaddmap{\asp}{\Asp}%
+ \glsmfublocker{\ASP}%
+ \glsmfuaddmap{\al}{\Al}%
+ \glsmfublocker{\AL}%
+ \glsmfuaddmap{\alp}{\Alp}%
+ \glsmfublocker{\ALP}%
+ \glsmfuaddmap{\af}{\Af}%
+ \glsmfublocker{\AF}%
+ \glsmfuaddmap{\afp}{\Afp}%
+ \glsmfublocker{\AFP}%
% \end{macrocode}
%\changes{1.23}{2017-11-12}{changed \cs{newabbr} definition to use \cs{providecommand}}
% \begin{macrocode}
@@ -1479,34 +1537,50 @@ Dickimaw Books\\
%
%\begin{macro}{\GlsXtrDefineAcShortcuts}
% Enable shortcut commands for the abbreviations, but uses the
-% analogous commands provided by \styfmt{glossaries}.
+% analogous commands provided by \sty{glossaries}.
%\changes{1.17}{2017-08-09}{new}
% \begin{macrocode}
\newcommand*{\GlsXtrDefineAcShortcuts}{%
- \newcommand*{\ac}{\cgls}%
- \newcommand*{\acp}{\cglspl}%
+ \newcommand*{\ac}{\shortcut@gls}%
+ \newcommand*{\acp}{\shortcut@glspl}%
\newcommand*{\acs}{\glsxtrshort}%
\newcommand*{\acsp}{\glsxtrshortpl}%
\newcommand*{\acl}{\glsxtrlong}%
\newcommand*{\aclp}{\glsxtrlongpl}%
\newcommand*{\acf}{\glsxtrfull}%
\newcommand*{\acfp}{\glsxtrfullpl}%
- \newcommand*{\Ac}{\cGls}%
- \newcommand*{\Acp}{\cGlspl}%
+ \newcommand*{\Ac}{\shortcut@Gls}%
+ \newcommand*{\Acp}{\shortcut@Glspl}%
\newcommand*{\Acs}{\Glsxtrshort}%
\newcommand*{\Acsp}{\Glsxtrshortpl}%
\newcommand*{\Acl}{\Glsxtrlong}%
\newcommand*{\Aclp}{\Glsxtrlongpl}%
\newcommand*{\Acf}{\Glsxtrfull}%
\newcommand*{\Acfp}{\Glsxtrfullpl}%
- \newcommand*{\AC}{\cGLS}%
- \newcommand*{\ACP}{\cGLSpl}%
+ \newcommand*{\AC}{\shortcut@GLS}%
+ \newcommand*{\ACP}{\shortcut@GLSpl}%
\newcommand*{\ACS}{\GLSxtrshort}%
\newcommand*{\ACSP}{\GLSxtrshortpl}%
\newcommand*{\ACL}{\GLSxtrlong}%
\newcommand*{\ACLP}{\GLSxtrlongpl}%
\newcommand*{\ACF}{\GLSxtrfull}%
\newcommand*{\ACFP}{\GLSxtrfullpl}%
+ \glsmfuaddmap{\ac}{\Ac}%
+ \glsmfublocker{\AC}%
+ \glsmfuaddmap{\acp}{\Acp}%
+ \glsmfublocker{\ACP}%
+ \glsmfuaddmap{\acs}{\Acs}%
+ \glsmfublocker{\ACS}%
+ \glsmfuaddmap{\acsp}{\Acsp}%
+ \glsmfublocker{\ACSP}%
+ \glsmfuaddmap{\acl}{\Acl}%
+ \glsmfublocker{\ACL}%
+ \glsmfuaddmap{\aclp}{\Aclp}%
+ \glsmfublocker{\ACLP}%
+ \glsmfuaddmap{\acf}{\Acf}%
+ \glsmfublocker{\ACF}%
+ \glsmfuaddmap{\acfp}{\Acfp}%
+ \glsmfublocker{\ACFP}%
% \end{macrocode}
%\changes{1.23}{2017-11-12}{changed \cs{newabbr} definition to use \cs{providecommand}}
% \begin{macrocode}
@@ -1558,7 +1632,7 @@ Dickimaw Books\\
%\end{macro}
%
%\begin{option}{shortcuts}
-%Provide \pkgopt{shortcuts} option. Unlike the \styfmt{glossaries}
+%Provide \pkgopt{shortcuts} option. Unlike the \sty{glossaries}
%version, this is a choice rather than a boolean key but it also provides
%\pkgopt[true]{shortcuts} and \pkgopt[false]{shortcuts}, which are
%equivalent to \pkgopt[all]{shortcuts} and
@@ -1570,7 +1644,7 @@ Dickimaw Books\\
% \begin{macrocode}
\define@choicekey{glossaries-extra.sty}{shortcuts}%
[\@glsxtr@shortcutsval\@glsxtr@shortcutsnr]%
- {acronyms,acro,abbreviations,abbr,other,all,true,ac,none,false}[true]{%
+ {acronyms,acro,abbreviations,abbr,other,all,true,ac,acother,abother,none,false}[true]{%
\ifcase\@glsxtr@shortcutsnr\relax % acronyms
\renewcommand*{\@glsxtr@setupshortcuts}{%
\glsacrshortcutstrue
@@ -1623,6 +1697,24 @@ Dickimaw Books\\
\glsacrshortcutstrue
\GlsXtrDefineAcShortcuts
}%
+ \or % acother
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added shortcuts=acother}
+% \begin{macrocode}
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+ \GlsXtrDefineAcShortcuts
+ \GlsXtrDefineOtherShortcuts
+ }%
+ \or % abother
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added shortcuts=abother}
+% \begin{macrocode}
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+ \GlsXtrDefineAbbreviationShortcuts
+ \GlsXtrDefineOtherShortcuts
+ }%
% \end{macrocode}
%Leave none and false as last option.
% \begin{macrocode}
@@ -1641,7 +1733,7 @@ Dickimaw Books\\
%\end{macro}
%
%\sty{glossaries-accsupp} can't be loaded after
-%\styfmt{glossaries-extra}. \sty{glossaries-accsupp} v4.29+ checks
+%\sty{glossaries-extra}. \sty{glossaries-accsupp} v4.29+ checks
%\cs{@glsxtr@doaccsupp} to determine if it's been loaded too late.
%
%\begin{option}{accsupp}
@@ -1794,7 +1886,7 @@ Dickimaw Books\\
%\begin{macro}{\GlsXtrInternalLocationHyperlink}
%\changes{1.29}{2018-04-09}{new}
%\begin{definition}
-%\cs{glsxtrinternallocationhyperlink}\marg{counter}\marg{prefix}\marg{location}
+%\cs{GlsXtrInternalLocationHyperlink}\marg{counter}\marg{prefix}\marg{location}
%\end{definition}
%The first two arguments are always control sequences.
% \begin{macrocode}
@@ -1821,7 +1913,7 @@ Dickimaw Books\\
%methods but it will interfere with the number list collation.
%This option automatically implements \pkgopt[wrglossary]{counter}.
%
-%Since \styfmt{glossaries} automatically loads \sty{amsmath}, there
+%Since \sty{glossaries} automatically loads \sty{amsmath}, there
%may be a problem if the indexing occurs in the \env{equation}
%environment, because only one \cs{label} is allowed in each
%instance of that environment. It's best to change the counter when
@@ -1838,12 +1930,13 @@ Dickimaw Books\\
\renewcommand*{\glsxtr@inc@wrglossaryctr}[1]{%
% \end{macrocode}
%Only increment if the current counter is \ctr{wrglossary}.
-%\changes{1.30}{2018-04-25}{added check for \ctrfmt{wrglossary} counter}
+%\changes{1.30}{2018-04-25}{added check for \ctr{wrglossary} counter}
% \begin{macrocode}
\ifdefstring\@gls@counter{wrglossary}%
{%
\refstepcounter{wrglossary}%
\label{wrglossary.\thewrglossary}%
+ \@@glsxtrwrglosscountermark{\thewrglossary}%
}%
{}%
}%
@@ -1879,12 +1972,35 @@ Dickimaw Books\\
%
%\begin{macro}{\glsxtrwrglossmark}
%\changes{1.21}{2017-11-03}{new}
-%Does nothing by default.
% \begin{macrocode}
\newcommand*{\glsxtrwrglossmark}{\ensuremath{\cdot}}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@glsxtrwrglosscountermark}
+%\changes{1.49}{2022-10-14}{new}
+%Marks the place where wrglossary counter is incremented.
+%Does nothing by default.
+% \begin{macrocode}
+\newcommand*{\@glsxtrwrglosscountermark}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glsxtrwrglosscountermark}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@@glsxtrwrglosscountermark}[1]{}
+\AtBeginDocument{\renewcommand*{\@@glsxtrwrglosscountermark}{\@glsxtrwrglosscountermark}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrwrglosscountermark}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrwrglosscountermark}[1]{\glsshowtargetfonttext{[#1]}}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@glsxtr@doshowtarget}
%\changes{1.48}{2021-11-22}{new}
% \begin{macrocode}
@@ -1892,6 +2008,24 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrundefdebug}
+%\changes{1.49}{2022-10-14}{new}
+%Don't do anything until after the document environment has begun.
+% \begin{macrocode}
+\newcommand*{\glsxtrundefdebug}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrundefdebug}
+%\changes{1.49}{2022-10-14}{new}
+%Use the same font as the targets.
+% \begin{macrocode}
+\newcommand*{\@glsxtrundefdebug}[1]{%
+ \if@gls@debug \glsshowtargetfonttext{[#1]}\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{option}{debug}
%\changes{1.21}{2017-11-03}{new}
% Provide extra debug options.
@@ -1903,20 +2037,26 @@ Dickimaw Books\\
\ifcase\@glsxtr@debugnr\relax % true
\glsxtr@dooption{debug=true}%
\renewcommand*{\@glsxtrwrglossmark}{}%
+ \renewcommand*{\@glsxtrwrglosscountermark}[1]{}%
\or % false
\glsxtr@dooption{debug=false}%
\renewcommand*{\@glsxtrwrglossmark}{}%
- \let\@glsxtr@doshowtarget\@secondoftwo
+ \renewcommand*{\@glsxtrwrglosscountermark}[1]{}%
+ \let\@glsxtr@doshowtarget\@secondoftwo
\or % showtargets
\glsxtr@dooption{debug=showtargets}%
- \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}%
+ \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}%
\or % showwrgloss
\glsxtr@dooption{debug=true}%
\renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}%
+ \renewcommand*{\@glsxtrwrglosscountermark}{\glsxtrwrglosscountermark}%
\or % all
- \glsxtr@dooption{debug=showtargets,debug=showaccsupp}%
+ \glsxtr@dooption{debug=true,debug=showaccsupp}%
+ % debug=showwrgloss:
\renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}%
- \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}%
+ \renewcommand*{\@glsxtrwrglosscountermark}{\glsxtrwrglosscountermark}%
+ % debug=showtargets:
+ \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}%
\or % showaccsupp
\glsxtr@dooption{debug=showaccsupp}%
\fi
@@ -2005,18 +2145,35 @@ Dickimaw Books\\
% \end{macrocode}
%\end{option}
%
-% Pass all other options to \styfmt{glossaries}.
+% Pass all other options to \sty{glossaries}.
+%\begin{macro}{\glsxtr@processunknownoptions}
+%\changes{1.49}{2022-10-14}{new}
+% Need to compensate for the problem identified in
+%\url{https://www.dickimaw-books.com/bugtracker.php?key=171}
% \begin{macrocode}
-\DeclareOptionX*{%
- \expandafter\glsxtr@dooption\expandafter{\CurrentOption}}
+\newcommand*{\glsxtr@processunknownoptions}{}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+\@ifpackageloaded{glossaries}
+{%
+ \DeclareOptionX*{%
+ \edef\glsxtr@processunknownoptions{%
+ \noexpand\setupglossaries{\expandonce\CurrentOption}}}
+}
+{%
+ \DeclareOptionX*{%
+ \expandafter\glsxtr@dooption\expandafter{\CurrentOption}}
+}
% \end{macrocode}
% Process options.
% \begin{macrocode}
\ProcessOptionsX
% \end{macrocode}
-% Load \styfmt{glossaries} if not already loaded.
+% Load \sty{glossaries} if not already loaded.
% \begin{macrocode}
\RequirePackage{glossaries}
+\glsxtr@processunknownoptions
% \end{macrocode}
% Load the \sty{glossaries-accsupp} package if required.
% \begin{macrocode}
@@ -2031,6 +2188,183 @@ Dickimaw Books\\
\@glsxtr@defpostpunc
% \end{macrocode}
%
+%\begin{macro}{\glsindexsetting}
+%\changes{1.49}{2022-10-14}{new}
+%This command was new to \sty{glossaries} v4.50 so may not be
+%defined. Note that \pkgopt[only]{record} and
+%\pkgopt[nameref]{record} implement \pkgopt[none]{sort}, which will
+%change the default definition of \cs{glsindexingsetting}.
+% \begin{macrocode}
+\let\@glsxtr@org@indexingsetting\glsindexingsetting
+\providecommand{\glsindexingsetting}{\ifglsxindy xindy\else makeindex\fi}
+\ifx\@glsxtr@org@indexingsetting\glsindexingsetting
+ \renewcommand{\glsindexingsetting}{%
+ \@glsxtr@if@record@only{bib2gls}{\ifglsxindy xindy\else makeindex\fi}%
+ }
+\else
+ \@glsxtr@if@record@only{\renewcommand{\glsindexingsetting}{bib2gls}}{}%
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%
+%The following commands are new to \sty{glossaries} v4.50, so
+%provide them if an older version is present.
+%\begin{macro}{\glssentencecase}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\providecommand{\glssentencecase}[1]{\makefirstuc{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslowercase}
+%\changes{1.49}{2022-10-14}{new}
+%This uses \cs{MakeTextLowercase} because if \cs{glslowercase} isn't
+%defined then \sty{textcase} has been loaded and we might have an
+%older kernel.
+% \begin{macrocode}
+\providecommand{\glslowercase}[1]{\MakeTextLowercase{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsuppercase}
+%\changes{1.49}{2022-10-14}{new}
+%Not using \cs{unexpanded} because ditto the above.
+% \begin{macrocode}
+\providecommand{\glsuppercase}[1]{\mfirstucMakeUppercase{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@Glsentryfield}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\providecommand{\@Glsentryfield}[2]{%
+ \glstexorpdfstring{\@Gls@entry@field{#1}{#2}}%
+ {\MFUsentencecase{\@gls@entry@field{#1}{#2}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstexorpdfstring}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\ifdef\glstexorpdfstring
+{}
+{
+ \ifdef\texorpdfstring
+ {\newcommand{\glstexorpdfstring}{\texorpdfstring}}
+ {\newcommand{\glstexorpdfstring}[2]{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@org@MakeUppercase}
+%Save the original definition of \cs{MakeUppercase} in case it needs
+%to be restored.
+% \begin{macrocode}
+\let\@glsxtr@org@MakeUppercase\MakeUppercase
+% \end{macrocode}
+%\end{macro}
+%
+%If \sty{mfirstuc} v2.08+ is installed, provide interface commands.
+%The simplest method is to test the existence of
+%\cs{MFUsentencecase}, which is provided by \sty{mfirstuc} v2.08+
+%but also by \sty{glossaries} v4.50+. So it may be defined because
+%\sty{glossaries} v4.50+ is installed, in which case \cs{glsmfuexcl}
+%etc are also defined, but it may be defined because \sty{mfirstuc}
+%v2.08+ is installed but an older version of \sty{glossaries} may be
+%present, in which case \cs{glsmfuexcl} etc won't be defined.
+% \begin{macrocode}
+\ExplSyntaxOn
+\ifdef\MFUsentencecase
+{%
+% \end{macrocode}
+% Automatically identify exclusions, blockers and mappings.
+%\begin{macro}{\glsmfuexcl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \providecommand{\glsmfuexcl}[1]{\MFUexcl{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsmfublocker}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \providecommand{\glsmfublocker}[1]{\MFUblocker{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsmfuaddmap}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \providecommand{\glsmfuaddmap}[2]{\MFUaddmap{#1}{#2}}
+% \end{macrocode}
+%\end{macro}
+%Don't alter \cs{MakeUppercase}
+%\begin{macro}{\@glsxtr@saveMakeUppercase}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand{\@glsxtr@saveMakeUppercase}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtr@restoreMakeUppercase}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand{\@glsxtr@restoreMakeUppercase}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtr@assignMakeUppercase}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand{\@glsxtr@assignMakeUppercase}{}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+}
+{
+% \end{macrocode}
+%Provide \cs{MFUsentencecase} for use where expandable contexts are
+%required.
+%\begin{macro}{\MFUsentencecase}
+% \begin{macrocode}
+ \providecommand{\MFUsentencecase}[1]{\text_titlecase_first:n{#1}}
+% \end{macrocode}
+%\end{macro}
+%Provide support for exclusions with \cs{MFUsentencecase}.
+%\begin{macro}{\glsmfuexcl}
+% \begin{macrocode}
+ \providecommand{\glsmfuexcl}[1]{
+ \tl_if_in:NnF \l_text_case_exclude_arg_tl {#1}
+ {
+ \tl_put_right:Nn \l_text_case_exclude_arg_tl {#1}
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%Just treat blockers and mappings as exclusions.
+%\begin{macro}{\glsmfublocker}
+% \begin{macrocode}
+ \providecommand{\glsmfublocker}[1]{\glsmfuexcl{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsmfuaddmap}
+% \begin{macrocode}
+ \providecommand{\glsmfuaddmap}[2]{\glsmfuexcl{#1}\glsmfublocker{#2}}
+% \end{macrocode}
+%\end{macro}
+%With old versions of \sty{mfirstuc}, save and restore
+%\cs{MakeUppercase} in the heading hooks.
+% \begin{macrocode}
+ \newcommand{\@glsxtr@saveMakeUppercase}{%
+ \let\@glsxtr@org@MakeUppercase\MakeUppercase
+ }
+ \newcommand{\@glsxtr@restoreMakeUppercase}{%
+ \let\MakeUppercase\@glsxtr@org@MakeUppercase
+ }
+ \newcommand{\@glsxtr@assignMakeUppercase}{%
+ \let\MakeUppercase\MakeTextUppercase
+ }
+}
+% \end{macrocode}
+%Finished \LaTeX3 code.
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
%\begin{macro}{\glsdoshowtarget}
%\changes{1.48}{2021-11-22}{new}
%Added to \sty{glossaries} v4.50 so many not be defined.
@@ -2042,23 +2376,30 @@ Dickimaw Books\\
%
%\begin{macro}{\glsxtrshowtargetsymbolright}
%\changes{1.48}{2021-11-22}{new}
+%\changes{1.49}{2022-10-14}{added check for math mode}
% \begin{macrocode}
-\newcommand{\glsxtrshowtargetsymbolright}{{\tiny$\triangleleft$}}%
+\newcommand{\glsxtrshowtargetsymbolright}{%
+ \ifmmode \mbox{\tiny$\triangleleft$}\else {\tiny$\triangleleft$}\fi
+}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\glsxtrshowtargetsymbolleft}
%\changes{1.48}{2021-11-22}{new}
+%\changes{1.49}{2022-10-14}{added check for math mode}
% \begin{macrocode}
-\newcommand{\glsxtrshowtargetsymbolleft}{{\tiny$\triangleright$}}%
+\newcommand{\glsxtrshowtargetsymbolleft}{%
+ \ifmmode \mbox{\tiny$\triangleright$}\else {\tiny$\triangleright$}\fi
+}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\glsshowtargetinner}
%\changes{1.48}{2021-11-22}{new}
+%\changes{1.49}{2022-10-14}{added check for math mode}
%Only added to \sty{glossaries} in v4.50 so may not be defined.
% \begin{macrocode}
-\providecommand*{\glsshowtargetinner}[1]{{\glsshowtargetfont [#1]}}
+\providecommand*{\glsshowtargetinner}[1]{\glsshowtargetfonttext{[#1]}}
% \end{macrocode}
%\end{macro}
%
@@ -2070,7 +2411,18 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\glsshowtargetinnercontentsymleft}
+%\begin{macro}{\glsshowtargetfonttext}
+%\changes{1.49}{2022-10-14}{new}
+%Text-block command that checks for math-mode.
+%Only added to \sty{glossaries} in v4.50 so may not be defined.
+% \begin{macrocode}
+\providecommand*{\glsshowtargetfonttext}[1]{%
+ \ifmmode \nfss@text{\glsshowtargetfont #1}\else {\glsshowtargetfont #1}\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsshowtargetinnersymleft}
%\changes{1.48}{2021-11-22}{new}
% \begin{macrocode}
\newcommand*{\glsshowtargetinnersymleft}[1]{%
@@ -2078,7 +2430,7 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\glsshowtargetinnercontentsymright}
+%\begin{macro}{\glsshowtargetinnersymright}
%\changes{1.48}{2021-11-22}{new}
% \begin{macrocode}
\newcommand*{\glsshowtargetinnersymright}[1]{%
@@ -2309,6 +2661,31 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@xp@gls@getcounterprefix}
+%This command is provided by \sty{glossaries} v4.50 so may not be
+%defined. Provide a similar command in case the new version hasn't
+%been installed.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\providecommand*\@xp@gls@getcounterprefix[2]{%
+ \bgroup
+ \glswrglossdisableanchorcmds
+ \protected@edef\@do@gls@getcounterprefix{%
+ \noexpand\egroup
+ \noexpand\@gls@getcounterprefix{#1}{#2}%
+ }%
+ \@do@gls@getcounterprefix
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glswrglossdisableanchorcmds}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\providecommand{\glswrglossdisableanchorcmds}{\let\glstexorpdfstring\@secondoftwo}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@gls@getcounterprefix}
%\changes{1.37}{2018-11-30}{new}
%This command is provided by the base \sty{glossaries} package, but
@@ -2319,9 +2696,14 @@ Dickimaw Books\\
%Unfortunately, not all targets are in this form, so the links fail.
%With \pkgopt[nameref]{record}, the complete target name can be
%saved, so this modification adjusts the warning.
+%
+%The expansion should now be performed in
+%\cs{@xp@gls@getcounterprefix}. Any commands that were using
+%\cs{@gls@getcounterprefix} directly need to be use
+%\cs{@xp@gls@getcounterprefix} instead.
% \begin{macrocode}
\renewcommand*\@gls@getcounterprefix[2]{%
- \protected@edef\@gls@thisloc{#1}\protected@edef\@gls@thisHloc{#2}%
+ \def\@gls@thisloc{#1}\def\@gls@thisHloc{#2}%
\ifx\@gls@thisloc\@gls@thisHloc
\def\@glo@counterprefix{}%
\else
@@ -2376,11 +2758,12 @@ Dickimaw Books\\
% \begin{macrocode}
\AtBeginDocument{%
\disable@keys{glossaries-extra.sty}{abbreviations,docdef,record}%
+ \def\glsxtrundefdebug{\@glsxtrundefdebug}%
\def\@glsxtrundeftag{\glsxtrundeftag}%
}
% \end{macrocode}
%
-%\section{Extra Utilities}
+%\subsection{Extra Utilities}
%
%\begin{macro}{\GlsXtrIfUnusedOrUndefined}
%\changes{1.34}{2018-07-29}{new}
@@ -2399,7 +2782,7 @@ Dickimaw Books\\
%\end{macro}
%
%Starred form of \cs{ifglossaryexists} was only introduced to
-%\styfmt{glossaries} v4.46 so provide it if it hasn't been defined.
+%\sty{glossaries} v4.46 so provide it if it hasn't been defined.
% \begin{macrocode}
\ifdef\s@ifglossaryexists
{}
@@ -2438,7 +2821,7 @@ Dickimaw Books\\
% Provide command to determine if any entries have been added to the
% glossary (where the glossary label is provided in the first
% argument). The entries are stored in the comma-separated list
-% \cs{glolist@\meta{type}}. If this hasn't been defined, the glosary
+% \cs{glolist@\meta{type}}. If this hasn't been defined, the glossary
% doesn't exist. If it has been defined and is simply a comma, the
% glossary exists and is empty. (It's initialised to a comma.)
%\changes{0.4}{2015-12-03}{new}
@@ -2456,6 +2839,32 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GlsXtrIfInGlossary}
+%\begin{definition}
+%\cs{GlsXtrIfInGlossary}\marg{label}\marg{type}\marg{true}\marg{false}
+%\end{definition}
+%\changes{1.49}{?}{new}
+%Test if the given entry is in the given glossary list. This may not
+%correspond to the \gloskey{type} key as the entry may have been
+%copied to the list. Does \meta{false} and issues warning if the glossary doesn't
+%exist.
+% \begin{macrocode}
+\newcommand*{\GlsXtrIfInGlossary}[4]{%
+ \ifcsdef{glolist@#2}%
+ {%
+ \protected@edef\@glsxtr@tmp{#1}%
+ \letcs\@glsxtr@tmplist{glolist@#2}%
+ \expandafter\DTLifinlist\expandafter{\@glsxtr@tmp}{\@glsxtr@tmplist}%
+ {#3}{#4}%
+ }%
+ {%
+ \glsxtrundefaction{Glossary type `#1' doesn't exist}{}%
+ #4%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrifkeydefined}
%\changes{1.12}{2017-02-03}{new}
%Tests if the key given in the first argument has been defined.
@@ -2557,6 +2966,9 @@ Dickimaw Books\\
%
%\begin{macro}{\glsxtrfmt}
%\changes{1.12}{2017-02-03}{new}
+%\begin{definition}
+%\cs{glsxtrfmt}\oarg{options}\marg{entry-label}\marg{text}\oarg{insert}
+%\end{definition}
%The post-link hook isn't done. This now has a starred form
%that checks for a final optional argument.
% \begin{macrocode}
@@ -2628,6 +3040,37 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsxtrfmt}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{Glsxtrfmt}\oarg{options}\marg{entry-label}\marg{text}\oarg{insert}
+%\end{definition}
+%As \cs{glsxtrfmt} but applies a sentence-case change to
+%\meta{text}. This is provided to allow a mapping with
+%\sty{mfirstuc} v2.08+ in the event that an automated case-change is
+%required.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrfmt}{\@ifstar\s@Glsxtrfmt\@Glsxtrfmt}
+\glsmfuaddmap{\glsxtrfmt}{\Glsxtrfmt}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@Glsxtrfmt}
+%\changes{1.49}{2022-10-14}{new}
+%Unstarred form.
+% \begin{macrocode}
+\newcommand*{\@Glsxtrfmt}[3][]{\@@glsxtrfmt{#1}{#2}{\glssentencecase{#3}}{}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\s@Glsxtrfmt}
+%\changes{1.49}{2022-10-14}{new}
+%Starred form.
+% \begin{macrocode}
+\newcommand*{\s@Glsxtrfmt}[3][]{%
+ \new@ifnextchar[{\s@@glsxtrfmt{#1}{#2}{\glssentencecase{#3}}}%
+ {\@@glsxtrfmt{#1}{#2}{\glssentencecase{#3}}{}}%
+}
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{\glsxtrfmtdisplay}
%\changes{1.23}{2017-11-12}{new}
%The command used internally by \cs{glsxtrfmt} to do the actual
@@ -2643,21 +3086,15 @@ Dickimaw Books\\
%\changes{1.12}{2017-02-03}{new}
%No link or indexing.
% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsxtrentryfmt}[2]{%
- \texorpdfstring{\@glsxtrentryfmt{#1}{#2}}{\glsxtrpdfentryfmt{#1}{#2}}%
- }
-}
-{
- \newcommand*{\glsxtrentryfmt}{\@glsxtrentryfmt}
+\newcommand*{\glsxtrentryfmt}[2]{%
+ \glstexorpdfstring{\@glsxtrentryfmt{#1}{#2}}{\glsxtrpdfentryfmt{#1}{#2}}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\glsxtrpdfentryfmt}
%\changes{1.42}{2020-02-03}{new}
-%Use for the PDF bookmarks.
+%Used for the PDF bookmarks.
% \begin{macrocode}
\newcommand*{\glsxtrpdfentryfmt}[2]{#2}
% \end{macrocode}
@@ -2692,6 +3129,27 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsxtrentryfmt}
+%\changes{1.49}{2022-10-14}{new}
+%Sentence-case version.
+% \begin{macrocode}
+\newcommand*{\Glsxtrentryfmt}[2]{%
+ \glstexorpdfstring
+ {\@glsxtrentryfmt{#1}{\glssentencecase{#2}}}%
+ {\Glsxtrpdfentryfmt{#1}{#2}}%
+}
+\glsmfuaddmap{\glsxtrentryfmt}{\Glsxtrentryfmt}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrpdfentryfmt}
+%\changes{1.49}{2022-10-14}{new}
+%Used for the PDF bookmarks.
+% \begin{macrocode}
+\newcommand*{\Glsxtrpdfentryfmt}[2]{\MFUsentencecase{#2}}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrfieldlistadd}
%\changes{1.12}{2017-02-03}{new}
%If a field stores an etoolbox internal list (e.g.
@@ -2807,7 +3265,7 @@ Dickimaw Books\\
%\end{macro}
%
%\begin{macro}{\@glsxtrforcsvfield}
-%\changes{1.47}{2017-11-14}{new}
+%\changes{1.47}{2021-11-04}{new}
%Unstarred version.
% \begin{macrocode}
\newcommand*{\@glsxtrforcsvfield}[3]{%
@@ -2822,7 +3280,7 @@ Dickimaw Books\\
%\end{macro}
%
%\begin{macro}{\s@glsxtrforcsvfield}
-%\changes{1.47}{2017-11-14}{new}
+%\changes{1.47}{2021-11-04}{new}
%Starred version.
% \begin{macrocode}
\newcommand*{\s@glsxtrforcsvfield}[3]{%
@@ -3158,41 +3616,29 @@ Dickimaw Books\\
%\changes{1.12}{2017-02-03}{new}
%\changes{1.37}{2018-11-30}{fixed internal command and added check for
%\cs{texorpdfstring}}
+%\changes{1.49}{2022-10-14}{now using \cs{@Glsentryfield}}
%Provide a user-level alternative to \cs{@Gls@entry@field}.
+%Now uses \cs{MFUsentencecase} in PDF bookmarks.
% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\Glsxtrusefield}[2]{%
- \texorpdfstring
- {\@Gls@entry@field{#1}{#2}}
- {\@gls@entry@field{#1}{#2}}%
- }
-}
-{
- \newcommand*{\Glsxtrusefield}[2]{%
- \@Gls@entry@field{#1}{#2}%
- }
+\newcommand*{\Glsxtrusefield}[2]{%
+ \@Glsentryfield{#1}{#2}%
}
+\glsmfuaddmap{\glsxtrusefield}{\Glsxtrusefield}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\GLSxtrusefield}
%\changes{1.37}{2018-11-30}{new}
+%\changes{1.49}{2022-10-14}{added uppercase PDF bookmark alternative}
%As above but convert to all caps.
+%Note that with \sty{mfirstuc} v2.08+, \cs{mfirstucMakeUppercase}
+%is expandable, so therefore \cs{glsuppercase} should also be
+%expandable.
% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\GLSxtrusefield}[2]{%
- \texorpdfstring
- {\glsdoifexists{#1}{\mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}}}%
- {\@gls@entry@field{#1}{#2}}%
- }
-}
-{
- \newcommand*{\GLSxtrusefield}[2]{%
- \glsdoifexists{#1}{\mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}}%
- }
+\newcommand*{\GLSxtrusefield}[2]{%
+ \glsuppercase{\csuse{glo@\glsdetoklabel{#1}@#2}}%
}
+\glsmfublocker{\GLSxtrusefield}
% \end{macrocode}
%\end{macro}
%
@@ -3228,7 +3674,7 @@ Dickimaw Books\\
%\begin{macro}{\glsxtrapptocsvfield}
%\changes{1.47}{2021-11-04}{new}
% Similar to the above but will append value with a leading comma if
-% the field is already defined. This is used by \gls{bib2gls}.
+% the field is already defined. This is used by \app{bib2gls}.
% There's no check if the entry has been defined. (Because of the
% way that bib2gls's save-from-alias etc options are
% implemented, the entry may not have yet been written to the glstex
@@ -3264,8 +3710,9 @@ Dickimaw Books\\
%\begin{macro}{\GlsXtrLetField}
%\changes{1.12}{2017-02-03}{new}
%Uses \cs{cslet} instead. Third argument should be a macro.
+%\changes{1.49}{2022-10-14}{corrected spelling}
% \begin{macrocode}
-\newrobustcmd*{\GlstrLetField}[3]{%
+\newrobustcmd*{\GlsXtrLetField}[3]{%
\glsxtrsetfieldifexists{#1}{#2}%
{\cslet{glo@\glsdetoklabel{#1}@#2}{#3}}%
}
@@ -3656,14 +4103,35 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-%\section{Modifications to Commands Provided by \styfmt{glossaries}}
-% Some of the commands provided by \styfmt{glossaries} are modified
+%\subsection{Modifications to Commands Provided by \sty{glossaries}}
+% Some of the commands provided by \sty{glossaries} are modified
% to take into account new options or to change default behaviour.
%
+%\begin{macro}{\@p@glossarysection}
+%Phantom section only needs to be added for starred section
+%commands.
+%\changes{1.49}{2022-10-14}{moved \cs{phantomsection}}
+% \begin{macrocode}
+\renewcommand*{\@p@glossarysection}[2]{%
+ \glsclearpage
+ \ifdefempty\@@glossarysecstar
+ {%
+ \csname\@@glossarysec\endcsname{#2}%
+ }%
+ {%
+ \phantomsection
+ \@gls@toc{#1}{\@@glossarysec}%
+ \csname\@@glossarysec\endcsname*{#2}%
+ }%
+ \@@glossaryseclabel
+}
+% \end{macrocode}
+%\end{macro}
+%
% The original \cs{@gls@entry@field} causes a problem for undefined
% entries when used in section headings or captions. Since entries
% must be defined with just the base package this isn't a
-% significant issue, but it will cause a problem with \gls{bib2gls}
+% significant issue, but it will cause a problem with \app{bib2gls}
% where no entries are defined on the first \LaTeX\ call, so
% redefine \cs{@gls@entry@field} to use \cs{csuse} instead of
% \cs{csname}.
@@ -3702,6 +4170,84 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@gls@noexpand@field}
+%\changes{1.49}{2022-10-14}{added redefinition}
+%Add check for encapinnerfmt, encapnocase and encapnocaseinnerfmt
+% \begin{macrocode}
+\renewcommand{\@@gls@noexpand@field}[3]{%
+ \glsifcategoryattributehasitem{\@glo@category}{encapnocaseinnerfmt}{#2}%
+ {%
+ \csxdef{glo@#1@#2}{\noexpand\NoCaseChange{\noexpand\glsxtrgenentrytextfmt
+ {\expandonce{#3}}}}%
+ \glsexclapplyinnerfmtfield{#1}{#2}%
+ }%
+ {%
+ \glsifcategoryattributehasitem{\@glo@category}{encapnocase}{#2}%
+ {%
+ \glsifcategoryattributehasitem{\@glo@category}{encapinnerfmt}{#2}%
+ {%
+ \csxdef{glo@#1@#2}{\noexpand\NoCaseChange{\noexpand\glsxtrgenentrytextfmt
+ {\expandonce{#3}}}}%
+ \glsexclapplyinnerfmtfield{#1}{#2}%
+ }%
+ {%
+ \csxdef{glo@#1@#2}{\noexpand\NoCaseChange{\expandonce{#3}}}%
+ }%
+ }%
+ {%
+ \glsifcategoryattributehasitem{\@glo@category}{encapinnerfmt}{#2}%
+ {%
+ \csxdef{glo@#1@#2}{\noexpand\glsxtrgenentrytextfmt{\expandonce{#3}}}%
+ \glsexclapplyinnerfmtfield{#1}{#2}%
+ }%
+ {%
+ \expandafter\global\expandafter\let\csname glo@#1@#2\endcsname#3%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@gls@expand@field}
+%\changes{1.49}{2022-10-14}{added redefinition}
+%Add check for encapinnerfmt, encapnocase and encapnocaseinnerfmt
+% \begin{macrocode}
+\renewcommand{\@@gls@expand@field}[3]{%
+ \glsifcategoryattributehasitem{\@glo@category}{encapnocaseinnerfmt}{#2}%
+ {%
+ \protected@csxdef{glo@#1@#2}{\noexpand\NoCaseChange
+ {\noexpand\glsxtrgenentrytextfmt{#3}}}%
+ \glsexclapplyinnerfmtfield{#1}{#2}%
+ }%
+ {%
+ \glsifcategoryattributehasitem{\@glo@category}{encapnocase}{#2}%
+ {%
+ \glsifcategoryattributehasitem{\@glo@category}{encapinnerfmt}{#2}%
+ {%
+ \protected@csxdef{glo@#1@#2}{\noexpand\NoCaseChange
+ {\noexpand\glsxtrgenentrytextfmt{#3}}}%
+ \glsexclapplyinnerfmtfield{#1}{#2}%
+ }%
+ {%
+ \protected@csxdef{glo@#1@#2}{\noexpand\NoCaseChange{#3}}%
+ }%
+ }%
+ {%
+ \glsifcategoryattributehasitem{\@glo@category}{encapinnerfmt}{#2}%
+ {%
+ \protected@csxdef{glo@#1@#2}{\noexpand\glsxtrgenentrytextfmt{#3}}%
+ \glsexclapplyinnerfmtfield{#1}{#2}%
+ }%
+ {%
+ \protected@csxdef{glo@#1@#2}{#3}%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
%Provide a starred version of \cs{longnewglossaryentry} that doesn't
%automatically insert \verb|\leavevmode\unskip\nopostdesc| at the
%end of the description. The unstarred version is modified to use
@@ -3973,10 +4519,21 @@ Dickimaw Books\\
%
%\begin{macro}{\glsxtrcopytoglossary}
%Adds an entry label to another glossary list. First argument is
-%entry label. Second argument is glossary label.
+%entry label. Second argument is glossary label. The starred version
+%globally adds the entry label.
%\changes{1.12}{2017-02-03}{new}
+%\changes{1.49}{2022-10-14}{added starred form}
% \begin{macrocode}
-\newcommand*{\glsxtrcopytoglossary}[2]{%
+\newcommand*{\glsxtrcopytoglossary}{%
+ \@ifstar\s@glsxtrcopytoglossary\@glsxtrcopytoglossary
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrcopytoglossary}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtrcopytoglossary}[2]{%
\glsdoifexists{#1}%
{%
\ifcsdef{glolist@#2}
@@ -3994,25 +4551,54 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-%\subsection{Existence Checks}
+%\begin{macro}{\s@glsxtrcopytoglossary}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\s@glsxtrcopytoglossary}[2]{%
+ \glsdoifexists{#1}%
+ {%
+ \ifcsdef{glolist@#2}
+ {%
+ \protected@csxappto{glolist@#2}{#1,}%
+ }%
+ {%
+ \glsxtrundefaction{Glossary type `#2' doesn't exist}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\subsubsection{Existence Checks}
%\begin{macro}{\glsdoifexists}
% Modify \cs{glsdoifexists} to take account of the
% \pkgopt{undefaction} setting.
+%\changes{1.08}{2016-12-13}{now defines \cs{glslabel}}
+%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
+%\changes{1.49}{2022-10-14}{added \cs{glsxtrundefdebug}}
% \begin{macrocode}
\renewcommand{\glsdoifexists}[2]{%
- \ifglsentryexists{#1}{#2}%
- {%
+ \ifglsentryexists{#1}{#2}{\glsxtr@doifexists{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@doifexists}
+%Provide a robust command for the error/warning in case
+%\cs{glsdoifexists} is expanded.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd{\glsxtr@doifexists}[1]{%
% \end{macrocode}
% Define \cs{glslabel} in case it's needed after this command (for
% example in the post-link hook).
-%\changes{1.08}{2016-12-13}{now defines \cs{glslabel}}
-%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
% \begin{macrocode}
- \protected@edef\glslabel{\glsdetoklabel{#1}}%
- \glsxtrundefaction{Glossary entry `\glslabel'
- has not been defined}{You need to define a glossary entry before
- you can reference it.}%
- }%
+ \protected@edef\glslabel{\glsdetoklabel{#1}}%
+ \expandafter\glsxtrundefdebug\expandafter
+ {\expandafter\detokenize\expandafter{\glslabel}}%
+ \glsxtrundefaction{Glossary entry `\glslabel'
+ has not been defined}{You need to define a glossary entry before
+ you can reference it.}%
}
% \end{macrocode}
%\end{macro}
@@ -4022,9 +4608,19 @@ Dickimaw Books\\
% \pkgopt{undefaction} setting.
% \begin{macrocode}
\renewcommand{\glsdoifnoexists}[2]{%
- \ifglsentryexists{#1}{%
- \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}'
- has already been defined}{}}{#2}%
+ \ifglsentryexists{#1}{\glsxtr@doifnoexists{#1}}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@doifnoexists}
+%Provide a robust command for the error/warning in case
+%\cs{glsdoifnoexists} is expanded.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd{\glsxtr@doifnoexists}[1]{%
+ \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}'
+ has already been defined}%
}
% \end{macrocode}
%\end{macro}
@@ -4032,7 +4628,7 @@ Dickimaw Books\\
%\begin{macro}{\glsdoifexistsordo}
% Modify \cs{glsdoifexistsordo} to take account of the
% \pkgopt{undefaction} setting. This command was introduced in
-% \styfmt{glossaries} version 4.19, so check if it has been defined first.
+% \sty{glossaries} version 4.19, so check if it has been defined first.
% \begin{macrocode}
\ifdef\glsdoifexistsordo
{%
@@ -4092,8 +4688,8 @@ Dickimaw Books\\
%\end{macro}
%
%There are now three types of cross-references: the \gloskey{see} key (as
-%original), the \gloskey{alias} key (from \styfmt{glossaries-extra} v1.12)
-% and the \gloskey{seealso} key (from \styfmt{glossaries-extra} v1.16).
+%original), the \gloskey{alias} key (from \sty{glossaries-extra} v1.12)
+% and the \gloskey{seealso} key (from \sty{glossaries-extra} v1.16).
% The original \gloskey{see} key needs to have a corresponding field
% (which it doesn't with the base \sty{glossaries} package).
%
@@ -4117,6 +4713,70 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrseelistsencap}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsxtrseelistsencap}\marg{content}
+%\end{definition}
+%Encapsulates cross-reference list.
+% \begin{macrocode}
+\newcommand*{\glsxtrseelistsencap}[1]{\space #1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrseelistsdelim}
+%\changes{1.49}{2022-10-14}{new}
+%Delimiter in cross-reference list.
+% \begin{macrocode}
+\newcommand*{\glsxtrseelistsdelim}{, }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrseelists}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsxtrseelists}\marg{label}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glsxtrseelists}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \def\@glsxtr@seelists{}%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@see}%
+ \ifdefempty\@glo@see
+ {}%
+ {%
+ \protected@edef\@glsxtr@seelists{%
+ \noexpand\glsxtr@usesee\@glo@see\noexpand\@end@glsxtr@usesee
+ }%
+ }%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@seealso}%
+ \ifdefempty\@glo@see
+ {}%
+ {%
+ \ifdefempty\@glsxtr@seelists{}%
+ {\appto\@glsxtr@seelists{\glsxtrseelistsdelim}}%
+ \protected@edef\@glsxtr@seelists{%
+ \noexpand\glsxtruseseealsoformat{\@glo@see}%
+ }%
+ }%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@alias}%
+ \ifdefempty\@glo@see
+ {}%
+ {%
+ \ifdefempty\@glsxtr@seelists{}%
+ {\appto\@glsxtr@seelists{\glsxtrseelistsdelim}}%
+ \protected@edef\@glsxtr@seelists{%
+ \noexpand\glsxtruseseeformat{\noexpand\seename}{\@glo@see}%
+ }%
+ }%
+ \ifdefempty\@glsxtr@seelists{}%
+ {\glsxtrseelistsencap\@glsxtr@seelists}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrusesee}
%\changes{1.06}{2016-06-18}{new}
%Apply \cs{glsseeformat} to the \gloskey{see} key if not empty.
@@ -4171,11 +4831,11 @@ Dickimaw Books\\
%\changes{1.37}{2018-11-30}{removed reference to \cs{glslabel}}
%\changes{1.42}{2020-02-03}{switched to using \cs{glsfmttext} and
%\cs{glsfmtname}}
-%\styfmt{glossaries} originally defined \cs{glsseeitemformat}
+%\sty{glossaries} originally defined \cs{glsseeitemformat}
%to use \cs{glsentryname} but in v3.0 this was switched to
%use \cs{glsentrytext} due to problems occurring with the
%\gloskey{name} field being sanitized. Since this is no longer a
-%problem, \styfmt{glossaries-extra} restored the original
+%problem, \sty{glossaries-extra} restored the original
%definition as it makes more sense to use the \gloskey{name}
%in the cross-reference list. Unfortunately this doesn't take style
%changes into account, so as from v1.42, this now uses
@@ -4201,12 +4861,26 @@ Dickimaw Books\\
%use this command to show the hierarchy, if required. This now uses
%\cs{glsfmttext} and \cs{glsfmtname} instead of \cs{glsaccessshort}
%and \cs{glsaccessname} to allow for style formatting.
+%\changes{1.49}{2022-10-14}{added \cs{expandafter}s}
+%\changes{1.49}{2022-10-14}{added \cs{glstexorpdfstring}}
% \begin{macrocode}
\newcommand*{\glsxtrhiername}[1]{%
+ \glstexorpdfstring
+ {\@glsxtrhiername{#1}}%
+ {\glsentryname{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtrhiername}
+%Provide robust inner command.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@glsxtrhiername}[1]{%
\glsdoifexists{#1}%
{%
\glsxtrifhasfield{parent}{#1}%
- {\glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}%
+ {\expandafter\glsxtrhiername\expandafter
+ {\glscurrentfieldvalue}\glsxtrhiernamesep}%
{}%
\ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}%
}%
@@ -4222,18 +4896,33 @@ Dickimaw Books\\
%\cs{Glsxtrhiername}\marg{label}
%\end{definition}
%As above but displays the top-level name with an initial capital.
+%\changes{1.49}{2022-10-14}{added \cs{expandafter}s}
+%\changes{1.49}{2022-10-14}{added \cs{glstexorpdfstring}}
% \begin{macrocode}
\newcommand*{\Glsxtrhiername}[1]{%
+ \glstexorpdfstring
+ {\@Glsxtrhiername{#1}}%
+ {\MFUsentencecase{\glsentryname{#1}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@Glsxtrhiername}
+%\changes{1.49}{2022-10-14}{new}
+%Provide robust inner command.
+% \begin{macrocode}
+\newrobustcmd*{\@Glsxtrhiername}[1]{%
\glsdoifexists{#1}%
{%
\glsxtrifhasfield{parent}{#1}%
{%
- \Glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep
+ \expandafter\Glsxtrhiername\expandafter
+ {\glscurrentfieldvalue}\glsxtrhiernamesep
\ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}%
}%
{\ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}}%
}%
}
+\glsmfuaddmap{\glsxtrhiername}{\Glsxtrhiername}
% \end{macrocode}
%\end{macro}
%
@@ -4247,16 +4936,31 @@ Dickimaw Books\\
%As above but converts the first letter of each name to a capital.
%(Note that this isn't applying title case, just capitalising the
%start of each hierarchical element.)
+%\changes{1.49}{2022-10-14}{added \cs{expandafter}s}
+%\changes{1.49}{2022-10-14}{added \cs{glstexorpdfstring}}
% \begin{macrocode}
\newcommand*{\GlsXtrhiername}[1]{%
+ \glstexorpdfstring
+ {\@GlsXtrhiername{#1}}%
+ {\glsentryname{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@GlsXtrhiername}
+%\changes{1.49}{2022-10-14}{new}
+%Provide robust inner command.
+% \begin{macrocode}
+\newrobustcmd*{\@GlsXtrhiername}[1]{%
\glsdoifexists{#1}%
{%
\glsxtrifhasfield{parent}{#1}%
- {\GlsXtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}%
+ {\expandafter\GlsXtrhiername\expandafter
+ {\glscurrentfieldvalue}\glsxtrhiernamesep}%
{}%
\ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}%
}%
}
+\glsmfublocker{\GlsXtrhiername}
% \end{macrocode}
%\end{macro}
%
@@ -4268,18 +4972,33 @@ Dickimaw Books\\
%\cs{GLSxtrhiername}\marg{label}
%\end{definition}
%As above but displays the top-level name in all-caps.
+%\changes{1.49}{2022-10-14}{added \cs{expandafter}s}
+%\changes{1.49}{2022-10-14}{added \cs{glstexorpdfstring}}
% \begin{macrocode}
\newcommand*{\GLSxtrhiername}[1]{%
+ \glstexorpdfstring
+ {\@GLSxtrhiername{#1}}%
+ {\GLSxtrusefield{#1}{name}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@GLSxtrhiername}
+%\changes{1.49}{2022-10-14}{new}
+%Provide robust inner command.
+% \begin{macrocode}
+\newrobustcmd*{\@GLSxtrhiername}[1]{%
\glsdoifexists{#1}%
{%
\glsxtrifhasfield{parent}{#1}%
{%
- \GLSxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep
+ \expandafter\GLSxtrhiername\expandafter
+ {\glscurrentfieldvalue}\glsxtrhiernamesep
\ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}%
}%
{\ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}}%
}%
}
+\glsmfublocker{\GLSxtrhiername}
% \end{macrocode}
%\end{macro}
%
@@ -4291,18 +5010,36 @@ Dickimaw Books\\
%\cs{GLSXTRhiername}\marg{label}
%\end{definition}
%As above but displays all names in all-caps.
+%\changes{1.49}{2022-10-14}{added \cs{expandafter}s}
+%\changes{1.49}{2022-10-14}{added \cs{glstexorpdfstring}}
% \begin{macrocode}
\newcommand*{\GLSXTRhiername}[1]{%
- \glsdoifexists{#1}%
- {%
- \glsxtrifhasfield{parent}{#1}%
- {\GLSXTRhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}%
- {}
- \ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}%
- }%
+ \glstexorpdfstring
+ {\@GLSXTRhiername{#1}}%
+ {\GLSxtrusefield{#1}{name}}%
}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\@GLSXTRhiername}
+%\changes{1.49}{2022-10-14}{new}
+%Provide robust inner command.
+% \begin{macrocode}
+\newrobustcmd*{\@GLSXTRhiername}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsxtrifhasfield{parent}{#1}%
+ {\expandafter\GLSXTRhiername\expandafter
+ {\glscurrentfieldvalue}\glsxtrhiernamesep}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{removed unwanted eol}
+% \begin{macrocode}
+ {}%
+ \ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}%
+ }%
+}
+\glsmfublocker{\GLSXTRhiername}
+% \end{macrocode}
+%\end{macro}
%
%\begin{macro}{\glsxtrhiernamesep}
%\changes{1.37}{2018-11-30}{new}
@@ -4404,6 +5141,61 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrtaggedlistsep}
+%\changes{1.49}{2022-10-14}{new}
+%Separator between the tag and the list in \cs{glsxtrtaggedlist}
+% \begin{macrocode}
+\newcommand{\glsxtrtaggedlistsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrtaggedlist}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsxtrtaggedlist}\marg{singular tag}\marg{plural
+%tag}\marg{label prefix}\marg{label list}
+%\end{definition}
+%Similar to the above but the tag is selected depending on how many
+%items there are in the list.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtaggedlist}[4]{%
+ \begingroup
+ \protected@edef\@gls@taggedlist@labels{#4}%
+ \let\@gls@dolast\relax
+ \let\@gls@donext\relax
+ \let\@glsseeitem\@glsxtr@seefirstitem
+ \let\@glsseelastsep\glsseelastsep
+ \def\@gls@taggedlist@content{}%
+ \let\@gls@taggedlist@tag\relax
+ \@for\@gls@thislabel:=\@gls@taggedlist@labels\do{%
+ \ifx\@xfor@nextelement\@nnil
+ \ifx\@gls@dolast\relax
+ \else
+ \eappto\@gls@taggedlist@content{\expandonce\@gls@dolast}%
+ \fi
+ \else
+ \ifx\@gls@dolast\relax
+ \else
+ \eappto\@gls@taggedlist@content{\expandonce\@gls@donext}%
+ \fi
+ \fi
+ \protected@eappto\@gls@taggedlist@content{\noexpand\@glsseeitem
+ {#3\@gls@thislabel}}%
+ \let\@gls@dolast\@glsseelastsep
+ \let\@gls@donext\glsseesep
+ \let\@glsseeitem\@glsxtr@seeitem
+ \let\@glsseelastsep\glsseelastoxfordsep
+ \ifx\@gls@taggedlist@tag\relax
+ \def\@gls@taggedlist@tag{#1\glsxtrtaggedlistsep}%
+ \else
+ \def\@gls@taggedlist@tag{#2\glsxtrtaggedlistsep}%
+ \fi
+ }%
+ \@gls@taggedlist@tag\@gls@taggedlist@content
+ \endgroup
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@glsxtr@seeitem}
%\changes{1.48}{2021-11-22}{new}
% \begin{macrocode}
@@ -4458,7 +5250,7 @@ Dickimaw Books\\
%\changes{1.16}{2017-06-15}{new}
%\changes{1.42}{2020-02-03}{add check for \cs{alsoname}}
%In case this command hasn't been defined. Languages packages
-%actually provide \ics{alsoname} so use that if it's defined.
+%actually provide \cs{alsoname} so use that if it's defined.
% \begin{macrocode}
\ifdef\alsoname
{\providecommand{\seealsoname}{\alsoname}}
@@ -4498,21 +5290,24 @@ Dickimaw Books\\
%This doesn't increment the associated counter.
% \begin{macrocode}
\newrobustcmd*{\glsxtrindexseealso}[2]{%
- \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex
- \@glsxtr@recordsee{#1}{#2}%
- \fi
- \glsdoifexists{#1}%
+ \glsxtr@wrglossary@encap{#1}
{%
- \@@glsxtrwrglossmark
- \def\@gls@xref{#2}%
- \@onelevel@sanitize\@gls@xref
- \@gls@checkmkidxchars\@gls@xref
- \gls@glossary{\csname glo@#1@type\endcsname}{%
- (indexentry
- :tkey (\csname glo@#1@index\endcsname)
- :xref (\string"\@gls@xref\string")
- :attr \string"seealso\string"
- )
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex
+ \@glsxtr@recordsee{#1}{#2}%
+ \fi
+ \glsdoifexists{#1}%
+ {%
+ \@@glsxtrwrglossmark
+ \def\@gls@xref{#2}%
+ \@onelevel@sanitize\@gls@xref
+ \@gls@checkmkidxchars\@gls@xref
+ \gls@glossary{\csname glo@#1@type\endcsname}{%
+ (indexentry
+ :tkey (\csname glo@#1@index\endcsname)
+ :xref (\string"\@gls@xref\string")
+ :attr \string"seealso\string"
+ )
+ }%
}%
}%
}
@@ -4575,6 +5370,7 @@ Dickimaw Books\\
{\csxdef{glo@\@glo@label @alias}{}}%
{%
\csxdef{glo@\@glo@label @alias}{\@glo@alias}%
+ \glsxtraliashook{\@glo@label}%
}%
}
% \end{macrocode}
@@ -4614,6 +5410,7 @@ Dickimaw Books\\
{%
\protected@edef\@do@glssee{\noexpand\glssee{\@glo@label}{\@glo@alias}}%
\@do@glssee
+ \glsxtraliashook{\@glo@label}%
}%
{}%
}%
@@ -4681,6 +5478,13 @@ Dickimaw Books\\
}
% \end{macrocode}
%
+%\begin{macro}{\glsxtraliashook}
+%\changes{1.49}{2022-10-14}{new}
+%Provide a hook that's used when the alias field is provided.
+% \begin{macrocode}
+\newcommand*{\glsxtraliashook}[1]{}
+% \end{macrocode}
+%\end{macro}
%
% Add all unused cross-references at the end of the document.
% \begin{macrocode}
@@ -4696,14 +5500,22 @@ Dickimaw Books\\
{%
\forglsentries[\@glo@type]{\@glo@label}%
{%
- \ifglsused{\@glo@label}%
- {\expandafter\@glsxtr@addunusedxrefs\expandafter{\@glo@label}}{}%
+ \ifglsused{\@glo@label}{\glsxtraddunusedxrefs{\@glo@label}}{}%
}%
}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtraddunusedxrefs}
+%\changes{1.49}{2022-10-14}{new}
+%Added user-level command in case user wants to redefine
+%\cs{glsxtraddallcrossrefs}
+% \begin{macrocode}
+\newcommand*{\glsxtraddunusedxrefs}[1]{\expandafter\@glsxtr@addunusedxrefs\expandafter{#1}}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@glsxtr@addunusedxrefs}
% If the given entry has a \gloskey{see} or \gloskey{seealso} field add all unused
% cross-references. (The \gloskey{alias} field isn't checked.)
@@ -4767,10 +5579,10 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-%\subsection{Document Definitions}
+%\subsubsection{Document Definitions}
%
%\begin{macro}{\gls@begindocdefs}
-%This command was only introduced to \styfmt{glossaries} v4.37, so
+%This command was only introduced to \sty{glossaries} v4.37, so
%it may not be defined. If it has been defined, redefine it to check
%\cs{@glsxtr@docdefval} so that it only inputs the \texttt{.glsdefs}
%file if \pkgopt[true]{docdef}.
@@ -4835,6 +5647,7 @@ Dickimaw Books\\
% \begin{macrocode}
\let\glsxtr@orgmakenoidxglossaries\makenoidxglossaries
\renewcommand{\makenoidxglossaries}{%
+ \def\glsindexingsetting{noidx}%
\@domakeglossaries
{%
\ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off
@@ -4892,11 +5705,38 @@ Dickimaw Books\\
{You may only use \string\makenoidxglossaries\ space with the
record=off option}%
}%
+ \let\gls@warn@noidx@incompatible\@gls@warn@noidx@incompatible
}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\gls@warn@noidx@incompatible}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\gls@warn@noidx@incompatible}[2]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@warn@noidx@incompatible}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@warn@noidx@incompatible}[2]{%
+ #2\GlossariesExtraWarning{#1\space is incompatible with \string\makenoidxglossaries}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@warn@noidxmakegloss@incompatible}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\gls@warn@noidxmakegloss@incompatible}[2]{%
+ \gls@warn@noidx@incompatible{#1}{#2}%
+ \gls@warn@makegloss@incompatible{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\gls@defdocnewglossaryentry}
% Modify \cs{gls@defdocnewglossaryentry} so that it checks
% the \pkgopt{docdef} value.
@@ -5039,6 +5879,7 @@ Dickimaw Books\\
\def\glsxtr@keylist{##1}%
\@Glsxtr
}
+ \glsmfuaddmap{\glsxtr}{\Glsxtr}
% \end{macrocode}
%\end{macro}
%
@@ -5093,6 +5934,7 @@ Dickimaw Books\\
\def\glsxtr@keylist{##1}%
\@Glsxtrpl
}
+ \glsmfuaddmap{\glsxtrpl}{\Glsxtrpl}
% \end{macrocode}
%\end{macro}
%
@@ -5162,7 +6004,7 @@ Dickimaw Books\\
\@onlypreamble\GlsXtrEnableOnTheFly
% \end{macrocode}
%
-%\subsection{Existing Glossary Style Modifications}
+%\subsubsection{Existing Glossary Style Modifications}
%
% Modify \cs{setglossarystyle} to keep track of the current style.
% This allows the \cs{glossaries-extra-stylemods} package to reset the
@@ -5175,7 +6017,18 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-% Modify \cs{setglossarystyle} to set \cs{@glsxtr@current@style}.
+%\begin{macro}{\glsxtrpreglossarystyle}
+%\changes{1.49}{2022-10-14}{new}
+%A hook to initialise default definitions for style commands.
+% \begin{macrocode}
+\newcommand{\glsxtrpreglossarystyle}{%
+ \renewcommand*{\glssubgroupheading}[4]{\glsgroupheading{##4}}%
+}
+% \end{macrocode}
+%\end{macro}
+% Modify \cs{setglossarystyle} to set \cs{@glsxtr@current@style}
+% and reset \cs{glssubgroupheading} in case the style doesn't
+% support it.
%\begin{macro}{\setglossarystyle}
% \begin{macrocode}
\renewcommand*{\setglossarystyle}[1]{%
@@ -5184,12 +6037,16 @@ Dickimaw Books\\
\PackageError{glossaries-extra}{Glossary style `#1' undefined}{}%
}%
{%
+ \glsxtrpreglossarystyle
\csname @glsstyle@#1\endcsname
% \end{macrocode}
% Only set the current style if it exists.
% \begin{macrocode}
\protected@edef\@glsxtr@current@style{#1}%
}%
+% \end{macrocode}
+% Set this as the default, if a default hasn't been set.
+% \begin{macrocode}
\ifx\@glossary@default@style\relax
\protected@edef\@glossary@default@style{#1}%
\fi
@@ -5197,7 +6054,7 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-% In case we have an old version of \styfmt{glossaries}:
+% In case we have an old version of \sty{glossaries}:
% \begin{macrocode}
\ifdef\@glossary@default@style
{}
@@ -5435,7 +6292,7 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-%\subsection{Entry Formatting, Hyperlinks and Indexing}
+%\subsubsection{Entry Formatting, Hyperlinks and Indexing}
%
%\begin{macro}{\glsentryfmt}
% Change default entry format. Use the generic format for regular
@@ -5480,13 +6337,471 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%Some formatting commands (such as highlighting or letter spacing) may
+%require expandable content in the argument, so also provide a formatting
+%command for use within \cs{glsgenentryfmt} for those instances.
+%
+%\begin{macro}{\glsxtrdefaultentrytextfmt}
+%\changes{1.49}{2022-10-14}{new}
+%This is the default command that \cs{glsxtrgenentrytextfmt} is initialised to
+%within \cs{@gls@link}.
+% \begin{macrocode}
+\newcommand{\glsxtrdefaultentrytextfmt}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrattrentrytextfmt}
+%\changes{1.49}{2022-10-14}{new}
+%Provide a convenient command that applies the formatting according to
+%the category attribute. This isn't used by default as this inner formatting
+%should rarely be needed and increases complexity.
+% \begin{macrocode}
+\newcommand{\glsxtrattrentrytextfmt}[1]{%
+ \glshasattribute{\glslabel}{innertextformat}%
+ {%
+ \csuse{\glsgetattribute{\glslabel}{innertextformat}}{#1}%
+ }%
+ {#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrgenentrytextfmt}
+%\changes{1.49}{2022-10-14}{new}
+%This command is a user-level command to allow it to be included in custom
+%formats or styles but it should not be redefined at the user level
+%as it's redefined within \cs{@gls@link} (similar to other style commands, such
+%as \cs{glscapscase}. Redefine \cs{glsxtrdefaultentrytextfmt} to change
+%the default definition for this command.
+% \begin{macrocode}
+\newcommand*{\glsxtrgenentrytextfmt}{\glsxtrdefaultentrytextfmt}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtfield}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsfmtfield}\marg{insert}\marg{cs}\marg{label}\marg{field}
+%\end{definition}
+%Provide a convenient way of applying a formatting command to the actual
+%field contents. No check for existence.
+%
+%Note this command intentionally isn't robust, as it's possible that
+%a user may want to redefine an abbreviation command to use
+%\cs{MakeLowercase}, for example, to use smallcaps when
+%abbreviations have been defined with the short version in capitals.
+%Using \cs{newrobustcmd} will break that case.
+% \begin{macrocode}
+\newcommand*{\glsfmtfield}[4]{%
+ \expandafter\expandafter\expandafter
+ #2\expandafter\expandafter\expandafter
+ {\csname glo@\glsdetoklabel{#3}@#4\endcsname #1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtfield}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{Glsfmtfield}\marg{insert}\marg{cs}\marg{label}\marg{field}
+%\end{definition}
+%As above but convert first letter to uppercase.
+%Note that if the formatting command can go outside of \cs{makefirstuc}
+%then it can simply be applied around the appropriate command that expands
+%to the field value. For example,
+%\begin{verbatim}
+%\emph{\Glsentrytext{label}}
+%\end{verbatim}
+%instead of
+%\begin{verbatim}
+%\Glsfmtfield{}{\emph}{sample}{text}
+%\end{verbatim}
+%
+%Note this command intentionally isn't robust for the same reason as
+%above. The expansion allows \cs{makefirstuc} to pick up any
+%mappings or blockers before the content is passed to
+%\cs{MFUsentencecase}.
+% \begin{macrocode}
+\newcommand*{\Glsfmtfield}[4]{%
+ \ifx#2\@firstofone
+ \expandafter\expandafter\expandafter
+ \glssentencecase\expandafter\expandafter\expandafter
+ {%
+ \csname glo@\glsdetoklabel{#3}@#4\endcsname #1%
+ }%
+ \else
+ \expandafter\expandafter\expandafter
+ \glssentencecase\expandafter\expandafter\expandafter
+ {%
+ \expandafter\expandafter\expandafter
+ #2\expandafter\expandafter\expandafter
+ {\csname glo@\glsdetoklabel{#3}@#4\endcsname #1}%
+ }%
+ \fi
+}
+\glsmfuaddmap{\glsfmtfield}{\Glsfmtfield}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSfmtfield}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{GLSfmtfield}\marg{insert}\marg{cs}\marg{label}\marg{field}
+%\end{definition}
+%As above but convert all to uppercase.
+%The expansion is in case we have an older kernel.
+% \begin{macrocode}
+\newcommand*{\GLSfmtfield}[4]{%
+ \ifx#2\@firstofone
+ \expandafter\expandafter\expandafter
+ \glsuppercase\expandafter\expandafter\expandafter
+ {%
+ \csname glo@\glsdetoklabel{#3}@#4\endcsname #1%
+ }%
+ \else
+ \expandafter\expandafter\expandafter
+ \glsuppercase\expandafter\expandafter\expandafter
+ {%
+ \expandafter\expandafter\expandafter
+ #2\expandafter\expandafter\expandafter
+ {\csname glo@\glsdetoklabel{#3}@#4\endcsname #1}%
+ }%
+ \fi
+}
+\glsmfublocker{\GLSfmtfield}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtinsert}
+%\changes{1.49}{2022-10-14}{new}
+%Formats \cs{glsinsert}.
+% \begin{macrocode}
+\newcommand*{\glsfmtinsert}{%
+ \ifdefempty\glsinsert{}%
+ {\expandafter\glsxtrgenentrytextfmt\expandafter{\glsinsert}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSfmtinsert}
+%\changes{1.49}{2022-10-14}{new}
+%As above but all caps.
+% \begin{macrocode}
+\newcommand*{\GLSfmtinsert}{%
+ \ifdefempty\glsinsert{}%
+ {%
+ \expandafter\glsuppercase\expandafter
+ {\expandafter\glsxtrgenentrytextfmt\expandafter{\glsinsert}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifapplyinnerfmtfield}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsifapplyinnerfmtfield}\marg{label}\marg{field}\marg{true}\marg{false}
+%\end{definition}
+%Does \meta{true} if \cs{glsgenentryfmt} should encapsulate the
+%given field with the inner format otherwise does \meta{false}.
+% \begin{macrocode}
+\newcommand*{\glsifapplyinnerfmtfield}[4]{%
+ \ifcsundef{@glo@\glsdetoklabel{#1}@innerfmt@fields}%
+ {#3}%
+ {\xifinlistcs{#2}{@glo@\glsdetoklabel{#1}@innerfmt@fields}{#4}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsexclapplyinnerfmtfield}
+%\changes{1.49}{2022-10-14}{new}
+%Adds the field to the exclusion list. This typically means that the
+%field value already contains the inner formatting.
+% \begin{macrocode}
+\newcommand*{\glsexclapplyinnerfmtfield}[2]{%
+ \listcseadd{@glo@\glsdetoklabel{#1}@innerfmt@fields}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsgenentryfmt}
+%\changes{1.49}{2022-10-14}{added redefinition}
+% Redefine to use \cs{glsxtrgenentrytextfmt}
+% \begin{macrocode}
+\renewcommand*{\glsgenentryfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+% \end{macrocode}
+% Plural form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Don't adjust case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \glsifapplyinnerfmtfield{\glslabel}{plural}%
+ {%
+ \expandafter\glsaccessfmtplural\expandafter{\glsinsert}%
+ {\glsxtrgenentrytextfmt}{\glslabel}%
+ }%
+ {\glsaccessplural{\glslabel}\glsfmtinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsifapplyinnerfmtfield{\glslabel}{firstpl}%
+ {%
+ \expandafter\glsaccessfmtfirstplural\expandafter{\glsinsert}%
+ {\glsxtrgenentrytextfmt}{\glslabel}%
+ }%
+ {\glsaccessfirstplural{\glslabel}\glsfmtinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make first letter upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use.
+% \begin{macrocode}
+ \glsifapplyinnerfmtfield{\glslabel}{plural}%
+ {%
+ \expandafter\Glsaccessfmtplural\expandafter
+ {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}%
+ }%
+ {\Glsaccessplural{\glslabel}\glsfmtinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsifapplyinnerfmtfield{\glslabel}{firstpl}%
+ {%
+ \expandafter\Glsaccessfmtfirstplural\expandafter
+ {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}%
+ }%
+ {\Glsaccessfirstplural{\glslabel}\glsfmtinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make all upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \glsifapplyinnerfmtfield{\glslabel}{plural}%
+ {%
+ \expandafter\GLSaccessfmtplural\expandafter
+ {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}%
+ }%
+ {\GLSaccessplural{\glslabel}\GLSfmtinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsifapplyinnerfmtfield{\glslabel}{firstpl}%
+ {%
+ \expandafter\GLSaccessfmtfirstplural\expandafter
+ {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}%
+ }%
+ {\GLSaccessfirstplural{\glslabel}\GLSfmtinsert}%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Don't adjust case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \glsifapplyinnerfmtfield{\glslabel}{text}%
+ {%
+ \expandafter\glsaccessfmttext\expandafter
+ {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}%
+ }%
+ {\glsaccesstext{\glslabel}\glsfmtinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsifapplyinnerfmtfield{\glslabel}{first}%
+ {%
+ \expandafter\glsaccessfmtfirst\expandafter
+ {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}%
+ }%
+ {\glsaccessfirst{\glslabel}\glsfmtinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make first letter upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \glsifapplyinnerfmtfield{\glslabel}{text}%
+ {%
+ \expandafter\Glsaccessfmttext\expandafter
+ {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}%
+ }%
+ {\Glsaccesstext{\glslabel}\glsfmtinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsifapplyinnerfmtfield{\glslabel}{first}%
+ {%
+ \expandafter\Glsaccessfmtfirst\expandafter
+ {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}%
+ }%
+ {\Glsaccessfirst{\glslabel}\glsfmtinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make all upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \glsifapplyinnerfmtfield{\glslabel}{text}%
+ {%
+ \expandafter\GLSaccessfmttext\expandafter
+ {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}%
+ }%
+ {\GLSaccesstext{\glslabel}\GLSfmtinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsifapplyinnerfmtfield{\glslabel}{first}%
+ {%
+ \expandafter\GLSaccessfmtfirst\expandafter
+ {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}%
+ }%
+ {\GLSaccessfirst{\glslabel}\GLSfmtinsert}%
+ }%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Custom text provided in \cs{glsdisp}, in which case the formatting
+% should already be applied.
+% \begin{macrocode}
+ \glscustomtext
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
% Commands like \cs{glsifplural} are only used by the \cs{gls}-like
-% commands in the \styfmt{glossaries} package, but it might be useful
-% for the postlink hook to know if the user has used, say,
+% commands in the \sty{glossaries} package, but it might be useful
+% for the post-link hook to know if the user has used, say,
% \cs{glsfirst} or \cs{glsplural}. This can provide better
% consistency with the formatting of the \cs{gls}-like commands,
% even though they don't use \cs{glsentryfmt}.
%
+%\begin{macro}{\glsxtrifwasglslike}
+%\changes{1.49}{2022-10-14}{new}
+%For use in the post-link hook, this indicates whether or not
+%the hook follows a \cs{gls}-like command.
+% \begin{macrocode}
+\newcommand*{\glsxtrifwasglslike}[2]{#2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifwasglslikeandfirstuse}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrifwasglslikeandfirstuse}[2]{%
+ \glsxtrifwasglslike
+ {%
+ \glsxtrifwasfirstuse{#1}{#2}%
+ }{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifwassubsequentuse}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrifwassubsequentuse}[2]{%
+ \glsxtrifwasglslike
+ {%
+ \glsxtrifwasfirstuse{#2}{#1}%
+ }{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifallcaps}
+%\changes{1.49}{2022-10-14}{new}
+%Shortcut.
+% \begin{macrocode}
+\newcommand*{\glsxtrifallcaps}[2]{\glscapscase{#2}{#1}{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrcurrentfield}
+%\changes{1.49}{2022-10-14}{new}
+%Another placeholder to find out information about the calling
+%command. This will be empty for the \cs{gls} and
+%\cs{glsxtrfull} set of commands and will be the singular field otherwise.
+% \begin{macrocode}
+\newcommand*{\glsxtrcurrentfield}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@shortfieldname}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@shortfieldname}{short}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifwassubsequentorshort}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrifwassubsequentorshort}[2]{%
+ \glsxtrifwasglslike
+ {%
+ \glsxtrifwasfirstuse{#2}{#1}%
+ }%
+ {\ifdefequal\glsxtrcurrentfield\glsxtr@shortfieldname{#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@gls@field@link}
% Redefine \cs{@gls@field@link} so that commands like \cs{glsfirst}
% can setup \cs{glsxtrifwasfirstuse} etc to allow the postlink hook
@@ -5514,6 +6829,10 @@ Dickimaw Books\\
%Save local setting.
% \begin{macrocode}
\@gls@save@glslocal
+% \end{macrocode}
+%Initialise preunset, prereset and postunset
+% \begin{macrocode}
+ \glsinitreunsets
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
\def\glscustomtext{#4}%
\@glsxtr@field@linkdefs
@@ -5536,6 +6855,7 @@ Dickimaw Books\\
% \begin{macrocode}
\let\@glsxtr@org@gls@\@gls@
\def\@gls@#1#2{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@record{#1}{#2}{glslink}%
\@glsxtr@org@gls@{#1}{#2}%
}%
@@ -5548,6 +6868,7 @@ Dickimaw Books\\
% \begin{macrocode}
\let\@glsxtr@org@glspl@\@glspl@
\def\@glspl@#1#2{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@record{#1}{#2}{glslink}%
\@glsxtr@org@glspl@{#1}{#2}%
}%
@@ -5560,6 +6881,7 @@ Dickimaw Books\\
% \begin{macrocode}
\let\@glsxtr@org@Gls@\@Gls@
\def\@Gls@#1#2{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@record{#1}{#2}{glslink}%
\@glsxtr@org@Gls@{#1}{#2}%
}%
@@ -5572,6 +6894,7 @@ Dickimaw Books\\
% \begin{macrocode}
\let\@glsxtr@org@Glspl@\@Glspl@
\def\@Glspl@#1#2{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@record{#1}{#2}{glslink}%
\@glsxtr@org@Glspl@{#1}{#2}%
}%
@@ -5584,6 +6907,7 @@ Dickimaw Books\\
% \begin{macrocode}
\let\@glsxtr@org@GLS@\@GLS@
\def\@GLS@#1#2{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@record{#1}{#2}{glslink}%
\@glsxtr@org@GLS@{#1}{#2}%
}%
@@ -5597,6 +6921,7 @@ Dickimaw Books\\
% \begin{macrocode}
\let\@glsxtr@org@GLSpl@\@GLSpl@
\def\@GLSpl@#1#2{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@record{#1}{#2}{glslink}%
\@glsxtr@org@GLSpl@{#1}{#2}%
}%
@@ -5611,12 +6936,13 @@ Dickimaw Books\\
%argument.
% \begin{macrocode}
\renewcommand*{\@glsdisp}[3][]{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@record{#1}{#2}{glslink}%
\glsdoifexists{#2}{%
\let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
\let\glsifplural\@secondoftwo
\let\glscapscase\@firstofthree
- \def\glscustomtext{#3}%
+ \def\glscustomtext{\glsxtrgenentrytextfmt{#3}}%
\def\glsinsert{}%
\def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
\@gls@link[#1]{#2}{\@glo@text}%
@@ -5627,11 +6953,12 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\@gls@@link@}
+%\begin{macro}{\@gls@@link}
%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}}
%Redefine to include \cs{@glsxtr@record}
% \begin{macrocode}
\renewcommand*{\@gls@@link}[3][]{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@record{#1}{#2}{glslink}%
\glsdoifexistsordo{#2}%
{%
@@ -5641,8 +6968,9 @@ Dickimaw Books\\
% Post-link hook commands need initialising.
% \begin{macrocode}
\def\glscustomtext{#3}%
+ \def\glsinsert{}%
\@glsxtr@field@linkdefs
- \@gls@link[#1]{#2}{#3}%
+ \@gls@link[#1]{#2}{\glsxtrgenentrytextfmt{#3}}%
}%
{%
\glstextformat{#3}%
@@ -5678,7 +7006,128 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-% Define a \gloskey[glslink]{wrgloss} key to determine whether to
+%\begin{macro}{\setupglslink}
+%\changes{1.49}{2022-10-14}{new}
+%Shortcut command to set glslink options.
+% \begin{macrocode}
+\newcommand*{\setupglslink}[1]{\setkeys{glslink}{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\setupglsadd}
+%\changes{1.49}{2022-10-14}{new}
+%Shortcut command to set glsadd options.
+% \begin{macrocode}
+\newcommand*{\setupglsadd}[1]{\setkeys{glsadd}{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@do@glsprereset}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@do@glsprereset}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macrocode}
+\define@choicekey{glslink}{prereset}%
+[\@glsxtr@preresetval\@glsxtr@preresetnr]%
+{none,local,global}[local]%
+{%
+ \ifcase\@glsxtr@preresetnr
+ \let\@gls@do@glsprereset\@gobble
+ \or
+ \def\@gls@do@glsprereset{%
+ \let\@gls@link@postkeys@checkfirsthyper\do@gls@link@checkfirsthyper
+ \let\glsxtrifwasfirstuse\@firstoftwo\glslocalreset}%
+ \or
+ \def\@gls@do@glsprereset{%
+ \let\@gls@link@postkeys@checkfirsthyper\do@gls@link@checkfirsthyper
+ \let\glsxtrifwasfirstuse\@firstoftwo\glsreset}%
+ \fi
+}
+% \end{macrocode}
+%
+%\begin{macro}{\@gls@do@glspreunset}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@do@glspreunset}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@glslink@hyper@update@hook}
+%\changes{1.49}{2022-10-14}{new}
+%This hook was only introduced to \sty{glossaries} v4.50, so if
+%isn't defined, need to patch the hyper key.
+% \begin{macrocode}
+\ifdef\@gls@glslink@hyper@update@hook
+{%
+ \renewcommand*{\@gls@glslink@hyper@update@hook}{%
+ \let\@gls@if@glslink@hyper@updated\@firstoftwo
+ }
+}
+{
+ \newcommand*{\@gls@glslink@hyper@update@hook}{%
+ \let\@gls@if@glslink@hyper@updated\@firstoftwo
+ }
+ \renewcommand*{\KV@glslink@hyper}[1]{%
+ \XKV@plfalse\XKV@sttrue
+ \XKV@checkchoice[\XKV@resa ]{#1}{true,false}%
+ {\csname KV@glslink@hyper\XKV@resa\endcsname\@gls@glslink@hyper@update@hook}%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macrocode}
+\define@choicekey{glslink}{preunset}%
+[\@glsxtr@preunsetval\@glsxtr@preunsetnr]%
+{none,local,global}[local]%
+{%
+ \ifcase\@glsxtr@preunsetnr
+ \let\@gls@do@glspreunset\@gobble
+ \or
+ \def\@gls@do@glspreunset{%
+ \let\@gls@link@postkeys@checkfirsthyper\do@gls@link@checkfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo\glslocalunset}%
+ \or
+ \def\@gls@do@glspreunset{%
+ \let\@gls@link@postkeys@checkfirsthyper\do@gls@link@checkfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo\glsunset}%
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@choicekey{glslink}{postunset}%
+[\@glsxtr@postunsetval\@glsxtr@postunsetnr]%
+{none,local,global}[global]%
+{%
+ \ifcase\@glsxtr@postunsetnr
+ \let\@gls@restore@glslocal\@gls@ignore@restore@glslocal
+ \or
+ \let\@gls@restore@glslocal\@gls@default@restore@glslocal
+ \KV@glslink@localtrue
+ \or
+ \let\@gls@restore@glslocal\@gls@default@restore@glslocal
+ \KV@glslink@localfalse
+ \fi
+}
+% \end{macrocode}
+%
+%\begin{macro}{\glsinitreunsets}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsinitreunsets}{%
+ \let\@gls@do@glspreunset\@gobble
+ \let\@gls@do@glsprereset\@gobble
+ \let\@gls@restore@glslocal\@gls@default@restore@glslocal
+ \@glsxtrbuffer@check@repeats
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Define \gloskey[glslink]{wrgloss} key to determine whether to
% write the glossary information before or after the link text.
% \begin{macrocode}
\define@choicekey{glslink}{wrgloss}%
@@ -5713,6 +7162,29 @@ Dickimaw Books\\
%
%\end{macro}
%
+%\begin{macro}{\@glsxtr@current@textformat@csname}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@current@textformat@csname}{glstextformat}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@current@innertextformat@csname}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@current@innertextformat@csname}{glsxtrdefaultentrytextfmt}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrassignlinktextfmt}
+%\changes{1.49}{2022-10-14}{new}
+%Used to assign \cs{glstextformat} and \cs{glsxtrgenentrytextfmt}
+%in the post-link hook for \qt{postfootnote} abbreviation styles.
+% \begin{macrocode}
+\newcommand*{\glsxtrassignlinktextfmt}{}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@glsxtr@local@textformat}
%\changes{1.30}{2018-04-25}{new}
%Provide a key to locally change the text format.
@@ -5721,6 +7193,24 @@ Dickimaw Books\\
\ifcsdef{#1}
{%
\letcs{\@glsxtr@local@textformat}{#1}%
+ \def\@glsxtr@current@textformat@csname{#1}%
+ }%
+ {%
+ \PackageError{glossaries-extra}{Unknown control sequence name `#1'}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@local@innertextformat}
+%\changes{1.49}{2022-10-14}{new}
+%Provide a key to locally change the inner text format.
+% \begin{macrocode}
+\define@key{glslink}{innertextformat}{%
+ \ifcsdef{#1}
+ {%
+ \letcs{\@glsxtr@local@innertextformat}{#1}%
+ \def\@glsxtr@current@innertextformat@csname{#1}%
}%
{%
\PackageError{glossaries-extra}{Unknown control sequence name `#1'}{}%
@@ -5832,13 +7322,31 @@ Dickimaw Books\\
%
%\begin{macro}{\glslinkwrcontent}
%\changes{1.48}{2021-11-22}{new}
-%This may resolve \href{https://www.dickimaw-books.com/bugtracker.php?key=189}{issue \#189}
-%but it may have unexpected consequences. This is currently provided
-%as a trial. If it causes a problem then redefine without the
-%grouping. If no issues are reported it will be added to the base
-%package.
+%\changes{1.49}{2022-10-14}{removed grouping}
+%This was defined to add grouping to resolve \href{https://www.dickimaw-books.com/bugtracker.php?key=189}{issue \#189}
+%but had unexpected consequences
+%(\href{https://www.dickimaw-books.com/bugtracker.php?key=194}{issue
+%\#194}) so the grouping has been removed and transferred to
+%\cs{glsencapwrcontent}.
% \begin{macrocode}
-\providecommand*{\glslinkwrcontent}[1]{{#1}}
+\providecommand*{\glslinkwrcontent}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glslink@prefix@label}
+%\changes{1.49}{2022-10-14}{new}
+% Hyperlink using current prefix and label.
+% \begin{macrocode}
+\newcommand*{\@glslink@prefix@label}[1]{%
+ \@glslink{\glolinkprefix\glslabel}{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@noglslink@prefix@label}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@noglslink@prefix@label}[1]{%
+ \glsdonohyperlink{\glolinkprefix\glslabel}{#1}}
% \end{macrocode}
%\end{macro}
%
@@ -5867,6 +7375,10 @@ Dickimaw Books\\
% \begin{macrocode}
\@gls@save@glslocal
% \end{macrocode}
+%Initialise preunset, prereset and postunset
+% \begin{macrocode}
+ \glsinitreunsets
+% \end{macrocode}
%Save current value of \cs{glolinkprefix}:
% \begin{macrocode}
\let\@glsxtr@org@glolinkprefix\glolinkprefix
@@ -5874,6 +7386,12 @@ Dickimaw Books\\
%Initialise \cs{@glsxtr@local@textformat}
% \begin{macrocode}
\let\@glsxtr@local@textformat\relax
+ \def\@glsxtr@current@textformat@csname{glstextformat}%
+% \end{macrocode}
+%Initialise inner text format (1.49):
+% \begin{macrocode}
+ \let\@glsxtr@local@innertextformat\glsxtrdefaultentrytextfmt
+ \def\@glsxtr@current@innertextformat@csname{glsxtrdefaultentrytextfmt}%
% \end{macrocode}
% Initialise thevalue and theHvalue (v1.19).
% \begin{macrocode}
@@ -5909,6 +7427,11 @@ Dickimaw Books\\
\do@glsdisablehyperinlist
\do@gls@link@checkfirsthyper
% \end{macrocode}
+% Provide way of finding if hyper key has been explicitly set.
+% \begin{macrocode}
+ \let\@gls@if@glslink@hyper@updated\@secondoftwo
+ \let\@gls@link@postkeys@checkfirsthyper\relax
+% \end{macrocode}
%User hook before options are set (new to v1.26):
% \begin{macrocode}
\glslinkpresetkeys
@@ -5925,6 +7448,20 @@ Dickimaw Books\\
% \begin{macrocode}
\glslinkpostsetkeys
% \end{macrocode}
+%Reset/unset if required:
+% \begin{macrocode}
+ \@gls@do@glsprereset{#2}%
+ \@gls@do@glspreunset{#2}%
+% \end{macrocode}
+% If the hyper setting hasn't changed, and reset/unset option has
+% been used, need to perform another check.
+% \begin{macrocode}
+ \@gls@if@glslink@hyper@updated{}{\@gls@link@postkeys@checkfirsthyper}%
+% \end{macrocode}
+%Set inner text format (1.49):
+% \begin{macrocode}
+ \let\glsxtrgenentrytextfmt\@glsxtr@local@innertextformat
+% \end{macrocode}
% Check \gloskey[glslink]{thevalue} and \gloskey[glslink]{theHvalue}
% before saving (v1.19).
% \begin{macrocode}
@@ -5951,6 +7488,7 @@ Dickimaw Books\\
\ifcsdef{\@glsxtr@attrval}%
{%
\letcs{\@glsxtr@textformat}{\@glsxtr@attrval}%
+ \let\@glsxtr@current@textformat@csname\@glsxtr@attrval
}%
{%
\GlossariesExtraWarning{Unknown control sequence name
@@ -5966,6 +7504,15 @@ Dickimaw Books\\
\let\@glsxtr@textformat\@glsxtr@local@textformat
\fi
% \end{macrocode}
+%Setup formatting assignments for use in post-link hook.
+% \begin{macrocode}
+ \edef\glsxtrassignlinktextfmt{%
+ \noexpand\def\noexpand\glslabel{\expandonce\glslabel}%
+ \noexpand\letcs\noexpand\glstextformat{\@glsxtr@current@textformat@csname}%
+ \noexpand\letcs\noexpand\glsxtrgenentrytextfmt
+ {\@glsxtr@current@innertextformat@csname}%
+ }%
+% \end{macrocode}
% Encapsulate link text and indexing.
% \begin{macrocode}
\glslinkwrcontent
@@ -5974,22 +7521,22 @@ Dickimaw Books\\
% Do write if it should occur before the link text:
% \begin{macrocode}
\ifglsxtrinitwrglossbefore
- \@do@wrglossary{#2}%
+ \glsxtr@wrglossary@encap{#2}{\@do@wrglossary{#2}}%
\fi
% \end{macrocode}
% Do the link text:
% \begin{macrocode}
\ifKV@glslink@hyper
\ifglsxtr@hyperoutside
- \@glslink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}%
+ \@glslink@prefix@label{\@glsxtr@textformat{#3}}%
\else
- \@glsxtr@textformat{\@glslink{\glolinkprefix\glslabel}{#3}}%
+ \@glsxtr@textformat{\@glslink@prefix@label{#3}}%
\fi
\else
\ifglsxtr@hyperoutside
- \glsdonohyperlink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}%
+ \@noglslink@prefix@label{\@glsxtr@textformat{#3}}%
\else
- \@glsxtr@textformat{\glsdonohyperlink{\glolinkprefix\glslabel}{#3}}%
+ \@glsxtr@textformat{\@noglslink@prefix@label{#3}}%
\fi
\fi
% \end{macrocode}
@@ -5997,7 +7544,7 @@ Dickimaw Books\\
% \begin{macrocode}
\ifglsxtrinitwrglossbefore
\else
- \@do@wrglossary{#2}%
+ \glsxtr@wrglossary@encap{#2}{\@do@wrglossary{#2}}%
\fi
}%
% \end{macrocode}
@@ -6091,7 +7638,7 @@ Dickimaw Books\\
%\changes{1.37}{2018-11-30}{ensure that \cs{glsadd} performs indexing}
% \begin{macrocode}
\KV@glslink@noindexfalse
- \@@do@wrglossary{#2}%
+ \glsxtr@wrglossary@encap{#2}{\@@do@wrglossary{#2}}%
}%
\endgroup
}%
@@ -6111,14 +7658,17 @@ Dickimaw Books\\
%\end{macro}
%
%\begin{macro}{\@glsxtr@field@linkdefs}
-% Default settings for \cs{@gls@field@link}
+% Default settings for \cs{@gls@field@link}.
%\changes{0.3}{2015-12-02}{new}
+%\changes{1.49}{2022-10-14}{removed \cs{glsinsert}}
+%Note that from v1.49, \cs{glsinsert} is set with
+%\cs{glsxtrsaveinsert}.
% \begin{macrocode}
\newcommand*{\@glsxtr@field@linkdefs}{%
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@firstofthree
- \let\glsinsert\@empty
}
% \end{macrocode}
%\end{macro}
@@ -6153,14 +7703,51 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrsaveinsert}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsxtrsaveinsert}\marg{entry-label}\marg{insert}
+%\end{definition}
+%The insert argument isn't saved in \cs{glsinsert} for the
+%\cs{glslike} commands, but provide a way to save it if it is
+%required for the post-link hook. The default is to set
+%\cs{glsinsert} to empty. This means that the insert won't appear in
+%the post-link hook with commands like \cs{glsxtrfull} for the
+%hyphen abbreviation styles. The entry label is provided in case the
+%insert should only be saved for certain entries, such as those with
+%a particular category.
+% \begin{macrocode}
+\newcommand*{\glsxtrsaveinsert}[2]{\def\glsinsert{}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfullsaveinsert}
+%\changes{1.49}{2022-10-14}{new}
+%As above but specifically for commands like \cs{glsxtrfull}
+% \begin{macrocode}
+\newcommand*{\glsxtrfullsaveinsert}{\glsxtrsaveinsert}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@glstext@}
%\changes{0.5.2}{2015-12-08}{added accessibility support}
%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@glstext@#1#2[#3]{%
+ \def\glsxtrcurrentfield{text}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesstext{#2}#3}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link{#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{text}%
+ {%
+ \@gls@field@font{\glsaccessfmttext{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccesstext{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6173,9 +7760,24 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@GLStext@#1#2[#3]{%
+ \def\glsxtrcurrentfield{text}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link[\let\glscapscase\@thirdofthree]{#1}{#2}%
- {\@gls@field@font{\GLSaccesstext{#2}\mfirstucMakeUppercase{#3}}}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{text}%
+ {%
+ \@gls@field@font{\GLSaccessfmttext{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \ifx\glscapscase\@thirdofthree
+ \@gls@field@font{\GLSaccesstext{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ \else
+ \@gls@field@font{\glsaccesstext{#2}\glsxtrgenentrytextfmt{#3}}%
+ \fi
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6188,9 +7790,19 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@Glstext@#1#2[#3]{%
+ \def\glsxtrcurrentfield{text}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link[\let\glscapscase\@secondofthree]{#1}{#2}%
- {\@gls@field@font{\Glsaccesstext{#2}#3}}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{text}%
+ {%
+ \@gls@field@font{\Glsaccessfmttext{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccesstext{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6215,16 +7827,27 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@glsfirst@#1#2[#3]{%
+ \def\glsxtrcurrentfield{first}%
\glsxtrassignfieldfont{#2}%
% \end{macrocode}
% Ensure that \cs{glsfirst} honours the \catattr{nohyperfirst} attribute.
%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute}
% \begin{macrocode}
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
[\let\glsxtrifwasfirstuse\@firstoftwo
\glsxtrchecknohyperfirst{#2}%
+ \glsxtr@check@complexstyle{#2}{#3}%
]{#1}{#2}%
- {\@gls@field@font{\glsaccessfirst{#2}#3}}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{first}%
+ {%
+ \@gls@field@font{\glsaccessfmtfirst{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessfirst{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6237,17 +7860,29 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@Glsfirst@#1#2[#3]{%
+ \def\glsxtrcurrentfield{first}%
\glsxtrassignfieldfont{#2}%
% \end{macrocode}
% Ensure that \cs{Glsfirst} honours the \catattr{nohyperfirst} attribute.
%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute}
% \begin{macrocode}
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
[\let\glsxtrifwasfirstuse\@firstoftwo
\let\glscapscase\@secondofthree
\glsxtrchecknohyperfirst{#2}%
+ \glsxtr@check@complexstyle{#2}{#3}%
]%
- {#1}{#2}{\@gls@field@font{\Glsaccessfirst{#2}#3}}%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{first}%
+ {%
+ \@gls@field@font{\Glsaccessfmtfirst{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccessfirst{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6260,17 +7895,40 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@GLSfirst@#1#2[#3]{%
+ \def\glsxtrcurrentfield{first}%
\glsxtrassignfieldfont{#2}%
% \end{macrocode}
% Ensure that \cs{GLSfirst} honours the \catattr{nohyperfirst} attribute.
%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute}
% \begin{macrocode}
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
[\let\glsxtrifwasfirstuse\@firstoftwo
\let\glscapscase\@thirdofthree
\glsxtrchecknohyperfirst{#2}%
+ \glsxtr@check@complexstyle{#2}{#3}%
]%
- {#1}{#2}{\@gls@field@font{\GLSaccessfirst{#2}\mfirstucMakeUppercase{#3}}}%
+ {#1}{#2}%
+ {%
+ \ifx\glscapscase\@thirdofthree
+ \glsifapplyinnerfmtfield{#2}{first}%
+ {%
+ \@gls@field@font{\GLSaccessfmtfirst{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\GLSaccessfirst{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ }%
+ \else
+ \glsifapplyinnerfmtfield{#2}{first}%
+ {%
+ \@gls@field@font{\glsaccessfmtfirst{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessfirst{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ \fi
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6285,9 +7943,22 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@glsplural@#1#2[#3]{%
+ \def\glsxtrcurrentfield{text}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link[\let\glsifplural\@firstoftwo]{#1}{#2}%
- {\@gls@field@font{\glsaccessplural{#2}#3}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link
+ [\let\glsifplural\@firstoftwo
+ \glsxtr@check@complexstyle{#2}{#3}%
+ ]{#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{plural}%
+ {%
+ \@gls@field@font{\glsaccessfmtplural{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessplural{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6302,12 +7973,24 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@Glsplural@#1#2[#3]{%
+ \def\glsxtrcurrentfield{text}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
[\let\glsifplural\@firstoftwo
\let\glscapscase\@secondofthree
+ \glsxtr@check@complexstyle{#2}{#3}%
]%
- {#1}{#2}{\@gls@field@font{\Glsaccessplural{#2}#3}}%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{plural}%
+ {%
+ \@gls@field@font{\Glsaccessfmtplural{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccessplural{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6322,12 +8005,35 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@GLSplural@#1#2[#3]{%
+ \def\glsxtrcurrentfield{text}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
[\let\glsifplural\@firstoftwo
\let\glscapscase\@thirdofthree
+ \glsxtr@check@complexstyle{#2}{#3}%
]%
- {#1}{#2}{\@gls@field@font{\GLSaccessplural{#2}\mfirstucMakeUppercase{#3}}}%
+ {#1}{#2}%
+ {%
+ \ifx\glscapscase\@thirdofthree
+ \glsifapplyinnerfmtfield{#2}{plural}%
+ {%
+ \@gls@field@font{\GLSaccessfmtplural{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\GLSaccessplural{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ }%
+ \else
+ \glsifapplyinnerfmtfield{#2}{plural}%
+ {%
+ \@gls@field@font{\glsaccessfmtplural{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessplural{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ \fi
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6340,17 +8046,29 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@glsfirstplural@#1#2[#3]{%
+ \def\glsxtrcurrentfield{first}%
\glsxtrassignfieldfont{#2}%
% \end{macrocode}
% Ensure that \cs{glsfirstplural} honours the \catattr{nohyperfirst} attribute.
%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute}
% \begin{macrocode}
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
[\let\glsxtrifwasfirstuse\@firstoftwo
\let\glsifplural\@firstoftwo
\glsxtrchecknohyperfirst{#2}%
+ \glsxtr@check@complexstyle{#2}{#3}%
]%
- {#1}{#2}{\@gls@field@font{\glsaccessfirstplural{#2}#3}}%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{firstpl}%
+ {%
+ \@gls@field@font{\glsaccessfmtfirstplural{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessfirstplural{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6364,18 +8082,30 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@Glsfirstplural@#1#2[#3]{%
+ \def\glsxtrcurrentfield{first}%
\glsxtrassignfieldfont{#2}%
% \end{macrocode}
% Ensure that \cs{glsfirstplural} honours the \catattr{nohyperfirst} attribute.
%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute}
% \begin{macrocode}
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
[\let\glsxtrifwasfirstuse\@firstoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@secondofthree
\glsxtrchecknohyperfirst{#2}%
+ \glsxtr@check@complexstyle{#2}{#3}%
]%
- {#1}{#2}{\@gls@field@font{\Glsaccessfirstplural{#2}#3}}%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{firstpl}%
+ {%
+ \@gls@field@font{\Glsaccessfmtfirstplural{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccessfirstplural{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6389,19 +8119,41 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@GLSfirstplural@#1#2[#3]{%
+ \def\glsxtrcurrentfield{first}%
\glsxtrassignfieldfont{#2}%
% \end{macrocode}
% Ensure that \cs{glsfirstplural} honours the \catattr{nohyperfirst} attribute.
%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute}
% \begin{macrocode}
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
[\let\glsxtrifwasfirstuse\@firstoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@thirdofthree
\glsxtrchecknohyperfirst{#2}%
+ \glsxtr@check@complexstyle{#2}{#3}%
]%
- {#1}{#2}%
- {\@gls@field@font{\GLSaccessfirstplural{#2}\mfirstucMakeUppercase{#3}}}%
+ {#1}{#2}%
+ {%
+ \ifx\glscapscase\@thirdofthree
+ \glsifapplyinnerfmtfield{#2}{firstpl}%
+ {%
+ \@gls@field@font{\GLSaccessfmtfirstplural{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\GLSaccessfirstplural{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ }%
+ \else
+ \glsifapplyinnerfmtfield{#2}{firstpl}%
+ {%
+ \@gls@field@font{\glsaccessfmtfirstplural{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessfirstplural{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ \fi
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6413,8 +8165,19 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@glsname@#1#2[#3]{%
+ \def\glsxtrcurrentfield{name}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessname{#2}#3}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link{#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{name}%
+ {%
+ \@gls@field@font{\glsaccessfmtname{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessname{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6427,10 +8190,20 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@Glsname@#1#2[#3]{%
+ \def\glsxtrcurrentfield{name}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo]{#1}{#2}%
- {\@gls@field@font{\Glsaccessname{#2}#3}}%
+ [\let\glscapscase\@secondofthree]{#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{name}%
+ {%
+ \@gls@field@font{\Glsaccessfmtname{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccessname{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6443,10 +8216,21 @@ Dickimaw Books\\
% The abbreviation format may also need setting.
% \begin{macrocode}
\def\@GLSname@#1#2[#3]{%
+ \def\glsxtrcurrentfield{name}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link[\let\glscapscase\@thirdoftwo]%
- {#1}{#2}%
- {\@gls@field@font{\GLSaccessname{#2}\mfirstucMakeUppercase{#3}}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{name}%
+ {%
+ \@gls@field@font{\GLSaccessfmtname{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\GLSaccessname{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6456,8 +8240,19 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
% \begin{macrocode}
\def\@glsdesc@#1#2[#3]{%
+ \def\glsxtrcurrentfield{description}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessdesc{#2}#3}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link{#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{desc}%
+ {%
+ \@gls@field@font{\glsaccessfmtdesc{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessdesc{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6469,10 +8264,20 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
% \begin{macrocode}
\def\@Glsdesc@#1#2[#3]{%
+ \def\glsxtrcurrentfield{description}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo]{#1}{#2}%
- {\@gls@field@font{\Glsaccessdesc{#2}#3}}%
+ [\let\glscapscase\@secondofthree]{#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{desc}%
+ {%
+ \@gls@field@font{\Glsaccessfmtdesc{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccessdesc{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6484,9 +8289,21 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
% \begin{macrocode}
\def\@GLSdesc@#1#2[#3]{%
+ \def\glsxtrcurrentfield{description}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link[\let\glscapscase\@thirdoftwo]%
- {#1}{#2}{\@gls@field@font{\GLSaccessdesc{#2}\mfirstucMakeUppercase{#3}}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{desc}%
+ {%
+ \@gls@field@font{\GLSaccessfmtdesc{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\GLSaccessdesc{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6498,11 +8315,22 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
% \begin{macrocode}
\def\@glsdescplural@#1#2[#3]{%
+ \def\glsxtrcurrentfield{description}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo
+ [\let\glscapscase\@secondofthree
\let\glsifplural\@firstoftwo
- ]{#1}{#2}{\@gls@field@font{\glsaccessdescplural{#2}#3}}%
+ ]{#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{descplural}%
+ {%
+ \@gls@field@font{\glsaccessfmtdescpl{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessdescplural{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6514,11 +8342,22 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
% \begin{macrocode}
\def\@Glsdescplural@#1#2[#3]{%
+ \def\glsxtrcurrentfield{description}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo
+ [\let\glscapscase\@secondofthree
\let\glsifplural\@firstoftwo
- ]{#1}{#2}{\@gls@field@font{\Glsaccessdescplural{#2}#3}}%
+ ]{#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{descplural}%
+ {%
+ \@gls@field@font{\Glsaccessfmtdescpl{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccessdescplural{#2}#3}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6529,14 +8368,25 @@ Dickimaw Books\\
%\changes{0.5.2}{2015-12-08}{added accessibility support}
%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
% \begin{macrocode}
-\def\@GLSdesc@#1#2[#3]{%
+\def\@GLSdescplural@#1#2[#3]{%
+ \def\glsxtrcurrentfield{description}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@thirdoftwo
+ [\let\glscapscase\@thirdofthree
\let\glsifplural\@firstoftwo
]%
- {#1}{#2}%
- {\@gls@field@font{\GLSaccessdescplural{#2}\mfirstucMakeUppercase{#3}}}%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{descplural}%
+ {%
+ \@gls@field@font{\GLSaccessfmtdescplural{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\GLSaccessdescplural{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6546,8 +8396,19 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@glssymbol@#1#2[#3]{%
+ \def\glsxtrcurrentfield{symbol}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesssymbol{#2}#3}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link{#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{symbol}%
+ {%
+ \@gls@field@font{\glsaccessfmtsymbol{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccesssymbol{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6559,10 +8420,21 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@Glssymbol@#1#2[#3]{%
+ \def\glsxtrcurrentfield{symbol}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo]%
- {#1}{#2}{\@gls@field@font{\Glsaccesssymbol{#2}#3}}%
+ [\let\glscapscase\@secondofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{symbol}%
+ {%
+ \@gls@field@font{\Glsaccessfmtsymbol{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccesssymbol{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6574,9 +8446,21 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@GLSsymbol@#1#2[#3]{%
+ \def\glsxtrcurrentfield{symbol}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link[\let\glscapscase\@thirdoftwo]%
- {#1}{#2}{\@gls@field@font{\GLSaccesssymbol{#2}\mfirstucMakeUppercase{#3}}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{symbol}%
+ {%
+ \@gls@field@font{\GLSaccessfmtsymbol{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\GLSaccesssymbol{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6588,11 +8472,22 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@glssymbolplural@#1#2[#3]{%
+ \def\glsxtrcurrentfield{symbol}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo
+ [\let\glscapscase\@secondofthree
\let\glsifplural\@firstoftwo
- ]{#1}{#2}{\@gls@field@font{\glsaccesssymbolplural{#2}#3}}%
+ ]{#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{symbolplural}%
+ {%
+ \@gls@field@font{\glsaccessfmtsymbolplural{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccesssymbolplural{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6604,11 +8499,22 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@Glssymbolplural@#1#2[#3]{%
+ \def\glsxtrcurrentfield{symbol}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo
+ [\let\glscapscase\@secondofthree
\let\glsifplural\@firstoftwo
- ]{#1}{#2}{\@gls@field@font{\Glsaccesssymbolplural{#2}#3}}%
+ ]{#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{symbolplural}%
+ {%
+ \@gls@field@font{\Glsaccessfmtsymbolplural{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccesssymbolplural{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6619,14 +8525,48 @@ Dickimaw Books\\
%\changes{0.5.2}{2015-12-08}{added accessibility support}
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
-\def\@GLSsymbol@#1#2[#3]{%
+\def\@GLSsymbolplural@#1#2[#3]{%
+ \def\glsxtrcurrentfield{symbol}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@thirdoftwo
+ [\let\glscapscase\@thirdofthree
\let\glsifplural\@firstoftwo
]%
- {#1}{#2}%
- {\@gls@field@font{\GLSaccesssymbolplural{#2}\mfirstucMakeUppercase{#3}}}%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{symbolplural}%
+ {%
+ \@gls@field@font{\GLSaccessfmtsymbolplural{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\GLSaccesssymbolplural{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsuseri@}
+% User 1 field.
+%\changes{1.49}{2022-10-14}{added redefinition}
+% \begin{macrocode}
+\def\@glsuseri@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user1}%
+ \glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{useri}%
+ {%
+ \@gls@field@font{\glsaccessfmtuseri{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessuseri{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6637,10 +8577,20 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@Glsuseri@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user1}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo]{#1}{#2}%
- {\@gls@field@font{\Glsentryuseri{#2}#3}}%
+ [\let\glscapscase\@secondofthree]{#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{useri}%
+ {%
+ \@gls@field@font{\Glsaccessfmtuseri{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccessuseri{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6651,9 +8601,48 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@GLSuseri@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user1}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link[\let\glscapscase\@thirdoftwo]%
- {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseri{#2}#3}}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{useri}%
+ {%
+ \@gls@field@font{\GLSaccessfmtuseri{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \ifx\glscapscase\@thirdofthree
+ \@gls@field@font{\GLSaccessuseri{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ \else
+ \@gls@field@font{\glsaccessuseri{#2}\glsxtrgenentrytextfmt{#3}}%
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsuserii@}
+% User 2 field.
+%\changes{1.49}{2022-10-14}{added redefinition}
+% \begin{macrocode}
+\def\@glsuserii@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user2}%
+ \glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{userii}%
+ {%
+ \@gls@field@font{\glsaccessfmtuserii{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessuserii{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6664,10 +8653,21 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@Glsuserii@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user2}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo]%
- {#1}{#2}{\@gls@field@font{\Glsentryuserii{#2}#3}}%
+ [\let\glscapscase\@secondofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{userii}%
+ {%
+ \@gls@field@font{\Glsaccessfmtuserii{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccessuserii{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6678,9 +8678,48 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@GLSuserii@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user2}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link[\let\glscapscase\@thirdoftwo]%
- {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserii{#2}#3}}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{userii}%
+ {%
+ \@gls@field@font{\GLSaccessfmtuserii{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \ifx\glscapscase\@thirdofthree
+ \@gls@field@font{\GLSaccessuserii{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ \else
+ \@gls@field@font{\glsaccessuserii{#2}\glsxtrgenentrytextfmt{#3}}%
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsuseriii@}
+% User 3 field.
+%\changes{1.49}{2022-10-14}{added redefinition}
+% \begin{macrocode}
+\def\@glsuseriii@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user3}%
+ \glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{useriii}%
+ {%
+ \@gls@field@font{\glsaccessfmtuseriii{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessuseriii{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6691,10 +8730,21 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@Glsuseriii@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user3}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo]%
- {#1}{#2}{\@gls@field@font{\Glsentryuseriii{#2}#3}}%
+ [\let\glscapscase\@secondofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{useriii}%
+ {%
+ \@gls@field@font{\Glsaccessfmtuseriii{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccessuseriii{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6705,9 +8755,48 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@GLSuseriii@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user3}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link[\let\glscapscase\@thirdoftwo]%
- {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriii{#2}#3}}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{useriii}%
+ {%
+ \@gls@field@font{\GLSaccessfmtuseriii{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \ifx\glscapscase\@thirdofthree
+ \@gls@field@font{\GLSaccessuseriii{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ \else
+ \@gls@field@font{\glsaccessuseriii{#2}\glsxtrgenentrytextfmt{#3}}%
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsuseriv@}
+% User 4 field.
+%\changes{1.49}{2022-10-14}{added redefinition}
+% \begin{macrocode}
+\def\@glsuseriv@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user4}%
+ \glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{useriv}%
+ {%
+ \@gls@field@font{\glsaccessfmtuseriv{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessuseriv{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6718,10 +8807,21 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@Glsuseriv@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user4}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo]%
- {#1}{#2}{\@gls@field@font{\Glsentryuseriv{#2}#3}}%
+ [\let\glscapscase\@secondofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{useriv}%
+ {%
+ \@gls@field@font{\Glsaccessfmtuseriv{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccessuseriv{#2}#3}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6732,10 +8832,48 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@GLSuseriv@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user4}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link[\let\glscapscase\@thirdoftwo]%
- {#1}{#2}%
- {\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriv{#2}#3}}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{useriv}%
+ {%
+ \@gls@field@font{\GLSaccessfmtuseriv{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \ifx\glscapscase\@thirdofthree
+ \@gls@field@font{\GLSaccessuseriv{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ \else
+ \@gls@field@font{\glsaccessuseriv{#2}\glsxtrgenentrytextfmt{#3}}%
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsuserv@}
+% User 5 field.
+%\changes{1.49}{2022-10-14}{added redefinition}
+% \begin{macrocode}
+\def\@glsuserv@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user5}%
+ \glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{userv}%
+ {%
+ \@gls@field@font{\glsaccessfmtuserv{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessuserv{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6746,10 +8884,21 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@Glsuserv@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user5}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo]%
- {#1}{#2}{\@gls@field@font{\Glsentryuserv{#2}#3}}%
+ [\let\glscapscase\@secondofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{userv}%
+ {%
+ \@gls@field@font{\Glsfmtfield{#3}{\glsxtrgenentrytextfmt}{#2}{userv}}%
+ }%
+ {%
+ \@gls@field@font{\Glsentryuserv{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6760,9 +8909,48 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@GLSuserv@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user5}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link[\let\glscapscase\@thirdoftwo]%
- {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserv{#2}#3}}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{userv}%
+ {%
+ \@gls@field@font{\GLSaccessfmtuserv{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \ifx\glscapscase\@thirdofthree
+ \@gls@field@font{\GLSaccessuserv{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ \else
+ \@gls@field@font{\glsaccessuserv{#2}\glsxtrgenentrytextfmt{#3}}%
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsuservi@}
+% User 6 field.
+%\changes{1.49}{2022-10-14}{added redefinition}
+% \begin{macrocode}
+\def\@glsuservi@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user6}%
+ \glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{uservi}%
+ {%
+ \@gls@field@font{\glsaccessfmtuservi{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\glsaccessuservi{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6773,10 +8961,21 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@Glsuservi@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user6}%
\glsxtrassignfieldfont{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\@gls@field@link
- [\let\glscapscase\@secondoftwo]%
- {#1}{#2}{\@gls@field@font{\Glsentryuservi{#2}#3}}%
+ [\let\glscapscase\@secondofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{uservi}%
+ {%
+ \@gls@field@font{\Glsaccessfmtuservi{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \@gls@field@font{\Glsaccessuservi{#2}\glsxtrgenentrytextfmt{#3}}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6787,9 +8986,25 @@ Dickimaw Books\\
%\changes{1.04}{2016-05-02}{set regular format}
% \begin{macrocode}
\def\@GLSuservi@#1#2[#3]{%
+ \def\glsxtrcurrentfield{user6}%
\glsxtrassignfieldfont{#2}%
- \@gls@field@link[\let\glscapscase\@thirdoftwo]%
- {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuservi{#2}#3}}}%
+ \glsxtrsaveinsert{#2}{#3}%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]%
+ {#1}{#2}%
+ {%
+ \glsifapplyinnerfmtfield{#2}{uservi}%
+ {%
+ \@gls@field@font{\GLSaccessfmtuservi{#3}{\glsxtrgenentrytextfmt}{#2}}%
+ }%
+ {%
+ \ifx\glscapscase\@thirdofthree
+ \@gls@field@font{\GLSaccessuservi{#2}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#3}}}%
+ \else
+ \@gls@field@font{\glsaccessuservi{#2}\glsxtrgenentrytextfmt{#3}}%
+ \fi
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -6819,15 +9034,19 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%The following acr commands don't support innertextformat.
+%
%\begin{macro}{\@acrshort}
%\changes{0.3}{2015-12-02}{added redefinition}
% No case change.
% \begin{macrocode}
\def\@acrshort#1#2[#3]{%
+ \def\glsxtrcurrentfield{short}%
\@glsxtr@base@acrcmd\acrshort\glsxtrshort
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@firstofthree
@@ -6847,10 +9066,12 @@ Dickimaw Books\\
% First letter uppercase.
% \begin{macrocode}
\def\@Acrshort#1#2[#3]{%
+ \def\glsxtrcurrentfield{short}%
\@glsxtr@base@acrcmd\Acrshort\Glsxtrshort
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@secondofthree
@@ -6870,16 +9091,18 @@ Dickimaw Books\\
% All uppercase.
% \begin{macrocode}
\def\@ACRshort#1#2[#3]{%
+ \def\glsxtrcurrentfield{short}%
\@glsxtr@base@acrcmd\ACRshort\GLSxtrshort
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@thirdofthree
\let\glsinsert\@empty
\def\glscustomtext{%
- \mfirstucMakeUppercase{\acronymfont{\glsaccessshort{#2}}#3}%
+ \glsuppercase{\acronymfont{\glsaccessshort{#2}}#3}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -6893,10 +9116,12 @@ Dickimaw Books\\
% No case change.
% \begin{macrocode}
\def\@acrshortpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{short}%
\@glsxtr@base@acrcmd\acrshortpl\glsxtrshortpl
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@firstofthree
@@ -6916,10 +9141,12 @@ Dickimaw Books\\
% First letter uppercase.
% \begin{macrocode}
\def\@Acrshortpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{short}%
\@glsxtr@base@acrcmd\Acrshortpl\Glsxtrshortpl
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@secondofthree
@@ -6939,16 +9166,18 @@ Dickimaw Books\\
% All uppercase.
% \begin{macrocode}
\def\@ACRshortpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{short}%
\@glsxtr@base@acrcmd\ACRshortpl\GLSxtrshortpl
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@thirdofthree
\let\glsinsert\@empty
\def\glscustomtext{%
- \mfirstucMakeUppercase{\acronymfont{\glsaccessshortpl{#2}}#3}%
+ \glsuppercase{\acronymfont{\glsaccessshortpl{#2}}#3}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -6962,10 +9191,12 @@ Dickimaw Books\\
% No case change.
% \begin{macrocode}
\def\@acrlong#1#2[#3]{%
+ \def\glsxtrcurrentfield{long}%
\@glsxtr@base@acrcmd\acrlong\glsxtrlong
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@firstofthree
@@ -6985,10 +9216,12 @@ Dickimaw Books\\
% First letter uppercase.
% \begin{macrocode}
\def\@Acrlong#1#2[#3]{%
+ \def\glsxtrcurrentfield{long}%
\@glsxtr@base@acrcmd\Acrlong\Glsxtrlong
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@secondofthree
@@ -7008,16 +9241,18 @@ Dickimaw Books\\
% All uppercase.
% \begin{macrocode}
\def\@ACRlong#1#2[#3]{%
+ \def\glsxtrcurrentfield{long}%
\@glsxtr@base@acrcmd\ACRlong\GLSxtrlong
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@thirdofthree
\let\glsinsert\@empty
\def\glscustomtext{%
- \mfirstucMakeUppercase{\acronymfont{\glsaccesslong{#2}}#3}%
+ \glsuppercase{\acronymfont{\glsaccesslong{#2}}#3}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -7031,10 +9266,12 @@ Dickimaw Books\\
% No case change.
% \begin{macrocode}
\def\@acrlongpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{long}%
\@glsxtr@base@acrcmd\acrlongpl\glsxtrlongpl
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@firstofthree
@@ -7054,10 +9291,12 @@ Dickimaw Books\\
% First letter uppercase.
% \begin{macrocode}
\def\@Acrlongpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{long}%
\@glsxtr@base@acrcmd\Acrlongpl\Glsxtrlongpl
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@secondofthree
@@ -7077,16 +9316,18 @@ Dickimaw Books\\
% All uppercase.
% \begin{macrocode}
\def\@ACRlongpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{long}%
\@glsxtr@base@acrcmd\ACRlongpl\GLSxtrlongpl
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@thirdofthree
\let\glsinsert\@empty
\def\glscustomtext{%
- \mfirstucMakeUppercase{\acronymfont{\glsaccesslongpl{#2}}#3}%
+ \glsuppercase{\acronymfont{\glsaccesslongpl{#2}}#3}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -7106,6 +9347,7 @@ Dickimaw Books\\
%\changes{1.42}{2020-02-03}{added redefinition}
% \begin{macrocode}
\def\@acrfull#1#2[#3]{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@base@acrcmd\acrfull\glsxtrfull
\acrfullfmt{#1}{#2}{#3}%
}
@@ -7116,6 +9358,7 @@ Dickimaw Books\\
%\changes{1.42}{2020-02-03}{added redefinition}
% \begin{macrocode}
\def\@Acrfull#1#2[#3]{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@base@acrcmd\Acrfull\Glsxtrfull
\Acrfullfmt{#1}{#2}{#3}%
}
@@ -7126,6 +9369,7 @@ Dickimaw Books\\
%\changes{1.42}{2020-02-03}{added redefinition}
% \begin{macrocode}
\def\@ACRfull#1#2[#3]{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@base@acrcmd\ACRfull\GLSxtrfull
\ACRfullfmt{#1}{#2}{#3}%
}
@@ -7136,6 +9380,7 @@ Dickimaw Books\\
%\changes{1.42}{2020-02-03}{added redefinition}
% \begin{macrocode}
\def\@acrfullpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@base@acrcmd\acrfullpl\glsxtrfullpl
\acrfullplfmt{#1}{#2}{#3}%
}
@@ -7146,6 +9391,7 @@ Dickimaw Books\\
%\changes{1.42}{2020-02-03}{added redefinition}
% \begin{macrocode}
\def\@Acrfullpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@base@acrcmd\Acrfullpl\Glsxtrfullpl
\Acrfullplfmt{#1}{#2}{#3}%
}
@@ -7156,6 +9402,7 @@ Dickimaw Books\\
%\changes{1.42}{2020-02-03}{added redefinition}
% \begin{macrocode}
\def\@ACRfullpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{}%
\@glsxtr@base@acrcmd\ACRfullpl\GLSxtrfullpl
\ACRfullplfmt{#1}{#2}{#3}%
}
@@ -7177,10 +9424,11 @@ Dickimaw Books\\
\gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}%
}%
\newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}%
- \newcommand*{#4}[1]{\@Gls@entry@field{##1}{#1}}%
+ \newcommand*{#4}[1]{\@Glsentryfield{##1}{#1}}%
% \end{macrocode}
-% Now for the commands with links. First the version with no case
-% change (same as before):
+% Now for the commands with links. These currently don't support the
+% inner text format.
+% First the version with no case change:
% \begin{macrocode}
\ifcsdef{@gls@user@#1@}%
{%
@@ -7197,7 +9445,10 @@ Dickimaw Books\\
{\csuse{@gls@user@#1@}{##1}{##2}}%
{\csuse{@gls@user@#1@}{##1}{##2}[]}}%
\csdef{@gls@user@#1@}##1##2[##3]{%
- \@gls@field@link{##1}{##2}{#3{##2}##3}%
+ \def\glsxtrcurrentfield{#1}%
+ \glsxtrassignfieldfont{##2}%
+ \glsxtrsaveinsert{##2}{##3}%
+ \@gls@field@link{##1}{##2}{\@gls@field@font{#3{##2}##3}}%
}%
\newrobustcmd*{#5}{%
\expandafter\@gls@hyp@opt\csname @gls@user@#1\endcsname}%
@@ -7221,8 +9472,11 @@ Dickimaw Books\\
{\csuse{@Gls@user@#1@}{##1}{##2}}%
{\csuse{@Gls@user@#1@}{##1}{##2}[]}}%
\csdef{@Gls@user@#1@}##1##2[##3]{%
+ \def\glsxtrcurrentfield{#1}%
+ \glsxtrassignfieldfont{##2}%
+ \glsxtrsaveinsert{##2}{##3}%
\@gls@field@link[\let\glscapscase\@secondofthree]%
- {##1}{##2}{#4{##2}##3}%
+ {##1}{##2}{\@gls@field@font{#4{##2}##3}}%
}%
\newrobustcmd*{#6}{%
\expandafter\@gls@hyp@opt\csname @Gls@user@#1\endcsname}%
@@ -7245,12 +9499,21 @@ Dickimaw Books\\
{\csuse{@GLS@user@#1@}{##1}{##2}}%
{\csuse{@GLS@user@#1@}{##1}{##2}[]}}%
\csdef{@GLS@user@#1@}##1##2[##3]{%
+ \def\glsxtrcurrentfield{#1}%
+ \glsxtrassignfieldfont{##2}%
+ \glsxtrsaveinsert{##2}{##3}%
\@gls@field@link[\let\glscapscase\@thirdofthree]%
- {##1}{##2}{\mfirstucMakeUppercase{#3{##2}##3}}%
+ {##1}{##2}{\@gls@field@font{\glsuppercase{#3{##2}##3}}}%
}%
\newrobustcmd*{#7}{%
\expandafter\@gls@hyp@opt\csname @GLS@user@#1\endcsname}%
}%
+% \end{macrocode}
+%Add mappings.
+% \begin{macrocode}
+ \glsmfuaddmap{#3}{#4}%
+ \glsmfuaddmap{#5}{#6}%
+ \glsmfublocker{#7}%
}%
{%
\PackageError{glossaries-extra}{Key `#1' already exists}{}%
@@ -7260,13 +9523,22 @@ Dickimaw Books\\
%\end{macro}
%
%\begin{macro}{\@gls@link@nocheckfirsthyper}
-% Old versions of \styfmt{glossaries} don't define
+% Old versions of \sty{glossaries} don't define
% this, so provide it just in case it hasn't been defined.
% \begin{macrocode}
\providecommand*{\@gls@link@nocheckfirsthyper}{}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@gls@link@postkeys@checkfirsthyper}
+%\changes{1.49}{2022-10-14}{new}
+%Need another check after preunset and postunset options have been
+%applied.
+% \begin{macrocode}
+\newcommand*{\@gls@link@postkeys@checkfirsthyper}{}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@gls@link@checkfirsthyper}
% Modify check to determine if the hyperlink should be automatically
% suppressed, but save the original in case the acronyms are restored.
@@ -7291,17 +9563,21 @@ Dickimaw Books\\
{\let\glsxtrifwasfirstuse\@secondoftwo}
{\let\glsxtrifwasfirstuse\@firstoftwo}%
% \end{macrocode}
+%Similarly for \cs{glsxtrifwasglslike}
+% \begin{macrocode}
+ \let\glsxtrifwasglslike\@firstoftwo
+% \end{macrocode}
% Store the category label for convenience.
%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
% \begin{macrocode}
\protected@edef\glscategorylabel{\glscategory{\glslabel}}%
- \ifglsused{\glslabel}%
+ \glsxtrifwasfirstuse
{%
- \glsifcategoryattribute{\glscategorylabel}{nohypernext}{true}%
+ \glsifcategoryattribute{\glscategorylabel}{nohyperfirst}{true}%
{\KV@glslink@hyperfalse}{}%
}%
{%
- \glsifcategoryattribute{\glscategorylabel}{nohyperfirst}{true}%
+ \glsifcategoryattribute{\glscategorylabel}{nohypernext}{true}%
{\KV@glslink@hyperfalse}{}%
}%
\glslinkcheckfirsthyperhook
@@ -7310,7 +9586,7 @@ Dickimaw Books\\
%\end{macro}
%
%\begin{macro}{\do@glsdisablehyperinlist}
-% This command was introduced in \styfmt{glossaries} v4.19. If it
+% This command was introduced in \sty{glossaries} v4.19. If it
% hasn't been defined, we're using an earlier version, in which case
% the \catattr{nohyper} attribute can't be implemented.
% \begin{macrocode}
@@ -7353,6 +9629,25 @@ Dickimaw Books\\
\else
\let\@gls@do@glsunset\glsunset
\fi
+ \let\ifKV@glslink@local\if@org@KV@glslink@local
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@default@restore@glslocal}
+%\changes{1.49}{2022-10-14}{new}
+%Save default definition of \cs{@gls@restore@glslocal}
+% \begin{macrocode}
+\let\@gls@default@restore@glslocal\@gls@restore@glslocal
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@ignore@restore@glslocal}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@ignore@restore@glslocal}{%
+ \let\@gls@do@glsunset\@gobble
+ \let\ifKV@glslink@local\if@org@KV@glslink@local
}
% \end{macrocode}
%\end{macro}
@@ -7365,8 +9660,19 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@gls@default@glslink@opts}
+%\changes{1.49}{2022-10-14}{new}
+%The noindex setting needs to be initialised, so it's now always set
+%to false first before applying the default options. Otherwise, if
+%noindex is explicitly set in a command like \cs{gls} then it won't
+%get reset if the default option list doesn't set it.
+% \begin{macrocode}
+\newcommand*{\@gls@default@glslink@opts}{}
+% \end{macrocode}
+%\end{macro}
+%
%If \cs{@gls@setdefault@glslink@opts} has been defined
-%(\styfmt{glossaries} v4.20) use it to set the default keys in
+%(\sty{glossaries} v4.20) use it to set the default keys in
%\cs{@glslink}.
%\begin{macro}{\@gls@setdefault@glslink@opts}
%\changes{0.5.4}{2015-12-15}{new}
@@ -7375,6 +9681,7 @@ Dickimaw Books\\
{
\renewcommand*{\@gls@setdefault@glslink@opts}{%
\KV@glslink@noindexfalse
+ \expandafter\setupglslink\expandafter{\@gls@default@glslink@opts}%
\@glsxtrsetaliasnoindex
}
}
@@ -7385,6 +9692,7 @@ Dickimaw Books\\
% \begin{macrocode}
\newcommand*{\@gls@setdefault@glslink@opts}{%
\KV@glslink@noindexfalse
+ \expandafter\setupglslink\expandafter{\@gls@default@glslink@opts}%
\@glsxtrsetaliasnoindex
}
\preto\do@glsdisablehyperinlist{\@gls@setdefault@glslink@opts}
@@ -7442,7 +9750,7 @@ Dickimaw Books\\
% \begin{macrocode}
\protected@edef\@gls@counter{\csname glo@\glsdetoklabel{\glslabel}@counter\endcsname}%
\glsxtr@saveentrycounter
- \@@do@wrglossary{\glsxtralias{\glslabel}}%
+ \glsxtr@wrglossary@encap{\glsxtralias{\glslabel}}{\@@do@wrglossary{\glsxtralias{\glslabel}}}%
\endgroup
\fi
}
@@ -7474,10 +9782,23 @@ Dickimaw Books\\
% Set the default options for \cs{glslink} etc.
% \begin{macrocode}
\newcommand*{\GlsXtrSetDefaultGlsOpts}[1]{%
- \renewcommand*{\@gls@setdefault@glslink@opts}{%
- \setkeys{glslink}{#1}%
- \@glsxtrsetaliasnoindex
- }%
+ \renewcommand*{\@gls@default@glslink@opts}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrAppToDefaultGlsOpts}
+% \begin{macrocode}
+\newcommand*{\GlsXtrAppToDefaultGlsOpts}[1]{%
+ \appto\@gls@default@glslink@opts{,#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrPreToDefaultGlsOpts}
+% \begin{macrocode}
+\newcommand*{\GlsXtrPreToDefaultGlsOpts}[1]{%
+ \preto\@gls@default@glslink@opts{#1,}%
}
% \end{macrocode}
%\end{macro}
@@ -7491,6 +9812,80 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtr@wrglossary@encap}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsxtr@@wrglossary@encap}\marg{label}\marg{whatsit}
+%\end{definition}
+%Encapsulate indexing whatsit and increment indexed count.
+%See also \cs{glsxtrdowrglossaryhook}
+% \begin{macrocode}
+\newcommand*{\glsxtr@wrglossary@encap}[2]{\glsencapwrcontent{#2\@glsxtr@inc@indexcount{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+% Keep track of how many times an entry has been indexed. This doesn't test if
+% the entry has been defined to allow for the first \LaTeX\ run before calling
+% \app{bib2gls}.
+%\begin{macro}{\@glsxtr@inc@indexcount}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@inc@indexcount}[1]{%
+ \ifcsdef{glo@\glsdetoklabel{#1}@indexed}
+ {%
+ \csxdef{glo@\glsdetoklabel{#1}@indexed}{%
+ \expandafter\number\expandafter\numexpr\csname glo@\glsdetoklabel{#1}@indexed\endcsname+1}%
+ }%
+ {%
+ \csgdef{glo@\glsdetoklabel{#1}@indexed}{1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryindexcount}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsentryindexcount}[1]{%
+ \ifcsdef{glo@\glsdetoklabel{#1}@indexed}
+ {\csuse{glo@\glsdetoklabel{#1}@indexed}}%
+ {0}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifindexed}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsifindexed}[3]{%
+ \ifcsdef{glo@\glsdetoklabel{#1}@indexed}%
+ {\expandafter\ifnum\csname glo@\glsdetoklabel{#1}@indexed\endcsname>0 #2\else#3\fi}%
+ {#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaddallunindexed}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsaddallunindexed}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glo@entry}%
+ {%
+ \glsifindexed{\@glo@entry}{}{\glsadd[format=glsignore]{\@glo@entry}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsencapwrcontent}
+%\changes{1.49}{2022-10-14}{new}
+%This command was added to \sty{glossaries} v4.50 so may not be
+%defined.
+% \begin{macrocode}
+\providecommand*{\glsencapwrcontent}[1]{{#1}}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glswriteentry}
% Redefine to test for \catattr{indexonlyfirst} category attribute.
%\changes{1.44}{2020-03-23}{replaced \cs{ifglsused} with \cs{GlsXtrIfUnusedOrUndefined}}
@@ -7521,7 +9916,7 @@ Dickimaw Books\\
%
%\begin{macro}{\@@do@@wrglossary}
% Hook into glossary indexing command so that it can also use
-% \ics{index} at the same time if required and add user hook.
+% \cs{index} at the same time if required and add user hook.
% \begin{macrocode}
\appto\@@do@@wrglossary{\@glsxtr@do@@wrindex
\glsxtrdowrglossaryhook{\@gls@label}%
@@ -7563,7 +9958,10 @@ Dickimaw Books\\
% \begin{macrocode}
\newcommand*{\@gls@alt@hyp@opt}[1]{%
\let\glslinkvar\@firstofthree
- \let\@gls@hyp@opt@cs#1\relax
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{changed \cs{let} to \cs{def} for \cs{@gls@hyp@opt@cs}}
+% \begin{macrocode}
+ \def\@gls@hyp@opt@cs{#1}%
\@ifstar{\s@gls@hyp@opt}%
{\@ifnextchar+%
{\@firstoftwo{\p@gls@hyp@opt}}%
@@ -7627,7 +10025,7 @@ Dickimaw Books\\
{}%
{%
% \end{macrocode}
-%Let \gls{bib2gls} know the modifier.
+%Let \app{bib2gls} know the modifier.
%\changes{1.37}{2018-11-30}{write modifier to aux}
% \begin{macrocode}
\protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@altmodifier}[1]{}}%
@@ -7637,6 +10035,32 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GlsXtrSetPlusModifier}
+% Allow user to override the plus modifier.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrSetPlusModifier}[1]{%
+ \renewcommand*{\p@gls@hyp@opt}[1][]{%
+ \let\glslinkvar\@thirdofthree
+ \@gls@hyp@opt@cs[#1,##1]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrSetStarModifier}
+% Allow user to override the star modifier.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrSetStarModifier}[1]{%
+ \renewcommand*{\s@gls@hyp@opt}[1][]{%
+ \let\glslinkvar\@secondofthree
+ \@gls@hyp@opt@cs[#1,##1]%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtr@org@dohyperlink}
%\changes{1.21}{2017-11-03}{new}
% \begin{macrocode}
@@ -7646,7 +10070,7 @@ Dickimaw Books\\
%
%\begin{macro}{\glsnavhyperlink}
%\changes{1.21}{2017-11-03}{patched}
-%Since \ics{glsnavhyperlink} uses \cs{@glslink}, it's necessary to
+%Since \cs{glsnavhyperlink} uses \cs{@glslink}, it's necessary to
%patch it uses \cs{glsdohyperlink} instead of \cs{glsxtrdohyperlink}.
%The simplest way to achieve this is to locally let
%\cs{glsxtrdohyperlink} to \cs{glsdohyperlink}.
@@ -7741,8 +10165,8 @@ Dickimaw Books\\
% Unpleasant complications can occur if the \gloskey{text} or
% \gloskey{first} key etc contains \cs{gls}, particularly if there
% are hyperlinks. To get around this problem, patch
-% \cs{glsdohyperlink} so that it temporarily makes \ics{gls} behave
-% like \ics{glstext}\oarg{hyper=false,noindex}. (This will be
+% \cs{glsdohyperlink} so that it temporarily makes \cs{gls} behave
+% like \cs{glstext}\oarg{hyper=false,noindex}. (This will be
% overridden if the user explicitly cancels either of those options
% in the optional argument of \cs{gls} or using the plus version.)
% This also patches the short form commands like \cs{acrshort}
@@ -7814,7 +10238,7 @@ Dickimaw Books\\
%\begin{macro}{\glsxtrhyperlink}
%\changes{1.19}{2017-09-09}{new}
-%Allows integration with the base \styfmt{glossaries} package's
+%Allows integration with the base \sty{glossaries} package's
%\pkgopt[showtargets]{debug} option.
% \begin{macrocode}
\newcommand{\glsxtrhyperlink}[2]{%
@@ -7849,7 +10273,7 @@ Dickimaw Books\\
%\begin{macro}{\glsdisablehyper}
%\changes{0.5.4}{2015-12-15}{added}
%\changes{1.21}{2017-11-03}{changed to use \cs{def} rather than \cs{let}}
-% Redefine in case we have an old version of \styfmt{glossaries}.
+% Redefine in case we have an old version of \sty{glossaries}.
%This now uses \cs{def} rather than \cs{let} to allow for
%redefinitions of \cs{glsdonohyperlink}.
% \begin{macrocode}
@@ -7877,8 +10301,8 @@ Dickimaw Books\\
%\end{macro}
%
%\begin{macro}{\glsdonohyperlink}
-% This command was only introduced in \styfmt{glossaries} v4.20, so it may
-% not be defined (therefore use \cs{def}). For older \styfmt{glossaries} versions, this won't be
+% This command was only introduced in \sty{glossaries} v4.20, so it may
+% not be defined (therefore use \cs{def}). For older \sty{glossaries} versions, this won't be
% used if \sty{hyperref} hasn't been loaded, which means the
% indexing will still take place. The generated text is scoped
% (the link text in \cs{hyperlink} is also scoped, so it's
@@ -8021,7 +10445,7 @@ Dickimaw Books\\
\def\@GLSxtr@p@short@#1#2[#3]{%
{%
\glssetabbrvfmt{\glscategory{#2}}%
- \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshort{#2}}#3}%
+ \glsuppercase{\glsabbrvfont{\glsentryshort{#2}}#3}%
}%
}
% \end{macrocode}
@@ -8057,7 +10481,7 @@ Dickimaw Books\\
\def\@GLSxtr@p@shortpl@#1#2[#3]{%
{%
\glssetabbrvfmt{\glscategory{#2}}%
- \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshortpl{#2}}#3}%
+ \glsuppercase{\glsabbrvfont{\glsentryshortpl{#2}}#3}%
}%
}
% \end{macrocode}
@@ -8081,7 +10505,7 @@ Dickimaw Books\\
%\changes{0.5.4}{2015-12-15}{new}
% \begin{macrocode}
\def\@GLSxtr@p@long@#1#2[#3]{%
- {\mfirstucMakeUppercase{\glslongfont{\glsentrylong{#2}}#3}}}
+ {\glsuppercase{\glslongfont{\glsentrylong{#2}}#3}}}
% \end{macrocode}
%\end{macro}
%
@@ -8103,7 +10527,7 @@ Dickimaw Books\\
%\changes{0.5.4}{2015-12-15}{new}
% \begin{macrocode}
\def\@GLSxtr@p@longpl@#1#2[#3]{%
- {\mfirstucMakeUppercase{\glslongfont{\glsentrylongpl{#2}}#3}}}
+ {\glsuppercase{\glslongfont{\glsentrylongpl{#2}}#3}}}
% \end{macrocode}
%\end{macro}
%
@@ -8125,7 +10549,7 @@ Dickimaw Books\\
%\changes{0.5.4}{2015-12-15}{new}
% \begin{macrocode}
\def\@GLSxtr@p@acrshort@#1#2[#3]{%
- {\mfirstucMakeUppercase{\acronymfont{\glsentryshort{#2}}#3}}}
+ {\glsuppercase{\acronymfont{\glsentryshort{#2}}#3}}}
% \end{macrocode}
%\end{macro}
%
@@ -8147,7 +10571,7 @@ Dickimaw Books\\
%\changes{0.5.4}{2015-12-15}{new}
% \begin{macrocode}
\def\@GLSxtr@p@acrshortpl@#1#2[#3]{%
- {\mfirstucMakeUppercase{\acronymfont{\glsentryshortpl{#2}}#3}}}
+ {\glsuppercase{\acronymfont{\glsentryshortpl{#2}}#3}}}
% \end{macrocode}
%\end{macro}
%
@@ -8169,7 +10593,7 @@ Dickimaw Books\\
%\changes{0.5.4}{2015-12-15}{new}
% \begin{macrocode}
\def\@GLSxtr@p@acrlong@#1#2[#3]{%
- {\mfirstucMakeUppercase{\glsentrylong{#2}#3}}}
+ {\glsuppercase{\glsentrylong{#2}#3}}}
% \end{macrocode}
%\end{macro}
%
@@ -8191,7 +10615,7 @@ Dickimaw Books\\
%\changes{0.5.4}{2015-12-15}{new}
% \begin{macrocode}
\def\@GLSxtr@p@acrlongpl@#1#2[#3]{%
- {\mfirstucMakeUppercase{\glsentrylongpl{#2}#3}}}
+ {\glsuppercase{\glsentrylongpl{#2}#3}}}
% \end{macrocode}
%\end{macro}
%
@@ -8306,13 +10730,29 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrifintoc}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glsxtrifintoc}[2]{#2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifheaduc}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrifheaduc}[3]{%
+ \glsxtrifintoc{#3}{\glsifattribute{#1}{headuc}{true}{#2}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtr@entry@p}
%\changes{1.07}{2016-08-15}{new}
% \begin{macrocode}
\newrobustcmd*{\glsxtr@headentry@p}[2]{%
- \glsifattribute{#1}{headuc}{true}%
+ \glsxtrifheaduc{#1}%
{%
- \mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}%
+ \glsuppercase{\@gls@entry@field{#1}{#2}}%
}%
{%
\@gls@entry@field{#1}{#2}%
@@ -8325,42 +10765,16 @@ Dickimaw Books\\
%\changes{1.07}{2016-08-15}{new}
%Not robust as it needs to expand somewhat.
% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand{\glsxtrp}[2]{%
- \protect\NoCaseChange
- {%
- \protect\texorpdfstring
- {%
- \protect\glsxtrifinmark
- {%
- \ifcsdef{glsxtrhead#1}%
- {%
- {\protect\csuse{glsxtrhead#1}{#2}}%
- }%
- {%
- \glsxtr@headentry@p{#2}{#1}%
- }%
- }%
- {%
- \@glsxtrp{#1}{#2}%
- }%
- }%
- {%
- \protect\@gls@entry@field{#2}{#1}%
- }%
- }%
- }
-}
-{
- \newcommand{\glsxtrp}[2]{%
- \protect\NoCaseChange
+\newcommand{\glsxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\glstexorpdfstring
{%
\protect\glsxtrifinmark
{%
\ifcsdef{glsxtrhead#1}%
{%
- {\protect\csuse{glsxtrhead#1}}%
+ {\protect\csuse{glsxtrhead#1}{#2}}%
}%
{%
\glsxtr@headentry@p{#2}{#1}%
@@ -8370,7 +10784,10 @@ Dickimaw Books\\
\@glsxtrp{#1}{#2}%
}%
}%
- }
+ {%
+ \protect\@gls@entry@field{#2}{#1}%
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -8391,47 +10808,24 @@ Dickimaw Books\\
%
%\begin{macro}{\Glsxtrp}
%\changes{1.07}{2016-08-15}{new}
-%As above but use first letter upper case (but not for the
-%bookmarks, which can't process \cs{uppercase}).
+%As above but use first letter upper case.
% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand{\Glsxtrp}[2]{%
- \protect\NoCaseChange
- {%
- \protect\texorpdfstring
- {%
- \protect\glsxtrifinmark
- {%
- \ifcsdef{Glsxtrhead#1}%
- {%
- {\protect\csuse{Glsxtrhead#1}{#2}}%
- }%
- {%
- \protect\@Gls@entry@field{#2}{#1}%
- }%
- }%
- {%
- \@Glsxtrp{#1}{#2}%
- }%
- }%
- {%
- \protect\@gls@entry@field{#2}{#1}%
- }%
- }%
- }
-}
-{
- \newcommand{\Glsxtrp}[2]{%
- \protect\NoCaseChange
+\newcommand{\Glsxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\glstexorpdfstring
{%
\protect\glsxtrifinmark
{%
\ifcsdef{Glsxtrhead#1}%
{%
- {\protect\csuse{Glsxtrhead#1}}%
+ {\protect\csuse{Glsxtrhead#1}{#2}}%
}%
{%
+% \end{macrocode}
+% \cs{@Gls@entry@field} is robust as from \sty{glossaries} v4.50,
+% but continue to use \cs{protect} in case an older version is installed.
+% \begin{macrocode}
\protect\@Gls@entry@field{#2}{#1}%
}%
}%
@@ -8439,49 +10833,25 @@ Dickimaw Books\\
\@Glsxtrp{#1}{#2}%
}%
}%
- }
+ {%
+ \MFUsentencecase{\@gls@entry@field{#2}{#1}}%
+ }%
+ }%
}
+\glsmfuaddmap{\glsxtrp}{\Glsxtrp}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\GLSxtrp}
%\changes{1.07}{2016-08-15}{new}
-%As above but all upper case (but not for the
-%bookmarks, which can't process \cs{uppercase}).
+%As above but all upper case. The bookmarks use
+%\cs{glsuppercase}, which is expandable as from
+%\sty{mfirstuc} v2.08+.
% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand{\GLSxtrp}[2]{%
- \protect\NoCaseChange
- {%
- \protect\texorpdfstring
- {%
- \protect\glsxtrifinmark
- {%
- \ifcsdef{GLSxtr#1}%
- {%
- {\protect\GLSxtrshort[noindex,hyper=false]{#1}[]}%
- }%
- {%
- \protect\mfirstucMakeUppercase
- {%
- \protect\@gls@entry@field{#2}{#1}%
- }%
- }%
- }%
- {%
- \@GLSxtrp{#1}{#2}%
- }%
- }%
- {%
- \protect\@gls@entry@field{#2}{#1}%
- }%
- }%
- }
-}
-{
- \newcommand{\GLSxtrp}[2]{%
- \protect\NoCaseChange
+\newcommand{\GLSxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\glstexorpdfstring
{%
\protect\glsxtrifinmark
{%
@@ -8490,7 +10860,7 @@ Dickimaw Books\\
{\protect\GLSxtrshort[noindex,hyper=false]{#1}[]}%
}%
{%
- \protect\mfirstucMakeUppercase
+ \protect\glsuppercase
{%
\protect\@gls@entry@field{#2}{#1}%
}%
@@ -8500,23 +10870,27 @@ Dickimaw Books\\
\@GLSxtrp{#1}{#2}%
}%
}%
- }
+ {%
+ \protect\GLSxtrusefield{#2}{#1}%
+ }%
+ }%
}
+\glsmfublocker{\GLSxtrp}
% \end{macrocode}
%\end{macro}
%
%
-%\subsection{Entry Counting}
+%\subsubsection{Entry Counting}
%
-% The (use) entry counting mechanism from \styfmt{glossaries} is adjusted
+% The (use) entry counting mechanism from \sty{glossaries} is adjusted
% here to work with category attributes. Provide a convenient
% command to enable entry counting, set the \catattr{entrycount}
-% attribute for given categories and redefine \ics{gls} etc to
+% attribute for given categories and redefine \cs{gls} etc to
% use \cs{cgls} instead. This form of entry counting is provided to
% adjust the formatting if the number of times an entry has been
% used (through commands that unset the first use flag) doesn't
% exceeding the specified threshold. For link counting, see
-% \sectionref{sec:linkcount}.
+%\sectionref{sec:linkcount}.
%
% First adjust definitions of the unset and reset commands to
% provide a hook, but changing the flag can cause problems in
@@ -8569,8 +10943,12 @@ Dickimaw Books\\
% \begin{macrocode}
\newcommand*{\@GlsXtrStartUnsetBuffering}{%
\let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer
- \def\@glsxtr@unset@buffer{}%
+ \GlsXtrClearUnsetBuffer
\let\@glsunset\@glsxtrbuffer@unset
+ \let\org@glsxtrbuffer@check@repeats\@glsxtrbuffer@check@repeats
+ \renewcommand*{\@glsxtrbuffer@check@repeats}{%
+ \@@glsxtrbuffer@check@repeats
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -8581,8 +10959,12 @@ Dickimaw Books\\
% \begin{macrocode}
\newcommand*{\s@GlsXtrStartUnsetBuffering}{%
\let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer
- \def\@glsxtr@unset@buffer{}%
+ \GlsXtrClearUnsetBuffer
\let\@glsunset\@glsxtrbuffer@nodup@unset
+ \let\org@glsxtrbuffer@check@repeats\@glsxtrbuffer@check@repeats
+ \renewcommand*{\@glsxtrbuffer@check@repeats}{%
+ \@@glsxtrbuffer@check@repeats
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -8613,6 +10995,79 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@glsxtrbuffer@check@repeats}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtrbuffer@check@repeats}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glsxtrbuffer@check@repeats}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@@glsxtrbuffer@check@repeats}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glsxtrbuffer@check@repeats@notused}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@@glsxtrbuffer@check@repeats@notused}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glsxtrbuffer@do@check@repeat}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@@glsxtrbuffer@do@check@repeat}{%
+ \expandafter\ifinlist\expandafter{\glslabel}{\@glsxtr@unset@buffer}%
+ {\@glslocalunset{\glslabel}}%
+ {\GlsXtrIfUnusedOrUndefined\glslabel
+ {\listxadd\@@glsxtrbuffer@check@repeats@notused{\glslabel}}{}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrUnsetBufferEnableRepeatLocal}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrUnsetBufferEnableRepeatLocal}{%
+ \def\@@glsxtrbuffer@check@repeats{\@@glsxtrbuffer@do@check@repeat}%
+ \def\@@glsxtrbuffer@check@repeats@notused{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrUnsetBufferDisableRepeatLocal}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrUnsetBufferDisableRepeatLocal}{%
+ \def\@@glsxtrbuffer@check@repeats{}%
+ \def\@@glsxtrbuffer@check@repeats@notused{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrResetLocalBuffer}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrResetLocalBuffer}{%
+ \forlistloop\@glslocalreset\@@glsxtrbuffer@check@repeats@notused
+ \GlsXtrClearUnsetBuffer
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrClearUnsetBuffer}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrClearUnsetBuffer}{%
+ \def\@@glsxtrbuffer@check@repeats@notused{}%
+ \def\@glsxtr@unset@buffer{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GlsXtrStopUnsetBuffering}
%\changes{1.30}{2018-04-25}{new}
% \begin{macrocode}
@@ -8630,6 +11085,7 @@ Dickimaw Books\\
\let\@glsunset\@glsxtr@unset
\forlistloop\@glsunset\@glsxtr@unset@buffer
\let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer
+ \let\@glsxtrbuffer@check@repeats\org@glsxtrbuffer@check@repeats
}
% \end{macrocode}
%\end{macro}
@@ -8641,6 +11097,7 @@ Dickimaw Books\\
\newcommand*{\s@GlsXtrStopUnsetBuffering}{%
\forlistloop\@glslocalunset\@glsxtr@unset@buffer
\let\@glsunset\@glsxtr@unset
+ \let\@glsxtrbuffer@check@repeats\org@glsxtrbuffer@check@repeats
}
% \end{macrocode}
%\end{macro}
@@ -8652,6 +11109,7 @@ Dickimaw Books\\
\newcommand*{\GlsXtrDiscardUnsetBuffering}{%
\let\@glsunset\@glsxtr@unset
\let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer
+ \let\@glsxtrbuffer@check@repeats\org@glsxtrbuffer@check@repeats
}
% \end{macrocode}
%\end{macro}
@@ -8801,6 +11259,17 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\ifglsresetcurrcount}
+%\changes{1.49}{2022-10-14}{new}
+%Determine whether or not to reset the entry counter when the first
+%use flag is reset. This conditional will already be defined with
+%\sty{glossaries} v4.50+.
+% \begin{macrocode}
+\ifdef\glsresetcurrcountfalse{}{\newif\ifglsresetcurrcount}
+\glsresetcurrcountfalse
+% \end{macrocode}
+%\end{macro}
+%
% Redefine the entry counting commands to take into account the
%\catattr{entrycount} attribute.
%\begin{macro}{\glsenableentrycount}
@@ -8850,12 +11319,16 @@ Dickimaw Books\\
\let\@glsxtr@entrycount@org@reset\glsxtrpostreset
\renewcommand*{\glsxtrpostreset}[1]{%
\@glsxtr@entrycount@org@reset{##1}%
- \csgdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ \ifglsresetcurrcount
+ \csgdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ \fi
}%
\let\@glsxtr@entrycount@org@localreset\glsxtrpostlocalreset
\renewcommand*{\glsxtrpostlocalreset}[1]{%
\@glsxtr@entrycount@org@localreset{##1}%
- \csdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ \ifglsresetcurrcount
+ \csdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ \fi
}%
% \end{macrocode}
% Modifications to take into account the attributes that govern
@@ -8887,6 +11360,21 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@@newglossaryentry@defcounters}
+%\changes{1.49}{2022-10-14}{new}
+%Allow for docdef=restricted.
+% \begin{macrocode}
+\renewcommand*{\@@newglossaryentry@defcounters}{%
+ \csdef{glo@\@glo@label @currcount}{0}%
+ \ifnum\@glsxtr@docdefval=2\relax
+ \ifcsdef{glo@\@glo@label @prevcount}{}{\csdef{glo@\@glo@label @prevcount}{0}}%
+ \else
+ \csdef{glo@\@glo@label @prevcount}{0}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@gls@write@entrycounts}
% Modify this command so that it only writes the information for
% entries with the \catattr{entrycount} attribute and issue
@@ -9059,11 +11547,12 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-% Add all upper case versions not provided by \styfmt{glossaries}.
+% Add all upper case versions not provided by \sty{glossaries}.
%\begin{macro}{\cGLS}
%\changes{0.5}{2015-12-07}{new}
% \begin{macrocode}
\newrobustcmd*{\cGLS}{\@gls@hyp@opt\@cGLS}
+\glsmfublocker{\cGLS}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@cGLS}
@@ -9090,7 +11579,7 @@ Dickimaw Books\\
% text.
% \begin{macrocode}
\newcommand*{\cGLSformat}[2]{%
- \expandafter\mfirstucMakeUppercase\expandafter{\cglsformat{#1}{#2}}%
+ \expandafter\glsuppercase\expandafter{\cglsformat{#1}{#2}}%
}
% \end{macrocode}
%\end{macro}
@@ -9099,6 +11588,7 @@ Dickimaw Books\\
%\changes{0.5}{2015-12-07}{new}
% \begin{macrocode}
\newrobustcmd*{\cGLSpl}{\@gls@hyp@opt\@cGLSpl}
+\glsmfublocker{\cGLSpl}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@cGLSpl}
@@ -9125,7 +11615,7 @@ Dickimaw Books\\
% text.
% \begin{macrocode}
\newcommand*{\cGLSplformat}[2]{%
- \expandafter\mfirstucMakeUppercase\expandafter{\cglsplformat{#1}{#2}}%
+ \expandafter\glsuppercase\expandafter{\cglsplformat{#1}{#2}}%
}
% \end{macrocode}
%\end{macro}
@@ -9394,11 +11884,12 @@ Dickimaw Books\\
{%
% \end{macrocode}
%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
+%\changes{1.49}{2022-10-14}{added \cs{ifglsresetcurrcount}}
% \begin{macrocode}
\protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}%
\ifcsundef{\@glsxtr@csname}%
{}%
- {\csgdef{\@glsxtr@csname}{0}}%
+ {\ifglsresetcurrcount\csgdef{\@glsxtr@csname}{0}\fi}%
}%
{}%
}%
@@ -9409,11 +11900,12 @@ Dickimaw Books\\
{%
% \end{macrocode}
%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
+%\changes{1.49}{2022-10-14}{added \cs{ifglsresetcurrcount}}
% \begin{macrocode}
\protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}%
\ifcsundef{\@glsxtr@csname}%
{}%
- {\csdef{\@glsxtr@csname}{0}}%
+ {\ifglsresetcurrcount\csdef{\@glsxtr@csname}{0}\fi}%
}%
{}%
}%
@@ -9564,13 +12056,13 @@ Dickimaw Books\\
%\end{macro}
%
%
-%\subsection{Acronym Modifications}
+%\subsubsection{Acronym Modifications}
% It's more consistent to use the abbreviation code for acronyms,
% but make some adjustments to allow for continued use of the
-% \styfmt{glossaries} package's custom acronym format. (For example,
+% \sty{glossaries} package's custom acronym format. (For example,
% user may already have defined some acronym styles with
% \cs{newacronymstyle} which they would like to continue to use.)
-% The original \styfmt{glossaries} acronym code can be restored
+% The original \sty{glossaries} acronym code can be restored
% with \cs{RestoreAcronyms}, but adjust \cs{SetGenericNewAcronym}
% so that \cs{newacronym} adds the category.
%
@@ -9628,14 +12120,14 @@ Dickimaw Books\\
\glslink[##1]{##2}{\Genacrfullformat{##2}{##3}}}%
\renewcommand*{\ACRfullfmt}[3]{%
\glslink[##1]{##2}{%
- \mfirstucMakeUppercase{\genacrfullformat{##2}{##3}}}}%
+ \glsuppercase{\genacrfullformat{##2}{##3}}}}%
\renewcommand*{\acrfullplfmt}[3]{%
\glslink[##1]{##2}{\genplacrfullformat{##2}{##3}}}%
\renewcommand*{\Acrfullplfmt}[3]{%
\glslink[##1]{##2}{\Genplacrfullformat{##2}{##3}}}%
\renewcommand*{\ACRfullplfmt}[3]{%
\glslink[##1]{##2}{%
- \mfirstucMakeUppercase{\genplacrfullformat{##2}{##3}}}}%
+ \glsuppercase{\genplacrfullformat{##2}{##3}}}}%
\renewcommand*{\glsentryfull}[1]{\genacrfullformat{##1}{}}%
\renewcommand*{\Glsentryfull}[1]{\Genacrfullformat{##1}{}}%
\renewcommand*{\glsentryfullpl}[1]{\genplacrfullformat{##1}{}}%
@@ -9674,7 +12166,7 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-%Need to provide a replacement for \ics{forallacronyms} since
+%Need to provide a replacement for \cs{forallacronyms} since
%\cs{@glsacronymlists} isn't available.
%
%\begin{macro}{\@glsxtr@abbrlists}
@@ -9785,7 +12277,7 @@ Dickimaw Books\\
% \end{macrocode}
%
%\begin{macro}{\RestoreAcronyms}
-% Restore acronyms to \styfmt{glossaries} interface.
+% Restore acronyms to \sty{glossaries} interface.
% \begin{macrocode}
\newcommand*{\RestoreAcronyms}{%
% \end{macrocode}
@@ -9849,15 +12341,30 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
-%\subsection{Indexing and Displaying Glossaries}
+%\begin{macro}{\glsabspace}
+%\changes{1.49}{2022-10-14}{new}
+% Similar to \cs{glsacspace} but includes inner formatting.
+% \begin{macrocode}
+\newrobustcmd*{\glsabspace}[1]{%
+ \settowidth{\dimen@}{(\glsfirstabbrvfont{\glsentryshort{#1}})}%
+ \ifdim\dimen@<\glsacspacemax
+ \glsxtrgenentrytextfmt{~}%
+ \else
+ \glsxtrgenentrytextfmt{ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\subsubsection{Indexing and Displaying Glossaries}
%From time-to-time users ask if they can have one glossary sorted
%normally and another sorted by definition or usage. With the
-% base \styfmt{glossaries} package this can only be achieved with the
+% base \sty{glossaries} package this can only be achieved with the
% \qt{noidx} commands (Option~1). This is an attempt to mix and
% match.
%
%First we need a list of the glossaries that require
-%\gls{makeindex}\slash\gls{xindy}.
+%\app{makeindex}\slash\app{xindy}.
%\begin{macro}{\@glsxtr@reg@glosslist}
%\changes{1.0}{2016-01-24}{new}
% \begin{macrocode}
@@ -9900,6 +12407,14 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@gls@automake@types}
+%\changes{1.49}{2022-10-14}{new}
+%Added to \sty{glossaries} v4.50 so may not be defined.
+% \begin{macrocode}
+\providecommand{\@gls@automake@types}{\@glo@types}
+% \end{macrocode}
+%\end{macro}
+%
% Redefine \cs{makeglossaries} to take an optional argument.
% This should be empty for the usual behaviour (all glossaries
% need processing with an indexing application) or a comma-separated
@@ -9911,6 +12426,15 @@ Dickimaw Books\\
%\changes{1.42}{2020-02-03}{added \cs{@domakeglossaries}}
% \begin{macrocode}
\renewcommand*{\makeglossaries}[1][]{%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex
+ \edef\glsindexingsetting{bib2gls-\ifglsxindy xindy\else makeindex\fi}%
+ \else
+ \ifglsxindy
+ \def\glsindexingsetting{xindy}%
+ \else
+ \def\glsindexingsetting{makeindex}%
+ \fi
+ \fi
\@domakeglossaries
{%
\@glsxtr@if@record@only
@@ -9939,13 +12463,20 @@ Dickimaw Books\\
{You may only use the hybrid \string\makeglossaries[...]\space with
record=off option}%
\else
+ \appto\glsindexingsetting{-noidx}%
% \end{macrocode}
%\cs{@gls@@automake@immediate} was introduced to \sty{glossaries}
%v4.42 so it may not be defined.
%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
% \begin{macrocode}
- \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}%
\protected@edef\@glsxtr@reg@glosslist{#1}%
+% \end{macrocode}
+% \cs{@gls@@automake@immediate} uses \cs{@gls@automake@types}
+% as from v4.50. Older versions use \cs{@glo@types} which will
+% include the noidx glossaries.
+% \begin{macrocode}
+ \let\@gls@automake@types\@glsxtr@reg@glosslist
+ \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}%
\ifundef{\glswrite}{\newwrite\glswrite}{}%
\protected@write\@auxout{}{\string\providecommand
\string\@glsorder[1]{}}
@@ -10136,17 +12667,41 @@ Dickimaw Books\\
\ifdef\@glo@check@sortallowed{\@glo@check@sortallowed\makeglossaries}{}%
\fi
}%
+% \end{macrocode}
+% Prohibit the use of \cs{glsxtrnoidxgroups}.
+% \begin{macrocode}
+ \prohibit@glsxtrnoidxgroups
+% \end{macrocode}
+% Activate warnings for incompatible options.
+% \begin{macrocode}
+ \let\gls@warn@makegloss@incompatible\@gls@warn@makegloss@incompatible
}%
}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\gls@warn@makegloss@incompatible}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\gls@warn@makegloss@incompatible}[2]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@warn@makegloss@incompatible}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@warn@makegloss@incompatible}[2]{%
+ #2\GlossariesExtraWarning{#1\space is incompatible with \string\makeglossaries}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%The optional argument version of \cs{makeglossaries} needs an
%adjustment to \cs{@printglossary} to allow \cs{@glo@assign@sortkey}
%to pick up the glossary type.
%
-%Earlier versions of \styfmt{glossaries-extra} simply saved the
+%Earlier versions of \sty{glossaries-extra} simply saved the
%original version of \cs{@printglossary} with \cs{let}
%\cs{@glsxtr@orgprintglossary}. This was later changed to actually
%defining \cs{@glsxtr@orgprintglossary} to something similar with
@@ -10192,7 +12747,7 @@ Dickimaw Books\\
\ifx\@glossary@default@style\relax
\GlossariesWarning{No default glossary style provided \MessageBreak
for the glossary `\@glo@type'. \MessageBreak
- Using deprecated fallback. \MessageBreak
+ Using fallback. \MessageBreak
To fix this set the style with \MessageBreak
\string\setglossarystyle\space or use the \MessageBreak
style key=value option}%
@@ -10259,7 +12814,7 @@ Dickimaw Books\\
%
%\begin{macro}{\@glsxtr@nopostpunc}
%Provide a command that works like \cs{nopostdesc} but only
-%switches of the punctuation without suppressing the post-description
+%switches off the punctuation without suppressing the post-description
%hook.
%\changes{1.22}{2017-11-08}{new}
% \begin{macrocode}
@@ -10368,6 +12923,20 @@ Dickimaw Books\\
}
% \end{macrocode}
%
+%\changes{1.49}{2022-10-14}{added \texttt{preamble} key for \texttt{printgloss}}
+% \begin{macrocode}
+\define@key{printgloss}{preamble}{%
+ \renewcommand{\glossarypreamble}{#1}%
+}
+% \end{macrocode}
+%
+%\changes{1.49}{2022-10-14}{added \texttt{postamble} key for \texttt{printgloss}}
+% \begin{macrocode}
+\define@key{printgloss}{postamble}{%
+ \renewcommand{\glossarypostamble}{#1}%
+}
+% \end{macrocode}
+%
%\begin{macro}{\glsxtrsetglossarylabel}
%\changes{1.39}{2019-03-22}{new}
%Set the label for subsequent glossaries. If the label is
@@ -10394,6 +12963,8 @@ Dickimaw Books\\
% \begin{macrocode}
\define@key{printgloss}{leveloffset}{%
\@glsxtr@assign@leveloffset#1\relax
+ \gls@warn@noidxmakegloss@incompatible{option `leveloffset'}
+ {\@glsxtr@leveloffset=0\relax}%
}
% \end{macrocode}
%
@@ -10432,10 +13003,27 @@ Dickimaw Books\\
%
%\changes{1.44}{2020-03-23}{added groups key}
% \begin{macrocode}
-\define@boolkey{printgloss}[glsxtr@printgloss@]{groups}[true]{}
+\define@boolkey{printgloss}[glsxtr@printgloss@]{groups}[true]{%
+ \ifglsxtr@printgloss@groups
+ \else
+ \gls@warn@noidxmakegloss@incompatible{option `groups'}%
+ {\glsxtr@printgloss@groupstrue}%
+ \fi
+}
\glsxtr@printgloss@groupstrue
% \end{macrocode}
%
+%\changes{1.49}{2022-10-14}{added flatten key}
+% \begin{macrocode}
+\define@boolkey{printgloss}[glsxtrprintgloss]{flatten}[true]{%
+ \ifglsxtrprintglossflatten
+ \gls@warn@noidxmakegloss@incompatible{option `flatten'}%
+ {\glsxtrprintglossflattenfalse}%
+ \fi
+}
+\glsxtrprintglossflattenfalse
+% \end{macrocode}
+%
%\begin{macro}{\glsdohypertarget}
%\changes{1.20}{2017-09-11}{added redefinition}
%Redefine to insert \cs{@glsxtrhypernameprefix} before the target
@@ -10662,6 +13250,44 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrnoidxgroups}
+%\changes{1.49}{2022-10-14}{new}
+%Provide the ability to switch from unsrt to noidx code, but only
+%for record=off.
+% \begin{macrocode}
+\newcommand*{\glsxtrnoidxgroups}{%
+ \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off
+ {%
+ \let\@gls@getgrouptitle\@gls@noidx@getgrouptitle
+ \let\glsxtr@org@getgrouptitle\@gls@getgrouptitle
+ }%
+ {\PackageError{glossaries-extra}{Can't use
+ \string\glsxtrunsrtgrouptonoidx\space with record=\@glsxtr@record@setting}
+ {\string\glsxtrunsrtgrouptonoidx\space is only available with record=off}}%
+ \global\let\prohibit@glsxtrnoidxgroups\@glsxtrnoidxgroups@nomakegloss
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrnoidxgroups@nomakegloss}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\@glsxtrnoidxgroups@nomakegloss}{%
+ \PackageError{glossaries-extra}{Can't use
+ \string\glsxtrunsrtgrouptonoidx\space with \string\makeglossaries}{}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\prohibit@glsxtrnoidxgroups}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\prohibit@glsxtrnoidxgroups}{%
+ \global\let\glsxtrnoidxgroups\@glsxtrnoidxgroups@nomakegloss
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrgetgrouptitle}
%\changes{1.14}{2017-04-18}{new}
%Provide a user-level command to fetch the group title. The first
@@ -10669,10 +13295,10 @@ Dickimaw Books\\
%sequence in which to store the title.
% \begin{macrocode}
\newrobustcmd{\glsxtrgetgrouptitle}[2]{%
- \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}%
- \@onelevel@sanitize\@glsxtr@titlelabel
- \ifcsdef{\@glsxtr@titlelabel}
- {\letcs{#2}{\@glsxtr@titlelabel}}%
+ \protected@edef\@glsxtr@titlecsname{glsxtr@grouptitle@#1}%
+ \@onelevel@sanitize\@glsxtr@titlecsname
+ \ifcsdef{\@glsxtr@titlecsname}
+ {\letcs{#2}{\@glsxtr@titlecsname}}%
{\glsxtr@org@getgrouptitle{#1}{#2}}%
}
\let\@gls@getgrouptitle\glsxtrgetgrouptitle
@@ -11267,12 +13893,16 @@ Dickimaw Books\\
%enforces a .glstex extension to avoid conflict.
% \begin{macrocode}
\newcommand*{\glsxtrresourcefile}[2][]{%
+ \@glsxtr@if@record@only
+ {\renewcommand{\glsindexingsetting}{bib2gls}}%
+ {\edef\glsindexingsetting{bib2gls-\ifglsxindy xindy\else makeindex\fi}}%
% \end{macrocode}
%The \pkgopt{record} option can't be set after this command.
%\changes{1.21}{2017-11-03}{now disables record key}
% \begin{macrocode}
\disable@keys{glossaries-extra.sty}{record}%
\glsxtr@writefields
+ \glsxtr@save@mfu
\ifdefempty\GlsXtrDefaultResourceOptions
{%
\protected@write\@auxout{\glsxtrresourceinit}%
@@ -11367,6 +13997,40 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrMFUsave}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMFUsave}{%
+ \ifdef\MFUsave
+ {%
+ \AtBeginDocument{\MFUsave}%
+ }%
+ {%
+ \GlossariesExtraWarning{mfirstuc.sty too old,
+ \string\glsxtrMFUsave\space has no effect. You need to upgrade
+ to mfirstuc v2.08}%
+ }%
+ \let\glsxtrMFUsave\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@save@mfu}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\ifdef\MFUsave
+{
+ \newcommand*{\glsxtr@save@mfu}{%
+ \glsxtrMFUsave
+ \let\glsxtr@save@mfu\relax
+ }
+}
+{
+ \newcommand*{\glsxtr@save@mfu}{}
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtr@fields}
%\changes{1.11}{2017-01-19}{new}
% \begin{macrocode}
@@ -11457,19 +14121,20 @@ Dickimaw Books\\
\protected@write\@auxout{}{\string\glsxtr@pluralsuffixes
{\glspluralsuffix}{\abbrvpluralsuffix}{\acrpluralsuffix}%
{\glsxtrabbrvpluralsuffix}}%
- \ifdef\inputencodingname
- {%
- \protected@write\@auxout{}{\string\glsxtr@texencoding{\inputencodingname}}%
- }%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{encoding test replaced \cs{ifdef} with
+%\cs{ifdefvoid} and reversed args}
+% \begin{macrocode}
+ \ifdefvoid\inputencodingname
{%
% \end{macrocode}
-%If \sty{fontspec} has been loaded, assume UTF-8. (The encoding can
-%be changed with \cs{XeTeXinputencoding}, but I can't work out how
-%to determine the current encoding.)
+%Assume UTF-8.
+%\changes{1.49}{2022-10-14}{removed test for \sty{fontspec}}
% \begin{macrocode}
- \@ifpackageloaded{fontspec}%
- {\protected@write\@auxout{}{\string\glsxtr@texencoding{utf8}}}%
- {}%
+ \protected@write\@auxout{}{\string\glsxtr@texencoding{utf8}}%
+ }%
+ {%
+ \protected@write\@auxout{}{\string\glsxtr@texencoding{\inputencodingname}}%
}%
\protected@write\@auxout{}{\string\glsxtr@shortcutsval{\@glsxtr@shortcutsval}}%
% \end{macrocode}
@@ -11497,7 +14162,7 @@ Dickimaw Books\\
% \end{macrocode}
%If \cs{makeglossaries} is also used, allow makeindex/xindy to
%also be run, otherwise disable the error message about requiring
-%\cs{makeglossaries} with \pkgopt[true]{automake}.
+%\cs{makeglossaries} with \pkgopt{automake}.
% \begin{macrocode}
\ifx\@gls@doautomake\@gls@doautomake@err
\let\@gls@doautomake\relax
@@ -11522,14 +14187,22 @@ Dickimaw Books\\
%
%\begin{macro}{\@glsxtr@do@automake@err}
%\changes{1.14}{2017-04-18}{new}
+%\sty{glossaries} v4.50+ now provides \cs{@gls@do@automake@err} so
+%use that if defined.
% \begin{macrocode}
-\newcommand*{\@gls@doautomake@err}{%
- \PackageError{glossaries}{You must use
- \string\makeglossaries\space with automake=true}
- {%
- Either remove the automake=true setting or
- add \string\makeglossaries\space to your document preamble.%
- }%
+\ifdef{\@gls@do@automake@err}
+{
+ \let\@gls@doautomake@err\@gls@do@automake@err
+}
+{
+ \newcommand*{\@gls@doautomake@err}{%
+ \PackageError{glossaries}{You must use
+ \string\makeglossaries\space with automake=true}
+ {%
+ Either remove the automake=true setting or
+ add \string\makeglossaries\space to your document preamble.%
+ }%
+ }
}
% \end{macrocode}
%\end{macro}
@@ -11557,10 +14230,19 @@ Dickimaw Books\\
% \begin{macrocode}
\newcommand*{\glsxtr@counterrecord}[3]{%
\glsxtrfieldlistgadd{#1}{record.#2}{#3}%
+ \glsxtrAddCounterRecordHook{#1}{#2}{#3}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrAddCounterRecordHook}
+%\changes{1.49}{2022-10-14}{new}
+%User hook.
+% \begin{macrocode}
+\newcommand{\glsxtrAddCounterRecordHook}[3]{}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@glsxtr@counterrecordhook}
%\changes{1.12}{2017-02-03}{new}
%Hook used by \cs{@glsxtr@dorecord}.
@@ -11585,7 +14267,7 @@ Dickimaw Books\\
%\changes{1.12}{2017-02-03}{new}
% \begin{macrocode}
\newcommand*{\@glsxtr@docounterrecord}[1]{%
- \protected@write\@auxout{}{\string\glsxtr@counterrecord
+ \@bibgls@write@aux{}{\string\glsxtr@counterrecord
{\@gls@label}{#1}{\csuse{the#1}}}%
}
% \end{macrocode}
@@ -11606,8 +14288,8 @@ Dickimaw Books\\
\newcommand*{\glsxtrglossentry}[1]{%
\glsxtrtitleorpdforheading
{\@glsxtrglossentry{#1}}%
- {\glsentryname{#1}}%
- {\glsxtrheadname{#1}}%
+ {\GlsXtrStandaloneEntryPdfName{#1}}%
+ {\GlsXtrStandaloneEntryHeadName{#1}}%
}
% \end{macrocode}
%\end{macro}
@@ -11634,8 +14316,26 @@ Dickimaw Books\\
\endgroup
}%
}%
- {\glsentryname{#1}}%
- {\glsxtrheadname{#1}}%
+ {\GlsXtrStandaloneEntryPdfName{#1}}%
+ {\GlsXtrStandaloneEntryHeadName{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrStandaloneEntryHeadName}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrStandaloneEntryHeadName}[1]{%
+ \glsxtrheadname{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrStandaloneEntryPdfName}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrStandaloneEntryPdfName}[1]{%
+ \glsentryname{#1}%
}
% \end{macrocode}
%\end{macro}
@@ -11682,31 +14382,49 @@ Dickimaw Books\\
\newcommand*{\glsxtrglossentryother}[3]{%
\ifstrempty{#1}%
{%
- \ifcsdef{glsxtrhead#3}%
- {%
- \glsxtrtitleorpdforheading
- {\@glsxtrglossentryother{#2}{#3}{#1}}%
- {\@gls@entry@field{#2}{#3}}%
- {\csuse{glsxtrhead#3}{#2}}%
- }%
- {%
- \glsxtrtitleorpdforheading
- {\@glsxtrglossentryother{#2}{#3}{#1}}%
- {\@gls@entry@field{#2}{#3}}%
- {\@gls@entry@field{\NoCaseChange{#2}}{#3}}%
- }%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{use default header if first argument empty}
+% \begin{macrocode}
+ \glsxtrtitleorpdforheading
+ {\@glsxtrglossentryother{#2}{#3}{\GlsXtrStandaloneEntryHeadOther{#3}{#2}}}%
+ {\GlsXtrStandaloneEntryPdfOther{#2}{#3}}%
+ {\GlsXtrStandaloneEntryHeadOther{#3}{#2}}%
}%
{%
\glsxtrtitleorpdforheading
{\@glsxtrglossentryother{#2}{#3}{#1}}%
- {\@gls@entry@field{#2}{#3}}%
+ {\GlsXtrStandaloneEntryPdfOther{#2}{#3}}%
{#1}%
}%
}
% \end{macrocode}
%\end{macro}
+%
+%\begin{macro}{\GlsXtrStandaloneEntryHeadOther}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrStandaloneEntryHeadOther}[2]{%
+ \ifcsdef{glsxtrhead#2}%
+ {\csuse{glsxtrhead#2}{#1}}%
+ {\@gls@entry@field{\NoCaseChange{#1}}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrStandaloneEntryPdfOther}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrStandaloneEntryPdfOther}[2]{%
+ \@gls@entry@field{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@glsxtrglossentryother}
%\changes{1.22}{2017-11-08}{new}
+%\begin{definition}
+%\cs{\@glsxtrglossentryother}\marg{entry-label}\marg{field}\marg{header}
+%\end{definition}
%As \cs{@glsxtrglossentry} but uses a different field.
% \begin{macrocode}
\newrobustcmd*{\@glsxtrglossentryother}[3]{%
@@ -11723,11 +14441,14 @@ Dickimaw Books\\
\ifglshasparent{#1}%
{\GlsXtrStandaloneSubEntryItem{#1}}%
{\glsentryitem{#1}}%
- \GlsXtrStandaloneEntryOther{#1}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{bug fix: corrected arguments to \cs{GlsXtrStandaloneEntryOther}}
+% \begin{macrocode}
+ \GlsXtrStandaloneEntryOther{#1}{#2}%
\endgroup
}%
}%
- {\@gls@entry@field{#1}{#2}}%
+ {\GlsXtrStandaloneEntryPdfOther{#1}{#2}}%
{#3}%
}
% \end{macrocode}
@@ -11814,50 +14535,47 @@ Dickimaw Books\\
}%
{%
% \end{macrocode}
-%\changes{1.16}{2017-06-15}{corrected misspelt command}
+% Setup local commands.
% \begin{macrocode}
- \key@ifundefined{glossentry}{group}%
- {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}%
- {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}%
- \def\@gls@currentlettergroup{}%
+ \@glsxtr@unsrt@gloss@init
% \end{macrocode}
%A loop within the tabular-like styles can cause problems, so
-%move the loop outside.
+%move the loop outside. The entire glossary will be saved in
+%\cs{@glsxtr@doglossary}, which will be built up in the loop.
% \begin{macrocode}
\def\@glsxtr@doglossary{%
\begin{theglossary}%
\glossaryheader
\glsresetentrylist
}%
+% \end{macrocode}
+% Iterate over all entries in the current glossary and add the relevant commands to
+% \cs{@glsxtr@doglossary}.
+% \begin{macrocode}
\expandafter\@for\expandafter\glscurrententrylabel\expandafter
:\expandafter=\csname glolist@\@glo@type\endcsname\do{%
\ifdefempty{\glscurrententrylabel}
{}%
{%
% \end{macrocode}
-%Provide a hook (for example to measure width).
+%Initialise hooks
% \begin{macrocode}
- \let\glsxtr@process\@firstofone
- \let\printunsrtglossaryskipentry
- \@glsxtr@printunsrtglossaryskipentry
- \printunsrtglossaryentryprocesshook{\glscurrententrylabel}%
+ \@gls@xtr@initprocess
% \end{macrocode}
-%Don't check group for child entries.
+%Process this entry (unless it has been skipped).
% \begin{macrocode}
\glsxtr@process
{%
\ifglsxtr@printgloss@groups
% \end{macrocode}
-% This still uses \cs{ifglshasparent} to determine whether or not to
-% check for a change in the letter group. (It doesn't take the level
-% offset into account because \app{bib2gls} only saves the group
-% information for parentless entries.)
+% Check if the group heading should be added and, if so, add it.
+% \cs{@glsxtr@groupheading} will be empty if no group heading.
% \begin{macrocode}
- \ifglshasparent{\glscurrententrylabel}{}%
+ \glsxtraddgroup\glscurrententrylabel
{%
- \@glsxtr@checkgroup\glscurrententrylabel
- \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter
- {\@glsxtr@groupheading}%
+ \@glsxtr@checkgroup\glscurrententrylabel
+ \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter
+ {\@glsxtr@groupheading}%
}%
\fi
% \end{macrocode}
@@ -11877,6 +14595,89 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@glsxtr@unsrt@gloss@init}
+%\changes{1.49}{2022-10-14}{new}
+%Initialise hooks needed at the start.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@unsrt@gloss@init}{%
+% \end{macrocode}
+%Determine how to obtain the group information.
+%\changes{1.16}{2017-06-15}{corrected misspelt command}
+% \begin{macrocode}
+ \key@ifundefined{glossentry}{group}%
+ {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}%
+ {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}%
+% \end{macrocode}
+%Initialise current group information.
+% \begin{macrocode}
+ \def\@gls@currentlettergroup{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{save hierarchical level information}
+%Need to keep track of the current group hierarchical level
+% \begin{macrocode}
+ \def\@gls@currentlettergroup@level{-1}%
+% \end{macrocode}
+%and the current entry hierarchical level.
+% \begin{macrocode}
+ \def\glscurrententrylevel{-1}%
+% \end{macrocode}
+% Initialise the root entry. This will be the most recent entry that
+% doesn't have a parent.
+% \begin{macrocode}
+ \def\glscurrentrootentry{}%
+% \end{macrocode}
+% Initialise the top-level entry. This will be the most recent entry that
+% had level=0 (after adjustment).
+% \begin{macrocode}
+ \def\glscurrenttoplevelentry{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@xtr@initprocess}
+%\changes{1.49}{2022-10-14}{new}
+%Initialise hooks needed for each iteration of the process loop.
+% \begin{macrocode}
+\newcommand*{\@gls@xtr@initprocess}{%
+% \end{macrocode}
+%Save the current hierarchical level (adjusted).
+% \begin{macrocode}
+ \ifglsxtrprintglossflatten
+ \edef\glscurrententrylevel{\number\@glsxtr@leveloffset}%
+ \else
+ \edef\glscurrententrylevel{%
+ \number\numexpr\csname glo@\glscurrententrylabel @level\endcsname
+ + \@glsxtr@leveloffset}%
+ \fi
+% \end{macrocode}
+%If this level 0, update \cs{glscurrenttoplevelentry}
+% \begin{macrocode}
+ \ifnum\glscurrententrylevel=0\relax
+ \let\glscurrenttoplevelentry\glscurrententrylabel
+ \fi
+% \end{macrocode}
+%If this entry doesn't have a parent, update \cs{glscurrentrootentry}
+% \begin{macrocode}
+ \ifglsxtrprintglossflatten
+ \let\glscurrentrootentry\glscurrententrylabel
+ \else
+ \ifglshasparent{\glscurrententrylabel}{}%
+ {\let\glscurrentrootentry\glscurrententrylabel}%
+ \fi
+% \end{macrocode}
+%Initialise to do the current entry.
+% \begin{macrocode}
+ \let\glsxtr@process\@firstofone
+% \end{macrocode}
+%Provide a way to skip the current entry. This will redefine
+%\cs{glsxtr@process} to ignore its argument.
+% \begin{macrocode}
+ \let\printunsrtglossaryskipentry\@glsxtr@printunsrtglossaryskipentry
+ \printunsrtglossaryentryprocesshook{\glscurrententrylabel}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\printunsrtinnerglossary}
%\changes{1.44}{2020-03-23}{new}
%Similar to \cs{printunsrtglossary} but doesn't add the section
@@ -11916,7 +14717,7 @@ Dickimaw Books\\
\ifx\@glossary@default@style\relax
\GlossariesWarning{No default glossary style provided \MessageBreak
for the glossary `\@glo@type'. \MessageBreak
- Using deprecated fallback. \MessageBreak
+ Using fallback. \MessageBreak
To fix this set the style with \MessageBreak
\string\setglossarystyle\space or use the \MessageBreak
style key=value option}%
@@ -11989,43 +14790,42 @@ Dickimaw Books\\
\GlossariesExtraWarning{No entries defined in glossary `\@glo@type'}%
}%
{%
- \key@ifundefined{glossentry}{group}%
- {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}%
- {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}%
- \def\@gls@currentlettergroup{}%
+% \end{macrocode}
+% Setup local commands.
+% \begin{macrocode}
+ \@glsxtr@unsrt@gloss@init
% \end{macrocode}
%No header or reset.
% \begin{macrocode}
\def\@glsxtr@doglossary{}%
+% \end{macrocode}
+% Iterate over all entries in the current glossary and add the relevant commands to
+% \cs{@glsxtr@doglossary}.
+% \begin{macrocode}
\expandafter\@for\expandafter\glscurrententrylabel\expandafter
:\expandafter=\csname glolist@\@glo@type\endcsname\do{%
\ifdefempty{\glscurrententrylabel}
{}%
{%
% \end{macrocode}
-%Provide a hook (for example to measure width).
+%Initialise hooks
% \begin{macrocode}
- \let\glsxtr@process\@firstofone
- \let\printunsrtglossaryskipentry
- \@glsxtr@printunsrtglossaryskipentry
- \printunsrtglossaryentryprocesshook{\glscurrententrylabel}%
+ \@gls@xtr@initprocess
% \end{macrocode}
-%Don't check group for child entries.
+%Process this entry (unless it has been skipped).
% \begin{macrocode}
\glsxtr@process
{%
\ifglsxtr@printgloss@groups
% \end{macrocode}
-% This still uses \cs{ifglshasparent} to determine whether or not to
-% check for a change in the letter group. (It doesn't take the level
-% offset into account because \app{bib2gls} only saves the group
-% information for parentless entries.)
+% Check if the group heading should be added and, if so, add it.
+% \cs{@glsxtr@groupheading} will be empty if no group heading.
% \begin{macrocode}
- \ifglshasparent{\glscurrententrylabel}{}%
+ \glsxtraddgroup\glscurrententrylabel
{%
- \@glsxtr@checkgroup\glscurrententrylabel
- \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter
- {\@glsxtr@groupheading}%
+ \@glsxtr@checkgroup\glscurrententrylabel
+ \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter
+ {\@glsxtr@groupheading}%
}%
\fi
% \end{macrocode}
@@ -12046,6 +14846,24 @@ Dickimaw Books\\
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtraddgroup}
+%\changes{1.49}{2022-10-14}{new}
+%Now that \app{bib2gls} v3.0+ has the ability to store group labels
+%for sub-levels, provide a way to allow for this. This checks if the entry has
+%a parent, which was used originally, unless the flatten option has been used.
+%\app{bib2gls} will redefine this in the .glstex file if the
+%group-level setting is used.
+% \begin{macrocode}
+\newcommand*{\glsxtraddgroup}[2]{%
+ \ifglsxtrprintglossflatten
+ #2%
+ \else
+ \ifglshasparent{#1}{}{#2}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
%
%\begin{macro}{\printunsrtglossaryentryprocesshook}
%\changes{1.21}{2017-11-03}{new}
@@ -12064,7 +14882,7 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\printunsrtglossaryentryprocesshook}
+%\begin{macro}{\@glsxtr@printunsrtglossaryskipentry}
%\changes{1.21}{2017-11-03}{new}
% \begin{macrocode}
\newcommand*{\@glsxtr@printunsrtglossaryskipentry}{%
@@ -12152,11 +14970,18 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}%
\renewcommand*{\@glsxtrhypernameprefix}{record.#1.\csuse{theH#1}.\@gobble}%
}%
\renewcommand*{\glossarysection}[2][]{}%
- \appto\glossarypostamble{\glspar\medskip\glspar}%
+ \appto\glossarypostamble{\printunsrtglossaryunitpostskip}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\printunsrtglossaryunitpostskip}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\printunsrtglossaryunitpostskip}{\glspar\medskip\glspar}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\print@noop@unsrtglossaryunit}
%\changes{1.12}{2017-02-03}{new}
% \begin{macrocode}
@@ -12212,7 +15037,8 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}%
%formerly in \cs{@glsxtr@noidx@do}.) Now that this is no longer
%within a tabular environment, the global definitions aren't needed.
%The result is now stored in \cs{@glsxtr@groupheading}, which will
-%be empty if no heading is required.
+%be empty if no heading is required. The current hierarchical level
+%must have first been saved to \cs{glscurrententrylevel}.
% \begin{macrocode}
\newcommand*{\@glsxtr@checkgroup}[1]{%
\def\@glsxtr@groupheading{}%
@@ -12228,20 +15054,56 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}%
\protected@edef\@glo@thislettergrp{%
\csuse{glo@\glsdetoklabel{#1}@\glsxtrgroupfield}}%
}%
- \ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}%
+% \end{macrocode}
+%Need to keep track of the current group for the current level.
+% \begin{macrocode}
+ \ifcsundef{@gls@currentlettergroup\romannumeral\glscurrententrylevel}%
+ {\csdef{@gls@currentlettergroup\romannumeral\glscurrententrylevel}{}}{}%
+% \end{macrocode}
+%Has the group label changed for the current level?
+% \begin{macrocode}
+ \ifcsequal{@glo@thislettergrp}{@gls@currentlettergroup\romannumeral\glscurrententrylevel}%
{}%
{%
- \ifdefempty{\@gls@currentlettergroup}{}%
- {\def\@glsxtr@groupheading{\glsgroupskip}}%
- \protected@eappto\@glsxtr@groupheading{%
- \noexpand\glsgroupheading{\expandonce\@glo@thislettergrp}%
+ \ifdefempty\@glo@thislettergrp
+ {}%
+ {%
+ \ifnum\glscurrententrylevel>0\relax
+ \protected@eappto\@glsxtr@groupheading{%
+ \noexpand\glssubgroupheading
+ {\@gls@currentlettergroup@level}{\glscurrententrylevel}%
+ {\csuse{glo@\glsdetoklabel{#1}@parent}}%
+ {\expandonce\@glo@thislettergrp}%
+ }%
+ \else
+ \ifdefempty{\@gls@currentlettergroup}{}%
+ {%
+ \def\@glsxtr@groupheading{\glsgroupskip}%
+ }%
+ \protected@eappto\@glsxtr@groupheading{%
+ \noexpand\glsgroupheading{\expandonce\@glo@thislettergrp}%
+ }%
+ \fi
+ \let\@gls@currentlettergroup@level\glscurrententrylevel
+ \cslet{@gls@currentlettergroup\romannumeral\glscurrententrylevel}\@glo@thislettergrp
}%
}%
- \let\@gls@currentlettergroup\@glo@thislettergrp
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glssubgroupheading}
+%\begin{definition}
+%\cs{glssubgroupheading}\marg{previous level}\marg{level}\marg{parent}\marg{group label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+%Default definition uses the same format as the top-level heading.
+%Note that this won't include the group skip.
+% \begin{macrocode}
+\newcommand*{\glssubgroupheading}[4]{\glsgroupheading{#4}}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GlsXtrLocationField}
%\changes{1.37}{2018-11-30}{new}
%Stores the internal name of the location field.
@@ -12254,7 +15116,7 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}%
%\changes{1.11}{2017-01-19}{new}
%Minor modification of \cs{@gls@noidx@do} to check for location
%field if present, but also need to check for the \gloskey{group}
-%field.
+%field and flatten option.
% \begin{macrocode}
\newcommand{\@glsxtr@noidx@do}[1]{%
\ifglsentryexists{#1}%
@@ -12265,7 +15127,11 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}%
% Use level number to determine whether or not this entry has a
% parent.
% \begin{macrocode}
- \gls@level=\numexpr\csuse{glo@\glsdetoklabel{#1}@level}+\@glsxtr@leveloffset\relax
+ \ifglsxtrprintglossflatten
+ \gls@level=\@glsxtr@leveloffset\relax
+ \else
+ \gls@level=\numexpr\csuse{glo@\glsdetoklabel{#1}@level}+\@glsxtr@leveloffset\relax
+ \fi
\ifnum\gls@level>0
\let\@glsxtr@ifischild\@firstoftwo
\else
@@ -12281,16 +15147,27 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}%
{%
\ifdefvoid{\@gls@location}%
{%
- \ifdefvoid{\@gls@loclist}%
- {%
- \expandafter\subglossentry\expandafter{\number\gls@level}{#1}{}%
- }%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{check if location field has been changed}
+%If \cs{GlsXtrLocationField} has been changed then don't fallback on
+%\gloskey{loclist}.
+% \begin{macrocode}
+ \ifdefstring{\GlsXtrLocationField}{location}%
{%
- \expandafter\subglossentry\expandafter{\number\gls@level}{#1}%
+ \ifdefvoid{\@gls@loclist}%
{%
- \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ \expandafter\subglossentry\expandafter{\number\gls@level}{#1}{}%
+ }%
+ {%
+ \expandafter\subglossentry\expandafter{\number\gls@level}{#1}%
+ {%
+ \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ }%
}%
}%
+ {%
+ \expandafter\subglossentry\expandafter{\number\gls@level}{#1}{}%
+ }%
}%
{%
\expandafter\subglossentry\expandafter
@@ -12303,16 +15180,27 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}%
% \begin{macrocode}
\ifdefvoid{\@gls@location}%
{%
- \ifdefvoid{\@gls@loclist}
- {%
- \glossentry{#1}{}%
- }%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{check if location field has been changed}
+%If \cs{GlsXtrLocationField} has been changed then don't fallback on
+%\gloskey{loclist}.
+% \begin{macrocode}
+ \ifdefstring{\GlsXtrLocationField}{location}%
{%
- \glossentry{#1}%
+ \ifdefvoid{\@gls@loclist}
{%
- \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ \glossentry{#1}{}%
+ }%
+ {%
+ \glossentry{#1}%
+ {%
+ \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ }%
}%
}%
+ {%
+ \glossentry{#1}{}%
+ }%
}%
{%
\glossentry{#1}%
@@ -12344,6 +15232,15 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}%
%help make it unique, but it might feasibly contain
%\gloskey[glslink]{thevalue} where the value might contain commands.)
%
+%\begin{macro}{\glsxtrdoidentify}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrdoidentify}[1]{%
+ \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off{}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@glsxtr@providenewgls}
%\changes{1.37}{2018-11-30}{new}
% \begin{macrocode}
@@ -12357,11 +15254,12 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}%
%\begin{macro}{\glsxtridentifyglslike}
%\changes{1.37}{2018-11-30}{new}
%Identify the command given in the second argument for the benefit
-%of \gls{bib2gls}.
+%of \app{bib2gls} and also identify command as a blocker for
+%\cs{makefirstuc}.
% \begin{macrocode}
\newcommand{\glsxtridentifyglslike}[2]{%
- \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off
- {}%
+ \glsmfublocker{#2}%
+ \glsxtrdoidentify
{%
\@glsxtr@providenewgls
\protected@write\@auxout{}{\string\@glsxtr@newglslike{#1}{\string#2}}%
@@ -12370,10 +15268,137 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@glsxtr@providenewglsfamily}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@providenewglsfamily}{%
+ \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@newglslikefamily}[8]{}}%
+ \let\@glsxtr@providenewglsfamily\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtridentifyglsfamily}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsxtridentifyglsfamily}\marg{options}\marg{prefix}\marg{gls}\marg{glspl}\marg{Gls}\marg{Glspl}\marg{GLS}\marg{GLSpl}
+%\end{definition}
+%Identify the family of commands for the benefit
+%of \app{bib2gls} and also establishes a sentence-case mapping.
+% \begin{macrocode}
+\newcommand{\glsxtridentifyglsfamily}[8]{%
+ \glsmfuaddmap{#3}{#5}%
+ \glsmfuaddmap{#4}{#6}%
+ \glsmfublocker{#7}%
+ \glsmfublocker{#8}%
+ \glsxtrdoidentify
+ {%
+ \@glsxtr@providenewglsfamily
+ \protected@write\@auxout{}{\string\@glsxtr@newglslikefamily{\detokenize{#1}}{\detokenize{#2}}{\detokenize{#3}}{\detokenize{#4}}{\detokenize{#5}}{\detokenize{#6}}{\detokenize{#7}}{\detokenize{#8}}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@providenewglslink}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@providenewglslink}{%
+ \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@newglslink}[2]{}}%
+ \let\@glsxtr@providenewglslink\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtridentifyglslink}
+%\changes{1.49}{2022-10-14}{new}
+%Identify the command given in the second argument for the benefit
+%of \app{bib2gls} and identify the command as a blocker for
+%\cs{makefirstuc}.
+% \begin{macrocode}
+\newcommand{\glsxtridentifyglslink}[2]{%
+ \glsmfublocker{#2}%
+ \glsxtrdoidentify
+ {%
+ \@glsxtr@providenewglslink
+ \protected@write\@auxout{}{\string\@glsxtr@newglslink{#1}{\string#2}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrnewglslink}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{@glsxtrnewglslink}\oarg{options}\marg{prefix}\marg{cs}\marg{inner cs
+%name}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\@glsxtrnewglslink}[4]{%
+ \ifdef{#3}%
+ {%
+ \PackageError{glossaries-extra}{Command \string#3\space already
+defined}{}%
+ }%
+ {%
+% \end{macrocode}
+%Write information to the aux file for bib2gls.
+% \begin{macrocode}
+ \glsxtridentifyglslink{#2}{#3}%
+ \ifcsdef{@#4link@#2}%
+ {%
+ \advance\@glsxtrnewgls@inner by \@ne
+ \def\@glsxtrnewgls@innercsname{@#4link\number\@glsxtrnewgls@inner @#2}%
+ }%
+ {\def\@glsxtrnewgls@innercsname{@#4link@#2}}%
+ \expandafter\newrobustcmd\expandafter*\expandafter
+ #3\expandafter{\expandafter\@gls@hyp@opt\csname\@glsxtrnewgls@innercsname\endcsname}%
+ \ifstrempty{#1}%
+ {%
+ \expandafter\newcommand\expandafter*\csname\@glsxtrnewgls@innercsname\endcsname[2][]{%
+ \csname #4\endcsname{##1}{#2##2}%
+ }%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\csname\@glsxtrnewgls@innercsname\endcsname[2][]{%
+ \csname #4\endcsname{#1,##1}{#2##2}%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnewglslink}
+%\begin{definition}
+%\cs{glsxtrnewglslink}\oarg{options}\marg{prefix}\marg{cs}
+%\end{definition}
+%The first argument prepends to the options and the second argument is the prefix.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrnewglslink}[3][]{%
+ \@glsxtrnewglslink{#1}{#2}{#3}{@gls@@link}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnewglsdisp}
+%\begin{definition}
+%\cs{glsxtrnewglsdisp}\oarg{options}\marg{prefix}\marg{cs}
+%\end{definition}
+%The first argument prepends to the options and the second argument is the prefix.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrnewglsdisp}[3][]{%
+ \@glsxtrnewglslink{#1}{#2}{#3}{@glsdisp}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@glsxtrnewgls}
%\changes{1.21}{2017-11-03}{new}
%\begin{definition}
-%\cs{glsxtrnewgls}\oarg{options}\marg{prefix}\marg{cs}\marg{inner cs
+%\cs{@glsxtrnewgls}\oarg{options}\marg{prefix}\marg{cs}\marg{inner cs
%name}
%\end{definition}
%
@@ -12437,6 +15462,7 @@ defined}{}%
%\changes{1.21}{2017-11-03}{new}
% \begin{macrocode}
\newrobustcmd*{\glsxtrnewglslike}[6][]{%
+ \glsxtridentifyglsfamily{#1}{#2}{#3}{#4}{#5}{#6}{}{}%
\@glsxtrnewgls{#1}{#2}{#3}{gls}%
\@glsxtrnewgls{#1}{#2}{#4}{glspl}%
\@glsxtrnewgls{#1}{#2}{#5}{Gls}%
@@ -12452,6 +15478,7 @@ defined}{}%
%\changes{1.21}{2017-11-03}{new}
% \begin{macrocode}
\newrobustcmd*{\glsxtrnewGLSlike}[4][]{%
+ \glsxtridentifyglsfamily{#1}{#2}{}{}{}{}{#3}{#4}%
\@glsxtrnewgls{#1}{#2}{#3}{GLS}%
\@glsxtrnewgls{#1}{#2}{#4}{GLSpl}%
}
@@ -12473,6 +15500,7 @@ defined}{}%
%\changes{1.21}{2017-11-03}{new}
% \begin{macrocode}
\newrobustcmd*{\glsxtrnewrglslike}[6][]{%
+ \glsxtridentifyglsfamily{#1}{#2}{#3}{#4}{#5}{#6}{}{}%
\@glsxtrnewgls{#1}{#2}{#3}{rgls}%
\@glsxtrnewgls{#1}{#2}{#4}{rglspl}%
\@glsxtrnewgls{#1}{#2}{#5}{rGls}%
@@ -12486,6 +15514,7 @@ defined}{}%
%As \cs{glsxtrnewGLSlike} but for \cs{rGLS} etc.
% \begin{macrocode}
\newrobustcmd*{\glsxtrnewrGLSlike}[4][]{%
+ \glsxtridentifyglsfamily{#1}{#2}{}{}{}{}{#3}{#4}%
\@glsxtrnewgls{#1}{#2}{#3}{rGLS}%
\@glsxtrnewgls{#1}{#2}{#4}{rGLSpl}%
}
@@ -12553,6 +15582,12 @@ defined}{}%
\renewcommand*{\Glspl}{\rGlspl}%
\renewcommand*{\GLS}{\rGLS}%
\renewcommand*{\GLSpl}{\rGLSpl}%
+ \renewcommand{\shortcut@gls}{\rgls}%
+ \renewcommand{\shortcut@glspl}{\rglspl}%
+ \renewcommand{\shortcut@Gls}{\rGls}%
+ \renewcommand{\shortcut@Glspl}{\rGlspl}%
+ \renewcommand{\shortcut@GLS}{\rGLS}%
+ \renewcommand{\shortcut@GLSpl}{\rGLSpl}%
}
% \end{macrocode}
%\end{macro}
@@ -12622,6 +15657,10 @@ defined}{}%
%Save local setting.
% \begin{macrocode}
\@gls@save@glslocal
+% \end{macrocode}
+%Initialise preunset, prereset and postunset
+% \begin{macrocode}
+ \glsinitreunsets
\glsxtrinitwrgloss
\glslinkpresetkeys
\setkeys{glslink}{#1}%
@@ -12637,12 +15676,12 @@ defined}{}%
\glslinkwrcontent
{%
\ifglsxtrinitwrglossbefore
- \@do@wrglossary{#2}%
+ \glsxtr@wrglossary@encap{#2}{\@do@wrglossary{#2}}%
\fi
#3%
\ifglsxtrinitwrglossbefore
\else
- \@do@wrglossary{#2}%
+ \glsxtr@wrglossary@encap{#2}{\@do@wrglossary{#2}}%
\fi
}%
\@gls@restore@glslocal
@@ -12723,6 +15762,7 @@ defined}{}%
%\changes{1.21}{2017-11-03}{new}
% \begin{macrocode}
\newrobustcmd*{\rGls}{\@gls@hyp@opt\@rGls}
+\glsmfuaddmap{\rgls}{\rGls}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@rGls}
@@ -12752,6 +15792,7 @@ defined}{}%
%\changes{1.21}{2017-11-03}{new}
% \begin{macrocode}
\newrobustcmd*{\rGlspl}{\@gls@hyp@opt\@rGlspl}
+\glsmfuaddmap{\rglspl}{\rGlspl}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@rGlspl}
@@ -12782,6 +15823,7 @@ defined}{}%
%\changes{1.21}{2017-11-03}{new}
% \begin{macrocode}
\newrobustcmd*{\rGLS}{\@gls@hyp@opt\@rGLS}
+\glsmfublocker{\rGLS}%
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@rGLS}
@@ -12812,6 +15854,7 @@ defined}{}%
%\changes{1.21}{2017-11-03}{new}
% \begin{macrocode}
\newrobustcmd*{\rGLSpl}{\@gls@hyp@opt\@rGLSpl}
+\glsmfublocker{\rGLSpl}%
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@rGLSpl}
@@ -12886,7 +15929,7 @@ defined}{}%
%\changes{1.21}{2017-11-03}{new}
% \begin{macrocode}
\newcommand*{\rGLSformat}[2]{%
- \expandafter\mfirstucMakeUppercase\expandafter{\rglsformat{#1}{#2}}%
+ \expandafter\glsuppercase\expandafter{\rglsformat{#1}{#2}}%
}
% \end{macrocode}
%\end{macro}
@@ -12895,12 +15938,12 @@ defined}{}%
%\changes{1.21}{2017-11-03}{new}
% \begin{macrocode}
\newcommand*{\rGLSplformat}[2]{%
- \expandafter\mfirstucMakeUppercase\expandafter{\rglsplformat{#1}{#2}}%
+ \expandafter\glsuppercase\expandafter{\rglsplformat{#1}{#2}}%
}
% \end{macrocode}
%\end{macro}
%
-%\section{Link Counting}
+%\subsection{Link Counting}
%\label{sec:linkcount}
%This is different to the entry counting provided by the base
%package (which counts the number of times the first use flag is
@@ -13033,16 +16076,20 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\section{Integration with glossaries-accsupp}
+%\subsection{Integration with glossaries-accsupp}
% Provide better integration with the \sty{glossaries-accsupp}
% package. (Must be loaded before the main code of
-% \styfmt{glossaries-extra} either explicitly or through the
+% \sty{glossaries-extra} either explicitly or through the
% \pkgopt{accsupp} package option.)
%
% These commands have their definitions set according to whether
-% or not \styfmt{glossaries-extra} has been loaded.
+% or not \sty{glossaries-extra} has been loaded.
%\changes{0.5.2}{2015-12-08}{fixed typo in glossaries-accsupp and tidied up code to use
% just one \cs{@ifpackageloaded}}
+%
+%To allow for formatting commands that need to go inside all other commands
+%(such as the commands provided by \sty{soul}), also add version
+% of each command that takes a text-block command as an argument.
% \begin{macrocode}
\@ifpackageloaded{glossaries-accsupp}
{
@@ -13063,6 +16110,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtname}
+%\begin{definition}
+%\cs{glsaccessfmtname}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtname}[3]{%
+ \glsnameaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{name}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessname}
% Display the \gloskey{name} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -13078,6 +16141,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtname}
+%\begin{definition}
+%\cs{Glsaccessfmtname}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtname}[3]{%
+ \glsnameaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{name}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessname}
% Display the \gloskey{name} value (no link and no check for existence)
% converted to upper case.
@@ -13086,13 +16165,29 @@ defined}{}%
\newcommand*{\GLSaccessname}[1]{%
\glsnameaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentryname{#1}}%
+ \glsuppercase{\glsentryname{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSaccessfmtname}
+%\begin{definition}
+%\cs{GLSaccessfmtname}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtname}[3]{%
+ \glsnameaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{name}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsaccesstext}
% Display the \gloskey{text} value (no link and no check for existence).
%\changes{0.3}{2015-12-02}{new}
@@ -13107,6 +16202,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmttext}
+%\begin{definition}
+%\cs{glsaccessfmttext}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmttext}[3]{%
+ \glstextaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{text}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccesstext}
% Display the \gloskey{text} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -13122,6 +16233,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmttext}
+%\begin{definition}
+%\cs{Glsaccessfmttext}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmttext}[3]{%
+ \glstextaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{text}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccesstext}
% Display the \gloskey{text} value (no link and no check for existence)
% converted to upper case.
@@ -13130,13 +16257,29 @@ defined}{}%
\newcommand*{\GLSaccesstext}[1]{%
\glstextaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentrytext{#1}}%
+ \glsuppercase{\glsentrytext{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSaccessfmttext}
+%\begin{definition}
+%\cs{GLSaccessfmttext}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmttext}[3]{%
+ \glstextaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{text}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsaccessplural}
% Display the \gloskey{plural} value (no link and no check for existence).
%\changes{0.3}{2015-12-02}{new}
@@ -13151,6 +16294,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtplural}
+%\begin{definition}
+%\cs{glsaccessfmtplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtplural}[3]{%
+ \glspluralaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{plural}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessplural}
% Display the \gloskey{plural} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -13166,6 +16325,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtplural}
+%\begin{definition}
+%\cs{Glsaccessfmtplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtplural}[3]{%
+ \glspluralaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{plural}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessplural}
% Display the \gloskey{plural} value (no link and no check for existence)
% converted to upper case.
@@ -13174,13 +16349,29 @@ defined}{}%
\newcommand*{\GLSaccessplural}[1]{%
\glspluralaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentryplural{#1}}%
+ \glsuppercase{\glsentryplural{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSaccessfmtplural}
+%\begin{definition}
+%\cs{GLSaccessfmtplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtplural}[3]{%
+ \glspluralaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{plural}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsaccessfirst}
% Display the \gloskey{first} value (no link and no check for existence).
%\changes{0.3}{2015-12-02}{new}
@@ -13195,6 +16386,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtfirst}
+%\begin{definition}
+%\cs{glsaccessfmtfirst}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtfirst}[3]{%
+ \glsfirstaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{first}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessfirst}
% Display the \gloskey{first} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -13210,6 +16417,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtfirst}
+%\begin{definition}
+%\cs{Glsaccessfmtfirst}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtfirst}[3]{%
+ \glsfirstaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{first}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessfirst}
% Display the \gloskey{first} value (no link and no check for existence)
% converted to upper case.
@@ -13218,13 +16441,29 @@ defined}{}%
\newcommand*{\GLSaccessfirst}[1]{%
\glsfirstaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentryfirst{#1}}%
+ \glsuppercase{\glsentryfirst{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSaccessfmtfirst}
+%\begin{definition}
+%\cs{GLSaccessfmtfirst}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtfirst}[3]{%
+ \glsfirstaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{first}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsaccessfirstplural}
% Display the \gloskey{firstplural} value (no link and no check for existence).
%\changes{0.3}{2015-12-02}{new}
@@ -13239,6 +16478,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtfirstplural}
+%\begin{definition}
+%\cs{glsaccessfmtfirstplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtfirstplural}[3]{%
+ \glsfirstpluralaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{firstpl}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessfirstplural}
% Display the \gloskey{firstplural} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -13254,6 +16509,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtfirstplural}
+%\begin{definition}
+%\cs{Glsaccessfmtfirstplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtfirstplural}[3]{%
+ \glsfirstpluralaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{firstpl}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessfirstplural}
% Display the \gloskey{firstplural} value (no link and no check for existence)
% converted to upper case.
@@ -13262,13 +16533,29 @@ defined}{}%
\newcommand*{\GLSaccessfirstplural}[1]{%
\glsfirstpluralaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentryfirstplural{#1}}%
+ \glsuppercase{\glsentryfirstplural{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSaccessfmtfirstplural}
+%\begin{definition}
+%\cs{GLSaccessfmtfirstplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtfirstplural}[3]{%
+ \glsfirstpluralaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{firstpl}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsaccesssymbol}
% Display the \gloskey{symbol} value (no link and no check for existence).
%\changes{0.3}{2015-12-02}{new}
@@ -13283,6 +16570,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtsymbol}
+%\begin{definition}
+%\cs{glsaccessfmtsymbol}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtsymbol}[3]{%
+ \glssymbolaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{symbol}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccesssymbol}
% Display the \gloskey{symbol} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -13298,6 +16601,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtsymbol}
+%\begin{definition}
+%\cs{Glsaccessfmtsymbol}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtsymbol}[3]{%
+ \glssymbolaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{symbol}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccesssymbol}
% Display the \gloskey{symbol} value (no link and no check for existence)
% converted to upper case.
@@ -13306,13 +16625,29 @@ defined}{}%
\newcommand*{\GLSaccesssymbol}[1]{%
\glssymbolaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentrysymbol{#1}}%
+ \glsuppercase{\glsentrysymbol{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSaccessfmtsymbol}
+%\begin{definition}
+%\cs{GLSaccessfmtsymbol}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtsymbol}[3]{%
+ \glssymbolaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{symbol}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsaccesssymbolplural}
% Display the \gloskey{symbolplural} value (no link and no check for existence).
%\changes{0.3}{2015-12-02}{new}
@@ -13327,6 +16662,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtsymbolplural}
+%\begin{definition}
+%\cs{glsaccessfmtsymbolplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtsymbolplural}[3]{%
+ \glssymbolpluralaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{symbolplural}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccesssymbolplural}
% Display the \gloskey{symbolplural} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -13342,6 +16693,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtsymbolplural}
+%\begin{definition}
+%\cs{Glsaccessfmtsymbolplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtsymbolplural}[3]{%
+ \glssymbolpluralaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{symbolplural}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccesssymbolplural}
% Display the \gloskey{symbolplural} value (no link and no check for existence)
% converted to upper case.
@@ -13350,13 +16717,29 @@ defined}{}%
\newcommand*{\GLSaccesssymbolplural}[1]{%
\glssymbolpluralaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentrysymbolplural{#1}}%
+ \glsuppercase{\glsentrysymbolplural{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSaccessfmtsymbolplural}
+%\begin{definition}
+%\cs{GLSaccessfmtsymbolplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtsymbolplural}[3]{%
+ \glssymbolpluralaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{symbolplural}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsaccessdesc}
% Display the \gloskey{desc} value (no link and no check for existence).
%\changes{0.3}{2015-12-02}{new}
@@ -13371,6 +16754,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtdesc}
+%\begin{definition}
+%\cs{glsaccessfmtdesc}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtdesc}[3]{%
+ \glsdescaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{desc}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessdesc}
% Display the \gloskey{desc} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -13386,6 +16785,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtdesc}
+%\begin{definition}
+%\cs{Glsaccessfmtdesc}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtdesc}[3]{%
+ \glsdescaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{desc}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessdesc}
% Display the \gloskey{desc} value (no link and no check for existence)
% converted to upper case.
@@ -13394,13 +16809,29 @@ defined}{}%
\newcommand*{\GLSaccessdesc}[1]{%
\glsdescriptionaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentrydesc{#1}}%
+ \glsuppercase{\glsentrydesc{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSaccessfmtdesc}
+%\begin{definition}
+%\cs{GLSaccessfmtdesc}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtdesc}[3]{%
+ \glsdescaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{desc}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsaccessdescplural}
% Display the \gloskey{descplural} value (no link and no check for existence).
%\changes{0.3}{2015-12-02}{new}
@@ -13415,6 +16846,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtdescplural}
+%\begin{definition}
+%\cs{glsaccessfmtdescplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtdescplural}[3]{%
+ \glsdescpluralaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{descplural}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessdescplural}
% Display the \gloskey{descplural} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -13430,6 +16877,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtdescplural}
+%\begin{definition}
+%\cs{Glsaccessfmtdescplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtdescplural}[3]{%
+ \glsdescpluralaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{descplural}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessdescplural}
% Display the \gloskey{descplural} value (no link and no check for existence)
% converted to upper case.
@@ -13438,13 +16901,29 @@ defined}{}%
\newcommand*{\GLSaccessdescplural}[1]{%
\glsdescriptionpluralaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentrydescplural{#1}}%
+ \glsuppercase{\glsentrydescplural{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSaccessfmtdescplural}
+%\begin{definition}
+%\cs{GLSaccessfmtdescplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtdescplural}[3]{%
+ \glsdescpluralaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{descplural}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsaccessshort}
% Display the short form (no link and no check for existence).
%\changes{0.3}{2015-12-02}{new}
@@ -13459,6 +16938,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtshort}
+%\begin{definition}
+%\cs{glsaccessfmtshort}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtshort}[3]{%
+ \glsshortaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{short}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessshort}
% Display the short form with first letter converted to uppercase
% (no link and no check for existence).
@@ -13474,6 +16969,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtshort}
+%\begin{definition}
+%\cs{Glsaccessfmtshort}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtshort}[3]{%
+ \glsshortaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{short}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessshort}
% Display the \gloskey{short} value (no link and no check for existence)
% converted to upper case.
@@ -13482,13 +16993,29 @@ defined}{}%
\newcommand*{\GLSaccessshort}[1]{%
\glsshortaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentryshort{#1}}%
+ \glsuppercase{\glsentryshort{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSaccessfmtshort}
+%\begin{definition}
+%\cs{GLSaccessfmtshort}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtshort}[3]{%
+ \glsshortaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{short}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsaccessshortpl}
% Display the short plural form (no link and no check for existence).
%\changes{0.3}{2015-12-02}{new}
@@ -13503,6 +17030,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtshortpl}
+%\begin{definition}
+%\cs{glsaccessfmtshortpl}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtshortpl}[3]{%
+ \glsshortpluralaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{shortpl}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessshortpl}
% Display the short plural form with first letter converted to
% uppercase (no link and no check for existence).
@@ -13518,6 +17061,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtshortpl}
+%\begin{definition}
+%\cs{Glsaccessfmtshortpl}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtshortpl}[3]{%
+ \glsshortpluralaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{shortpl}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessshortpl}
% Display the \gloskey{shortplural} value (no link and no check for existence)
% converted to upper case.
@@ -13526,13 +17085,29 @@ defined}{}%
\newcommand*{\GLSaccessshortpl}[1]{%
\glsshortpluralaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentryshortpl{#1}}%
+ \glsuppercase{\glsentryshortpl{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSaccessfmtshortpl}
+%\begin{definition}
+%\cs{GLSaccessfmtshortpl}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtshortpl}[3]{%
+ \glsshortpluralaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{shortpl}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsaccesslong}
% Display the long form (no link and no check for existence).
%\changes{0.3}{2015-12-02}{new}
@@ -13543,17 +17118,48 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtlong}
+%\begin{definition}
+%\cs{glsaccessfmtlong}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtlong}[3]{%
+ \glslongaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{long}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccesslong}
% Display the long form (no link and no check for existence).
%\changes{0.3}{2015-12-02}{new}
% \begin{macrocode}
-
\newcommand*{\Glsaccesslong}[1]{%
\glslongaccessdisplay{\Glsentrylong{#1}}{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtlong}
+%\begin{definition}
+%\cs{Glsaccessfmtlong}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtlong}[3]{%
+ \glslongaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{long}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccesslong}
% Display the \gloskey{long} value (no link and no check for existence)
% converted to upper case.
@@ -13562,13 +17168,29 @@ defined}{}%
\newcommand*{\GLSaccesslong}[1]{%
\glslongaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentrylong{#1}}%
+ \glsuppercase{\glsentrylong{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSaccessfmtlong}
+%\begin{definition}
+%\cs{GLSaccessfmtlong}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtlong}[3]{%
+ \glslongaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{long}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsaccesslongpl}
% Display the long plural form (no link and no check for existence).
%\changes{0.5.2}{2015-12-08}{new}
@@ -13579,6 +17201,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtlongpl}
+%\begin{definition}
+%\cs{glsaccessfmtlongpl}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtlongpl}[3]{%
+ \glslongpluralaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{longpl}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccesslongpl}
% Display the long plural form (no link and no check for existence).
%\changes{0.5.2}{2015-12-08}{new}
@@ -13590,6 +17228,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtlongpl}
+%\begin{definition}
+%\cs{Glsaccessfmtlongpl}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtlongpl}[3]{%
+ \glslongpluralaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{longpl}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccesslongpl}
% Display the \gloskey{longplural} value (no link and no check for existence)
% converted to upper case.
@@ -13598,14 +17252,880 @@ defined}{}%
\newcommand*{\GLSaccesslongpl}[1]{%
\glslongpluralaccessdisplay
{%
- \mfirstucMakeUppercase{\glsentrylongpl{#1}}%
+ \glsuppercase{\glsentrylongpl{#1}}%
}%
{#1}%
}
% \end{macrocode}
%\end{macro}
%
-% Keys for accessibility support.
+%\begin{macro}{\GLSaccessfmtlongpl}
+%\begin{definition}
+%\cs{GLSaccessfmtlongpl}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtlongpl}[3]{%
+ \glslongpluralaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{longpl}%
+ }%
+ {#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%The user accessibility fields were added to
+%\sty{glossaries-accsupp} v4.45 so these may not be defined.
+%
+%USER1
+%\begin{macro}{\glsaccessuseri}
+% Display the \gloskey{user1} value (no link and no check for existence).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriaccessdisplay
+ {
+ \newcommand*{\glsaccessuseri}[1]{%
+ \glsuseriaccessdisplay
+ {%
+ \glsentryuseri{#1}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\glsaccessuseri}[1]{%
+ \glsentryuseri{#1}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfmtuseri}
+%\begin{definition}
+%\cs{glsaccessfmtuseri}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriaccessdisplay
+ {
+ \newcommand*{\glsaccessfmtuseri}[3]{%
+ \glsuseriaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{useri}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\glsaccessfmtuseri}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{useri}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessuseri}
+% Display the \gloskey{user1} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriaccessdisplay
+ {
+ \newcommand*{\Glsaccessuseri}[1]{%
+ \glsuseriaccessdisplay
+ {%
+ \Glsentryuseri{#1}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\Glsaccessuseri}[1]{%
+ \Glsentryuseri{#1}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfmtuseri}
+%\begin{definition}
+%\cs{Glsaccessfmtuseri}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriaccessdisplay
+ {
+ \newcommand*{\Glsaccessfmtuseri}[3]{%
+ \glsuseriaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{useri}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\Glsaccessfmtuseri}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{useri}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessuseri}
+% Display the \gloskey{user1} value (no link and no check for existence)
+% converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriaccessdisplay
+ {
+ \newcommand*{\GLSaccessuseri}[1]{%
+ \glsuseriaccessdisplay
+ {%
+ \glsuppercase{\glsentryuseri{#1}}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\GLSaccessuseri}[1]{%
+ \glsuppercase{\glsentryuseri{#1}}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtuseri}
+%\begin{definition}
+%\cs{GLSaccessfmtuseri}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriaccessdisplay
+ {
+ \newcommand*{\GLSaccessfmtuseri}[3]{%
+ \glsuseriaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{useri}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\GLSaccessfmtuseri}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{useri}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%USER2
+%\begin{macro}{\glsaccessuserii}
+% Display the \gloskey{user2} value (no link and no check for existence).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriiaccessdisplay
+ {
+ \newcommand*{\glsaccessuserii}[1]{%
+ \glsuseriiaccessdisplay
+ {%
+ \glsentryuserii{#1}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\glsaccessuserii}[1]{%
+ \glsentryuserii{#1}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfmtuserii}
+%\begin{definition}
+%\cs{glsaccessfmtuserii}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriiaccessdisplay
+ {
+ \newcommand*{\glsaccessfmtuserii}[3]{%
+ \glsuseriiaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{userii}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\glsaccessfmtuserii}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{userii}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessuserii}
+% Display the \gloskey{user2} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriiaccessdisplay
+ {
+ \newcommand*{\Glsaccessuserii}[1]{%
+ \glsuseriiaccessdisplay
+ {%
+ \Glsentryuserii{#1}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\Glsaccessuserii}[1]{%
+ \Glsentryuserii{#1}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfmtuserii}
+%\begin{definition}
+%\cs{Glsaccessfmtuserii}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriiaccessdisplay
+ {
+ \newcommand*{\Glsaccessfmtuserii}[3]{%
+ \glsuseriiaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{userii}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\Glsaccessfmtuserii}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{userii}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessuserii}
+% Display the \gloskey{user2} value (no link and no check for existence)
+% converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriiaccessdisplay
+ {
+ \newcommand*{\GLSaccessuserii}[1]{%
+ \glsuseriiaccessdisplay
+ {%
+ \glsuppercase{\glsentryuserii{#1}}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\GLSaccessuserii}[1]{%
+ \glsuppercase{\glsentryuserii{#1}}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtuserii}
+%\begin{definition}
+%\cs{GLSaccessfmtuserii}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriiaccessdisplay
+ {
+ \newcommand*{\GLSaccessfmtuserii}[3]{%
+ \glsuseriiaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{userii}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\GLSaccessfmtuserii}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{userii}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%USER3
+%\begin{macro}{\glsaccessuseriii}
+% Display the \gloskey{user3} value (no link and no check for existence).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriiiaccessdisplay
+ {
+ \newcommand*{\glsaccessuseriii}[1]{%
+ \glsuseriiiaccessdisplay
+ {%
+ \glsentryuseriii{#1}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\glsaccessuseriii}[1]{%
+ \glsentryuseriii{#1}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfmtuseriii}
+%\begin{definition}
+%\cs{glsaccessfmtuseriii}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriiiaccessdisplay
+ {
+ \newcommand*{\glsaccessfmtuseriii}[3]{%
+ \glsuseriiiaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{useriii}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\glsaccessfmtuseriii}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{useriii}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessuseriii}
+% Display the \gloskey{user3} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriiiaccessdisplay
+ {
+ \newcommand*{\Glsaccessuseriii}[1]{%
+ \glsuseriiiaccessdisplay
+ {%
+ \Glsentryuseriii{#1}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\Glsaccessuseriii}[1]{%
+ \Glsentryuseriii{#1}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfmtuseriii}
+%\begin{definition}
+%\cs{Glsaccessfmtuseriii}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriiiaccessdisplay
+ {
+ \newcommand*{\Glsaccessfmtuseriii}[3]{%
+ \glsuseriiiaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{useriii}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\Glsaccessfmtuseriii}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{useriii}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessuseriii}
+% Display the \gloskey{user3} value (no link and no check for existence)
+% converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriiiaccessdisplay
+ {
+ \newcommand*{\GLSaccessuseriii}[1]{%
+ \glsuseriiiaccessdisplay
+ {%
+ \glsuppercase{\glsentryuseriii{#1}}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\GLSaccessuseriii}[1]{%
+ \glsuppercase{\glsentryuseriii{#1}}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtuseriii}
+%\begin{definition}
+%\cs{GLSaccessfmtuseriii}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuseriiiaccessdisplay
+ {
+ \newcommand*{\GLSaccessfmtuseriii}[3]{%
+ \glsuseriiiaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{useriii}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\GLSaccessfmtuseriii}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{useriii}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%USER4
+%\begin{macro}{\glsaccessuseriv}
+% Display the \gloskey{user4} value (no link and no check for existence).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuserivaccessdisplay
+ {
+ \newcommand*{\glsaccessuseriv}[1]{%
+ \glsuserivaccessdisplay
+ {%
+ \glsentryuseriv{#1}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\glsaccessuseriv}[1]{%
+ \glsentryuseriv{#1}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfmtuseriv}
+%\begin{definition}
+%\cs{glsaccessfmtuseriv}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuserivaccessdisplay
+ {
+ \newcommand*{\glsaccessfmtuseriv}[3]{%
+ \glsuserivaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{useriv}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\glsaccessfmtuseriv}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{useriv}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessuseriv}
+% Display the \gloskey{user4} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuserivaccessdisplay
+ {
+ \newcommand*{\Glsaccessuseriv}[1]{%
+ \glsuserivaccessdisplay
+ {%
+ \Glsentryuseriv{#1}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\Glsaccessuseriv}[1]{%
+ \Glsentryuseriv{#1}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfmtuseriv}
+%\begin{definition}
+%\cs{Glsaccessfmtuseriv}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuserivaccessdisplay
+ {
+ \newcommand*{\Glsaccessfmtuseriv}[3]{%
+ \glsuserivaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{useriv}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\Glsaccessfmtuseriv}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{useriv}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessuseriv}
+% Display the \gloskey{user4} value (no link and no check for existence)
+% converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuserivaccessdisplay
+ {
+ \newcommand*{\GLSaccessuseriv}[1]{%
+ \glsuserivaccessdisplay
+ {%
+ \glsuppercase{\glsentryuseriv{#1}}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\GLSaccessuseriv}[1]{%
+ \glsuppercase{\glsentryuseriv{#1}}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtuseriv}
+%\begin{definition}
+%\cs{GLSaccessfmtuseriv}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuserivaccessdisplay
+ {
+ \newcommand*{\GLSaccessfmtuseriv}[3]{%
+ \glsuserivaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{useriv}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\GLSaccessfmtuseriv}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{useriv}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%USER5
+%\begin{macro}{\glsaccessuserv}
+% Display the \gloskey{user5} value (no link and no check for existence).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuservaccessdisplay
+ {
+ \newcommand*{\glsaccessuserv}[1]{%
+ \glsuservaccessdisplay
+ {%
+ \glsentryuserv{#1}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\glsaccessuserv}[1]{%
+ \glsentryuserv{#1}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfmtuserv}
+%\begin{definition}
+%\cs{glsaccessfmtuserv}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuservaccessdisplay
+ {
+ \newcommand*{\glsaccessfmtuserv}[3]{%
+ \glsuservaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{userv}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\glsaccessfmtuserv}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{userv}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessuserv}
+% Display the \gloskey{user5} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuservaccessdisplay
+ {
+ \newcommand*{\Glsaccessuserv}[1]{%
+ \glsuservaccessdisplay
+ {%
+ \Glsentryuserv{#1}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\Glsaccessuserv}[1]{%
+ \Glsentryuserv{#1}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfmtuserv}
+%\begin{definition}
+%\cs{Glsaccessfmtuserv}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuservaccessdisplay
+ {
+ \newcommand*{\Glsaccessfmtuserv}[3]{%
+ \glsuservaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{userv}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\Glsaccessfmtuserv}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{userv}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessuserv}
+% Display the \gloskey{user5} value (no link and no check for existence)
+% converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuservaccessdisplay
+ {
+ \newcommand*{\GLSaccessuserv}[1]{%
+ \glsuservaccessdisplay
+ {%
+ \glsuppercase{\glsentryuserv{#1}}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\GLSaccessuserv}[1]{%
+ \glsuppercase{\glsentryuserv{#1}}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtuserv}
+%\begin{definition}
+%\cs{GLSaccessfmtuserv}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuservaccessdisplay
+ {
+ \newcommand*{\GLSaccessfmtuserv}[3]{%
+ \glsuservaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{userv}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\GLSaccessfmtuserv}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{userv}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%USER6
+%\begin{macro}{\glsaccessuservi}
+% Display the \gloskey{user6} value (no link and no check for existence).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuserviaccessdisplay
+ {
+ \newcommand*{\glsaccessuservi}[1]{%
+ \glsuserviaccessdisplay
+ {%
+ \glsentryuservi{#1}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\glsaccessuservi}[1]{%
+ \glsentryuservi{#1}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfmtuservi}
+%\begin{definition}
+%\cs{glsaccessfmtuservi}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuserviaccessdisplay
+ {
+ \newcommand*{\glsaccessfmtuservi}[3]{%
+ \glsuserviaccessdisplay
+ {%
+ \glsfmtfield{#1}{#2}{#3}{uservi}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\glsaccessfmtuservi}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{uservi}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessuservi}
+% Display the \gloskey{user6} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuserviaccessdisplay
+ {
+ \newcommand*{\Glsaccessuservi}[1]{%
+ \glsuserviaccessdisplay
+ {%
+ \Glsentryuservi{#1}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\Glsaccessuservi}[1]{%
+ \Glsentryuservi{#1}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfmtuservi}
+%\begin{definition}
+%\cs{Glsaccessfmtuservi}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuserviaccessdisplay
+ {
+ \newcommand*{\Glsaccessfmtuservi}[3]{%
+ \glsuserviaccessdisplay
+ {%
+ \Glsfmtfield{#1}{#2}{#3}{uservi}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\Glsaccessfmtuservi}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{uservi}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessuservi}
+% Display the \gloskey{user6} value (no link and no check for existence)
+% converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuserviaccessdisplay
+ {
+ \newcommand*{\GLSaccessuservi}[1]{%
+ \glsuserviaccessdisplay
+ {%
+ \glsuppercase{\glsentryuservi{#1}}%
+ }%
+ {#1}%
+ }
+ }
+ {
+ \newcommand*{\GLSaccessuservi}[1]{%
+ \glsuppercase{\glsentryuservi{#1}}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtuservi}
+%\begin{definition}
+%\cs{GLSaccessfmtuservi}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \ifdef\glsuserviaccessdisplay
+ {
+ \newcommand*{\GLSaccessfmtuservi}[3]{%
+ \glsuserviaccessdisplay
+ {%
+ \GLSfmtfield{#1}{#2}{#3}{uservi}%
+ }%
+ {#3}%
+ }
+ }
+ {
+ \newcommand*{\GLSaccessfmtuservi}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{uservi}%
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+% Keys for accessibility support while pre-parsing in
+% \cs{newabbreviation}.
% \begin{macrocode}
\define@key{glsxtrabbrv}{access}{%
\def\@gls@nameaccess{#1}%
@@ -13654,8 +18174,9 @@ defined}{}%
}
% \end{macrocode}
%
+%\changes{1.49}{2022-10-14}{corrected name of longpluralaccess field}
% \begin{macrocode}
- \define@key{glsxtrabbrv}{shortlonglaccess}{%
+ \define@key{glsxtrabbrv}{longpluralaccess}{%
\def\@gls@longaccesspl{#1}%
}
% \end{macrocode}
@@ -13682,19 +18203,19 @@ defined}{}%
%\end{definition}
%\changes{1.31}{2018-05-09}{new}
% \begin{macrocode}
-\newcommand*{\@gls@ifaccessattribute@set}[3]{%
- \glsifcategoryattribute{\glscategorylabel}{access#1}{true}%
- {#2}%
- {%
- \glsifcategoryattribute{\glscategorylabel}{access#1}{false}%
- {#3}%
+ \newcommand*{\@gls@ifaccessattribute@set}[3]{%
+ \glsifcategoryattribute{\glscategorylabel}{access#1}{true}%
+ {#2}%
{%
- \glsifcategoryattribute{\glscategorylabel}{#1}{true}%
- {#2}%
+ \glsifcategoryattribute{\glscategorylabel}{access#1}{false}%
{#3}%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{#1}{true}%
+ {#2}%
+ {#3}%
+ }%
}%
- }%
-}
+ }
% \end{macrocode}
%\end{macro}
%
@@ -13707,18 +18228,22 @@ defined}{}%
%
%\begin{macro}{\glsdefaultshortaccess}
%\changes{1.42}{2020-02-03}{new}
+%\changes{1.49}{2022-10-14}{reverted to original definition}
%\begin{definition}
%\cs{glsdefaultshortaccess}\marg{long}\marg{short}
%\end{definition}
-%This command was only introduced to \sty{glossaries-accsupp} 1.42
-%so it may not be defined.
+%This command was only introduced to \sty{glossaries-accsupp} 4.45
+%so it may not be defined. This was defined to do \verb|#1 (#2)| but
+%the original definition is more appropriate, so has been reverted
+%back to the definition provided by \sty{glossaries-accsupp}.
% \begin{macrocode}
- \def\glsdefaultshortaccess#1#2{#1 (#2)}
+ \providecommand*{\glsdefaultshortaccess}[2]{#1}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\glsxtrassignactualsetup}
%\changes{1.42}{2020-02-03}{new}
+%\changes{1.49}{2022-10-14}{added \cs{glstextup}}
% \begin{macrocode}
\newcommand{\glsxtrassignactualsetup}{%
\let\@\empty
@@ -13731,43 +18256,25 @@ defined}{}%
\let\textrm\@firstofone
\let\textsf\@firstofone
\let\texttt\@firstofone
+ \let\glstextup\@firstofone
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@gls@assign@actual}
%\changes{1.42}{2020-02-03}{new}
+%\changes{1.49}{2022-10-14}{removed use of \cs{pdfstringdef}}
% \begin{macrocode}
- \ifdef\pdfstringdef
- {
- \newcommand{\@gls@assign@actual}{%
- \begingroup
- \glsxtrassignactualsetup
- \pdfstringdef\@gls@actualshort{\glsxtrorgshort}%
- \pdfstringdef\@gls@actuallong{\glsxtrorglong}%
- \pdfstringdef\@gls@actualshortpl{\@gls@shortpl}%
- \pdfstringdef\@gls@actuallongpl{\@gls@longpl}%
- \protected@edef\@gls@tmp{\endgroup
- \def\noexpand\@gls@actualshort{\expandonce\@gls@actualshort}%
- \def\noexpand\@gls@actuallong{\expandonce\@gls@actuallong}%
- \def\noexpand\@gls@actualshortpl{\expandonce\@gls@actualshortpl}%
- \def\noexpand\@gls@actuallongpl{\expandonce\@gls@actuallongpl}%
- }%
- \@gls@tmp
- }
- }
- {
- \newcommand{\@gls@assign@actual}{%
- \begingroup
- \glsxtrassignactualsetup
- \protected@edef\@gls@tmp{\endgroup
- \def\noexpand\@gls@actualshort{\glsxtrorgshort}%
- \def\noexpand\@gls@actuallong{\glsxtrorglong}%
- \def\noexpand\@gls@actualshortpl{\@gls@shortpl}%
- \def\noexpand\@gls@actuallongpl{\@gls@longpl}%
- }%
- \@gls@tmp
- }
+ \newcommand{\@gls@assign@actual}{%
+ \begingroup
+ \glsxtrassignactualsetup
+ \protected@edef\@gls@tmp{\endgroup
+ \def\noexpand\@gls@actualshort{\glsxtrorgshort}%
+ \def\noexpand\@gls@actuallong{\glsxtrorglong}%
+ \def\noexpand\@gls@actualshortpl{\@gls@shortpl}%
+ \def\noexpand\@gls@actuallongpl{\@gls@longpl}%
+ }%
+ \@gls@tmp
}
% \end{macrocode}
%\end{macro}
@@ -14022,6 +18529,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtname}
+%\begin{definition}
+%\cs{glsaccessfmtname}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtname}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{name}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessname}
% Display the \gloskey{name} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -14030,13 +18549,37 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtname}
+%\begin{definition}
+%\cs{Glsaccessfmtname}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtname}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{name}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessname}
% Display the \gloskey{name} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccessname}[1]{%
- \protect\mfirstucMakeUppercase{\glsentryname{#1}}}
+ \protect\glsuppercase{\glsentryname{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtname}
+%\begin{definition}
+%\cs{GLSaccessfmtname}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtname}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{name}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14047,6 +18590,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmttext}
+%\begin{definition}
+%\cs{glsaccessfmttext}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmttext}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{text}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccesstext}
% Display the \gloskey{text} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -14055,13 +18610,37 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmttext}
+%\begin{definition}
+%\cs{Glsaccessfmttext}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmttext}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{text}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccesstext}
% Display the \gloskey{text} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccesstext}[1]{%
- \protect\mfirstucMakeUppercase{\glsentrytext{#1}}}
+ \protect\glsuppercase{\glsentrytext{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmttext}
+%\begin{definition}
+%\cs{GLSaccessfmttext}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmttext}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{text}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14072,6 +18651,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtplural}
+%\begin{definition}
+%\cs{glsaccessfmtplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtplural}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{plural}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessplural}
% Display the \gloskey{plural} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -14080,13 +18671,37 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtplural}
+%\begin{definition}
+%\cs{Glsaccessfmtplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtplural}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{plural}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessplural}
% Display the \gloskey{plural} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccessplural}[1]{%
- \protect\mfirstucMakeUppercase{\glsentryplural{#1}}}
+ \protect\glsuppercase{\glsentryplural{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtplural}
+%\begin{definition}
+%\cs{GLSaccessfmtplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtplural}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{plural}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14097,6 +18712,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtfirst}
+%\begin{definition}
+%\cs{glsaccessfmtfirst}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtfirst}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{first}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessfirst}
% Display the \gloskey{first} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -14105,13 +18732,37 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtfirst}
+%\begin{definition}
+%\cs{Glsaccessfmtfirst}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtfirst}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{first}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessfirst}
% Display the \gloskey{first} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccessfirst}[1]{%
- \protect\mfirstucMakeUppercase{\glsentryfirst{#1}}}
+ \protect\glsuppercase{\glsentryfirst{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtfirst}
+%\begin{definition}
+%\cs{GLSaccessfmtfirst}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtfirst}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{first}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14122,6 +18773,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtfirstplural}
+%\begin{definition}
+%\cs{glsaccessfmtfirstplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtfirstplural}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{firstpl}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessfirstplural}
% Display the \gloskey{firstplural} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -14130,13 +18793,37 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtfirstplural}
+%\begin{definition}
+%\cs{Glsaccessfmtfirstplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtfirstplural}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{firstpl}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessfirstplural}
% Display the \gloskey{firstplural} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccessfirstplural}[1]{%
- \protect\mfirstucMakeUppercase{\glsentryfirstplural{#1}}}
+ \protect\glsuppercase{\glsentryfirstplural{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtfirstplural}
+%\begin{definition}
+%\cs{GLSaccessfmtfirstplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtfirstplural}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{firstpl}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14147,6 +18834,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtsymbol}
+%\begin{definition}
+%\cs{glsaccessfmtsymbol}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtsymbol}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{symbol}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccesssymbol}
% Display the \gloskey{symbol} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -14155,13 +18854,37 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtsymbol}
+%\begin{definition}
+%\cs{Glsaccessfmtsymbol}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtsymbol}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{symbol}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccesssymbol}
% Display the \gloskey{symbol} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccesssymbol}[1]{%
- \protect\mfirstucMakeUppercase{\glsentrysymbol{#1}}}
+ \protect\glsuppercase{\glsentrysymbol{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtsymbol}
+%\begin{definition}
+%\cs{GLSaccessfmtsymbol}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtsymbol}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{symbol}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14172,6 +18895,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtsymbolplural}
+%\begin{definition}
+%\cs{glsaccessfmtsymbolplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtsymbolplural}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{symbolplural}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccesssymbolplural}
% Display the \gloskey{symbolplural} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -14180,13 +18915,37 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtsymbolplural}
+%\begin{definition}
+%\cs{Glsaccessfmtsymbolplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtsymbolplural}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{symbolplural}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccesssymbolplural}
% Display the \gloskey{symbolplural} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccesssymbolplural}[1]{%
- \protect\mfirstucMakeUppercase{\glsentrysymbolplural{#1}}}
+ \protect\glsuppercase{\glsentrysymbolplural{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtsymbolplural}
+%\begin{definition}
+%\cs{GLSaccessfmtsymbolplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtsymbolplural}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{symbolplural}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14197,6 +18956,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtdesc}
+%\begin{definition}
+%\cs{glsaccessfmtdesc}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtdesc}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{desc}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessdesc}
% Display the \gloskey{desc} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -14205,13 +18976,37 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtdesc}
+%\begin{definition}
+%\cs{Glsaccessfmtdesc}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtdesc}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{desc}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessdesc}
% Display the \gloskey{desc} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccessdesc}[1]{%
- \protect\mfirstucMakeUppercase{\glsentrydesc{#1}}}
+ \protect\glsuppercase{\glsentrydesc{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtdesc}
+%\begin{definition}
+%\cs{GLSaccessfmtdesc}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtdesc}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{desc}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14222,6 +19017,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtdescplural}
+%\begin{definition}
+%\cs{glsaccessfmtdescplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtdescplural}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{descplural}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessdescplural}
% Display the \gloskey{descplural} value (no link and no check for existence)
% with the first letter converted to upper case.
@@ -14230,13 +19037,37 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtdescplural}
+%\begin{definition}
+%\cs{Glsaccessfmtdescplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtdescplural}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{descplural}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessdescplural}
% Display the \gloskey{descplural} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccessdescplural}[1]{%
- \protect\mfirstucMakeUppercase{\glsentrydescplural{#1}}}
+ \protect\glsuppercase{\glsentrydescplural{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtdescplural}
+%\begin{definition}
+%\cs{GLSaccessfmtdescplural}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtdescplural}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{descplural}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14247,6 +19078,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtshort}
+%\begin{definition}
+%\cs{glsaccessfmtshort}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtshort}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{short}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessshort}
% Display the short form with first letter converted to uppercase
% (no link and no check for existence).
@@ -14255,13 +19098,37 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtshort}
+%\begin{definition}
+%\cs{Glsaccessfmtshort}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtshort}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{short}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessshort}
% Display the \gloskey{short} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccessshort}[1]{%
- \protect\mfirstucMakeUppercase{\glsentryshort{#1}}}
+ \protect\glsuppercase{\glsentryshort{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtshort}
+%\begin{definition}
+%\cs{GLSaccessfmtshort}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtshort}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{short}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14272,6 +19139,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtshortpl}
+%\begin{definition}
+%\cs{glsaccessfmtshortpl}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtshortpl}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{shortpl}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccessshortpl}
% Display the short plural form with first letter converted to
% uppercase (no link and no check for existence).
@@ -14280,13 +19159,37 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtshortpl}
+%\begin{definition}
+%\cs{Glsaccessfmtshortpl}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtshortpl}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{shortpl}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccessshortpl}
% Display the \gloskey{shortplural} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccessshortpl}[1]{%
- \protect\mfirstucMakeUppercase{\glsentryshortpl{#1}}}
+ \protect\glsuppercase{\glsentryshortpl{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtshortpl}
+%\begin{definition}
+%\cs{GLSaccessfmtshortpl}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtshortpl}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{shortpl}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14297,6 +19200,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtlong}
+%\begin{definition}
+%\cs{glsaccessfmtlong}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtlong}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{long}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccesslong}
% Display the long form (no link and no check for existence).
% \begin{macrocode}
@@ -14304,13 +19219,37 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtlong}
+%\begin{definition}
+%\cs{Glsaccessfmtlong}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtlong}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{long}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccesslong}
% Display the \gloskey{long} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccesslong}[1]{%
- \protect\mfirstucMakeUppercase{\glsentrylong{#1}}}
+ \protect\glsuppercase{\glsentrylong{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtlong}
+%\begin{definition}
+%\cs{GLSaccessfmtlong}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtlong}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{long}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14321,6 +19260,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsaccessfmtlongpl}
+%\begin{definition}
+%\cs{glsaccessfmtlongpl}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtlongpl}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{longpl}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\Glsaccesslongpl}
% Display the long plural form (no link and no check for existence).
% \begin{macrocode}
@@ -14328,13 +19279,421 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsaccessfmtlongpl}
+%\begin{definition}
+%\cs{Glsaccessfmtlongpl}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtlongpl}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{longpl}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GLSaccesslongpl}
% Display the \gloskey{longplural} value (no link and no check for existence).
% converted to upper case.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
\newcommand*{\GLSaccesslongpl}[1]{%
- \protect\mfirstucMakeUppercase{\glsentrylongpl{#1}}}
+ \protect\glsuppercase{\glsentrylongpl{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtlongpl}
+%\begin{definition}
+%\cs{GLSaccessfmtlongpl}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtlongpl}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{longpl}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%USER1
+%\begin{macro}{\glsaccessuseri}
+% Display the \gloskey{user1} value (no link and no check for existence).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessuseri}[1]{\glsentryuseri{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfmtuseri}
+%\begin{definition}
+%\cs{glsaccessfmtuseri}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtuseri}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{useri}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessuseri}
+% Display the \gloskey{user1} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessuseri}[1]{\Glsentryuseri{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfmtuseri}
+%\begin{definition}
+%\cs{Glsaccessfmtuseri}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtuseri}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{useri}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessuseri}
+% Display the \gloskey{user1} value (no link and no check for existence).
+% converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessuseri}[1]{%
+ \protect\glsuppercase{\glsentryuseri{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtuseri}
+%\begin{definition}
+%\cs{GLSaccessfmtuseri}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtuseri}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{useri}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%USER2
+%\begin{macro}{\glsaccessuserii}
+% Display the \gloskey{user2} value (no link and no check for existence).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessuserii}[1]{\glsentryuserii{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfmtuserii}
+%\begin{definition}
+%\cs{glsaccessfmtuserii}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtuserii}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{userii}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessuserii}
+% Display the \gloskey{user2} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessuserii}[1]{\Glsentryuserii{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfmtuserii}
+%\begin{definition}
+%\cs{Glsaccessfmtuserii}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtuserii}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{userii}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessuserii}
+% Display the \gloskey{user2} value (no link and no check for existence).
+% converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessuserii}[1]{%
+ \protect\glsuppercase{\glsentryuserii{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtuserii}
+%\begin{definition}
+%\cs{GLSaccessfmtuserii}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtuserii}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{userii}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%USER3
+%\begin{macro}{\glsaccessuseriii}
+% Display the \gloskey{user3} value (no link and no check for existence).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessuseriii}[1]{\glsentryuseriii{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfmtuseriii}
+%\begin{definition}
+%\cs{glsaccessfmtuseriii}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtuseriii}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{useriii}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessuseriii}
+% Display the \gloskey{user3} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessuseriii}[1]{\Glsentryuseriii{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfmtuseriii}
+%\begin{definition}
+%\cs{Glsaccessfmtuseriii}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtuseriii}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{useriii}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessuseriii}
+% Display the \gloskey{user3} value (no link and no check for existence).
+% converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessuseriii}[1]{%
+ \protect\glsuppercase{\glsentryuseriii{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtuseriii}
+%\begin{definition}
+%\cs{GLSaccessfmtuseriii}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtuseriii}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{useriii}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%USER4
+%\begin{macro}{\glsaccessuseriv}
+% Display the \gloskey{user4} value (no link and no check for existence).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessuseriv}[1]{\glsentryuseriv{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfmtuseriv}
+%\begin{definition}
+%\cs{glsaccessfmtuseriv}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtuseriv}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{useriv}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessuseriv}
+% Display the \gloskey{user4} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessuseriv}[1]{\Glsentryuseriv{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfmtuseriv}
+%\begin{definition}
+%\cs{Glsaccessfmtuseriv}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtuseriv}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{useriv}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessuseriv}
+% Display the \gloskey{user4} value (no link and no check for existence).
+% converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessuseriv}[1]{%
+ \protect\glsuppercase{\glsentryuseriv{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtuseriv}
+%\begin{definition}
+%\cs{GLSaccessfmtuseriv}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtuseriv}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{useriv}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%USER5
+%\begin{macro}{\glsaccessuserv}
+% Display the \gloskey{user5} value (no link and no check for existence).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessuserv}[1]{\glsentryuserv{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfmtuserv}
+%\begin{definition}
+%\cs{glsaccessfmtuserv}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtuserv}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{userv}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessuserv}
+% Display the \gloskey{user5} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessuserv}[1]{\Glsentryuserv{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfmtuserv}
+%\begin{definition}
+%\cs{Glsaccessfmtuserv}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtuserv}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{userv}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessuserv}
+% Display the \gloskey{user5} value (no link and no check for existence).
+% converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessuserv}[1]{%
+ \protect\glsuppercase{\glsentryuserv{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtuserv}
+%\begin{definition}
+%\cs{GLSaccessfmtuserv}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtuserv}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{userv}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%USER6
+%\begin{macro}{\glsaccessuservi}
+% Display the \gloskey{user6} value (no link and no check for existence).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessuservi}[1]{\glsentryuservi{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfmtuservi}
+%\begin{definition}
+%\cs{glsaccessfmtuservi}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfmtuservi}[3]{%
+ \glsfmtfield{#1}{#2}{#3}{uservi}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessuservi}
+% Display the \gloskey{user6} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessuservi}[1]{\Glsentryuservi{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfmtuservi}
+%\begin{definition}
+%\cs{Glsaccessfmtuservi}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfmtuservi}[3]{%
+ \Glsfmtfield{#1}{#2}{#3}{uservi}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessuservi}
+% Display the \gloskey{user6} value (no link and no check for existence).
+% converted to upper case.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessuservi}[1]{%
+ \protect\glsuppercase{\glsentryuservi{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfmtuservi}
+%\begin{definition}
+%\cs{GLSaccessfmtuservi}\marg{insert}\marg{cs}\marg{label}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfmtuservi}[3]{%
+ \GLSfmtfield{#1}{#2}{#3}{uservi}%
+ }
% \end{macrocode}
%\end{macro}
%
@@ -14391,8 +19750,87 @@ defined}{}%
}
% \end{macrocode}
%\end{macro}
-%
-%\section{Categories}
+%Identify sentence-case mappings:
+% \begin{macrocode}
+\glsmfuaddmap{\glsaccessname}{\Glsaccessname}
+\glsmfuaddmap{\glsaccessfmtname}{\Glsaccessfmtname}
+\glsmfublocker{\GLSaccessname}
+\glsmfublocker{\GLSaccessfmtname}
+\glsmfuaddmap{\glsaccesstext}{\Glsaccesstext}
+\glsmfuaddmap{\glsaccessfmttext}{\Glsaccessfmttext}
+\glsmfublocker{\GLSaccesstext}
+\glsmfublocker{\GLSaccessfmttext}
+\glsmfuaddmap{\glsaccessplural}{\Glsaccessplural}
+\glsmfuaddmap{\glsaccessfmtplural}{\Glsaccessfmtplural}
+\glsmfublocker{\GLSaccessplural}
+\glsmfublocker{\GLSaccessfmtplural}
+\glsmfuaddmap{\glsaccessfirst}{\Glsaccessfirst}
+\glsmfuaddmap{\glsaccessfmtfirst}{\Glsaccessfmtfirst}
+\glsmfublocker{\GLSaccessfirst}
+\glsmfublocker{\GLSaccessfmtfirst}
+\glsmfuaddmap{\glsaccessfirstplural}{\Glsaccessfirstplural}
+\glsmfuaddmap{\glsaccessfmtfirstplural}{\Glsaccessfmtfirstplural}
+\glsmfublocker{\GLSaccessfirstplural}
+\glsmfublocker{\GLSaccessfmtfirstplural}
+\glsmfuaddmap{\glsaccesssymbol}{\Glsaccesssymbol}
+\glsmfuaddmap{\glsaccessfmtsymbol}{\Glsaccessfmtsymbol}
+\glsmfublocker{\GLSaccesssymbol}
+\glsmfublocker{\GLSaccessfmtsymbol}
+\glsmfuaddmap{\glsaccesssymbolplural}{\Glsaccesssymbolplural}
+\glsmfuaddmap{\glsaccessfmtsymbolplural}{\Glsaccessfmtsymbolplural}
+\glsmfublocker{\GLSaccesssymbolplural}
+\glsmfublocker{\GLSaccessfmtsymbolplural}
+\glsmfuaddmap{\glsaccessdesc}{\Glsaccessdesc}
+\glsmfuaddmap{\glsaccessfmtdesc}{\Glsaccessfmtdesc}
+\glsmfublocker{\GLSaccessdesc}
+\glsmfublocker{\GLSaccessfmtdesc}
+\glsmfuaddmap{\glsaccessdescplural}{\Glsaccessdescplural}
+\glsmfuaddmap{\glsaccessfmtdescplural}{\Glsaccessfmtdescplural}
+\glsmfublocker{\GLSaccessdescplural}
+\glsmfublocker{\GLSaccessfmtdescplural}
+\glsmfuaddmap{\glsaccessshort}{\Glsaccessshort}
+\glsmfuaddmap{\glsaccessfmtshort}{\Glsaccessfmtshort}
+\glsmfublocker{\GLSaccessshort}
+\glsmfublocker{\GLSaccessfmtshort}
+\glsmfuaddmap{\glsaccessshortpl}{\Glsaccessshortpl}
+\glsmfuaddmap{\glsaccessfmtshortpl}{\Glsaccessfmtshortpl}
+\glsmfublocker{\GLSaccessshortpl}
+\glsmfublocker{\GLSaccessfmtshortpl}
+\glsmfuaddmap{\glsaccesslong}{\Glsaccesslong}
+\glsmfuaddmap{\glsaccessfmtlong}{\Glsaccessfmtlong}
+\glsmfublocker{\GLSaccesslong}
+\glsmfublocker{\GLSaccessfmtlong}
+\glsmfuaddmap{\glsaccesslongpl}{\Glsaccesslongpl}
+\glsmfuaddmap{\glsaccessfmtlongpl}{\Glsaccessfmtlongpl}
+\glsmfublocker{\GLSaccesslongpl}
+\glsmfublocker{\GLSaccessfmtlongpl}
+\glsmfuaddmap{\glsaccessuseri}{\Glsaccessuseri}
+\glsmfuaddmap{\glsaccessfmtuseri}{\Glsaccessfmtuseri}
+\glsmfublocker{\GLSaccessuseri}
+\glsmfublocker{\GLSaccessfmtuseri}
+\glsmfuaddmap{\glsaccessuserii}{\Glsaccessuserii}
+\glsmfuaddmap{\glsaccessfmtuserii}{\Glsaccessfmtuserii}
+\glsmfublocker{\GLSaccessuserii}
+\glsmfublocker{\GLSaccessfmtuserii}
+\glsmfuaddmap{\glsaccessuseriii}{\Glsaccessuseriii}
+\glsmfuaddmap{\glsaccessfmtuseriii}{\Glsaccessfmtuseriii}
+\glsmfublocker{\GLSaccessuseriii}
+\glsmfublocker{\GLSaccessfmtuseriii}
+\glsmfuaddmap{\glsaccessuseriv}{\Glsaccessuseriv}
+\glsmfuaddmap{\glsaccessfmtuseriv}{\Glsaccessfmtuseriv}
+\glsmfublocker{\GLSaccessuseriv}
+\glsmfublocker{\GLSaccessfmtuseriv}
+\glsmfuaddmap{\glsaccessuserv}{\Glsaccessuserv}
+\glsmfuaddmap{\glsaccessfmtuserv}{\Glsaccessfmtuserv}
+\glsmfublocker{\GLSaccessuserv}
+\glsmfublocker{\GLSaccessfmtuserv}
+\glsmfuaddmap{\glsaccessuservi}{\Glsaccessuservi}
+\glsmfuaddmap{\glsaccessfmtuservi}{\Glsaccessfmtuservi}
+\glsmfublocker{\GLSaccessuservi}
+\glsmfublocker{\GLSaccessfmtuservi}
+% \end{macrocode}
+%
+%\subsection{Categories}
%\begin{macro}{\glscategory}
% Add a new storage key that can be used to indicate a category. The
% default category is \category{general}.
@@ -14460,6 +19898,22 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glssetcategoryattributes}
+%\begin{definition}
+%\cs{glssetcategoryattributes}\marg{category}\marg{attribute list}\marg{value}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% Similar to above, but globally apply to each attribute in the list
+% to the given category.
+% \begin{macrocode}
+\newcommand*{\glssetcategoryattributes}[3]{%
+ \@for\@gls@thisattrlabel:=#2\do{%
+ \csgdef{@glsxtr@categoryattr@@#1@\@gls@thisattrlabel}{#3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsgetcategoryattribute}
%\begin{definition}
%\cs{glsgetcategoryattribute}\marg{category}\marg{attribute-label}
@@ -14575,6 +20029,69 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%Provide expandable test to determine if attribute is set to true.
+%\begin{macro}{\@glsxtr@truevalue}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@truevalue}{true}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifcategoryattributetrue}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsifcategoryattributetrue}\marg{category-label}\marg{attribute}\marg{true}\marg{false}
+%\end{definition}
+%Does \meta{false} if the entry hasn't been defined.
+% \begin{macrocode}
+\newcommand*{\glsifcategoryattributetrue}[4]{%
+ \ifcsequal{@glsxtr@categoryattr@@#1@#2}%
+ {@glsxtr@truevalue}%
+ {#3}{#4}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifattributetrue}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsifattributetrue}\marg{label}\marg{attribute}\marg{true}\marg{false}
+%\end{definition}
+%Does \meta{false} if the entry hasn't been defined.
+% \begin{macrocode}
+\newcommand*{\glsifattributetrue}[4]{%
+ \ifcsundef{glo@\glsdetoklabel{#1}@category}%
+ {#4}
+ {\ifcsequal
+ {@glsxtr@categoryattr@@\csname glo@\glsdetoklabel{#1}@category\endcsname @#2}%
+ {@glsxtr@truevalue}%
+ {#3}{#4}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifcategoryattributehasitem}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsifcategoryattributehasitem}\marg{category}\marg{attribute-label}\marg{item}\marg{true
+%part}\marg{false part}
+%\end{definition}
+% True if category has the attribute (whose value is a
+% comma-separated list) contains the given item. The \meta{item} is expanded.
+% \begin{macrocode}
+\newrobustcmd{\glsifcategoryattributehasitem}[5]{%
+ \ifcsundef{@glsxtr@categoryattr@@#1@#2}%
+ {#5}%
+ {%
+ \protected@edef\gls@tmp{%
+ \noexpand\DTLifinlist{#3}{\csuse{@glsxtr@categoryattr@@#1@#2}}}%
+ \gls@tmp{#4}{#5}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
% Set attributes for the default \category{general} category:
% \begin{macrocode}
\glssetcategoryattribute{general}{regular}{true}
@@ -15006,7 +20523,7 @@ defined}{}%
% Hide the label from the upper-casing command.
% \begin{macrocode}
\letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
- \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}%
+ \@glsxtr@glossnamefont{\glsuppercase{\glo@name}}%
}%
{#1}%
}%
@@ -15067,12 +20584,12 @@ defined}{}%
% Hide the label from the upper-casing command.
% \begin{macrocode}
\letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
- \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}%
+ \@glsxtr@glossnamefont{\glsuppercase{\glo@name}}%
}%
{%
% \end{macrocode}
-% This little trick is used by \styfmt{glossaries} to allow the user to
-% redefine \ics{glsnamefont} to use \cs{makefirstuc}. Support it
+% This little trick is used by \sty{glossaries} to allow the user to
+% redefine \cs{glsnamefont} to use \cs{makefirstuc}. Support it
% even though they can now use the \catattr{firstuc} attribute.
% \begin{macrocode}
\letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
@@ -15171,7 +20688,7 @@ defined}{}%
%\end{macro}
%
% Provide a convenient way to also index the entries using the
-% standard \ics{index} mechanism. This may use different actual,
+% standard \cs{index} mechanism. This may use different actual,
% encap and escape characters to those used for the glossaries.
%
%\begin{macro}{\glsxtrpostnamehook}
@@ -15303,7 +20820,7 @@ defined}{}%
{%
\letcs{\glo@name}{glo@\glsdetoklabel{#1}@#2}%
\@glsxtr@accessdisplay
- {\@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}}%
+ {\@glsxtr@glossnamefont{\glsuppercase{\glo@name}}}%
{#1}%
}%
{%
@@ -15317,7 +20834,7 @@ defined}{}%
% \end{macrocode}
% Do post-name hook.
% \begin{macrocode}
- \glsxtrpostnamehook{#1}%
+ \glsxtrpostnamehook{#1}%
}%
}
% \end{macrocode}
@@ -15333,7 +20850,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%If overriding is enabled, the \ics{glshypernumber} command will have to
+%If overriding is enabled, the \cs{glshypernumber} command will have to
%be redefined in the index to use \cs{hyperpage} instead.
%\begin{macro}{\GlsXtrEnableIndexFormatOverride}
% \begin{macrocode}
@@ -15606,25 +21123,25 @@ defined}{}%
%\end{macro}
%
% Set if defined. (For example, if \sty{doc} package has been
-% loaded.) Actual character \ics{actualchar}:
+% loaded.) Actual character \cs{actualchar}:
% \begin{macrocode}
\ifdef\actualchar
{\expandafter\GlsXtrSetActualChar\expandafter{\actualchar}}
{}
% \end{macrocode}
-% Quote character \ics{quotechar}:
+% Quote character \cs{quotechar}:
% \begin{macrocode}
\ifdef\quotechar
{\expandafter\GlsXtrSetEscChar\expandafter{\quotechar}}
{}
% \end{macrocode}
-% Level character \ics{levelchar}:
+% Level character \cs{levelchar}:
% \begin{macrocode}
\ifdef\levelchar
{\expandafter\GlsXtrSetLevelChar\expandafter{\levelchar}}
{}
% \end{macrocode}
-% Encap character \ics{encapchar}:
+% Encap character \cs{encapchar}:
% \begin{macrocode}
\ifdef\encapchar
{\expandafter\GlsXtrSetEncapChar\expandafter{\encapchar}}
@@ -15683,20 +21200,14 @@ defined}{}%
% entry definitions.
%\changes{0.5.2}{2015-12-08}{added}
% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \renewcommand*{\glossentrysymbol}[1]{%
- \texorpdfstring{\@glossentrysymbol{#1}}{\glsentrypdfsymbol{#1}}%
- }
-}
-{
- \renewcommand*{\glossentrysymbol}[1]{\@glossentrysymbol{#1}}
+\renewcommand*{\glossentrysymbol}[1]{%
+ \glstexorpdfstring{\@glossentrysymbol{#1}}{\glsentrypdfsymbol{#1}}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\glsentrypdfsymbol}
-%\changes{1.4.2}{??}{new}
+%\changes{1.42}{2020-02-13}{new}
%May be redefined to a field that expands to a value that's more
%suitable for PDF bookmarks.
% \begin{macrocode}
@@ -15705,7 +21216,7 @@ defined}{}%
%\end{macro}
%
%\begin{macro}{\@glossentrysymbol}
-%\changes{1.4.2}{??}{new}
+%\changes{1.42}{2020-02-13}{new}
%There are no case-changing attributes as it's less usual for
%symbols.
%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
@@ -15859,7 +21370,7 @@ defined}{}%
%\end{macro}
%
%\begin{macro}{\@glsxtr@activate@initialtagging}
-% Used in \cs{printglossary} but at least v4.19 of \styfmt{glossaries}
+% Used in \cs{printglossary} but at least v4.19 of \sty{glossaries}
% required.
%\changes{0.5.2}{2015-12-08}{new}
% \begin{macrocode}
@@ -15887,7 +21398,7 @@ defined}{}%
%\end{macro}
%
%\begin{macro}{\@gls@preglossaryhook}
-% This macro was introduced in \styfmt{glossaries} version 4.19, so it
+% This macro was introduced in \sty{glossaries} version 4.19, so it
% may not be defined. If it hasn't been defined this feature is
% unavailable. A check is added for the entry's existence to prevent
% errors from occurring if the user removes an entry or changes the
@@ -15949,6 +21460,8 @@ defined}{}%
%\end{macro}
%
%\begin{macro}{\glsxtrpostdescterm}
+%This is redundant as it doesn't match any common categories.
+%\cs{newterm} sets the category to index.
% \begin{macrocode}
\newcommand*{\glsxtrpostdescterm}{}
% \end{macrocode}
@@ -16042,6 +21555,48 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glspretopostlink}
+%\changes{1.49}{2022-10-14}{new}
+%Similar to the above but prepend.
+% \begin{macrocode}
+\newcommand*{\glspretopostlink}[2]{%
+% \end{macrocode}
+% \cs{ifthenelse} is used to ensure that the expanded value is
+% tested. (The category label must be fully expandable.)
+% \begin{macrocode}
+ \ifthenelse{\equal{#1}{}}%
+ {\PackageError{glossaries-extra}
+ {Invalid empty category label in \string\glspretopostlink}{}}%
+ {%
+ \ifcsundef{glsxtrpostlink#1}
+ {\csdef{glsxtrpostlink#1}{#2}}%
+ {\cspreto{glsxtrpostlink#1}{#2}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsapptopostlink}
+%\changes{1.49}{2022-10-14}{new}
+%Similar to the above but append.
+% \begin{macrocode}
+\newcommand*{\glsapptopostlink}[2]{%
+% \end{macrocode}
+% \cs{ifthenelse} is used to ensure that the expanded value is
+% tested. (The category label must be fully expandable.)
+% \begin{macrocode}
+ \ifthenelse{\equal{#1}{}}%
+ {\PackageError{glossaries-extra}
+ {Invalid empty category label in \string\glspretopostlink}{}}%
+ {%
+ \ifcsundef{glsxtrpostlink#1}
+ {\csdef{glsxtrpostlink#1}{#2}}%
+ {\csappto{glsxtrpostlink#1}{#2}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrpostlinkendsentence}
%\changes{0.3}{2015-12-02}{new}
% Done by \cs{glsxtrpostlinkhook} if a full stop is discarded.
@@ -16072,9 +21627,11 @@ defined}{}%
% first use, for the convenience of users wanting to add this to the
% post link hook.
%\changes{1.25}{2017-11-24}{changed to use \cs{glsxtrparen}}
+%\changes{1.49}{2022-10-14}{added inner formatting}
% \begin{macrocode}
\newcommand*{\glsxtrpostlinkAddDescOnFirstUse}{%
- \glsxtrifwasfirstuse{\space\glsxtrparen{\glsaccessdesc{\glslabel}}}{}%
+ \glsxtrifwasfirstuse{\glsxtrgenentrytextfmt{ }%
+ \glsxtrparen{\glsaccessfmtdesc{}{\glsxtrgenentrytextfmt}{\glslabel}}}{}%
}
% \end{macrocode}
%\end{macro}
@@ -16085,12 +21642,14 @@ defined}{}%
% first use, for the convenience of users wanting to add this to the
% post link hook.
%\changes{1.25}{2017-11-24}{changed to use \cs{glsxtrparen}}
+%\changes{1.49}{2022-10-14}{added inner formatting}
% \begin{macrocode}
\newcommand*{\glsxtrpostlinkAddSymbolOnFirstUse}{%
\glsxtrifwasfirstuse
{%
\ifglshassymbol{\glslabel}%
- {\space\glsxtrparen{\glsaccesssymbol{\glslabel}}}%
+ {\glsxtrgenentrytextfmt{ }%
+ \glsxtrparen{\glsaccessfmtsymbol{}{\glsxtrgenentrytextfmt}{\glslabel}}}%
{}%
}%
{}%
@@ -16108,12 +21667,13 @@ defined}{}%
\newcommand*{\glsxtrpostlinkAddSymbolDescOnFirstUse}{%
\glsxtrifwasfirstuse
{%
- \space\glsxtrparen
+ \glsxtrgenentrytextfmt{ }\glsxtrparen
{%
\ifglshassymbol{\glslabel}%
- {\glsaccesssymbol{\glslabel}, }%
+ {\glsaccessfmtsymbol{}{\glsxtrgenentrytextfmt}{\glslabel}%
+ \expandafter\glsxtrgenentrytextfmt\expandafter{\glsxtrpostlinkSymbolDescSep}}%
{}%
- \glsaccessdesc{\glslabel}%
+ \glsaccessfmtdesc{}{\glsxtrgenentrytextfmt}{\glslabel}%
}%
}%
{}%
@@ -16121,6 +21681,23 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrpostlinkSymbolDescSep}
+%\changes{1.49}{2022-10-14}{new}
+% Separator used in the above
+% \begin{macrocode}
+\newcommand*{\glsxtrpostlinkSymbolDescSep}{, }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdiscardperiodretainfirstuse}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrdiscardperiodretainfirstuse}[3]{%
+ \glsxtrifwassubsequentorshort{\glsxtrifperiod{#2}{#3}}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrdiscardperiod}
% Discard following period (if present) if the
% \catattr{discardperiod} attribute is true. If a period is
@@ -16133,26 +21710,8 @@ defined}{}%
%\changes{1.01}{2016-02-02}{added check for first use}
% \begin{macrocode}
\newcommand*{\glsxtrdiscardperiod}[3]{%
- \glsxtrifwasfirstuse
- {%
- \glsifattribute{#1}{retainfirstuseperiod}{true}%
- {#3}%
- {%
- \glsifattribute{#1}{discardperiod}{true}%
- {%
- \glsifplural
- {%
- \glsifattribute{#1}{pluraldiscardperiod}{true}%
- {\glsxtrifperiod{#2}{#3}}%
- {#3}%
- }%
- {%
- \glsxtrifperiod{#2}{#3}%
- }%
- }%
- {#3}%
- }%
- }%
+ \glsifattribute{#1}{retainfirstuseperiod}{true}%
+ {\glsxtrdiscardperiodretainfirstuse{#1}{#2}{#3}}%
{%
\glsifattribute{#1}{discardperiod}{true}%
{%
@@ -16206,7 +21765,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\glsxtrifpunc}
+%\begin{macro}{\glsxtrifnextpunc}
%\begin{definition}
%\cs{glsxtrifnextpunc}\marg{true part}\marg{false part}
%\end{definition}
@@ -16271,14 +21830,15 @@ defined}{}%
%\end{macro}
%
%\begin{macro}{\glsxtrdopostpunc}
+%\changes{1.49}{2022-10-14}{made robust}
%\begin{definition}
%\cs{glsxtrdopostpunc}\marg{code}
%\end{definition}
-% If this is followed be a punctuation character, do \meta{code}
+% If this is followed by a punctuation character, do \meta{code}
% after the character otherwise do \meta{code} before whatever comes
% next.
% \begin{macrocode}
-\newcommand{\glsxtrdopostpunc}[1]{%
+\newrobustcmd{\glsxtrdopostpunc}[1]{%
\glsxtrifnextpunc{\@glsxtr@swaptwo{#1}}{#1}%
}
% \end{macrocode}
@@ -16290,9 +21850,9 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\section{Abbreviations}
+%\subsection{Abbreviations}
%
-%The \qt{acronym} code from \styfmt{glossaries} is misnamed as it's more
+%The \qt{acronym} code from \sty{glossaries} is misnamed as it's more
%often used for other forms of abbreviations. This code corrects
%this inconsistency, but rather than just having synonyms, provide
% commands for abbreviations that have a similar, but not identical,
@@ -16306,16 +21866,20 @@ defined}{}%
\protected@edef\glscategorylabel{#1}%
}
% \end{macrocode}
+%\changes{1.49}{2022-10-14}{split shortplural and longplural into separate
+%family}
+% The shortplural and longplural are parsed separately, so are now
+% in another key family.
% Save the short plural form. This may be needed before the entry is
% defined.
% \begin{macrocode}
-\define@key{glsxtrabbrv}{shortplural}{%
+\define@key{glsxtrabbrvpl}{shortplural}{%
\def\@gls@shortpl{#1}%
}
% \end{macrocode}
% Similarly for the long plural form.
% \begin{macrocode}
-\define@key{glsxtrabbrv}{longplural}{%
+\define@key{glsxtrabbrvpl}{longplural}{%
\def\@gls@longpl{#1}%
}
% \end{macrocode}
@@ -16375,14 +21939,20 @@ defined}{}%
%\begin{macro}{\glsxtrwordsep}
%\changes{1.17}{2017-08-09}{new}
% \begin{macrocode}
-\newcommand*{\glsxtrwordsep}{\space}
+\newcommand*{\glsxtrwordsep}{\glsxtrgenentrytextfmt{ }}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrwordsephyphen}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrwordsephyphen}{\glsxtrgenentrytextfmt{-}}
% \end{macrocode}
%\end{macro}
%Each word is marked with
%\begin{macro}{\glsxtrword}
%\changes{1.17}{2017-08-09}{new}
% \begin{macrocode}
-\newcommand*{\glsxtrword}[1]{#1}
+\newcommand*{\glsxtrword}[1]{\glsxtrgenentrytextfmt{#1}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@glsxtr@markwordseps}
@@ -16440,9 +22010,13 @@ defined}{}%
\def\glsxtrorgshort{#3}%
\def\glsxtrorglong{#4}%
% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glsxtrorgkeylist}}
+% \begin{macrocode}
+ \def\glsxtrorgkeylist{#1}%
+% \end{macrocode}
%\changes{1.31}{2018-05-09}{added \cs{ExtraCustomAbbreviationFields}}
-%Provide extra settings for hooks (if modified, this command must
-%end with a comma).
+%Provide extra settings for hooks. Make sure to append a comma if
+%this hook is changed.
% \begin{macrocode}
\def\ExtraCustomAbbreviationFields{}%
% \end{macrocode}
@@ -16459,7 +22033,11 @@ defined}{}%
% \end{macrocode}
% Ignore the shortplural and longplural keys.
% \begin{macrocode}
- \setkeys*{glsxtrabbrv}[shortplural,longplural]{#1}%
+ \setkeys*{glsxtrabbrv}{#1}%
+% \end{macrocode}
+% Save remaining keys, just in case any hook also uses \cs{setkeys}
+% \begin{macrocode}
+ \let\@glsxtrabbrv@rmkeys\XKV@rm
% \end{macrocode}
% Set the abbreviation style.
% \begin{macrocode}
@@ -16482,31 +22060,37 @@ defined}{}%
}%
% \end{macrocode}
% Set the default long plural
+%\changes{1.49}{2022-10-14}{bug fix: markwords doesn't include plural suffix}
% \begin{macrocode}
\def\@gls@longpl{#4\glspluralsuffix}%
- \let\@gls@default@longpl\@gls@longpl
% \end{macrocode}
% Has the \catattr{markwords} attribute been set?
% \begin{macrocode}
\glsifcategoryattribute{\glscategorylabel}{markwords}{true}%
{%
\@glsxtr@markwordseps\@gls@long{#4}%
- \expandafter\def\expandafter\@gls@longpl\expandafter
- {\@gls@long\glspluralsuffix}%
- \let\@gls@default@longpl\@gls@longpl
% \end{macrocode}
% Update \cs{glslongtok}.
% \begin{macrocode}
\expandafter\glslongtok\expandafter{\@gls@long}%
+% \end{macrocode}
+% Mark this entry as having a description with formatting.
+% \begin{macrocode}
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
}%
{}%
% \end{macrocode}
% Has the \catattr{markshortwords} attribute been set? (Not
% compatible with \catattr{insertdots}.)
% \begin{macrocode}
+ \let\@glsxtr@if@markshortwords\@secondoftwo
\glsifcategoryattribute{\glscategorylabel}{markshortwords}{true}%
{%
- \@glsxtr@markwordseps\@gls@short{#3}%
+% \end{macrocode}
+% Don't mark words until the default plural has been obtained.
+% \begin{macrocode}
+ \let\@glsxtr@if@markshortwords\@firstoftwo
+ \def\@gls@short{#3}%
}%
{%
% \end{macrocode}
@@ -16541,11 +22125,17 @@ defined}{}%
{%
\let\@gls@shortpl\@gls@short
}%
- {%
+ {%
\expandafter\def\expandafter\@gls@shortpl\expandafter{\@gls@short
\abbrvpluralsuffix}%
}%
}%
+ \@glsxtr@if@markshortwords
+ {%
+ \expandafter\@glsxtr@markwordseps\expandafter\@gls@short
+ \expandafter{\@gls@short}%
+ }%
+ {}%
% \end{macrocode}
% Update \cs{glsshorttok}:
% \begin{macrocode}
@@ -16557,29 +22147,52 @@ defined}{}%
% \end{macrocode}
% Get the short and long plurals provided by user in optional
% argument to override defaults, if necessary.
-% Ignore the category key (already obtained).
+% Save the default short plural.
% \begin{macrocode}
- \setkeys*{glsxtrabbrv}[category]{#1}%
+ \let\@gls@default@shortpl\@gls@shortpl
+ \let\XKV@rm\@glsxtrabbrv@rmkeys
+ \setrmkeys*{glsxtrabbrvpl}%
% \end{macrocode}
-% Save in case required.
+% Update \cs{glskeylisttok} so that it only has the remaining keys.
% \begin{macrocode}
- \let\@gls@org@longpl\@gls@longpl
- \let\@gls@org@shortpl\@gls@shortpl
+ \expandafter\glskeylisttok\expandafter{\XKV@rm}%
% \end{macrocode}
-% Has the plural been explicitly set?
+% Save in case required.
% \begin{macrocode}
- \ifx\@gls@default@longpl\@gls@longpl
- \else
+ \let\@gls@org@longpl\@gls@longpl
+ \let\@gls@org@shortpl\@gls@shortpl
% \end{macrocode}
% Has the \catattr{markwords} attribute been set?
% \begin{macrocode}
- \glsifcategoryattribute{\glscategorylabel}{markwords}{true}%
- {%
- \expandafter\@glsxtr@markwordseps\expandafter\@gls@longpl\expandafter
- {\@gls@longpl}%
- }%
- {}%
- \fi
+ \glsifcategoryattribute{\glscategorylabel}{markwords}{true}%
+ {%
+ \expandafter\@glsxtr@markwordseps\expandafter\@gls@longpl\expandafter
+ {\@gls@longpl}%
+ }%
+ {}%
+% \end{macrocode}
+% Has the \catattr{markshortwords} attribute been set?
+% \begin{macrocode}
+ \@glsxtr@if@markshortwords
+ {%
+ \expandafter\@glsxtr@markwordseps\expandafter\@gls@shortpl
+ \expandafter{\@gls@shortpl}%
+ }%
+ {%
+% \end{macrocode}
+% Has the \catattr{insertdots} attribute been set?
+% \begin{macrocode}
+ \ifx\@gls@default@shortpl\@gls@shortpl
+ \else
+ \glsifcategoryattribute{\glscategorylabel}{insertdots}{true}%
+ {%
+ \expandafter\@glsxtr@insertdots\expandafter\@gls@shortpl
+ \expandafter{\@gls@shortpl}%
+ \appto\@gls@shortpl{\@}%
+ }%
+ {}%
+ \fi
+ }%
% \end{macrocode}
% Set the plural token registers so the values can be accessed by
% the abbreviation styles.
@@ -16601,8 +22214,8 @@ defined}{}%
\protected@edef\@do@newglossaryentry{%
\noexpand\newglossaryentry{\the\glslabeltok}%
{%
- type=\glsxtrabbrvtype,%
- category=abbreviation,%
+ type={\glsxtrabbrvtype},%
+ category={\glscategorylabel},%
short={\the\glsshorttok},%
shortplural={\the\glsshortpltok},%
long={\the\glslongtok},%
@@ -16610,13 +22223,13 @@ defined}{}%
name={\the\glsshorttok},%
\CustomAbbreviationFields,%
% \end{macrocode}
-% Hook may override abbreviation style default settings (this hook
-% must end with a comma if set).
+% Hook may override abbreviation style default settings.
% \begin{macrocode}
\ExtraCustomAbbreviationFields
% \end{macrocode}
% Any explicit fields set in the optional argument override all
-% other settings.
+% other settings, except for the ones that have already been
+% processed.
% \begin{macrocode}
\the\glskeylisttok
}%
@@ -16626,6 +22239,16 @@ defined}{}%
% Obtain the type and add it to the list of abbreviations.
% \begin{macrocode}
\@glsxtr@addabbreviationlist{\glsentrytype{\the\glslabeltok}}%
+% \end{macrocode}
+% Exclude name, first, firstpl, text and plural fields from inner
+% fmt as they include formatting commands. The description may also
+% need adding, depending on the style.
+% \begin{macrocode}
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{first}%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{firstpl}%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{text}%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{plural}%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{name}%
\GlsXtrPostNewAbbreviation
}
% \end{macrocode}
@@ -16663,55 +22286,150 @@ defined}{}%
%\changes{1.17}{2017-08-09}{new}
%For the parenthetical styles.
% \begin{macrocode}
-\newcommand*{\glsxtrparen}[1]{(#1)}
+\newcommand*{\glsxtrparen}[1]{%
+ \glsxtrgenentrytextfmt{(}#1\glsxtrgenentrytextfmt{)}}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\glsxtrfullformat}
% Full format without case change.
+%\changes{1.49}{2022-10-14}{added check for insert inside and inner fmt}
% \begin{macrocode}
\newcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongfont{\glsaccesslong{#1}}#2\glsxtrfullsep{#1}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}%
+ \ifglsxtrinsertinside
+ \glsfirstlongfont{\glsaccessfmtlong{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ \glsfirstlongfont{\glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont
+ {\glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\Glsxtrfullformat}
% Full format with case change.
+%\changes{1.49}{2022-10-14}{added check for insert inside and inner fmt}
% \begin{macrocode}
\newcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongfont{\Glsaccesslong{#1}}#2\glsxtrfullsep{#1}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}%
+ \ifglsxtrinsertinside
+ \glsfirstlongfont{\Glsaccessfmtlong{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ \glsfirstlongfont{\Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont
+ {\glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}}%
}
+\glsmfuaddmap{\glsxtrfullformat}{\Glsxtrfullformat}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrfullformat}
+% Full format with all caps.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrfullformat}[2]{%
+ \ifglsxtrinsertinside
+ \glsfirstlongfont{\GLSaccessfmtlong{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ \glsfirstlongfont{\GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont
+ {\GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}}%
+}
+\glsmfublocker{\GLSxtrfullformat}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\glsxtrfullplformat}
% Plural full format without case change.
+%\changes{1.49}{2022-10-14}{added check for insert inside and inner fmt}
% \begin{macrocode}
\newcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongfont{\glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}%
+ \ifglsxtrinsertinside
+ \glsfirstlongfont{\glsaccessfmtlongpl{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ \glsfirstlongfont{\glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont
+ {\glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\Glsxtrfullplformat}
% Plural full format with case change.
+%\changes{1.49}{2022-10-14}{added check for insert inside and inner fmt}
% \begin{macrocode}
\newcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongfont{\Glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}%
+ \ifglsxtrinsertinside
+ \glsfirstlongfont{\Glsaccessfmtlongpl{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ \glsfirstlongfont{\Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont
+ {\glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}}%
}
+\glsmfuaddmap{\glsxtrfullplformat}{\Glsxtrfullplformat}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrfullplformat}
+% Full format with all caps.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrfullplformat}[2]{%
+ \ifglsxtrinsertinside
+ \glsfirstlongfont{\GLSaccessfmtlongpl{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ \glsfirstlongfont{\GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont
+ {\GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}}%
+}
+\glsmfublocker{\GLSxtrfullplformat}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtr@fullformat@fallback}
+% Fallback for custom styles that don't implement all caps version.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtr@fullformat@fallback}[2]{%
+ \glsuppercase{\glsxtrfullformat{##1}{##2}}%
+}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSxtr@fullplformat@fallback}
+% Fallback for custom styles that don't implement all caps version.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtr@fullplformat@fallback}[2]{%
+ \glsuppercase{\glsxtrfullplformat{##1}{##2}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%
%\begin{macro}{\glsxtrfullsep}
% Separator used by full format is a space by default. The argument
% is the entry's label.
+%\changes{1.49}{2022-10-14}{added inner fmt}
% \begin{macrocode}
-\newcommand*{\glsxtrfullsep}[1]{\space}
+\newcommand*{\glsxtrfullsep}[1]{\glsxtrgenentrytextfmt{ }}
% \end{macrocode}
%\end{macro}
%
@@ -16732,6 +22450,14 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSxtrinlinefullformat}
+% Full format with all caps.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrinlinefullformat}{\GLSxtrfullformat}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrfullplformat}
% Plural full format without case change.
% \begin{macrocode}
@@ -16746,10 +22472,20 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSxtrinlinefullplformat}
+% Full format with all caps.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrinlinefullplformat}{\GLSxtrfullplformat}
+% \end{macrocode}
+%\end{macro}
+%
% Redefine \cs{glsentryfull} etc to use the inline format.
-% Since these commands as supposed to be expandable, they can only
+% Since these commands are supposed to be expandable, they can only
% use the currently applied style. If there are mixed styles, you'll
% need to use the \cs{glsxtrfull} set of commands instead.
+% If expandable sentence case is required, use \cs{MFUsentencecase}
+% on the non-case-change version.
%\begin{macro}{\glsentryfull}
% \begin{macrocode}
\renewcommand*{\glsentryfull}[1]{\glsxtrinlinefullformat{#1}{}}
@@ -16759,6 +22495,7 @@ defined}{}%
%\begin{macro}{\Glsentryfull}
% \begin{macrocode}
\renewcommand*{\Glsentryfull}[1]{\Glsxtrinlinefullformat{#1}{}}
+\glsmfuaddmap{\glsentryfull}{\Glsentryfull}
% \end{macrocode}
%\end{macro}
%
@@ -16771,6 +22508,7 @@ defined}{}%
%\begin{macro}{\Glsentryfullpl}
% \begin{macrocode}
\renewcommand*{\Glsentryfullpl}[1]{\Glsxtrinlinefullplformat{#1}{}}
+\glsmfuaddmap{\glsentryfullpl}{\Glsentryfullpl}
% \end{macrocode}
%\end{macro}
%
@@ -16782,6 +22520,28 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsfirstinnerfmtabbrvfont}
+%\changes{1.49}{2022-10-14}{new}
+%Include inner formatting command.
+% \begin{macrocode}
+\newrobustcmd*{\glsfirstinnerfmtabbrvfont}[1]{%
+ \glsfirstabbrvfont{\glsxtrgenentrytextfmt{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfirstxpabbrvfont}
+%\changes{1.49}{2022-10-14}{new}
+%Expand to appropriate formatting command.
+% \begin{macrocode}
+\newcommand*{\glsfirstxpabbrvfont}[2]{%
+ \glsifcategoryattributetrue{#2}{markshortwords}%
+ {\protect\glsfirstabbrvfont{#1}}%
+ {\glsfirstinnerfmtabbrvfont{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsfirstabbrvdefaultfont}
% Font changing command used for the abbreviation on first use or in
% the full format.
@@ -16801,6 +22561,28 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsinnerfmtabbrvfont}
+%\changes{1.49}{2022-10-14}{new}
+%Include inner formatting command.
+% \begin{macrocode}
+\newrobustcmd*{\glsinnerfmtabbrvfont}[1]{%
+ \glsabbrvfont{\glsxtrgenentrytextfmt{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxpabbrvfont}
+%\changes{1.49}{2022-10-14}{new}
+%Expand to appropriate formatting command.
+% \begin{macrocode}
+\newcommand*{\glsxpabbrvfont}[2]{%
+ \glsifcategoryattributetrue{#2}{markshortwords}%
+ {\protect\glsabbrvfont{#1}}%
+ {\glsinnerfmtabbrvfont{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsabbrvdefaultfont}
%\changes{0.3}{2015-12-02}{renamed from \cs{abbrvdefaultfont}}
% \begin{macrocode}
@@ -16817,6 +22599,28 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsinnerfmtlongfont}
+%\changes{1.49}{2022-10-14}{new}
+%Include inner formatting command.
+% \begin{macrocode}
+\newrobustcmd*{\glsinnerfmtlongfont}[1]{%
+ \glslongfont{\glsxtrgenentrytextfmt{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxplongfont}
+%\changes{1.49}{2022-10-14}{new}
+%Expand to appropriate formatting command.
+% \begin{macrocode}
+\newcommand*{\glsxplongfont}[2]{%
+ \glsifcategoryattributetrue{#2}{markwords}%
+ {\protect\glslongfont{#1}}%
+ {\glsinnerfmtlongfont{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glslongdefaultfont}
% Default font changing command used for the long form in commands like
%\changes{1.04}{2016-05-02}{new}
@@ -16834,6 +22638,28 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsfirstinnerfmtlongfont}
+%\changes{1.49}{2022-10-14}{new}
+%Include inner formatting command.
+% \begin{macrocode}
+\newrobustcmd*{\glsfirstinnerfmtlongfont}[1]{%
+ \glsfirstlongfont{\glsxtrgenentrytextfmt{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfirstxplongfont}
+%\changes{1.49}{2022-10-14}{new}
+%Expand to appropriate formatting command.
+% \begin{macrocode}
+\newcommand*{\glsfirstxplongfont}[2]{%
+ \glsifcategoryattributetrue{#2}{markwords}%
+ {\protect\glsfirstlongfont{#1}}%
+ {\glsfirstinnerfmtlongfont{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsfirstlongdefaultfont}
%\changes{0.5}{2015-12-07}{new}
% \begin{macrocode}
@@ -16857,6 +22683,20 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrrevert}
+%\changes{1.49}{2022-10-14}{new}
+% Provide a way to counteract the abbreviation font.
+% \begin{macrocode}
+\newcommand*{\glsxtrrevert}[1]{\glsxtrdefaultrevert{#1}}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrdefaultrevert}
+%\changes{1.49}{2022-10-14}{new}
+%The default simply does its argument.
+% \begin{macrocode}
+\newcommand*{\glsxtrdefaultrevert}[1]{#1}%
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{\glsxtrfull}
% Full form (no case-change).
% \begin{macrocode}
@@ -16871,6 +22711,7 @@ defined}{}%
% Low-level macro:
% \begin{macrocode}
\def\@glsxtr@full#1#2[#3]{%
+ \def\glsxtrcurrentfield{}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -16882,9 +22723,13 @@ defined}{}%
{%
\glssetabbrvfmt{\glscategory{#2}}%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@firstofthree
- \let\glsinsert\@empty
+ \glsxtrfullsaveinsert{#2}{#3}%
+% \end{macrocode}
+% The innertextformat support should be provided within the inline command.
+% \begin{macrocode}
\def\glscustomtext{\glsxtrinlinefullformat{#2}{#3}}%
% \end{macrocode}
% What should \cs{glsxtrifwasfirstuse} be set to here? Where the inline
@@ -16918,19 +22763,25 @@ defined}{}%
\new@ifnextchar[{\@Glsxtr@full{#1}{#2}}%
{\@Glsxtr@full{#1}{#2}[]}%
}
+\glsmfuaddmap{\glsxtrfull}{\Glsxtrfull}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@Glsxtr@full}
% Low-level macro:
% \begin{macrocode}
\def\@Glsxtr@full#1#2[#3]{%
+ \def\glsxtrcurrentfield{}%
\glsdoifexists{#2}%
{%
\glssetabbrvfmt{\glscategory{#2}}%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@secondofthree
- \let\glsinsert\@empty
+ \glsxtrfullsaveinsert{#2}{#3}%
+% \end{macrocode}
+% The innertextformat support should be provided within the inline command.
+% \begin{macrocode}
\def\glscustomtext{\Glsxtrinlinefullformat{#2}{#3}}%
\glsxtrsetupfulldefs
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
@@ -16954,19 +22805,25 @@ defined}{}%
% Low-level macro:
% \begin{macrocode}
\def\@GLSxtr@full#1#2[#3]{%
+ \def\glsxtrcurrentfield{}%
\glsdoifexists{#2}%
{%
\glssetabbrvfmt{\glscategory{#2}}%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@thirdofthree
- \let\glsinsert\@empty
- \def\glscustomtext{\mfirstucMakeUppercase{\glsxtrinlinefullformat{#2}{#3}}}%
+ \glsxtrfullsaveinsert{#2}{#3}%
+% \end{macrocode}
+% The innertextformat support should be provided within the inline command.
+% \begin{macrocode}
+ \def\glscustomtext{\GLSxtrinlinefullformat{#2}{#3}}%
\glsxtrsetupfulldefs
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
\glspostlinkhook
}
+\glsmfublocker{\GLSxtrfull}
% \end{macrocode}
%\end{macro}
%
@@ -16984,6 +22841,7 @@ defined}{}%
% Low-level macro:
% \begin{macrocode}
\def\@glsxtr@fullpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -16995,9 +22853,13 @@ defined}{}%
{%
\glssetabbrvfmt{\glscategory{#2}}%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@firstofthree
- \let\glsinsert\@empty
+ \glsxtrfullsaveinsert{#2}{#3}%
+% \end{macrocode}
+% The innertextformat support should be provided within the inline command.
+% \begin{macrocode}
\def\glscustomtext{\glsxtrinlinefullplformat{#2}{#3}}%
\glsxtrsetupfulldefs
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
@@ -17015,12 +22877,14 @@ defined}{}%
\new@ifnextchar[{\@Glsxtr@fullpl{#1}{#2}}%
{\@Glsxtr@fullpl{#1}{#2}[]}%
}
+\glsmfuaddmap{\glsxtrfullpl}{\Glsxtrfullpl}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@Glsxtr@fullpl}
% Low-level macro:
% \begin{macrocode}
\def\@Glsxtr@fullpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17032,9 +22896,13 @@ defined}{}%
{%
\glssetabbrvfmt{\glscategory{#2}}%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@secondofthree
- \let\glsinsert\@empty
+ \glsxtrfullsaveinsert{#2}{#3}%
+% \end{macrocode}
+% The innertextformat support should be provided within the inline command.
+% \begin{macrocode}
\def\glscustomtext{\Glsxtrinlinefullplformat{#2}{#3}}%
\glsxtrsetupfulldefs
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
@@ -17052,12 +22920,14 @@ defined}{}%
\new@ifnextchar[{\@GLSxtr@fullpl{#1}{#2}}%
{\@GLSxtr@fullpl{#1}{#2}[]}%
}
+\glsmfublocker{\GLSxtrfullpl}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@GLSxtr@fullpl}
% Low-level macro:
% \begin{macrocode}
\def\@GLSxtr@fullpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17068,11 +22938,15 @@ defined}{}%
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@thirdofthree
- \let\glsinsert\@empty
+ \glsxtrfullsaveinsert{#2}{#3}%
+% \end{macrocode}
+% The innertextformat support should be provided within the inline command.
+% \begin{macrocode}
\def\glscustomtext{%
- \mfirstucMakeUppercase{\glsxtrinlinefullplformat{#2}{#3}}}%
+ \GLSxtrinlinefullplformat{#2}{#3}}%
\glsxtrsetupfulldefs
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -17096,6 +22970,7 @@ defined}{}%
% Read in the final optional argument:
% \begin{macrocode}
\def\@glsxtrshort#1#2[#3]{%
+ \def\glsxtrcurrentfield{short}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17110,13 +22985,13 @@ defined}{}%
% \begin{macrocode}
\glssetabbrvfmt{\glscategory{#2}}%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@firstofthree
- \let\glsinsert\@empty
+ \glsxtrsaveinsert{#2}{#3}%
\def\glscustomtext{%
- \glsabbrvfont{\glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}%
- \ifglsxtrinsertinside\else#3\fi
+ \glsxtrshortformat{#2}{#3}{\glsabbrvfont}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -17128,6 +23003,7 @@ defined}{}%
%\begin{macro}{\Glsxtrshort}
% \begin{macrocode}
\newrobustcmd*{\Glsxtrshort}{\@gls@hyp@opt\ns@Glsxtrshort}
+\glsmfuaddmap{\glsxtrshort}{\Glsxtrshort}
% \end{macrocode}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -17139,6 +23015,7 @@ defined}{}%
% Read in the final optional argument:
% \begin{macrocode}
\def\@Glsxtrshort#1#2[#3]{%
+ \def\glsxtrcurrentfield{short}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17150,13 +23027,13 @@ defined}{}%
{%
\glssetabbrvfmt{\glscategory{#2}}%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@secondofthree
- \let\glsinsert\@empty
+ \glsxtrsaveinsert{#2}{#3}%
\def\glscustomtext{%
- \glsabbrvfont{\Glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}%
- \ifglsxtrinsertinside\else#3\fi
+ \Glsxtrshortformat{#2}{#3}{\glsabbrvfont}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -17168,6 +23045,7 @@ defined}{}%
%\begin{macro}{\GLSxtrshort}
% \begin{macrocode}
\newrobustcmd*{\GLSxtrshort}{\@gls@hyp@opt\ns@GLSxtrshort}
+\glsmfublocker{\GLSxtrshort}
% \end{macrocode}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -17179,6 +23057,7 @@ defined}{}%
% Read in the final optional argument:
% \begin{macrocode}
\def\@GLSxtrshort#1#2[#3]{%
+ \def\glsxtrcurrentfield{short}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17190,16 +23069,12 @@ defined}{}%
{%
\glssetabbrvfmt{\glscategory{#2}}%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@thirdofthree
- \let\glsinsert\@empty
- \def\glscustomtext{%
- \mfirstucMakeUppercase
- {\glsabbrvfont{\glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}%
- \ifglsxtrinsertinside\else#3\fi
- }%
- }%
+ \glsxtrsaveinsert{#2}{#3}%
+ \def\glscustomtext{\GLSxtrshortformat{#2}{#3}{\glsabbrvfont}}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
\glspostlinkhook
@@ -17207,6 +23082,18 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrsetlongfirstuse}
+% Assigns \cs{glsxtrifwasfirstuse} for the long commands.
+%The argument is the entry label. This now makes commands such as
+%\cs{glsxtrlong} simulate first use.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glsxtrsetlongfirstuse}[1]{%
+ \let\glsxtrifwasfirstuse\@firstoftwo
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrlong}
% \begin{macrocode}
\newrobustcmd*{\glsxtrlong}{\@gls@hyp@opt\ns@glsxtrlong}
@@ -17221,6 +23108,7 @@ defined}{}%
% Read in the final optional argument:
% \begin{macrocode}
\def\@glsxtrlong#1#2[#3]{%
+ \def\glsxtrcurrentfield{long}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17231,13 +23119,13 @@ defined}{}%
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
- \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@firstofthree
- \let\glsinsert\@empty
+ \glsxtrsetlongfirstuse{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\def\glscustomtext{%
- \glslongfont{\glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}%
- \ifglsxtrinsertinside\else#3\fi
+ \glsxtrlongformat{#2}{#3}{\glslongfont}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -17249,6 +23137,7 @@ defined}{}%
%\begin{macro}{\Glsxtrlong}
% \begin{macrocode}
\newrobustcmd*{\Glsxtrlong}{\@gls@hyp@opt\ns@Glsxtrlong}
+\glsmfuaddmap{\glsxtrlong}{\Glsxtrlong}
% \end{macrocode}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -17260,23 +23149,25 @@ defined}{}%
% Read in the final optional argument:
% \begin{macrocode}
\def\@Glsxtrlong#1#2[#3]{%
+ \def\glsxtrcurrentfield{long}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
%exists (unless indexing has been switched off).
%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+%\changes{1.49}{2022-10-14}{now simulates first use}
% \begin{macrocode}
\@glsxtr@record{#1}{#2}{glslink}%
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
- \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@secondofthree
- \let\glsinsert\@empty
+ \glsxtrsetlongfirstuse{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\def\glscustomtext{%
- \glslongfont{\Glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}%
- \ifglsxtrinsertinside\else#3\fi
+ \Glsxtrlongformat{#2}{#3}{\glslongfont}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -17288,6 +23179,7 @@ defined}{}%
%\begin{macro}{\GLSxtrlong}
% \begin{macrocode}
\newrobustcmd*{\GLSxtrlong}{\@gls@hyp@opt\ns@GLSxtrlong}
+\glsmfublocker{\GLSxtrlong}
% \end{macrocode}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -17299,6 +23191,7 @@ defined}{}%
% Read in the final optional argument:
% \begin{macrocode}
\def\@GLSxtrlong#1#2[#3]{%
+ \def\glsxtrcurrentfield{long}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17309,15 +23202,13 @@ defined}{}%
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
- \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsifplural\@secondoftwo
\let\glscapscase\@thirdofthree
- \let\glsinsert\@empty
+ \glsxtrsetlongfirstuse{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\def\glscustomtext{%
- \mfirstucMakeUppercase
- {\glslongfont{\glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}%
- \ifglsxtrinsertinside\else#3\fi
- }%
+ \GLSxtrlongformat{#2}{#3}{\glslongfont}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -17342,6 +23233,7 @@ defined}{}%
% Read in the final optional argument:
% \begin{macrocode}
\def\@glsxtrshortpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{short}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17353,13 +23245,13 @@ defined}{}%
{%
\glssetabbrvfmt{\glscategory{#2}}%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@firstofthree
- \let\glsinsert\@empty
+ \glsxtrsaveinsert{#2}{#3}%
\def\glscustomtext{%
- \glsabbrvfont{\glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}%
- \ifglsxtrinsertinside\else#3\fi
+ \glsxtrshortplformat{#2}{#3}{\glsabbrvfont}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -17372,6 +23264,7 @@ defined}{}%
%\changes{0.3}{2015-12-02}{new}
% \begin{macrocode}
\newrobustcmd*{\Glsxtrshortpl}{\@gls@hyp@opt\ns@Glsxtrshortpl}
+\glsmfuaddmap{\glsxtrshortpl}{\Glsxtrshortpl}
% \end{macrocode}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -17383,6 +23276,7 @@ defined}{}%
% Read in the final optional argument:
% \begin{macrocode}
\def\@Glsxtrshortpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{short}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17394,13 +23288,13 @@ defined}{}%
{%
\glssetabbrvfmt{\glscategory{#2}}%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@secondofthree
- \let\glsinsert\@empty
+ \glsxtrsaveinsert{#2}{#3}%
\def\glscustomtext{%
- \glsabbrvfont{\Glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}%
- \ifglsxtrinsertinside\else#3\fi
+ \Glsxtrshortplformat{#2}{#3}{\glsabbrvfont}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -17413,6 +23307,7 @@ defined}{}%
%\changes{0.3}{2015-12-02}{new}
% \begin{macrocode}
\newrobustcmd*{\GLSxtrshortpl}{\@gls@hyp@opt\ns@GLSxtrshortpl}
+\glsmfublocker{\GLSxtrshortpl}
% \end{macrocode}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -17424,6 +23319,7 @@ defined}{}%
% Read in the final optional argument:
% \begin{macrocode}
\def\@GLSxtrshortpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{short}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17435,15 +23331,13 @@ defined}{}%
{%
\glssetabbrvfmt{\glscategory{#2}}%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsxtrifwasfirstuse\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@thirdofthree
- \let\glsinsert\@empty
+ \glsxtrsaveinsert{#2}{#3}%
\def\glscustomtext{%
- \mfirstucMakeUppercase
- {\glsabbrvfont{\glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}%
- \ifglsxtrinsertinside\else#3\fi
- }%
+ \GLSxtrshortplformat{#2}{#3}{\glsabbrvfont}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -17468,6 +23362,7 @@ defined}{}%
% Read in the final optional argument:
% \begin{macrocode}
\def\@glsxtrlongpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{long}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17478,13 +23373,13 @@ defined}{}%
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
- \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@firstofthree
- \let\glsinsert\@empty
+ \glsxtrsetlongfirstuse{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\def\glscustomtext{%
- \glslongfont{\glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}%
- \ifglsxtrinsertinside\else#3\fi
+ \glsxtrlongplformat{#2}{#3}{\glslongfont}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -17497,6 +23392,7 @@ defined}{}%
%\changes{0.3}{2015-12-02}{new}
% \begin{macrocode}
\newrobustcmd*{\Glsxtrlongpl}{\@gls@hyp@opt\ns@Glsxtrlongpl}
+\glsmfuaddmap{\glsxtrlongpl}{\Glsxtrlongpl}
% \end{macrocode}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -17508,6 +23404,7 @@ defined}{}%
% Read in the final optional argument:
% \begin{macrocode}
\def\@Glsxtrlongpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{long}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17518,13 +23415,13 @@ defined}{}%
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
- \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@secondofthree
- \let\glsinsert\@empty
+ \glsxtrsetlongfirstuse{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\def\glscustomtext{%
- \glslongfont{\Glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}%
- \ifglsxtrinsertinside\else#3\fi
+ \Glsxtrlongplformat{#2}{#3}{\glslongfont}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -17537,6 +23434,7 @@ defined}{}%
%\changes{0.3}{2015-12-02}{new}
% \begin{macrocode}
\newrobustcmd*{\GLSxtrlongpl}{\@gls@hyp@opt\ns@GLSxtrlongpl}
+\glsmfublocker{\GLSxtrlongpl}
% \end{macrocode}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -17548,6 +23446,7 @@ defined}{}%
% Read in the final optional argument:
% \begin{macrocode}
\def\@GLSxtrlongpl#1#2[#3]{%
+ \def\glsxtrcurrentfield{long}%
% \end{macrocode}
%If the \pkgopt{record} option has been used, the information needs
%to be written to the aux file regardless of whether the entry
@@ -17558,15 +23457,13 @@ defined}{}%
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
- \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsxtrifwasglslike\@secondoftwo
\let\glsifplural\@firstoftwo
\let\glscapscase\@thirdofthree
- \let\glsinsert\@empty
+ \glsxtrsetlongfirstuse{#2}%
+ \glsxtrsaveinsert{#2}{#3}%
\def\glscustomtext{%
- \mfirstucMakeUppercase
- {\glslongfont{\glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}%
- \ifglsxtrinsertinside\else#3\fi
- }%
+ \GLSxtrlongplformat{#2}{#3}{\glslongfont}%
}%
\@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
}%
@@ -17609,6 +23506,10 @@ defined}{}%
%\begin{macro}{\glsxtrgenabbrvfmt}
% Similar to \cs{glsgenacfmt}, but for abbreviations.
%\changes{1.17}{2017-08-09}{added check for \cs{ifglsxtrinsertinside}}
+% The expansion is to ensure that \cs{glsinsert} is expanded before being
+% passed to \cs{glsfmtfield} etc in the event that an inner command
+% is being used (which typically signifies a complex formatting command
+% such as those provided by \sty{soul}).
% \begin{macrocode}
\newcommand*{\glsxtrgenabbrvfmt}{%
\ifdefempty\glscustomtext
@@ -17628,20 +23529,22 @@ defined}{}%
% \end{macrocode}
% Subsequent plural form, don't adjust case:
% \begin{macrocode}
- \glsxtrsubsequentplfmt{\glslabel}{\glsinsert}%
+ \expandafter\glsxtrsubsequentplfmt\expandafter\glslabel
+ \expandafter{\glsinsert}%
}%
{%
% \end{macrocode}
% Subsequent plural form, make first letter upper case:
% \begin{macrocode}
- \Glsxtrsubsequentplfmt{\glslabel}{\glsinsert}%
+ \expandafter\Glsxtrsubsequentplfmt\expandafter\glslabel
+ \expandafter{\glsinsert}%
}%
{%
% \end{macrocode}
% Subsequent plural form, all caps:
% \begin{macrocode}
- \mfirstucMakeUppercase
- {\glsxtrsubsequentplfmt{\glslabel}{\glsinsert}}%
+ \expandafter\GLSxtrsubsequentplfmt\expandafter\glslabel
+ \expandafter{\glsinsert}%
}%
}%
{%
@@ -17653,20 +23556,22 @@ defined}{}%
% \end{macrocode}
% Subsequent singular form, don't adjust case:
% \begin{macrocode}
- \glsxtrsubsequentfmt{\glslabel}{\glsinsert}%
+ \expandafter\glsxtrsubsequentfmt\expandafter\glslabel
+ \expandafter{\glsinsert}%
}%
{%
% \end{macrocode}
% Subsequent singular form, make first letter upper case:
% \begin{macrocode}
- \Glsxtrsubsequentfmt{\glslabel}{\glsinsert}%
+ \expandafter\Glsxtrsubsequentfmt\expandafter
+ \glslabel\expandafter{\glsinsert}%
}%
{%
% \end{macrocode}
% Subsequent singular form, all caps:
% \begin{macrocode}
- \mfirstucMakeUppercase
- {\glsxtrsubsequentfmt{\glslabel}{\glsinsert}}%
+ \expandafter\GLSxtrsubsequentfmt\expandafter
+ \glslabel\expandafter{\glsinsert}%
}%
}%
}%
@@ -17684,20 +23589,22 @@ defined}{}%
% \end{macrocode}
% First use plural form, don't adjust case:
% \begin{macrocode}
- \glsxtrfullplformat{\glslabel}{\glsinsert}%
+ \expandafter\glsxtrfullplformat\expandafter\glslabel
+ \expandafter{\glsinsert}%
}%
{%
% \end{macrocode}
% First use plural form, make first letter upper case:
% \begin{macrocode}
- \Glsxtrfullplformat{\glslabel}{\glsinsert}%
+ \expandafter\Glsxtrfullplformat\expandafter\glslabel
+ \expandafter{\glsinsert}%
}%
{%
% \end{macrocode}
% First use plural form, all caps:
% \begin{macrocode}
- \mfirstucMakeUppercase
- {\glsxtrfullplformat{\glslabel}{\glsinsert}}%
+ \expandafter\GLSxtrfullplformat\expandafter\glslabel
+ \expandafter{\glsinsert}%
}%
}%
{%
@@ -17709,27 +23616,31 @@ defined}{}%
% \end{macrocode}
% First use singular form, don't adjust case:
% \begin{macrocode}
- \glsxtrfullformat{\glslabel}{\glsinsert}%
+ \expandafter\glsxtrfullformat\expandafter\glslabel
+ \expandafter{\glsinsert}%
}%
{%
% \end{macrocode}
% First use singular form, make first letter upper case:
% \begin{macrocode}
- \Glsxtrfullformat{\glslabel}{\glsinsert}%
+ \expandafter\Glsxtrfullformat\expandafter\glslabel
+ \expandafter{\glsinsert}%
}%
{%
% \end{macrocode}
% First use singular form, all caps:
% \begin{macrocode}
- \mfirstucMakeUppercase
- {\glsxtrfullformat{\glslabel}{\glsinsert}}%
+ \expandafter\GLSxtrfullformat\expandafter\glslabel
+ \expandafter{\glsinsert}%
}%
}%
}%
}%
{%
% \end{macrocode}
-% User supplied text.
+% Custom text provided in \cs{glsdisp}. (The insert is most likely
+% to be empty at this point.) Any inner formatting can be supplied with the custom
+% text.
% \begin{macrocode}
\glscustomtext
}%
@@ -17742,8 +23653,22 @@ defined}{}%
%\changes{1.17}{2017-08-09}{new}
% \begin{macrocode}
\newcommand*{\glsxtrsubsequentfmt}[2]{%
- \glsabbrvfont{\glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}%
- \ifglsxtrinsertinside \else#2\fi
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{\glsaccessshort{#1}\glsxtrgenentrytextfmt{#2}}%
+ \else
+ \glsabbrvfont{\glsaccessshort{#1}}\glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{\glsaccessfmtshort{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ \glsabbrvfont{\glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
}
\let\glsxtrdefaultsubsequentfmt\glsxtrsubsequentfmt
% \end{macrocode}
@@ -17754,8 +23679,22 @@ defined}{}%
%\changes{1.17}{2017-08-09}{new}
% \begin{macrocode}
\newcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glsabbrvfont{\glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}%
- \ifglsxtrinsertinside \else#2\fi
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{\glsaccessshortpl{#1}\glsxtrgenentrytextfmt{#2}}%
+ \else
+ \glsabbrvfont{\glsaccessshortpl{#1}}\glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{\glsaccessfmtshortpl{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ \glsabbrvfont{\glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
}
\let\glsxtrdefaultsubsequentplfmt\glsxtrsubsequentplfmt
% \end{macrocode}
@@ -17766,10 +23705,25 @@ defined}{}%
%\changes{1.17}{2017-08-09}{new}
% \begin{macrocode}
\newcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glsabbrvfont{\Glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}%
- \ifglsxtrinsertinside \else#2\fi
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{\Glsaccessshort{#1}\glsxtrgenentrytextfmt{#2}}%
+ \else
+ \glsabbrvfont{\Glsaccessshort{#1}}\glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{\Glsaccessfmtshort{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ \glsabbrvfont{\Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
}
\let\Glsxtrdefaultsubsequentfmt\Glsxtrsubsequentfmt
+\glsmfuaddmap{\glsxtrsubsequentfmt}{\Glsxtrsubsequentfmt}
% \end{macrocode}
%\end{macro}
%
@@ -17778,14 +23732,87 @@ defined}{}%
%\changes{1.17}{2017-08-09}{new}
% \begin{macrocode}
\newcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glsabbrvfont{\Glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}%
- \ifglsxtrinsertinside \else#2\fi
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{\Glsaccessshortpl{#1}\glsxtrgenentrytextfmt{#2}}%
+ \else
+ \glsabbrvfont{\Glsaccessshortpl{#1}}\glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{\Glsaccessfmtshortpl{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ \glsabbrvfont{\Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
}
\let\Glsxtrdefaultsubsequentplfmt\Glsxtrsubsequentplfmt
+\glsmfuaddmap{\glsxtrsubsequentplfmt}{\Glsxtrsubsequentplfmt}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrsubsequentfmt}
+% Subsequent use format (singular, all caps).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{\GLSaccessshort{#1}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ \glsabbrvfont{\GLSaccessshort{#1}}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{\GLSaccessfmtshort{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ \glsabbrvfont{\GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}
+\glsmfublocker{\GLSxtrsubsequentfmt}
+\let\GLSxtrdefaultsubsequentfmt\GLSxtrsubsequentfmt
% \end{macrocode}
%\end{macro}
%
-%\subsection{Abbreviation Styles Setup}
+%\begin{macro}{\GLSxtrsubsequentplfmt}
+% Subsequent use format (plural, all caps).
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{\GLSaccessshortpl{#1}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ \glsabbrvfont{\GLSaccessshortpl{#1}}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{\GLSaccessfmtshortpl{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ \glsabbrvfont{\GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsuppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}
+\glsmfublocker{\GLSxtrsubsequentplfmt}
+\let\GLSxtrdefaultsubsequentplfmt\GLSxtrsubsequentplfmt
+% \end{macrocode}
+%\end{macro}
+%
+%\subsubsection{Abbreviation Styles Setup}
%
%\begin{macro}{\setabbreviationstyle}
% \begin{macrocode}
@@ -17850,6 +23877,122 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrsetcomplexstyle}
+%\changes{1.49}{2022-10-14}{new}
+%Identify an entry as having a complex abbreviation style that
+%doesn't work with \cs{GLSfirst} etc. The argument is the entry
+%label. The second argument should be numeric: 1 (all caps doesn't
+%work), 2 (all caps and insert don't work), 3 (insert doesn't work).
+% \begin{macrocode}
+\newcommand*{\glsxtrsetcomplexstyle}[2]{%
+ \csdef{@glsxtr@has@complexstyle@#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@do@ifcomplexstyle@allcaps}
+%\changes{1.49}{2022-10-14}{new}
+%Do second argument if entry identified by first argument has a
+%problem with all caps. Does nothing otherwise.
+% \begin{macrocode}
+\newcommand*{\glsxtr@do@ifcomplexstyle@allcaps}[2]{%
+ \ifcsdef{@glsxtr@has@complexstyle@#1}%
+ {%
+ \ifnum\csuse{@glsxtr@has@complexstyle@#1}<1
+ \else
+ \ifnum\csuse{@glsxtr@has@complexstyle@#1}<3
+ #2%
+ \fi
+ \fi
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@do@ifcomplexstyle@insert}
+%\changes{1.49}{2022-10-14}{new}
+%Do second argument if entry identified by first argument has a
+%problem with the insert argument. Does nothing otherwise.
+% \begin{macrocode}
+\newcommand*{\glsxtr@do@ifcomplexstyle@insert}[2]{%
+ \ifcsdef{@glsxtr@has@complexstyle@#1}%
+ {%
+ \ifnum\csuse{@glsxtr@has@complexstyle@#1}<2
+ \else
+ #2%
+ \fi
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlossariesAbbrStyleTooComplexWarning}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GlossariesAbbrStyleTooComplexWarning}[2]{%
+ \GlossariesExtraWarning{Abbreviation style used by `#1' too complex #2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@check@complexstyle}
+%\changes{1.49}{2022-10-14}{new}
+%The first argument is the label the second is the insert.
+% \begin{macrocode}
+\newcommand*{\glsxtr@check@complexstyle}[2]{%
+ \ifx\glscapscase\@thirdofthree
+ \glsxtr@do@ifcomplexstyle@allcaps{#1}%
+ {%
+ \glsxtrifwasfirstuse
+ {%
+ \glsifplural
+ {%
+ \GlossariesAbbrStyleTooComplexWarning{#1}{for \string\GLSfirstplural.
+ Use \string\GLSpl{#1} or \string\GLSxtrfullpl{#1} instead.
+ Switching off all-caps%
+ }%
+ }%
+ {%
+ \GlossariesAbbrStyleTooComplexWarning{#1}{for \string\GLSfirst.
+ Use \string\GLS{#1} or \string\GLSxtrfull{#1} instead.
+ Switching off all-caps%
+ }%
+ }%
+ }%
+ {%
+ \glsifplural
+ {%
+ \GlossariesAbbrStyleTooComplexWarning{#1}{for \string\GLSplural.
+ Use \string\GLSpl{#1} or \string\GLSxtrshortpl{#1} instead.
+ Switching off all-caps%
+ }%
+ }%
+ {%
+ \GlossariesAbbrStyleTooComplexWarning{#1}{for \string\GLStext.
+ Use \string\GLS{#1} or \string\GLSxtrshort{#1} instead.
+ Switching off all-caps%
+ }%
+ }%
+ }%
+ \let\glscapscase\@firstofthree
+ }%
+ \fi
+ \ifstrempty{#2}{}%
+ {%
+ \glsxtr@do@ifcomplexstyle@insert{#1}%
+ {%
+ \GlossariesAbbrStyleTooComplexWarning{#1}%
+ {to support insert argument with commands like \string\glsfirst\space or
+ \string\glstext. Unexpected results may occur. Use commands
+ like \string\gls\space or \string\glsxtrshort\space instead}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\newabbreviationstyle}
% This is different from \cs{newacronymstyle}. The first argument is
% the label, the second argument sets the information required when
@@ -17877,8 +24020,16 @@ defined}{}%
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}%
\renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}%
+ \renewcommand*{\GLSxtrinlinefullformat}{\GLSxtrfullformat}%
\renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}%
\renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}%
+ \renewcommand*{\GLSxtrinlinefullplformat}{\GLSxtrfullplformat}%
+% \end{macrocode}
+%In the event that some custom styles predate the introduction of
+%the all caps versions, provide default definitions:
+% \begin{macrocode}
+ \renewcommand*{\GLSxtrfullformat}{\GLSxtr@fullformat@fallback}%
+ \renewcommand*{\GLSxtrfullplformat}{\GLSxtr@fullplformat@fallback}%
% \end{macrocode}
% Reset \cs{glsxtrsubsequentfmt} etc in case a style changes this.
% \begin{macrocode}
@@ -17886,6 +24037,8 @@ defined}{}%
\let\glsxtrsubsequentplfmt\glsxtrdefaultsubsequentplfmt
\let\Glsxtrsubsequentfmt\Glsxtrdefaultsubsequentfmt
\let\Glsxtrsubsequentplfmt\Glsxtrdefaultsubsequentplfmt
+ \let\GLSxtrsubsequentfmt\GLSxtrdefaultsubsequentfmt
+ \let\GLSxtrsubsequentplfmt\GLSxtrdefaultsubsequentplfmt
#3}%
}%
}
@@ -17914,8 +24067,26 @@ defined}{}%
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}%
\renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}%
+ \renewcommand*{\GLSxtrinlinefullformat}{\GLSxtrfullformat}%
\renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}%
\renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}%
+ \renewcommand*{\GLSxtrinlinefullplformat}{\GLSxtrfullplformat}%
+% \end{macrocode}
+%In the event that some custom styles predate the introduction of
+%the all caps versions, provide default definitions:
+% \begin{macrocode}
+ \renewcommand*{\GLSxtrfullformat}{\GLSxtr@fullformat@fallback}%
+ \renewcommand*{\GLSxtrfullplformat}{\GLSxtr@fullplformat@fallback}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{reset subsequent fmts}
+% Reset \cs{glsxtrsubsequentfmt} etc in case a style changes this.
+% \begin{macrocode}
+ \let\glsxtrsubsequentfmt\glsxtrdefaultsubsequentfmt
+ \let\glsxtrsubsequentplfmt\glsxtrdefaultsubsequentplfmt
+ \let\Glsxtrsubsequentfmt\Glsxtrdefaultsubsequentfmt
+ \let\Glsxtrsubsequentplfmt\Glsxtrdefaultsubsequentplfmt
+ \let\GLSxtrsubsequentfmt\GLSxtrdefaultsubsequentfmt
+ \let\GLSxtrsubsequentplfmt\GLSxtrdefaultsubsequentplfmt
#3}%
}%
}
@@ -17991,19 +24162,26 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\subsection{Predefined Styles (Default Font)}
+%\subsubsection{Predefined Styles}
% Define some common styles. These will set the \gloskey{first},
% \gloskey{firstplural}, \gloskey{text} and \gloskey{plural}
% keys, even if the \catattr{regular} attribute isn't set to
% \qt{true}. If this attribute is set, commands like \cs{gls} will
% use them as per a regular entry, otherwise those keys will be
% ignored unless explicitly invoked by the user with commands like
-% \cs{glsfirst}. In order for the first letter uppercase versions to
+% \cs{glsfirst}. In order for the sentence case versions to
% work correctly, \cs{glsxtrfullformat} needs to be expanded when
% those keys are set. The final optional argument of \cs{glsfirst}
% will behave differently to the final optional argument of \cs{gls}
% with some styles.
%
+%v1.49 has introduced innertextformat for formatting commands that
+%need access to the actual text (which is normally too deeply
+%embedded). The styles have been modified to allow for this. The all
+%caps versions also now need to be implemented within the styles as
+%again the text is now to deeply embedded for the case change to
+%otherwise work.
+%
%\begin{macro}{\ifglsxtrinsertinside}
%\changes{1.02}{2016-04-25}{new}
% Switch to determine if the insert text should be inside or outside
@@ -18013,16 +24191,6723 @@ defined}{}%
\glsxtrinsertinsidefalse
% \end{macrocode}
%\end{macro}
+%The abbreviation styles are now defined in the file
+%\texttt{glossaries-extra-abbrstyles.def}, which needs to be input
+%here:
+% \begin{macrocode}
+\input{glossaries-extra-abbrstyles.def}
+% \end{macrocode}
+%
+%\subsection{Using Entries in Headings}
+%
+% There are four main problems with using entries in sectioning
+% commands: they can mess with the first use flag if they end up in
+% the table of contents, they can add unwanted numbers to the
+% entry's location list, the label is corrupted if used inside
+% \cs{MakeUppercase} (which is used by the default headings style)
+% and they need to be expandable for PDF bookmarks. The
+% \sty{glossaries} package therefore recommends the use of the
+% expandable commands, such as \cs{glsentryshort}, instead but this
+% doesn't reflect the formatting since it doesn't include
+% \cs{glsabbrvfont}. The commands below are an attempt to get around
+% these problems.
+%
+% The PDF bookmark issue can easily be fixed with \sty{hyperref}'s
+% \cs{texorpdfstring} which can simply use the expandable command
+% in the PDF string case. The \TeX\ string case can now use
+% \cs{glsxtrshort} with the \gloskey[glslink]{noindex} key set, which
+% prevents the unwanted additions to the location list, and the
+% \gloskey[glslink]{hyper} key set to false, which prevents the problem of
+% nested links. This just leaves one thing left that needs to be
+% dealt with, and that's what to do if the heading style
+% uses \cs{MakeUppercase}.
+%
+% Note that \sty{glossaries} automatically loads \sty{textcase}
+% unless \sty{mfirstuc} 2.08+ is detected, so
+% the label can be protected from case change with \sty{textcase}'s
+% \cs{NoCaseChange}. This means that we don't have a problem
+% provided the page style uses \cs{MakeTextUppercase}, but the
+% default heading page style uses \cs{MakeUppercase}. (With newer
+% versions of \sty{mfirstuc}, exclusions are used to protect labels).
+%
+% To get around this, save the original definition of \cs{markboth}
+% and \cs{markright} and adjust it so that \cs{MakeUppercase} is
+% temporarily redefined to \cs{MakeTextUppercase}. Some packages or
+% classes redefine these commands, so we can't just assume they
+% still have the original kernel definition. This only needs to be
+% done with old versions of \sty{mfirstuc}.
+%
+%\begin{macro}{\markright}
+% Save original definition:
+% \begin{macrocode}
+\let\@glsxtr@org@markright\markright
+% \end{macrocode}
+% Redefine (grouping not added in case it interferes with the
+% original code):
+% \begin{macrocode}
+\renewcommand*{\markright}[1]{%
+ \glsxtrmarkhook
+ \@glsxtr@org@markright{\@glsxtrinmark#1\@glsxtrnotinmark}%
+ \glsxtrrestoremarkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\markboth}
+% Save original definition:
+% \begin{macrocode}
+\let\@glsxtr@org@markboth\markboth
+% \end{macrocode}
+% Redefine (grouping not added in case it interferes with the
+% original code):
+% \begin{macrocode}
+\renewcommand*{\markboth}[2]{%
+ \glsxtrmarkhook
+ \@glsxtr@org@markboth
+ {\@glsxtrinmark#1\@glsxtrnotinmark}%
+ {\@glsxtrinmark#2\@glsxtrnotinmark}%
+ \glsxtrrestoremarkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Also do this for \cs{@starttoc}
+%\begin{macro}{\@starttoc}
+% Save original definition:
+% \begin{macrocode}
+\let\@glsxtr@org@@starttoc\@starttoc
+% \end{macrocode}
+% Redefine:
+% \begin{macrocode}
+\renewcommand*{\@starttoc}[1]{%
+ \let\glsxtrifintoc\@firstoftwo
+ \glsxtrmarkhook
+ \@glsxtrinmark
+ \@glsxtr@org@@starttoc{#1}%
+ \@glsxtrnotinmark
+ \glsxtrrestoremarkhook
+ \let\glsxtrifintoc\@secondoftwo
+}
+% \end{macrocode}
+%\end{macro}
+%
+% If this causes a problem provide a simple way of switching back to
+% the original definitions:
+%\begin{macro}{\glsxtrRevertMarks}
+% \begin{macrocode}
+\newcommand*{\glsxtrRevertMarks}{%
+ \let\markright\@glsxtr@org@markright
+ \let\markboth\@glsxtr@org@markboth
+ \let\@starttoc\@glsxtr@org@@starttoc
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrRevertTocMarks}
+%\changes{1.31}{2018-05-09}{new}
+%Just restores \cs{@starttoc}.
+% \begin{macrocode}
+\newcommand*{\glsxtrRevertTocMarks}{%
+ \let\@starttoc\@glsxtr@org@@starttoc
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifinmark}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrifinmark}[2]{#2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrinmark}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@glsxtrinmark}{%
+ \let\glsxtrifinmark\@firstoftwo
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrnotinmark}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@glsxtrnotinmark}{%
+ \let\glsxtrifinmark\@secondoftwo
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitleorpdforheading}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrtitleorpdforheading}[3]{%
+ \glsxtrifinmark{#3}{\glstexorpdfstring{#1}{#2}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\changes{1.49}{2022-10-14}{add gettitlestring patch for \cs{glsxtrtitleorpdforheading}}
+%This will require \verb|\GetTitleStringSetup{expand}| to work.
+% \begin{macrocode}
+\ifdef\GetTitleStringDisableCommands
+{\GetTitleStringDisableCommands{\let\glsxtrtitleorpdforheading\@thirdofthree
+ \let\glsxtrifinmark\@firstoftwo}}
+{}
+% \end{macrocode}
+%
+%\begin{macro}{\glsxtrmarkhook}
+% Hook used in new definition of \cs{markboth} and \cs{markright}
+% to make some changes to apply to the marks:
+% \begin{macrocode}
+\newcommand*{\glsxtrmarkhook}{%
+% \end{macrocode}
+% Save current definitions:
+% \begin{macrocode}
+ \@glsxtr@saveMakeUppercase
+ \let\@glsxtr@org@glsxtrtitleorpdforheading\glsxtrtitleorpdforheading
+ \let\@glsxtr@org@glsxtrtitleshort\glsxtrtitleshort
+ \let\@glsxtr@org@glsxtrtitleshortpl\glsxtrtitleshortpl
+ \let\@glsxtr@org@Glsxtrtitleshort\Glsxtrtitleshort
+ \let\@glsxtr@org@Glsxtrtitleshortpl\Glsxtrtitleshortpl
+ \let\@glsxtr@org@GLSxtrtitleshort\GLSxtrtitleshort
+ \let\@glsxtr@org@GLSxtrtitleshortpl\GLSxtrtitleshortpl
+ \let\@glsxtr@org@glsxtrtitlename\glsxtrtitlename
+ \let\@glsxtr@org@Glsxtrtitlename\Glsxtrtitlename
+ \let\@glsxtr@org@glsxtrtitletext\glsxtrtitletext
+ \let\@glsxtr@org@Glsxtrtitletext\Glsxtrtitletext
+ \let\@glsxtr@org@GLSxtrtitletext\GLSxtrtitletext
+ \let\@glsxtr@org@glsxtrtitleplural\glsxtrtitleplural
+ \let\@glsxtr@org@Glsxtrtitleplural\Glsxtrtitleplural
+ \let\@glsxtr@org@GLSxtrtitleplural\GLSxtrtitleplural
+ \let\@glsxtr@org@glsxtrtitlefirst\glsxtrtitlefirst
+ \let\@glsxtr@org@Glsxtrtitlefirst\Glsxtrtitlefirst
+ \let\@glsxtr@org@glsxtrtitlefirstplural\glsxtrtitlefirstplural
+ \let\@glsxtr@org@Glsxtrtitlefirstplural\Glsxtrtitlefirstplural
+ \let\@glsxtr@org@GLSxtrtitlefirstplural\GLSxtrtitlefirstplural
+ \let\@glsxtr@org@glsxtrtitlelong\glsxtrtitlelong
+ \let\@glsxtr@org@glsxtrtitlelongpl\glsxtrtitlelongpl
+ \let\@glsxtr@org@Glsxtrtitlelong\Glsxtrtitlelong
+ \let\@glsxtr@org@Glsxtrtitlelongpl\Glsxtrtitlelongpl
+ \let\@glsxtr@org@glsxtrtitlefull\glsxtrtitlefull
+ \let\@glsxtr@org@glsxtrtitlefullpl\glsxtrtitlefullpl
+ \let\@glsxtr@org@Glsxtrtitlefull\Glsxtrtitlefull
+ \let\@glsxtr@org@Glsxtrtitlefullpl\Glsxtrtitlefullpl
+ \let\@glsxtr@org@GLSxtrtitlefull\GLSxtrtitlefull
+ \let\@glsxtr@org@GLSxtrtitlefullpl\GLSxtrtitlefullpl
+% \end{macrocode}
+% New definitions
+% \begin{macrocode}
+ \let\glsxtrifinmark\@firstoftwo
+ \@glsxtr@assignMakeUppercase
+ \let\glsxtrtitleorpdforheading\@thirdofthree
+ \let\glsxtrtitleshort\glsxtrheadshort
+ \let\glsxtrtitleshortpl\glsxtrheadshortpl
+ \let\Glsxtrtitleshort\Glsxtrheadshort
+ \let\Glsxtrtitleshortpl\Glsxtrheadshortpl
+ \let\GLSxtrtitleshort\GLSxtrheadshort
+ \let\GLSxtrtitleshortpl\GLSxtrheadshortpl
+ \let\glsxtrtitlename\glsxtrheadname
+ \let\Glsxtrtitlename\Glsxtrheadname
+ \let\GLSxtrtitlename\GLSxtrheadname
+ \let\glsxtrtitletext\glsxtrheadtext
+ \let\Glsxtrtitletext\Glsxtrheadtext
+ \let\GLSxtrtitletext\GLSxtrheadtext
+ \let\glsxtrtitleplural\glsxtrheadplural
+ \let\Glsxtrtitleplural\Glsxtrheadplural
+ \let\GLSxtrtitleplural\GLSxtrheadplural
+ \let\glsxtrtitlefirst\glsxtrheadfirst
+ \let\Glsxtrtitlefirst\Glsxtrheadfirst
+ \let\GLSxtrtitlefirst\GLSxtrheadfirst
+ \let\glsxtrtitlefirstplural\glsxtrheadfirstplural
+ \let\Glsxtrtitlefirstplural\Glsxtrheadfirstplural
+ \let\GLSxtrtitlefirstplural\GLSxtrheadfirstplural
+ \let\glsxtrtitlelong\glsxtrheadlong
+ \let\glsxtrtitlelongpl\glsxtrheadlongpl
+ \let\Glsxtrtitlelong\Glsxtrheadlong
+ \let\Glsxtrtitlelongpl\Glsxtrheadlongpl
+ \let\glsxtrtitlefull\glsxtrheadfull
+ \let\glsxtrtitlefullpl\glsxtrheadfullpl
+ \let\Glsxtrtitlefull\Glsxtrheadfull
+ \let\Glsxtrtitlefullpl\Glsxtrheadfullpl
+ \let\GLSxtrtitlefull\GLSxtrheadfull
+ \let\GLSxtrtitlefullpl\GLSxtrheadfullpl
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrrestoremarkhook}
+% Hook used in new definition of \cs{markboth} and \cs{markright}
+% to restore the modified definitions. (This is in case the original
+% \cs{markboth} and \cs{markright} shouldn't be grouped for some
+% reason. There already is some grouping within those original
+% definitions, but some of the code lies outside that grouping, and
+% possibly there's a reason for it.)
+% \begin{macrocode}
+\newcommand*{\glsxtrrestoremarkhook}{%
+ \let\glsxtrifinmark\@secondoftwo
+ \@glsxtr@restoreMakeUppercase
+ \let\glsxtrtitleorpdforheading\@glsxtr@org@glsxtrtitleorpdforheading
+ \let\glsxtrtitleshort\@glsxtr@org@glsxtrtitleshort
+ \let\glsxtrtitleshortpl\@glsxtr@org@glsxtrtitleshortpl
+ \let\Glsxtrtitleshort\@glsxtr@org@Glsxtrtitleshort
+ \let\Glsxtrtitleshortpl\@glsxtr@org@Glsxtrtitleshortpl
+ \let\GLSxtrtitleshort\@glsxtr@org@GLSxtrtitleshort
+ \let\GLSxtrtitleshortpl\@glsxtr@org@GLSxtrtitleshortpl
+ \let\glsxtrtitlename\@glsxtr@org@glsxtrtitlename
+ \let\Glsxtrtitlename\@glsxtr@org@Glsxtrtitlename
+ \let\GLSxtrtitlename\@glsxtr@org@GLSxtrtitlename
+ \let\glsxtrtitletext\@glsxtr@org@glsxtrtitletext
+ \let\Glsxtrtitletext\@glsxtr@org@Glsxtrtitletext
+ \let\GLSxtrtitletext\@glsxtr@org@GLSxtrtitletext
+ \let\glsxtrtitleplural\@glsxtr@org@glsxtrtitleplural
+ \let\Glsxtrtitleplural\@glsxtr@org@Glsxtrtitleplural
+ \let\GLSxtrtitleplural\@glsxtr@org@GLSxtrtitleplural
+ \let\glsxtrtitlefirst\@glsxtr@org@glsxtrtitlefirst
+ \let\Glsxtrtitlefirst\@glsxtr@org@Glsxtrtitlefirst
+ \let\GLSxtrtitlefirst\@glsxtr@org@GLSxtrtitlefirst
+ \let\glsxtrtitlefirstplural\@glsxtr@org@glsxtrtitlefirstplural
+ \let\Glsxtrtitlefirstplural\@glsxtr@org@Glsxtrtitlefirstplural
+ \let\GLSxtrtitlefirstplural\@glsxtr@org@GLSxtrtitlefirstplural
+ \let\glsxtrtitlelong\@glsxtr@org@glsxtrtitlelong
+ \let\glsxtrtitlelongpl\@glsxtr@org@glsxtrtitlelongpl
+ \let\Glsxtrtitlelong\@glsxtr@org@Glsxtrtitlelong
+ \let\Glsxtrtitlelongpl\@glsxtr@org@Glsxtrtitlelongpl
+ \let\glsxtrtitlefull\@glsxtr@org@glsxtrtitlefull
+ \let\glsxtrtitlefullpl\@glsxtr@org@glsxtrtitlefullpl
+ \let\Glsxtrtitlefull\@glsxtr@org@Glsxtrtitlefull
+ \let\Glsxtrtitlefullpl\@glsxtr@org@Glsxtrtitlefullpl
+ \let\GLSxtrtitlefull\@glsxtr@org@GLSxtrtitlefull
+ \let\GLSxtrtitlefullpl\@glsxtr@org@GLSxtrtitlefullpl
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\changes{0.5.1}{2015-12-07}{removed \cs{ifglsxtruseuchead}}
+% Instead of using one document-wide conditional, use
+% \catattr{headuc} attribute to determine whether or not to use the
+% all upper case form.
+%
+%\begin{macro}{\glsxtrtitleopts}
+%\changes{1.49}{2022-10-14}{new}
+%Make it possible to change the default options within the title
+%(but not the page header or table of contents).
+% \begin{macrocode}
+\newcommand*{\glsxtrtitleopts}{noindex,hyper=false}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@title@field}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsxtr@title@field}\marg{cs}\marg{label}
+%\end{definition}
+%Used by all the \cs{glsxtrtitle\meta{field}} commands for
+%consistency.
+% \begin{macrocode}
+\newcommand*{\glsxtr@title@field}[2]{%
+ \expandafter#1\expandafter[\glsxtrtitleopts]{#2}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadshort}
+% Command used to display short form in the page header.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadshort}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitleshort}
+% Command to display short form of abbreviation in section title.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitleshort}[1]{%
+ \glsxtr@title@field\glsxtrshort{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadshortpl}
+% Command used to display plural short form in the page header.
+% If you want the text converted to upper case, this needs to be
+% redefined to use \cs{GLSxtrshortpl} instead. If you are using a
+% smallcaps style, the default fonts don't provide italic smallcaps.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadshortpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitleshortpl}
+% Command to display plural short form of abbreviation in section title.
+%\changes{1.03}{2016-04-27}{bug fix: changed \cs{glsxtrshort} to
+%\cs{glsxtrshortpl}}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitleshortpl}[1]{%
+ \glsxtr@title@field\glsxtrshortpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadshort}
+% Command used to display short form in the page header with the
+% first letter converted to upper case.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadshort}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitleshort}
+% Command to display short form of abbreviation in section title
+% with the first letter converted to upper case.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitleshort}[1]{%
+ \glsxtr@title@field\Glsxtrshort{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrheadshort}
+%\changes{1.49}{2022-10-14}{new}
+%There's no need to check for the headuc attribute.
+% \begin{macrocode}
+\newcommand*{\GLSxtrheadshort}[1]{%
+ \protect\NoCaseChange
+ {%
+ \GLSxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrtitleshort}
+%\changes{1.42}{2020-02-03}{new}
+% Command to display short form of abbreviation in section title
+% in all upper case.
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrtitleshort}[1]{%
+ \glsxtr@title@field\GLSxtrshort{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrheadshortpl}
+%\changes{1.49}{2022-10-14}{new}
+%There's no need to check for the headuc attribute.
+% \begin{macrocode}
+\newcommand*{\GLSxtrheadshortpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \GLSxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadshortpl}
+% Command used to display plural short form in the page header with the
+% first letter converted to upper case.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadshortpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitleshortpl}
+% Command to display plural short form of abbreviation in section title
+% with the first letter converted to upper case.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitleshortpl}[1]{%
+ \glsxtr@title@field\Glsxtrshortpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrtitleshortpl}
+%\changes{1.42}{2020-02-03}{new}
+% Command to display plural short form of abbreviation in section title
+% in all upper case.
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrtitleshortpl}[1]{%
+ \glsxtr@title@field\GLSxtrshortpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadname}
+% As above but for the \gloskey{name} value.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadname}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSname[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsname[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlename}
+% Command to display \gloskey{name} value in section title.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlename}[1]{%
+ \glsxtr@title@field\glsname{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadname}
+% First letter converted to upper case
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadname}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSname[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsname[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlename}
+% Command to display \gloskey{name} value in section title
+% with the first letter changed to upper case.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlename}[1]{%
+ \glsxtr@title@field\Glsname{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrheadname}
+%\changes{1.49}{2022-10-14}{new}
+%There's no need to check for the headuc attribute.
+% \begin{macrocode}
+\newcommand*{\GLSxtrheadname}[1]{%
+ \protect\NoCaseChange
+ {%
+ \GLSname[noindex,hyper=false]{#1}[]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrtitlename}
+% Command to display \gloskey{name} value in section title
+% in all upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrtitlename}[1]{%
+ \glsxtr@title@field\GLSname{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadtext}
+% As above but for the \gloskey{text} value.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadtext}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLStext[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glstext[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitletext}
+% Command to display \gloskey{text} value in section title.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitletext}[1]{%
+ \glsxtr@title@field\glstext{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\Glsxtrheadtext}
+% First letter converted to upper case
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadtext}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLStext[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glstext[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitletext}
+% Command to display \gloskey{text} value in section title
+% with the first letter changed to upper case.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitletext}[1]{%
+ \glsxtr@title@field\Glstext{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrheadtext}
+%\changes{1.49}{2022-10-14}{new}
+%There's no need to check for the headuc attribute.
+% \begin{macrocode}
+\newcommand*{\GLSxtrheadtext}[1]{%
+ \protect\NoCaseChange
+ {%
+ \GLStext[noindex,hyper=false]{#1}[]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrtitletext}
+% Command to display \gloskey{text} value in section title
+% in all upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrtitletext}[1]{%
+ \glsxtr@title@field\GLStext{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadplural}
+% As above but for the \gloskey{plural} value.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSplural[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsplural[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitleplural}
+% Command to display \gloskey{plural} value in section title.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitleplural}[1]{%
+ \glsxtr@title@field\glsplural{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadplural}
+% Convert first letter to upper case.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSplural[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsplural[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitleplural}
+% Command to display \gloskey{plural} value in section title
+% with the first letter changed to upper case.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitleplural}[1]{%
+ \glsxtr@title@field\Glsplural{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrheadplural}
+%\changes{1.49}{2022-10-14}{new}
+%There's no need to check for the headuc attribute.
+% \begin{macrocode}
+\newcommand*{\GLSxtrheadplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \GLSplural[noindex,hyper=false]{#1}[]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrtitleplural}
+%\changes{1.42}{2020-02-03}{new}
+% Command to display \gloskey{plural} value in section title
+% in all upper case.
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrtitleplural}[1]{%
+ \glsxtr@title@field\GLSplural{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadfirst}
+% As above but for the \gloskey{first} value.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadfirst}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSfirst[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsfirst[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlefirst}
+% Command to display \gloskey{first} value in section title.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlefirst}[1]{%
+ \glsxtr@title@field\glsfirst{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadfirst}
+% First letter converted to upper case
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadfirst}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSfirst[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsfirst[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlefirst}
+% Command to display \gloskey{first} value in section title
+% with the first letter changed to upper case.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlefirst}[1]{%
+ \glsxtr@title@field\Glsfirst{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrheadfirst}
+%\changes{1.49}{2022-10-14}{new}
+%There's no need to check for the headuc attribute.
+% \begin{macrocode}
+\newcommand*{\GLSxtrheadfirst}[1]{%
+ \protect\NoCaseChange
+ {%
+ \GLSfirst[noindex,hyper=false]{#1}[]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrtitlefirst}
+%\changes{1.42}{2020-02-03}{new}
+% Command to display \gloskey{first} value in section title
+% in all upper case.
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrtitlefirst}[1]{%
+ \glsxtr@title@field\GLSfirst{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadfirstplural}
+% As above but for the \gloskey{firstplural} value.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadfirstplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlefirstplural}
+% Command to display \gloskey{firstplural} value in section title.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlefirstplural}[1]{%
+ \glsxtr@title@field\glsfirstplural{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadfirstplural}
+% First letter converted to upper case
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadfirstplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlefirstplural}
+% Command to display \gloskey{first} value in section title
+% with the first letter changed to upper case.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlefirstplural}[1]{%
+ \glsxtr@title@field\Glsfirstplural{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrheadfirstplural}
+%\changes{1.49}{2022-10-14}{new}
+%There's no need to check for the headuc attribute.
+% \begin{macrocode}
+\newcommand*{\GLSxtrheadfirstplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \GLSfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrtitlefirstplural}
+%\changes{1.42}{2020-02-03}{new}
+% Command to display \gloskey{first} value in section title
+% in all upper case.
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrtitlefirstplural}[1]{%
+ \glsxtr@title@field\GLSfirstplural{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadlong}
+% Command used to display long form in the page header.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadlong}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlelong}
+% Command to display long form of abbreviation in section title.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlelong}[1]{%
+ \glsxtr@title@field\glsxtrlong{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadlongpl}
+% Command used to display plural long form in the page header.
+% If you want the text converted to upper case, this needs to be
+% redefined to use \cs{GLSxtrlongpl} instead. If you are using a
+% smallcaps style, the default fonts don't provide italic smallcaps.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadlongpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlelongpl}
+% Command to display plural long form of abbreviation in section title.
+%\changes{1.02}{2016-04-25}{new}
+%\changes{1.03}{2016-04-27}{bug fix: changed \cs{glsxtrlong} to
+%\cs{glsxtrlongpl}}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlelongpl}[1]{%
+ \glsxtr@title@field\glsxtrlongpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadlong}
+% Command used to display long form in the page header with the
+% first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadlong}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlelong}
+% Command to display long form of abbreviation in section title
+% with the first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlelong}[1]{%
+ \glsxtr@title@field\Glsxtrlong{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrtitlelong}
+% Command to display long form of abbreviation in section title
+% in all upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrtitlelong}[1]{%
+ \glsxtr@title@field\GLSxtrlong{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrheadlong}
+%\changes{1.49}{2022-10-14}{new}
+%There's no need to check for the headuc attribute.
+% \begin{macrocode}
+\newcommand*{\GLSxtrheadlong}[1]{%
+ \protect\NoCaseChange
+ {%
+ \GLSxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadlongpl}
+% Command used to display plural long form in the page header with the
+% first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadlongpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlelongpl}
+% Command to display plural long form of abbreviation in section title
+% with the first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlelongpl}[1]{%
+ \glsxtr@title@field\Glsxtrlongpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrtitlelongpl}
+% Command to display plural long form of abbreviation in section title
+% in all upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrtitlelongpl}[1]{%
+ \glsxtr@title@field\GLSxtrlongpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrheadlongpl}
+%\changes{1.49}{2022-10-14}{new}
+%There's no need to check for the headuc attribute.
+% \begin{macrocode}
+\newcommand*{\GLSxtrheadlongpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \GLSxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadfull}
+% Command used to display full form in the page header.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadfull}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlefull}
+% Command to display full form of abbreviation in section title.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlefull}[1]{%
+ \glsxtr@title@field\glsxtrfull{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadfullpl}
+% Command used to display plural full form in the page header.
+% If you want the text converted to upper case, this needs to be
+% redefined to use \cs{GLSxtrfullpl} instead. If you are using a
+% smallcaps style, the default fonts don't provide italic smallcaps.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadfullpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlefullpl}
+% Command to display plural full form of abbreviation in section title.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlefullpl}[1]{%
+ \glsxtr@title@field\glsxtrfullpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadfull}
+% Command used to display full form in the page header with the
+% first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadfull}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlefull}
+% Command to display full form of abbreviation in section title
+% with the first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlefull}[1]{%
+ \glsxtr@title@field\Glsxtrfull{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrheadfull}
+%\changes{1.49}{2022-10-14}{new}
+%There's no need to check for the headuc attribute.
+% \begin{macrocode}
+\newcommand*{\GLSxtrheadfull}[1]{%
+ \protect\NoCaseChange
+ {%
+ \GLSxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrtitlefull}
+% Command to display full form of abbreviation in section title
+% in all upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrtitlefull}[1]{%
+ \glsxtr@title@field\GLSxtrfull{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadfullpl}
+% Command used to display plural full form in the page header with the
+% first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadfullpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsxtrifheaduc{#1}%
+ {%
+ \GLSxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlefullpl}
+% Command to display plural full form of abbreviation in section title
+% with the first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlefullpl}[1]{%
+ \glsxtr@title@field\Glsxtrfullpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrheadfullpl}
+%\changes{1.49}{2022-10-14}{new}
+%There's no need to check for the headuc attribute.
+% \begin{macrocode}
+\newcommand*{\GLSxtrheadfullpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \GLSxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrtitlefullpl}
+% Command to display plural full form of abbreviation in section title
+% in all upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrtitlefullpl}[1]{%
+ \glsxtr@title@field\GLSxtrfullpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtshort}
+% Provide a way of using the formatted short form in section
+% headings. If \sty{hyperref} has been loaded, use
+% \cs{texorpdfstring} for convenience in PDF bookmarks.
+%\changes{0.2}{2015-11-30}{new}
+%\changes{0.4}{2015-12-03}{changed to use \cs{glsxtrshort}}
+%\changes{0.5}{2015-12-07}{changed to use \cs{glsxtrtitleshort}}
+%\changes{0.5}{2015-12-07}{renamed from \cs{glsentryfmtshort}}
+% \begin{macrocode}
+\newcommand*{\glsfmtshort}[1]{%
+ \glstexorpdfstring
+ {\glsxtrtitleshort{#1}}%
+ {\glsentryshort{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%Similarly for the plural version.
+%\begin{macro}{\glsfmtshortpl}
+%\changes{0.2}{2015-11-30}{new}
+%\changes{0.4}{2015-12-03}{changed to use \cs{glsxtrshortpl}}
+%\changes{0.5}{2015-12-07}{changed to use \cs{glsxtrtitleshortpl}}
+%\changes{0.5}{2015-12-07}{renamed from \cs{glsentryfmtshortpl}}
+% \begin{macrocode}
+\newcommand*{\glsfmtshortpl}[1]{%
+ \glstexorpdfstring
+ {\glsxtrtitleshortpl{#1}}%
+ {\glsentryshortpl{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+% Use the expandable \cs{MFUsentencecase} in the PDF bookmark.
+%\begin{macro}{\Glsfmtshort}
+% Singular form (first letter uppercase).
+%\changes{0.2}{2015-11-30}{new}
+%\changes{0.4}{2015-12-03}{changed to use \cs{Glsxtrshort}}
+%\changes{0.5}{2015-12-07}{changed to use \cs{Glsxtrtitleshort}}
+%\changes{0.5}{2015-12-07}{renamed from \cs{Glsentryfmtshort}}
+%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}}
+% \begin{macrocode}
+\newcommand*{\Glsfmtshort}[1]{%
+ \glstexorpdfstring
+ {\Glsxtrtitleshort{#1}}%
+ {\MFUsentencecase{\glsentryshort{#1}}}%
+}
+\glsmfuaddmap{\glsfmtshort}{\Glsfmtshort}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsfmtshortpl}
+%Plural form (first letter uppercase).
+%\changes{0.2}{2015-11-30}{new}
+%\changes{0.4}{2015-12-03}{changed to use \cs{glsxtrshortpl}}
+%\changes{0.5}{2015-12-07}{changed to use \cs{Glsxtrtitleshortpl}}
+%\changes{0.5}{2015-12-07}{renamed from \cs{Glsentryfmtshortpl}}
+%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}}
+% \begin{macrocode}
+\newcommand*{\Glsfmtshortpl}[1]{%
+ \glstexorpdfstring
+ {\Glsxtrtitleshortpl{#1}}%
+ {\MFUsentencecase{\glsentryshortpl{#1}}}%
+}
+\glsmfuaddmap{\glsfmtshortpl}{\Glsfmtshortpl}
+% \end{macrocode}
+%\end{macro}
+%
+% Similarly for all-caps.
+%\begin{macro}{\GLSfmtshort}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GLSfmtshort}[1]{%
+ \glstexorpdfstring
+ {\GLSxtrtitleshort{#1}}%
+ {\GLSxtrusefield{#1}{short}}%
+}
+\glsmfublocker{\GLSfmtshort}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSfmtshortpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\GLSfmtshortpl}[1]{%
+ \glstexorpdfstring
+ {\GLSxtrtitleshortpl{#1}}%
+ {\GLSxtrusefield{#1}{shortpl}}%
+}
+\glsmfublocker{\GLSfmtshortpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtname}
+%As above but for the \gloskey{name} value.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsfmtname}[1]{%
+ \glstexorpdfstring
+ {\glsxtrtitlename{#1}}%
+ {\glsentryname{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtname}
+%First letter converted to upper case.
+%\changes{1.21}{2017-11-03}{new}
+%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}}
+% \begin{macrocode}
+\newcommand*{\Glsfmtname}[1]{%
+ \glstexorpdfstring
+ {\Glsxtrtitlename{#1}}%
+ {\MFUsentencecase{\glsentryname{#1}}}%
+}
+\glsmfuaddmap{\glsfmtname}{\Glsfmtname}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSfmtname}
+%All upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\GLSfmtname}[1]{%
+ \glstexorpdfstring
+ {\GLSxtrtitlename{#1}}%
+ {\GLSxtrusefield{#1}{name}}%
+}
+\glsmfublocker{\GLSfmtname}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\glsfmttext}
+%As above but for the \gloskey{text} value.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\glsfmttext}[1]{%
+ \glstexorpdfstring
+ {\glsxtrtitletext{#1}}%
+ {\glsentrytext{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmttext}
+%First letter converted to upper case.
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}}
+% \begin{macrocode}
+\newcommand*{\Glsfmttext}[1]{%
+ \glstexorpdfstring
+ {\Glsxtrtitletext{#1}}%
+ {\MFUsentencecase{\glsentrytext{#1}}}%
+}
+\glsmfuaddmap{\glsfmttext}{\Glsfmttext}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSfmttext}
+%All upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\GLSfmttext}[1]{%
+ \glstexorpdfstring
+ {\GLSxtrtitletext{#1}}%
+ {\GLSxtrusefield{#1}{text}}%
+}
+\glsmfublocker{\GLSfmttext}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtplural}
+%As above but for the \gloskey{plural} value.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\glsfmtplural}[1]{%
+ \glstexorpdfstring
+ {\glsxtrtitleplural{#1}}%
+ {\glsentryplural{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtplural}
+%First letter converted to upper case.
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}}
+% \begin{macrocode}
+\newcommand*{\Glsfmtplural}[1]{%
+ \glstexorpdfstring
+ {\Glsxtrtitleplural{#1}}%
+ {\MFUsentencecase{\glsentryplural{#1}}}%
+}
+\glsmfuaddmap{\glsfmtplural}{\Glsfmtplural}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSfmtplural}
+%All upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\GLSfmtplural}[1]{%
+ \glstexorpdfstring
+ {\GLSxtrtitleplural{#1}}%
+ {\GLSxtrusefield{#1}{plural}}%
+}
+\glsmfublocker{\GLSfmtplural}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtfirst}
+%As above but for the \gloskey{first} value.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\glsfmtfirst}[1]{%
+ \glstexorpdfstring
+ {\glsxtrtitlefirst{#1}}%
+ {\glsentryfirst{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtfirst}
+%First letter converted to upper case.
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}}
+% \begin{macrocode}
+\newcommand*{\Glsfmtfirst}[1]{%
+ \glstexorpdfstring
+ {\Glsxtrtitlefirst{#1}}%
+ {\MFUsentencecase{\glsentryfirst{#1}}}%
+}
+\glsmfuaddmap{\glsfmtfirst}{\Glsfmtfirst}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSfmtfirst}
+%All upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\GLSfmtfirst}[1]{%
+ \glstexorpdfstring
+ {\GLSxtrtitlefirst{#1}}%
+ {\GLSxtrusefield{#1}{first}}%
+}
+\glsmfublocker{\GLSfmtfirst}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtfirstpl}
+%As above but for the \gloskey{firstplural} value.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\glsfmtfirstpl}[1]{%
+ \glstexorpdfstring
+ {\glsxtrtitlefirstplural{#1}}%
+ {\GLSxtrusefield{#1}{firstpl}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtfirstpl}
+%First letter converted to upper case.
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}}
+% \begin{macrocode}
+\newcommand*{\Glsfmtfirstpl}[1]{%
+ \glstexorpdfstring
+ {\Glsxtrtitlefirstplural{#1}}%
+ {\MFUsentencecase{\glsentryfirstplural{#1}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSfmtfirstpl}
+%All upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\GLSfmtfirstpl}[1]{%
+ \glstexorpdfstring
+ {\GLSxtrtitlefirstplural{#1}}%
+ {\GLSxtrusefield{#1}{firstpl}}%
+}
+\glsmfublocker{\GLSfmtfirstpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtlong}
+%As above but for the \gloskey{long} value.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\glsfmtlong}[1]{%
+ \glstexorpdfstring
+ {\glsxtrtitlelong{#1}}%
+ {\glsentrylong{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtlong}
+%First letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}}
+% \begin{macrocode}
+\newcommand*{\Glsfmtlong}[1]{%
+ \glstexorpdfstring
+ {\Glsxtrtitlelong{#1}}%
+ {\MFUsentencecase{\glsentrylong{#1}}}%
+}
+\glsmfuaddmap{\glsfmtlong}{\Glsfmtlong}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSfmtlong}
+%All upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\GLSfmtlong}[1]{%
+ \glstexorpdfstring
+ {\GLSxtrtitlelong{#1}}%
+ {\GLSxtrusefield{#1}{long}}%
+}
+\glsmfublocker{\GLSfmtlong}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtlongpl}
+%As above but for the \gloskey{longplural} value.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\glsfmtlongpl}[1]{%
+ \glstexorpdfstring
+ {\glsxtrtitlelongpl{#1}}%
+ {\glsentrylongpl{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtlongpl}
+%First letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}}
+% \begin{macrocode}
+\newcommand*{\Glsfmtlongpl}[1]{%
+ \glstexorpdfstring
+ {\Glsxtrtitlelongpl{#1}}%
+ {\MFUsentencecase{\glsentrylongpl{#1}}}%
+}
+\glsmfuaddmap{\glsfmtlongpl}{\Glsfmtlongpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSfmtlongpl}
+%All upper case.
+%\changes{1.42}{2020-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\GLSfmtlongpl}[1]{%
+ \glstexorpdfstring
+ {\GLSxtrtitlelongpl{#1}}%
+ {\GLSxtrusefield{#1}{longpl}}%
+}
+\glsmfublocker{\GLSfmtlongpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glspdffmtfull}
+%\changes{1.42}{2020-02-03}{new}
+%Can't use \cs{glsxtrinlinefullformat} in PDF bookmarks as it's not
+%fully expandable. This command is for the PDF part of
+%\cs{texorpdfstring} for the full form.
+% \begin{macrocode}
+\newcommand*{\glspdffmtfull}[1]{\glsentrylong{#1} (\glsentryshort{#1})}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glspdffmtfullpl}
+%\changes{1.42}{2020-02-03}{new}
+%Likewise for plural.
+% \begin{macrocode}
+\newcommand*{\glspdffmtfullpl}[1]{\glsentrylongpl{#1} (\glsentryshortpl{#1})}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsfmtfull}
+%In-line full format.
+%\changes{1.02}{2016-04-25}{new}
+%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfull}}
+% \begin{macrocode}
+\newcommand*{\glsfmtfull}[1]{%
+ \glstexorpdfstring
+ {\glsxtrtitlefull{#1}}%
+ {\glspdffmtfull{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtfull}
+%First letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfull}}
+%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}}
+% \begin{macrocode}
+\newcommand*{\Glsfmtfull}[1]{%
+ \glstexorpdfstring
+ {\Glsxtrtitlefull{#1}}%
+ {\MFUsentencecase{\glspdffmtfull{#1}{}}}%
+}
+\glsmfuaddmap{\glsfmtfull}{\Glsfmtfull}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSfmtfull}
+%All upper case. This explicitly uses \cs{text\_uppercase:n} in case
+%an old version of \sty{glossaries} or \sty{mfirstuc} is present.
+%\changes{1.42}{2020-02-03}{new}
+%\changes{1.49}{2022-10-14}{add upper case bookmark}
+% \begin{macrocode}
+\ExplSyntaxOn
+\newcommand*{\GLSfmtfull}[1]{%
+ \glstexorpdfstring
+ {\GLSxtrtitlefull{#1}}%
+ {\text_uppercase:n{\glspdffmtfull{#1}}}%
+}
+\ExplSyntaxOff
+\glsmfublocker{\GLSfmtfull}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtfullpl}
+%In-line full plural format.
+%\changes{1.02}{2016-04-25}{new}
+%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfullpl}}
+% \begin{macrocode}
+\newcommand*{\glsfmtfullpl}[1]{%
+ \glstexorpdfstring
+ {\glsxtrtitlefullpl{#1}}%
+ {\glspdffmtfullpl{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtfullpl}
+%First letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfullpl}}
+%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}}
+% \begin{macrocode}
+\newcommand*{\Glsfmtfullpl}[1]{%
+ \glstexorpdfstring
+ {\Glsxtrtitlefullpl{#1}}%
+ {\MFUsentencecase{\glspdffmtfullpl{#1}{}}}%
+}
+\glsmfuaddmap{\glsfmtfullpl}{\Glsfmtfullpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSfmtfullpl}
+%All upper case. This explicitly uses \cs{text\_uppercase:n} in case
+%an old version of \sty{glossaries} or \sty{mfirstuc} is present.
+%\changes{1.42}{2020-02-03}{new}
+%\changes{1.49}{2022-10-14}{add upper case bookmark}
+% \begin{macrocode}
+\ExplSyntaxOn
+\newcommand*{\GLSfmtfullpl}[1]{%
+ \glstexorpdfstring
+ {\GLSxtrtitlefullpl{#1}}%
+ {\text_uppercase:n{\glspdffmtfullpl{#1}{}}}%
+}
+\ExplSyntaxOff
+\glsmfublocker{\GLSfmtfullpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\subsection{Prefixes}
+%Provide support for \sty{glossaries-prefix}.
+%
+%\begin{macro}{\pglsprefix}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{pglsprefix}\marg{entry-label}\marg{prefix-field}
+%\end{definition}
+%A shortcut way of inserting the prefix and separator if they are
+%required. If this needs to be redefined, use \cs{ifglsfieldvoid}
+%for an expandable test.
+% \begin{macrocode}
+\newcommand{\pglsprefix}[2]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@#2}{}%
+ {\csuse{glo@\glsdetoklabel{#1}@#2}\glsprefixsep}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsprefix}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{Pglsprefix}\marg{entry-label}\marg{prefix-field}
+%\end{definition}
+%Similar to \cs{pglsprefix} but sentence case. The conditional is
+%omitted as it will have to already be checked.
+% \begin{macrocode}
+\newcommand{\Pglsprefix}[2]{%
+ \Glsxtrusefield{#1}{#2}\glsprefixsep
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\PGLSprefix}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{PGLSprefix}\marg{entry-label}\marg{prefix-field}
+%\end{definition}
+%As \cs{pglsprefix} but all caps.
+% \begin{macrocode}
+\newcommand{\PGLSprefix}[2]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@#2}{}%
+ {\glsuppercase{\csuse{glo@\glsdetoklabel{#1}@#2}\glsprefixsep}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Abbreviations. Short form uses prefix and prefixplural fields.
+%\begin{macro}{\pglsxtrshort}
+%\changes{1.49}{2022-10-14}{new}
+%No case-change.
+% \begin{macrocode}
+\newrobustcmd*{\pglsxtrshort}{\@gls@hyp@opt\ns@pglsxtrshort}
+\newcommand*{\ns@pglsxtrshort}[2][]{%
+ \new@ifnextchar[{\@pglsxtrshort{#1}{#2}}{\@pglsxtrshort{#1}{#2}[]}%
+}
+\def\@pglsxtrshort#1#2[#3]{%
+ \pglsprefix{#2}{prefix}%
+ \@glsxtrshort{#1}{#2}[#3]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsxtrshort}
+%\changes{1.49}{2022-10-14}{new}
+%Sentence case.
+% \begin{macrocode}
+\newrobustcmd*{\Pglsxtrshort}{\@gls@hyp@opt\ns@Pglsxtrshort}
+\newcommand*{\ns@Pglsxtrshort}[2][]{%
+ \new@ifnextchar[{\@Pglsxtrshort{#1}{#2}}{\@Pglsxtrshort{#1}{#2}[]}%
+}
+\def\@Pglsxtrshort#1#2[#3]{%
+ \ifglshasprefix{#2}%
+ {%
+ \Pglsprefix{#2}{prefix}%
+ \@glsxtrshort{#1}{#2}[#3]%
+ }%
+ {\@Glsxtrshort{#1}{#2}[#3]}%
+}
+\glsmfuaddmap{\pglsxtrshort}{\Pglsxtrshort}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\PGLSxtrshort}
+%\changes{1.49}{2022-10-14}{new}
+%All-caps is also fairly simple.
+% \begin{macrocode}
+\newrobustcmd*{\PGLSxtrshort}{\@gls@hyp@opt\ns@PGLSxtrshort}
+\newcommand*{\ns@PGLSxtrshort}[2][]{%
+ \new@ifnextchar[{\@PGLSxtrshort{#1}{#2}}{\@PGLSxtrshort{#1}{#2}[]}%
+}
+\def\@PGLSxtrshort#1#2[#3]{%
+ \PGLSprefix{#2}{prefix}%
+ \@GLSxtrshort{#1}{#2}[#3]%
+}
+\glsmfublocker{\PGLSxtrshort}
+% \end{macrocode}
+%\end{macro}
+%
+%Short plural.
+%\begin{macro}{\pglsxtrshortpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\pglsxtrshortpl}{\@gls@hyp@opt\ns@pglsxtrshortpl}
+\newcommand*{\ns@pglsxtrshortpl}[2][]{%
+ \new@ifnextchar[{\@pglsxtrshortpl{#1}{#2}}{\@pglsxtrshortpl{#1}{#2}[]}%
+}
+\def\@pglsxtrshortpl#1#2[#3]{%
+ \pglsprefix{#2}{prefixplural}%
+ \@glsxtrshortpl{#1}{#2}[#3]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsxtrshortpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Pglsxtrshortpl}{\@gls@hyp@opt\ns@Pglsxtrshortpl}
+\newcommand*{\ns@Pglsxtrshortpl}[2][]{%
+ \new@ifnextchar[{\@Pglsxtrshortpl{#1}{#2}}{\@Pglsxtrshortpl{#1}{#2}[]}%
+}
+\def\@Pglsxtrshortpl#1#2[#3]{%
+ \ifglshasprefixplural{#2}%
+ {%
+ \Pglsprefix{#2}{prefixplural}%
+ \@glsxtrshortpl{#1}{#2}[#3]%
+ }%
+ {\@Glsxtrshortpl{#1}{#2}[#3]}%
+}
+\glsmfuaddmap{\pglsxtrshortpl}{\Pglsxtrshortpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\PGLSxtrshortpl}
+%\changes{1.49}{2022-10-14}{new}
+%All-caps is also fairly simple.
+% \begin{macrocode}
+\newrobustcmd*{\PGLSxtrshortpl}{\@gls@hyp@opt\ns@PGLSxtrshortpl}
+\newcommand*{\ns@PGLSxtrshortpl}[2][]{%
+ \new@ifnextchar[{\@PGLSxtrshortpl{#1}{#2}}{\@PGLSxtrshortpl{#1}{#2}[]}%
+}
+\def\@PGLSxtrshortpl#1#2[#3]{%
+ \PGLSprefix{#2}{prefixplural}%
+ \@GLSxtrshortpl{#1}{#2}[#3]%
+}
+\glsmfublocker{\PGLSxtrshortpl}
+% \end{macrocode}
+%\end{macro}
+%
+%Long form uses prefixfirst and prefixfirstplural fields.
+%\begin{macro}{\pglsxtrlong}
+%\changes{1.49}{2022-10-14}{new}
+%No case-change.
+% \begin{macrocode}
+\newrobustcmd*{\pglsxtrlong}{\@gls@hyp@opt\ns@pglsxtrlong}
+\newcommand*{\ns@pglsxtrlong}[2][]{%
+ \new@ifnextchar[{\@pglsxtrlong{#1}{#2}}{\@pglsxtrlong{#1}{#2}[]}%
+}
+\def\@pglsxtrlong#1#2[#3]{%
+ \pglsprefix{#2}{prefixfirst}%
+ \@glsxtrlong{#1}{#2}[#3]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsxtrlong}
+%\changes{1.49}{2022-10-14}{new}
+%Sentence case.
+% \begin{macrocode}
+\newrobustcmd*{\Pglsxtrlong}{\@gls@hyp@opt\ns@Pglsxtrlong}
+\newcommand*{\ns@Pglsxtrlong}[2][]{%
+ \new@ifnextchar[{\@Pglsxtrlong{#1}{#2}}{\@Pglsxtrlong{#1}{#2}[]}%
+}
+\def\@Pglsxtrlong#1#2[#3]{%
+ \ifglshasprefixfirst{#2}%
+ {%
+ \Pglsprefix{#2}{prefixfirst}%
+ \@glsxtrlong{#1}{#2}[#3]%
+ }%
+ {\@Glsxtrlong{#1}{#2}[#3]}%
+}
+\glsmfuaddmap{\pglsxtrlong}{\Pglsxtrlong}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\PGLSxtrlong}
+%\changes{1.49}{2022-10-14}{new}
+%All-caps is also fairly simple.
+% \begin{macrocode}
+\newrobustcmd*{\PGLSxtrlong}{\@gls@hyp@opt\ns@PGLSxtrlong}
+\newcommand*{\ns@PGLSxtrlong}[2][]{%
+ \new@ifnextchar[{\@PGLSxtrlong{#1}{#2}}{\@PGLSxtrlong{#1}{#2}[]}%
+}
+\def\@PGLSxtrlong#1#2[#3]{%
+ \PGLSprefix{#2}{prefixfirst}%
+ \@GLSxtrlong{#1}{#2}[#3]%
+}
+\glsmfublocker{\PGLSxtrlong}
+% \end{macrocode}
+%\end{macro}
+%
+%Long plural.
+%\begin{macro}{\pglsxtrlongpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\pglsxtrlongpl}{\@gls@hyp@opt\ns@pglsxtrlongpl}
+\newcommand*{\ns@pglsxtrlongpl}[2][]{%
+ \new@ifnextchar[{\@pglsxtrlongpl{#1}{#2}}{\@pglsxtrlongpl{#1}{#2}[]}%
+}
+\def\@pglsxtrlongpl#1#2[#3]{%
+ \pglsprefix{#2}{prefixfirstplural}%
+ \@glsxtrlongpl{#1}{#2}[#3]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsxtrlongpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Pglsxtrlongpl}{\@gls@hyp@opt\ns@Pglsxtrlongpl}
+\newcommand*{\ns@Pglsxtrlongpl}[2][]{%
+ \new@ifnextchar[{\@Pglsxtrlongpl{#1}{#2}}{\@Pglsxtrlongpl{#1}{#2}[]}%
+}
+\def\@Pglsxtrlongpl#1#2[#3]{%
+ \ifglshasprefixfirstplural{#2}%
+ {%
+ \Pglsprefix{#2}{prefixfirstplural}%
+ \@glsxtrlongpl{#1}{#2}[#3]%
+ }%
+ {\@Glsxtrlongpl{#1}{#2}[#3]}%
+}
+\glsmfuaddmap{\pglsxtrlongpl}{\Pglsxtrlongpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\PGLSxtrlongpl}
+%\changes{1.49}{2022-10-14}{new}
+%All-caps is also fairly simple.
+% \begin{macrocode}
+\newrobustcmd*{\PGLSxtrlongpl}{\@gls@hyp@opt\ns@PGLSxtrlongpl}
+\newcommand*{\ns@PGLSxtrlongpl}[2][]{%
+ \new@ifnextchar[{\@PGLSxtrlongpl{#1}{#2}}{\@PGLSxtrlongpl{#1}{#2}[]}%
+}
+\def\@PGLSxtrlongpl#1#2[#3]{%
+ \PGLSprefix{#2}{prefixfirstplural}%
+ \@GLSxtrlongpl{#1}{#2}[#3]%
+}
+\glsmfublocker{\PGLSxtrlongpl}
+% \end{macrocode}
+%\end{macro}
+%
+%Title commands (analogous to \cs{glsfmtshort} etc).
+%\begin{macro}{\pglsfmtshort}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\pglsfmtshort}[1]{%
+ \pglsprefix{#1}{prefix}%
+ \glsfmtshort{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsfmtshort}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\Pglsfmtshort}[1]{%
+ \glstexorpdfstring
+ {\Pglsxtrtitleshort{#1}}%
+ {\MFUsentencecase{%
+ \pglsprefix{#1}{prefix}%
+ \glsentryshort{#1}}%
+ }%
+}
+\glsmfuaddmap{\pglsfmtshort}{\Pglsfmtshort}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsxtrtitleshort}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Pglsxtrtitleshort}[1]{%
+ \glsxtr@title@field\Pglsxtrshort{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\PGLSfmtshort}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\PGLSfmtshort}[1]{%
+ \PGLSprefix{#1}{prefix}%
+ \GLSfmtshort{#1}%
+}
+\glsmfublocker{\PGLSfmtshort}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\pglsfmtshortpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\pglsfmtshortpl}[1]{%
+ \pglsprefix{#1}{prefixplural}%
+ \glsfmtshortpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsfmtshortpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\Pglsfmtshortpl}[1]{%
+ \glstexorpdfstring
+ {\Pglsxtrtitleshortpl{#1}}%
+ {\MFUsentencecase
+ {%
+ \pglsprefix{#1}{prefixplural}%
+ \glsentryshortpl{#1}%
+ }%
+ }%
+}
+\glsmfuaddmap{\pglsfmtshortpl}{\Pglsfmtshortpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsxtrtitleshortpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Pglsxtrtitleshortpl}[1]{%
+ \glsxtr@title@field\Pglsxtrshortpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\PGLSfmtshortpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\PGLSfmtshortpl}[1]{%
+ \PGLSprefix{#1}{prefixplural}%
+ \GLSfmtshortpl{#1}%
+}
+\glsmfublocker{\PGLSfmtshortpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\pglsfmtlong}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\pglsfmtlong}[1]{%
+ \pglsprefix{#1}{prefixfirst}%
+ \glsfmtlong{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsfmtlong}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\Pglsfmtlong}[1]{%
+ \glstexorpdfstring
+ {\Pglsxtrtitlelong{#1}}%
+ {\MFUsentencecase{%
+ \pglsprefix{#1}{prefixfirst}%
+ \glsentrylong{#1}}%
+ }%
+}
+\glsmfuaddmap{\pglsfmtlong}{\Pglsfmtlong}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsxtrtitlelong}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Pglsxtrtitlelong}[1]{%
+ \glsxtr@title@field\Pglsxtrlong{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\PGLSfmtlong}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\PGLSfmtlong}[1]{%
+ \PGLSprefix{#1}{prefixfirst}%
+ \GLSfmtlong{#1}%
+}
+\glsmfublocker{\PGLSfmtlong}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\pglsfmtlongpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\pglsfmtlongpl}[1]{%
+ \pglsprefix{#1}{prefixfirstplural}%
+ \glsfmtlongpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsfmtlongpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\Pglsfmtlongpl}[1]{%
+ \glstexorpdfstring
+ {\Pglsxtrtitlelongpl{#1}}%
+ {\MFUsentencecase
+ {%
+ \pglsprefix{#1}{prefixfirstplural}%
+ \glsentrylongpl{#1}%
+ }%
+ }%
+}
+\glsmfuaddmap{\pglsfmtlongpl}{\Pglsfmtlongpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Pglsxtrtitlelongpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Pglsxtrtitlelongpl}[1]{%
+ \glsxtr@title@field\Pglsxtrlongpl{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\PGLSfmtlongpl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\PGLSfmtlongpl}[1]{%
+ \PGLSprefix{#1}{prefixfirstplural}%
+ \GLSfmtlongpl{#1}%
+}
+\glsmfublocker{\PGLSfmtlongpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\subsection{Multi (Combined/Compound) Entries}
+%(I'd rather call these combined or compound entries but \cs{cgls} is
+%already taken.)
+%
+%New to version 1.48, the commands here provide a way of referencing
+%multiple entries as a single unit. For example, biological
+%organisms are often referred to by their genus and species, such as
+%\emph{Clostridium botulinum} and \emph{Clostridium perfringens}
+%(where the genus is Clostridium). The genus is often abbreviated
+%after first use, regardless of which species in the genus is being
+%referenced. For example, \qt{\emph{Clostridium botulinum} and
+%\emph{C. perfringens}}. This can't be supported by any abbreviation
+%styles unless the genus and species names are defined separately.
+%For example:
+%\begin{verbatim}
+%\setabbreviationstyle{long-only-short-only}
+%\newabbreviation{clostridium}{C.}{Clostridium}
+%\newglossaryentry{botulinum}{name={botulinum},description={}}
+%\newglossaryentry{perfringens}{name={perfringens},description={}}
+%\end{verbatim}
+%This means that the entries then need to be referenced using a
+%rather cumbersome method:
+%\begin{verbatim}
+%\gls{clostridium} \gls{botulinum} and \gls{clostridum}
+%\gls{perfringens}
+%\end{verbatim}
+%This section provides a command that will provide a way of defining
+%a label that represents a combination of entries (which must all be
+%first defined). For example:
+%\begin{verbatim}
+%\multiglossaryentry{cbot}{clostridium,botulinum}
+%\end{verbatim}
+%This label can then be referenced using \cs{mgls}, which internally
+%uses \cs{gls} for each component. The last component in the list is
+%considered the \qt{main} component (not to be confused with the
+%main glossary). If this isn't the case, the label of the main
+%component should be added in the optional argument before the label
+%list. Note that the multi-label (\texttt{cbot} in this case) can't be
+%referenced using commands like \cs{gls}.
+%
+%First define the general set of options that should be applied to
+%all multi-entries. These can be set with:
+%\begin{macro}{\multiglossaryentrysetup}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\multiglossaryentrysetup}[1]{\setkeys{glsxtrcombined}{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@combined@indexmain}
+%\changes{1.48}{2021-11-22}{new}
+%Numeric value: 0=false (don't index main component), 1=true (always
+%index main component), 2=first (only index main component on first
+%use). Default: 1 (true);
+% \begin{macrocode}
+\newcommand*{\@gls@combined@indexmain}{1}
+\define@choicekey{glsxtrcombined}{indexmain}%
+ [\@gls@combined@indexmain@val\@gls@combined@indexmain]
+ {false,true,first}[true]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@combined@indexothers}
+%\changes{1.48}{2021-11-22}{new}
+%Numeric value: 0=false (don't index other components), 1=true (always
+%index other components), 2=first (only index other components on first
+%use). Default: 2 (first);
+% \begin{macrocode}
+\newcommand*{\@gls@combined@indexothers}{2}
+\define@choicekey{glsxtrcombined}{indexothers}%
+ [\@gls@combined@indexothers@val\@gls@combined@indexothers]
+ {false,true,first}[true]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@combined@hyper}
+%\changes{1.48}{2021-11-22}{new}
+%Numeric value: 0=none (\cs{mgls} doesn't create a hyperlink),
+% 1=allmain (all content hyperlinks to the main component),
+% 2=mainonly (only the main component has a hyperlink),
+% 3=individual (each component has a hyperlink to their own target).
+% Default: 3.
+% \begin{macrocode}
+\newcommand*{\@gls@combined@hyper}{3}
+\define@choicekey{glsxtrcombined}{hyper}%
+ [\@gls@combined@hyper@val\@gls@combined@hyper]
+ {none,allmain,mainonly,individual,otheronly,notmainfirst,nototherfirst,notfirst}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@encapmain}
+%\changes{1.48}{2021-11-22}{new}
+%Location encap value for main component (corresponding to format key in \cs{gls}).
+% \begin{macrocode}
+\newcommand*{\@gls@combined@encapmain}{glsnumberformat}
+\define@key{glsxtrcombined}{encapmain}{%
+ \renewcommand*{\@gls@combined@encapmain}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@encapothers}
+%\changes{1.48}{2021-11-22}{new}
+%Location encap value for other components (corresponding to format key in \cs{gls}).
+% \begin{macrocode}
+\newcommand*{\@gls@combined@encapothers}{glsnumberformat}
+\define@key{glsxtrcombined}{encapothers}{%
+ \renewcommand*{\@gls@combined@encapothers}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@textformat}
+%\changes{1.48}{2021-11-22}{new}
+%Encapsulate entire content with the command identified by the given
+%control sequence name.
+% \begin{macrocode}
+\newcommand*{\@gls@combined@textformat}{@firstofone}
+\define@key{glsxtrcombined}{textformat}{%
+ \renewcommand*{\@gls@combined@textformat}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@category}
+%\changes{1.48}{2021-11-22}{new}
+%Assign a category to the combined set.
+% \begin{macrocode}
+\newcommand*{\@gls@combined@category}{}
+\define@key{glsxtrcombined}{category}{%
+ \renewcommand*{\@gls@combined@category}{#1}%
+}
+% \end{macrocode}
+%Pre-options family:
+% \begin{macrocode}
+\define@key{glsxtrcombinedpreopts}{category}{%
+ \renewcommand*{\@gls@combined@category}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@mglsopts}
+%\changes{1.48}{2021-11-22}{new}
+%Default options to pass to \cs{mgls}.
+% \begin{macrocode}
+\newcommand*{\@gls@combined@mglsopts}{}
+\define@key{glsxtrcombined}{mglsopts}{%
+ \renewcommand*{\@gls@combined@mglsopts}{#1}%
+}
+\define@key{glsxtrcombinedpreopts}{mglsopts}{%
+ \@gls@combined@mglsopts@do
+ {%
+ \renewcommand*{\@gls@combined@mglsopts}{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@mglsopts@do}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@combined@mglsopts@do}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mgls@disable@mglsopts}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mgls@disable@mglsopts}{%
+ \let\@gls@combined@mglsopts@do\@gls@combined@mglsopts@do@not
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mgls@enable@mglsopts}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mgls@enable@mglsopts}{%
+ \let\@gls@combined@mglsopts@do\@firstofone
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@mglsopts@do}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@combined@mglsopts@do@not}[1]{%
+ \PackageError{glossaries-extra}{`mglsopts' key not permitted inside
+ `setup' value}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@firstprefix}
+%\changes{1.48}{2021-11-22}{new}
+%Prefix for multi-entry first use.
+% \begin{macrocode}
+\newcommand*{\@gls@combined@firstprefix}{}
+\define@key{glsxtrcombined}{firstprefix}{%
+ \renewcommand*{\@gls@combined@firstprefix}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@usedprefix}
+%\changes{1.48}{2021-11-22}{new}
+%Prefix for multi-entry subsequent first use.
+% \begin{macrocode}
+\newcommand*{\@gls@combined@usedprefix}{}
+\define@key{glsxtrcombined}{usedprefix}{%
+ \renewcommand*{\@gls@combined@usedprefix}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@firstsuffix}
+%\changes{1.48}{2021-11-22}{new}
+%Suffix for multi-entry first use.
+% \begin{macrocode}
+\newcommand*{\@gls@combined@firstsuffix}{}
+\define@key{glsxtrcombined}{firstsuffix}{%
+ \renewcommand*{\@gls@combined@firstsuffix}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@usedsuffix}
+%\changes{1.48}{2021-11-22}{new}
+%Suffix for multi-entry subsequent first use.
+% \begin{macrocode}
+\newcommand*{\@gls@combined@usedsuffix}{}
+\define@key{glsxtrcombined}{usedsuffix}{%
+ \renewcommand*{\@gls@combined@usedsuffix}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@firstskipmain}
+%\changes{1.48}{2021-11-22}{new}
+%Skip the main element on first use (multi-entry first use not
+%element first use).
+% \begin{macrocode}
+\define@boolkey{glsxtrcombined}{firstskipmain}[true]{}
+\KV@glsxtrcombined@firstskipmainfalse
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@firstskipothers}
+%\changes{1.48}{2021-11-22}{new}
+%Skip the other elements on first use (multi-entry first use not
+%element first use).
+% \begin{macrocode}
+\define@boolkey{glsxtrcombined}{firstskipothers}[true]{}
+\KV@glsxtrcombined@firstskipothersfalse
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@usedskipmain}
+%\changes{1.48}{2021-11-22}{new}
+%Skip the main element on subsequent use (multi-entry subsequent use not
+%element subsequent use).
+% \begin{macrocode}
+\define@boolkey{glsxtrcombined}{usedskipmain}[true]{}
+\KV@glsxtrcombined@usedskipmainfalse
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@usedskipothers}
+%\changes{1.48}{2021-11-22}{new}
+%Skip the other elements on subsequent use (multi-entry subsequent use not
+%element subsequent use).
+% \begin{macrocode}
+\define@boolkey{glsxtrcombined}{usedskipothers}[true]{}
+\KV@glsxtrcombined@usedskipothersfalse
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@postlinks}
+%\changes{1.48}{2021-11-22}{new}
+%Determine whether or not to use the individual element post-link hooks.
+% \begin{macrocode}
+\newcommand*{\@gls@combined@postlinks@nr}{0}
+\define@choicekey{glsxtrcombined}{postlinks}%
+ [\@gls@combined@postlinks@val\@gls@combined@postlinks@nr]
+ {none,all,notlast,mainnotlast,mainonly,othernotlast,otheronly}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@mpostlink}
+%\changes{1.48}{2021-11-22}{new}
+%Determine whether or not to use the multi-entry post-link hook.
+% \begin{macrocode}
+\newcommand*{\@gls@combined@mpostlink@nr}{1}
+\define@choicekey{glsxtrcombined}{mpostlink}%
+ [\@gls@combined@mpostlink@val\@gls@combined@mpostlink@nr]
+ {false,true,firstonly,usedonly}[true]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@combined@mpostlinkelement}
+%\changes{1.48}{2021-11-22}{new}
+%Determine which element to use for the post-link hook.
+% \begin{macrocode}
+\newcommand*{\@gls@combined@mpostlinkelement@nr}{0}
+\define@choicekey{glsxtrcombined}{mpostlinkelement}%
+ [\@gls@combined@mpostlinkelement@val\@gls@combined@mpostlinkelement@nr]
+ {last,main,custom}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifmulti}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrifmulti}[3]{\ifcsdef{@gls@combined@#1@main}{#2}{#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrmultimain}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrmultimain}[1]{\csuse{@gls@combined@#1@main}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrmultilist}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrmultilist}[1]{\csuse{@gls@combined@#1@list}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrmultitotalelements}
+%\changes{1.48}{2021-11-22}{new}
+%Total number of elements.
+% \begin{macrocode}
+\newcommand*{\glsxtrmultitotalelements}[1]{\csuse{@gls@combined@#1@total}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrmultimainindex}
+%\changes{1.48}{2021-11-22}{new}
+%Index of main element (starting from 1). If the main element is the
+%last element in the list then this should equal the total number of
+%elements.
+% \begin{macrocode}
+\newcommand*{\glsxtrmultimainindex}[1]{\csuse{@gls@combined@#1@mainindex}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrmultilastotherindex}
+%\changes{1.48}{2021-11-22}{new}
+%Index of the last non-main element.
+% \begin{macrocode}
+\newcommand*{\glsxtrmultilastotherindex}[1]{\csuse{@gls@combined@#1@lastotherindex}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifmultiglossaryentryglobal}
+%\changes{1.48}{2021-11-22}{new}
+%Make definitions global.
+% \begin{macrocode}
+\newif\ifmultiglossaryentryglobal
+\multiglossaryentryglobalfalse
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglselementindex}
+%\changes{1.48}{2021-11-22}{new}
+% Count register to keep track of the current element index.
+% \begin{macrocode}
+\newcount\mglselementindex
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\multiglossaryentry}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{multiglossaryentry}\oarg{options}\marg{multi-label}\oarg{main label}\marg{label
+%list}
+%\end{definition}
+%Defines the label \meta{multi-label} that can be used in \cs{mgls}.
+% \begin{macrocode}
+\newrobustcmd{\multiglossaryentry}[1][]{%
+ \def\@gls@combined@current@opts{#1}%
+ \ifnum\@glsxtr@docdefval=1\relax
+ \let\@multi@glossentry@donext\@defmultiglossaryentry
+ \else
+ \let\@multi@glossentry@donext\@multiglossaryentry
+ \fi
+ \@multi@glossentry@donext
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@multiglossaryentry}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@multiglossaryentry}[1]{%
+ \def\@gls@combined@current@label{#1}%
+ \@multi@glossaryentry
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@multi@glossaryentry}
+%\changes{1.48}{2021-11-22}{new}
+% Check for existence.
+% \begin{macrocode}
+\newcommand*{\@multi@glossaryentry}[2][]{%
+ \ifcsdef{@gls@combined@\@gls@combined@current@label @main}%
+ {\PackageError{glossaries-extra}%
+ {Multi-entry label `\@gls@combined@current@label' already defined}%
+ {}%
+ }%
+ {%
+ \@multi@glossary@entry{#1}{#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@defmultiglossaryentry}
+%\changes{1.48}{2021-11-22}{new}
+%Used if document definitions are on.
+% \begin{macrocode}
+\newcommand*{\@defmultiglossaryentry}[1]{%
+ \def\@gls@combined@current@label{#1}%
+ \@def@multi@glossaryentry
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@def@multi@glossaryentry}
+%\changes{1.48}{2021-11-22}{new}
+%Used if document definitions are on.
+% \begin{macrocode}
+\newcommand*{\@def@multi@glossaryentry}[2][]{%
+ \let\@def@multi@glossaryentry@do\@multi@glossary@entry
+ \ifundef\@glsxtr@docdefs@multilist
+ {%
+ \gdef\@glsxtr@docdefs@multilist{}%
+ \listxadd
+ {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}%
+ }%
+ {%
+ \xifinlist{\@gls@combined@current@label}{\@glsxtr@docdefs@multilist}%
+ {%
+ \PackageError{glossaries-extra}%
+ {Multi-entry label `\@gls@combined@current@label' already defined}%
+ {}%
+ \let\@def@multi@glossaryentry@do\@gobbletwo
+ }%
+ {%
+ \listxadd
+ {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}%
+ }%
+ }%
+ \@def@multi@glossaryentry@do{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@multi@glossary@doifexists}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@multi@glossary@doifexists}{\glsdoifexists}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\providemultiglossaryentry}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{providemultiglossaryentry}\oarg{options}\marg{multi-label}\oarg{main label}\marg{label
+%list}
+%\end{definition}
+%Defines a multi-entry unless it has already been defined.
+% \begin{macrocode}
+\newrobustcmd{\providemultiglossaryentry}[2][]{%
+ \def\@gls@combined@current@opts{#1}%
+ \def\@gls@combined@current@label{#2}%
+ \ifcsdef{@gls@combined@\@gls@combined@current@label @main}%
+ {\def\@multi@glossentry@donext{\@provide@multi@glossaryentry@noop}}%
+ {%
+ \ifnum\@glsxtr@docdefval=1\relax
+ \def\@multi@glossentry@donext{\@def@multi@glossaryentry}%
+ \else
+ \def\@multi@glossentry@donext{\@multi@glossaryentry}%
+ \fi
+ }%
+ \@multi@glossentry@donext
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@provide@multi@glossaryentry@noop}
+%\changes{1.48}{2021-11-22}{new}
+% Do nothing.
+% \begin{macrocode}
+\newcommand*{\@provide@multi@glossaryentry@noop}[2][]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@multi@glossaryentry@list}
+%\changes{1.48}{2021-11-22}{new}
+% List of all defined multi-entry sets.
+% \begin{macrocode}
+\newcommand*{\@multi@glossaryentry@list}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@multi@glossary@entry}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@multi@glossary@entry}[2]{%
+ \protected@edef\@gls@combined@current@main{#1}%
+% \end{macrocode}
+% Fully expand list.
+% \begin{macrocode}
+ \protected@edef\@gls@combined@currentlist{#2}%
+% \end{macrocode}
+% Count items in list, check they are all defined, and find last item at the same time.
+% \begin{macrocode}
+ \mglselementindex=0\relax
+ \@for\@gls@tmp:=\@gls@combined@currentlist\do{%
+ \advance\mglselementindex by 1\relax
+ \@multi@glossary@doifexists{\@gls@tmp}{}%
+ \let\@gls@combined@finalitem\@gls@tmp
+ \ifdefvoid\@gls@combined@current@main
+ {}%
+ {%
+ \ifx\@gls@combined@current@main\@gls@tmp
+ \ifmultiglossaryentryglobal
+ \global\cslet{@gls@combined@\@gls@combined@current@label @main}%
+ \@gls@combined@current@main
+ \csxdef{@gls@combined@\@gls@combined@current@label @mainindex}%
+ {\the\mglselementindex}%
+ \else
+ \cslet{@gls@combined@\@gls@combined@current@label @main}%
+ \@gls@combined@current@main
+ \csedef{@gls@combined@\@gls@combined@current@label @mainindex}%
+ {\the\mglselementindex}%
+ \fi
+ \else
+ \ifmultiglossaryentryglobal
+ \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}%
+ {\the\mglselementindex}%
+ \else
+ \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}%
+ {\the\mglselementindex}%
+ \fi
+ \fi
+ }%
+ }%
+ \ifmultiglossaryentryglobal
+ \csxdef{@gls@combined@\@gls@combined@current@label @total}%
+ {\the\mglselementindex}%
+ \else
+ \csedef{@gls@combined@\@gls@combined@current@label @total}%
+ {\the\mglselementindex}%
+ \fi
+ \ifnum\mglselementindex<2\relax
+ \PackageError{glossaries-extra}{At least 2 labels required in
+ multi-entry element list (\number\mglselementindex\space found)}{}%
+ \else
+ \ifdefvoid\@gls@combined@current@main
+ {}%
+ {%
+% \end{macrocode}
+% If \cs{@gls@combined@\meta{label}@main} hasn't been set then it
+% wasn't included in the list.
+% \begin{macrocode}
+ \ifcsundef{@gls@combined@\@gls@combined@current@label @main}%
+ {\PackageError{glossaries-extra}%
+ {Main element `\@gls@combined@current@main' not found in list}%
+ {The final element `\@gls@combined@finalitem' will be used instead}
+% \end{macrocode}
+% Set to empty so that the default (final element) is used instead.
+% \begin{macrocode}
+ \let\@gls@combined@current@main\@empty
+ }%
+ {}%
+ }%
+ \ifdefvoid\@gls@combined@current@main
+ {%
+% \end{macrocode}
+% Set main to final element.
+% \begin{macrocode}
+ \ifmultiglossaryentryglobal
+ \global\cslet{@gls@combined@\@gls@combined@current@label @main}%
+ \@gls@combined@finalitem
+ \global\csletcs{@gls@combined@\@gls@combined@current@label @mainindex}%
+ {@gls@combined@\@gls@combined@current@label @total}%
+ \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}%
+ {\the\numexpr\mglselementindex-1 }%
+ \else
+ \cslet{@gls@combined@\@gls@combined@current@label @main}%
+ \@gls@combined@finalitem
+ \csletcs{@gls@combined@\@gls@combined@current@label @mainindex}%
+ {@gls@combined@\@gls@combined@current@label @total}%
+ \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}%
+ {\the\numexpr\mglselementindex-1 }%
+ \fi
+ }%
+ {}%
+ \ifmultiglossaryentryglobal
+% \end{macrocode}
+% Globally define element list.
+% \begin{macrocode}
+ \global\cslet{@gls@combined@\@gls@combined@current@label @list}%
+ \@gls@combined@currentlist
+% \end{macrocode}
+% Globally define options.
+% \begin{macrocode}
+ \protected@csxdef{@gls@combined@\@gls@combined@current@label @options}%
+ {\@gls@combined@current@opts}%
+% \end{macrocode}
+% Global conditional definition.
+% \begin{macrocode}
+ \expandafter\@ifdefinable
+ \csname if@gls@combined@\@gls@combined@current@label @flag\endcsname
+ {\expandafter\global\expandafter
+ \newif\csname if@gls@combined@\@gls@combined@current@label @flag\endcsname}%
+ \expandafter\global
+ \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname
+ \else
+% \end{macrocode}
+% Locally define element list.
+% \begin{macrocode}
+ \cslet{@gls@combined@\@gls@combined@current@label @list}%
+ \@gls@combined@currentlist
+% \end{macrocode}
+% Locally define options.
+% \begin{macrocode}
+ \protected@csedef{@gls@combined@\@gls@combined@current@label @options}%
+ {\@gls@combined@current@opts}%
+% \end{macrocode}
+% Local conditional definition.
+% \begin{macrocode}
+ \newboolean{@gls@combined@\@gls@combined@current@label @flag}%
+ \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname
+ \fi
+ \fi
+ \writemultiglossentry
+ {\@gls@combined@current@opts}{\@gls@combined@current@label}%
+ {\csuse{@gls@combined@\@gls@combined@current@label @main}}{#2}%
+% \end{macrocode}
+%Append label to list.
+% \begin{macrocode}
+ \ifmultiglossaryentryglobal
+ \ifdefempty\@multi@glossaryentry@list
+ {\let\@multi@glossaryentry@list\@gls@combined@current@label}%
+ {%
+ \eappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}%
+ }%
+ \else
+ \ifdefempty\@multi@glossaryentry@list
+ {\global\let\@multi@glossaryentry@list\@gls@combined@current@label}%
+ {%
+ \xappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}%
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@multientry}
+%\begin{definition}
+%\cs{@glsxtr@multientry}\marg{options}\marg{multilabel}\marg{main}\marg{list}
+%\end{definition}
+%Information for aux file. Useful for \app{bib2gls} and also for
+%\pkgopt{docdef}.
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@multientry}[4]{%
+ \ifnum\@glsxtr@docdefval=1\relax
+ \bgroup
+ \def\@gls@combined@current@opts{#1}%
+ \def\@gls@combined@current@label{#2}%
+ \let\@multi@glossary@doifexists\@secondoftwo
+ \let\writemultiglossentry\@gobblefour
+ \multiglossaryentryglobaltrue
+ \@multi@glossary@entry{#3}{#4}%
+ \egroup
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\writemultiglossentry}
+%\changes{1.48}{2021-11-22}{new}
+%This can be redefined to do nothing if the information isn't
+%required.
+% \begin{macrocode}
+\newcommand*{\writemultiglossentry}[4]{%
+ \protected@write\@auxout{}{\string\@glsxtr@multientry{#1}{#2}{#3}{#4}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifmglsused}
+%\changes{1.48}{2021-11-22}{new}
+% Determines whether or not the multi-entry set has been referenced
+% by commands like \cs{mgls} or \cs{mglsname}.
+% \begin{macrocode}
+\newcommand*{\ifmglsused}[3]{%
+ \ifbool{@gls@combined@#1@flag}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsunset}
+%\changes{1.48}{2021-11-22}{new}
+%Unset the flag.
+% \begin{macrocode}
+\newcommand*{\mglsunset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsxtrifmulti{#1}{\@mglsunset{#1}}%
+ {%
+ \glsxtrundefaction{Multi entry `#1' hasn't been defined}%
+ {You need to define `#1' with \string\multiglossaryentry}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mglsunset}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mglsunset}[1]{%
+ \expandafter\global\csname @gls@combined@#1@flagtrue\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsreset}
+%\changes{1.48}{2021-11-22}{new}
+%Unset the flag.
+% \begin{macrocode}
+\newcommand*{\mglsreset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsxtrifmulti{#1}{\@mglsreset{#1}}%
+ {%
+ \glsxtrundefaction{Multi entry `#1' hasn't been defined}%
+ {You need to define `#1' with \string\multiglossaryentry}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mglsreset}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mglsreset}[1]{%
+ \expandafter\global\csname @gls@combined@#1@flagfalse\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglslocalunset}
+%\changes{1.48}{2021-11-22}{new}
+%Unset the flag.
+% \begin{macrocode}
+\newcommand*{\mglslocalunset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsxtrifmulti{#1}{\@mglslocalunset{#1}}%
+ {%
+ \glsxtrundefaction{Multi entry `#1' hasn't been defined}%
+ {You need to define `#1' with \string\multiglossaryentry}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mglslocalunset}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mglslocalunset}[1]{%
+ \csname @gls@combined@#1@flagtrue\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglslocalreset}
+%\changes{1.48}{2021-11-22}{new}
+%Unset the flag.
+% \begin{macrocode}
+\newcommand*{\mglslocalreset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsxtrifmulti{#1}{\@mglslocalreset{#1}}%
+ {%
+ \glsxtrundefaction{Multi entry `#1' hasn't been defined}%
+ {You need to define `#1' with \string\multiglossaryentry}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mglslocalreset}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mglslocalreset}[1]{%
+ \csname @gls@combined@#1@flagfalse\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsunsetall}
+%\changes{1.48}{2021-11-22}{new}
+%Unset all.
+% \begin{macrocode}
+\newcommand*{\mglsunsetall}{%
+ \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsunset\@mgls@thislabel}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsresetall}
+%\changes{1.48}{2021-11-22}{new}
+%Reset all.
+% \begin{macrocode}
+\newcommand*{\mglsresetall}{%
+ \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsreset\@mgls@thislabel}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsSetMain}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglsSetName}\marg{multi-label}\marg{new main}
+%\end{definition}
+%Allow the main label to be changed (local).
+% \begin{macrocode}
+\newrobustcmd{\mglsSetMain}[2]{%
+ \ifcsundef{@gls@combined@#1@main}%
+ {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}%
+ {%
+ \protected@edef\@gls@combined@current@main{#2}%
+ \letcs\@gls@combined@currentlist{@gls@combined@#1@list}%
+% \end{macrocode}
+% Check that the given label is in the list of elements and update
+% main and last other element index.
+% \begin{macrocode}
+ \mglselementindex=0\relax
+ \count@=0\relax
+ \@for\@gls@tmp:=\@gls@combined@currentlist\do{%
+ \advance\mglselementindex by 1\relax
+ \ifx\@gls@combined@current@main\@gls@tmp
+ \count@=\mglselementindex\relax
+ \let\@gls@combined@finalitem\@gls@tmp
+ \ifmultiglossaryentryglobal
+ \global\cslet{@gls@combined@#1@main}\@gls@combined@current@main
+ \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}%
+ \else
+ \cslet{@gls@combined@#1@main}\@gls@combined@current@main
+ \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}%
+ \fi
+ \else
+ \ifmultiglossaryentryglobal
+ \csxdef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}%
+ \else
+ \csedef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}%
+ \fi
+ \fi
+ }%
+ \ifnum\count@=0\relax
+ \PackageError{glossaries-extra}{Label `#2' is not in `#1' set
+ (\@gls@combined@currentlist)}{}%
+% \end{macrocode}
+% Default to final item.
+% \begin{macrocode}
+ \ifmultiglossaryentryglobal
+ \global\cslet{@gls@combined@#1@main}\@gls@combined@finalitem
+ \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}%
+ \csxdef{@gls@combined@#1@lastotherindex}{%
+ \number\numexpr\mglselementindex-1 }%
+ \else
+ \cslet{@gls@combined@#1@main}\@gls@combined@finalitem
+ \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}%
+ \csedef{@gls@combined@#1@lastotherindex}{%
+ \number\numexpr\mglselementindex-1 }%
+ \fi
+ \fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsSetOptions}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglsSetOptions}\marg{multi-label}\marg{new options}
+%\end{definition}
+%Allow the options to be changed (local). No expansion is applied.
+% \begin{macrocode}
+\newrobustcmd{\mglsSetOptions}[2]{%
+ \ifcsundef{@gls@combined@#1@main}%
+ {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}%
+ {%
+ \csdef{@gls@combined@#1@options}{#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsAddOptions}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglsAddOptions}\marg{multi-label}\marg{extra options}
+%\end{definition}
+%Allow the options to be changed (local). No expansion is applied.
+% \begin{macrocode}
+\newrobustcmd{\mglsAddOptions}[2]{%
+ \ifcsundef{@gls@combined@#1@main}%
+ {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}%
+ {%
+ \ifcsempty{@gls@combined@#1@options}%
+ {\csdef{@gls@combined@#1@options}{#2}}%
+ {\csappto{@gls@combined@#1@options}{,#2}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Options for \cs{mgls}:
+%\begin{macro}{\@mgls@all}
+%\changes{1.48}{2021-11-22}{new}
+%Options to apply to all elements.
+% \begin{macrocode}
+\newcommand*{\@mgls@all}{}
+\define@key{mgls}{all}{\renewcommand*{\@mgls@all}{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@main}
+%\changes{1.48}{2021-11-22}{new}
+%Options to apply to the main element only.
+% \begin{macrocode}
+\newcommand*{\@mgls@main}{}
+\define@key{mgls}{main}{\renewcommand*{\@mgls@main}{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@others}
+%\changes{1.48}{2021-11-22}{new}
+%Options to apply to the other (no main) elements.
+% \begin{macrocode}
+\newcommand*{\@mgls@others}{}
+\define@key{mgls}{others}{\renewcommand*{\@mgls@others}{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@setup}
+%\changes{1.48}{2021-11-22}{new}
+%Options to apply to \cs{multiglossaryentrysetup}.
+% \begin{macrocode}
+\newcommand*{\@mgls@setup}{}
+\define@key{mgls}{setup}{%
+ \@mgls@setup@do{\renewcommand*{\@mgls@setup}{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@setup@do}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mgls@setup@do}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@setup@do@not}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mgls@setup@do@not}[1]{%
+ \PackageError{glossaries-extra}{`setup' key not permitted inside
+ `mglsopts' value}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mgls@disable@setup}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mgls@disable@setup}{%
+ \let\@mgls@setup@do\@mgls@setup@do@not
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mgls@enable@setup}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mgls@enable@setup}{%
+ \let\@mgls@setup@do\@firstofone
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@unsetaction}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand\@mgls@unsetaction{0}
+\define@choicekey{mgls}{multiunset}[\@mgls@unsetaction@val\@mgls@unsetaction]%
+ {global,local,none}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifKV@mgls@presetlocal}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\define@boolkey{mgls}{presetlocal}[true]{}
+\KV@mgls@presetlocalfalse
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@hyper}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mgls@hyper}{}
+\define@choicekey{mgls}{hyper}[\@mgls@hyper@val\@mgls@hyper@nr]{true,false}[true]%
+{%
+ \renewcommand*{\@mgls@hyper}{hyper=#1}%
+ \ifnum\@mgls@hyper@nr=1\relax
+ \let\@mgls@hyperlink\@secondoftwo
+ \else
+ \let\@mgls@hyperlink\@@mgls@hyperlink
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@mgls@hyperlink}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@@mgls@hyperlink}[2]{%
+ \ifx\@glslink\glsdonohyperlink
+ #2%
+ \else
+ \glsxtr@org@dohyperlink{\glolinkprefix#1}{#2}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@hyperlink}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\let\@mgls@hyperlink\@@mgls@hyperlink
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsforelements}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglsforelements}\marg{multi-label}\marg{cs}\marg{body}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\mglsforelements}[3]{%
+ \expandafter\@for\expandafter#2\expandafter:\expandafter
+ =\csname @gls@combined@#1@list\endcsname\do{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsforotherelements}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglsforotherelements}\marg{multi-label}\marg{cs}\marg{body}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\mglsforotherelements}[3]{%
+ \expandafter\@for\expandafter#2\expandafter:\expandafter
+ =\csname @gls@combined@#1@list\endcsname\do
+ {\expandafter\ifdefequal\csname @gls@combined@#1@main\endcsname{#2}{}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsunsetothers}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglsunsetothers}[1]{%
+ \mglsforotherelements{#1}{\@gls@tmp}{\glsunset{\@gls@tmp}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglslocalunsetothers}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglslocalunsetothers}[1]{%
+ \mglsforotherelements{#1}{\@gls@tmp}{\glslocalunset{\@gls@tmp}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglselementreset}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglselementreset}[1]{%
+ \ifKV@mgls@presetlocal
+ \glslocalreset{#1}%
+ \else
+ \glsreset{#1}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglselementunset}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglselementunset}[1]{%
+ \ifKV@mgls@presetlocal
+ \glslocalunset{#1}%
+ \else
+ \glsunset{#1}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@resetall}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mgls@resetall}{}
+\define@choicekey{mgls}{resetall}%
+[\@mgls@resetall@val\@mgls@resetall@nr]{false,true}[true]%
+{%
+ \ifcase\@mgls@resetall@nr\relax
+ \renewcommand*{\@mgls@resetall}{}%
+ \or
+ \renewcommand*{\@mgls@resetall}{%
+ \@for\@gls@resetlabel:=\mglscurrentlist\do{\mglselementreset\@gls@resetlabel}}%
+ \renewcommand*{\@mgls@unsetall}{}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@resetmain}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mgls@resetmain}{}
+\define@choicekey{mgls}{resetmain}
+[\@mgls@resetmain@val\@mgls@resetmain@nr]{false,true}[true]%
+{%
+ \ifcase\@mgls@resetmain@nr\relax
+ \renewcommand*{\@mgls@resetmain}{}%
+ \or
+ \renewcommand*{\@mgls@resetmain}{\mglselementreset\mglscurrentmainlabel}%
+ \renewcommand*{\@mgls@unsetmain}{}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@resetothers}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mgls@resetothers}{}
+\define@choicekey{mgls}{resetothers}
+[\@mgls@resetothers@val\@mgls@resetothers@nr]{false,true}[true]%
+{%
+ \ifcase\@mgls@resetothers@nr\relax
+ \renewcommand*{\@mgls@resetothers}{}%
+ \or
+ \renewcommand*{\@mgls@resetothers}{%
+ \@for\@gls@resetlabel:=\mglscurrentlist\do{%
+ \ifx\@gls@resetlabel\mglscurrentmainlabel
+ \else
+ \mglselementreset\@gls@resetlabel
+ \fi
+ }%
+ }%
+ \renewcommand*{\@mgls@unsetothers}{}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@unsetall}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mgls@unsetall}{}
+\define@choicekey{mgls}{unsetall}%
+[\@mgls@unsetall@val\@mgls@unsetall@nr]{false,true}[true]%
+{%
+ \ifcase\@mgls@unsetall@nr\relax
+ \renewcommand*{\@mgls@unsetall}{}%
+ \or
+ \renewcommand*{\@mgls@unsetall}{%
+ \@for\@gls@unsetlabel:=\mglscurrentlist\do{\mglselementunset\@gls@unsetlabel}}%
+ \renewcommand*{\@mgls@resetall}{}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@unsetmain}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mgls@unsetmain}{}
+\define@choicekey{mgls}{unsetmain}
+[\@mgls@unsetmain@val\@mgls@unsetmain@nr]{false,true}[true]%
+{%
+ \ifcase\@mgls@unsetmain@nr\relax
+ \renewcommand*{\@mgls@unsetmain}{}%
+ \or
+ \renewcommand*{\@mgls@unsetmain}{\mglselementunset\mglscurrentmainlabel}%
+ \renewcommand*{\@mgls@resetmain}{}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@unsetothers}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mgls@unsetothers}{}
+\define@choicekey{mgls}{unsetothers}
+[\@mgls@unsetothers@val\@mgls@unsetothers@nr]{false,true}[true]%
+{%
+ \ifcase\@mgls@unsetothers@nr\relax
+ \renewcommand*{\@mgls@unsetothers}{}%
+ \or
+ \renewcommand*{\@mgls@unsetothers}{%
+ \@for\@gls@unsetlabel:=\mglscurrentlist\do{%
+ \ifx\@gls@unsetlabel\mglscurrentmainlabel
+ \else
+ \mglselementunset\@gls@unsetlabel
+ \fi
+ }%
+ }%
+ \renewcommand*{\@mgls@resetothers}{}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@setup@docurrent}
+%\changes{1.48}{2021-11-22}{new}
+%Set up the commands to determine whether or not to do the current
+%element.
+% \begin{macrocode}
+\newcommand{\glsxtr@setup@docurrent}{%
+% \end{macrocode}
+% \cs{mglscurrentlabel} expands to the label of the current element.
+% Should this element be skipped?
+% \begin{macrocode}
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+% \end{macrocode}
+% Main element. Should it be skipped?
+% \begin{macrocode}
+ \mglsisfirstuse
+ {%
+ \ifKV@glsxtrcombined@firstskipmain
+ \let\@mgls@do@current@element\@gobble
+ \else
+ \let\@mgls@do@current@element\@firstofone
+ \fi
+ }%
+ {%
+ \ifKV@glsxtrcombined@usedskipmain
+ \let\@mgls@do@current@element\@gobble
+ \else
+ \let\@mgls@do@current@element\@firstofone
+ \fi
+ }%
+ \else
+% \end{macrocode}
+% Other element. Should it be skipped?
+% \begin{macrocode}
+ \mglsisfirstuse
+ {%
+ \ifKV@glsxtrcombined@firstskipothers
+ \let\@mgls@do@current@element\@gobble
+ \else
+ \let\@mgls@do@current@element\@firstofone
+ \fi
+ }%
+ {%
+ \ifKV@glsxtrcombined@usedskipothers
+ \let\@mgls@do@current@element\@gobble
+ \else
+ \let\@mgls@do@current@element\@firstofone
+ \fi
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@mgls@checklastelement}
+%\changes{1.48}{2021-11-22}{new}
+% If the last element is skipped, \cs{mglsiflast} needs
+% adjusting.
+% The first argument should be either "first" or "used".
+% The second argument is the multi-element label.
+% \begin{macrocode}
+\newcommand*{\glsxtr@mgls@checklastelement}[2]{%
+ \ifbool{KV@glsxtrcombined@#1skipmain}%
+ {%
+ \ifbool{KV@glsxtrcombined@#1skipothers}%
+ {%
+% \end{macrocode}
+% This condition has already been checked for.
+% \begin{macrocode}
+ }%
+ {%
+% \end{macrocode}
+% Main skipped. The last item will be the last other element.
+% \begin{macrocode}
+ \ifnum\mglselementindex=\glsxtrmultilastotherindex{#2}\relax
+ \let\mglsiflast\@firstoftwo
+ \else
+ \let\mglsiflast\@secondoftwo
+ \fi
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Main not skipped.
+% \begin{macrocode}
+ \ifbool{KV@glsxtrcombined@#1skipothers}%
+ {%
+% \end{macrocode}
+% Others skipped. The main element is the only item.
+% \begin{macrocode}
+ \ifnum\mglselementindex=\glsxtrmultimainindex{#2}\relax
+ \let\mglsiflast\@firstoftwo
+ \else
+ \let\mglsiflast\@secondoftwo
+ \fi
+ }%
+ {%
+% \end{macrocode}
+% None skipped. This isn't the last element.
+% \begin{macrocode}
+ \let\mglsiflast\@secondoftwo
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrmglsWarnAllSkipped}
+%\changes{1.48}{2021-11-22}{new}
+%Warning if all elements are skipped. The first argument is the
+%warning message, the second argument is the inserted content (final
+%optional argument), the third command is the encapsulation command
+%(which may be a hyperlink).
+% \begin{macrocode}
+\newcommand{\glsxtrmglsWarnAllSkipped}[3]{%
+ \GlossariesExtraWarning{#1}%
+ #3{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@mgls@applyopts}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@mgls@applyopts}[1]{%
+ \edef\@mgls@dooptions{\noexpand\setkeys*{mgls}{\expandonce#1}}%
+ \@mgls@dooptions
+% \end{macrocode}
+% Append any unknown options to all.
+% \begin{macrocode}
+ \ifdefvoid\XKV@rm{}{\eappto\@mgls@all{,\expandonce\XKV@rm}}%
+% \end{macrocode}
+% If setup key has been used, check for pre-option keys:
+% \begin{macrocode}
+ \ifdefvoid\@mgls@setup
+ {}%
+ {%
+ \edef\@mgls@dooptions{%
+ \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@setup}}%
+ \mgls@disable@mglsopts
+ \@mgls@dooptions
+ \mgls@enable@mglsopts
+% \end{macrocode}
+% Save remaining setup options.
+% \begin{macrocode}
+ \ifx\@mgls@setupoptions\@empty
+ \let\@mgls@setupoptions\XKV@rm
+ \else
+ \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}%
+ \fi
+ }%
+% \end{macrocode}
+% Apply gls unset/reset options.
+% \begin{macrocode}
+ \@mgls@resetall
+ \@mgls@unsetall
+ \@mgls@resetmain
+ \@mgls@unsetmain
+ \@mgls@resetothers
+ \@mgls@unsetothers
+% \end{macrocode}
+% Disable.
+% \begin{macrocode}
+ \let\@mgls@resetall\@empty
+ \let\@mgls@resetmain\@empty
+ \let\@mgls@resetothers\@empty
+ \let\@mgls@unsetall\@empty
+ \let\@mgls@unsetmain\@empty
+ \let\@mgls@unsetothers\@empty
+% \end{macrocode}
+% First use flags.
+% \begin{macrocode}
+ \ifmglsused\mglscurrentmultilabel
+ {\let\mglsisfirstuse\@secondoftwo}%
+ {\let\mglsisfirstuse\@firstoftwo}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@firstofthree}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\providecommand{\@firstofthree}[3]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@secondofthree}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\providecommand{\@secondofthree}[3]{#2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@thirdofthree}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\providecommand{\@thirdofthree}[3]{#3}
+% \end{macrocode}
+%\end{macro}
+%
+%The main internal command for referencing multi-entries:
+%\begin{macro}{\glsxtr@mgls@inner}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{glsxtr@mgls@inner}\marg{options}\marg{label}\marg{insert}\marg{first
+%cs}\marg{not first cs}\marg{main first cs}\marg{main other cs}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glsxtr@mgls@inner}[7]{%
+ \let\mglslastmainlabel\@empty
+ \let\mglsiflastmainwasfirstuse\@firstoftwo
+ \let\mglsiflastmainwasplural\@secondoftwo
+ \let\mglsiflastmaincapscase\@firstofthree
+ \let\mglsiflastmainskipped\@firstoftwo
+ \bgroup
+ \ifcsundef{@gls@combined@#2@main}%
+ {%
+ \glsxtrundefaction{Multi entry `#2' hasn't been defined}%
+ {You need to define `#2' with \string\multiglossaryentry}%
+ \gdef\@mgls@post@hookdefs{%
+ \protected@edef\mglslastmultilabel{#2}%
+ \let\mglswasfirstuse\@firstoftwo
+ \let\mglslastcategory\@empty
+ \let\mglsiflastelementskipped\@firstoftwo
+ \let\mglsiflastelementwasfirstuse\@firstoftwo
+ \let\mglsiflastelementwasplural\@secondoftwo
+ \let\mglsiflastelementcapscase\@firstofthree
+ \let\mglslastelementlabel\@empty
+ \let\mgls@do@postlinkhook\relax
+ }%
+ }%
+ {%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{initialise hooks}
+% Initialise hooks in case component entries haven't been defined
+% (which may happen with \app{bib2gls}).
+% \begin{macrocode}
+ \let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+% \end{macrocode}
+% Save information for hooks.
+% \begin{macrocode}
+ \protected@edef\mglscurrentmultilabel{#2}%
+ \letcs\mglscurrentmainlabel{@gls@combined@#2@main}%
+ \letcs\mglscurrentlist{@gls@combined@#2@list}%
+ \letcs\mglscurrentoptions{@gls@combined@#2@options}%
+% \end{macrocode}
+% Initialise (may be changed if \texttt{multiunset} is present):
+% \begin{macrocode}
+ \ifmglsused\mglscurrentmultilabel
+ {\let\mglsisfirstuse\@secondoftwo}%
+ {\let\mglsisfirstuse\@firstoftwo}%
+% \end{macrocode}
+% Only obtain pre-option keys:
+% \begin{macrocode}
+ \edef\@mgls@dooptions{%
+ \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\mglscurrentoptions}}%
+ \@mgls@dooptions
+% \end{macrocode}
+% Save remaining setup options.
+% \begin{macrocode}
+ \let\@mgls@setupoptions\XKV@rm
+% \end{macrocode}
+% Apply \cs{mgls} options.
+% \begin{macrocode}
+ \mgls@disable@setup
+ \ifdefvoid\@gls@combined@mglsopts
+ {}%
+ {\glsxtr@mgls@applyopts\@gls@combined@mglsopts}%
+ \mgls@enable@setup
+% \end{macrocode}
+% Apply options provided in \verb|#1|.
+% \begin{macrocode}
+ \ifstrempty{#1}{}{\def\@mgls@options{#1}\glsxtr@mgls@applyopts\@mgls@options}%
+% \end{macrocode}
+% Check for attribute settings.
+% \begin{macrocode}
+ \ifx\@gls@combined@category\empty
+% \end{macrocode}
+% No category
+% \begin{macrocode}
+ \else
+% \end{macrocode}
+% Attribute options:
+% \begin{macrocode}
+ \glshascategoryattribute{\@gls@combined@category}{multioptions}%
+ {%
+ \letcs\@mgls@attroptions{@glsxtr@categoryattr@@\@gls@combined@category
+ @multioptions}%
+% \end{macrocode}
+% Only obtain pre-option keys:
+% \begin{macrocode}
+ \let\@gls@combined@mglsopts\@empty
+ \edef\@mgls@dooptions{%
+ \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@attroptions}}%
+ \@mgls@dooptions
+% \end{macrocode}
+% Append remaining options:
+% \begin{macrocode}
+ \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}%
+ \ifx\@gls@combined@mglsopts\@empty
+ \else
+% \end{macrocode}
+% mgls options found:
+% \begin{macrocode}
+ \let\@mgls@setup\@empty
+ \mgls@disable@setup
+ \glsxtr@mgls@applyopts\@gls@combined@mglsopts
+ \mgls@enable@setup
+ \fi
+ }%
+ {}%
+ \fi
+% \end{macrocode}
+% Apply setup options.
+% \begin{macrocode}
+ \edef\@mgls@dooptions{%
+ \noexpand\setkeys{glsxtrcombined}{\expandonce\@mgls@setupoptions}}%
+ \@mgls@dooptions
+% \end{macrocode}
+% Provide local user-level access to category:
+% \begin{macrocode}
+ \let\mglscurrentcategory\@gls@combined@category
+% \end{macrocode}
+% Should the entire content be a hyperlink?
+% \begin{macrocode}
+ \ifnum\@gls@combined@hyper=1\relax
+ \def\@mgls@combinedlink{\@mgls@hyperlink{\mglscurrentmainlabel}}%
+ \else
+ \def\@mgls@combinedlink{\@firstofone}%
+ \fi
+% \end{macrocode}
+% Entire content encapsulator.
+% \begin{macrocode}
+ \def\@gls@combined@encapsulator##1{%
+ \@mgls@combinedlink{\csuse{\@gls@combined@textformat}{##1}}}%
+% \end{macrocode}
+% Initialise.
+% \begin{macrocode}
+ \let\@mgls@do@current@element\@firstofone
+% \end{macrocode}
+% Check if all elements are being skipped.
+% \begin{macrocode}
+ \mglsisfirstuse
+ {%
+ \ifKV@glsxtrcombined@firstskipmain
+ \ifKV@glsxtrcombined@firstskipothers
+% \end{macrocode}
+% Just do the warning and insert. This will ignore the loop.
+% \begin{macrocode}
+ \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator
+ \def\@gls@combined@encapsulator##1{%
+ \glsxtrmglsWarnAllSkipped{All elements skipped for
+ first use of multi-entry `#2'}{#3}%
+ {\@gls@org@combined@encapsulator}%
+ }%
+ \let\@mgls@do@current@element\@gobble
+ \fi
+ \fi
+ }%
+ {%
+ \ifKV@glsxtrcombined@usedskipmain
+ \ifKV@glsxtrcombined@usedskipothers
+% \end{macrocode}
+% Just do the warning and insert. This will ignore the loop.
+% \begin{macrocode}
+ \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator
+ \def\@gls@combined@encapsulator##1{%
+ \glsxtrmglsWarnAllSkipped{All elements skipped for
+ subsequent use of multi-entry `#2'}{#3}%
+ {\@gls@org@combined@encapsulator}%
+ }%
+ \let\@mgls@do@current@element\@gobble
+ \fi
+ \fi
+ }%
+% \end{macrocode}
+% Determine prefix and suffix.
+% \begin{macrocode}
+ \mglsisfirstuse
+ {%
+ \let\mglscurrentprefix\@gls@combined@firstprefix
+ \let\mglscurrentsuffix\@gls@combined@firstsuffix
+ }%
+ {%
+ \let\mglscurrentprefix\@gls@combined@usedprefix
+ \let\mglscurrentsuffix\@gls@combined@usedsuffix
+ }%
+% \end{macrocode}
+%Set up post-link hook used after current scope.
+% \begin{macrocode}
+ \xdef\@mgls@post@hookdefs{%
+ \noexpand\def\noexpand\mglslastmultilabel{\expandonce\mglscurrentmultilabel}%
+ \noexpand\def\noexpand\mglslastcategory{\mglscurrentcategory}%
+ }%
+ \ifx\@mgls@do@current@element\@gobble
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastelementskipped\@firstoftwo
+ \let\mglslastelementlabel\@empty
+ \let\mglsiflastelementwasfirstuse\@firstoftwo
+ \let\mglsiflastelementwasplural\@secondoftwo
+ \let\mglsiflastelementcapscase\@firstofthree
+ }%
+ \fi
+ \mglsisfirstuse
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@firstoftwo}%
+% \end{macrocode}
+% Determine if the multi-entry post-link hook should be applied.
+% \begin{macrocode}
+ \ifcase\@gls@combined@mpostlink@nr\relax
+% \end{macrocode}
+% \texttt{mpostlink=false}.
+% \begin{macrocode}
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}%
+ \or
+% \end{macrocode}
+% \texttt{mpostlink=true}.
+% \begin{macrocode}
+ \ifcase\@gls@combined@mpostlinkelement@nr\relax
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}%
+ \fi
+ \or
+% \end{macrocode}
+% \texttt{mpostlink=firstonly}.
+% \begin{macrocode}
+ \ifcase\@gls@combined@mpostlinkelement@nr\relax
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}%
+ \fi
+ \or
+% \end{macrocode}
+% \texttt{mpostlink=usedonly}.
+% \begin{macrocode}
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}%
+ \fi
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@secondoftwo}%
+% \end{macrocode}
+% Determine if the multi-entry post-link hook should be applied.
+% \begin{macrocode}
+ \ifcase\@gls@combined@mpostlink@nr\relax
+% \end{macrocode}
+% \texttt{mpostlink=false}.
+% \begin{macrocode}
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}%
+ \or
+% \end{macrocode}
+% \texttt{mpostlink=true}.
+% \begin{macrocode}
+ \ifcase\@gls@combined@mpostlinkelement@nr\relax
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}%
+ \fi
+ \or
+% \end{macrocode}
+% \texttt{mpostlink=firstonly}.
+% \begin{macrocode}
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}%
+ \or
+% \end{macrocode}
+% \texttt{mpostlink=usedonly}.
+% \begin{macrocode}
+ \ifcase\@gls@combined@mpostlinkelement@nr\relax
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}%
+ \fi
+ \fi
+ }%
+% \end{macrocode}
+% Save current post-link hook.
+% \begin{macrocode}
+ \let\mgls@org@postlinkhook\glspostlinkhook
+% \end{macrocode}
+% Prefix.
+% \begin{macrocode}
+ \mglsprefix
+% \end{macrocode}
+% Initialise last element label (for \cs{mglssuffix}).
+% \begin{macrocode}
+ \let\mglslastelementlabel\@empty
+ \@gls@combined@encapsulator
+ {%
+% \end{macrocode}
+% Save previous label.
+% \begin{macrocode}
+ \def\@mgls@previouslabel{}%
+ \mglselementindex=0\relax
+ \@for\mglscurrentlabel:=\mglscurrentlist\do{%
+ \advance\mglselementindex by 1\relax
+ \glsxtr@setup@docurrent
+% \end{macrocode}
+% Is this the last element?
+% \begin{macrocode}
+ \ifx\@xfor@nextelement\@nnil
+ \let\mglsiflast\@firstoftwo
+ \else
+ \let\mglsiflast\@secondoftwo
+% \end{macrocode}
+% Are any elements being skipped?
+% \begin{macrocode}
+ \mglsisfirstuse
+ {%
+ \glsxtr@mgls@checklastelement{first}{#2}%
+ }%
+ {%
+ \glsxtr@mgls@checklastelement{used}{#2}%
+ }%
+ \fi
+% \end{macrocode}
+% Should the element post-link hook be used?
+% \begin{macrocode}
+ \ifcase\@gls@combined@postlinks@nr\relax
+% \end{macrocode}
+% \texttt{postlinks=none}
+% \begin{macrocode}
+ \let\glspostlinkhook\relax
+ \or
+% \end{macrocode}
+% \texttt{postlinks=all}
+% \begin{macrocode}
+ \let\glspostlinkhook\mgls@org@postlinkhook
+ \or
+% \end{macrocode}
+% \texttt{postlinks=notlast}
+% \begin{macrocode}
+ \mglsiflast
+ {%
+ \let\glspostlinkhook\relax
+ }%
+ {%
+ \let\glspostlinkhook\mgls@org@postlinkhook
+ }%
+ \or
+% \end{macrocode}
+% \texttt{postlinks=mainnotlast}
+% \begin{macrocode}
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \mglsiflast
+ {%
+ \let\glspostlinkhook\relax
+ }%
+ {%
+ \let\glspostlinkhook\mgls@org@postlinkhook
+ }%
+ \else
+ \let\glspostlinkhook\relax
+ \fi
+ \or
+% \end{macrocode}
+% \texttt{postlinks=mainonly}
+% \begin{macrocode}
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \let\glspostlinkhook\mgls@org@postlinkhook
+ \else
+ \let\glspostlinkhook\relax
+ \fi
+ \or
+% \end{macrocode}
+% \texttt{postlinks=othernotlast}
+% \begin{macrocode}
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \let\glspostlinkhook\relax
+ \else
+ \mglsiflast
+ {%
+ \let\glspostlinkhook\relax
+ }%
+ {%
+ \let\glspostlinkhook\mgls@org@postlinkhook
+ }%
+ \fi
+ \or
+% \end{macrocode}
+% \texttt{postlinks=otheronly}
+% \begin{macrocode}
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \let\glspostlinkhook\relax
+ \else
+ \let\glspostlinkhook\mgls@org@postlinkhook
+ \fi
+ \fi
+% \end{macrocode}
+% Save the last element for the multi-entry post-link hook.
+% \begin{macrocode}
+ \mglsiflast
+ {%
+ \xappto\@mgls@post@hookdefs{%
+ \noexpand\def\noexpand\mglslastelementlabel
+ {\expandonce\mglscurrentlabel}}%
+ }%
+ {}%
+% \end{macrocode}
+% Do current element:
+% \begin{macrocode}
+ \@mgls@do@current@element
+ {%
+% \end{macrocode}
+% Pre element hook.
+% \begin{macrocode}
+ \mglselementprehook
+% \end{macrocode}
+% Is this the first use of the current element?
+% \begin{macrocode}
+ \GlsXtrIfUnusedOrUndefined{\mglscurrentlabel}%
+ {\let\@mgls@current@iffirstuse\@firstoftwo}%
+ {\let\@mgls@current@iffirstuse\@secondoftwo}%
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+% \end{macrocode}
+% Main element.
+% Location encap option:
+% \begin{macrocode}
+ \edef\@mgls@current@options{format=\@gls@combined@encapmain}%
+% \end{macrocode}
+%Indexing option:
+% \begin{macrocode}
+ \ifcase\@gls@combined@indexmain
+ \appto\@mgls@current@options{,noindex}%
+ \or
+ \appto\@mgls@current@options{,noindex=false}%
+ \or
+ \@mgls@current@iffirstuse
+ {\appto\@mgls@current@options{,noindex=false}}%
+ {\appto\@mgls@current@options{,noindex}}%
+ \fi
+% \end{macrocode}
+% Hyperlink option:
+% \begin{macrocode}
+ \ifcase\@gls@combined@hyper\relax
+ \appto\@mgls@current@options{,hyper=false}% none
+ \or
+ \appto\@mgls@current@options{,hyper=false}% allmain
+ \or
+ \eappto\@mgls@current@options{,\@mgls@hyper}% mainonly
+ \or
+ \eappto\@mgls@current@options{,\@mgls@hyper}% individual
+ \or
+ \appto\@mgls@current@options{,hyper=false}% otheronly
+ \or
+ \mglsisfirstuse
+ {%
+ \appto\@mgls@current@options{,hyper=false}% notmainfirst
+ }%
+ {%
+ \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst
+ }%
+ \or
+ \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst
+ \or
+ \mglsisfirstuse
+ {%
+ \appto\@mgls@current@options{,hyper=false}% notfirst
+ }%
+ {%
+ \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst
+ }%
+ \fi
+% \end{macrocode}
+%Append all and then main:
+% \begin{macrocode}
+ \eappto\@mgls@current@options{,\@mgls@all,\@mgls@main}%
+ \else
+% \end{macrocode}
+% Other element.
+% Location encap option:
+% \begin{macrocode}
+ \edef\@mgls@current@options{format=\@gls@combined@encapothers}%
+% \end{macrocode}
+% Indexing option:
+% \begin{macrocode}
+ \ifcase\@gls@combined@indexothers\relax
+ \appto\@mgls@current@options{,noindex}%
+ \or
+ \appto\@mgls@current@options{,noindex=false}%
+ \or
+ \@mgls@current@iffirstuse
+ {\appto\@mgls@current@options{,noindex=false}}%
+ {\appto\@mgls@current@options{,noindex}}%
+ \fi
+% \end{macrocode}
+% Hyperlink option:
+% \begin{macrocode}
+ \ifcase\@gls@combined@hyper\relax
+ \appto\@mgls@current@options{,hyper=false}% none
+ \or
+ \appto\@mgls@current@options{,hyper=false}% allmain
+ \or
+ \appto\@mgls@current@options{,hyper=false}% mainonly
+ \or
+ \eappto\@mgls@current@options{,\@mgls@hyper}% individual
+ \or
+ \eappto\@mgls@current@options{,\@mgls@hyper}% otheronly
+ \or
+ \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst
+ \or
+ \mglsisfirstuse
+ {%
+ \appto\@mgls@current@options{,hyper=false}% nototherfirst
+ }%
+ {%
+ \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst
+ }%
+ \or
+ \mglsisfirstuse
+ {%
+ \appto\@mgls@current@options{,hyper=false}% notfirst
+ }%
+ {%
+ \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst
+ }%
+ \fi
+% \end{macrocode}
+%Append all and then others:
+% \begin{macrocode}
+ \eappto\@mgls@current@options{,\@mgls@all,\@mgls@others}%
+ \fi
+% \end{macrocode}
+% Is this the first element?
+% \begin{macrocode}
+ \ifx\@mgls@previouslabel\empty
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \let\@mgls@cs#6\relax
+ \else
+ \let\@mgls@cs#4\relax
+ \fi
+ \else
+% \end{macrocode}
+% Not the first element so add separator.
+% \begin{macrocode}
+ \@mgls@previous@iffirstuse
+ {%
+ \@mgls@current@iffirstuse
+ {\glscombinedfirstsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}%
+ {\glscombinedfirstsep{\@mgls@previouslabel}{\mglscurrentlabel}}%
+ }%
+ {%
+ \@mgls@current@iffirstuse
+ {\glscombinedsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}%
+ {\glscombinedsep{\@mgls@previouslabel}{\mglscurrentlabel}}%
+ }%
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \let\@mgls@cs#7\relax
+ \else
+ \let\@mgls@cs#5\relax
+ \fi
+ \fi
+% \end{macrocode}
+% Is this the last element?
+% \begin{macrocode}
+ \mglsiflast
+ {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[#3]}%
+ {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[]}%
+% \end{macrocode}
+% Is this the main element? If so, save information for post-link
+% hook.
+% \begin{macrocode}
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \xappto\@mgls@post@hookdefs{%
+ \noexpand\def\noexpand\mglslastmainlabel
+ {\expandonce\mglscurrentmainlabel}%
+ }%
+ \glsxtrifwasfirstuse
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@firstoftwo}%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@secondoftwo}%
+ }%
+ \glsifplural
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@firstoftwo}%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@secondoftwo}%
+ }%
+ \glscapscase
+ {%
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastmaincapscase\@firstofthree
+ }%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastmaincapscase\@secondofthree
+ }%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastmaincapscase\@thirdofthree
+ }%
+ }%
+ \fi
+ \let\@mgls@previouslabel\mglscurrentlabel
+ \let\@mgls@previous@iffirstuse\@mgls@current@iffirstuse
+ }%
+% \end{macrocode}
+% Post element hook.
+% \begin{macrocode}
+ \mglselementposthook
+ }%
+ \ifx\mglslastmainlabel\@empty
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@firstoftwo}%
+ \else
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@secondoftwo}%
+ \fi
+% \end{macrocode}
+% Encapsulator may introduce grouping so check here.
+% \begin{macrocode}
+ \ifx\@mgls@do@current@element\@gobble
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@firstoftwo}%
+ \else
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@secondoftwo}%
+ \fi
+ \glsxtrifwasfirstuse
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@firstoftwo}%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@secondoftwo}%
+ }%
+ \glsifplural
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@firstoftwo}%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@secondoftwo}%
+ }%
+ \glscapscase
+ {%
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastelementcapscase\@firstofthree
+ }%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastelementcapscase\@secondofthree
+ }%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastelementcapscase\@thirdofthree
+ }%
+ }%
+ }%
+% \end{macrocode}
+% Suffix needs post-link hook commands.
+% \begin{macrocode}
+ \@mgls@post@hookdefs
+ \mglssuffix
+% \end{macrocode}
+%Unset multi-entry first use flag after current scope.
+% \begin{macrocode}
+ \ifcase\@mgls@unsetaction\relax
+ \xappto\@mgls@post@hookdefs{%
+ \noexpand\mglsunset{\expandonce\mglscurrentmultilabel}}%
+ \or
+ \xappto\@mgls@post@hookdefs{%
+ \noexpand\mglslocalunset{\expandonce\mglscurrentmultilabel}}%
+ \fi
+ }%
+ \glsxtrmglswrite{#2}%
+ \egroup
+ \@mgls@post@hookdefs
+ \mgls@do@postlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglscustompostlinkhook}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglscustompostlinkhook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglslastelementpostlinkhook}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglslastelementpostlinkhook}{%
+ \let\glsxtrifwasfirstuse\mglsiflastelementwasfirstuse
+ \let\glsifplural\mglsiflastelementwasplural
+ \let\glscapscase\mglsiflastelementcapscase
+ \let\glslabel\mglslastelementlabel
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglslastmainpostlinkhook}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglslastmainpostlinkhook}{%
+ \let\glsxtrifwasfirstuse\mglsiflastmainwasfirstuse
+ \let\glsifplural\mglsiflastmainwasplural
+ \let\glscapscase\mglsiflastmaincapscase
+ \let\glslabel\mglslastmainlabel
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsdefcategoryprefix}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglsdefcategoryprefix}[2]{%
+ \csdef{mglsprefix@#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglshascategoryprefix}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglshascategoryprefix}[3]{%
+ \ifcsdef{mglsprefix@#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsusecategoryprefix}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglsusecategoryprefix}[1]{%
+ \csuse{mglsprefix@#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsprefix}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglsprefix}{%
+ \ifdefempty\mglscurrentcategory
+ {\mglscurrentprefix}%
+ {%
+ \mglshascategoryprefix{\mglscurrentcategory}%
+ {\mglsusecategoryprefix{\mglscurrentcategory}}%
+ {\mglscurrentprefix}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsdefcategorysuffix}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglsdefcategorysuffix}[2]{%
+ \csdef{mglssuffix@#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglshascategorysuffix}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglshascategorysuffix}[3]{%
+ \ifcsdef{mglssuffix@#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsusecategorysuffix}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglsusecategorysuffix}[1]{%
+ \csuse{mglssuffix@#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglssuffix}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglssuffix}{%
+ \ifdefempty\mglscurrentcategory
+ {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}%
+ {%
+ \mglshascategorysuffix{\mglscurrentcategory}%
+ {\mglsusecategorysuffix{\mglscurrentcategory}}%
+ {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglselementprehook}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglselementprehook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglselementposthook}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mglselementposthook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%Separators.
+%\begin{macro}{\glscombinedsep}
+%\changes{1.48}{2021-11-22}{new}
+%Separator between two elements that have been marked as used.
+%This takes the two element labels as arguments.
+% \begin{macrocode}
+\newcommand*{\glscombinedsep}[2]{%
+ \glshasattribute{#1}{combinedsep}%
+ {\glsgetattribute{#1}{combinedsep}}%
+ { }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glscombinedfirstsepfirst}
+%\changes{1.48}{2021-11-22}{new}
+%Separator following and preceding a first use.
+% \begin{macrocode}
+\newcommand*{\glscombinedfirstsepfirst}[2]{%
+ \glshasattribute{#1}{combinedfirstsepfirst}%
+ {\glsgetattribute{#1}{combinedfirstsepfirst}}%
+ {\glscombinedsep{#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glscombinedfirstsep}
+%\changes{1.48}{2021-11-22}{new}
+%Separator following a first use.
+% \begin{macrocode}
+\newcommand*{\glscombinedfirstsep}[2]{%
+ \glshasattribute{#1}{combinedfirstsep}%
+ {\glsgetattribute{#1}{combinedfirstsep}}%
+ {\glscombinedsep{#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glscombinedsepfirst}
+%\changes{1.48}{2021-11-22}{new}
+%Separator preceding a first use.
+% \begin{macrocode}
+\newcommand*{\glscombinedsepfirst}[2]{%
+ \glshasattribute{#1}{combinedsepfirst}%
+ {\glsgetattribute{#1}{combinedsepfirst}}%
+ {\glscombinedsep{#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssetcombinedsepabbrvnbsp}
+%\changes{1.48}{2021-11-22}{new}
+%Provide shortcut for using non-breakable space following an
+%abbreviation that has already been used.
+%\changes{1.49}{2022-10-14}{corrected spelling of \cs{ifglshasshort}}
+% \begin{macrocode}
+\newcommand*{\glssetcombinedsepabbrvnbsp}{%
+ \renewcommand*{\glscombinedsep}[2]{%
+ \glshasattribute{##1}{combinedsep}%
+ {\glsgetattribute{##1}{combinedsep}}%
+ {\ifglshasshort{##1}{~}{ }}%
+ }%
+ \renewcommand*{\glscombinedsepfirst}[2]{%
+ \glshasattribute{##1}{combinedsepfirst}%
+ {\glsgetattribute{##1}{combinedsepfirst}}%
+ {\ifglshasshort{##1}{~}{ }}%
+ }%
+ \renewcommand*{\glscombinedfirstsep}[2]{%
+ \glshasattribute{##1}{combinedfirstsep}%
+ {\glsgetattribute{##1}{combinedfirstsep}}%
+ { }%
+ }%
+ \renewcommand*{\glscombinedfirstsepfirst}[2]{%
+ \glshasattribute{##1}{combinedfirstsepfirst}%
+ {\glsgetattribute{##1}{combinedfirstsepfirst}}%
+ { }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssetcombinedsepabbrvnone}
+%\changes{1.48}{2021-11-22}{new}
+%Provide shortcut for using nothing if either on next use are
+%abbreviations (otherwise use space).
+%\changes{1.49}{2022-10-14}{corrected spelling of \cs{ifglshasshort}}
+% \begin{macrocode}
+\newcommand*{\glssetcombinedsepabbrvnone}{%
+ \renewcommand*{\glscombinedsep}[2]{%
+ \glshasattribute{##1}{combinedsep}%
+ {\glsgetattribute{##1}{combinedsep}}%
+ {\ifglshasshort{##1}{}{\ifglshasshort{##2}{}{ }}}%
+ }%
+ \renewcommand*{\glscombinedsepfirst}[2]{%
+ \glshasattribute{##1}{combinedsepfirst}%
+ {\glsgetattribute{##1}{combinedsepfirst}}%
+ {\ifglshasshort{##1}{}{ }}%
+ }%
+ \renewcommand*{\glscombinedfirstsep}[2]{%
+ \glshasattribute{##1}{combinedfirstsep}%
+ {\glsgetattribute{##1}{combinedfirstsep}}%
+ {\ifglshasshort{##2}{}{ }}%
+ }%
+ \renewcommand*{\glscombinedfirstsepfirst}[2]{%
+ \glshasattribute{##1}{combinedfirstsepfirst}%
+ {\glsgetattribute{##1}{combinedfirstsepfirst}}%
+ { }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssetcombinedsepnarrow}
+%\changes{1.48}{2021-11-22}{new}
+%\changes{1.49}{2022-10-14}{corrected spelling of \cs{ifglshasshort}}
+%Measures both.
+% \begin{macrocode}
+\newcommand*{\glssetcombinedsepnarrow}[2]{%
+ \renewcommand*{\glscombinedsep}[2]{%
+ \glshasattribute{##1}{combinedsep}%
+ {\glsgetattribute{##1}{combinedsep}}%
+ {%
+ \ifglshasshort{##1}%
+ {\settowidth{\dimen@}{\glsentryshort{##1}}}%
+ {\settowidth{\dimen@}{\glsentrytext{##1}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \ifglshasshort{##2}%
+ {\settowidth{\dimen@}{\glsentryshort{##2}}}%
+ {\settowidth{\dimen@}{\glsentrytext{##2}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \space
+ \fi
+ \fi
+ }%
+ }%
+ \renewcommand*{\glscombinedsepfirst}[2]{%
+ \glshasattribute{##1}{combinedsepfirst}%
+ {\glsgetattribute{##1}{combinedsepfirst}}%
+ {%
+ \ifglshasshort{##1}%
+ {\settowidth{\dimen@}{\glsentryshort{##1}}}%
+ {\settowidth{\dimen@}{\glsentrytext{##1}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \ifhaslong{##2}%
+ {\settowidth{\dimen@}{\glsentrylong{##2}}}%
+ {\settowidth{\dimen@}{\glsentryfirst{##2}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \space
+ \fi
+ \fi
+ }%
+ }%
+ \renewcommand*{\glscombinedfirstsep}[2]{%
+ \glshasattribute{##1}{combinedfirstsep}%
+ {\glsgetattribute{##1}{combinedfirstsep}}%
+ {%
+ \ifhaslong{##1}%
+ {\settowidth{\dimen@}{\glsentrylong{##1}}}%
+ {\settowidth{\dimen@}{\glsentryfirst{##1}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \ifglshasshort{##2}%
+ {\settowidth{\dimen@}{\glsentryshort{##2}}}%
+ {\settowidth{\dimen@}{\glsentrytext{##2}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \space
+ \fi
+ \fi
+ }%
+ }%
+ \renewcommand*{\glscombinedfirstsepfirst}[2]{%
+ \glshasattribute{##1}{combinedfirstsepfirst}%
+ {\glsgetattribute{##1}{combinedfirstsepfirst}}%
+ {%
+ \ifhaslong{##1}%
+ {\settowidth{\dimen@}{\glsentrylong{##1}}}%
+ {\settowidth{\dimen@}{\glsentryfirst{##1}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \ifhaslong{##2}%
+ {\settowidth{\dimen@}{\glsentrylong{##2}}}%
+ {\settowidth{\dimen@}{\glsentryfirst{##2}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \space
+ \fi
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@mglswrite}
+%\changes{1.48}{2021-11-22}{new}
+%Write information to the aux file for \app{bib2gls} to pick up, but
+%only need to do it once per label since it only indicates which multi-entry
+%has been referenced without any additional information.
+% \begin{macrocode}
+\newcommand{\glsxtrmglswrite}[1]{%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off
+ \else
+ \protected@edef\@glsxtr@mglslabel{#1}%
+ \ifdef\@glsxtr@mglsreflist
+ {%
+ \expandafter\DTLifinlist\expandafter{\@glsxtr@mglslabel}%
+ {\@glsxtr@mglsreflist}{}%
+ {%
+ \xappto\@glsxtr@mglsreflist{,\expandonce\@glsxtr@mglslabel}%
+ \if@mgls@writeseparaterefs
+ \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}%
+ \fi
+ }%
+ }%
+ {%
+ \global\let\@glsxtr@mglsreflist\@glsxtr@mglslabel
+ \if@mgls@writeseparaterefs
+ \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}%
+ \else
+ \AtEndDocument{\immediate\protected@write\@auxout{}%
+ {\string\@glsxtr@mglsrefs{\@glsxtr@mglsreflist}}}%
+ \fi
+ \@mgls@disable@writeseparateref@cond
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@mglsrefs}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand{\@glsxtr@mglsrefs}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\if@mgls@writeseparaterefs}
+%\changes{1.48}{2021-11-22}{new}
+%If this conditional is changed, it must be done before the first
+%instance of any \cs{mgls}-like command.
+% \begin{macrocode}
+\newif\if@mgls@writeseparaterefs \@mgls@writeseparaterefsfalse
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsWriteSeparateRefsTrue}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand{\mglsWriteSeparateRefsTrue}{\global\@mgls@writeseparaterefstrue}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsWriteSeparateRefsFalse}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand{\mglsWriteSeparateRefsFalse}{\global\@mgls@writeseparaterefsfalse}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@mgls@disable@writeseparateref@cond}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@mgls@disable@writeseparateref@cond}{%
+ \gdef\mglsWriteSeparateRefsTrue{\PackageError{glossaries-extra}%
+ {Too late to use \string\mglsWriteSeparateRefsTrue}%
+ {\string\mglsWriteSeparateRefsTrue\space can only be used before
+ the first instance of any \string\mgls-like command}}%
+ \gdef\mglsWriteSeparateRefsFalse{\PackageError{glossaries-extra}%
+ {Too late to use \string\mglsWriteSeparateRefsFalse}%
+ {\string\mglsWriteSeparateRefsFalse\space can only be used before
+ the first instance of any \string\mgls-like command}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@newmgls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand{\glsxtr@newmgls}[5]{%
+ \edef\@glsxr@newmgls@do{%
+ \noexpand\newrobustcmd*{\expandonce{\csname #1\endcsname}}%
+ {\noexpand\@gls@hyp@opt\expandonce{\csname ns@glsxtr@#1\endcsname}}%
+ \noexpand\newcommand*{\expandonce{\csname ns@glsxtr@#1\endcsname}}[2][]{%
+ \noexpand\new@ifnextchar[%
+ {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}}%
+ {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}[]}%
+ }%
+ \noexpand\def\expandonce{\csname glsxtr@#1\endcsname}####1####2[####3]{%
+ \noexpand\def\noexpand\glsxtrcurrentmglscsname{#1}%
+ \noexpand\glsxtr@mgls@inner{####1}{####2}{####3}%
+ {\noexpand#2}{\noexpand#3}{\noexpand#4}{\noexpand#5}%
+ }%
+ }%
+ \@glsxr@newmgls@do
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off
+ \else
+% \end{macrocode}
+% Provide a way for \app{bib2gls} to recognise the command (this will
+% make it easier to add extra commands without having to modify
+% \app{bib2gls}).
+% \begin{macrocode}
+ \ifdef\@glsxtr@mglslikelist
+ {\xappto\@glsxtr@mglslikelist{,#1}}%
+ {%
+ \gdef\@glsxtr@mglslikelist{#1}%
+ \AtEndDocument{\immediate\protected@write\@auxout{}%
+ {\string\@glsxtr@mglslike{\@glsxtr@mglslikelist}}}%
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@mglslike}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@mglslike}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrMglsOrGls}
+%\begin{definition}
+%\cs{GlsXtrMglsOrGls}\marg{mgls cs}\marg{gls cs}\meta{modifier}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%\changes{1.48}{2021-11-22}{new}
+%\changes{1.49}{2022-10-14}{removed spurious \cs{PLUS}}
+% \begin{macrocode}
+\newcommand*{\GlsXtrMglsOrGls}[2]{%
+ \def\@glsxtr@mgls@or@gls@mcs{#1}%
+ \def\@glsxtr@mgls@or@gls@gcs{#2}%
+ \@ifstar{\s@GlsXtrMglsOrGls}%
+ {%
+ \@ifnextchar+{\@firstoftwo{\p@GlsXtrMglsOrGls}}%
+ {%
+ \ifdefempty\@gls@alt@hyp@opt@char\@GlsXtrMglsOrGls\alt@GlsXtrMglsOrGls
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\alt@GlsXtrMglsOrGls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\alt@GlsXtrMglsOrGls}{
+ \expandafter\@ifnextchar\@gls@alt@hyp@opt@char
+ {\@firstoftwo{\@alt@GlsXtrMglsOrGls}}{\@GlsXtrMglsOrGls}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GlsXtrMglsOrGls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@GlsXtrMglsOrGls}[2][]{%
+ \glsxtrifmulti{#2}%
+ {\@glsxtr@mgls@or@gls@mcs[#1]{#2}}%
+ {\@glsxtr@mgls@or@gls@gcs[#1]{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\s@GlsXtrMglsOrGls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\s@GlsXtrMglsOrGls}[2][]{%
+ \glsxtrifmulti{#2}%
+ {\@glsxtr@mgls@or@gls@mcs*[#1]{#2}}%
+ {\@glsxtr@mgls@or@gls@gcs*[#1]{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\p@GlsXtrMglsOrGls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\p@GlsXtrMglsOrGls}[2][]{%
+ \glsxtrifmulti{#2}%
+ {\@glsxtr@mgls@or@gls@mcs+[#1]{#2}}%
+ {\@glsxtr@mgls@or@gls@gcs+[#1]{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@alt@GlsXtrMglsOrGls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@alt@GlsXtrMglsOrGls}[2][]{%
+ \glsxtrifmulti{#2}%
+ {\expandafter\@glsxtr@mgls@or@gls@mcs\@gls@alt@hyp@opt@char[#1]{#2}}%
+ {\expandafter\@glsxtr@mgls@or@gls@gcs\@gls@alt@hyp@opt@char[#1]{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mgls}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mgls}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use \cs{gls} for all elements.
+% \begin{macrocode}
+\glsxtr@newmgls{mgls}{\@gls@}{\@gls@}{\@gls@}{\@gls@}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglspl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglspl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use \cs{glspl} for all elements.
+% \begin{macrocode}
+\glsxtr@newmgls{mglspl}{\@glspl@}{\@glspl@}{\@glspl@}{\@glspl@}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsmainpl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglsmainpl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Only use \cs{glspl} for the main element, otherwise use \cs{gls}.
+% \begin{macrocode}
+\glsxtr@newmgls{mglsmainpl}{\@gls@}{\@gls@}{\@glspl@}{\@glspl@}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mgls}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{Mgls}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Use \cs{Gls} for first element and \cs{gls} for others.
+% \begin{macrocode}
+\glsxtr@newmgls{Mgls}{\@Gls@}{\@gls@}{\@Gls@}{\@gls@}%
+\glsmfuaddmap{\mgls}{\Mgls}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mglspl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{Mglspl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Use \cs{Glspl} for first element and \cs{glspl} for others.
+% \begin{macrocode}
+\glsxtr@newmgls{Mglspl}{\@Glspl@}{\@glspl@}{\@Glspl@}{\@glspl@}%
+\glsmfuaddmap{\mglspl}{\Mglspl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mglsmainpl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{Mglsmainpl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Upper case the first element, no case change for others.
+%Use plural for the main element only.
+% \begin{macrocode}
+\glsxtr@newmgls{Mglsmainpl}{\@Gls@}{\@gls@}{\@Glspl@}{\@glspl@}%
+\glsmfuaddmap{\mglsmainpl}{\Mglsmainpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MGls}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MGls}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Use \cs{Gls} for all elements.
+% \begin{macrocode}
+\glsxtr@newmgls{MGls}{\@Gls@}{\@Gls@}{\@Gls@}{\@Gls@}%
+\glsmfublocker{\MGls}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MGlspl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MGlspl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Use \cs{Glspl} for all elements.
+% \begin{macrocode}
+\glsxtr@newmgls{MGlspl}{\@Glspl@}{\@Glspl@}{\@Glspl@}{\@Glspl@}%
+\glsmfublocker{\MGlspl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MGlsmainpl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MGlsmainpl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Start all elements with upper case. Only use plural for main
+%element.
+% \begin{macrocode}
+\glsxtr@newmgls{MGlsmainpl}{\@Gls@}{\@Gls@}{\@Glspl@}{\@Glspl@}%
+\glsmfublocker{\MGlsmainpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MGLS}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MGLS}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Use \cs{GLS} for all elements.
+% \begin{macrocode}
+\glsxtr@newmgls{MGLS}{\@GLS@}{\@GLS@}{\@GLS@}{\@GLS@}%
+\glsmfublocker{\MGLS}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MGLSpl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MGLSpl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Use \cs{GLSpl} for all elements.
+% \begin{macrocode}
+\glsxtr@newmgls{MGLSpl}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}%
+\glsmfublocker{\MGLSpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MGLSmainpl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MGLSmainpl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Upper case all elements. Only use plural for main element.
+% \begin{macrocode}
+\glsxtr@newmgls{MGLSmainpl}{\@GLS@}{\@GLS@}{\@GLSpl@}{\@GLSpl@}%
+\glsmfublocker{\MGLSmainpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glslongortext@}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@glslongortext#1#2[#3]{%
+ \ifglshaslong{#2}{\@glsxtrlong{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsshortortext@}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@glsshortortext#1#2[#3]{%
+ \ifglshasshort{#2}{\@glsxtrshort{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsfullorfirst@}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@glsfullorfirst#1#2[#3]{%
+ \ifglshasshort{#2}{\@glsxtr@full{#1}{#2}[#3]}{\@glsfirst@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glslongortext@}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@Glslongortext#1#2[#3]{%
+ \ifglshaslong{#2}{\@Glsxtrlong{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsshortortext@}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@Glsshortortext#1#2[#3]{%
+ \ifglshasshort{#2}{\@Glsxtrshort{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsfullorfirst@}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@Glsfullorfirst#1#2[#3]{%
+ \ifglshasshort{#2}{\@Glsxtr@full{#1}{#2}[#3]}{\@Glsfirst@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsshort}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglsshort}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use short or text for all elements.
+% \begin{macrocode}
+\glsxtr@newmgls{mglsshort}%
+{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglslong}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglslong}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use long or text for all elements.
+% \begin{macrocode}
+\glsxtr@newmgls{mglslong}%
+{\@glslongortext}{\@glslongortext}{\@glslongortext}{\@glslongortext}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsfull}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglsfull}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use full or first for all elements.
+% \begin{macrocode}
+\glsxtr@newmgls{mglsfull}%
+{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mglsshort}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{Mglsshort}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use short or text for all elements with initial cap on first element.
+% \begin{macrocode}
+\glsxtr@newmgls{Mglsshort}%
+{\@Glsshortortext}{\@glsshortortext}{\@Glsshortortext}{\@glsshortortext}%
+\glsmfuaddmap{\mglsshort}{\Mglsshort}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mglslong}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{Mglslong}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use long or text for all elements with initial cap on first
+% element.
+% \begin{macrocode}
+\glsxtr@newmgls{Mglslong}%
+{\@Glslongortext}{\@glslongortext}{\@Glslongortext}{\@glslongortext}%
+\glsmfuaddmap{\mglslong}{\Mglslong}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mglsfull}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{Mglsfull}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use full or first for all elements with initial cap on first
+% element.
+% \begin{macrocode}
+\glsxtr@newmgls{Mglsfull}%
+{\@Glsfullorfirst}{\@glsfullorfirst}{\@Glsfullorfirst}{\@glsfullorfirst}%
+\glsmfuaddmap{\mglsfull}{\Mglsfull}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsname}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglsname}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use name for all elements.
+% \begin{macrocode}
+\glsxtr@newmgls{mglsname}%
+ {\@glsname@}{\@glsname@}{\@glsname@}{\@glsname@}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mglsname}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{Mglsname}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use name for all elements with initial cap on first
+% element.
+% \begin{macrocode}
+\glsxtr@newmgls{Mglsname}%
+ {\@Glsname@}{\@glsname@}{\@Glsname@}{\@glsname@}%
+\glsmfuaddmap{\mglsname}{\Mglsname}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MGlsname}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MGlsname}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use name for all elements with initial cap on all
+% elements.
+% \begin{macrocode}
+\glsxtr@newmgls{MGlsname}%
+ {\@Glsname@}{\@Glsname@}{\@Glsname@}{\@Glsname@}%
+\glsmfublocker{\MGlsname}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glssymbolorgls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@glssymbolorgls#1#2[#3]{%
+ \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@gls@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glssymbolorGls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@glssymbolorGls#1#2[#3]{%
+ \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@Gls@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglssymbol}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglssymbol}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use \cs{glssymbol} if the \gloskey{symbol} key is set otherwise
+% use \cs{gls}.
+% \begin{macrocode}
+\glsxtr@newmgls{mglssymbol}%
+ {\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mglssymbol}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{Mglssymbol}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% As above but initial the first element if it's not a symbol.
+% \begin{macrocode}
+\glsxtr@newmgls{Mglssymbol}%
+ {\@glssymbolorGls}{\@glssymbolorgls}{\@glssymbolorGls}{\@glssymbolorgls}%
+\glsmfuaddmap{\mglssymbol}{\Mglssymbol}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MGlssymbol}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MGlssymbol}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% As above but initial each element if it's not a symbol.
+% \begin{macrocode}
+\glsxtr@newmgls{MGlssymbol}%
+ {\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}%
+\glsmfublocker{\MGlssymbol}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsfield}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand{\mglsfield}{useri}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsfieldorgls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@glsfieldorgls#1#2[#3]{%
+ \glsxtrifhasfield{\mglsfield}{#2}%
+ {\@glsdisp[#1]{#2}{\glscurrentfieldvalue#3}}%
+ {\@gls@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsfieldorgls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@Glsfieldorgls#1#2[#3]{%
+ \glsxtrifhasfield{\mglsfield}{#2}%
+ {\@glsdisp[#1]{#2}{%
+ \expandafter\glssentencecase\expandafter{\glscurrentfieldvalue#3}}}%
+ {\@Gls@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mglsusefield}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mglsusefield}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use the field given by \cs{mglsfield}.
+% \begin{macrocode}
+\glsxtr@newmgls{mglsusefield}%
+ {\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mglsusefield}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{Mglsusefield}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% As above but use initial cap for first element only.
+% \begin{macrocode}
+\glsxtr@newmgls{Mglsusefield}%
+ {\@Glsfieldorgls}{\@glsfieldorgls}{\@Glsfieldorgls}{\@glsfieldorgls}%
+\glsmfuaddmap{\mglsusefield}{\Mglsusefield}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MGlsusefield}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MGlsusefield}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% As above but use initial cap for all elements.
+% \begin{macrocode}
+\glsxtr@newmgls{MGlsusefield}%
+ {\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}%
+\glsmfublocker{\MGlsusefield}
+% \end{macrocode}
+%\end{macro}
+%
+% Use commands provided by \sty{glossaries-prefix} if it has been
+% loaded.
+%\begin{macro}{\mpglsWarning}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\mpglsWarning}{%
+ \GlossariesExtraWarning{glossaries-prefix.sty is required for
+ \string\mpgls\space family of commands}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@pglsorgls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@pglsorgls#1#2[#3]{%
+ \ifdef\@pgls@{\@pgls@{#1}{#2}[#3]}{\mpglsWarning\@gls@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@pglsorglspl}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@pglsorglspl#1#2[#3]{%
+ \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Pglsorgls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@Pglsorgls#1#2[#3]{%
+ \ifdef\@Pgls@{\@Pgls@{#1}{#2}[#3]}{\mpglsWarning\@Gls@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@pglsorglspl}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@pglsorglspl#1#2[#3]{%
+ \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Pglsorglspl}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@Pglsorglspl#1#2[#3]{%
+ \ifdef\@Pglspl@{\@Pglspl@{#1}{#2}[#3]}{\mpglsWarning\@Glspl@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@PGLSorgls}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@PGLSorgls#1#2[#3]{%
+ \ifdef\@PGLS@{\@PGLS@{#1}{#2}[#3]}{\mpglsWarning\@GLS@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@PGLSorglspl}
+%\changes{1.48}{2021-11-22}{new}
+% \begin{macrocode}
+\def\@PGLSorglspl#1#2[#3]{%
+ \ifdef\@PGLSpl@{\@PGLSpl@{#1}{#2}[#3]}{\mpglsWarning\@GLSpl@{#1}{#2}[#3]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mpgls}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mpgls}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use \cs{pgls} for the first element and \cs{gls} for the remainder.
+% \begin{macrocode}
+\glsxtr@newmgls{mpgls}{\@pglsorgls@}{\@gls@}{\@pglsorgls@}{\@gls@}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mpglspl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mpglspl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use \cs{pglspl} for the first element and \cs{glspl} for the remainder.
+% \begin{macrocode}
+\glsxtr@newmgls{mpglspl}{\@pglsorglspl@}{\@glspl@}{\@pglsorglspl@}{\@glspl@}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mpglsmainpl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{mpglsmainpl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Only use plural for main element and only use prefixing command for
+%first element.
+% \begin{macrocode}
+\glsxtr@newmgls{mpglsmainpl}{\@pglsorgls@}{\@gls@}{\@pglsorglspl@}{\@glspl@}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mpgls}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{Mpgls}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use \cs{Pgls} for the first element and \cs{gls} for the remainder.
+% \begin{macrocode}
+\glsxtr@newmgls{Mpgls}{\@Pglsorgls@}{\@gls@}{\@Pglsorgls@}{\@gls@}%
+\glsmfuaddmap{\mpgls}{\Mpgls}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mpglspl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{Mpglspl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use \cs{Pglspl} for the first element and \cs{glspl} for the remainder.
+% \begin{macrocode}
+\glsxtr@newmgls{Mpglspl}{\@Pglsorglspl@}{\@glspl@}{\@Pglsorglspl@}{\@glspl@}%
+\glsmfuaddmap{\mpglspl}{\Mpglspl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mpglsmainpl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{Mpglsmainpl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Only use plural for main element and only use first letter
+%uppercase prefixing command for first element.
+% \begin{macrocode}
+\glsxtr@newmgls{Mpglsmainpl}{\@Pglsorgls@}{\@gls@}{\@Pglsorglspl@}{\@glspl@}%
+\glsmfuaddmap{\mpglsmainpl}{\Mpglsmainpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MPGls}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MPGls}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Use \cs{Pgls} for the first element and \cs{Gls} for the remainder.
+% \begin{macrocode}
+\glsxtr@newmgls{MPGls}{\@Pglsorgls@}{\@Gls@}{\@Pglsorgls@}{\@Gls@}%
+\glsmfublocker{\MPGls}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MPGlspl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MPGlspl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use \cs{Pglspl} for the first element and \cs{Glspl} for the remainder.
+% \begin{macrocode}
+\glsxtr@newmgls{MPGlspl}{\@Pglsorglspl@}{\@Glspl@}{\@Pglsorglspl@}{\@Glspl@}%
+\glsmfublocker{\MPGlspl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MPGlsmainpl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MPGlsmainpl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Only use plural for main element and first letter uppercase all
+%elements.
+% \begin{macrocode}
+\glsxtr@newmgls{MPGlsmainpl}{\@Pglsorgls@}{\@Gls@}{\@Pglsorglspl@}{\@Glspl@}%
+\glsmfublocker{\MPGlsmainpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MPGLS}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MPGLS}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use \cs{PGLS} for the first element and \cs{GLS} for the remainder.
+% \begin{macrocode}
+\glsxtr@newmgls{MPGLS}{\@PGLSorgls@}{\@GLS@}{\@PGLSorgls@}{\@GLS@}%
+\glsmfublocker{\MPGLS}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MPGLSpl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MPGLSpl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% Use \cs{PGLSpl} for the first element and \cs{GLSpl} for the remainder.
+% \begin{macrocode}
+\glsxtr@newmgls{MPGLSpl}{\@PGLSorglspl@}{\@GLSpl@}{\@PGLSorglspl@}{\@GLSpl@}%
+\glsmfublocker{\MPGLSpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MPGLSmainpl}
+%\changes{1.48}{2021-11-22}{new}
+%\begin{definition}
+%\cs{MPGLSmainpl}\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+%Only use plural for main element and uppercase all elements.
+% \begin{macrocode}
+\glsxtr@newmgls{MPGLSmainpl}{\@PGLSorgls@}{\@GLS@}{\@PGLSorglspl@}{\@GLSpl@}%
+\glsmfublocker{\MPGLSmainpl}
+% \end{macrocode}
+%\end{macro}
+%
+%Not currently implementing any other variations.
+%
+%\subsection{Multi-Lingual Support}
+% Add the facility to load language modules, if they are installed,
+% but none are provided with this package.
+%
+%\begin{macro}{\RequireGlossariesExtraLang}
+%\changes{0.5.3}{2015-12-09}{new}
+% \begin{macrocode}
+\newcommand*{\RequireGlossariesExtraLang}[1]{%
+ \@ifundefined{ver@glossariesxtr-#1.ldf}{\input{glossariesxtr-#1.ldf}}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ProvidesGlossariesExtraLang}
+%\changes{0.5.3}{2015-12-09}{new}
+% \begin{macrocode}
+\newcommand*{\ProvidesGlossariesExtraLang}[1]{%
+ \ProvidesFile{glossariesxtr-#1.ldf}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Load any required language modules that are available. This
+% doesn't generate any warning if none are found, since they're not
+% essential. (The only command that really needs defining for the
+% document is \cs{abbreviationsname}, which can simply be
+% redefined. However, with \app{bib2gls} it might be useful to
+% provide custom rules for a particular locale.)
+%
+%\begin{macro}{\glsxtr@loaddialect}
+%The dialect label should be stored in \cs{this@dialect}
+%before using this command.
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand{\glsxtr@loaddialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossariesxtr-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesExtraLang{\CurrentTrackedTag}%
+ }%
+ {}% not found
+% \end{macrocode}
+% If \sty{glossaries-extra-bib2gls} has been loaded,
+% \cs{@glsxtrdialecthook} will check for the associated script,
+% otherwise it will do nothing.
+% \begin{macrocode}
+ \@glsxtrdialecthook
+}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+\@ifpackageloaded{tracklang} {%
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{\glsxtr@loaddialect}%
+ }%
+ {}%
+} {}
+% \end{macrocode}
+% The style needs to be set at the end to ensure that
+% \cs{setglossarystyle} has been redefined and extra style commands
+% have been defined.
+% Load \sty{glossaries-extra-stylemods} if required.
+% \begin{macrocode}
+\@glsxtr@redefstyles
+% \end{macrocode}
+% and set the style:
+% \begin{macrocode}
+\@glsxtr@do@style
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-extra.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-extra-abbrstyles.def>
+% \end{macrocode}
+%\fi
+%\section{Predefined Abbreviation Styles (glossaries-extra-abbrstyles.def)}
+%\changes{1.49}{??}{added glossaries-extra-abbrstyles.def}
+% \begin{macrocode}
+\ProvidesFile{glossaries-extra-abbrstyles.def}[2022/06/16 v1.48b (NLCT)]
+% \end{macrocode}
+%This file contains the predefined abbreviation styles.
+%Some helper commands first.
%
%\begin{macro}{\glsxtrlongshortname}
%\changes{1.25}{2017-11-24}{new}
% \begin{macrocode}
\newcommand*{\glsxtrlongshortname}{%
- \protect\glsabbrvfont{\the\glsshorttok}%
+ \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
}
% \end{macrocode}
%\end{macro}
%
+%Provide convenient wrappers for common formats.
+%\begin{macro}{\glsxtrlongformat}
+%\begin{definition}
+%\cs{glsxtrlongformat}\marg{label}\marg{insert}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlongformat}[3]{%
+% \end{macrocode}
+%Don't add inner formatting if markwords attribute set as the inner formatting
+%is implemented within \cs{glsxtrword} and \cs{glsxtrwordsep}.
+% \begin{macrocode}
+ \glsifattribute{#1}{markwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\glsaccesslong{#1}\glsxtrgenentrytextfmt{#2}}%
+ \else
+ #3{\glsaccesslong{#1}}\glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ #3{\glsaccessfmtlong{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ #3{\glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrlongplformat}
+%\begin{definition}
+%\cs{glsxtrlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlongplformat}[3]{%
+ \glsifattribute{#1}{markwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\glsaccesslongpl{#1}\glsxtrgenentrytextfmt{#2}}%
+ \else
+ #3{\glsaccesslongpl{#1}}\glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ #3{\glsaccessfmtlongpl{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ #3{\glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrlongformat}
+%\begin{definition}
+%\cs{Glsxtrlongformat}\marg{label}\marg{insert}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrlongformat}[3]{%
+ \glsifattribute{#1}{markwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\Glsaccesslong{#1}\glsxtrgenentrytextfmt{#2}}%
+ \else
+ #3{\Glsaccesslong{#1}}\glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ #3{\Glsaccessfmtlong{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ #3{\Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrlongplformat}
+%\begin{definition}
+%\cs{Glsxtrlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrlongplformat}[3]{%
+ \glsifattribute{#1}{markwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\Glsaccesslongpl{#1}\glsxtrgenentrytextfmt{#2}}%
+ \else
+ #3{\Glsaccesslongpl{#1}}\glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ #3{\Glsaccessfmtlongpl{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ #3{\Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrlongformat}
+%\begin{definition}
+%\cs{GLSxtrlongformat}\marg{label}\marg{insert}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrlongformat}[3]{%
+ \glsifattribute{#1}{markwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\GLSaccesslong{#1}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ #3{\GLSaccesslong{#1}}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ #3{\GLSaccessfmtlong{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ #3{\GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}%
+ \mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrlongplformat}
+%\begin{definition}
+%\cs{GLSxtrlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrlongplformat}[3]{%
+ \glsifattribute{#1}{markwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\GLSaccesslongpl{#1}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ #3{\GLSaccesslongpl{#1}}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ #3{\GLSaccessfmtlongpl{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ #3{\GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrlongformatgrp}
+%\begin{definition}
+%\cs{glsxtrlongformatgrp}\marg{label}\marg{insert}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+%Add grouping around insert.
+% \begin{macrocode}
+\newcommand*{\glsxtrlongformatgrp}[3]{%
+ \glsifattribute{#1}{markwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\glsaccesslong{#1}{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ #3{\glsaccesslong{#1}}{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ #3{\glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}%
+ \ifglsxtrinsertinside
+ {#3{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrlongplformatgrp}
+%\begin{definition}
+%\cs{glsxtrlongformatplgrp}\marg{label}\marg{insert}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+%Add grouping around insert.
+% \begin{macrocode}
+\newcommand*{\glsxtrlongplformatgrp}[3]{%
+ \glsifattribute{#1}{markwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\glsaccesslongpl{#1}{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ #3{\glsaccesslongpl{#1}}{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ #3{\glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \ifglsxtrinsertinside
+ {#3{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrlongformatgrp}
+%\begin{definition}
+%\cs{Glsxtrlongformatgrp}\marg{label}\marg{insert}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+%Add grouping around insert.
+% \begin{macrocode}
+\newcommand*{\Glsxtrlongformatgrp}[3]{%
+ \glsifattribute{#1}{markwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\Glsaccesslong{#1}{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ #3{\Glsaccesslong{#1}}{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ #3{\Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}%
+ \ifglsxtrinsertinside
+ {#3{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrlongplformatgrp}
+%\begin{definition}
+%\cs{Glsxtrlongformatplgrp}\marg{label}\marg{insert}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+%Add grouping around insert.
+% \begin{macrocode}
+\newcommand*{\Glsxtrlongplformatgrp}[3]{%
+ \glsifattribute{#1}{markwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\Glsaccesslongpl{#1}{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ #3{\Glsaccesslongpl{#1}}{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ #3{\Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \ifglsxtrinsertinside
+ {#3{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrlongformatgrp}
+%\begin{definition}
+%\cs{GLSxtrlongformatgrp}\marg{label}\marg{insert}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+%Add grouping around insert.
+% \begin{macrocode}
+\newcommand*{\GLSxtrlongformatgrp}[3]{%
+ \glsifattribute{#1}{markwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\GLSaccesslong{#1}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ #3{\GLSaccesslong{#1}}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+ }%
+ {%
+ #3{\GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}%
+ \ifglsxtrinsertinside
+ {\mfirstucMakeUppercase{#3{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrlongplformatgrp}
+%\begin{definition}
+%\cs{GLSxtrlongformatplgrp}\marg{label}\marg{insert}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+%Add grouping around insert.
+% \begin{macrocode}
+\newcommand*{\GLSxtrlongplformatgrp}[3]{%
+ \glsifattribute{#1}{markwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\GLSaccesslongpl{#1}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ #3{\GLSaccesslongpl{#1}}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+ }%
+ {%
+ #3{\GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \ifglsxtrinsertinside
+ {\mfirstucMakeUppercase{#3{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrshortformat}
+%\begin{definition}
+%\cs{glsxtrshortformat}\marg{label}\marg{insert}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrshortformat}[3]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\glsaccessshort{#1}\glsxtrgenentrytextfmt{#2}}%
+ \else
+ #3{\glsaccessshort{#1}}\glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ #3{\glsaccessfmtshort{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ #3{\glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrshortplformat}
+%\begin{definition}
+%\cs{glsxtrshortplformat}\marg{label}\marg{insert}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrshortplformat}[3]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\glsaccessshortpl{#1}\glsxtrgenentrytextfmt{#2}}%
+ \else
+ #3{\glsaccessshortpl{#1}}\glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ #3{\glsaccessfmtshortpl{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ #3{\glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrshortformat}
+%\begin{definition}
+%\cs{Glsxtrshortformat}\marg{label}\marg{insert}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrshortformat}[3]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\Glsaccessshort{#1}\glsxtrgenentrytextfmt{#2}}%
+ \else
+ #3{\Glsaccessshort{#1}}\glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ #3{\Glsaccessfmtshort{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ #3{\Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrshortplformat}
+%\begin{definition}
+%\cs{Glsxtrshortplformat}\marg{label}\marg{insert}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrshortplformat}[3]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\Glsaccessshortpl{#1}\glsxtrgenentrytextfmt{#2}}%
+ \else
+ #3{\Glsaccessshortpl{#1}}\glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ #3{\Glsaccessfmtshortpl{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ #3{\Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \glsxtrgenentrytextfmt{#2}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrshortformat}
+%\begin{definition}
+%\cs{GLSxtrshortformat}\marg{label}\marg{insert}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrshortformat}[3]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\GLSaccessshort{#1}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ #3{\GLSaccessshort{#1}}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ #3{\GLSaccessfmtshort{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ #3{\GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}%
+ \mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrshortplformat}
+%\begin{definition}
+%\cs{GLSxtrshortplformat}\marg{label}\marg{insert}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrshortplformat}[3]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\GLSaccessshortpl{#1}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ #3{\GLSaccessshortpl{#1}}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ \ifglsxtrinsertinside
+ #3{\GLSaccessfmtshortpl{#2}{\glsxtrgenentrytextfmt}{#1}}%
+ \else
+ #3{\GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrshortformatgrp}
+%\begin{definition}
+%\cs{glsxtrshortformatgrp}\marg{label}\marg{insert}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+%Add grouping around insert.
+% \begin{macrocode}
+\newcommand*{\glsxtrshortformatgrp}[3]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\glsaccessshort{#1}{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ #3{\glsaccessshort{#1}}{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ #3{\glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}%
+ \ifglsxtrinsertinside
+ {#3{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrshortplformatgrp}
+%\begin{definition}
+%\cs{glsxtrshortplformatgrp}\marg{label}\marg{insert}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+%Add grouping around insert.
+% \begin{macrocode}
+\newcommand*{\glsxtrshortplformatgrp}[3]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\glsaccessshortpl{#1}{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ #3{\glsaccessshortpl{#1}}{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ #3{\glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \ifglsxtrinsertinside
+ {#3{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrshortformatgrp}
+%\begin{definition}
+%\cs{Glsxtrshortformatgrp}\marg{label}\marg{insert}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+%Add grouping around insert.
+% \begin{macrocode}
+\newcommand*{\Glsxtrshortformatgrp}[3]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\Glsaccessshort{#1}{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ #3{\Glsaccessshort{#1}}{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ #3{\Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}%
+ \ifglsxtrinsertinside
+ {#3{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrshortplformatgrp}
+%\begin{definition}
+%\cs{Glsxtrshortplformatgrp}\marg{label}\marg{insert}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+%Add grouping around insert.
+% \begin{macrocode}
+\newcommand*{\Glsxtrshortplformatgrp}[3]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\Glsaccessshortpl{#1}{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ #3{\Glsaccessshortpl{#1}}{\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+ {%
+ #3{\Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \ifglsxtrinsertinside
+ {#3{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrshortformatgrp}
+%\begin{definition}
+%\cs{GLSxtrshortformatgrp}\marg{label}\marg{insert}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+%Add grouping around insert.
+% \begin{macrocode}
+\newcommand*{\GLSxtrshortformatgrp}[3]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\GLSaccessshort{#1}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ #3{\GLSaccessshort{#1}}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+ }%
+ {%
+ #3{\GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}%
+ \ifglsxtrinsertinside
+ {\mfirstucMakeUppercase{#3{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrshortplformatgrp}
+%\begin{definition}
+%\cs{GLSxtrshortplformatgrp}\marg{label}\marg{insert}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+%Add grouping around insert.
+% \begin{macrocode}
+\newcommand*{\GLSxtrshortplformatgrp}[3]{%
+ \glsifattribute{#1}{markshortwords}{true}%
+ {%
+ \ifglsxtrinsertinside
+ #3{\GLSaccessshortpl{#1}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ #3{\GLSaccessshortpl{#1}}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+ }%
+ {%
+ #3{\GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}%
+ \ifglsxtrinsertinside
+ {\mfirstucMakeUppercase{#3{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrlongshortformat}
+%\begin{definition}
+%\cs{glsxtrlongshortformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlongshortformat}[4]{%
+ \glsxtrlongformat{#1}{#2}{#3}%
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsxtrshortformat{#1}{}{#4}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrlongshortplformat}
+%\begin{definition}
+%\cs{glsxtrlongshortplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlongshortplformat}[4]{%
+ \glsxtrlongplformat{#1}{#2}{#3}%
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsxtrshortplformat{#1}{}{#4}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrlongshortformat}
+%\begin{definition}
+%\cs{Glsxtrlongshortformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrlongshortformat}[4]{%
+ \Glsxtrlongformat{#1}{#2}{#3}%
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsxtrshortformat{#1}{}{#4}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrlongshortplformat}
+%\begin{definition}
+%\cs{Glsxtrlongshortplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrlongshortplformat}[4]{%
+ \Glsxtrlongplformat{#1}{#2}{#3}%
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsxtrshortplformat{#1}{}{#4}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrlongshortformat}
+%\begin{definition}
+%\cs{GLSxtrlongshortformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrlongshortformat}[4]{%
+ \GLSxtrlongformat{#1}{#2}{#3}%
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\GLSxtrshortformat{#1}{}{#4}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrlongshortplformat}
+%\begin{definition}
+%\cs{GLSxtrlongshortplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrlongshortplformat}[4]{%
+ \GLSxtrlongplformat{#1}{#2}{#3}%
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\GLSxtrshortplformat{#1}{}{#4}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrshortlongformat}
+%\begin{definition}
+%\cs{glsxtrshortlongformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrshortlongformat}[4]{%
+ \glsxtrshortformat{#1}{#2}{#4}%
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsxtrlongformat{#1}{}{#3}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrshortlongplformat}
+%\begin{definition}
+%\cs{glsxtrshortlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrshortlongplformat}[4]{%
+ \glsxtrshortplformat{#1}{#2}{#4}%
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsxtrlongplformat{#1}{}{#3}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrshortlongformat}
+%\begin{definition}
+%\cs{Glsxtrshortlongformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrshortlongformat}[4]{%
+ \Glsxtrshortformat{#1}{#2}{#4}%
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsxtrlongformat{#1}{}{#3}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrshortlongplformat}
+%\begin{definition}
+%\cs{Glsxtrshortlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrshortlongplformat}[4]{%
+ \Glsxtrshortplformat{#1}{#2}{#4}%
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsxtrlongplformat{#1}{}{#3}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrshortlongformat}
+%\begin{definition}
+%\cs{GLSxtrshortlongformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrshortlongformat}[4]{%
+ \GLSxtrshortformat{#1}{#2}{#4}%
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\GLSxtrlongformat{#1}{}{#3}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrshortlongplformat}
+%\begin{definition}
+%\cs{GLSxtrshortlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrshortlongplformat}[4]{%
+ \GLSxtrshortplformat{#1}{#2}{#4}%
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\GLSxtrlongplformat{#1}{}{#3}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfootnotelongformat}
+%\begin{definition}
+%\cs{glsxtrfootnotelongformat}\marg{label}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrfootnotelongformat}[2]{%
+ \glsxtrlongformat{#1}{}{#2}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfootnotelongplformat}
+%\begin{definition}
+%\cs{glsxtrfootnotelongplformat}\marg{label}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrfootnotelongplformat}[2]{%
+ \glsxtrlongplformat{#1}{}{#2}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostfootnotelongformat}
+%\begin{definition}
+%\cs{glsxtrpostfootnotelongformat}\marg{label}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostfootnotelongformat}{%
+ \glsxtrfootnotelongformat
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostusershortformat}
+%\begin{definition}
+%\cs{glsxtruserpostshortformat}\marg{label}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostusershortformat}[2]{%
+ \glsxtrifallcaps
+ {\GLSxtrusershortformat{#1}{#2}}%
+ {\glsxtrusershortformat{#1}{#2}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrusershortformat}
+%\begin{definition}
+%\cs{glsxtrusershortformat}\marg{label}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrusershortformat}[2]{%
+ \glsxtruserparen{\glsxtrshortformat{#1}{}{#2}}{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrusershortplformat}
+%\begin{definition}
+%\cs{glsxtrusershortplformat}\marg{label}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrusershortplformat}[2]{%
+ \glsxtruserparen{\glsxtrshortplformat{#1}{}{#2}}{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrusershortformat}
+%\begin{definition}
+%\cs{GLSxtrusershortformat}\marg{label}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrusershortformat}[2]{%
+ \GLSxtruserparen{\GLSxtrshortformat{#1}{}{#2}}{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrusershortplformat}
+%\begin{definition}
+%\cs{GLSxtrusershortplformat}\marg{label}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrusershortplformat}[2]{%
+ \GLSxtruserparen{\GLSxtrshortplformat{#1}{}{#2}}{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostuserlongformat}
+%\begin{definition}
+%\cs{glsxtruserpostlongformat}\marg{label}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostuserlongformat}[2]{%
+ \glsxtrifallcaps
+ {\GLSxtruserlongformat{#1}{#2}}%
+ {\glsxtruserlongformat{#1}{#2}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtruserlongformat}
+%\begin{definition}
+%\cs{glsxtruserlongformat}\marg{label}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtruserlongformat}[2]{%
+ \glsxtruserparen{\glsxtrlongformat{#1}{}{#2}}{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtruserlongformat}
+%\begin{definition}
+%\cs{GLSxtruserlongformat}\marg{label}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtruserlongformat}[2]{%
+ \GLSxtruserparen{\GLSxtrlongformat{#1}{}{#2}}{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtruserlongplformat}
+%\begin{definition}
+%\cs{glsxtruserlongplformat}\marg{label}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtruserlongplformat}[2]{%
+ \glsxtruserparen{\glsxtrlongplformat{#1}{}{#2}}{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtruserlongplformat}
+%\begin{definition}
+%\cs{GLSxtruserlongplformat}\marg{label}\marg{longfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtruserlongplformat}[2]{%
+ \GLSxtruserparen{\GLSxtrlongplformat{#1}{}{#2}}{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtruserlongshortformat}
+%\begin{definition}
+%\cs{glsxtruserlongshortformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtruserlongshortformat}[4]{%
+ \glsxtrlongformat{#1}{#2}{#3}%
+ \glsxtrusershortformat{#1}{#4}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtruserlongshortplformat}
+%\begin{definition}
+%\cs{glsxtruserlongshortplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtruserlongshortplformat}[4]{%
+ \glsxtrlongplformat{#1}{#2}{#3}%
+ \glsxtrusershortplformat{#1}{#4}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtruserlongshortformat}
+%\begin{definition}
+%\cs{Glsxtruserlongshortformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtruserlongshortformat}[4]{%
+ \Glsxtrlongformat{#1}{#2}{#3}%
+ \glsxtrusershortformat{#1}{#4}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtruserlongshortplformat}
+%\begin{definition}
+%\cs{Glsxtruserlongshortplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtruserlongshortplformat}[4]{%
+ \Glsxtrlongplformat{#1}{#2}{#3}%
+ \glsxtrusershortplformat{#1}{#4}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtruserlongshortformat}
+%\begin{definition}
+%\cs{GLSxtruserlongshortformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtruserlongshortformat}[4]{%
+ \GLSxtrlongformat{#1}{#2}{#3}%
+ \GLSxtrusershortformat{#1}{#4}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtruserlongshortplformat}
+%\begin{definition}
+%\cs{GLSxtruserlongshortplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtruserlongshortplformat}[4]{%
+ \GLSxtrlongplformat{#1}{#2}{#3}%
+ \GLSxtrusershortplformat{#1}{#4}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrusershortlongformat}
+%\begin{definition}
+%\cs{glsxtrusershortlongformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrusershortlongformat}[4]{%
+ \glsxtrshortformat{#1}{#2}{#3}%
+ \glsxtruserlongformat{#1}{#4}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrusershortlongplformat}
+%\begin{definition}
+%\cs{glsxtrusershortlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrusershortlongplformat}[4]{%
+ \glsxtrshortplformat{#1}{#2}{#3}%
+ \glsxtruserlongplformat{#1}{#4}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrusershortlongformat}
+%\begin{definition}
+%\cs{Glsxtrusershortlongformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrusershortlongformat}[4]{%
+ \Glsxtrshortformat{#1}{#2}{#3}%
+ \glsxtruserlongformat{#1}{#4}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrusershortlongplformat}
+%\begin{definition}
+%\cs{Glsxtrusershortlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrusershortlongplformat}[4]{%
+ \Glsxtrshortplformat{#1}{#2}{#3}%
+ \glsxtruserlongplformat{#1}{#4}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrusershortlongformat}
+%\begin{definition}
+%\cs{GLSxtrusershortlongformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrusershortlongformat}[4]{%
+ \GLSxtrshortformat{#1}{#2}{#3}%
+ \GLSxtruserlongformat{#1}{#4}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrusershortlongplformat}
+%\begin{definition}
+%\cs{GLSxtrusershortlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs}
+%\end{definition}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\GLSxtrusershortlongplformat}[4]{%
+ \GLSxtrshortplformat{#1}{#2}{#3}%
+ \GLSxtruserlongplformat{#1}{#4}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\subsection{Predefined Styles (Default Font)}
%\changes{1.17}{2017-08-09}{removed some inconsistencies in the abbreviation
%styles}
%\begin{abbrvstyle}{long-short}
@@ -18039,24 +30924,25 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongshortname},
sort={\the\glsshorttok},
- first={\protect\glsfirstlongfont{\the\glslongtok}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},%
- firstplural={\protect\glsfirstlongfont{\the\glslongpltok}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},%
% \end{macrocode}
%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
%\changes{1.42}{2020-02-03}{added missing text key}
% \begin{macrocode}
- plural={\protect\glsabbrvfont{\the\glsshortpltok}},%
- text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
description={\the\glslongtok}}%
% \end{macrocode}
%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -18074,30 +30960,34 @@ defined}{}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrrevert}[1]{\glsxtrdefaultrevert{##1}}%
% \end{macrocode}
% The first use full form and the inline full form are the same for
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
}
% \end{macrocode}
@@ -18121,8 +31011,9 @@ defined}{}%
%\changes{1.17}{2017-08-09}{new}
% \begin{macrocode}
\newcommand*{\glsxtrlongshortdescname}{%
- \protect\glslongfont{\the\glslongtok}
- \glsxtrparen{\protect\glsabbrvfont{\the\glsshorttok}}%
+ \glsxplongfont{\the\glslongtok}{\glscategorylabel}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \protect\glsxtrparen{\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}%
}
% \end{macrocode}
%\end{macro}
@@ -18143,27 +31034,28 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongshortdescname},
sort={\glsxtrlongshortdescsort},%
- first={\protect\glsfirstlongfont{\the\glslongtok}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},%
- firstplural={\protect\glsfirstlongfont{\the\glslongpltok}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},%
% \end{macrocode}
%The \gloskey{text} key should only have the short form.
%\changes{1.07}{2016-08-15}{added missing text key}
% \begin{macrocode}
- text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
% \end{macrocode}
%\changes{1.07}{2016-08-15}{fixed misspelling of \cs{glsabbrvfont}}
% \begin{macrocode}
- plural={\protect\glsabbrvfont{\the\glsshortpltok}}%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}%
}%
% \end{macrocode}
%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -18181,7 +31073,7 @@ defined}{}%
%\changes{1.25}{2017-11-24}{new}
% \begin{macrocode}
\newcommand*{\glsxtrshortlongname}{%
- \protect\glsabbrvfont{\the\glsshorttok}%
+ \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
}
% \end{macrocode}
%\end{macro}
@@ -18202,18 +31094,18 @@ defined}{}%
name={\glsxtrshortlongname},
sort={\the\glsshorttok},
description={\the\glslongtok},%
- first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongfont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},%
% \end{macrocode}
%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
%\changes{1.42}{2020-02-03}{added missing text key}
% \begin{macrocode}
- text={\protect\glsabbrvfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
% Unset the \catattr{regular} attribute if it has been set.
@@ -18241,26 +31133,28 @@ defined}{}%
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
}
% \end{macrocode}
@@ -18269,7 +31163,7 @@ defined}{}%
%\begin{macro}{\glsxtrshortlongdescsort}
%\changes{1.17}{2017-08-09}{new}
% \begin{macrocode}
-\newcommand*{\glsxtrshortlongdescsort}{\the\glsshorttok}
+\newcommand*{\glsxtrshortlongdescsort}{\expandonce\glsxtrorgshort}
% \end{macrocode}
%\end{macro}
%
@@ -18277,8 +31171,9 @@ defined}{}%
%\changes{1.17}{2017-08-09}{new}
% \begin{macrocode}
\newcommand*{\glsxtrshortlongdescname}{%
- \protect\glsabbrvfont{\the\glsshorttok}
- \glsxtrparen{\protect\glslongfont{\the\glslongtok}}%
+ \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \protect\glsxtrparen{\glsxplongfont{\the\glslongtok}{\glscategorylabel}}%
}
% \end{macrocode}
%\end{macro}
@@ -18299,27 +31194,28 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortlongdescname},
sort={\glsxtrshortlongdescsort},
- first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongfont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},%
% \end{macrocode}
%\changes{1.07}{2016-08-15}{added text key}
% \begin{macrocode}
- text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
% \end{macrocode}
%\changes{1.07}{2016-08-15}{fixed misspelling of \cs{glsabbrvfont} in plural
%key}
% \begin{macrocode}
- plural={\protect\glsabbrvfont{\the\glsshortpltok}}%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}%
}%
% \end{macrocode}
%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -18364,11 +31260,38 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrpostabbrvfootnote}
+%\changes{1.49}{??}{new}
+%Used by post-footnote style to include formatting.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrpostabbrvfootnote}[2]{%
+ \glsxtrabbrvfootnote{#1}%
+ {#2\glsxtrpostfootnotelongformat{#1}{\glsfirstlongfootnotefont}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\xpglsxtrpostabbrvfootnote}
+%\changes{1.49}{??}{new}
+%Perform all the appropriate expansions to ensure \cs{glslabel} and
+%\cs{glsxtrassignlinktextfmt} are expanded
+% as they may be lost by the time the footnote occurs.
+% \begin{macrocode}
+\newcommand*{\xpglsxtrpostabbrvfootnote}{%
+ \expandafter\expandafter\expandafter
+ \glsxtrpostabbrvfootnote
+ \expandafter\expandafter\expandafter
+ {\expandafter\glslabel\expandafter}\expandafter
+ {\glsxtrassignlinktextfmt}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrfootnotename}
%\changes{1.25}{2017-11-24}{new}
% \begin{macrocode}
\newcommand*{\glsxtrfootnotename}{%
- \protect\glsabbrvfont{\the\glsshorttok}%
+ \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
}
% \end{macrocode}
%\end{macro}
@@ -18381,7 +31304,10 @@ defined}{}%
% \end{macrocode}
% Set accessibility attributes if enabled. (Add
% \catattr{firstshortaccess} since long form is hidden in a
-% footnote on first use.)
+% footnote on first use.) The inner formatting isn't be applied to
+% the footnote text because the innertextformat key value may have
+% gone out of scope by that the time the footnote text is processed.
+% (Neither is the outer formatting applied.)
% \begin{macrocode}
\glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
% \end{macrocode}
@@ -18395,18 +31321,18 @@ defined}{}%
%\changes{1.07}{2016-08-15}{changed first forms to use
%\cs{glsfirstlongfootnotefont}}
% \begin{macrocode}
- first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
% \end{macrocode}
%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
%\changes{1.42}{2020-02-03}{added missing text key}
% \begin{macrocode}
- text={\protect\glsabbrvfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Switch off hyperlinks on first use to prevent nested hyperlinks,
% and unset the \catattr{regular} attribute if it has been set.
@@ -18436,52 +31362,62 @@ defined}{}%
% as a footnote.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvfont}%
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}%
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}%
}%
% \end{macrocode}
% The first use full form and the inline full form use the short
% (long) style.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}%
}%
}
% \end{macrocode}
@@ -18497,9 +31433,9 @@ defined}{}%
%\changes{1.42}{2020-02-03}{new}
% \begin{macrocode}
\newcommand*{\glsxtrfootnotedescname}{%
- \protect\glsabbrvfont{\the\glsshorttok}%
+ \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}%
+ \protect\glsxtrparen{\glsxplongfont{\the\glslongtok}{\glscategorylabel}}%
}
% \end{macrocode}
%\end{macro}
@@ -18527,14 +31463,14 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrfootnotedescname},
sort={\glsxtrfootnotedescsort},
- first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
- text={\protect\glsabbrvfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Switch off hyperlinks on first use to prevent nested hyperlinks,
% and unset the \catattr{regular} attribute if it has been set.
@@ -18585,14 +31521,14 @@ defined}{}%
name={\glsxtrfootnotename},
sort={\the\glsshorttok},
description={\the\glslongtok},%
- first={\protect\glsfirstabbrvfont{\the\glsshorttok}},%
- firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
% \end{macrocode}
%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
%\changes{1.42}{2020-02-03}{added missing text key}
% \begin{macrocode}
- text={\protect\glsabbrvfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Make this category insert a footnote after the link if this was
% the first use, and
@@ -18601,16 +31537,25 @@ defined}{}%
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\csdef{glsxtrpostlink\glscategorylabel}{%
- \glsxtrifwasfirstuse
+% \end{macrocode}
+%\changes{1.02}{2016-04-25}{added redef of \cs{glsxtrsetupfulldefs}}
+% The footnote needs to be suppressed in the inline form.
+%Previously this was done by redefining {glsxtrsetupfulldefs} but
+%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike}
+%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}}
+% \begin{macrocode}
+ \glsxtrifwasglslikeandfirstuse
{%
% \end{macrocode}
-% Needs the specific font command here as the style may have been
-% lost by the time the footnote occurs.
+% Ensure \cs{glslabel} and \cs{glsxtrassignlinktextfmt} are expanded
+% as they may be lost by the time the footnote occurs.
% \begin{macrocode}
- \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
- {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
- }%
- {}%
+ \glsxtrdopostpunc{\expandafter\expandafter\expandafter
+ \glsxtrpostabbrvfootnote
+ \expandafter\expandafter\expandafter
+ {\expandafter\glslabel\expandafter}\expandafter
+ {\glsxtrassignlinktextfmt}}%
+ }{}%
}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
@@ -18618,14 +31563,6 @@ defined}{}%
}%
{}%
}%
-% \end{macrocode}
-%\changes{1.02}{2016-04-25}{added redef of \cs{glsxtrsetupfulldefs}}
-% The footnote needs to be suppressed in the inline form, so
-% \cs{glsxtrfull} must set the first use switch off.
-% \begin{macrocode}
- \renewcommand*{\glsxtrsetupfulldefs}{%
- \let\glsxtrifwasfirstuse\@secondoftwo
- }%
}%
{%
% \end{macrocode}
@@ -18642,20 +31579,22 @@ defined}{}%
% deferred.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}%
}%
% \end{macrocode}
% The first use full form and the inline full form use the short
@@ -18664,24 +31603,28 @@ defined}{}%
%\cs{glsfirstlongfootnotefont}}
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}%
}%
}
% \end{macrocode}
@@ -18710,30 +31653,37 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrfootnotedescname},
sort={\glsxtrfootnotedescsort},
- first={\protect\glsfirstabbrvfont{\the\glsshorttok}},%
- firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
% \end{macrocode}
%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
%\changes{1.42}{2020-02-03}{added missing text key}
% \begin{macrocode}
- text={\protect\glsabbrvfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Make this category insert a footnote after the link if this was
% the first use, and
% unset the \catattr{regular} attribute if it has been set.
%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
+%\changes{1.02}{2016-04-25}{added redef of \cs{glsxtrsetupfulldefs}}
+%Previously this was done by redefining {glsxtrsetupfulldefs} but
+%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike}
+%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}}
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\csdef{glsxtrpostlink\glscategorylabel}{%
- \glsxtrifwasfirstuse
+ \glsxtrifwasglslikeandfirstuse
{%
% \end{macrocode}
-% Needs the specific font command here as the style may have been
-% lost by the time the footnote occurs.
+% Ensure \cs{glslabel} and \cs{glsxtrassignlinktextfmt} are expanded
+% as they may be lost by the time the footnote occurs.
% \begin{macrocode}
- \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
- {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ \glsxtrdopostpunc{\expandafter\expandafter\expandafter
+ \glsxtrpostabbrvfootnote
+ \expandafter\expandafter\expandafter
+ {\expandafter\glslabel\expandafter}\expandafter
+ {\glsxtrassignlinktextfmt}}%
}%
{}%
}%
@@ -18743,14 +31693,6 @@ defined}{}%
}%
{}%
}%
-% \end{macrocode}
-%\changes{1.02}{2016-04-25}{added redef of \cs{glsxtrsetupfulldefs}}
-% The footnote needs to be suppressed in the inline form, so
-% \cs{glsxtrfull} must set the first use switch off.
-% \begin{macrocode}
- \renewcommand*{\glsxtrsetupfulldefs}{%
- \let\glsxtrifwasfirstuse\@secondoftwo
- }%
}%
{%
\GlsXtrUseAbbrStyleFmts{postfootnote}%
@@ -18769,7 +31711,7 @@ defined}{}%
%\changes{1.25}{2017-11-24}{new}
% \begin{macrocode}
\newcommand*{\glsxtrshortnolongname}{%
- \protect\glsabbrvfont{\the\glsshorttok}%
+ \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
}
% \end{macrocode}
%\end{macro}
@@ -18794,10 +31736,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortnolongname},
sort={\the\glsshorttok},
- first={\protect\glsfirstabbrvfont{\the\glsshorttok}},
- firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},
- text={\protect\glsabbrvfont{\the\glsshorttok}},
- plural={\protect\glsabbrvfont{\the\glsshortpltok}},
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},
description={\the\glslongtok}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\glssetattribute{\the\glslabeltok}{regular}{true}}%
@@ -18818,48 +31760,50 @@ defined}{}%
%\changes{0.2}{2015-11-30}{switched inline full form to short (long)}
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \protect\glsfirstabbrvfont{\glsaccessshort{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \protect\glsfirstabbrvfont{\glsaccessshort{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfont{\Glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfont{\Glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
% \end{macrocode}
% The first use full form only displays the short form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}%
}%
}
% \end{macrocode}
@@ -18907,9 +31851,9 @@ defined}{}%
%manual}
% \begin{macrocode}
\newcommand*{\glsxtrshortdescname}{%
- \protect\glsabbrvfont{\the\glsshorttok}%
+ \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}%
+ \protect\glsxtrparen{\glsxplongfont{\the\glslongtok}{\glscategorylabel}}%
}
% \end{macrocode}
%\end{macro}
@@ -18935,10 +31879,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortdescname},
sort={\the\glsshorttok},
- first={\protect\glsfirstabbrvfont{\the\glsshorttok}},
- firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},
- text={\protect\glsabbrvfont{\the\glsshorttok}},
- plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\glssetattribute{\the\glslabeltok}{regular}{true}}%
}%
@@ -18957,44 +31901,50 @@ defined}{}%
% long form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
% \end{macrocode}
% The first use full form only displays the short form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}%
}%
}
% \end{macrocode}
@@ -19046,28 +31996,28 @@ defined}{}%
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \protect\glsfirstlongfont{\glsaccesslong{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstlongfont{\glsaccesslongpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \protect\glsfirstlongfont{\glsaccesslong{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvfont{\Glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstlongfont{\glsaccesslongpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvfont{\Glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
}
% \end{macrocode}
@@ -19101,7 +32051,7 @@ defined}{}%
%\changes{1.25}{2017-11-24}{new}
% \begin{macrocode}
\newcommand*{\glsxtrlongnoshortdescname}{%
- \protect\glslongfont{\the\glslongtok}%
+ \glsxplongfont{\the\glslongtok}{\glscategorylabel}%
}
% \end{macrocode}
%\end{macro}
@@ -19118,10 +32068,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongnoshortdescname},
sort={\the\glslongtok},
- first={\protect\glsfirstlongfont{\the\glslongtok}},
- firstplural={\protect\glsfirstlongfont{\the\glslongpltok}},
- text={\glslongfont{\the\glslongtok}},
- plural={\glslongfont{\the\glslongpltok}}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},
+ text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}},
+ plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}}%
}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\glssetattribute{\the\glslabeltok}{regular}{true}}%
@@ -19141,64 +32091,72 @@ defined}{}%
% is set).
% \begin{macrocode}
\renewcommand*{\glsxtrsubsequentfmt}[2]{%
- \glslongfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glslongfont}%
}%
\renewcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glslongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glslongfont}%
}%
\renewcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glslongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glslongfont}%
}%
\renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glslongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glslongfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glslongfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glslongfont}%
}%
% \end{macrocode}
% The inline full form displays the long format followed by the
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongfont}{\glsfirstabbrvfont}%
}%
% \end{macrocode}
% The first use full form only displays the long form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlongfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlongfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlongfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlongfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlongfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlongfont}%
}%
}
% \end{macrocode}
@@ -19239,7 +32197,7 @@ defined}{}%
%\changes{1.25}{2017-11-24}{new}
% \begin{macrocode}
\newcommand*{\glsxtrlongnoshortname}{%
- \protect\glsabbrvfont{\the\glsshorttok}%
+ \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
}
% \end{macrocode}
%\end{macro}
@@ -19263,10 +32221,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongnoshortname},
sort={\the\glsshorttok},
- first={\protect\glsfirstlongfont{\the\glslongtok}},
- firstplural={\protect\glsfirstlongfont{\the\glslongpltok}},
- text={\glslongfont{\the\glslongtok}},
- plural={\glslongfont{\the\glslongpltok}},%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},
+ text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}},
+ plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}},%
description={\the\glslongtok}%
}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
@@ -19344,13 +32302,34 @@ defined}{}%
%\begin{macro}{\glsxtrscsuffix}
%\changes{0.5}{2015-12-07}{new}
%\changes{1.42}{2020-02-03}{added \cs{protect}}
-%\cs{protect} needs to come inside \cs{\glsxtrscsuffix} to avoid
+%\cs{protect} needs to come inside \cs{glsxtrscsuffix} to avoid
%interfering with all caps.
% \begin{macrocode}
\newcommand*{\glsxtrscsuffix}{\protect\glstextup{\glsxtrabbrvpluralsuffix}}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrscrevert}
+%\changes{1.49}{??}{new}
+%Cancel smallcaps.
+% \begin{macrocode}
+\newcommand*{\glsxtrscrevert}[1]{\glstextup{#1}}%
+% \end{macrocode}
+%\end{macro}
+%
+%v1.49: the following now use commands like
+%\cs{glsfirstinnerfmtabbrvfont} instead of
+%\cs{glsfirstabbrvscfont} etc. This makes it easier to apply the inner
+%formatting. The scoping added in v1.48 with \cs{glslinkwrcontent}
+%should prevent formatting leakage in the event of nested commands.
+%The only problem will be if commands like \cs{glsentryfirst} are
+%used, but those aren't designed for consistent formatting. It will
+%also make it easier to locally redefine \cs{glsfirstinnerfmtabbrvfont}
+%to strip the formatting if those commands are used (rather than
+%having to define all the possible abbreviation style formatting
+%commands). Since these new commands are robust they don't need
+%protecting.
+%
%\begin{abbrvstyle}{long-short-sc}
%\changes{1.42}{2020-02-03}{added missing text key}
% \begin{macrocode}
@@ -19366,16 +32345,17 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongshortname},
sort={\the\glsshorttok},
- first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshorttok}}},%
- firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},%
- text={\protect\glsabbrvscfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvscfont{\the\glsshortpltok}},%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
description={\the\glslongtok}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -19391,6 +32371,7 @@ defined}{}%
\renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##1}}%
% \end{macrocode}
% Use the default long fonts.
% \begin{macrocode}
@@ -19401,25 +32382,28 @@ defined}{}%
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
}
% \end{macrocode}
@@ -19439,20 +32423,21 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongshortdescname},
sort={\glsxtrlongshortdescsort},%
- first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshorttok}}},%
- firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},%
- text={\protect\glsabbrvscfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvscfont{\the\glsshortpltok}}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}%
}%
% \end{macrocode}
%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -19486,18 +32471,19 @@ defined}{}%
name={\glsxtrshortlongname},
sort={\the\glsshorttok},
description={\the\glslongtok},%
- first={\protect\glsfirstabbrvscfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
- text={\protect\glsabbrvscfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -19515,31 +32501,34 @@ defined}{}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##1}}%
% \end{macrocode}
% The first use full form and the inline full form are the same for
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
}
% \end{macrocode}
@@ -19560,19 +32549,20 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortlongdescname},
sort={\glsxtrshortlongdescsort},
- first={\protect\glsfirstabbrvscfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
- text={\protect\glsabbrvscfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvscfont{\the\glsshortpltok}}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}%
}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -19603,10 +32593,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortnolongname},
sort={\the\glsshorttok},
- first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},
- firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},
- text={\protect\glsabbrvscfont{\the\glsshorttok}},
- plural={\protect\glsabbrvscfont{\the\glsshortpltok}},
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},
description={\the\glslongtok}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\glssetattribute{\the\glslabeltok}{regular}{true}}%
@@ -19621,56 +32611,59 @@ defined}{}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##1}}%
% \end{macrocode}
% The inline full form displays the short form followed by the
% long form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \protect\glsfirstabbrvscfont{\glsaccessshort{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
% \end{macrocode}
%\changes{1.21}{2017-11-03}{corrected first letter uppercasing}
% \begin{macrocode}
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \protect\glsfirstabbrvscfont{\Glsaccessshort{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstabbrvscfont{\Glsaccessshortpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
% \end{macrocode}
% The first use full form only displays the short form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}%
}%
}
% \end{macrocode}
@@ -19699,10 +32692,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortdescname},
sort={\the\glsshorttok},
- first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},
- firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},
- text={\protect\glsabbrvscfont{\the\glsshorttok}},
- plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\glssetattribute{\the\glslabeltok}{regular}{true}}%
}%
@@ -19716,49 +32709,56 @@ defined}{}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##1}}%
% \end{macrocode}
% The inline full form displays the short format followed by the
% long form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
% \end{macrocode}
% The first use full form only displays the short form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}%
}%
}
% \end{macrocode}
@@ -19784,28 +32784,28 @@ defined}{}%
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
}
% \end{macrocode}
@@ -19822,10 +32822,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongnoshortname},
sort={\the\glsshorttok},
- first={\protect\glsfirstlongdefaultfont{\the\glslongtok}},
- firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}},
- text={\protect\glslongdefaultfont{\the\glslongtok}},
- plural={\protect\glslongdefaultfont{\the\glslongpltok}},%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},
+ text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}},
+ plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}},%
description={\the\glslongtok}%
}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
@@ -19841,69 +32841,78 @@ defined}{}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##1}}%
% \end{macrocode}
% The format for subsequent use (not used when the regular attribute
% is set).
% \begin{macrocode}
\renewcommand*{\glsxtrsubsequentfmt}[2]{%
- \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glslongdefaultfont}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
}%
% \end{macrocode}
% The inline full form displays the long format followed by the
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
% \end{macrocode}
% The first use full form only displays the long form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
}
% \end{macrocode}
@@ -19919,7 +32928,7 @@ defined}{}%
%\changes{1.04}{2016-05-02}{renamed from \qt{long-desc-sc}}
% The smallcaps font will only be used if
% the short form is explicitly invoked through commands like
-% \cs{glsshort}.
+% \cs{glsxtrshort}.
% \begin{macrocode}
\newabbreviationstyle{long-noshort-sc-desc}%
{%
@@ -19935,69 +32944,78 @@ defined}{}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##1}}%
% \end{macrocode}
% The format for subsequent use (not used when the regular attribute
% is set).
% \begin{macrocode}
\renewcommand*{\glsxtrsubsequentfmt}[2]{%
- \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glslongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
}%
% \end{macrocode}
% The inline full form displays the long format followed by the
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}%
}%
% \end{macrocode}
% The first use full form only displays the long form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
}
% \end{macrocode}
@@ -20027,14 +33045,14 @@ defined}{}%
name={\glsxtrfootnotename},
sort={\the\glsshorttok},
description={\the\glslongtok},%
- first={\protect\glsfirstabbrvscfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
- text={\protect\glsabbrvscfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Switch off hyperlinks on first use to prevent nested hyperlinks,
% and unset the \catattr{regular} attribute if it has been set.
@@ -20059,57 +33077,68 @@ defined}{}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##1}}%
% \end{macrocode}
% The full format displays the short form followed by the long form
% as a footnote.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}%
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}%
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}%
}%
% \end{macrocode}
% The first use full form and the inline full form use the short
% (long) style.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}%
}%
}
% \end{macrocode}
@@ -20137,14 +33166,14 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrfootnotedescname},
sort={\glsxtrfootnotedescsort},
- first={\protect\glsfirstabbrvscfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
- text={\protect\glsabbrvscfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Switch off hyperlinks on first use to prevent nested hyperlinks,
% and unset the \catattr{regular} attribute if it has been set.
@@ -20183,25 +33212,24 @@ defined}{}%
name={\glsxtrfootnotename},
sort={\the\glsshorttok},
description={\the\glslongtok},%
- first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},%
- firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},%
- text={\protect\glsabbrvscfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Make this category insert a footnote after the link if this was
% the first use, and
% unset the \catattr{regular} attribute if it has been set.
+% The footnote needs to be suppressed in the inline form.
+%Previously this was done by redefining {glsxtrsetupfulldefs} but
+%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike}
+%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}}
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\csdef{glsxtrpostlink\glscategorylabel}{%
- \glsxtrifwasfirstuse
+ \glsxtrifwasglslikeandfirstuse
{%
-% \end{macrocode}
-% Needs the specific font command here as the style may have been
-% lost by the time the footnote occurs.
-% \begin{macrocode}
- \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
- {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ \glsxtrdopostpunc{\xpglsxtrpostabbrvfootnote}%
}%
{}%
}%
@@ -20211,13 +33239,6 @@ defined}{}%
}%
{}%
}%
-% \end{macrocode}
-% The footnote needs to be suppressed in the inline form, so
-% \cs{glsxtrfull} must set the first use switch off.
-% \begin{macrocode}
- \renewcommand*{\glsxtrsetupfulldefs}{%
- \let\glsxtrifwasfirstuse\@secondoftwo
- }%
}%
{%
% \end{macrocode}
@@ -20229,49 +33250,56 @@ defined}{}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##1}}%
% \end{macrocode}
% The full format displays the short form. The long form is
% deferred.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}%
}%
% \end{macrocode}
% The first use full form and the inline full form use the short
% (long) style.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}%
}%
}
% \end{macrocode}
@@ -20299,25 +33327,24 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrfootnotedescname},
sort={\glsxtrfootnotedescsort},
- first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},%
- firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},%
- text={\protect\glsabbrvscfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Make this category insert a footnote after the link if this was
% the first use, and
% unset the \catattr{regular} attribute if it has been set.
+% The footnote needs to be suppressed in the inline form.
+%Previously this was done by redefining {glsxtrsetupfulldefs} but
+%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike}
+%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}}
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\csdef{glsxtrpostlink\glscategorylabel}{%
- \glsxtrifwasfirstuse
+ \glsxtrifwasglslikeandfirstuse
{%
-% \end{macrocode}
-% Needs the specific font command here as the style may have been
-% lost by the time the footnote occurs.
-% \begin{macrocode}
- \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
- {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ \glsxtrdopostpunc{\xpglsxtrpostabbrvfootnote}%
}%
{}%
}%
@@ -20327,13 +33354,6 @@ defined}{}%
}%
{}%
}%
-% \end{macrocode}
-% The footnote needs to be suppressed in the inline form, so
-% \cs{glsxtrfull} must set the first use switch off.
-% \begin{macrocode}
- \renewcommand*{\glsxtrsetupfulldefs}{%
- \let\glsxtrifwasfirstuse\@secondoftwo
- }%
}%
{%
\GlsXtrUseAbbrStyleFmts{short-sc-postfootnote}%
@@ -20379,6 +33399,12 @@ defined}{}%
\newcommand*{\glsxtrsmsuffix}{\glsxtrabbrvpluralsuffix}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\glsxtrsmrevert}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrsmrevert}[1]{\textlarger{#1}}
+% \end{macrocode}
+%\end{macro}
%
%\begin{abbrvstyle}{long-short-sm}
%\changes{0.5}{2015-12-07}{new}
@@ -20396,16 +33422,17 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongshortname},
sort={\the\glsshorttok},
- first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshorttok}}},%
- firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},%
- text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvsmfont{\the\glsshortpltok}},%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
description={\the\glslongtok}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -20420,6 +33447,7 @@ defined}{}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
\renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}%
% \end{macrocode}
% Use the default long fonts.
% \begin{macrocode}
@@ -20430,25 +33458,28 @@ defined}{}%
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
}
% \end{macrocode}
@@ -20469,19 +33500,20 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongshortdescname},
sort={\glsxtrlongshortdescsort},%
- first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshorttok}}},%
- firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},%
- text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}%
}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -20516,18 +33548,19 @@ defined}{}%
name={\glsxtrshortlongname},
sort={\the\glsshorttok},
description={\the\glslongtok},%
- first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
- text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -20542,6 +33575,7 @@ defined}{}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
\renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
% \end{macrocode}
@@ -20549,26 +33583,28 @@ defined}{}%
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
}
% \end{macrocode}
@@ -20590,19 +33626,20 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortlongdescname},
sort={\glsxtrshortlongdescsort},
- first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
- text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}%
}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -20634,10 +33671,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortnolongname},
sort={\the\glsshorttok},
- first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},
- firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},
- text={\protect\glsabbrvsmfont{\the\glsshorttok}},
- plural={\protect\glsabbrvsmfont{\the\glsshortpltok}},
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},
description={\the\glslongtok}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\glssetattribute{\the\glslabeltok}{regular}{true}}%
@@ -20649,6 +33686,7 @@ defined}{}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
\renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
% \end{macrocode}
@@ -20656,51 +33694,53 @@ defined}{}%
% long form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \protect\glsfirstabbrvsmfont{\glsaccessshort{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
% \end{macrocode}
%\changes{1.21}{2017-11-03}{corrected first letter uppercasing}
% \begin{macrocode}
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \protect\glsfirstabbrvsmfont{\Glsaccessshort{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstabbrvsmfont{\Glsaccessshortpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
% \end{macrocode}
% The first use full form only displays the short form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}%
}%
}
% \end{macrocode}
@@ -20730,10 +33770,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortdescname},
sort={\the\glsshorttok},
- first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},
- firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},
- text={\protect\glsabbrvsmfont{\the\glsshorttok}},
- plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\glssetattribute{\the\glslabeltok}{regular}{true}}%
}%
@@ -20744,6 +33784,7 @@ defined}{}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
\renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
% \end{macrocode}
@@ -20751,44 +33792,50 @@ defined}{}%
% long form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
% \end{macrocode}
% The first use full form only displays the short form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}%
}%
}
% \end{macrocode}
@@ -20814,28 +33861,28 @@ defined}{}%
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
}
% \end{macrocode}
@@ -20846,7 +33893,7 @@ defined}{}%
%\changes{1.04}{2016-05-02}{renamed from \qt{long-sm}}
% The smallcaps font will only be used if
% the short form is explicitly invoked through commands like
-% \cs{glsshort}.
+% \cs{glsxtrshort}.
% \begin{macrocode}
\newabbreviationstyle{long-noshort-sm}%
{%
@@ -20860,10 +33907,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongnoshortname},
sort={\the\glsshorttok},
- first={\protect\glsfirstlongdefaultfont{\the\glslongtok}},
- firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}},
- text={\protect\glslongdefaultfont{\the\glslongtok}},
- plural={\protect\glslongdefaultfont{\the\glslongpltok}},%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},
+ text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}},
+ plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}},%
description={\the\glslongtok}%
}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
@@ -20876,6 +33923,7 @@ defined}{}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
\renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
% \end{macrocode}
@@ -20883,64 +33931,72 @@ defined}{}%
% is set).
% \begin{macrocode}
\renewcommand*{\glsxtrsubsequentfmt}[2]{%
- \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glslongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
}%
% \end{macrocode}
% The inline full form displays the long format followed by the
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
% \end{macrocode}
% The first use full form only displays the long form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
}
% \end{macrocode}
@@ -20957,7 +34013,7 @@ defined}{}%
%\changes{1.04}{2016-05-02}{renamed from \cs{long-desc-sm}}
% The smaller font will only be used if
% the short form is explicitly invoked through commands like
-% \cs{glsshort}.
+% \cs{glsxtrshort}.
% \begin{macrocode}
\newabbreviationstyle{long-noshort-sm-desc}%
{%
@@ -20970,6 +34026,7 @@ defined}{}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
\renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
% \end{macrocode}
@@ -20977,64 +34034,72 @@ defined}{}%
% is set).
% \begin{macrocode}
\renewcommand*{\glsxtrsubsequentfmt}[2]{%
- \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glslongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
}%
% \end{macrocode}
% The inline full form displays the long format followed by the
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}%
}%
% \end{macrocode}
% The first use full form only displays the long form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
}
% \end{macrocode}
@@ -21064,14 +34129,14 @@ defined}{}%
name={\glsxtrfootnotename},
sort={\the\glsshorttok},
description={\the\glslongtok},%
- first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
- text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Switch off hyperlinks on first use to prevent nested hyperlinks,
% and unset the \catattr{regular} attribute if it has been set.
@@ -21093,6 +34158,7 @@ defined}{}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
\renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
% \end{macrocode}
@@ -21100,52 +34166,62 @@ defined}{}%
% as a footnote.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}%
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}%
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}%
}%
% \end{macrocode}
% The first use full form and the inline full form use the short
% (long) style.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}%
}%
}
% \end{macrocode}
@@ -21173,14 +34249,14 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrfootnotedescname},
sort={\glsxtrfootnotedescsort},
- first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
- text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Switch off hyperlinks on first use to prevent nested hyperlinks,
% and unset the \catattr{regular} attribute if it has been set.
@@ -21219,25 +34295,24 @@ defined}{}%
name={\glsxtrfootnotename},
sort={\the\glsshorttok},
description={\the\glslongtok},%
- first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},%
- firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},%
- text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Make this category insert a footnote after the link if this was
% the first use, and
% unset the \catattr{regular} attribute if it has been set.
+% The footnote needs to be suppressed in the inline form.
+%Previously this was done by redefining {glsxtrsetupfulldefs} but
+%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike}
+%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}}
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\csdef{glsxtrpostlink\glscategorylabel}{%
- \glsxtrifwasfirstuse
+ \glsxtrifwasglslikeandfirstuse
{%
-% \end{macrocode}
-% Needs the specific font command here as the style may have been
-% lost by the time the footnote occurs.
-% \begin{macrocode}
- \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
- {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ \glsxtrdopostpunc{\xpglsxtrpostabbrvfootnote}%
}%
{}%
}%
@@ -21247,13 +34322,6 @@ defined}{}%
}%
{}%
}%
-% \end{macrocode}
-% The footnote needs to be suppressed in the inline form, so
-% \cs{glsxtrfull} must set the first use switch off.
-% \begin{macrocode}
- \renewcommand*{\glsxtrsetupfulldefs}{%
- \let\glsxtrifwasfirstuse\@secondoftwo
- }%
}%
{%
% \end{macrocode}
@@ -21262,6 +34330,7 @@ defined}{}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
\renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
% \end{macrocode}
@@ -21269,44 +34338,50 @@ defined}{}%
% deferred.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}%
}%
% \end{macrocode}
% The first use full form and the inline full form use the short
% (long) style.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}%
}%
}
% \end{macrocode}
@@ -21334,25 +34409,28 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrfootnotedescname},
sort={\glsxtrfootnotedescsort},
- first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},%
- firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},%
- text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Make this category insert a footnote after the link if this was
% the first use, and
% unset the \catattr{regular} attribute if it has been set.
+% The footnote needs to be suppressed in the inline form.
+%Previously this was done by redefining {glsxtrsetupfulldefs} but
+%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike}
+%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}}
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\csdef{glsxtrpostlink\glscategorylabel}{%
- \glsxtrifwasfirstuse
+ \glsxtrifwasglslikeandfirstuse
{%
% \end{macrocode}
-% Needs the specific font command here as the style may have been
+% Ensure \cs{glslabel} is expanded as it may be
% lost by the time the footnote occurs.
% \begin{macrocode}
- \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
- {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ \glsxtrdopostpunc{\xpglsxtrpostabbrvfootnote}%
}%
{}%
}%
@@ -21362,13 +34440,6 @@ defined}{}%
}%
{}%
}%
-% \end{macrocode}
-% The footnote needs to be suppressed in the inline form, so
-% \cs{glsxtrfull} must set the first use switch off.
-% \begin{macrocode}
- \renewcommand*{\glsxtrsetupfulldefs}{%
- \let\glsxtrifwasfirstuse\@secondoftwo
- }%
}%
{%
\GlsXtrUseAbbrStyleFmts{short-sm-postfootnote}%
@@ -21377,7 +34448,7 @@ defined}{}%
%\end{abbrvstyle}
%
%\subsection{Predefined Styles (Emphasized)}
-% These styles use \ics{emph} for the short form.
+% These styles use \cs{emph} for the short form.
%\begin{macro}{\glsabbrvemfont}
%\changes{1.04}{2016-05-02}{new}
% \begin{macrocode}
@@ -21413,6 +34484,13 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtremrevert}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtremrevert}[1]{\textup{#1}}%
+% \end{macrocode}
+%\end{macro}
+%
%\begin{abbrvstyle}{long-short-em}
%\changes{0.5}{2015-12-07}{new}
% The long form is just set in the default long font.
@@ -21430,16 +34508,17 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongshortname},
sort={\the\glsshorttok},
- first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},%
- firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},%
- text={\protect\glsabbrvemfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}},%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
description={\the\glslongtok}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -21454,6 +34533,7 @@ defined}{}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}%
\renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}%
% \end{macrocode}
% Use the default long fonts.
% \begin{macrocode}
@@ -21464,25 +34544,28 @@ defined}{}%
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
}
% \end{macrocode}
@@ -21503,19 +34586,20 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongshortdescname},
sort={\glsxtrlongshortdescsort},%
- first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},%
- firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},%
- text={\protect\glsabbrvemfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}%
}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -21550,22 +34634,24 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongshortname},
sort={\the\glsshorttok},
- first={\protect\glsfirstlongemfont{\the\glslongtok}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},%
- firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},%
% \end{macrocode}
%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
% \begin{macrocode}
- text={\protect\glsabbrvemfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
description={\protect\glslongemfont{\the\glslongtok}}}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -21578,6 +34664,7 @@ defined}{}%
%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}}
% \begin{macrocode}
\renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}%
\renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}%
@@ -21587,25 +34674,28 @@ defined}{}%
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
}
% \end{macrocode}
@@ -21626,19 +34716,20 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongshortdescname},
sort={\glsxtrlongshortdescsort},%
- first={\protect\glsfirstlongemfont{\the\glslongtok}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},%
- firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},%
- text={\protect\glsabbrvemfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}}%
+ \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}%
}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -21670,18 +34761,19 @@ defined}{}%
name={\glsxtrshortlongname},
sort={\the\glsshorttok},
description={\the\glslongtok},%
- first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
- text={\protect\glsabbrvemfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -21696,6 +34788,7 @@ defined}{}%
%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}}
% \begin{macrocode}
\renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
\renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
@@ -21705,26 +34798,28 @@ defined}{}%
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
}
% \end{macrocode}
@@ -21746,19 +34841,20 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortlongdescname},
sort={\glsxtrshortlongdescsort},
- first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
- text={\protect\glsabbrvemfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}%
}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -21791,21 +34887,23 @@ defined}{}%
name={\glsxtrshortlongname},
sort={\the\glsshorttok},
description={\protect\glslongemfont{\the\glslongtok}},%
- first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},%
% \end{macrocode}
%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
% \begin{macrocode}
- text={\protect\glsabbrvemfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -21818,6 +34916,7 @@ defined}{}%
%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}}
% \begin{macrocode}
\renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}%
\renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}%
@@ -21827,26 +34926,28 @@ defined}{}%
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongemfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongemfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongemfont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongemfont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
}
% \end{macrocode}
@@ -21867,19 +34968,20 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortlongdescname},%
sort={\glsxtrshortlongdescsort},%
- first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},%
- text={\protect\glsabbrvemfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}}%
+ \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}%
}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -21908,10 +35010,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortnolongname},
sort={\the\glsshorttok},
- first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},
- firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},
- text={\protect\glsabbrvemfont{\the\glsshorttok}},
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}},
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},
description={\the\glslongtok}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\glssetattribute{\the\glslabeltok}{regular}{true}}%
@@ -21921,6 +35023,7 @@ defined}{}%
%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}}
% \begin{macrocode}
\renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
@@ -21930,51 +35033,50 @@ defined}{}%
% long form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \protect\glsfirstabbrvemfont{\glsaccessshort{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
-% \end{macrocode}
-%\changes{1.21}{2017-11-03}{new}
-% \begin{macrocode}
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \protect\glsfirstabbrvemfont{\Glsaccessshort{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstabbrvemfont{\Glsaccessshortpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
% \end{macrocode}
% The first use full form only displays the short form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}%
}%
}
% \end{macrocode}
@@ -22007,10 +35109,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortdescname},
sort={\the\glsshorttok},
- first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},
- firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},
- text={\protect\glsabbrvemfont{\the\glsshorttok}},
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\glssetattribute{\the\glslabeltok}{regular}{true}}%
}%
@@ -22019,6 +35121,7 @@ defined}{}%
%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}}
% \begin{macrocode}
\renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
@@ -22028,44 +35131,50 @@ defined}{}%
% long form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
% \end{macrocode}
% The first use full form only displays the short form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}%
}%
}
% \end{macrocode}
@@ -22091,28 +35200,28 @@ defined}{}%
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}%
- \ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
}
% \end{macrocode}
@@ -22122,7 +35231,7 @@ defined}{}%
%\changes{0.5}{2015-12-07}{new}
%\changes{1.04}{2016-05-02}{renamed from \qt{long-em}}
% The short form is explicitly invoked through commands like
-% \cs{glsshort}.
+% \cs{glsxtrshort}.
% \begin{macrocode}
\newabbreviationstyle{long-noshort-em}%
{%
@@ -22136,10 +35245,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongnoshortname},
sort={\the\glsshorttok},
- first={\protect\glsfirstlongdefaultfont{\the\glslongtok}},
- firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}},
- text={\protect\glslongdefaultfont{\the\glslongtok}},
- plural={\protect\glslongdefaultfont{\the\glslongpltok}},%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},
+ text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}},
+ plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}},%
description={\the\glslongtok}%
}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
@@ -22150,6 +35259,7 @@ defined}{}%
%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}}
% \begin{macrocode}
\renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
@@ -22159,64 +35269,72 @@ defined}{}%
% is set).
% \begin{macrocode}
\renewcommand*{\glsxtrsubsequentfmt}[2]{%
- \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glslongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
}%
% \end{macrocode}
% The inline full form displays the long format followed by the
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
% \end{macrocode}
% The first use full form only displays the long form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
}
% \end{macrocode}
@@ -22231,7 +35349,7 @@ defined}{}%
%\begin{abbrvstyle}{long-em-noshort-em}
%\changes{1.04}{2016-05-02}{new}
% The short form is explicitly invoked through commands like
-% \cs{glsshort}.
+% \cs{glsxtrshort}.
% \begin{macrocode}
\newabbreviationstyle{long-em-noshort-em}%
{%
@@ -22245,13 +35363,14 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongnoshortname},
sort={\the\glsshorttok},
- first={\protect\glsfirstlongemfont{\the\glslongtok}},
- firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}},
- text={\protect\glslongemfont{\the\glslongtok}},
- plural={\protect\glslongemfont{\the\glslongpltok}},%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},
+ text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}},
+ plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}},%
description={\protect\glslongemfont{\the\glslongtok}}%
}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
\glssetattribute{\the\glslabeltok}{regular}{true}}%
}%
{%
@@ -22259,6 +35378,7 @@ defined}{}%
%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}}
% \begin{macrocode}
\renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}%
@@ -22268,64 +35388,72 @@ defined}{}%
% is set).
% \begin{macrocode}
\renewcommand*{\glsxtrsubsequentfmt}[2]{%
- \glslongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glslongemfont}%
}%
\renewcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glslongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glslongemfont}%
}%
\renewcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glslongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glslongemfont}%
}%
\renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glslongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glslongemfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glslongemfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glslongemfont}%
}%
% \end{macrocode}
% The inline full form displays the long format followed by the
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
% \end{macrocode}
% The first use full form only displays the long form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlongemfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlongemfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlongemfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlongemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlongemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlongemfont}%
}%
}
% \end{macrocode}
@@ -22367,7 +35495,7 @@ defined}{}%
%\changes{0.5}{2015-12-07}{new}
% The emphasized font will only be used if
% the short form is explicitly invoked through commands like
-% \cs{glsshort}.
+% \cs{glsxtrshort}.
% \begin{macrocode}
\newabbreviationstyle{long-noshort-em-desc}%
{%
@@ -22378,6 +35506,7 @@ defined}{}%
%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}}
% \begin{macrocode}
\renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
@@ -22387,64 +35516,72 @@ defined}{}%
% is set).
% \begin{macrocode}
\renewcommand*{\glsxtrsubsequentfmt}[2]{%
- \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glslongdefaultfont}%
}%
\renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glslongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glslongdefaultfont}%
}%
% \end{macrocode}
% The inline full form displays the long format followed by the
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}%
}%
% \end{macrocode}
% The first use full form only displays the long form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}%
}%
}
% \end{macrocode}
@@ -22467,10 +35604,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongnoshortdescname},
sort={\the\glslongtok},
- first={\protect\glsfirstlongemfont{\the\glslongtok}},
- firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}},
- text={\glslongemfont{\the\glslongtok}},
- plural={\glslongemfont{\the\glslongpltok}}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},
+ text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}},
+ plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}}%
}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\glssetattribute{\the\glslabeltok}{regular}{true}}%
@@ -22480,6 +35617,7 @@ defined}{}%
%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}}
% \begin{macrocode}
\renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}%
@@ -22489,64 +35627,72 @@ defined}{}%
% is set).
% \begin{macrocode}
\renewcommand*{\glsxtrsubsequentfmt}[2]{%
- \glslongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glslongemfont}%
}%
\renewcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glslongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glslongemfont}%
}%
\renewcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glslongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glslongemfont}%
}%
\renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glslongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
- \ifglsxtrinsertinside \else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glslongemfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glslongemfont}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glslongemfont}%
}%
% \end{macrocode}
% The inline full form displays the long format followed by the
% short form in parentheses.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongemfont}{\glsfirstabbrvemfont}%
}%
% \end{macrocode}
% The first use full form only displays the long form, but it
% typically won't be used as the \catattr{regular} attribute is set by this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlongemfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlongemfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlongemfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlongemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlongemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlongemfont}%
}%
}
% \end{macrocode}
@@ -22594,14 +35740,14 @@ defined}{}%
name={\glsxtrfootnotename},
sort={\the\glsshorttok},
description={\the\glslongtok},%
- first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
- text={\protect\glsabbrvemfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Switch off hyperlinks on first use to prevent nested hyperlinks,
% and unset the \catattr{regular} attribute if it has been set.
@@ -22621,6 +35767,7 @@ defined}{}%
%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}}
% \begin{macrocode}
\renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
@@ -22630,52 +35777,61 @@ defined}{}%
% as a footnote.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}%
\protect\glsxtrabbrvfootnote{##1}%
- {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}%
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}%
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}%
}%
% \end{macrocode}
-% The first use full form and the inline full form use the short
-% (long) style.
+% The first use inline full form uses the short (long) style.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}%
}%
}
% \end{macrocode}
@@ -22703,14 +35859,14 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrfootnotedescname},
sort={\glsxtrfootnotedescsort},
- first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
- firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}%
\protect\glsxtrabbrvfootnote{\the\glslabeltok}%
{\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
- text={\protect\glsabbrvemfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Switch off hyperlinks on first use to prevent nested hyperlinks,
% and unset the \catattr{regular} attribute if it has been set.
@@ -22749,25 +35905,27 @@ defined}{}%
name={\glsxtrfootnotename},
sort={\the\glsshorttok},
description={\the\glslongtok},%
- first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},%
- firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},%
- text={\protect\glsabbrvemfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Make this category insert a footnote after the link if this was
% the first use, and
% unset the \catattr{regular} attribute if it has been set.
+%Previously this was done by redefining {glsxtrsetupfulldefs} but
+%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike}
+%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}}
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\csdef{glsxtrpostlink\glscategorylabel}{%
- \glsxtrifwasfirstuse
+ \glsxtrifwasglslikeandfirstuse
{%
% \end{macrocode}
-% Needs the specific font command here as the style may have been
+% Ensure \cs{glslabel} is expanded as it may be
% lost by the time the footnote occurs.
% \begin{macrocode}
- \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
- {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ \glsxtrdopostpunc{\xpglsxtrpostabbrvfootnote}%
}%
{}%
}%
@@ -22777,19 +35935,13 @@ defined}{}%
}%
{}%
}%
-% \end{macrocode}
-% The footnote needs to be suppressed in the inline form, so
-% \cs{glsxtrfull} must set the first use switch off.
-% \begin{macrocode}
- \renewcommand*{\glsxtrsetupfulldefs}{%
- \let\glsxtrifwasfirstuse\@secondoftwo
- }%
}%
{%
% \end{macrocode}
%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}}
% \begin{macrocode}
\renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}%
\renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
@@ -22799,44 +35951,49 @@ defined}{}%
% deferred.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}%
}%
% \end{macrocode}
-% The first use full form and the inline full form use the short
-% (long) style.
+% The inline full form uses the short (long) style.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ \Glsxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
- \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ \Glsxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortlongformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortlongplformat{##1}{##2}%
+ {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}%
}%
}
% \end{macrocode}
@@ -22864,25 +36021,23 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrfootnotedescname},
sort={\glsxtrfootnotedescsort},
- first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},%
- firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},%
- text={\protect\glsabbrvemfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}%
% \end{macrocode}
% Make this category insert a footnote after the link if this was
% the first use, and
% unset the \catattr{regular} attribute if it has been set.
+%Previously this was done by redefining {glsxtrsetupfulldefs} but
+%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike}
+%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}}
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
\csdef{glsxtrpostlink\glscategorylabel}{%
- \glsxtrifwasfirstuse
+ \glsxtrifwasglslikeandfirstuse
{%
-% \end{macrocode}
-% Needs the specific font command here as the style may have been
-% lost by the time the footnote occurs.
-% \begin{macrocode}
- \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
- {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ \glsxtrdopostpunc{\xpglsxtrpostabbrvfootnote}%
}%
{}%
}%
@@ -22892,13 +36047,6 @@ defined}{}%
}%
{}%
}%
-% \end{macrocode}
-% The footnote needs to be suppressed in the inline form, so
-% \cs{glsxtrfull} must set the first use switch off.
-% \begin{macrocode}
- \renewcommand*{\glsxtrsetupfulldefs}{%
- \let\glsxtrifwasfirstuse\@secondoftwo
- }%
}%
{%
\GlsXtrUseAbbrStyleFmts{short-em-postfootnote}%
@@ -22918,12 +36066,28 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtruserparensep}
+%\changes{1.49}{??}{new}
+% Separator used inside parenthetical content.
+% \begin{macrocode}
+\newcommand*{\glsxtruserparensep}{, }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtruserfieldfmt}
+%\changes{1.49}{??}{new}
+% Used to format the value of the field given by \cs{glsxtruserfield}.
+% \begin{macrocode}
+\newcommand*{\glsxtruserfieldfmt}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtruserparen}
%\changes{1.04}{2016-05-02}{new}
% The format of the parenthetical information.
% The first argument is the long/short form. The second argument
% is the entry's label. If \cs{glscurrentfieldvalue} has been
-% defined, then we have at least \styfmt{glossaries} v4.23, which makes
+% defined, then we have at least \sty{glossaries} v4.23, which makes
% it easier for the user to adjust this.
% \begin{macrocode}
\ifdef\glscurrentfieldvalue
@@ -22931,14 +36095,55 @@ defined}{}%
\newcommand*{\glsxtruserparen}[2]{%
\glsxtrfullsep{#2}%
\glsxtrparen
- {#1\ifglshasfield{\glsxtruserfield}{#2}{, \glscurrentfieldvalue}{}}%
+ {#1\ifglshasfield{\glsxtruserfield}{#2}%
+ {\expandafter\glsxtrgenentrytextfmt\expandafter{\glsxtruserparensep}%
+ \glsxtruserfieldfmt{\expandafter\glsxtrgenentrytextfmt\expandafter{\glscurrentfieldvalue}}%
+ }{}%
+ }%
}
}
{
\newcommand*{\glsxtruserparen}[2]{%
\glsxtrfullsep{#2}%
\glsxtrparen
- {#1\ifglshasfield{\glsxtruserfield}{#2}{, \@glo@thisvalue}{}}%
+ {#1\ifglshasfield{\glsxtruserfield}{#2}%
+ {\expandafter\glsxtrgenentrytextfmt\expandafter{\glsxtruserparensep}%
+ \glsxtruserfieldfmt{\expandafter\glsxtrgenentrytextfmt\expandafter{\@glo@thisvalue}}%
+ }{}%
+ }%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtruserparen}
+%\changes{1.49}{??}{new}
+% As above but converts the user supplied information to all-caps.
+% The first argument should be provided in all-caps if required.
+% \begin{macrocode}
+\ifdef\glscurrentfieldvalue
+{
+ \newcommand*{\GLSxtruserparen}[2]{%
+ \glsxtrfullsep{#2}%
+ \glsxtrparen
+ {#1\ifglshasfield{\glsxtruserfield}{#2}%
+ {\expandafter\glsxtrgenentrytextfmt\expandafter{\glsxtruserparensep}%
+ \glsxtruserfieldfmt{\expandafter\mfirstucMakeUppercase\expandafter{\expandafter
+ \glsxtrgenentrytextfmt\expandafter{\glscurrentfieldvalue}}}%
+ }{}%
+ }%
+ }
+}
+{
+ \newcommand*{\GLSxtruserparen}[2]{%
+ \glsxtrfullsep{#2}%
+ \glsxtrparen
+ {#1\ifglshasfield{\glsxtruserfield}{#2}%
+ {\expandafter\glsxtrgenentrytextfmt\expandafter{\glsxtruserparensep}%
+ \glsxtruserfieldfmt{\expandafter\mfirstucMakeUppercase\expandafter{\expandafter
+ \glsxtrgenentrytextfmt\expandafter{\@glo@thisvalue}}}%
+ }{}%
+ }%
}
}
% \end{macrocode}
@@ -23024,6 +36229,8 @@ defined}{}%
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{2}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -23046,24 +36253,28 @@ defined}{}%
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}%
+ \glsxtruserlongshortformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}%
+ \glsxtruserlongshortplformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}%
+ \Glsxtruserlongshortformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}%
+ \Glsxtruserlongshortplformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtruserlongshortformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtruserlongshortplformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}%
}%
}
% \end{macrocode}
@@ -23097,12 +36308,11 @@ defined}{}%
description={\protect\glsuserdescription{\the\glslongtok}%
{\the\glslabeltok}}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
\csdef{glsxtrpostlink\glscategorylabel}{%
\glsxtrifwasfirstuse
{%
- \glsxtruserparen
- {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}%
- {\glslabel}%
+ \glsxtrpostusershortformat{\glslabel}{\glsfirstabbrvuserfont}%
}%
{}%
}%
@@ -23127,43 +36337,22 @@ defined}{}%
%First use full form:
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlonguserfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlonguserfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- }%
-% \end{macrocode}
-% In-line format:
-% \begin{macrocode}
- \renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}%
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}%
}%
- \renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlonguserfont}%
}%
- \renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}%
- }%
- \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}%
}%
}
% \end{macrocode}
@@ -23189,8 +36378,14 @@ defined}{}%
\newcommand*{\glsxtrscusersuffix}{\glsxtrscsuffix}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\glsxtrscuserrevert}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrscuserrevert}{\glsxtrscrevert}
+% \end{macrocode}
+%\end{macro}
%
-%\begin{macro}{\glsxtrscusername}
+%\begin{macro}{\glsxtrlongshortscusername}
%\changes{1.48}{2021-11-22}{new}
% The default name format for this style.
% \begin{macrocode}
@@ -23201,8 +36396,8 @@ defined}{}%
%\end{macro}
%
%\begin{abbrvstyle}{long-postshort-sc-user}
-%\changes{1.48}{2017-02-03}{new}
-%Like \abbrstyle{long-short-sc-user} but uses smallcaps.
+%\changes{1.48}{2021-11-22}{new}
+%Like \abbrstyle{long-postshort-sc-user} but uses smallcaps.
% \begin{macrocode}
\newabbreviationstyle{long-postshort-sc-user}%
{%
@@ -23223,12 +36418,11 @@ defined}{}%
description={\protect\glsuserdescription{\the\glslongtok}%
{\the\glslabeltok}}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
\csdef{glsxtrpostlink\glscategorylabel}{%
\glsxtrifwasfirstuse
{%
- \glsxtruserparen
- {\glsfirstabbrvscuserfont{\glsentryshort{\glslabel}}}%
- {\glslabel}%
+ \glsxtrpostusershortformat{\glslabel}{\glsfirstabbrvscuserfont}%
}%
{}%
}%
@@ -23249,47 +36443,54 @@ defined}{}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvscuserfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrscuserrevert{##1}}%
% \end{macrocode}
%First use full form:
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlonguserfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlonguserfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlonguserfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}%
}%
% \end{macrocode}
% In-line format:
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshort{##1}}}{##1}%
+ \glsxtruserlongshortformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshortpl{##1}}}{##1}%
+ \glsxtruserlongshortplformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshort{##1}}}{##1}%
+ \Glsxtruserlongshortformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshortpl{##1}}}{##1}%
+ \Glsxtruserlongshortplformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtruserlongshortformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtruserlongshortplformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}%
}%
}
% \end{macrocode}
@@ -23335,9 +36536,7 @@ defined}{}%
\csdef{glsxtrpostlink\glscategorylabel}{%
\glsxtrifwasfirstuse
{%
- \glsxtruserparen
- {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}%
- {\glslabel}%
+ \glsxtrpostusershortformat{\glslabel}{\glsfirstabbrvuserfont}%
}%
{}%
}%
@@ -23391,9 +36590,7 @@ defined}{}%
\csdef{glsxtrpostlink\glscategorylabel}{%
\glsxtrifwasfirstuse
{%
- \glsxtruserparen
- {\glsfirstabbrvscuserfont{\glsentryshort{\glslabel}}}%
- {\glslabel}%
+ \glsxtrpostusershortformat{\glslabel}{\glsfirstabbrvscuserfont}%
}%
{}%
}%
@@ -23439,12 +36636,11 @@ defined}{}%
description={\protect\glsuserdescription{\the\glslongtok}%
{\the\glslabeltok}}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
\csdef{glsxtrpostlink\glscategorylabel}{%
\glsxtrifwasfirstuse
{%
- \glsxtruserparen
- {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}%
- {\glslabel}%
+ \glsxtrpostuserlongformat{\glslabel}{\glsfirstlonguserfont}%
}%
{}%
}%
@@ -23469,44 +36665,26 @@ defined}{}%
%First use full form:
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortformat{##1}{##2}{\glsfirstabbrvuserfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvuserfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvuserfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvuserfont}%
}%
-% \end{macrocode}
-% In-line format:
-% \begin{macrocode}
- \renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}%
- }%
- \renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}%
- }%
- \renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvuserfont}%
}%
- \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvuserfont}%
}%
+% \end{macrocode}
+% In-line format should be the same.
+% \begin{macrocode}
}
% \end{macrocode}
%\end{abbrvstyle}
@@ -23552,9 +36730,7 @@ defined}{}%
\csdef{glsxtrpostlink\glscategorylabel}{%
\glsxtrifwasfirstuse
{%
- \glsxtruserparen
- {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}%
- {\glslabel}%
+ \glsxtrpostuserlongformat{\glslabel}{\glsfirstlonguserfont}%
}%
{}%
}%
@@ -23602,6 +36778,7 @@ defined}{}%
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{2}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -23652,6 +36829,8 @@ defined}{}%
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{2}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -23674,24 +36853,28 @@ defined}{}%
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}%
+ \glsxtrusershortlongformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}%
+ \glsxtrusershortlongplformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}%
+ \Glsxtrusershortlongformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}%
+ \Glsxtrusershortlongplformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrusershortlongformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrusershortlongplformat{##1}{##2}%
+ {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}%
}%
}
% \end{macrocode}
@@ -23728,6 +36911,7 @@ defined}{}%
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{2}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -23781,6 +36965,11 @@ defined}{}%
%\end{definition}
%The \meta{long} and \meta{short} arguments may be the plural form.
%The \meta{long} argument may also be the first letter uppercase form.
+%This unfortunately doesn't fit in with the new \cs{glsxtrshortformat}
+%etc commands, but is retained for backward-compatibility.
+%This means that the inserted part has to have a separate encapsulation for the
+%inner format. The \meta{long} and \meta{short} arguments will need to include
+%the inner format.
% \begin{macrocode}
\newcommand*{\glsxtrlonghyphenshort}[4]{%
% \end{macrocode}
@@ -23788,18 +36977,89 @@ defined}{}%
% \begin{macrocode}
{%
% \end{macrocode}
-% If \meta{insert} starts with a hyphen, redefine \ics{glsxtrwordsep}
+% If \meta{insert} starts with a hyphen, redefine \cs{glsxtrwordsep}
% to a hyphen. The inserted material is also inserted into the
% parenthetical part. (The inserted material is grouped as a
% precautionary measure.) No change is made to \cs{glsxtrwordsep} if
% \meta{insert} doesn't start with a hyphen.
% \begin{macrocode}
- \glsxtrifhyphenstart{#4}{\def\glsxtrwordsep{-}}{}%
- \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside{#4}\fi}%
- \ifglsxtrinsertinside\else{#4}\fi
+ \glsxtrifhyphenstart{#4}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside
+ {\glsxtrgenentrytextfmt{#4}}\fi}%
+ \ifglsxtrinsertinside\else{\glsxtrgenentrytextfmt{#4}}\fi
\glsxtrfullsep{#1}%
- \glsxtrparen{\glsfirstabbrvhyphenfont{#3\ifglsxtrinsertinside{#4}\fi}%
- \ifglsxtrinsertinside\else{#4}\fi}%
+ \glsxtrparen{\glsfirstabbrvhyphenfont{#3\ifglsxtrinsertinside
+ {\glsxtrgenentrytextfmt{#4}}\fi}%
+ \ifglsxtrinsertinside\else{\glsxtrgenentrytextfmt{#4}}\fi}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrlonghyphenshort}
+%\changes{1.49}{??}{new}
+%As above but convert the insert to uppercase. The long and short
+%should already have the case-change applied.
+% \begin{macrocode}
+\newcommand*{\GLSxtrlonghyphenshort}[4]{%
+ {%
+ \glsxtrifhyphenstart{#4}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}\fi}%
+ \ifglsxtrinsertinside\else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsfirstabbrvhyphenfont{#3\ifglsxtrinsertinside
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}\fi}%
+ \ifglsxtrinsertinside\else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}%
+ \fi}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrshorthyphennolong}
+%\changes{1.49}{??}{new}
+%\begin{definition}
+%\cs{glsxtrshorthyphennolong}\marg{label}\marg{short}\marg{insert}
+%\end{definition}
+%The \meta{short} argument may be the plural form and may also be the first letter uppercase form.
+%
+%As \cs{glsxtrlonghyphenshort} but where only the short form should
+%be shown.
+% \begin{macrocode}
+\newcommand*{\glsxtrshorthyphennolong}[3]{%
+% \end{macrocode}
+% Grouping is needed to localise the redefinitions.
+% \begin{macrocode}
+ {%
+% \end{macrocode}
+% If \meta{insert} starts with a hyphen, redefine \cs{glsxtrwordsep}
+% to a hyphen.
+% \begin{macrocode}
+ \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside
+ {\glsxtrgenentrytextfmt{#3}}\fi}%
+ \ifglsxtrinsertinside\else{\glsxtrgenentrytextfmt{#3}}\fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrshorthyphennolong}
+%\changes{1.49}{??}{new}
+%As above but all-caps.
+% \begin{macrocode}
+\newcommand*{\GLSxtrshorthyphennolong}[3]{%
+ {%
+ \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#3}}}\fi}%
+ \ifglsxtrinsertinside\else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#3}}}%
+ \fi
}%
}
% \end{macrocode}
@@ -23836,6 +37096,12 @@ defined}{}%
\newcommand*{\glsxtrhyphensuffix}{\glsxtrabbrvpluralsuffix}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\glsxtrlonghyphenshortsort}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlonghyphenshortsort}{\expandonce\glsxtrorgshort}
+% \end{macrocode}
+%\end{macro}
%
%\begin{abbrvstyle}{long-hyphen-short-hyphen}
%\changes{1.17}{2017-08-09}{new}
@@ -23853,13 +37119,13 @@ defined}{}%
% \begin{macrocode}
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongshortname},
- sort={\the\glsshorttok},
+ sort={\glsxtrlonghyphenshortsort},
first={\protect\glsfirstlonghyphenfont{\the\glslongtok}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},%
+ \protect\glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},%
firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},%
+ \protect\glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},%
text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},%
description={\protect\glslonghyphenfont{\the\glslongtok}}}%
@@ -23867,6 +37133,8 @@ defined}{}%
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -23885,18 +37153,218 @@ defined}{}%
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsxtrlonghyphenshort{##1}{\glsaccesslong{##1}}{\glsaccessshort{##1}}{##2}%
+ \glsxtrlonghyphenshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslong{##1}%
+ }%
+ {%
+ \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshort{##1}%
+ }%
+ {%
+ \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsxtrlonghyphenshort{##1}{\glsaccesslongpl{##1}}%
- {\glsaccessshortpl{##1}}{##2}%
+ \glsxtrlonghyphenshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslongpl{##1}%
+ }%
+ {%
+ \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshortpl{##1}%
+ }%
+ {%
+ \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsxtrlonghyphenshort{##1}{\Glsaccesslong{##1}}{\glsaccessshort{##1}}{##2}%
+ \glsxtrlonghyphenshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \Glsaccesslong{##1}%
+ }%
+ {%
+ \Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshort{##1}%
+ }%
+ {%
+ \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsxtrlonghyphenshort{##1}{\Glsaccesslongpl{##1}}%
- {\glsaccessshortpl{##1}}{##2}%
+ \glsxtrlonghyphenshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \Glsaccesslongpl{##1}%
+ }%
+ {%
+ \Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshortpl{##1}%
+ }%
+ {%
+ \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlonghyphenshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \GLSaccesslong{##1}%
+ }%
+ {%
+ \GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshort{##1}%
+ }%
+ {%
+ \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlonghyphenshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \GLSaccesslongpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshortpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+% \end{macrocode}
+%Subsequent form also needs checking for a hyphen in case the short
+%form has spaces.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glsxtrshorthyphennolong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshort{##1}%
+ }%
+ {%
+ \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glsxtrshorthyphennolong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshortpl{##1}%
+ }%
+ {%
+ \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glsxtrshorthyphennolong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \Glsaccessshort{##1}%
+ }%
+ {%
+ \Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glsxtrshorthyphennolong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \Glsaccessshortpl{##1}%
+ }%
+ {%
+ \Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \GLSxtrshorthyphennolong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshort{##1}%
+ }%
+ {%
+ \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \GLSxtrshorthyphennolong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshortpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
}
% \end{macrocode}
@@ -23921,10 +37389,10 @@ defined}{}%
sort={\glsxtrlongshortdescsort},
first={\protect\glsfirstlonghyphenfont{\the\glslongtok}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},%
+ \protect\glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},%
firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},%
+ \protect\glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},%
text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}%
}%
@@ -23932,6 +37400,7 @@ defined}{}%
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -23950,6 +37419,10 @@ defined}{}%
%\begin{definition}
%\cs{glsxtrlonghyphennoshort}\marg{label}\marg{long}\marg{insert}
%\end{definition}
+%As with \cs{glsxtrlonghyphenshort} this doesn't fit in with the
+%new \cs{glsxtrshortformat} so the inserted part has to have a separate encapsulation for the
+%inner format. The \meta{long} argument will need to include
+%the inner format.
% \begin{macrocode}
\newcommand*{\glsxtrlonghyphennoshort}[3]{%
% \end{macrocode}
@@ -23957,20 +37430,45 @@ defined}{}%
% \begin{macrocode}
{%
% \end{macrocode}
-% If \meta{insert} starts with a hyphen, redefine \ics{glsxtrwordsep}
+% If \meta{insert} starts with a hyphen, redefine \cs{glsxtrwordsep}
% to a hyphen. The inserted material is also inserted into the
% parenthetical part. (The inserted material is grouped as a
% precautionary measure.) No change is made to \cs{glsxtrwordsep} if
% \meta{insert} doesn't start with a hyphen.
% \begin{macrocode}
- \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}%
- \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside{#3}\fi}%
- \ifglsxtrinsertinside\else{#3}\fi
+ \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside
+ {\glsxtrgenentrytextfmt{#3}}\fi}%
+ \ifglsxtrinsertinside\else{\glsxtrgenentrytextfmt{#3}}\fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrlonghyphennoshort}
+%\changes{1.49}{??}{new}
+%As above but convert insert to all-caps.
+% \begin{macrocode}
+\newcommand*{\GLSxtrlonghyphennoshort}[3]{%
+ {%
+ \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#3}}}\fi}%
+ \ifglsxtrinsertinside\else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#3}}}%
+ \fi
}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrlonghyphennoshortdescsort}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlonghyphennoshortdescsort}{\expandonce\glsxtrorglong}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{abbrvstyle}{long-hyphen-noshort-desc-noreg}
%\changes{1.17}{2017-08-09}{new}
%\changes{1.42}{2020-02-03}{added missing text key}
@@ -23985,7 +37483,7 @@ defined}{}%
{%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongnoshortdescname},
- sort={\expandonce\glsxtrorglong},
+ sort={\glsxtrlonghyphennoshortdescsort},
first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},%
firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},%
text={\protect\glslonghyphenfont{\the\glslongtok}},%
@@ -24003,7 +37501,6 @@ defined}{}%
}%
}%
{%
- \GlsXtrUseAbbrStyleFmts{long-hyphen-short-hyphen}%
% \end{macrocode}
% In case the user wants to mix and match font styles, these are
% redefined here.
@@ -24014,64 +37511,315 @@ defined}{}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
% \end{macrocode}
-% The format for subsequent use (not used when the regular attribute
-% is set).
-% \begin{macrocode}
- \renewcommand*{\glsxtrsubsequentfmt}[2]{%
- \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}%
- }%
- \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}%
- }%
- \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}%
- }%
- \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}%
- }%
-% \end{macrocode}
% The inline full form displays the long format followed by the
-% short form in parentheses.
+% short form in parentheses (as long-hyphen-short-hyphen).
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}%
- \glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ \glsxtrlonghyphenshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslong{##1}%
+ }%
+ {%
+ \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshort{##1}%
+ }%
+ {%
+ \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}%
- \glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlonghyphenshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslongpl{##1}%
+ }%
+ {%
+ \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshortpl{##1}%
+ }%
+ {%
+ \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}%
- \glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ \glsxtrlonghyphenshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \Glsaccesslong{##1}%
+ }%
+ {%
+ \Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshort{##1}%
+ }%
+ {%
+ \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}%
- \glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlonghyphenshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \Glsaccesslongpl{##1}%
+ }%
+ {%
+ \Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshortpl{##1}%
+ }%
+ {%
+ \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlonghyphenshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \GLSaccesslong{##1}%
+ }%
+ {%
+ \GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshort{##1}%
+ }%
+ {%
+ \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlonghyphenshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \GLSaccesslongpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshortpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
% \end{macrocode}
% The first use full form only displays the long form.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}%
+ \glsxtrlonghyphennoshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslong{##1}%
+ }%
+ {%
+ \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}%
+ \glsxtrlonghyphennoshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslongpl{##1}%
+ }%
+ {%
+ \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}%
+ \glsxtrlonghyphennoshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \Glsaccesslong{##1}%
+ }%
+ {%
+ \Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}%
+ \glsxtrlonghyphennoshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \Glsaccesslongpl{##1}%
+ }%
+ {%
+ \Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlonghyphennoshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \GLSaccesslong{##1}%
+ }%
+ {%
+ \GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlonghyphennoshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \GLSaccesslongpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+% \end{macrocode}
+% The format for subsequent use (not used when the regular attribute
+% is set).
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glsxtrlonghyphennoshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslong{##1}%
+ }%
+ {%
+ \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glsxtrlonghyphennoshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslongpl{##1}%
+ }%
+ {%
+ \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glsxtrlonghyphennoshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \Glsaccesslong{##1}%
+ }%
+ {%
+ \Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glsxtrlonghyphennoshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \Glsaccesslongpl{##1}%
+ }%
+ {%
+ \Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \GLSxtrlonghyphennoshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \GLSaccesslong{##1}%
+ }%
+ {%
+ \GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \GLSxtrlonghyphennoshort{##1}%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \GLSaccesslongpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
}
% \end{macrocode}
%\end{abbrvstyle}
%
+%\begin{macro}{\glsxtrlonghyphennoshortsort}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlonghyphennoshortsort}{\expandonce\glsxtrorgshort}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{abbrvstyle}{long-hyphen-noshort-noreg}
%\changes{1.17}{2017-08-09}{new}
% It doesn't really make a great deal of sense to have a long-only
@@ -24091,7 +37839,7 @@ defined}{}%
% \begin{macrocode}
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongnoshortname},
- sort={\the\glsshorttok},
+ sort={\glsxtrlonghyphennoshortsort},
first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},%
firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},%
text={\protect\glslonghyphenfont{\the\glslongtok}},%
@@ -24126,13 +37874,16 @@ defined}{}%
%Used by \abbrstyle{long-hyphen-postshort-hyphen}. The \meta{insert}
%is check to determine if it starts with a hyphen but isn't used
%here as it's moved to the post-link hook.
+%
+%The \meta{long} argument will need to include
+%the inner format.
% \begin{macrocode}
\newcommand*{\glsxtrlonghyphen}[3]{%
% \end{macrocode}
% Grouping is needed to localise the redefinitions.
% \begin{macrocode}
{%
- \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}%
+ \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
\glsfirstlonghyphenfont{#1}%
}%
}
@@ -24151,29 +37902,176 @@ defined}{}%
% \begin{macrocode}
\newcommand*{\glsxtrposthyphenshort}[2]{%
{%
- \glsxtrifhyphenstart{#2}{\def\glsxtrwordsep{-}}{}%
- \ifglsxtrinsertinside{\glsfirstlonghyphenfont{#2}}\else{#2}\fi
+ \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \ifglsxtrinsertinside
+ {\glsfirstlonghyphenfont{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
\glsxtrfullsep{#1}%
\glsxtrparen
- {\glsfirstabbrvhyphenfont{\glsentryshort{#1}\ifglsxtrinsertinside{#2}\fi}%
- \ifglsxtrinsertinside\else{#2}\fi
+ {%
+ \glsxtrshortformat{#1}{#2}{\glsfirstabbrvhyphenfont}%
}%
}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSxtrposthyphenshort}
+%\changes{1.49}{??}{new}
+%As above but all caps.
+% \begin{macrocode}
+\newcommand*{\GLSxtrposthyphenshort}[2]{%
+ {%
+ \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \ifglsxtrinsertinside
+ {\glsfirstlonghyphenfont{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen
+ {%
+ \GLSxtrshortformat{#1}{#2}{\glsfirstabbrvhyphenfont}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrposthyphenshortpl}
+%\changes{1.49}{??}{new}
+%As above but plural.
+% \begin{macrocode}
+\newcommand*{\glsxtrposthyphenshortpl}[2]{%
+ {%
+ \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \ifglsxtrinsertinside
+ {\glsfirstlonghyphenfont{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen
+ {%
+ \glsxtrshortplformat{#1}{#2}{\glsfirstabbrvhyphenfont}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrposthyphenshortpl}
+%\changes{1.49}{??}{new}
+%As above but all caps.
+% \begin{macrocode}
+\newcommand*{\GLSxtrposthyphenshortpl}[2]{%
+ {%
+ \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \ifglsxtrinsertinside
+ {\glsfirstlonghyphenfont{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen
+ {%
+ \GLSxtrshortplformat{#1}{#2}{\glsfirstabbrvhyphenfont}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\xpglsxtrposthyphenshort}
+%\changes{1.49}{??}{new}
+%Expand placeholders and check for all caps.
+% \begin{macrocode}
+\newcommand*{\xpglsxtrposthyphenshort}{%
+ \glsxtrifallcaps
+ {%
+ \expandafter\GLSxtrposthyphenshort\expandafter\glslabel
+ \expandafter{\glsinsert}%
+ }%
+ {%
+ \expandafter\glsxtrposthyphenshort\expandafter\glslabel
+ \expandafter{\glsinsert}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrposthyphensubsequent}
%\changes{1.17}{2017-08-09}{new}
%\begin{definition}
%\cs{glsxtrposthyphensubsequent}\marg{label}\marg{insert}
%\end{definition}
%Format in the post-link hook for subsequent use. The label is
-%ignored by default.
+%ignored by default. This just does the insert part with appropriate formatting.
% \begin{macrocode}
\newcommand*{\glsxtrposthyphensubsequent}[2]{%
- \glsabbrvfont{\ifglsxtrinsertinside {#2}\fi}%
- \ifglsxtrinsertinside \else{#2}\fi
+ \ifglsxtrinsertinside
+ \glsabbrvfont{{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrposthyphensubsequent}
+%\changes{1.49}{??}{new}
+%As above but all caps.
+% \begin{macrocode}
+\newcommand*{\GLSxtrposthyphensubsequent}[2]{%
+ \ifglsxtrinsertinside
+ \glsabbrvfont{{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\xpglsxtrposthyphensubsequent}
+%\changes{1.49}{??}{new}
+%Expand placeholders and check for all caps.
+% \begin{macrocode}
+\newcommand*{\xpglsxtrposthyphensubsequent}{%
+ \glsxtrifallcaps
+ {%
+ \expandafter\GLSxtrposthyphensubsequent\expandafter\glslabel
+ \expandafter{\glsinsert}%
+ }%
+ {%
+ \expandafter\glsxtrposthyphensubsequent\expandafter\glslabel
+ \expandafter{\glsinsert}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrshorthyphennoinsert}
+%\changes{1.17}{2017-08-09}{new}
+%\begin{definition}
+%\cs{glsxtrshorthyphennoinsert}\marg{label}\marg{short}\marg{insert}
+%\end{definition}
+%As with \cs{glsxtrshorthyphennolong} but doesn't actually show the
+%insert.
+% \begin{macrocode}
+\newcommand*{\glsxtrshorthyphennoinsert}[3]{%
+% \end{macrocode}
+% Grouping is needed to localise the redefinitions.
+% \begin{macrocode}
+ {%
+% \end{macrocode}
+% If \meta{insert} starts with a hyphen, redefine \cs{glsxtrwordsep}
+% to a hyphen.
+% \begin{macrocode}
+ \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \glsfirstabbrvhyphenfont{#2}%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -24195,23 +38093,24 @@ defined}{}%
% \begin{macrocode}
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrlongshortname},
- sort={\the\glsshorttok},
+ sort={\glsxtrlonghyphenshortsort},
first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},%
firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},%
text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},%
description={\protect\glslonghyphenfont{\the\glslongtok}}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
\csdef{glsxtrpostlink\glscategorylabel}{%
\glsxtrifwasfirstuse
{%
- \glsxtrposthyphenshort{\glslabel}{\glsinsert}%
+ \xpglsxtrposthyphenshort
}%
{%
% \end{macrocode}
% Put the insertion into the post-link:
% \begin{macrocode}
- \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}%
+ \xpglsxtrposthyphensubsequent
}%
}%
\glshasattribute{\the\glslabeltok}{regular}%
@@ -24232,57 +38131,188 @@ defined}{}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
% \end{macrocode}
-% Subsequent use needs to omit the insertion:
+% Subsequent use needs to omit the insertion but it needs to perform
+% the space-hyphen substitution:
% \begin{macrocode}
\renewcommand*{\glsxtrsubsequentfmt}[2]{%
- \glsabbrvfont{\glsaccessshort{##1}}%
+ \glsxtrshorthyphennoinsert{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshort{##1}%
+ }%
+ {%
+ \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glsabbrvfont{\glsaccessshortpl{##1}}%
+ \glsxtrshorthyphennoinsert{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshortpl{##1}%
+ }%
+ {%
+ \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glsabbrvfont{\Glsaccessshort{##1}}%
+ \glsxtrshorthyphennoinsert{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \Glsaccessshort{##1}%
+ }%
+ {%
+ \Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glsabbrvfont{\Glsaccessshortpl{##1}}%
+ \glsxtrshorthyphennoinsert{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \Glsaccessshortpl{##1}%
+ }%
+ {%
+ \Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \glsxtrshorthyphennoinsert{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshort{##1}%
+ }%
+ {%
+ \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \glsxtrshorthyphennoinsert{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshortpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
% \end{macrocode}
% First use full form:
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsxtrlonghyphen{\glsaccesslong{##1}}{##1}{##2}%
+ \glsxtrlonghyphen
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslong{##1}%
+ }%
+ {%
+ \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##1}{##2}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsxtrlonghyphen{\glsaccesslongpl{##1}}{##1}{##2}%
+ \glsxtrlonghyphen
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslongpl{##1}%
+ }%
+ {%
+ \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##1}{##2}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsxtrlonghyphen{\Glsaccesslong{##1}}{##1}{##2}%
+ \glsxtrlonghyphen
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \Glsaccesslong{##1}%
+ }%
+ {%
+ \Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##1}{##2}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsxtrlonghyphen{\Glsaccesslongpl{##1}}{##1}{##2}%
+ \glsxtrlonghyphen
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \Glsaccesslongpl{##1}%
+ }%
+ {%
+ \Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##1}{##2}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \glsxtrlonghyphen
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \GLSaccesslong{##1}%
+ }%
+ {%
+ \GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##1}{##2}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \glsxtrlonghyphen
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \GLSaccesslongpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##1}{##2}%
}%
% \end{macrocode}
% In-line format.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlonghyphenfont{\glsaccesslong{##1}%
- \ifglsxtrinsertinside{##2}\fi}%
- \ifglsxtrinsertinside \else{##2}\fi
+ \glsxtrlongformatgrp{##1}{##2}{\glsfirstlonghyphenfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlonghyphenfont{\glsaccesslongpl{##1}%
- \ifglsxtrinsertinside{##2}\fi}%
- \ifglsxtrinsertinside \else{##2}\fi
+ \glsxtrlongplformatgrp{##1}{##2}{\glsfirstlonghyphenfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlonghyphenfont{\Glsaccesslong{##1}%
- \ifglsxtrinsertinside{##2}\fi}%
- \ifglsxtrinsertinside \else{##2}\fi
+ \Glsxtrlongformatgrp{##1}{##2}{\glsfirstlonghyphenfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlonghyphenfont{\Glsaccesslongpl{##1}%
- \ifglsxtrinsertinside{##2}\fi}%
- \ifglsxtrinsertinside \else{##2}\fi
+ \Glsxtrlongplformatgrp{##1}{##2}{\glsfirstlonghyphenfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongformatgrp{##1}{##2}{\glsfirstlonghyphenfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongplformatgrp{##1}{##2}{\glsfirstlonghyphenfont}%
}%
}
% \end{macrocode}
@@ -24314,13 +38344,13 @@ defined}{}%
\csdef{glsxtrpostlink\glscategorylabel}{%
\glsxtrifwasfirstuse
{%
- \glsxtrposthyphenshort{\glslabel}{\glsinsert}%
+ \xpglsxtrposthyphenshort
}%
{%
% \end{macrocode}
% Put the insertion into the post-link:
% \begin{macrocode}
- \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}%
+ \xpglsxtrposthyphensubsequent
}%
}%
\glshasattribute{\the\glslabeltok}{regular}%
@@ -24343,6 +38373,11 @@ defined}{}%
%\end{definition}
%The \meta{long} and \meta{short} arguments may be the plural form.
%The \meta{long} argument may also be the first letter uppercase form.
+%
+%As with \cs{glsxtrlonghyphenshort} this doesn't fit in with the
+%new \cs{glsxtrshortformat} so the inserted part has to have a separate encapsulation for the
+%inner format. The \meta{long} argument will need to include
+%the inner format.
% \begin{macrocode}
\newcommand*{\glsxtrshorthyphenlong}[4]{%
% \end{macrocode}
@@ -24355,17 +38390,50 @@ defined}{}%
% parenthetical part. (The inserted material is grouped as a
% precautionary measure.)
% \begin{macrocode}
- \glsxtrifhyphenstart{#4}{\def\glsxtrwordsep{-}}{}%
- \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside{#4}\fi}%
- \ifglsxtrinsertinside\else{#4}\fi
+ \glsxtrifhyphenstart{#4}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside
+ {\glsxtrgenentrytextfmt{#4}}\fi}%
+ \ifglsxtrinsertinside\else{\glsxtrgenentrytextfmt{#4}}\fi
\glsxtrfullsep{#1}%
- \glsxtrparen{\glsfirstlonghyphenfont{#3\ifglsxtrinsertinside{#4}\fi}%
- \ifglsxtrinsertinside\else{#4}\fi}%
+ \glsxtrparen{\glsfirstlonghyphenfont{#3%
+ \ifglsxtrinsertinside{\glsxtrgenentrytextfmt{#4}}\fi}%
+ \ifglsxtrinsertinside\else{\glsxtrgenentrytextfmt{#4}}\fi}%
}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSxtrshorthyphenlong}
+%\changes{1.49}{??}{new}
+%As above but convert insert to all-caps. The long and short form
+%arguments should be provided as all-caps.
+% \begin{macrocode}
+\newcommand*{\GLSxtrshorthyphenlong}[4]{%
+ {%
+ \glsxtrifhyphenstart{#4}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}\fi}%
+ \ifglsxtrinsertinside\else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsfirstlonghyphenfont{#3%
+ \ifglsxtrinsertinside{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}\fi}%
+ \ifglsxtrinsertinside\else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}%
+ \fi}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrshorthyphenlongsort}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrshorthyphenlongsort}{\expandonce\glsxtrorgshort}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{abbrvstyle}{short-hyphen-long-hyphen}
%\changes{1.17}{2017-08-09}{new}
%\changes{1.42}{2020-02-03}{added missing text key}
@@ -24382,13 +38450,13 @@ defined}{}%
% \begin{macrocode}
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortlongname},
- sort={\the\glsshorttok},
+ sort={\glsxtrshorthyphenlongsort},
first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},%
+ \protect\glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},%
firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},%
+ \protect\glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},%
text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},%
description={\protect\glslonghyphenfont{\the\glslongtok}}}%
@@ -24396,6 +38464,8 @@ defined}{}%
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -24414,18 +38484,218 @@ defined}{}%
% this style.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsxtrshorthyphenlong{##1}{\glsaccessshort{##1}}{\glsaccesslong{##1}}{##2}%
+ \glsxtrshorthyphenlong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshort{##1}%
+ }%
+ {%
+ \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslong{##1}%
+ }%
+ {%
+ \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
\glsxtrshorthyphenlong{##1}%
- {\glsaccessshortpl{##1}}{\glsaccesslongpl{##1}}{##2}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshortpl{##1}%
+ }%
+ {%
+ \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{marklongwords}{true}%
+ {%
+ \glsaccesslongpl{##1}%
+ }%
+ {%
+ \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsxtrshorthyphenlong{##1}{\glsaccessshort{##1}}{\Glsaccesslong{##1}}{##2}%
+ \glsxtrshorthyphenlong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \Glsaccessshort{##1}%
+ }%
+ {%
+ \Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslong{##1}%
+ }%
+ {%
+ \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
\glsxtrshorthyphenlong{##1}%
- {\glsaccessshortpl{##1}}{\Glsaccesslongpl{##1}}{##2}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \Glsaccessshortpl{##1}%
+ }%
+ {%
+ \Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \glsaccesslongpl{##1}%
+ }%
+ {%
+ \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrshorthyphenlong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshort{##1}%
+ }%
+ {%
+ \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \GLSaccesslong{##1}%
+ }%
+ {%
+ \GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrshorthyphenlong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshortpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {%
+ \glsifattribute{##1}{markwords}{true}%
+ {%
+ \GLSaccesslongpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+% \end{macrocode}
+%Subsequent form also needs checking for a hyphen in case the short
+%form has spaces.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glsxtrshorthyphennolong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshort{##1}%
+ }%
+ {%
+ \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glsxtrshorthyphennolong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshortpl{##1}%
+ }%
+ {%
+ \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glsxtrshorthyphennolong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \Glsaccessshort{##1}%
+ }%
+ {%
+ \Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glsxtrshorthyphennolong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \Glsaccessshortpl{##1}%
+ }%
+ {%
+ \Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \GLSxtrshorthyphennolong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshort{##1}%
+ }%
+ {%
+ \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \GLSxtrshorthyphennolong{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshortpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
}
% \end{macrocode}
@@ -24450,10 +38720,10 @@ defined}{}%
sort={\glsxtrshortlongdescsort},
first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},%
+ \protect\glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},%
firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}%
\protect\glsxtrfullsep{\the\glslabeltok}%
- \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},%
+ \protect\glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},%
text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}%
}%
@@ -24461,6 +38731,7 @@ defined}{}%
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsxtrsetcomplexstyle{\the\glslabeltok}{3}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -24480,7 +38751,7 @@ defined}{}%
%\cs{glsxtrshorthyphen}\marg{short}\marg{label}\marg{insert}
%\end{definition}
%Used by \abbrstyle{short-hyphen-postlong-hyphen}. The \meta{insert}
-%is check to determine if it starts with a hyphen but isn't used
+%is checked to determine if it starts with a hyphen but isn't used
%here as it's moved to the post-link hook.
% \begin{macrocode}
\newcommand*{\glsxtrshorthyphen}[3]{%
@@ -24488,7 +38759,7 @@ defined}{}%
% Grouping is needed to localise the redefinitions.
% \begin{macrocode}
{%
- \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}%
+ \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
\glsfirstabbrvhyphenfont{#1}%
}%
}
@@ -24507,18 +38778,98 @@ defined}{}%
% \begin{macrocode}
\newcommand*{\glsxtrposthyphenlong}[2]{%
{%
- \glsxtrifhyphenstart{#2}{\def\glsxtrwordsep{-}}{}%
- \ifglsxtrinsertinside{\glsfirstabbrvhyphenfont{#2}}\else{#2}\fi
+ \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \ifglsxtrinsertinside
+ {\glsfirstabbrvhyphenfont{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
\glsxtrfullsep{#1}%
\glsxtrparen
- {\glsfirstlonghyphenfont{\glsentrylong{#1}\ifglsxtrinsertinside{#2}\fi}%
- \ifglsxtrinsertinside\else{#2}\fi
- }%
+ {\glsxtrlongformatgrp{#1}{#2}{\glsfirstlonghyphenfont}}%
}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\GLSxtrposthyphenlong}
+%\changes{1.49}{??}{new}
+%As above but all-caps.
+% \begin{macrocode}
+\newcommand*{\GLSxtrposthyphenlong}[2]{%
+ {%
+ \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \ifglsxtrinsertinside
+ {\glsfirstabbrvhyphenfont{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen
+ {\GLSxtrlongformatgrp{#1}{#2}{\glsfirstlonghyphenfont}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Plural versions in case they are required.
+%\begin{macro}{\glsxtrposthyphenlongpl}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrposthyphenlongpl}[2]{%
+ {%
+ \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \ifglsxtrinsertinside
+ {\glsfirstabbrvhyphenfont{\glsxtrgenentrytextfmt{#2}}}%
+ \else
+ {\glsxtrgenentrytextfmt{#2}}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen
+ {\glsxtrlongplformatgrp{#1}{#2}{\glsfirstlonghyphenfont}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrposthyphenlongpl}
+%\changes{1.49}{??}{new}
+%As above but all-caps.
+% \begin{macrocode}
+\newcommand*{\GLSxtrposthyphenlongpl}[2]{%
+ {%
+ \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}%
+ \ifglsxtrinsertinside
+ {\glsfirstabbrvhyphenfont{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}%
+ \else
+ {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}%
+ \fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen
+ {\GLSxtrlongplformatgrp{#1}{#2}{\glsfirstlonghyphenfont}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\xpglsxtrposthyphenlong}
+%\changes{1.49}{??}{new}
+%Expand placeholders and check for all caps.
+% \begin{macrocode}
+\newcommand*{\xpglsxtrposthyphenlong}{%
+ \glsxtrifallcaps
+ {%
+ \expandafter\GLSxtrposthyphenlong\expandafter\glslabel
+ \expandafter{\glsinsert}%
+ }%
+ {%
+ \expandafter\glsxtrposthyphenlong\expandafter\glslabel
+ \expandafter{\glsinsert}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{abbrvstyle}{short-hyphen-postlong-hyphen}
%\changes{1.17}{2017-08-09}{new}
%\changes{1.42}{2020-02-03}{added missing text key}
@@ -24536,23 +38887,24 @@ defined}{}%
% \begin{macrocode}
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrshortlongname},
- sort={\the\glsshorttok},
+ sort={\glsxtrshorthyphenlongsort},
first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},%
firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},%
text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},%
description={\protect\glslonghyphenfont{\the\glslongtok}}}%
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
\csdef{glsxtrpostlink\glscategorylabel}{%
\glsxtrifwasfirstuse
{%
- \glsxtrposthyphenlong{\glslabel}{\glsinsert}%
+ \xpglsxtrposthyphenlong
}%
{%
% \end{macrocode}
% Put the insertion into the post-link:
% \begin{macrocode}
- \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}%
+ \xpglsxtrposthyphensubsequent
}%
}%
\glshasattribute{\the\glslabeltok}{regular}%
@@ -24573,59 +38925,189 @@ defined}{}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
% \end{macrocode}
-% Subsequent use needs to omit the insertion:
+% Subsequent use needs to omit the insertion but it needs to perform
+% the space-hyphen substitution:
% \begin{macrocode}
\renewcommand*{\glsxtrsubsequentfmt}[2]{%
- \glsabbrvfont{\glsaccessshort{##1}}%
+ \glsxtrshorthyphennoinsert{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshort{##1}%
+ }%
+ {%
+ \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\glsxtrsubsequentplfmt}[2]{%
- \glsabbrvfont{\glsaccessshortpl{##1}}%
+ \glsxtrshorthyphennoinsert{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshortpl{##1}%
+ }%
+ {%
+ \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\Glsxtrsubsequentfmt}[2]{%
- \glsabbrvfont{\Glsaccessshort{##1}}%
+ \glsxtrshorthyphennoinsert{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \Glsaccessshort{##1}%
+ }%
+ {%
+ \Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
\renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
- \glsabbrvfont{\Glsaccessshortpl{##1}}%
+ \glsxtrshorthyphennoinsert{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \Glsaccessshortpl{##1}%
+ }%
+ {%
+ \Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentfmt}[2]{%
+ \glsxtrshorthyphennoinsert{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshort{##1}%
+ }%
+ {%
+ \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
+ }%
+ \renewcommand*{\GLSxtrsubsequentplfmt}[2]{%
+ \glsxtrshorthyphennoinsert{##1}%
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshortpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##2}%
}%
% \end{macrocode}
% First use full form:
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsxtrshorthyphen{\glsaccessshort{##1}}{##1}{##2}%
+ \glsxtrshorthyphen
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshort{##1}%
+ }%
+ {%
+ \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##1}{##2}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsxtrshorthyphen{\glsaccessshortpl{##1}}{##1}{##2}%
+ \glsxtrshorthyphen
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \glsaccessshortpl{##1}%
+ }%
+ {%
+ \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##1}{##2}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsxtrshorthyphen{\Glsaccessshort{##1}}{##1}{##2}%
+ \glsxtrshorthyphen
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \Glsaccessshort{##1}%
+ }%
+ {%
+ \Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##1}{##2}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsxtrshorthyphen{\Glsaccessshortpl{##1}}{##1}{##2}%
+ \glsxtrshorthyphen
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \Glsaccessshortpl{##1}%
+ }%
+ {%
+ \Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }{##1}{##2}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \glsxtrshorthyphen
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshort{##1}%
+ }%
+ {%
+ \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }%
+ {##1}{##2}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \glsxtrshorthyphen
+ {%
+ \glsifattribute{##1}{markshortwords}{true}%
+ {%
+ \GLSaccessshortpl{##1}%
+ }%
+ {%
+ \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}%
+ }%
+ }{##1}{##2}%
}%
% \end{macrocode}
% In-line format. Commands like \cs{glsxtrfull} set \cs{glsinsert}
% to empty. The entire link-text (provided by the following
-% commands) is stored in \cs{glscustomtext}.
+% commands) is stored in \cs{glscustomtext}. Note that unless the
+% insert is saved, it won't appear in the post-link hook.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvhyphenfont{\glsaccessshort{##1}%
- \ifglsxtrinsertinside{##2}\fi}%
- \ifglsxtrinsertinside \else{##2}\fi
+ \glsxtrshortformatgrp{##1}{##2}{\glsfirstabbrvhyphenfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvhyphenfont{\glsaccessshortpl{##1}%
- \ifglsxtrinsertinside{##2}\fi}%
- \ifglsxtrinsertinside \else{##2}\fi
+ \glsxtrshortplformatgrp{##1}{##2}{\glsfirstabbrvhyphenfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstabbrvhyphenfont{\Glsaccessshort{##1}%
- \ifglsxtrinsertinside{##2}\fi}%
- \ifglsxtrinsertinside \else{##2}\fi
+ \Glsxtrshortformatgrp{##1}{##2}{\glsfirstabbrvhyphenfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstabbrvhyphenfont{\Glsaccessshortpl{##1}%
- \ifglsxtrinsertinside{##2}\fi}%
- \ifglsxtrinsertinside \else{##2}\fi
+ \Glsxtrshortplformatgrp{##1}{##2}{\glsfirstabbrvhyphenfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrshortformatgrp{##1}{##2}{\glsfirstabbrvhyphenfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrshortplformatgrp{##1}{##2}{\glsfirstabbrvhyphenfont}%
}%
}
% \end{macrocode}
@@ -24657,13 +39139,13 @@ defined}{}%
\csdef{glsxtrpostlink\glscategorylabel}{%
\glsxtrifwasfirstuse
{%
- \glsxtrposthyphenlong{\glslabel}{\glsinsert}%
+ \xpglsxtrposthyphenlong
}%
{%
% \end{macrocode}
% Put the insertion into the post-link:
% \begin{macrocode}
- \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}%
+ \xpglsxtrposthyphensubsequent
}%
}%
\glshasattribute{\the\glslabeltok}{regular}%
@@ -24740,15 +39222,16 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtronlyname},
sort={\the\glsshorttok},
- first={\protect\glsfirstlongonlyfont{\the\glslongtok}},%
- firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},%
- text={\protect\glsabbrvonlyfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}},%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},%
description={\protect\glslongonlyfont{\the\glslongtok}}}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -24769,47 +39252,49 @@ defined}{}%
% The first use full form doesn't show the short form.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlongonlyfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlongonlyfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlongonlyfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlongonlyfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlongonlyfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlongonlyfont}%
}%
% \end{macrocode}
% The inline full form does show the short form.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongonlyfont}{\glsfirstabbrvonlyfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongonlyfont}{\glsfirstabbrvonlyfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongonlyfont}{\glsfirstabbrvonlyfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvonlyfont{\Glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongonlyfont}{\glsfirstabbrvonlyfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongonlyfont}{\glsfirstabbrvonlyfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongonlyfont}{\glsfirstabbrvonlyfont}%
}%
}
% \end{macrocode}
@@ -24846,10 +39331,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtronlydescname},
sort={\glsxtronlydescsort},%
- first={\protect\glsfirstlongonlyfont{\the\glslongtok}},%
- firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},%
- text={\protect\glsabbrvonlyfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}%
}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
@@ -24889,6 +39374,14 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrsconlyrevert}
+%\changes{1.49}{??}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrsconlyrevert}{\glsxtrscrevert}
+% \end{macrocode}
+%\end{macro}
+%
+%
%\begin{macro}{\glsxtrsconlyname}
%\changes{1.48}{2021-11-22}{new}
% The default name format for this style.
@@ -24914,8 +39407,8 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrsconlyname},
sort={\the\glsshorttok},
- first={\protect\glsfirstlongonlyfont{\the\glslongtok}},%
- firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},%
text={\protect\glsabbrvsconlyfont{\the\glsshorttok}},%
plural={\protect\glsabbrvsconlyfont{\the\glsshortpltok}},%
description={\protect\glslongonlyfont{\the\glslongtok}}}%
@@ -24923,6 +39416,7 @@ defined}{}%
% Unset the \catattr{regular} attribute if it has been set.
% \begin{macrocode}
\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}%
\glshasattribute{\the\glslabeltok}{regular}%
{%
\glssetattribute{\the\glslabeltok}{regular}{false}%
@@ -24936,51 +39430,54 @@ defined}{}%
\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvsconlyfont{##1}}%
\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongonlyfont{##1}}%
\renewcommand*{\glslongfont}[1]{\glslongonlyfont{##1}}%
+ \renewcommand*\glsxtrrevert[1]{\glsxtrsconlyrevert{##1}}%
% \end{macrocode}
% The first use full form doesn't show the short form.
% \begin{macrocode}
\renewcommand*{\glsxtrfullformat}[2]{%
- \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongformat{##1}{##2}{\glsfirstlongonlyfont}%
}%
\renewcommand*{\glsxtrfullplformat}[2]{%
- \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \glsxtrlongplformat{##1}{##2}{\glsfirstlongonlyfont}%
}%
\renewcommand*{\Glsxtrfullformat}[2]{%
- \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongformat{##1}{##2}{\glsfirstlongonlyfont}%
}%
\renewcommand*{\Glsxtrfullplformat}[2]{%
- \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
+ \Glsxtrlongplformat{##1}{##2}{\glsfirstlongonlyfont}%
+ }%
+ \renewcommand*{\GLSxtrfullformat}[2]{%
+ \GLSxtrlongformat{##1}{##2}{\glsfirstlongonlyfont}%
+ }%
+ \renewcommand*{\GLSxtrfullplformat}[2]{%
+ \GLSxtrlongplformat{##1}{##2}{\glsfirstlongonlyfont}%
}%
% \end{macrocode}
% The inline full form does show the short form.
% \begin{macrocode}
\renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshort{##1}}}%
+ \glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongonlyfont}{\glsfirstabbrvsconlyfont}%
}%
\renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshortpl{##1}}}%
+ \glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongonlyfont}{\glsfirstabbrvsconlyfont}%
}%
\renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongonlyfont}{\glsfirstabbrvsconlyfont}%
}%
\renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
- \ifglsxtrinsertinside\else##2\fi
- \glsxtrfullsep{##1}%
- \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\Glsaccessshortpl{##1}}}%
+ \Glsxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongonlyfont}{\glsfirstabbrvsconlyfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullformat}[2]{%
+ \GLSxtrlongshortformat{##1}{##2}%
+ {\glsfirstlongonlyfont}{\glsfirstabbrvsconlyfont}%
+ }%
+ \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
+ \GLSxtrlongshortplformat{##1}{##2}%
+ {\glsfirstlongonlyfont}{\glsfirstabbrvsconlyfont}%
}%
}
% \end{macrocode}
@@ -25015,10 +39512,10 @@ defined}{}%
\renewcommand*{\CustomAbbreviationFields}{%
name={\glsxtrsconlydescname},
sort={\glsxtrsconlydescsort},%
- first={\protect\glsfirstlongonlyfont{\the\glslongtok}},%
- firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},%
- text={\protect\glsabbrvsconlyfont{\the\glsshorttok}},%
- plural={\protect\glsabbrvsconlyfont{\the\glsshortpltok}}%
+ first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},%
+ firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},%
+ text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},%
+ plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}%
}%
% \end{macrocode}
% Unset the \catattr{regular} attribute if it has been set.
@@ -25037,5027 +39534,9 @@ defined}{}%
% \end{macrocode}
%\end{abbrvstyle}
%
-%\section{Using Entries in Headings}
-%
-% There are four main problems with using entries in sectioning
-% commands: they can mess with the first use flag if they end up in
-% the table of contents, they can add unwanted numbers to the
-% entry's location list, the label is corrupted if used inside
-% \ics{MakeUppercase} (which is used by the default headings style)
-% and they need to be expandable for PDF bookmarks. The
-% \styfmt{glossaries} package therefore recommends the use of the
-% expandable commands, such as \cs{glsentryshort}, instead but this
-% doesn't reflect the formatting since it doesn't include
-% \cs{glsabbrvfont}. The commands below are an attempt to get around
-% these problems.
-%
-% The PDF bookmark issue can easily be fixed with \sty{hyperref}'s
-% \cs{texorpdfstring} which can simply use the expandable command
-% in the PDF string case. The \TeX\ string case can now use
-% \cs{glsxtrshort} with the \gloskey[glslink]{noindex} key set, which
-% prevents the unwanted additions to the location list, and the
-% \gloskey[glslink]{hyper} key set to false, which prevents the problem of
-% nested links. This just leaves one thing left that needs to be
-% dealt with, and that's what to do if the heading style
-% uses \cs{MakeUppercase}.
-%
-% Note that \styfmt{glossaries} automatically loads \sty{textcase}, so
-% the label can be protected from case change with \sty{textcase}'s
-% \cs{NoCaseChange}. This means that we don't have a problem
-% provided the page style uses \cs{MakeTextUppercase}, but the
-% default heading page style uses \cs{MakeUppercase}.
-%
-% To get around this, save the original definition of \cs{markboth}
-% and \cs{markright} and adjust it so that \cs{MakeUppercase} is
-% temporarily redefined to \cs{MakeTextUppercase}. Some packages or
-% classes redefine these commands, so we can't just assume they
-% still have the original kernel definition.
-%
-%\begin{macro}{\markright}
-% Save original definition:
-% \begin{macrocode}
-\let\@glsxtr@org@markright\markright
-% \end{macrocode}
-% Redefine (grouping not added in case it interferes with the
-% original code):
-% \begin{macrocode}
-\renewcommand*{\markright}[1]{%
- \glsxtrmarkhook
- \@glsxtr@org@markright{\@glsxtrinmark#1\@glsxtrnotinmark}%
- \glsxtrrestoremarkhook
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\markboth}
-% Save original definition:
-% \begin{macrocode}
-\let\@glsxtr@org@markboth\markboth
-% \end{macrocode}
-% Redefine (grouping not added in case it interferes with the
-% original code):
-% \begin{macrocode}
-\renewcommand*{\markboth}[2]{%
- \glsxtrmarkhook
- \@glsxtr@org@markboth
- {\@glsxtrinmark#1\@glsxtrnotinmark}%
- {\@glsxtrinmark#2\@glsxtrnotinmark}%
- \glsxtrrestoremarkhook
-}
-% \end{macrocode}
-%\end{macro}
-%
-%Also do this for \cs{@starttoc}
-%\begin{macro}{\@starttoc}
-% Save original definition:
-% \begin{macrocode}
-\let\@glsxtr@org@@starttoc\@starttoc
-% \end{macrocode}
-% Redefine:
-% \begin{macrocode}
-\renewcommand*{\@starttoc}[1]{%
- \glsxtrmarkhook
- \@glsxtrinmark
- \@glsxtr@org@@starttoc{#1}%
- \@glsxtrnotinmark
- \glsxtrrestoremarkhook
-}
-% \end{macrocode}
-%\end{macro}
-%
-% If this causes a problem provide a simple way of switching back to
-% the original definitions:
-%\begin{macro}{\glsxtrRevertMarks}
-% \begin{macrocode}
-\newcommand*{\glsxtrRevertMarks}{%
- \let\markright\@glsxtr@org@markright
- \let\markboth\@glsxtr@org@markboth
- \let\@starttoc\@glsxtr@org@@starttoc
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrRevertTocMarks}
-%\changes{1.31}{2018-05-09}{new}
-%Just restores \cs{@starttoc}.
-% \begin{macrocode}
-\newcommand*{\glsxtrRevertTocMarks}{%
- \let\@starttoc\@glsxtr@org@@starttoc
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrifinmark}
-%\changes{1.07}{2016-08-15}{new}
-% \begin{macrocode}
-\newcommand*{\glsxtrifinmark}[2]{#2}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@glsxtrinmark}
-%\changes{1.07}{2016-08-15}{new}
-% \begin{macrocode}
-\newrobustcmd*{\@glsxtrinmark}{%
- \let\glsxtrifinmark\@firstoftwo
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@glsxtrnotinmark}
-%\changes{1.07}{2016-08-15}{new}
-% \begin{macrocode}
-\newrobustcmd*{\@glsxtrnotinmark}{%
- \let\glsxtrifinmark\@secondoftwo
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrtitleorpdforheading}
-%\changes{1.21}{2017-11-03}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsxtrtitleorpdforheading}[3]{\texorpdfstring{#1}{#2}}
-}
-{
- \newcommand*{\glsxtrtitleorpdforheading}[3]{#1}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrmarkhook}
-% Hook used in new definition of \cs{markboth} and \cs{markright}
-% to make some changes to apply to the marks:
-% \begin{macrocode}
-\newcommand*{\glsxtrmarkhook}{%
-% \end{macrocode}
-% Save current definitions:
-% \begin{macrocode}
- \let\@glsxtr@org@MakeUppercase\MakeUppercase
- \let\@glsxtr@org@glsxtrtitleorpdforheading\glsxtrtitleorpdforheading
- \let\@glsxtr@org@glsxtrtitleshort\glsxtrtitleshort
- \let\@glsxtr@org@glsxtrtitleshortpl\glsxtrtitleshortpl
- \let\@glsxtr@org@Glsxtrtitleshort\Glsxtrtitleshort
- \let\@glsxtr@org@Glsxtrtitleshortpl\Glsxtrtitleshortpl
- \let\@glsxtr@org@glsxtrtitlename\glsxtrtitlename
- \let\@glsxtr@org@Glsxtrtitlename\Glsxtrtitlename
- \let\@glsxtr@org@glsxtrtitletext\glsxtrtitletext
- \let\@glsxtr@org@Glsxtrtitletext\Glsxtrtitletext
- \let\@glsxtr@org@glsxtrtitleplural\glsxtrtitleplural
- \let\@glsxtr@org@Glsxtrtitleplural\Glsxtrtitleplural
- \let\@glsxtr@org@glsxtrtitlefirst\glsxtrtitlefirst
- \let\@glsxtr@org@Glsxtrtitlefirst\Glsxtrtitlefirst
- \let\@glsxtr@org@glsxtrtitlefirstplural\glsxtrtitlefirstplural
- \let\@glsxtr@org@Glsxtrtitlefirstplural\Glsxtrtitlefirstplural
- \let\@glsxtr@org@glsxtrtitlelong\glsxtrtitlelong
- \let\@glsxtr@org@glsxtrtitlelongpl\glsxtrtitlelongpl
- \let\@glsxtr@org@Glsxtrtitlelong\Glsxtrtitlelong
- \let\@glsxtr@org@Glsxtrtitlelongpl\Glsxtrtitlelongpl
- \let\@glsxtr@org@glsxtrtitlefull\glsxtrtitlefull
- \let\@glsxtr@org@glsxtrtitlefullpl\glsxtrtitlefullpl
- \let\@glsxtr@org@Glsxtrtitlefull\Glsxtrtitlefull
- \let\@glsxtr@org@Glsxtrtitlefullpl\Glsxtrtitlefullpl
-% \end{macrocode}
-% New definitions
-% \begin{macrocode}
- \let\glsxtrifinmark\@firstoftwo
- \let\MakeUppercase\MakeTextUppercase
- \let\glsxtrtitleorpdforheading\@thirdofthree
- \let\glsxtrtitleshort\glsxtrheadshort
- \let\glsxtrtitleshortpl\glsxtrheadshortpl
- \let\Glsxtrtitleshort\Glsxtrheadshort
- \let\Glsxtrtitleshortpl\Glsxtrheadshortpl
- \let\glsxtrtitlename\glsxtrheadname
- \let\Glsxtrtitlename\Glsxtrheadname
- \let\glsxtrtitletext\glsxtrheadtext
- \let\Glsxtrtitletext\Glsxtrheadtext
- \let\glsxtrtitleplural\glsxtrheadplural
- \let\Glsxtrtitleplural\Glsxtrheadplural
- \let\glsxtrtitlefirst\glsxtrheadfirst
- \let\Glsxtrtitlefirst\Glsxtrheadfirst
- \let\glsxtrtitlefirstplural\glsxtrheadfirstplural
- \let\Glsxtrtitlefirstplural\Glsxtrheadfirstplural
- \let\glsxtrtitlelong\glsxtrheadlong
- \let\glsxtrtitlelongpl\glsxtrheadlongpl
- \let\Glsxtrtitlelong\Glsxtrheadlong
- \let\Glsxtrtitlelongpl\Glsxtrheadlongpl
- \let\glsxtrtitlefull\glsxtrheadfull
- \let\glsxtrtitlefullpl\glsxtrheadfullpl
- \let\Glsxtrtitlefull\Glsxtrheadfull
- \let\Glsxtrtitlefullpl\Glsxtrheadfullpl
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrrestoremarkhook}
-% Hook used in new definition of \cs{markboth} and \cs{markright}
-% to restore the modified definitions. (This is in case the original
-% \cs{markboth} and \cs{markright} shouldn't be grouped for some
-% reason. There already is some grouping within those original
-% definitions, but some of the code lies outside that grouping, and
-% possibly there's a reason for it.)
-% \begin{macrocode}
-\newcommand*{\glsxtrrestoremarkhook}{%
- \let\glsxtrifinmark\@secondoftwo
- \let\MakeUppercase\@glsxtr@org@MakeUppercase
- \let\glsxtrtitleorpdforheading\@glsxtr@org@glsxtrtitleorpdforheading
- \let\glsxtrtitleshort\@glsxtr@org@glsxtrtitleshort
- \let\glsxtrtitleshortpl\@glsxtr@org@glsxtrtitleshortpl
- \let\Glsxtrtitleshort\@glsxtr@org@Glsxtrtitleshort
- \let\Glsxtrtitleshortpl\@glsxtr@org@Glsxtrtitleshortpl
- \let\glsxtrtitlename\@glsxtr@org@glsxtrtitlename
- \let\Glsxtrtitlename\@glsxtr@org@Glsxtrtitlename
- \let\glsxtrtitletext\@glsxtr@org@glsxtrtitletext
- \let\Glsxtrtitletext\@glsxtr@org@Glsxtrtitletext
- \let\glsxtrtitleplural\@glsxtr@org@glsxtrtitleplural
- \let\Glsxtrtitleplural\@glsxtr@org@Glsxtrtitleplural
- \let\glsxtrtitlefirst\@glsxtr@org@glsxtrtitlefirst
- \let\Glsxtrtitlefirst\@glsxtr@org@Glsxtrtitlefirst
- \let\glsxtrtitlefirstplural\@glsxtr@org@glsxtrtitlefirstplural
- \let\Glsxtrtitlefirstplural\@glsxtr@org@Glsxtrtitlefirstplural
- \let\glsxtrtitlelong\@glsxtr@org@glsxtrtitlelong
- \let\glsxtrtitlelongpl\@glsxtr@org@glsxtrtitlelongpl
- \let\Glsxtrtitlelong\@glsxtr@org@Glsxtrtitlelong
- \let\Glsxtrtitlelongpl\@glsxtr@org@Glsxtrtitlelongpl
- \let\glsxtrtitlefull\@glsxtr@org@glsxtrtitlefull
- \let\glsxtrtitlefullpl\@glsxtr@org@glsxtrtitlefullpl
- \let\Glsxtrtitlefull\@glsxtr@org@Glsxtrtitlefull
- \let\Glsxtrtitlefullpl\@glsxtr@org@Glsxtrtitlefullpl
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\changes{0.5.1}{2015-12-07}{removed \cs{ifglsxtruseuchead}}
-% Instead of using one document-wide conditional, use
-% \catattr{headuc} attribute to determine whether or not to use the
-% all upper case form.
-%
-%\begin{macro}{\glsxtrheadshort}
-% Command used to display short form in the page header.
-%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
-% \begin{macrocode}
-\newcommand*{\glsxtrheadshort}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSxtrshort[noindex,hyper=false]{#1}[]%
- }%
- {%
- \glsxtrshort[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrtitleshort}
-% Command to display short form of abbreviation in section title and
-% table of contents.
-% \begin{macrocode}
-\newrobustcmd*{\glsxtrtitleshort}[1]{%
- \glsxtrshort[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrheadshortpl}
-% Command used to display plural short form in the page header.
-% If you want the text converted to upper case, this needs to be
-% redefined to use \cs{GLSxtrshortpl} instead. If you are using a
-% smallcaps style, the default fonts don't provide italic smallcaps.
-%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
-% \begin{macrocode}
-\newcommand*{\glsxtrheadshortpl}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSxtrshortpl[noindex,hyper=false]{#1}[]%
- }%
- {%
- \glsxtrshortpl[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrtitleshortpl}
-% Command to display plural short form of abbreviation in section title and
-% table of contents.
-%\changes{1.03}{2016-04-27}{bug fix: changed \cs{glsxtrshort} to
-%\cs{glsxtrshortpl}}
-% \begin{macrocode}
-\newrobustcmd*{\glsxtrtitleshortpl}[1]{%
- \glsxtrshortpl[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrheadshort}
-% Command used to display short form in the page header with the
-% first letter converted to upper case.
-%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
-% \begin{macrocode}
-\newcommand*{\Glsxtrheadshort}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSxtrshort[noindex,hyper=false]{#1}[]%
- }%
- {%
- \Glsxtrshort[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrtitleshort}
-% Command to display short form of abbreviation in section title and
-% table of contents with the first letter converted to upper case.
-% \begin{macrocode}
-\newrobustcmd*{\Glsxtrtitleshort}[1]{%
- \Glsxtrshort[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSxtrtitleshort}
-%\changes{1.42}{2020-02-03}{new}
-% Command to display short form of abbreviation in section title and
-% table of contents in all upper case.
-% \begin{macrocode}
-\newrobustcmd*{\GLSxtrtitleshort}[1]{%
- \GLSxtrshort[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrheadshortpl}
-% Command used to display plural short form in the page header with the
-% first letter converted to upper case.
-%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
-% \begin{macrocode}
-\newcommand*{\Glsxtrheadshortpl}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSxtrshortpl[noindex,hyper=false]{#1}[]%
- }%
- {%
- \Glsxtrshortpl[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrtitleshortpl}
-% Command to display plural short form of abbreviation in section title and
-% table of contents with the first letter converted to upper case.
-% \begin{macrocode}
-\newrobustcmd*{\Glsxtrtitleshortpl}[1]{%
- \Glsxtrshortpl[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSxtrtitleshortpl}
-%\changes{1.42}{2020-02-03}{new}
-% Command to display plural short form of abbreviation in section title and
-% table of contents in all upper case.
-% \begin{macrocode}
-\newrobustcmd*{\GLSxtrtitleshortpl}[1]{%
- \GLSxtrshortpl[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrheadname}
-% As above but for the \gloskey{name} value.
-%\changes{1.21}{2017-11-03}{new}
-% \begin{macrocode}
-\newcommand*{\glsxtrheadname}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSname[noindex,hyper=false]{#1}[]%
- }%
- {%
- \glsname[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrtitlename}
-% Command to display \gloskey{name} value in section title and
-% table of contents.
-%\changes{1.21}{2017-11-03}{new}
-% \begin{macrocode}
-\newrobustcmd*{\glsxtrtitlename}[1]{%
- \glsname[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrheadname}
-% First letter converted to upper case
-%\changes{1.21}{2017-11-03}{new}
-% \begin{macrocode}
-\newcommand*{\Glsxtrheadname}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSname[noindex,hyper=false]{#1}[]%
- }%
- {%
- \Glsname[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrtitlename}
-% Command to display \gloskey{name} value in section title and
-% table of contents with the first letter changed to upper case.
-%\changes{1.21}{2017-11-03}{new}
-% \begin{macrocode}
-\newrobustcmd*{\Glsxtrtitlename}[1]{%
- \Glsname[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSxtrtitlename}
-% Command to display \gloskey{name} value in section title and
-% table of contents in all upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\newrobustcmd*{\GLSxtrtitlename}[1]{%
- \GLSname[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrheadtext}
-% As above but for the \gloskey{text} value.
-%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
-% \begin{macrocode}
-\newcommand*{\glsxtrheadtext}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLStext[noindex,hyper=false]{#1}[]%
- }%
- {%
- \glstext[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrtitletext}
-% Command to display \gloskey{text} value in section title and
-% table of contents.
-% \begin{macrocode}
-\newrobustcmd*{\glsxtrtitletext}[1]{%
- \glstext[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%
-%\begin{macro}{\Glsxtrheadtext}
-% First letter converted to upper case
-%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
-% \begin{macrocode}
-\newcommand*{\Glsxtrheadtext}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLStext[noindex,hyper=false]{#1}[]%
- }%
- {%
- \Glstext[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrtitletext}
-% Command to display \gloskey{text} value in section title and
-% table of contents with the first letter changed to upper case.
-% \begin{macrocode}
-\newrobustcmd*{\Glsxtrtitletext}[1]{%
- \Glstext[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSxtrtitletext}
-% Command to display \gloskey{text} value in section title and
-% table of contents in all upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\newrobustcmd*{\GLSxtrtitletext}[1]{%
- \GLStext[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrheadplural}
-% As above but for the \gloskey{plural} value.
-%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
-% \begin{macrocode}
-\newcommand*{\glsxtrheadplural}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSplural[noindex,hyper=false]{#1}[]%
- }%
- {%
- \glsplural[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrtitleplural}
-% Command to display \gloskey{plural} value in section title and
-% table of contents.
-% \begin{macrocode}
-\newrobustcmd*{\glsxtrtitleplural}[1]{%
- \glsplural[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrheadplural}
-% Convert first letter to upper case.
-%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
-% \begin{macrocode}
-\newcommand*{\Glsxtrheadplural}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSplural[noindex,hyper=false]{#1}[]%
- }%
- {%
- \Glsplural[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrtitleplural}
-% Command to display \gloskey{plural} value in section title and
-% table of contents with the first letter changed to upper case.
-% \begin{macrocode}
-\newrobustcmd*{\Glsxtrtitleplural}[1]{%
- \Glsplural[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSxtrtitleplural}
-%\changes{1.42}{2020-02-03}{new}
-% Command to display \gloskey{plural} value in section title and
-% table of contents in all upper case.
-% \begin{macrocode}
-\newrobustcmd*{\GLSxtrtitleplural}[1]{%
- \GLSplural[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrheadfirst}
-% As above but for the \gloskey{first} value.
-%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
-% \begin{macrocode}
-\newcommand*{\glsxtrheadfirst}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSfirst[noindex,hyper=false]{#1}[]%
- }%
- {%
- \glsfirst[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrtitlefirst}
-% Command to display \gloskey{first} value in section title and
-% table of contents.
-% \begin{macrocode}
-\newrobustcmd*{\glsxtrtitlefirst}[1]{%
- \glsfirst[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrheadfirst}
-% First letter converted to upper case
-%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
-% \begin{macrocode}
-\newcommand*{\Glsxtrheadfirst}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSfirst[noindex,hyper=false]{#1}[]%
- }%
- {%
- \Glsfirst[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrtitlefirst}
-% Command to display \gloskey{first} value in section title and
-% table of contents with the first letter changed to upper case.
-% \begin{macrocode}
-\newrobustcmd*{\Glsxtrtitlefirst}[1]{%
- \Glsfirst[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSxtrtitlefirst}
-%\changes{1.42}{2020-02-03}{new}
-% Command to display \gloskey{first} value in section title and
-% table of contents in all upper case.
-% \begin{macrocode}
-\newrobustcmd*{\GLSxtrtitlefirst}[1]{%
- \GLSfirst[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrheadfirstplural}
-% As above but for the \gloskey{firstplural} value.
-%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
-% \begin{macrocode}
-\newcommand*{\glsxtrheadfirstplural}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSfirstplural[noindex,hyper=false]{#1}[]%
- }%
- {%
- \glsfirstplural[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrtitlefirstplural}
-% Command to display \gloskey{firstplural} value in section title and
-% table of contents.
-% \begin{macrocode}
-\newrobustcmd*{\glsxtrtitlefirstplural}[1]{%
- \glsfirstplural[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrheadfirstplural}
-% First letter converted to upper case
-%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
-% \begin{macrocode}
-\newcommand*{\Glsxtrheadfirstplural}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSfirstplural[noindex,hyper=false]{#1}[]%
- }%
- {%
- \Glsfirstplural[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrtitlefirstplural}
-% Command to display \gloskey{first} value in section title and
-% table of contents with the first letter changed to upper case.
-% \begin{macrocode}
-\newrobustcmd*{\Glsxtrtitlefirstplural}[1]{%
- \Glsfirstplural[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSxtrtitlefirstplural}
-%\changes{1.42}{2020-02-03}{new}
-% Command to display \gloskey{first} value in section title and
-% table of contents in all upper case.
-% \begin{macrocode}
-\newrobustcmd*{\GLSxtrtitlefirstplural}[1]{%
- \GLSfirstplural[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrheadlong}
-% Command used to display long form in the page header.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newcommand*{\glsxtrheadlong}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSxtrlong[noindex,hyper=false]{#1}[]%
- }%
- {%
- \glsxtrlong[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrtitlelong}
-% Command to display long form of abbreviation in section title and
-% table of contents.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newrobustcmd*{\glsxtrtitlelong}[1]{%
- \glsxtrlong[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrheadlongpl}
-% Command used to display plural long form in the page header.
-% If you want the text converted to upper case, this needs to be
-% redefined to use \cs{GLSxtrlongpl} instead. If you are using a
-% smallcaps style, the default fonts don't provide italic smallcaps.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newcommand*{\glsxtrheadlongpl}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSxtrlongpl[noindex,hyper=false]{#1}[]%
- }%
- {%
- \glsxtrlongpl[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrtitlelongpl}
-% Command to display plural long form of abbreviation in section title and
-% table of contents.
-%\changes{1.02}{2016-04-25}{new}
-%\changes{1.03}{2016-04-27}{bug fix: changed \cs{glsxtrlong} to
-%\cs{glsxtrlongpl}}
-% \begin{macrocode}
-\newrobustcmd*{\glsxtrtitlelongpl}[1]{%
- \glsxtrlongpl[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrheadlong}
-% Command used to display long form in the page header with the
-% first letter converted to upper case.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newcommand*{\Glsxtrheadlong}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSxtrlong[noindex,hyper=false]{#1}[]%
- }%
- {%
- \Glsxtrlong[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrtitlelong}
-% Command to display long form of abbreviation in section title and
-% table of contents with the first letter converted to upper case.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newrobustcmd*{\Glsxtrtitlelong}[1]{%
- \Glsxtrlong[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSxtrtitlelong}
-% Command to display long form of abbreviation in section title and
-% table of contents in all upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\newrobustcmd*{\GLSxtrtitlelong}[1]{%
- \GLSxtrlong[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrheadlongpl}
-% Command used to display plural long form in the page header with the
-% first letter converted to upper case.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newcommand*{\Glsxtrheadlongpl}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSxtrlongpl[noindex,hyper=false]{#1}[]%
- }%
- {%
- \Glsxtrlongpl[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrtitlelongpl}
-% Command to display plural long form of abbreviation in section title and
-% table of contents with the first letter converted to upper case.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newrobustcmd*{\Glsxtrtitlelongpl}[1]{%
- \Glsxtrlongpl[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSxtrtitlelongpl}
-% Command to display plural long form of abbreviation in section title and
-% table of contents in all upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\newrobustcmd*{\GLSxtrtitlelongpl}[1]{%
- \GLSxtrlongpl[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrheadfull}
-% Command used to display full form in the page header.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newcommand*{\glsxtrheadfull}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSxtrfull[noindex,hyper=false]{#1}[]%
- }%
- {%
- \glsxtrfull[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrtitlefull}
-% Command to display full form of abbreviation in section title and
-% table of contents.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newrobustcmd*{\glsxtrtitlefull}[1]{%
- \glsxtrfull[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrheadfullpl}
-% Command used to display plural full form in the page header.
-% If you want the text converted to upper case, this needs to be
-% redefined to use \cs{GLSxtrfullpl} instead. If you are using a
-% smallcaps style, the default fonts don't provide italic smallcaps.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newcommand*{\glsxtrheadfullpl}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSxtrfullpl[noindex,hyper=false]{#1}[]%
- }%
- {%
- \glsxtrfullpl[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrtitlefullpl}
-% Command to display plural full form of abbreviation in section title and
-% table of contents.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newrobustcmd*{\glsxtrtitlefullpl}[1]{%
- \glsxtrfullpl[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrheadfull}
-% Command used to display full form in the page header with the
-% first letter converted to upper case.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newcommand*{\Glsxtrheadfull}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSxtrfull[noindex,hyper=false]{#1}[]%
- }%
- {%
- \Glsxtrfull[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrtitlefull}
-% Command to display full form of abbreviation in section title and
-% table of contents with the first letter converted to upper case.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newrobustcmd*{\Glsxtrtitlefull}[1]{%
- \Glsxtrfull[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSxtrtitlefull}
-% Command to display full form of abbreviation in section title and
-% table of contents in all upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\newrobustcmd*{\GLSxtrtitlefull}[1]{%
- \GLSxtrfull[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrheadfullpl}
-% Command used to display plural full form in the page header with the
-% first letter converted to upper case.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newcommand*{\Glsxtrheadfullpl}[1]{%
- \protect\NoCaseChange
- {%
- \glsifattribute{#1}{headuc}{true}%
- {%
- \GLSxtrfullpl[noindex,hyper=false]{#1}[]%
- }%
- {%
- \Glsxtrfullpl[noindex,hyper=false]{#1}[]%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsxtrtitlefullpl}
-% Command to display plural full form of abbreviation in section title and
-% table of contents with the first letter converted to upper case.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\newrobustcmd*{\Glsxtrtitlefullpl}[1]{%
- \Glsxtrfullpl[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSxtrtitlefullpl}
-% Command to display plural full form of abbreviation in section title and
-% table of contents in all upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\newrobustcmd*{\GLSxtrtitlefullpl}[1]{%
- \GLSxtrfullpl[noindex,hyper=false]{#1}[]%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsfmtshort}
-% Provide a way of using the formatted short form in section
-% headings. If \sty{hyperref} has been loaded, use
-% \cs{texorpdfstring} for convenience in PDF bookmarks.
-%\changes{0.2}{2015-11-30}{new}
-%\changes{0.4}{2015-12-03}{changed to use \cs{glsxtrshort}}
-%\changes{0.5}{2015-12-07}{changed to use \cs{glsxtrtitleshort}}
-%\changes{0.5}{2015-12-07}{renamed from \cs{glsentryfmtshort}}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsfmtshort}[1]{%
- \texorpdfstring
- {\glsxtrtitleshort{#1}}%
- {\glsentryshort{#1}}%
- }
-}
-{
- \newcommand*{\glsfmtshort}[1]{%
- \glsxtrtitleshort{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%Similarly for the plural version.
-%\begin{macro}{\glsfmtshortpl}
-%\changes{0.2}{2015-11-30}{new}
-%\changes{0.4}{2015-12-03}{changed to use \cs{glsxtrshortpl}}
-%\changes{0.5}{2015-12-07}{changed to use \cs{glsxtrtitleshortpl}}
-%\changes{0.5}{2015-12-07}{renamed from \cs{glsentryfmtshortpl}}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsfmtshortpl}[1]{%
- \texorpdfstring
- {\glsxtrtitleshortpl{#1}}%
- {\glsentryshortpl{#1}}%
- }
-}
-{
- \newcommand*{\glsfmtshortpl}[1]{%
- \glsxtrtitleshortpl{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-% The case-changing version isn't suitable for PDF bookmarks, so the
-% PDF alternative uses the non-case-changing version.
-%\begin{macro}{\Glsfmtshort}
-% Singular form (first letter uppercase).
-%\changes{0.2}{2015-11-30}{new}
-%\changes{0.4}{2015-12-03}{changed to use \cs{Glsxtrshort}}
-%\changes{0.5}{2015-12-07}{changed to use \cs{Glsxtrtitleshort}}
-%\changes{0.5}{2015-12-07}{renamed from \cs{Glsentryfmtshort}}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\Glsfmtshort}[1]{%
- \texorpdfstring
- {\Glsxtrtitleshort{#1}}%
- {\glsentryshort{#1}}%
- }
-}
-{
- \newcommand*{\Glsfmtshort}[1]{%
- \Glsxtrtitleshort{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\Glsfmtshortpl}
-%Plural form (first letter uppercase).
-%\changes{0.2}{2015-11-30}{new}
-%\changes{0.4}{2015-12-03}{changed to use \cs{glsxtrshortpl}}
-%\changes{0.5}{2015-12-07}{changed to use \cs{Glsxtrtitleshortpl}}
-%\changes{0.5}{2015-12-07}{renamed from \cs{Glsentryfmtshortpl}}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\Glsfmtshortpl}[1]{%
- \texorpdfstring
- {\Glsxtrtitleshortpl{#1}}%
- {\glsentryshortpl{#1}}%
- }
-}
-{
- \newcommand*{\Glsfmtshortpl}[1]{%
- \Glsxtrtitleshortpl{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsfmtname}
-%As above but for the \gloskey{name} value.
-%\changes{1.21}{2017-11-03}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsfmtname}[1]{%
- \texorpdfstring
- {\glsxtrtitlename{#1}}%
- {\glsentryname{#1}}%
- }
-}
-{
- \newcommand*{\glsfmtname}[1]{%
- \glsxtrtitlename{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsfmtname}
-%First letter converted to upper case.
-%\changes{1.21}{2017-11-03}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\Glsfmtname}[1]{%
- \texorpdfstring
- {\Glsxtrtitlename{#1}}%
- {\glsentryname{#1}}%
- }
-}
-{
- \newcommand*{\Glsfmtname}[1]{%
- \Glsxtrtitlename{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSfmtname}
-%All upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\GLSfmtname}[1]{%
- \texorpdfstring
- {\GLSxtrtitlename{#1}}%
- {\glsentryname{#1}}%
- }
-}
-{
- \newcommand*{\GLSfmtname}[1]{%
- \GLSxtrtitlename{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%
-%\begin{macro}{\glsfmttext}
-%As above but for the \gloskey{text} value.
-%\changes{0.5}{2015-12-07}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsfmttext}[1]{%
- \texorpdfstring
- {\glsxtrtitletext{#1}}%
- {\glsentrytext{#1}}%
- }
-}
-{
- \newcommand*{\glsfmttext}[1]{%
- \glsxtrtitletext{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsfmttext}
-%First letter converted to upper case.
-%\changes{0.5}{2015-12-07}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\Glsfmttext}[1]{%
- \texorpdfstring
- {\Glsxtrtitletext{#1}}%
- {\glsentrytext{#1}}%
- }
-}
-{
- \newcommand*{\Glsfmttext}[1]{%
- \Glsxtrtitletext{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSfmttext}
-%All upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\GLSfmttext}[1]{%
- \texorpdfstring
- {\GLSxtrtitletext{#1}}%
- {\glsentrytext{#1}}%
- }
-}
-{
- \newcommand*{\GLSfmttext}[1]{%
- \GLSxtrtitletext{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsfmtplural}
-%As above but for the \gloskey{plural} value.
-%\changes{0.5}{2015-12-07}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsfmtplural}[1]{%
- \texorpdfstring
- {\glsxtrtitleplural{#1}}%
- {\glsentryplural{#1}}%
- }
-}
-{
- \newcommand*{\glsfmtplural}[1]{%
- \glsxtrtitleplural{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsfmtplural}
-%First letter converted to upper case.
-%\changes{0.5}{2015-12-07}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\Glsfmtplural}[1]{%
- \texorpdfstring
- {\Glsxtrtitleplural{#1}}%
- {\glsentryplural{#1}}%
- }
-}
-{
- \newcommand*{\Glsfmtplural}[1]{%
- \Glsxtrtitleplural{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSfmtplural}
-%All upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\GLSfmtplural}[1]{%
- \texorpdfstring
- {\GLSxtrtitleplural{#1}}%
- {\glsentryplural{#1}}%
- }
-}
-{
- \newcommand*{\GLSfmtplural}[1]{%
- \GLSxtrtitleplural{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsfmtfirst}
-%As above but for the \gloskey{first} value.
-%\changes{0.5}{2015-12-07}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsfmtfirst}[1]{%
- \texorpdfstring
- {\glsxtrtitlefirst{#1}}%
- {\glsentryfirst{#1}}%
- }
-}
-{
- \newcommand*{\glsfmtfirst}[1]{%
- \glsxtrtitlefirst{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsfmtfirst}
-%First letter converted to upper case.
-%\changes{0.5}{2015-12-07}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\Glsfmtfirst}[1]{%
- \texorpdfstring
- {\Glsxtrtitlefirst{#1}}%
- {\glsentryfirst{#1}}%
- }
-}
-{
- \newcommand*{\Glsfmtfirst}[1]{%
- \Glsxtrtitlefirst{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSfmtfirst}
-%All upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\GLSfmtfirst}[1]{%
- \texorpdfstring
- {\GLSxtrtitlefirst{#1}}%
- {\glsentryfirst{#1}}%
- }
-}
-{
- \newcommand*{\GLSfmtfirst}[1]{%
- \Glsxtrtitlefirst{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsfmtfirstpl}
-%As above but for the \gloskey{firstplural} value.
-%\changes{0.5}{2015-12-07}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsfmtfirstpl}[1]{%
- \texorpdfstring
- {\glsxtrtitlefirstplural{#1}}%
- {\glsentryfirstplural{#1}}%
- }
-}
-{
- \newcommand*{\glsfmtfirstpl}[1]{%
- \glsxtrtitlefirstplural{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsfmtfirstpl}
-%First letter converted to upper case.
-%\changes{0.5}{2015-12-07}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\Glsfmtfirstpl}[1]{%
- \texorpdfstring
- {\Glsxtrtitlefirstplural{#1}}%
- {\glsentryfirstplural{#1}}%
- }
-}
-{
- \newcommand*{\Glsfmtfirstpl}[1]{%
- \Glsxtrtitlefirstplural{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSfmtfirstpl}
-%All upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\GLSfmtfirstpl}[1]{%
- \texorpdfstring
- {\GLSxtrtitlefirstplural{#1}}%
- {\glsentryfirstplural{#1}}%
- }
-}
-{
- \newcommand*{\GLSfmtfirstpl}[1]{%
- \GLSxtrtitlefirstplural{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsfmtlong}
-%As above but for the \gloskey{long} value.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsfmtlong}[1]{%
- \texorpdfstring
- {\glsxtrtitlelong{#1}}%
- {\glsentrylong{#1}}%
- }
-}
-{
- \newcommand*{\glsfmtlong}[1]{%
- \glsxtrtitlelong{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsfmtlong}
-%First letter converted to upper case.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\Glsfmtlong}[1]{%
- \texorpdfstring
- {\Glsxtrtitlelong{#1}}%
- {\glsentrylong{#1}}%
- }
-}
-{
- \newcommand*{\Glsfmtlong}[1]{%
- \Glsxtrtitlelong{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSfmtlong}
-%All upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\GLSfmtlong}[1]{%
- \texorpdfstring
- {\GLSxtrtitlelong{#1}}%
- {\glsentrylong{#1}}%
- }
-}
-{
- \newcommand*{\GLSfmtlong}[1]{%
- \GLSxtrtitlelong{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsfmtlongpl}
-%As above but for the \gloskey{longplural} value.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsfmtlongpl}[1]{%
- \texorpdfstring
- {\glsxtrtitlelongpl{#1}}%
- {\glsentrylongpl{#1}}%
- }
-}
-{
- \newcommand*{\glsfmtlongpl}[1]{%
- \glsxtrtitlelongpl{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsfmtlongpl}
-%First letter converted to upper case.
-%\changes{1.02}{2016-04-25}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\Glsfmtlongpl}[1]{%
- \texorpdfstring
- {\Glsxtrtitlelongpl{#1}}%
- {\glsentrylongpl{#1}}%
- }
-}
-{
- \newcommand*{\Glsfmtlongpl}[1]{%
- \Glsxtrtitlelongpl{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSfmtlongpl}
-%All upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\GLSfmtlongpl}[1]{%
- \texorpdfstring
- {\GLSxtrtitlelongpl{#1}}%
- {\glsentrylongpl{#1}}%
- }
-}
-{
- \newcommand*{\GLSfmtlongpl}[1]{%
- \GLSxtrtitlelongpl{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glspdffmtfull}
-%\changes{1.42}{2020-02-03}{new}
-%Can't use \cs{glsxtrinlinefullformat} in PDF bookmarks as it's not
-%fully expandable. This command is for the PDF part of
-%\cs{texorpdfstring} for the full form.
-% \begin{macrocode}
-\newcommand*{\glspdffmtfull}[1]{\glsentrylong{#1} (\glsentryshort{#1})}%
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\glspdffmtfullpl}
-%\changes{1.42}{2020-02-03}{new}
-%Likewise for plural.
-% \begin{macrocode}
-\newcommand*{\glspdffmtfullpl}[1]{\glsentrylongpl{#1} (\glsentryshortpl{#1})}%
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\glsfmtfull}
-%In-line full format.
-%\changes{1.02}{2016-04-25}{new}
-%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfull}}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsfmtfull}[1]{%
- \texorpdfstring
- {\glsxtrtitlefull{#1}}%
- {\glspdffmtfull{#1}}%
- }
-}
-{
- \newcommand*{\glsfmtfull}[1]{%
- \glsxtrtitlefull{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsfmtfull}
-%First letter converted to upper case.
-%\changes{1.02}{2016-04-25}{new}
-%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfull}}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\Glsfmtfull}[1]{%
- \texorpdfstring
- {\Glsxtrtitlefull{#1}}%
- {\glspdffmtfull{#1}{}}%
- }
-}
-{
- \newcommand*{\Glsfmtfull}[1]{%
- \Glsxtrtitlefull{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSfmtfull}
-%All upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\GLSfmtfull}[1]{%
- \texorpdfstring
- {\GLSxtrtitlefull{#1}}%
- {\glspdffmtfull{#1}}%
- }
-}
-{
- \newcommand*{\GLSfmtfull}[1]{%
- \GLSxtrtitlefull{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsfmtfullpl}
-%In-line full plural format.
-%\changes{1.02}{2016-04-25}{new}
-%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfullpl}}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsfmtfullpl}[1]{%
- \texorpdfstring
- {\glsxtrtitlefullpl{#1}}%
- {\glspdffmtfullpl{#1}}%
- }
-}
-{
- \newcommand*{\glsfmtfullpl}[1]{%
- \glsxtrtitlefullpl{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Glsfmtfullpl}
-%First letter converted to upper case.
-%\changes{1.02}{2016-04-25}{new}
-%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfullpl}}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\Glsfmtfullpl}[1]{%
- \texorpdfstring
- {\Glsxtrtitlefullpl{#1}}%
- {\glspdffmtfullpl{#1}{}}%
- }
-}
-{
- \newcommand*{\Glsfmtfullpl}[1]{%
- \Glsxtrtitlefullpl{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GLSfmtfullpl}
-%All upper case.
-%\changes{1.42}{2020-02-03}{new}
-% \begin{macrocode}
-\ifdef\texorpdfstring
-{
- \newcommand*{\GLSfmtfullpl}[1]{%
- \texorpdfstring
- {\GLSxtrtitlefullpl{#1}}%
- {\glspdffmtfullpl{#1}{}}%
- }
-}
-{
- \newcommand*{\GLSfmtfullpl}[1]{%
- \GLSxtrtitlefullpl{#1}}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\section{Multi (Combined/Compound) Entries}
-%(I'd rather call these combined or compound entries but \cs{cgls} is
-%already taken.)
-%
-%New to version 1.48, the commands here provide a way of referencing
-%multiple entries as a single unit. For example, biological
-%organisms are often referred to by their genus and species, such as
-%\emph{Clostridium botulinum} and \emph{Clostridium perfringens}
-%(where the genus is Clostridium). The genus is often abbreviated
-%after first use, regardless of which species in the genus is being
-%referenced. For example, \qt{\emph{Clostridium botulinum} and
-%\emph{C. perfringens}}. This can't be supported by any abbreviation
-%styles unless the genus and species names are defined separately.
-%For example:
-%\begin{verbatim}
-%\setabbreviationstyle{long-only-short-only}
-%\newabbreviation{clostridium}{C.}{Clostridium}
-%\newglossaryentry{botulinum}{name={botulinum},description={}}
-%\newglossaryentry{perfringens}{name={perfringens},description={}}
-%\end{verbatim}
-%This means that the entries then need to be referenced using a
-%rather cumbersome method:
-%\begin{verbatim}
-%\gls{clostridium} \gls{botulinum} and \gls{clostridum}
-%\gls{perfringens}
-%\end{verbatim}
-%This section provides a command that will provide a way of defining
-%a label that represents a combination of entries (which must all be
-%first defined). For example:
-%\begin{verbatim}
-%\multiglossaryentry{cbot}{clostridium,botulinum}
-%\end{verbatim}
-%This label can then be referenced using \cs{mgls}, which internally
-%uses \cs{gls} for each component. The last component in the list is
-%considered the \qt{main} component (not to be confused with the
-%main glossary). If this isn't the case, the label of the main
-%component should be added in the optional argument before the label
-%list. Note that the multi-label (\texttt{cbot} in this case) can't be
-%referenced using commands like \cs{gls}.
-%
-%First define the general set of options that should be applied to
-%all multi-entries. These can be set with:
-%\begin{macro}{\multiglossaryentrysetup}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\multiglossaryentrysetup}[1]{\setkeys{glsxtrcombined}{#1}}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\@gls@combined@indexmain}
-%\changes{1.48}{2021-11-22}{new}
-%Numeric value: 0=false (don't index main component), 1=true (always
-%index main component), 2=first (only index main component on first
-%use). Default: 1 (true);
-% \begin{macrocode}
-\newcommand*{\@gls@combined@indexmain}{1}
-\define@choicekey{glsxtrcombined}{indexmain}%
- [\@gls@combined@indexmain@val\@gls@combined@indexmain]
- {false,true,first}[true]{}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\@gls@combined@indexothers}
-%\changes{1.48}{2021-11-22}{new}
-%Numeric value: 0=false (don't index other components), 1=true (always
-%index other components), 2=first (only index other components on first
-%use). Default: 2 (first);
-% \begin{macrocode}
-\newcommand*{\@gls@combined@indexothers}{2}
-\define@choicekey{glsxtrcombined}{indexothers}%
- [\@gls@combined@indexothers@val\@gls@combined@indexothers]
- {false,true,first}[true]{}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\@gls@combined@hyper}
-%\changes{1.48}{2021-11-22}{new}
-%Numeric value: 0=none (\cs{mgls} doesn't create a hyperlink),
-% 1=allmain (all content hyperlinks to the main component),
-% 2=mainonly (only the main component has a hyperlink),
-% 3=individual (each component has a hyperlink to their own target).
-% Default: 3.
-% \begin{macrocode}
-\newcommand*{\@gls@combined@hyper}{3}
-\define@choicekey{glsxtrcombined}{hyper}%
- [\@gls@combined@hyper@val\@gls@combined@hyper]
- {none,allmain,mainonly,individual,otheronly,notmainfirst,nototherfirst,notfirst}{}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@encapmain}
-%\changes{1.48}{2021-11-22}{new}
-%Location encap value for main component (corresponding to format key in \cs{gls}).
-% \begin{macrocode}
-\newcommand*{\@gls@combined@encapmain}{glsnumberformat}
-\define@key{glsxtrcombined}{encapmain}{%
- \renewcommand*{\@gls@combined@encapmain}{#1}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@encapothers}
-%\changes{1.48}{2021-11-22}{new}
-%Location encap value for other components (corresponding to format key in \cs{gls}).
-% \begin{macrocode}
-\newcommand*{\@gls@combined@encapothers}{glsnumberformat}
-\define@key{glsxtrcombined}{encapothers}{%
- \renewcommand*{\@gls@combined@encapothers}{#1}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@textformat}
-%\changes{1.48}{2021-11-22}{new}
-%Encapsulate entire content with the command identified by the given
-%control sequence name.
-% \begin{macrocode}
-\newcommand*{\@gls@combined@textformat}{@firstofone}
-\define@key{glsxtrcombined}{textformat}{%
- \renewcommand*{\@gls@combined@textformat}{#1}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@category}
-%\changes{1.48}{2021-11-22}{new}
-%Assign a category to the combined set.
-% \begin{macrocode}
-\newcommand*{\@gls@combined@category}{}
-\define@key{glsxtrcombined}{category}{%
- \renewcommand*{\@gls@combined@category}{#1}%
-}
-% \end{macrocode}
-%Pre-options family:
-% \begin{macrocode}
-\define@key{glsxtrcombinedpreopts}{category}{%
- \renewcommand*{\@gls@combined@category}{#1}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@mglsopts}
-%\changes{1.48}{2021-11-22}{new}
-%Default options to pass to \cs{mgls}.
-% \begin{macrocode}
-\newcommand*{\@gls@combined@mglsopts}{}
-\define@key{glsxtrcombined}{mglsopts}{%
- \renewcommand*{\@gls@combined@mglsopts}{#1}%
-}
-\define@key{glsxtrcombinedpreopts}{mglsopts}{%
- \@gls@combined@mglsopts@do
- {%
- \renewcommand*{\@gls@combined@mglsopts}{#1}%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@mglsopts@do}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@gls@combined@mglsopts@do}[1]{#1}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mgls@disable@mglsopts}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mgls@disable@mglsopts}{%
- \let\@gls@combined@mglsopts@do\@gls@combined@mglsopts@do@not
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mgls@enable@mglsopts}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mgls@enable@mglsopts}{%
- \let\@gls@combined@mglsopts@do\@firstofone
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@mglsopts@do}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@gls@combined@mglsopts@do@not}[1]{%
- \PackageError{glossaries-extra}{`mglsopts' key not permitted inside
- `setup' value}{}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@firstprefix}
-%\changes{1.48}{2021-11-22}{new}
-%Prefix for multi-entry first use.
-% \begin{macrocode}
-\newcommand*{\@gls@combined@firstprefix}{}
-\define@key{glsxtrcombined}{firstprefix}{%
- \renewcommand*{\@gls@combined@firstprefix}{#1}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@usedprefix}
-%\changes{1.48}{2021-11-22}{new}
-%Prefix for multi-entry subsequent first use.
-% \begin{macrocode}
-\newcommand*{\@gls@combined@usedprefix}{}
-\define@key{glsxtrcombined}{usedprefix}{%
- \renewcommand*{\@gls@combined@usedprefix}{#1}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@firstsuffix}
-%\changes{1.48}{2021-11-22}{new}
-%Suffix for multi-entry first use.
-% \begin{macrocode}
-\newcommand*{\@gls@combined@firstsuffix}{}
-\define@key{glsxtrcombined}{firstsuffix}{%
- \renewcommand*{\@gls@combined@firstsuffix}{#1}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@usedsuffix}
-%\changes{1.48}{2021-11-22}{new}
-%Suffix for multi-entry subsequent first use.
-% \begin{macrocode}
-\newcommand*{\@gls@combined@usedsuffix}{}
-\define@key{glsxtrcombined}{usedsuffix}{%
- \renewcommand*{\@gls@combined@usedsuffix}{#1}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@firstskipmain}
-%\changes{1.48}{2021-11-22}{new}
-%Skip the main element on first use (multi-entry first use not
-%element first use).
-% \begin{macrocode}
-\define@boolkey{glsxtrcombined}{firstskipmain}[true]{}
-\KV@glsxtrcombined@firstskipmainfalse
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@firstskipothers}
-%\changes{1.48}{2021-11-22}{new}
-%Skip the other elements on first use (multi-entry first use not
-%element first use).
-% \begin{macrocode}
-\define@boolkey{glsxtrcombined}{firstskipothers}[true]{}
-\KV@glsxtrcombined@firstskipothersfalse
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@usedskipmain}
-%\changes{1.48}{2021-11-22}{new}
-%Skip the main element on subsequent use (multi-entry subsequent use not
-%element subsequent use).
-% \begin{macrocode}
-\define@boolkey{glsxtrcombined}{usedskipmain}[true]{}
-\KV@glsxtrcombined@usedskipmainfalse
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@usedskipothers}
-%\changes{1.48}{2021-11-22}{new}
-%Skip the other elements on subsequent use (multi-entry subsequent use not
-%element subsequent use).
-% \begin{macrocode}
-\define@boolkey{glsxtrcombined}{usedskipothers}[true]{}
-\KV@glsxtrcombined@usedskipothersfalse
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@postlinks}
-%\changes{1.48}{2021-11-22}{new}
-%Determine whether or not to use the individual element post-link hooks.
-% \begin{macrocode}
-\newcommand*{\@gls@combined@postlinks@nr}{0}
-\define@choicekey{glsxtrcombined}{postlinks}%
- [\@gls@combined@postlinks@val\@gls@combined@postlinks@nr]
- {none,all,notlast,mainnotlast,mainonly,othernotlast,otheronly}{}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@mpostlink}
-%\changes{1.48}{2021-11-22}{new}
-%Determine whether or not to use the multi-entry post-link hook.
-% \begin{macrocode}
-\newcommand*{\@gls@combined@mpostlink@nr}{1}
-\define@choicekey{glsxtrcombined}{mpostlink}%
- [\@gls@combined@mpostlink@val\@gls@combined@mpostlink@nr]
- {false,true,firstonly,usedonly}[true]{}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@gls@combined@mpostlinkelement}
-%\changes{1.48}{2021-11-22}{new}
-%Determine which element to use for the post-link hook.
-% \begin{macrocode}
-\newcommand*{\@gls@combined@mpostlinkelement@nr}{0}
-\define@choicekey{glsxtrcombined}{mpostlinkelement}%
- [\@gls@combined@mpostlinkelement@val\@gls@combined@mpostlinkelement@nr]
- {last,main,custom}{}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrifmulti}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\glsxtrifmulti}[3]{\ifcsdef{@gls@combined@#1@main}{#2}{#3}}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrmultimain}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\glsxtrmultimain}[1]{\csuse{@gls@combined@#1@main}}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrmultilist}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\glsxtrmultilist}[1]{\csuse{@gls@combined@#1@list}}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrmultitotalelements}
-%\changes{1.48}{2021-11-22}{new}
-%Total number of elements.
-% \begin{macrocode}
-\newcommand*{\glsxtrmultitotalelements}[1]{\csuse{@gls@combined@#1@total}}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrmultimainindex}
-%\changes{1.48}{2021-11-22}{new}
-%Index of main element (starting from 1). If the main element is the
-%last element in the list then this should equal the total number of
-%elements.
-% \begin{macrocode}
-\newcommand*{\glsxtrmultimainindex}[1]{\csuse{@gls@combined@#1@mainindex}}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrmultilastotherindex}
-%\changes{1.48}{2021-11-22}{new}
-%Index of the last non-main element.
-% \begin{macrocode}
-\newcommand*{\glsxtrmultilastotherindex}[1]{\csuse{@gls@combined@#1@lastotherindex}}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\ifmultiglossaryentryglobal}
-%\changes{1.48}{2021-11-22}{new}
-%Make definitions global.
-% \begin{macrocode}
-\newif\ifmultiglossaryentryglobal
-\multiglossaryentryglobalfalse
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglselementindex}
-%\changes{1.48}{2021-11-22}{new}
-% Count register to keep track of the current element index.
-% \begin{macrocode}
-\newcount\mglselementindex
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\multiglossaryentry}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{multiglossaryentry}\oarg{options}\marg{multi-label}\oarg{main label}\marg{label
-%list}
-%\end{definition}
-%Defines the label \meta{multi-label} that can be used in \cs{mgls}.
-% \begin{macrocode}
-\newrobustcmd{\multiglossaryentry}[1][]{%
- \def\@gls@combined@current@opts{#1}%
- \ifnum\@glsxtr@docdefval=1\relax
- \let\@multi@glossentry@donext\@defmultiglossaryentry
- \else
- \let\@multi@glossentry@donext\@multiglossaryentry
- \fi
- \@multi@glossentry@donext
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@multiglossaryentry}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@multiglossaryentry}[1]{%
- \def\@gls@combined@current@label{#1}%
- \@multi@glossaryentry
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@multi@glossaryentry}
-%\changes{1.48}{2021-11-22}{new}
-% Check for existence.
-% \begin{macrocode}
-\newcommand*{\@multi@glossaryentry}[2][]{%
- \ifcsdef{@gls@combined@\@gls@combined@current@label @main}%
- {\PackageError{glossaries-extra}%
- {Multi-entry label `\@gls@combined@current@label' already defined}%
- {}%
- }%
- {%
- \@multi@glossary@entry{#1}{#2}%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@defmultiglossaryentry}
-%\changes{1.48}{2021-11-22}{new}
-%Used if document definitions are on.
-% \begin{macrocode}
-\newcommand*{\@defmultiglossaryentry}[1]{%
- \def\@gls@combined@current@label{#1}%
- \@def@multi@glossaryentry
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@def@multi@glossaryentry}
-%\changes{1.48}{2021-11-22}{new}
-%Used if document definitions are on.
-% \begin{macrocode}
-\newcommand*{\@def@multi@glossaryentry}[2][]{%
- \let\@def@multi@glossaryentry@do\@multi@glossary@entry
- \ifundef\@glsxtr@docdefs@multilist
- {%
- \gdef\@glsxtr@docdefs@multilist{}%
- \listxadd
- {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}%
- }%
- {%
- \xifinlist{\@gls@combined@current@label}{\@glsxtr@docdefs@multilist}%
- {%
- \PackageError{glossaries-extra}%
- {Multi-entry label `\@gls@combined@current@label' already defined}%
- {}%
- \let\@def@multi@glossaryentry@do\@gobbletwo
- }%
- {%
- \listxadd
- {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}%
- }%
- }%
- \@def@multi@glossaryentry@do{#1}{#2}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@multi@glossary@doifexists}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@multi@glossary@doifexists}{\glsdoifexists}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\providemultiglossaryentry}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{providemultiglossaryentry}\oarg{options}\marg{multi-label}\oarg{main label}\marg{label
-%list}
-%\end{definition}
-%Defines a multi-entry unless it has already been defined.
-% \begin{macrocode}
-\newrobustcmd{\providemultiglossaryentry}[2][]{%
- \def\@gls@combined@current@opts{#1}%
- \def\@gls@combined@current@label{#2}%
- \ifcsdef{@gls@combined@\@gls@combined@current@label @main}%
- {\def\@multi@glossentry@donext{\@provide@multi@glossaryentry@noop}}%
- {%
- \ifnum\@glsxtr@docdefval=1\relax
- \def\@multi@glossentry@donext{\@def@multi@glossaryentry}%
- \else
- \def\@multi@glossentry@donext{\@multi@glossaryentry}%
- \fi
- }%
- \@multi@glossentry@donext
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@provide@multi@glossaryentry@noop}
-%\changes{1.48}{2021-11-22}{new}
-% Do nothing.
-% \begin{macrocode}
-\newcommand*{\@provide@multi@glossaryentry@noop}[2][]{}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@multi@glossaryentry@list}
-%\changes{1.48}{2021-11-22}{new}
-% List of all defined multi-entry sets.
-% \begin{macrocode}
-\newcommand*{\@multi@glossaryentry@list}{}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@multi@glossary@entry}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@multi@glossary@entry}[2]{%
- \protected@edef\@gls@combined@current@main{#1}%
-% \end{macrocode}
-% Fully expand list.
-% \begin{macrocode}
- \protected@edef\@gls@combined@currentlist{#2}%
-% \end{macrocode}
-% Count items in list, check they are all defined, and find last item at the same time.
-% \begin{macrocode}
- \mglselementindex=0\relax
- \@for\@gls@tmp:=\@gls@combined@currentlist\do{%
- \advance\mglselementindex by 1\relax
- \@multi@glossary@doifexists{\@gls@tmp}{}%
- \let\@gls@combined@finalitem\@gls@tmp
- \ifdefvoid\@gls@combined@current@main
- {}%
- {%
- \ifx\@gls@combined@current@main\@gls@tmp
- \ifmultiglossaryentryglobal
- \global\cslet{@gls@combined@\@gls@combined@current@label @main}%
- \@gls@combined@current@main
- \csxdef{@gls@combined@\@gls@combined@current@label @mainindex}%
- {\the\mglselementindex}%
- \else
- \cslet{@gls@combined@\@gls@combined@current@label @main}%
- \@gls@combined@current@main
- \csedef{@gls@combined@\@gls@combined@current@label @mainindex}%
- {\the\mglselementindex}%
- \fi
- \else
- \ifmultiglossaryentryglobal
- \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}%
- {\the\mglselementindex}%
- \else
- \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}%
- {\the\mglselementindex}%
- \fi
- \fi
- }%
- }%
- \ifmultiglossaryentryglobal
- \csxdef{@gls@combined@\@gls@combined@current@label @total}%
- {\the\mglselementindex}%
- \else
- \csedef{@gls@combined@\@gls@combined@current@label @total}%
- {\the\mglselementindex}%
- \fi
- \ifnum\mglselementindex<2\relax
- \PackageError{glossaries-extra}{At least 2 labels required in
- multi-entry element list (\number\mglselementindex\space found)}{}%
- \else
- \ifdefvoid\@gls@combined@current@main
- {}%
- {%
-% \end{macrocode}
-% If \cs{@gls@combined@\meta{label}@main} hasn't been set then it
-% wasn't included in the list.
-% \begin{macrocode}
- \ifcsundef{@gls@combined@\@gls@combined@current@label @main}%
- {\PackageError{glossaries-extra}%
- {Main element `\@gls@combined@current@main' not found in list}%
- {The final element `\@gls@combined@finalitem' will be used instead}
-% \end{macrocode}
-% Set to empty so that the default (final element) is used instead.
-% \begin{macrocode}
- \let\@gls@combined@current@main\@empty
- }%
- {}%
- }%
- \ifdefvoid\@gls@combined@current@main
- {%
-% \end{macrocode}
-% Set main to final element.
-% \begin{macrocode}
- \ifmultiglossaryentryglobal
- \global\cslet{@gls@combined@\@gls@combined@current@label @main}%
- \@gls@combined@finalitem
- \global\csletcs{@gls@combined@\@gls@combined@current@label @mainindex}%
- {@gls@combined@\@gls@combined@current@label @total}%
- \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}%
- {\the\numexpr\mglselementindex-1 }%
- \else
- \cslet{@gls@combined@\@gls@combined@current@label @main}%
- \@gls@combined@finalitem
- \csletcs{@gls@combined@\@gls@combined@current@label @mainindex}%
- {@gls@combined@\@gls@combined@current@label @total}%
- \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}%
- {\the\numexpr\mglselementindex-1 }%
- \fi
- }%
- {}%
- \ifmultiglossaryentryglobal
-% \end{macrocode}
-% Globally define element list.
-% \begin{macrocode}
- \global\cslet{@gls@combined@\@gls@combined@current@label @list}%
- \@gls@combined@currentlist
-% \end{macrocode}
-% Globally define options.
-% \begin{macrocode}
- \protected@csxdef{@gls@combined@\@gls@combined@current@label @options}%
- {\@gls@combined@current@opts}%
-% \end{macrocode}
-% Global conditional definition.
-% \begin{macrocode}
- \expandafter\@ifdefinable
- \csname if@gls@combined@\@gls@combined@current@label @flag\endcsname
- {\expandafter\global\expandafter
- \newif\csname if@gls@combined@\@gls@combined@current@label @flag\endcsname}%
- \expandafter\global
- \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname
- \else
-% \end{macrocode}
-% Locally define element list.
-% \begin{macrocode}
- \cslet{@gls@combined@\@gls@combined@current@label @list}%
- \@gls@combined@currentlist
-% \end{macrocode}
-% Locally define options.
-% \begin{macrocode}
- \protected@csedef{@gls@combined@\@gls@combined@current@label @options}%
- {\@gls@combined@current@opts}%
-% \end{macrocode}
-% Local conditional definition.
-% \begin{macrocode}
- \newboolean{@gls@combined@\@gls@combined@current@label @flag}%
- \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname
- \fi
- \fi
- \writemultiglossentry
- {\@gls@combined@current@opts}{\@gls@combined@current@label}%
- {\csuse{@gls@combined@\@gls@combined@current@label @main}}{#2}%
-% \end{macrocode}
-%Append label to list.
-% \begin{macrocode}
- \ifmultiglossaryentryglobal
- \ifdefempty\@multi@glossaryentry@list
- {\let\@multi@glossaryentry@list\@gls@combined@current@label}%
- {%
- \eappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}%
- }%
- \else
- \ifdefempty\@multi@glossaryentry@list
- {\global\let\@multi@glossaryentry@list\@gls@combined@current@label}%
- {%
- \xappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}%
- }%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@glsxtr@multientry}
-%\begin{definition}
-%\cs{@glsxtr@multientry}\marg{options}\marg{multilabel}\marg{main}\marg{list}
-%\end{definition}
-%Information for aux file. Useful for \app{bib2gls} and also for
-%\pkgopt{docdef}.
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@glsxtr@multientry}[4]{%
- \ifnum\@glsxtr@docdefval=1\relax
- \bgroup
- \def\@gls@combined@current@opts{#1}%
- \def\@gls@combined@current@label{#2}%
- \let\@multi@glossary@doifexists\@secondoftwo
- \let\writemultiglossentry\@gobblefour
- \multiglossaryentryglobaltrue
- \@multi@glossary@entry{#3}{#4}%
- \egroup
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\writemultiglossentry}
-%\changes{1.48}{2021-11-22}{new}
-%This can be redefined to do nothing if the information isn't
-%required.
-% \begin{macrocode}
-\newcommand*{\writemultiglossentry}[4]{%
- \protected@write\@auxout{}{\string\@glsxtr@multientry{#1}{#2}{#3}{#4}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\ifmglsused}
-%\changes{1.48}{2021-11-22}{new}
-% Determines whether or not the multi-entry set has been referenced
-% by commands like \cs{mgls} or \cs{mglsname}.
-% \begin{macrocode}
-\newcommand*{\ifmglsused}[3]{%
- \ifbool{@gls@combined@#1@flag}{#2}{#3}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsunset}
-%\changes{1.48}{2021-11-22}{new}
-%Unset the flag.
-% \begin{macrocode}
-\newcommand*{\mglsunset}[1]{%
- \gls@ifnotmeasuring
- {%
- \glsxtrifmulti{#1}{\@mglsunset{#1}}%
- {%
- \glsxtrundefaction{Multi entry `#1' hasn't been defined}%
- {You need to define `#1' with \string\multiglossaryentry}%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mglsunset}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mglsunset}[1]{%
- \expandafter\global\csname @gls@combined@#1@flagtrue\endcsname
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsreset}
-%\changes{1.48}{2021-11-22}{new}
-%Unset the flag.
-% \begin{macrocode}
-\newcommand*{\mglsreset}[1]{%
- \gls@ifnotmeasuring
- {%
- \glsxtrifmulti{#1}{\@mglsreset{#1}}%
- {%
- \glsxtrundefaction{Multi entry `#1' hasn't been defined}%
- {You need to define `#1' with \string\multiglossaryentry}%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mglsreset}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mglsreset}[1]{%
- \expandafter\global\csname @gls@combined@#1@flagfalse\endcsname
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglslocalunset}
-%\changes{1.48}{2021-11-22}{new}
-%Unset the flag.
-% \begin{macrocode}
-\newcommand*{\mglslocalunset}[1]{%
- \gls@ifnotmeasuring
- {%
- \glsxtrifmulti{#1}{\@mglslocalunset{#1}}%
- {%
- \glsxtrundefaction{Multi entry `#1' hasn't been defined}%
- {You need to define `#1' with \string\multiglossaryentry}%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mglslocalunset}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mglslocalunset}[1]{%
- \csname @gls@combined@#1@flagtrue\endcsname
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglslocalreset}
-%\changes{1.48}{2021-11-22}{new}
-%Unset the flag.
-% \begin{macrocode}
-\newcommand*{\mglslocalreset}[1]{%
- \gls@ifnotmeasuring
- {%
- \glsxtrifmulti{#1}{\@mglslocalreset{#1}}%
- {%
- \glsxtrundefaction{Multi entry `#1' hasn't been defined}%
- {You need to define `#1' with \string\multiglossaryentry}%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mglslocalreset}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mglslocalreset}[1]{%
- \csname @gls@combined@#1@flagfalse\endcsname
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsunsetall}
-%\changes{1.48}{2021-11-22}{new}
-%Unset all.
-% \begin{macrocode}
-\newcommand*{\mglsunsetall}{%
- \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsunset\@mgls@thislabel}%
-}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsresetall}
-%\changes{1.48}{2021-11-22}{new}
-%Reset all.
-% \begin{macrocode}
-\newcommand*{\mglsresetall}{%
- \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsreset\@mgls@thislabel}%
-}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsSetMain}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglsSetName}\marg{multi-label}\marg{new main}
-%\end{definition}
-%Allow the main label to be changed (local).
-% \begin{macrocode}
-\newrobustcmd{\mglsSetMain}[2]{%
- \ifcsundef{@gls@combined@#1@main}%
- {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}%
- {%
- \protected@edef\@gls@combined@current@main{#2}%
- \letcs\@gls@combined@currentlist{@gls@combined@#1@list}%
-% \end{macrocode}
-% Check that the given label is in the list of elements and update
-% main and last other element index.
-% \begin{macrocode}
- \mglselementindex=0\relax
- \count@=0\relax
- \@for\@gls@tmp:=\@gls@combined@currentlist\do{%
- \advance\mglselementindex by 1\relax
- \ifx\@gls@combined@current@main\@gls@tmp
- \count@=\mglselementindex\relax
- \let\@gls@combined@finalitem\@gls@tmp
- \ifmultiglossaryentryglobal
- \global\cslet{@gls@combined@#1@main}\@gls@combined@current@main
- \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}%
- \else
- \cslet{@gls@combined@#1@main}\@gls@combined@current@main
- \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}%
- \fi
- \else
- \ifmultiglossaryentryglobal
- \csxdef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}%
- \else
- \csedef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}%
- \fi
- \fi
- }%
- \ifnum\count@=0\relax
- \PackageError{glossaries-extra}{Label `#2' is not in `#1' set
- (\@gls@combined@currentlist)}{}%
-% \end{macrocode}
-% Default to final item.
-% \begin{macrocode}
- \ifmultiglossaryentryglobal
- \global\cslet{@gls@combined@#1@main}\@gls@combined@finalitem
- \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}%
- \csxdef{@gls@combined@#1@lastotherindex}{%
- \number\numexpr\mglselementindex-1 }%
- \else
- \cslet{@gls@combined@#1@main}\@gls@combined@finalitem
- \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}%
- \csedef{@gls@combined@#1@lastotherindex}{%
- \number\numexpr\mglselementindex-1 }%
- \fi
- \fi
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsSetOptions}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglsSetOptions}\marg{multi-label}\marg{new options}
-%\end{definition}
-%Allow the options to be changed (local). No expansion is applied.
-% \begin{macrocode}
-\newrobustcmd{\mglsSetOptions}[2]{%
- \ifcsundef{@gls@combined@#1@main}%
- {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}%
- {%
- \csdef{@gls@combined@#1@options}{#2}%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsAddOptions}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglsAddOptions}\marg{multi-label}\marg{extra options}
-%\end{definition}
-%Allow the options to be changed (local). No expansion is applied.
-% \begin{macrocode}
-\newrobustcmd{\mglsAddOptions}[2]{%
- \ifcsundef{@gls@combined@#1@main}%
- {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}%
- {%
- \ifcsempty{@gls@combined@#1@options}%
- {\csdef{@gls@combined@#1@options}{#2}}%
- {\csappto{@gls@combined@#1@options}{,#2}}%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%Options for \cs{mgls}:
-%\begin{macro}{\@mgls@all}
-%\changes{1.48}{2021-11-22}{new}
-%Options to apply to all elements.
-% \begin{macrocode}
-\newcommand*{\@mgls@all}{}
-\define@key{mgls}{all}{\renewcommand*{\@mgls@all}{#1}}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@main}
-%\changes{1.48}{2021-11-22}{new}
-%Options to apply to the main element only.
-% \begin{macrocode}
-\newcommand*{\@mgls@main}{}
-\define@key{mgls}{main}{\renewcommand*{\@mgls@main}{#1}}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@others}
-%\changes{1.48}{2021-11-22}{new}
-%Options to apply to the other (no main) elements.
-% \begin{macrocode}
-\newcommand*{\@mgls@others}{}
-\define@key{mgls}{others}{\renewcommand*{\@mgls@others}{#1}}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@setup}
-%\changes{1.48}{2021-11-22}{new}
-%Options to apply to \cs{multiglossaryentrysetup}.
-% \begin{macrocode}
-\newcommand*{\@mgls@setup}{}
-\define@key{mgls}{setup}{%
- \@mgls@setup@do{\renewcommand*{\@mgls@setup}{#1}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@setup@do}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mgls@setup@do}[1]{#1}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@setup@do@not}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mgls@setup@do@not}[1]{%
- \PackageError{glossaries-extra}{`setup' key not permitted inside
- `mglsopts' value}{}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mgls@disable@setup}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mgls@disable@setup}{%
- \let\@mgls@setup@do\@mgls@setup@do@not
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mgls@enable@setup}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mgls@enable@setup}{%
- \let\@mgls@setup@do\@firstofone
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@unsetaction}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand\@mgls@unsetaction{0}
-\define@choicekey{mgls}{multiunset}[\@mgls@unsetaction@val\@mgls@unsetaction]%
- {global,local,none}{}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\ifKV@mgls@presetlocal}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\define@boolkey{mgls}{presetlocal}[true]{}
-\KV@mgls@presetlocalfalse
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@hyper}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mgls@hyper}{}
-\define@choicekey{mgls}{hyper}[\@mgls@hyper@val\@mgls@hyper@nr]{true,false}[true]%
-{%
- \renewcommand*{\@mgls@hyper}{hyper=#1}%
- \ifnum\@mgls@hyper@nr=1\relax
- \let\@mgls@hyperlink\@secondoftwo
- \else
- \let\@mgls@hyperlink\@@mgls@hyperlink
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@@mgls@hyperlink}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@@mgls@hyperlink}[2]{%
- \ifx\@glslink\glsdonohyperlink
- #2%
- \else
- \glsxtr@org@dohyperlink{\glolinkprefix#1}{#2}%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@hyperlink}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\let\@mgls@hyperlink\@@mgls@hyperlink
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsforelements}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglsforelements}\marg{multi-label}\marg{cs}\marg{body}
-%\end{definition}
-% \begin{macrocode}
-\newcommand*{\mglsforelements}[3]{%
- \expandafter\@for\expandafter#2\expandafter:\expandafter
- =\csname @gls@combined@#1@list\endcsname\do{#3}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsforotherelements}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglsforotherelements}\marg{multi-label}\marg{cs}\marg{body}
-%\end{definition}
-% \begin{macrocode}
-\newcommand*{\mglsforotherelements}[3]{%
- \expandafter\@for\expandafter#2\expandafter:\expandafter
- =\csname @gls@combined@#1@list\endcsname\do
- {\expandafter\ifdefequal\csname @gls@combined@#1@main\endcsname{#2}{}{#3}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsunsetothers}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglsunsetothers}[1]{%
- \mglsforotherelements{#1}{\@gls@tmp}{\glsunset{\@gls@tmp}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglslocalunsetothers}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglslocalunsetothers}[1]{%
- \mglsforotherelements{#1}{\@gls@tmp}{\glslocalunset{\@gls@tmp}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglselementreset}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglselementreset}[1]{%
- \ifKV@mgls@presetlocal
- \glslocalreset{#1}%
- \else
- \glsreset{#1}%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglselementunset}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglselementunset}[1]{%
- \ifKV@mgls@presetlocal
- \glslocalunset{#1}%
- \else
- \glsunset{#1}%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@resetall}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mgls@resetall}{}
-\define@choicekey{mgls}{resetall}%
-[\@mgls@resetall@val\@mgls@resetall@nr]{false,true}[true]%
-{%
- \ifcase\@mgls@resetall@nr\relax
- \renewcommand*{\@mgls@resetall}{}%
- \or
- \renewcommand*{\@mgls@resetall}{%
- \@for\@gls@resetlabel:=\mglscurrentlist\do{\mglselementreset\@gls@resetlabel}}%
- \renewcommand*{\@mgls@unsetall}{}%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@resetmain}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mgls@resetmain}{}
-\define@choicekey{mgls}{resetmain}
-[\@mgls@resetmain@val\@mgls@resetmain@nr]{false,true}[true]%
-{%
- \ifcase\@mgls@resetmain@nr\relax
- \renewcommand*{\@mgls@resetmain}{}%
- \or
- \renewcommand*{\@mgls@resetmain}{\mglselementreset\mglscurrentmainlabel}%
- \renewcommand*{\@mgls@unsetmain}{}%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@resetothers}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mgls@resetothers}{}
-\define@choicekey{mgls}{resetothers}
-[\@mgls@resetothers@val\@mgls@resetothers@nr]{false,true}[true]%
-{%
- \ifcase\@mgls@resetothers@nr\relax
- \renewcommand*{\@mgls@resetothers}{}%
- \or
- \renewcommand*{\@mgls@resetothers}{%
- \@for\@gls@resetlabel:=\mglscurrentlist\do{%
- \ifx\@gls@resetlabel\mglscurrentmainlabel
- \else
- \mglselementreset\@gls@resetlabel
- \fi
- }%
- }%
- \renewcommand*{\@mgls@unsetothers}{}%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@unsetall}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mgls@unsetall}{}
-\define@choicekey{mgls}{unsetall}%
-[\@mgls@unsetall@val\@mgls@unsetall@nr]{false,true}[true]%
-{%
- \ifcase\@mgls@unsetall@nr\relax
- \renewcommand*{\@mgls@unsetall}{}%
- \or
- \renewcommand*{\@mgls@unsetall}{%
- \@for\@gls@unsetlabel:=\mglscurrentlist\do{\mglselementunset\@gls@unsetlabel}}%
- \renewcommand*{\@mgls@resetall}{}%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@unsetmain}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mgls@unsetmain}{}
-\define@choicekey{mgls}{unsetmain}
-[\@mgls@unsetmain@val\@mgls@unsetmain@nr]{false,true}[true]%
-{%
- \ifcase\@mgls@unsetmain@nr\relax
- \renewcommand*{\@mgls@unsetmain}{}%
- \or
- \renewcommand*{\@mgls@unsetmain}{\mglselementunset\mglscurrentmainlabel}%
- \renewcommand*{\@mgls@resetmain}{}%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@unsetothers}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mgls@unsetothers}{}
-\define@choicekey{mgls}{unsetothers}
-[\@mgls@unsetothers@val\@mgls@unsetothers@nr]{false,true}[true]%
-{%
- \ifcase\@mgls@unsetothers@nr\relax
- \renewcommand*{\@mgls@unsetothers}{}%
- \or
- \renewcommand*{\@mgls@unsetothers}{%
- \@for\@gls@unsetlabel:=\mglscurrentlist\do{%
- \ifx\@gls@unsetlabel\mglscurrentmainlabel
- \else
- \mglselementunset\@gls@unsetlabel
- \fi
- }%
- }%
- \renewcommand*{\@mgls@resetothers}{}%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtr@setup@docurrent}
-%\changes{1.48}{2021-11-22}{new}
-%Set up the commands to determine whether or not to do the current
-%element.
-% \begin{macrocode}
-\newcommand{\glsxtr@setup@docurrent}{%
-% \end{macrocode}
-% \cs{mglscurrentlabel} expands to the label of the current element.
-% Should this element be skipped?
-% \begin{macrocode}
- \ifx\mglscurrentlabel\mglscurrentmainlabel
-% \end{macrocode}
-% Main element. Should it be skipped?
-% \begin{macrocode}
- \mglsisfirstuse
- {%
- \ifKV@glsxtrcombined@firstskipmain
- \let\@mgls@do@current@element\@gobble
- \else
- \let\@mgls@do@current@element\@firstofone
- \fi
- }%
- {%
- \ifKV@glsxtrcombined@usedskipmain
- \let\@mgls@do@current@element\@gobble
- \else
- \let\@mgls@do@current@element\@firstofone
- \fi
- }%
- \else
-% \end{macrocode}
-% Other element. Should it be skipped?
-% \begin{macrocode}
- \mglsisfirstuse
- {%
- \ifKV@glsxtrcombined@firstskipothers
- \let\@mgls@do@current@element\@gobble
- \else
- \let\@mgls@do@current@element\@firstofone
- \fi
- }%
- {%
- \ifKV@glsxtrcombined@usedskipothers
- \let\@mgls@do@current@element\@gobble
- \else
- \let\@mgls@do@current@element\@firstofone
- \fi
- }%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtr@mgls@checklastelement}
-%\changes{1.48}{2021-11-22}{new}
-% If the last element is skipped, \cs{mglsiflast} needs
-% adjusting.
-% The first argument should be either "first" or "used".
-% The second argument is the multi-element label.
-% \begin{macrocode}
-\newcommand*{\glsxtr@mgls@checklastelement}[2]{%
- \ifbool{KV@glsxtrcombined@#1skipmain}%
- {%
- \ifbool{KV@glsxtrcombined@#1skipothers}%
- {%
-% \end{macrocode}
-% This condition has already been checked for.
-% \begin{macrocode}
- }%
- {%
-% \end{macrocode}
-% Main skipped. The last item will be the last other element.
-% \begin{macrocode}
- \ifnum\mglselementindex=\glsxtrmultilastotherindex{#2}\relax
- \let\mglsiflast\@firstoftwo
- \else
- \let\mglsiflast\@secondoftwo
- \fi
- }%
- }%
- {%
-% \end{macrocode}
-% Main not skipped.
-% \begin{macrocode}
- \ifbool{KV@glsxtrcombined@#1skipothers}%
- {%
-% \end{macrocode}
-% Others skipped. The main element is the only item.
-% \begin{macrocode}
- \ifnum\mglselementindex=\glsxtrmultimainindex{#2}\relax
- \let\mglsiflast\@firstoftwo
- \else
- \let\mglsiflast\@secondoftwo
- \fi
- }%
- {%
-% \end{macrocode}
-% None skipped. This isn't the last element.
-% \begin{macrocode}
- \let\mglsiflast\@secondoftwo
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtrmglsWarnAllSkipped}
-%\changes{1.48}{2021-11-22}{new}
-%Warning if all elements are skipped. The first argument is the
-%warning message, the second argument is the inserted content (final
-%optional argument), the third command is the encapsulation command
-%(which may be a hyperlink).
-% \begin{macrocode}
-\newcommand{\glsxtrmglsWarnAllSkipped}[3]{%
- \GlossariesExtraWarning{#1}%
- #3{#2}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtr@mgls@applyopts}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\glsxtr@mgls@applyopts}[1]{%
- \edef\@mgls@dooptions{\noexpand\setkeys*{mgls}{\expandonce#1}}%
- \@mgls@dooptions
-% \end{macrocode}
-% Append any unknown options to all.
-% \begin{macrocode}
- \ifdefvoid\XKV@rm{}{\eappto\@mgls@all{,\expandonce\XKV@rm}}%
-% \end{macrocode}
-% If setup key has been used, check for pre-option keys:
-% \begin{macrocode}
- \ifdefvoid\@mgls@setup
- {}%
- {%
- \edef\@mgls@dooptions{%
- \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@setup}}%
- \mgls@disable@mglsopts
- \@mgls@dooptions
- \mgls@enable@mglsopts
-% \end{macrocode}
-% Save remaining setup options.
-% \begin{macrocode}
- \ifx\@mgls@setupoptions\@empty
- \let\@mgls@setupoptions\XKV@rm
- \else
- \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}%
- \fi
- }%
-% \end{macrocode}
-% Apply gls unset/reset options.
-% \begin{macrocode}
- \@mgls@resetall
- \@mgls@unsetall
- \@mgls@resetmain
- \@mgls@unsetmain
- \@mgls@resetothers
- \@mgls@unsetothers
-% \end{macrocode}
-% Disable.
-% \begin{macrocode}
- \let\@mgls@resetall\@empty
- \let\@mgls@resetmain\@empty
- \let\@mgls@resetothers\@empty
- \let\@mgls@unsetall\@empty
- \let\@mgls@unsetmain\@empty
- \let\@mgls@unsetothers\@empty
-% \end{macrocode}
-% First use flags.
-% \begin{macrocode}
- \ifmglsused\mglscurrentmultilabel
- {\let\mglsisfirstuse\@secondoftwo}%
- {\let\mglsisfirstuse\@firstoftwo}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@firstofthree}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\providecommand{\@firstofthree}[3]{#1}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@secondofthree}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\providecommand{\@secondofthree}[3]{#2}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@thirdofthree}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\providecommand{\@thirdofthree}[3]{#3}
-% \end{macrocode}
-%\end{macro}
-%
-%The main internal command for referencing multi-entries:
-%\begin{macro}{\glsxtr@mgls@inner}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{glsxtr@mgls@inner}\marg{options}\marg{label}\marg{insert}\marg{first
-%cs}\marg{not first cs}\marg{main first cs}\marg{main other cs}
-%\end{definition}
-% \begin{macrocode}
-\newcommand*{\glsxtr@mgls@inner}[7]{%
- \let\mglslastmainlabel\@empty
- \let\mglsiflastmainwasfirstuse\@firstoftwo
- \let\mglsiflastmainwasplural\@secondoftwo
- \let\mglsiflastmaincapscase\@firstofthree
- \let\mglsiflastmainskipped\@firstoftwo
- \bgroup
- \ifcsundef{@gls@combined@#2@main}%
- {%
- \glsxtrundefaction{Multi entry `#2' hasn't been defined}%
- {You need to define `#2' with \string\multiglossaryentry}%
- \gdef\@mgls@post@hookdefs{%
- \protected@edef\mglslastmultilabel{#2}%
- \let\mglswasfirstuse\@firstoftwo
- \let\mglslastcategory\@empty
- \let\mglsiflastelementskipped\@firstoftwo
- \let\mglsiflastelementwasfirstuse\@firstoftwo
- \let\mglsiflastelementwasplural\@secondoftwo
- \let\mglsiflastelementcapscase\@firstofthree
- \let\mglslastelementlabel\@empty
- \let\mgls@do@postlinkhook\relax
- }%
- }%
- {%
- \protected@edef\mglscurrentmultilabel{#2}%
- \letcs\mglscurrentmainlabel{@gls@combined@#2@main}%
- \letcs\mglscurrentlist{@gls@combined@#2@list}%
- \letcs\mglscurrentoptions{@gls@combined@#2@options}%
-% \end{macrocode}
-% Initialise (may be changed if \texttt{multiunset} is present):
-% \begin{macrocode}
- \ifmglsused\mglscurrentmultilabel
- {\let\mglsisfirstuse\@secondoftwo}%
- {\let\mglsisfirstuse\@firstoftwo}%
-% \end{macrocode}
-% Only obtain pre-option keys:
-% \begin{macrocode}
- \edef\@mgls@dooptions{%
- \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\mglscurrentoptions}}%
- \@mgls@dooptions
-% \end{macrocode}
-% Save remaining setup options.
-% \begin{macrocode}
- \let\@mgls@setupoptions\XKV@rm
-% \end{macrocode}
-% Apply \cs{mgls} options.
-% \begin{macrocode}
- \mgls@disable@setup
- \ifdefvoid\@gls@combined@mglsopts
- {}%
- {\glsxtr@mgls@applyopts\@gls@combined@mglsopts}%
- \mgls@enable@setup
-% \end{macrocode}
-% Apply options provided in \verb|#1|.
-% \begin{macrocode}
- \ifstrempty{#1}{}{\def\@mgls@options{#1}\glsxtr@mgls@applyopts\@mgls@options}%
-% \end{macrocode}
-% Check for attribute settings.
-% \begin{macrocode}
- \ifx\@gls@combined@category\empty
-% \end{macrocode}
-% No category
-% \begin{macrocode}
- \else
-% \end{macrocode}
-% Attribute options:
-% \begin{macrocode}
- \glshascategoryattribute{\@gls@combined@category}{multioptions}%
- {%
- \letcs\@mgls@attroptions{@glsxtr@categoryattr@@\@gls@combined@category
- @multioptions}%
-% \end{macrocode}
-% Only obtain pre-option keys:
-% \begin{macrocode}
- \let\@gls@combined@mglsopts\@empty
- \edef\@mgls@dooptions{%
- \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@attroptions}}%
- \@mgls@dooptions
-% \end{macrocode}
-% Append remaining options:
-% \begin{macrocode}
- \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}%
- \ifx\@gls@combined@mglsopts\@empty
- \else
-% \end{macrocode}
-% mgls options found:
-% \begin{macrocode}
- \let\@mgls@setup\@empty
- \mgls@disable@setup
- \glsxtr@mgls@applyopts\@gls@combined@mglsopts
- \mgls@enable@setup
- \fi
- }%
- {}%
- \fi
-% \end{macrocode}
-% Apply setup options.
-% \begin{macrocode}
- \edef\@mgls@dooptions{%
- \noexpand\setkeys{glsxtrcombined}{\expandonce\@mgls@setupoptions}}%
- \@mgls@dooptions
-% \end{macrocode}
-% Provide local user-level access to category:
-% \begin{macrocode}
- \let\mglscurrentcategory\@gls@combined@category
-% \end{macrocode}
-% Should the entire content be a hyperlink?
-% \begin{macrocode}
- \ifnum\@gls@combined@hyper=1\relax
- \def\@mgls@combinedlink{\@mgls@hyperlink{\mglscurrentmainlabel}}%
- \else
- \def\@mgls@combinedlink{\@firstofone}%
- \fi
-% \end{macrocode}
-% Entire content encapsulator.
-% \begin{macrocode}
- \def\@gls@combined@encapsulator##1{%
- \@mgls@combinedlink{\csuse{\@gls@combined@textformat}{##1}}}%
-% \end{macrocode}
-% Initialise.
-% \begin{macrocode}
- \let\@mgls@do@current@element\@firstofone
-% \end{macrocode}
-% Check if all elements are being skipped.
-% \begin{macrocode}
- \mglsisfirstuse
- {%
- \ifKV@glsxtrcombined@firstskipmain
- \ifKV@glsxtrcombined@firstskipothers
-% \end{macrocode}
-% Just do the warning and insert. This will ignore the loop.
-% \begin{macrocode}
- \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator
- \def\@gls@combined@encapsulator##1{%
- \glsxtrmglsWarnAllSkipped{All elements skipped for
- first use of multi-entry `#2'}{#3}%
- {\@gls@org@combined@encapsulator}%
- }%
- \let\@mgls@do@current@element\@gobble
- \fi
- \fi
- }%
- {%
- \ifKV@glsxtrcombined@usedskipmain
- \ifKV@glsxtrcombined@usedskipothers
-% \end{macrocode}
-% Just do the warning and insert. This will ignore the loop.
-% \begin{macrocode}
- \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator
- \def\@gls@combined@encapsulator##1{%
- \glsxtrmglsWarnAllSkipped{All elements skipped for
- subsequent use of multi-entry `#2'}{#3}%
- {\@gls@org@combined@encapsulator}%
- }%
- \let\@mgls@do@current@element\@gobble
- \fi
- \fi
- }%
-% \end{macrocode}
-% Determine prefix and suffix.
-% \begin{macrocode}
- \mglsisfirstuse
- {%
- \let\mglscurrentprefix\@gls@combined@firstprefix
- \let\mglscurrentsuffix\@gls@combined@firstsuffix
- }%
- {%
- \let\mglscurrentprefix\@gls@combined@usedprefix
- \let\mglscurrentsuffix\@gls@combined@usedsuffix
- }%
-% \end{macrocode}
-%Set up post-link hook used after current scope.
-% \begin{macrocode}
- \xdef\@mgls@post@hookdefs{%
- \noexpand\def\noexpand\mglslastmultilabel{\expandonce\mglscurrentmultilabel}%
- \noexpand\def\noexpand\mglslastcategory{\mglscurrentcategory}%
- }%
- \ifx\@mgls@do@current@element\@gobble
- \gappto\@mgls@post@hookdefs{%
- \let\mglsiflastelementskipped\@firstoftwo
- \let\mglslastelementlabel\@empty
- \let\mglsiflastelementwasfirstuse\@firstoftwo
- \let\mglsiflastelementwasplural\@secondoftwo
- \let\mglsiflastelementcapscase\@firstofthree
- }%
- \fi
- \mglsisfirstuse
- {%
- \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@firstoftwo}%
-% \end{macrocode}
-% Determine if the multi-entry post-link hook should be applied.
-% \begin{macrocode}
- \ifcase\@gls@combined@mpostlink@nr\relax
-% \end{macrocode}
-% \texttt{mpostlink=false}.
-% \begin{macrocode}
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}%
- \or
-% \end{macrocode}
-% \texttt{mpostlink=true}.
-% \begin{macrocode}
- \ifcase\@gls@combined@mpostlinkelement@nr\relax
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}%
- \or
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}%
- \or
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}%
- \fi
- \or
-% \end{macrocode}
-% \texttt{mpostlink=firstonly}.
-% \begin{macrocode}
- \ifcase\@gls@combined@mpostlinkelement@nr\relax
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}%
- \or
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}%
- \or
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}%
- \fi
- \or
-% \end{macrocode}
-% \texttt{mpostlink=usedonly}.
-% \begin{macrocode}
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}%
- \fi
- }%
- {%
- \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@secondoftwo}%
-% \end{macrocode}
-% Determine if the multi-entry post-link hook should be applied.
-% \begin{macrocode}
- \ifcase\@gls@combined@mpostlink@nr\relax
-% \end{macrocode}
-% \texttt{mpostlink=false}.
-% \begin{macrocode}
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}%
- \or
-% \end{macrocode}
-% \texttt{mpostlink=true}.
-% \begin{macrocode}
- \ifcase\@gls@combined@mpostlinkelement@nr\relax
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}%
- \or
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}%
- \or
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}%
- \fi
- \or
-% \end{macrocode}
-% \texttt{mpostlink=firstonly}.
-% \begin{macrocode}
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}%
- \or
-% \end{macrocode}
-% \texttt{mpostlink=usedonly}.
-% \begin{macrocode}
- \ifcase\@gls@combined@mpostlinkelement@nr\relax
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}%
- \or
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}%
- \or
- \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}%
- \fi
- \fi
- }%
-% \end{macrocode}
-% Save current post-link hook.
-% \begin{macrocode}
- \let\mgls@org@postlinkhook\glspostlinkhook
-% \end{macrocode}
-% Prefix.
-% \begin{macrocode}
- \mglsprefix
-% \end{macrocode}
-% Initialise last element label (for \cs{mglssuffix}).
-% \begin{macrocode}
- \let\mglslastelementlabel\@empty
- \@gls@combined@encapsulator
- {%
-% \end{macrocode}
-% Save previous label.
-% \begin{macrocode}
- \def\@mgls@previouslabel{}%
- \mglselementindex=0\relax
- \@for\mglscurrentlabel:=\mglscurrentlist\do{%
- \advance\mglselementindex by 1\relax
- \glsxtr@setup@docurrent
-% \end{macrocode}
-% Is this the last element?
-% \begin{macrocode}
- \ifx\@xfor@nextelement\@nnil
- \let\mglsiflast\@firstoftwo
- \else
- \let\mglsiflast\@secondoftwo
-% \end{macrocode}
-% Are any elements being skipped?
-% \begin{macrocode}
- \mglsisfirstuse
- {%
- \glsxtr@mgls@checklastelement{first}{#2}%
- }%
- {%
- \glsxtr@mgls@checklastelement{used}{#2}%
- }%
- \fi
-% \end{macrocode}
-% Should the element post-link hook be used?
-% \begin{macrocode}
- \ifcase\@gls@combined@postlinks@nr\relax
-% \end{macrocode}
-% \texttt{postlinks=none}
-% \begin{macrocode}
- \let\glspostlinkhook\relax
- \or
-% \end{macrocode}
-% \texttt{postlinks=all}
-% \begin{macrocode}
- \let\glspostlinkhook\mgls@org@postlinkhook
- \or
-% \end{macrocode}
-% \texttt{postlinks=notlast}
-% \begin{macrocode}
- \mglsiflast
- {%
- \let\glspostlinkhook\relax
- }%
- {%
- \let\glspostlinkhook\mgls@org@postlinkhook
- }%
- \or
-% \end{macrocode}
-% \texttt{postlinks=mainnotlast}
-% \begin{macrocode}
- \ifx\mglscurrentlabel\mglscurrentmainlabel
- \mglsiflast
- {%
- \let\glspostlinkhook\relax
- }%
- {%
- \let\glspostlinkhook\mgls@org@postlinkhook
- }%
- \else
- \let\glspostlinkhook\relax
- \fi
- \or
-% \end{macrocode}
-% \texttt{postlinks=mainonly}
-% \begin{macrocode}
- \ifx\mglscurrentlabel\mglscurrentmainlabel
- \let\glspostlinkhook\mgls@org@postlinkhook
- \else
- \let\glspostlinkhook\relax
- \fi
- \or
-% \end{macrocode}
-% \texttt{postlinks=othernotlast}
-% \begin{macrocode}
- \ifx\mglscurrentlabel\mglscurrentmainlabel
- \let\glspostlinkhook\relax
- \else
- \mglsiflast
- {%
- \let\glspostlinkhook\relax
- }%
- {%
- \let\glspostlinkhook\mgls@org@postlinkhook
- }%
- \fi
- \or
-% \end{macrocode}
-% \texttt{postlinks=otheronly}
-% \begin{macrocode}
- \ifx\mglscurrentlabel\mglscurrentmainlabel
- \let\glspostlinkhook\relax
- \else
- \let\glspostlinkhook\mgls@org@postlinkhook
- \fi
- \fi
-% \end{macrocode}
-% Save the last element for the multi-entry post-link hook.
-% \begin{macrocode}
- \mglsiflast
- {%
- \xappto\@mgls@post@hookdefs{%
- \noexpand\def\noexpand\mglslastelementlabel
- {\expandonce\mglscurrentlabel}}%
- }%
- {}%
-% \end{macrocode}
-% Do current element:
-% \begin{macrocode}
- \@mgls@do@current@element
- {%
-% \end{macrocode}
-% Pre element hook.
-% \begin{macrocode}
- \mglselementprehook
-% \end{macrocode}
-% Is this the first use of the current element?
-% \begin{macrocode}
- \GlsXtrIfUnusedOrUndefined{\mglscurrentlabel}%
- {\let\@mgls@current@iffirstuse\@firstoftwo}%
- {\let\@mgls@current@iffirstuse\@secondoftwo}%
- \ifx\mglscurrentlabel\mglscurrentmainlabel
-% \end{macrocode}
-% Main element.
-% Location encap option:
-% \begin{macrocode}
- \edef\@mgls@current@options{format=\@gls@combined@encapmain}%
-% \end{macrocode}
-%Indexing option:
-% \begin{macrocode}
- \ifcase\@gls@combined@indexmain
- \appto\@mgls@current@options{,noindex}%
- \or
- \appto\@mgls@current@options{,noindex=false}%
- \or
- \@mgls@current@iffirstuse
- {\appto\@mgls@current@options{,noindex=false}}%
- {\appto\@mgls@current@options{,noindex}}%
- \fi
-% \end{macrocode}
-% Hyperlink option:
-% \begin{macrocode}
- \ifcase\@gls@combined@hyper\relax
- \appto\@mgls@current@options{,hyper=false}% none
- \or
- \appto\@mgls@current@options{,hyper=false}% allmain
- \or
- \eappto\@mgls@current@options{,\@mgls@hyper}% mainonly
- \or
- \eappto\@mgls@current@options{,\@mgls@hyper}% individual
- \or
- \appto\@mgls@current@options{,hyper=false}% otheronly
- \or
- \mglsisfirstuse
- {%
- \appto\@mgls@current@options{,hyper=false}% notmainfirst
- }%
- {%
- \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst
- }%
- \or
- \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst
- \or
- \mglsisfirstuse
- {%
- \appto\@mgls@current@options{,hyper=false}% notfirst
- }%
- {%
- \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst
- }%
- \fi
-% \end{macrocode}
-%Append all and then main:
-% \begin{macrocode}
- \eappto\@mgls@current@options{,\@mgls@all,\@mgls@main}%
- \else
-% \end{macrocode}
-% Other element.
-% Location encap option:
-% \begin{macrocode}
- \edef\@mgls@current@options{format=\@gls@combined@encapothers}%
-% \end{macrocode}
-% Indexing option:
-% \begin{macrocode}
- \ifcase\@gls@combined@indexothers\relax
- \appto\@mgls@current@options{,noindex}%
- \or
- \appto\@mgls@current@options{,noindex=false}%
- \or
- \@mgls@current@iffirstuse
- {\appto\@mgls@current@options{,noindex=false}}%
- {\appto\@mgls@current@options{,noindex}}%
- \fi
-% \end{macrocode}
-% Hyperlink option:
-% \begin{macrocode}
- \ifcase\@gls@combined@hyper\relax
- \appto\@mgls@current@options{,hyper=false}% none
- \or
- \appto\@mgls@current@options{,hyper=false}% allmain
- \or
- \appto\@mgls@current@options{,hyper=false}% mainonly
- \or
- \eappto\@mgls@current@options{,\@mgls@hyper}% individual
- \or
- \eappto\@mgls@current@options{,\@mgls@hyper}% otheronly
- \or
- \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst
- \or
- \mglsisfirstuse
- {%
- \appto\@mgls@current@options{,hyper=false}% nototherfirst
- }%
- {%
- \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst
- }%
- \or
- \mglsisfirstuse
- {%
- \appto\@mgls@current@options{,hyper=false}% notfirst
- }%
- {%
- \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst
- }%
- \fi
-% \end{macrocode}
-%Append all and then others:
-% \begin{macrocode}
- \eappto\@mgls@current@options{,\@mgls@all,\@mgls@others}%
- \fi
-% \end{macrocode}
-% Is this the first element?
-% \begin{macrocode}
- \ifx\@mgls@previouslabel\empty
- \ifx\mglscurrentlabel\mglscurrentmainlabel
- \let\@mgls@cs#6\relax
- \else
- \let\@mgls@cs#4\relax
- \fi
- \else
-% \end{macrocode}
-% Not the first element so add separator.
-% \begin{macrocode}
- \@mgls@previous@iffirstuse
- {%
- \@mgls@current@iffirstuse
- {\glscombinedfirstsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}%
- {\glscombinedfirstsep{\@mgls@previouslabel}{\mglscurrentlabel}}%
- }%
- {%
- \@mgls@current@iffirstuse
- {\glscombinedsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}%
- {\glscombinedsep{\@mgls@previouslabel}{\mglscurrentlabel}}%
- }%
- \ifx\mglscurrentlabel\mglscurrentmainlabel
- \let\@mgls@cs#7\relax
- \else
- \let\@mgls@cs#5\relax
- \fi
- \fi
-% \end{macrocode}
-% Is this the last element?
-% \begin{macrocode}
- \mglsiflast
- {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[#3]}%
- {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[]}%
-% \end{macrocode}
-% Is this the main element? If so, save information for post-link
-% hook.
-% \begin{macrocode}
- \ifx\mglscurrentlabel\mglscurrentmainlabel
- \xappto\@mgls@post@hookdefs{%
- \noexpand\def\noexpand\mglslastmainlabel
- {\expandonce\mglscurrentmainlabel}%
- }%
- \glsxtrifwasfirstuse
- {%
- \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@firstoftwo}%
- }%
- {%
- \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@secondoftwo}%
- }%
- \glsifplural
- {%
- \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@firstoftwo}%
- }%
- {%
- \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@secondoftwo}%
- }%
- \glscapscase
- {%
- \gappto\@mgls@post@hookdefs{%
- \let\mglsiflastmaincapscase\@firstofthree
- }%
- }%
- {%
- \gappto\@mgls@post@hookdefs{%
- \let\mglsiflastmaincapscase\@secondofthree
- }%
- }%
- {%
- \gappto\@mgls@post@hookdefs{%
- \let\mglsiflastmaincapscase\@thirdofthree
- }%
- }%
- \fi
- \let\@mgls@previouslabel\mglscurrentlabel
- \let\@mgls@previous@iffirstuse\@mgls@current@iffirstuse
- }%
-% \end{macrocode}
-% Post element hook.
-% \begin{macrocode}
- \mglselementposthook
- }%
- \ifx\mglslastmainlabel\@empty
- \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@firstoftwo}%
- \else
- \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@secondoftwo}%
- \fi
-% \end{macrocode}
-% Encapsulator may introduce grouping so check here.
-% \begin{macrocode}
- \ifx\@mgls@do@current@element\@gobble
- \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@firstoftwo}%
- \else
- \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@secondoftwo}%
- \fi
- \glsxtrifwasfirstuse
- {%
- \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@firstoftwo}%
- }%
- {%
- \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@secondoftwo}%
- }%
- \glsifplural
- {%
- \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@firstoftwo}%
- }%
- {%
- \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@secondoftwo}%
- }%
- \glscapscase
- {%
- \gappto\@mgls@post@hookdefs{%
- \let\mglsiflastelementcapscase\@firstofthree
- }%
- }%
- {%
- \gappto\@mgls@post@hookdefs{%
- \let\mglsiflastelementcapscase\@secondofthree
- }%
- }%
- {%
- \gappto\@mgls@post@hookdefs{%
- \let\mglsiflastelementcapscase\@thirdofthree
- }%
- }%
- }%
-% \end{macrocode}
-% Suffix needs post-link hook commands.
-% \begin{macrocode}
- \@mgls@post@hookdefs
- \mglssuffix
-% \end{macrocode}
-%Unset multi-entry first use flag after current scope.
-% \begin{macrocode}
- \ifcase\@mgls@unsetaction\relax
- \xappto\@mgls@post@hookdefs{%
- \noexpand\mglsunset{\expandonce\mglscurrentmultilabel}}%
- \or
- \xappto\@mgls@post@hookdefs{%
- \noexpand\mglslocalunset{\expandonce\mglscurrentmultilabel}}%
- \fi
- }%
- \glsxtrmglswrite{#2}%
- \egroup
- \@mgls@post@hookdefs
- \mgls@do@postlinkhook
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglscustompostlinkhook}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglscustompostlinkhook}{}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglslastelementpostlinkhook}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglslastelementpostlinkhook}{%
- \let\glsxtrifwasfirstuse\mglsiflastelementwasfirstuse
- \let\glsifplural\mglsiflastelementwasplural
- \let\glscapscase\mglsiflastelementcapscase
- \let\glslabel\mglslastelementlabel
- \glspostlinkhook
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglslastmainpostlinkhook}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglslastmainpostlinkhook}{%
- \let\glsxtrifwasfirstuse\mglsiflastmainwasfirstuse
- \let\glsifplural\mglsiflastmainwasplural
- \let\glscapscase\mglsiflastmaincapscase
- \let\glslabel\mglslastmainlabel
- \glspostlinkhook
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsdefcategoryprefix}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglsdefcategoryprefix}[2]{%
- \csdef{mglsprefix@#1}{#2}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglshascategoryprefix}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglshascategoryprefix}[3]{%
- \ifcsdef{mglsprefix@#1}{#2}{#3}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsusecategoryprefix}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglsusecategoryprefix}[1]{%
- \csuse{mglsprefix@#1}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsprefix}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglsprefix}{%
- \ifdefempty\mglscurrentcategory
- {\mglscurrentprefix}%
- {%
- \mglshascategoryprefix{\mglscurrentcategory}%
- {\mglsusecategoryprefix{\mglscurrentcategory}}%
- {\mglscurrentprefix}%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsdefcategorysuffix}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglsdefcategorysuffix}[2]{%
- \csdef{mglssuffix@#1}{#2}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglshascategorysuffix}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglshascategorysuffix}[3]{%
- \ifcsdef{mglssuffix@#1}{#2}{#3}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsusecategorysuffix}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglsusecategorysuffix}[1]{%
- \csuse{mglssuffix@#1}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglssuffix}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglssuffix}{%
- \ifdefempty\mglscurrentcategory
- {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}%
- {%
- \mglshascategorysuffix{\mglscurrentcategory}%
- {\mglsusecategorysuffix{\mglscurrentcategory}}%
- {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglselementprehook}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglselementprehook}{}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglselementposthook}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mglselementposthook}{}
-% \end{macrocode}
-%\end{macro}
-%
-%Separators.
-%\begin{macro}{\glscombinedsep}
-%\changes{1.48}{2021-11-22}{new}
-%Separator between two elements that have been marked as used.
-%This takes the two element labels as arguments.
-% \begin{macrocode}
-\newcommand*{\glscombinedsep}[2]{%
- \glshasattribute{#1}{combinedsep}%
- {\glsgetattribute{#1}{combinedsep}}%
- { }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glscombinedfirstsepfirst}
-%\changes{1.48}{2021-11-22}{new}
-%Separator following and preceding a first use.
-% \begin{macrocode}
-\newcommand*{\glscombinedfirstsepfirst}[2]{%
- \glshasattribute{#1}{combinedfirstsepfirst}%
- {\glsgetattribute{#1}{combinedfirstsepfirst}}%
- {\glscombinedsep{#1}{#2}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glscombinedfirstsep}
-%\changes{1.48}{2021-11-22}{new}
-%Separator following a first use.
-% \begin{macrocode}
-\newcommand*{\glscombinedfirstsep}[2]{%
- \glshasattribute{#1}{combinedfirstsep}%
- {\glsgetattribute{#1}{combinedfirstsep}}%
- {\glscombinedsep{#1}{#2}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glscombinedsepfirst}
-%\changes{1.48}{2021-11-22}{new}
-%Separator preceding a first use.
-% \begin{macrocode}
-\newcommand*{\glscombinedsepfirst}[2]{%
- \glshasattribute{#1}{combinedsepfirst}%
- {\glsgetattribute{#1}{combinedsepfirst}}%
- {\glscombinedsep{#1}{#2}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glssetcombinedsepabbrvnbsp}
-%\changes{1.48}{2021-11-22}{new}
-%Provide shortcut for using non-breakable space following an
-%abbreviation that has already been used.
-% \begin{macrocode}
-\newcommand*{\glssetcombinedsepabbrvnbsp}{%
- \renewcommand*{\glscombinedsep}[2]{%
- \glshasattribute{##1}{combinedsep}%
- {\glsgetattribute{##1}{combinedsep}}%
- {\ifhasshort{##1}{~}{ }}%
- }%
- \renewcommand*{\glscombinedsepfirst}[2]{%
- \glshasattribute{##1}{combinedsepfirst}%
- {\glsgetattribute{##1}{combinedsepfirst}}%
- {\ifhasshort{##1}{~}{ }}%
- }%
- \renewcommand*{\glscombinedfirstsep}[2]{%
- \glshasattribute{##1}{combinedfirstsep}%
- {\glsgetattribute{##1}{combinedfirstsep}}%
- { }%
- }%
- \renewcommand*{\glscombinedfirstsepfirst}[2]{%
- \glshasattribute{##1}{combinedfirstsepfirst}%
- {\glsgetattribute{##1}{combinedfirstsepfirst}}%
- { }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glssetcombinedsepabbrvnone}
-%\changes{1.48}{2021-11-22}{new}
-%Provide shortcut for using nothing if either on next use are
-%abbreviations (otherwise use space).
-% \begin{macrocode}
-\newcommand*{\glssetcombinedsepabbrvnone}{%
- \renewcommand*{\glscombinedsep}[2]{%
- \glshasattribute{##1}{combinedsep}%
- {\glsgetattribute{##1}{combinedsep}}%
- {\ifhasshort{##1}{}{\ifhasshort{##2}{}{ }}}%
- }%
- \renewcommand*{\glscombinedsepfirst}[2]{%
- \glshasattribute{##1}{combinedsepfirst}%
- {\glsgetattribute{##1}{combinedsepfirst}}%
- {\ifhasshort{##1}{}{ }}%
- }%
- \renewcommand*{\glscombinedfirstsep}[2]{%
- \glshasattribute{##1}{combinedfirstsep}%
- {\glsgetattribute{##1}{combinedfirstsep}}%
- {\ifhasshort{##2}{}{ }}%
- }%
- \renewcommand*{\glscombinedfirstsepfirst}[2]{%
- \glshasattribute{##1}{combinedfirstsepfirst}%
- {\glsgetattribute{##1}{combinedfirstsepfirst}}%
- { }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glssetcombinedsepnarrow}
-%\changes{1.48}{2021-11-22}{new}
-%Measures both.
-% \begin{macrocode}
-\newcommand*{\glssetcombinedsepnarrow}[2]{%
- \renewcommand*{\glscombinedsep}[2]{%
- \glshasattribute{##1}{combinedsep}%
- {\glsgetattribute{##1}{combinedsep}}%
- {%
- \ifhasshort{##1}%
- {\settowidth{\dimen@}{\glsentryshort{##1}}}%
- {\settowidth{\dimen@}{\glsentrytext{##1}}}%
- \ifdim\dimen@<#1\relax
- #2%
- \else
- \ifhasshort{##2}%
- {\settowidth{\dimen@}{\glsentryshort{##2}}}%
- {\settowidth{\dimen@}{\glsentrytext{##2}}}%
- \ifdim\dimen@<#1\relax
- #2%
- \else
- \space
- \fi
- \fi
- }%
- }%
- \renewcommand*{\glscombinedsepfirst}[2]{%
- \glshasattribute{##1}{combinedsepfirst}%
- {\glsgetattribute{##1}{combinedsepfirst}}%
- {%
- \ifhasshort{##1}%
- {\settowidth{\dimen@}{\glsentryshort{##1}}}%
- {\settowidth{\dimen@}{\glsentrytext{##1}}}%
- \ifdim\dimen@<#1\relax
- #2%
- \else
- \ifhaslong{##2}%
- {\settowidth{\dimen@}{\glsentrylong{##2}}}%
- {\settowidth{\dimen@}{\glsentryfirst{##2}}}%
- \ifdim\dimen@<#1\relax
- #2%
- \else
- \space
- \fi
- \fi
- }%
- }%
- \renewcommand*{\glscombinedfirstsep}[2]{%
- \glshasattribute{##1}{combinedfirstsep}%
- {\glsgetattribute{##1}{combinedfirstsep}}%
- {%
- \ifhaslong{##1}%
- {\settowidth{\dimen@}{\glsentrylong{##1}}}%
- {\settowidth{\dimen@}{\glsentryfirst{##1}}}%
- \ifdim\dimen@<#1\relax
- #2%
- \else
- \ifhasshort{##2}%
- {\settowidth{\dimen@}{\glsentryshort{##2}}}%
- {\settowidth{\dimen@}{\glsentrytext{##2}}}%
- \ifdim\dimen@<#1\relax
- #2%
- \else
- \space
- \fi
- \fi
- }%
- }%
- \renewcommand*{\glscombinedfirstsepfirst}[2]{%
- \glshasattribute{##1}{combinedfirstsepfirst}%
- {\glsgetattribute{##1}{combinedfirstsepfirst}}%
- {%
- \ifhaslong{##1}%
- {\settowidth{\dimen@}{\glsentrylong{##1}}}%
- {\settowidth{\dimen@}{\glsentryfirst{##1}}}%
- \ifdim\dimen@<#1\relax
- #2%
- \else
- \ifhaslong{##2}%
- {\settowidth{\dimen@}{\glsentrylong{##2}}}%
- {\settowidth{\dimen@}{\glsentryfirst{##2}}}%
- \ifdim\dimen@<#1\relax
- #2%
- \else
- \space
- \fi
- \fi
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@glsxtr@mglswrite}
-%\changes{1.48}{2021-11-22}{new}
-%Write information to the aux file for \app{bib2gls} to pick up, but
-%only need to do it once per label since it only indicates which multi-entry
-%has been referenced without any additional information.
-% \begin{macrocode}
-\newcommand{\glsxtrmglswrite}[1]{%
- \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off
- \else
- \protected@edef\@glsxtr@mglslabel{#1}%
- \ifdef\@glsxtr@mglsreflist
- {%
- \expandafter\DTLifinlist\expandafter{\@glsxtr@mglslabel}%
- {\@glsxtr@mglsreflist}{}%
- {%
- \xappto\@glsxtr@mglsreflist{,\expandonce\@glsxtr@mglslabel}%
- \if@mgls@writeseparaterefs
- \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}%
- \fi
- }%
- }%
- {%
- \global\let\@glsxtr@mglsreflist\@glsxtr@mglslabel
- \if@mgls@writeseparaterefs
- \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}%
- \else
- \AtEndDocument{\immediate\protected@write\@auxout{}%
- {\string\@glsxtr@mglsrefs{\@glsxtr@mglsreflist}}}%
- \fi
- \@mgls@disable@writeseparateref@cond
- }%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@glsxtr@mglsrefs}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand{\@glsxtr@mglsrefs}[1]{}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\if@mgls@writeseparaterefs}
-%\changes{1.48}{2021-11-22}{new}
-%If this conditional is changed, it must be done before the first
-%instance of any \cs{mgls}-like command.
-% \begin{macrocode}
-\newif\if@mgls@writeseparaterefs \@mgls@writeseparaterefsfalse
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsWriteSeparateRefsTrue}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand{\mglsWriteSeparateRefsTrue}{\global\@mgls@writeseparaterefstrue}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsWriteSeparateRefsFalse}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand{\mglsWriteSeparateRefsFalse}{\global\@mgls@writeseparaterefsfalse}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@mgls@disable@writeseparateref@cond}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@mgls@disable@writeseparateref@cond}{%
- \gdef\mglsWriteSeparateRefsTrue{\PackageError{glossaries-extra}%
- {Too late to use \string\mglsWriteSeparateRefsTrue}%
- {\string\mglsWriteSeparateRefsTrue\space can only be used before
- the first instance of any \string\mgls-like command}}%
- \gdef\mglsWriteSeparateRefsFalse{\PackageError{glossaries-extra}%
- {Too late to use \string\mglsWriteSeparateRefsFalse}%
- {\string\mglsWriteSeparateRefsFalse\space can only be used before
- the first instance of any \string\mgls-like command}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsxtr@newmgls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand{\glsxtr@newmgls}[5]{%
- \edef\@glsxr@newmgls@do{%
- \noexpand\newrobustcmd*{\expandonce{\csname #1\endcsname}}%
- {\noexpand\@gls@hyp@opt\expandonce{\csname ns@glsxtr@#1\endcsname}}%
- \noexpand\newcommand*{\expandonce{\csname ns@glsxtr@#1\endcsname}}[2][]{%
- \noexpand\new@ifnextchar[%
- {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}}%
- {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}[]}%
- }%
- \noexpand\def\expandonce{\csname glsxtr@#1\endcsname}####1####2[####3]{%
- \noexpand\def\noexpand\glsxtrcurrentmglscsname{#1}%
- \noexpand\glsxtr@mgls@inner{####1}{####2}{####3}%
- {\noexpand#2}{\noexpand#3}{\noexpand#4}{\noexpand#5}%
- }%
- }%
- \@glsxr@newmgls@do
- \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off
- \else
-% \end{macrocode}
-% Provide a way for \app{bib2gls} to recognise the command (this will
-% make it easier to add extra commands without having to modify
-% \app{bib2gls}).
-% \begin{macrocode}
- \ifdef\@glsxtr@mglslikelist
- {\xappto\@glsxtr@mglslikelist{,#1}}%
- {%
- \gdef\@glsxtr@mglslikelist{#1}%
- \AtEndDocument{\immediate\protected@write\@auxout{}%
- {\string\@glsxtr@mglslike{\@glsxtr@mglslikelist}}}%
- }%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@glsxtr@mglslike}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@glsxtr@mglslike}[1]{}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\GlsXtrMglsOrGls}
-%\begin{definition}
-%\cs{GlsXtrMglsOrGls}\marg{mgls cs}\marg{gls cs}\meta{modifier}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\GlsXtrMglsOrGls}[2]{%
- \def\@glsxtr@mgls@or@gls@mcs{#1}%
- \def\@glsxtr@mgls@or@gls@gcs{#2}%
- \@ifstar{\s@GlsXtrMglsOrGls}%
- {%
- \@ifnextchar+{\PLUS\@firstoftwo{\p@GlsXtrMglsOrGls}}%
- {%
- \ifdefempty\@gls@alt@hyp@opt@char\@GlsXtrMglsOrGls\alt@GlsXtrMglsOrGls
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\alt@GlsXtrMglsOrGls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\alt@GlsXtrMglsOrGls}{
- \expandafter\@ifnextchar\@gls@alt@hyp@opt@char
- {\@firstoftwo{\@alt@GlsXtrMglsOrGls}}{\@GlsXtrMglsOrGls}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@GlsXtrMglsOrGls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@GlsXtrMglsOrGls}[2][]{%
- \glsxtrifmulti{#2}%
- {\@glsxtr@mgls@or@gls@mcs[#1]{#2}}%
- {\@glsxtr@mgls@or@gls@gcs[#1]{#2}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\s@GlsXtrMglsOrGls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\s@GlsXtrMglsOrGls}[2][]{%
- \glsxtrifmulti{#2}%
- {\@glsxtr@mgls@or@gls@mcs*[#1]{#2}}%
- {\@glsxtr@mgls@or@gls@gcs*[#1]{#2}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\p@GlsXtrMglsOrGls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\p@GlsXtrMglsOrGls}[2][]{%
- \glsxtrifmulti{#2}%
- {\@glsxtr@mgls@or@gls@mcs+[#1]{#2}}%
- {\@glsxtr@mgls@or@gls@gcs+[#1]{#2}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@alt@GlsXtrMglsOrGls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\@alt@GlsXtrMglsOrGls}[2][]{%
- \glsxtrifmulti{#2}%
- {\expandafter\@glsxtr@mgls@or@gls@mcs\@gls@alt@hyp@opt@char[#1]{#2}}%
- {\expandafter\@glsxtr@mgls@or@gls@gcs\@gls@alt@hyp@opt@char[#1]{#2}}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mgls}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mgls}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use \cs{gls} for all elements.
-% \begin{macrocode}
-\glsxtr@newmgls{mgls}{\@gls@}{\@gls@}{\@gls@}{\@gls@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglspl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglspl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use \cs{glspl} for all elements.
-% \begin{macrocode}
-\glsxtr@newmgls{mglspl}{\@glspl@}{\@glspl@}{\@glspl@}{\@glspl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsmainpl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglsmainpl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Only use \cs{glspl} for the main element, otherwise use \cs{gls}.
-% \begin{macrocode}
-\glsxtr@newmgls{mglsmainpl}{\@gls@}{\@gls@}{\@glspl@}{\@glspl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Mgls}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{Mgls}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Use \cs{Gls} for first element and \cs{gls} for others.
-% \begin{macrocode}
-\glsxtr@newmgls{Mgls}{\@Gls@}{\@gls@}{\@Gls@}{\@gls@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Mglspl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{Mglspl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Use \cs{Glspl} for first element and \cs{glspl} for others.
-% \begin{macrocode}
-\glsxtr@newmgls{Mglspl}{\@Glspl@}{\@glspl@}{\@Glspl@}{\@glspl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Mglsmainpl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{Mglsmainpl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Upper case the first element, no case change for others.
-%Use plural for the main element only.
-% \begin{macrocode}
-\glsxtr@newmgls{Mglsmainpl}{\@Gls@}{\@gls@}{\@Glspl@}{\@glspl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MGls}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MGls}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Use \cs{Gls} for all elements.
-% \begin{macrocode}
-\glsxtr@newmgls{MGls}{\@Gls@}{\@Gls@}{\@Gls@}{\@Gls@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MGlspl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MGlspl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Use \cs{Glspl} for all elements.
-% \begin{macrocode}
-\glsxtr@newmgls{MGlspl}{\@Glspl@}{\@Glspl@}{\@Glspl@}{\@Glspl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MGlsmainpl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MGlsmainpl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Start all elements with upper case. Only use plural for main
-%element.
-% \begin{macrocode}
-\glsxtr@newmgls{MGlsmainpl}{\@Gls@}{\@Gls@}{\@Glspl@}{\@Glspl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MGLS}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MGLS}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Use \cs{GLS} for all elements.
-% \begin{macrocode}
-\glsxtr@newmgls{MGLS}{\@GLS@}{\@GLS@}{\@GLS@}{\@GLS@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MGLSpl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MGLSpl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Use \cs{GLSpl} for all elements.
-% \begin{macrocode}
-\glsxtr@newmgls{MGLSpl}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MGLSmainpl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MGLSmainpl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Upper case all elements. Only use plural for main element.
-% \begin{macrocode}
-\glsxtr@newmgls{MGLSmainpl}{\@GLS@}{\@GLS@}{\@GLSpl@}{\@GLSpl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@glslongortext@}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@glslongortext#1#2[#3]{%
- \ifglshaslong{#2}{\@glsxtrlong{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@glsshortortext@}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@glsshortortext#1#2[#3]{%
- \ifglshasshort{#2}{\@glsxtrshort{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@glsfullorfirst@}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@glsfullorfirst#1#2[#3]{%
- \ifglshasshort{#2}{\@glsxtr@full{#1}{#2}[#3]}{\@glsfirst@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@Glslongortext@}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@Glslongortext#1#2[#3]{%
- \ifglshaslong{#2}{\@Glsxtrlong{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@Glsshortortext@}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@Glsshortortext#1#2[#3]{%
- \ifglshasshort{#2}{\@Glsxtrshort{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@Glsfullorfirst@}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@Glsfullorfirst#1#2[#3]{%
- \ifglshasshort{#2}{\@Glsxtr@full{#1}{#2}[#3]}{\@Glsfirst@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsshort}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglsshort}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use short or text for all elements.
-% \begin{macrocode}
-\glsxtr@newmgls{mglsshort}%
-{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglslong}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglslong}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use long or text for all elements.
-% \begin{macrocode}
-\glsxtr@newmgls{mglslong}%
-{\@glslongortext}{\@glslongortext}{\@glslongortext}{\@glslongortext}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsfull}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglsfull}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use full or first for all elements.
-% \begin{macrocode}
-\glsxtr@newmgls{mglsfull}%
-{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Mglsshort}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{Mglsshort}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use short or text for all elements with initial cap on first element.
-% \begin{macrocode}
-\glsxtr@newmgls{Mglsshort}%
-{\@Glsshortortext}{\@glsshortortext}{\@Glsshortortext}{\@glsshortortext}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Mglslong}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{Mglslong}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use long or text for all elements with initial cap on first
-% element.
-% \begin{macrocode}
-\glsxtr@newmgls{Mglslong}%
-{\@Glslongortext}{\@glslongortext}{\@Glslongortext}{\@glslongortext}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Mglsfull}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{Mglsfull}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use full or first for all elements with initial cap on first
-% element.
-% \begin{macrocode}
-\glsxtr@newmgls{Mglsfull}%
-{\@Glsfullorfirst}{\@glsfullorfirst}{\@Glsfullorfirst}{\@glsfullorfirst}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsname}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglsname}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use name for all elements.
-% \begin{macrocode}
-\glsxtr@newmgls{mglsname}%
- {\@glsname@}{\@glsname@}{\@glsname@}{\@glsname@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Mglsname}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{Mglsname}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use name for all elements with initial cap on first
-% element.
-% \begin{macrocode}
-\glsxtr@newmgls{Mglsname}%
- {\@Glsname@}{\@glsname@}{\@Glsname@}{\@glsname@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MGlsname}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MGlsname}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use name for all elements with initial cap on all
-% elements.
-% \begin{macrocode}
-\glsxtr@newmgls{MGlsname}%
- {\@Glsname@}{\@Glsname@}{\@Glsname@}{\@Glsname@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@glssymbolorgls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@glssymbolorgls#1#2[#3]{%
- \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@gls@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@glssymbolorGls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@glssymbolorGls#1#2[#3]{%
- \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@Gls@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglssymbol}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglssymbol}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use \cs{glssymbol} if the \gloskey{symbol} key is set otherwise
-% use \cs{gls}.
-% \begin{macrocode}
-\glsxtr@newmgls{mglssymbol}%
- {\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Mglssymbol}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{Mglssymbol}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% As above but initial the first element if it's not a symbol.
-% \begin{macrocode}
-\glsxtr@newmgls{Mglssymbol}%
- {\@glssymbolorGls}{\@glssymbolorgls}{\@glssymbolorGls}{\@glssymbolorgls}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MGlssymbol}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MGlssymbol}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% As above but initial each element if it's not a symbol.
-% \begin{macrocode}
-\glsxtr@newmgls{MGlssymbol}%
- {\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsfield}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand{\mglsfield}{useri}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\@glsfieldorgls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@glsfieldorgls#1#2[#3]{%
- \glsxtrifhasfield{\mglsfield}{#2}%
- {\@glsdisp[#1]{#2}{\glscurrentfieldvalue#3}}%
- {\@gls@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@Glsfieldorgls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@Glsfieldorgls#1#2[#3]{%
- \glsxtrifhasfield{\mglsfield}{#2}%
- {\@glsdisp[#1]{#2}{\xmakefirstuc\glscurrentfieldvalue#3}}%
- {\@Gls@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mglsusefield}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mglsusefield}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use the field given by \cs{\mglsfield}.
-% \begin{macrocode}
-\glsxtr@newmgls{mglsusefield}%
- {\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Mglsusefield}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{Mglsusefield}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% As above but use initial cap for first element only.
-% \begin{macrocode}
-\glsxtr@newmgls{Mglsusefield}%
- {\@Glsfieldorgls}{\@glsfieldorgls}{\@Glsfieldorgls}{\@glsfieldorgls}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MGlsusefield}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MGlsusefield}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% As above but use initial cap for all elements.
-% \begin{macrocode}
-\glsxtr@newmgls{MGlsusefield}%
- {\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}%
-% \end{macrocode}
-%\end{macro}
-%
-% Use commands provided by \sty{glossaries-prefix} if it has been
-% loaded.
-%\begin{macro}{\mpglsWarning}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\newcommand*{\mpglsWarning}{%
- \GlossariesExtraWarning{glossaries-prefix.sty is required for
- \string\mpgls\space family of commands (either load after
- glossaries-extra.sty or use the `prefix' package option)}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@pglsorgls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@pglsorgls#1#2[#3]{%
- \ifdef\@pgls@{\@pgls@{#1}{#2}[#3]}{\mpglsWarning\@gls@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@pglsorglspl}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@pglsorglspl#1#2[#3]{%
- \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@Pglsorgls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@Pglsorgls#1#2[#3]{%
- \ifdef\@Pgls@{\@Pgls@{#1}{#2}[#3]}{\mpglsWarning\@Gls@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@pglsorglspl}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@pglsorglspl#1#2[#3]{%
- \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@Pglsorglspl}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@Pglsorglspl#1#2[#3]{%
- \ifdef\@Pglspl@{\@Pglspl@{#1}{#2}[#3]}{\mpglsWarning\@Glspl@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@PGLSorgls}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@PGLSorgls#1#2[#3]{%
- \ifdef\@PGLS@{\@PGLS@{#1}{#2}[#3]}{\mpglsWarning\@GLS@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@PGLSorglspl}
-%\changes{1.48}{2021-11-22}{new}
-% \begin{macrocode}
-\def\@PGLSorglspl#1#2[#3]{%
- \ifdef\@PGLSpl@{\@PGLSpl@{#1}{#2}[#3]}{\mpglsWarning\@GLSpl@{#1}{#2}[#3]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mpgls}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mpgls}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use \cs{pgls} for the first element and \cs{gls} for the remainder.
-% \begin{macrocode}
-\glsxtr@newmgls{mpgls}{\@pglsorgls@}{\@gls@}{\@pglsorgls@}{\@gls@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mpglspl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mpglspl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use \cs{pglspl} for the first element and \cs{glspl} for the remainder.
-% \begin{macrocode}
-\glsxtr@newmgls{mpglspl}{\@pglsorglspl@}{\@glspl@}{\@pglsorglspl@}{\@glspl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mpglsmainpl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{mpglsmainpl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Only use plural for main element and only use prefixing command for
-%first element.
-% \begin{macrocode}
-\glsxtr@newmgls{mpglsmainpl}{\@pglsorgls@}{\@gls@}{\@pglsorglspl@}{\@glspl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Mpgls}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{Mpgls}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use \cs{Pgls} for the first element and \cs{gls} for the remainder.
-% \begin{macrocode}
-\glsxtr@newmgls{Mpgls}{\@Pglsorgls@}{\@gls@}{\@Pglsorgls@}{\@gls@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Mpglspl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{Mpglspl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use \cs{Pglspl} for the first element and \cs{glspl} for the remainder.
-% \begin{macrocode}
-\glsxtr@newmgls{Mpglspl}{\@Pglsorglspl@}{\@glspl@}{\@Pglsorglspl@}{\@glspl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\Mpglsmainpl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{Mpglsmainpl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Only use plural for main element and only use first letter
-%uppercase prefixing command for first element.
-% \begin{macrocode}
-\glsxtr@newmgls{Mpglsmainpl}{\@Pglsorgls@}{\@gls@}{\@Pglsorglspl@}{\@glspl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MPGls}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MPGls}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Use \cs{Pgls} for the first element and \cs{Gls} for the remainder.
-% \begin{macrocode}
-\glsxtr@newmgls{MPGls}{\@Pglsorgls@}{\@Gls@}{\@Pglsorgls@}{\@Gls@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MPGlspl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MPGlspl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use \cs{Pglspl} for the first element and \cs{Glspl} for the remainder.
-% \begin{macrocode}
-\glsxtr@newmgls{MPGlspl}{\@Pglsorglspl@}{\@Glspl@}{\@Pglsorglspl@}{\@Glspl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MPGlsmainpl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MPGlsmainpl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Only use plural for main element and first letter uppercase all
-%elements.
-% \begin{macrocode}
-\glsxtr@newmgls{MPGlsmainpl}{\@Pglsorgls@}{\@Gls@}{\@Pglsorglspl@}{\@Glspl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MPGLS}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MPGLS}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use \cs{PGLS} for the first element and \cs{GLS} for the remainder.
-% \begin{macrocode}
-\glsxtr@newmgls{MPGLS}{\@PGLSorgls@}{\@GLS@}{\@PGLSorgls@}{\@GLS@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MPGLSpl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MPGLSpl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-% Use \cs{PGLSpl} for the first element and \cs{GLSpl} for the remainder.
-% \begin{macrocode}
-\glsxtr@newmgls{MPGLSpl}{\@PGLSorglspl@}{\@GLSpl@}{\@PGLSorglspl@}{\@GLSpl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MPGLSmainpl}
-%\changes{1.48}{2021-11-22}{new}
-%\begin{definition}
-%\cs{MPGLSmainpl}\oarg{options}\marg{label}\oarg{insert}
-%\end{definition}
-%Only use plural for main element and uppercase all elements.
-% \begin{macrocode}
-\glsxtr@newmgls{MPGLSmainpl}{\@PGLSorgls@}{\@GLS@}{\@PGLSorglspl@}{\@GLSpl@}%
-% \end{macrocode}
-%\end{macro}
-%
-%Not currently implementing any other variations.
-%
-%\section{Multi-Lingual Support}
-% Add the facility to load language modules, if they are installed,
-% but none are provided with this package.
-%
-%\begin{macro}{\RequireGlossariesExtraLang}
-%\changes{0.5.3}{2015-12-09}{new}
-% \begin{macrocode}
-\newcommand*{\RequireGlossariesExtraLang}[1]{%
- \@ifundefined{ver@glossariesxtr-#1.ldf}{\input{glossariesxtr-#1.ldf}}{}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\ProvidesGlossariesExtraLang}
-%\changes{0.5.3}{2015-12-09}{new}
-% \begin{macrocode}
-\newcommand*{\ProvidesGlossariesExtraLang}[1]{%
- \ProvidesFile{glossariesxtr-#1.ldf}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-% Load any required language modules that are available. This
-% doesn't generate any warning if none are found, since they're not
-% essential. (The only command that really needs defining for the
-% document is \ics{abbreviationsname}, which can simply be
-% redefined. However, with \app{bib2gls} it might be useful to
-% provide custom rules for a particular locale.)
-%
-%\begin{macro}{\glsxtr@loaddialect}
-%The dialect label should be stored in \cs{this@dialect}
-%before using this command.
-%\changes{1.27}{2018-02-26}{new}
-% \begin{macrocode}
-\newcommand{\glsxtr@loaddialect}{%
- \IfTrackedLanguageFileExists{\this@dialect}%
- {glossariesxtr-}% prefix
- {.ldf}%
- {%
- \RequireGlossariesExtraLang{\CurrentTrackedTag}%
- }%
- {}% not found
-% \end{macrocode}
-% If \sty{glossaries-extra-bib2gls} has been loaded,
-% \cs{@glsxtrdialecthook} will check for the associated script,
-% otherwise it will do nothing.
-% \begin{macrocode}
- \@glsxtrdialecthook
-}
-% \end{macrocode}
-%\end{macro}
-% \begin{macrocode}
-\@ifpackageloaded{tracklang} {%
- \AnyTrackedLanguages
- {%
- \ForEachTrackedDialect{\this@dialect}{\glsxtr@loaddialect}%
- }%
- {}%
-} {}
-% \end{macrocode}
-% Load \sty{glossaries-extra-stylemods} if required.
-% \begin{macrocode}
-\@glsxtr@redefstyles
-% \end{macrocode}
-% and set the style:
-% \begin{macrocode}
-\@glsxtr@do@style
-% \end{macrocode}
%\iffalse
% \begin{macrocode}
-%</glossaries-extra.sty>
+%</glossaries-extra-abbrstyles.def>
% \end{macrocode}
%\fi
%\iffalse
@@ -30065,13 +39544,21 @@ defined}{}%
%<*glossaries-extra-bib2gls.sty>
% \end{macrocode}
%\fi
+%\section{Commands Specific to bib2gls (glossaries-extra-bib2gls.sty)}
%\changes{1.27}{2018-02-26}{added glossaries-extra-bib2gls.sty}
-%\section{glossaries-extra-bib2gls.sty}
%This package provides additional support for \app{bib2gls} and is
%automatically loaded by the record option.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossaries-extra-bib2gls}[2021/11/22 v1.48 (NLCT)]
+% \end{macrocode}
+% Rollback releases:
+% \begin{macrocode}
+\DeclareRelease{v1.48}{2021-11-22}{glossaries-extra-bib2gls-2021-11-22.sty}
+\DeclareCurrentRelease{v1.49}{2022-10-14}
+% \end{macrocode}
+% Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossaries-extra-bib2gls}[2022/10/14 v1.49 (NLCT)]
% \end{macrocode}
%Provide convenient shortcut commands for predefined glossary types.
%\begin{macro}{\printunsrtacronyms}
@@ -30152,6 +39639,16 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\IfTeXParserLib}
+%\changes{1.49}{2022-10-14}{new}
+%This is defined by the \TeX\ parser library to behave like
+%\cs{@firstoftwo}. May be used to provide different code in fields
+%that may be interpreted.
+% \begin{macrocode}
+\providecommand{\IfTeXParserLib}[2]{#2}
+% \end{macrocode}
+%\end{macro}
+%
%These are some convenient macros for use with custom rules.
%\begin{macro}{\glshex}
%\changes{1.21}{2017-11-03}{new}
@@ -30167,6 +39664,16 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glshashchar}
+%\changes{1.49}{2022-10-14}{new}
+% Expands to a literal hash character (similar to \cs{glsbackslash})
+% \begin{macrocode}
+\ifdef\glshashchar
+{}
+{\edef\glshashchar{\expandafter\@gobble\string\#}}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\GlsXtrIfHasNonZeroChildCount}
%\changes{1.31}{2018-05-09}{new}
%\changes{1.47}{2021-11-04}{added starred version}
@@ -30234,7 +39741,13 @@ defined}{}%
%
%\begin{macro}{\glsxtr@wrglossarylocation}
%\changes{1.29}{2018-04-09}{new}
+%\begin{definition}
+%\cs{glsxtr@wrglossarylocation}\marg{wr-loc}\marg{page}
+%\end{definition}
%For use with \pkgopt{indexcounter} and \app{bib2gls}.
+%This just expands to \meta{wr-loc} to allow \cs{glsnoidxdisplayloc}
+%to obtain the hyperlink target. The page number obtained when
+%\app{bib2gls} parses the aux file.
% \begin{macrocode}
\newcommand*{\glsxtr@wrglossarylocation}[2]{#1}
% \end{macrocode}
@@ -30276,6 +39789,7 @@ defined}{}%
%
%\begin{macro}{\GlsXtrDualBackLink}
%\changes{1.30}{2018-04-25}{new}
+%\changes{1.49}{2022-10-14}{corrected false part}
%\begin{definition}
%\cs{GlsXtrDualBackLink}\marg{text}\marg{label}
%\end{definition}
@@ -30284,7 +39798,7 @@ defined}{}%
\newcommand*{\GlsXtrDualBackLink}[2]{%
\glsxtrifhasfield{\GlsXtrDualField}{#2}%
{\glshyperlink[#1]{\glscurrentfieldvalue}}%
- {#2}%
+ {#1}%
}
% \end{macrocode}
%\end{macro}
@@ -30395,26 +39909,34 @@ defined}{}%
{
% \end{macrocode}
% Default action uses \meta{hcounter}. Equations and pages typically don't
-% have a title, so check the counter name (otherwise the title may
-% section or chapter title, which may be confusing). As from v1.42,
+% have a title, so check the counter name (otherwise the title may be the
+% section or chapter title, which can be confusing). As from v1.42,
% this now checks if the control sequence
-% \cs{glsxtr\meta{counter}locfmt} is defined.
+% \cs{glsxtr\meta{counter}locfmt} is defined. The prefix argument is
+% redundant.
% \begin{macrocode}
\newcommand*{\glsxtrdisplaylocnameref}[8]{%
+ \def\glsxtrrecentanchor{#6}%
+ \def\glsxtrlocationanchor{#2.#7}%
+% \end{macrocode}
+% Initialise \cs{glsxtractualanchor}:
+% \begin{macrocode}
+ \let\glsxtractualanchor\glsxtrlocationanchor
+ \glsxtrsetactualanchor{#2}%
\ifcsdef{glsxtr#2locfmt}%
- {\glsxtrnamereflink{#3}{\csuse{glsxtr#2locfmt}{#4}{#5}}{#2.#7}{#8}}%
+ {\glsxtrnamereflink{#3}{\csuse{glsxtr#2locfmt}{#4}{#5}}{\glsxtractualanchor}{#8}}%
{%
\ifstrempty{#5}%
{%
% \end{macrocode}
%No title, so just use the location as the link text.
% \begin{macrocode}
- \glsxtrnamereflink{#3}{#4}{#2.#7}{#8}%
+ \glsxtrnamereflink{#3}{#4}{\glsxtractualanchor}{#8}%
}%
{%
\ifstrequal{#2}{page}%
- {\glsxtrnamereflink{#3}{#4}{#2.#7}{#8}}%
- {\glsxtrnamereflink{#3}{#5}{#2.#7}{#8}}%
+ {\glsxtrnamereflink{#3}{#4}{\glsxtractualanchor}{#8}}%
+ {\glsxtrtitlednamereflink{#3}{#4}{#5}{#8}}%
}%
}%
}
@@ -30422,6 +39944,26 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtractualanchor}
+%\changes{1.49}{2022-10-14}{new}
+%Does nothing by default. May be redefined to override the default.
+% \begin{macrocode}
+\newcommand{\glsxtrsetactualanchor}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlednamereflink}
+%\begin{definition}
+%\cs{glsxtrtitlednamereflink}\marg{format}\marg{location}\marg{title}\marg{file}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glsxtrtitlednamereflink}[4]{%
+ \glsxtrnamereflink{#1}{#2}{\glsxtrrecentanchor}{#4}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrequationlocfmt}
%\changes{1.42}{2020-02-03}{new}
%\begin{definition}
@@ -30432,6 +39974,20 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrwrglossarylocfmt}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsxtrwrglossarylocfmt}\marg{location}\marg{title}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glsxtrwrglossarylocfmt}[2]{%
+ {\@@glsxtrwrglosscountermark{#1}%
+ \let\glsxtr@wrglossarylocation\@secondoftwo
+ #1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrnamereflink}
%\changes{1.37}{2018-11-30}{new}
%\begin{definition}
@@ -30461,7 +40017,7 @@ defined}{}%
%\begin{macro}{\glsxtrnameloclink}
%\changes{1.37}{2018-11-30}{new}
%\begin{definition}
-%\cs{glsxtrnamerefloclink}\marg{prefix}\marg{counter}\marg{format}\marg{location}\marg{text}\marg{external
+%\cs{glsxtrnameloclink}\marg{prefix}\marg{counter}\marg{format}\marg{location}\marg{text}\marg{external
%file}
%\end{definition}
%Like \cs{@gls@numberlink}, this creates a hyperlink to the
@@ -30546,7 +40102,7 @@ defined}{}%
%\begin{definition}
%\cs{glsxtrSetWidest}\marg{type}\marg{level}\marg{text}
%\end{definition}
-%As from \gls{bib2gls} v1.8, this is used by the \texttt{set-widest}
+%As from \app{bib2gls} v1.8, this is used by the \texttt{set-widest}
%resource option for the \glostyle{alttree} and the styles
%provided by the \sty{glossary-longextra} package.
% \begin{macrocode}
@@ -30677,7 +40233,7 @@ defined}{}%
%\begin{definition}
%\cs{glsxtrSetWidestFallback}\marg{max depth}\marg{list}
%\end{definition}
-%Used when \gls{bib2gls} can't determine the widest name.
+%Used when \app{bib2gls} can't determine the widest name.
%The \meta{list} argument is a comma-separated list of glossary
%labels. The \meta{max depth} refers to the maximum hierarchical
%depth. This will either be 0 (only top-level entries) or 2
@@ -30786,10 +40342,10 @@ defined}{}%
%
%\begin{macro}{\@glsxtr@prefixlabellist}
%\changes{1.37}{2018-11-30}{new}
-%This is provided for the benefit of \gls{bib2gls}. It's possible
+%This is provided for the benefit of \app{bib2gls}. It's possible
%that the user may add more prefixes after the start of the
%document, but that can lead to inconsistencies. The final element
-%of the list (the fallback) is the only prefix of interest for \gls{bib2gls}.
+%of the list (the fallback) is the only prefix of interest for \app{bib2gls}.
% \begin{macrocode}
\AtBeginDocument{%
\protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@prefixlabellist}[1]{}}%
@@ -30798,31 +40354,225 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+% Before v1.49, the last label was used as a fallback, but this
+% doesn't make sense when the first matching label is used when
+% entries are defined. The selection should be deferred to
+% \app{bib2gls}, which means passing the list of label choices to
+% \app{bib2gls}.
+%
+%\begin{macro}{\@glsxtr@dglsnomatch}
+%\changes{1.49}{2022-10-14}{new}
+%No match found so record all possibilities. Requires \app{bib2gls} v3.0+.
+%This will add the final insert argument but won't be able to apply
+%any case-changing etc.
+% \begin{macrocode}
+\def\@glsxtr@dglsnomatch#1#2[#3]{%
+ \begingroup
+% \end{macrocode}
+% This is a cut-down version of \cs{@@glsxtr@record}.
+% Use the fallback label in the event any hooks have to reference
+% \cs{glslabel}. This is mainly to prevent an undefined control
+% sequence error. It can't be relied on as the actual label.
+% \begin{macrocode}
+ \let\glslabel\@gls@thislabel
+ \let\@glsnumberformat\@glsxtr@defaultnumberformat
+ \def\@glsxtr@thevalue{}%
+ \def\@glsxtr@theHvalue{\@glsxtr@thevalue}%
+ \let\@glsxtr@org@theHvalue\@glsxtr@theHvalue
+ \let\@gls@counter\glscounter
+ \if@glsxtr@equations
+ \@glsxtr@use@equation@counter
+ \fi
+ \@gls@setdefault@glslink@opts
+ \@glsxtr@glslink@prekeys
+ \setkeys{glslink}{#1}%
+ \glsxtr@do@autoadd{glslink}%
+% \end{macrocode}
+% Can't increment associated counter.
+% \begin{macrocode}
+ \ifKV@glslink@noindex
+ \GlossariesExtraWarning{Can't obtain a match for prefix
+ candidates: \@glsxtr@prefixedlist. Check the label spelling or rerun}%
+ \else
+ \ifdefempty{\@glsxtr@thevalue}%
+ {%
+ \ifx\@glsxtr@org@theHvalue\@glsxtr@theHvalue
+ \else
+ \let\theHglsentrycounter\@glsxtr@theHvalue
+ \fi
+ }%
+ {%
+ \let\theglsentrycounter\@glsxtr@thevalue
+ \let\theHglsentrycounter\@glsxtr@theHvalue
+ }%
+ \glsxtr@saveentrycounter
+ \@@glsxtr@dorecord\@glsxtr@prefixedlist
+ \glsxtr@select@entry\glsxtr@do@select@nameref@record
+% \end{macrocode}
+% Issue warning.
+% \begin{macrocode}
+ \GlossariesExtraWarning{Can't obtain a match for prefix
+ candidates: \@glsxtr@prefixedlist. Check the label spelling, use bib2gls v3.0+ to
+ select entry and rerun LaTeX}%
+ \fi
+ \@glsxtrundeftag#3%
+ \endgroup
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@select@entry}
+%\changes{1.49}{2022-10-14}{new}
+%Instruction to \app{bib2gls} to select the first found label in the
+%list.
+% \begin{macrocode}
+\newcommand*{\glsxtr@select@entry}[5]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@select@entry@nameref}
+%\changes{1.49}{2022-10-14}{new}
+%Instruction to \app{bib2gls} to select the first found label in the
+%list as though it has a record.
+% \begin{macrocode}
+\newcommand*{\glsxtr@select@entry@nameref}[8]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@do@select@nameref@record}
+%\changes{1.49}{2022-10-14}{new}
+%Instruction to \app{bib2gls} to select the first found label in the
+%list as though it has a record.
+% \begin{macrocode}
+\newcommand*{\glsxtr@do@select@nameref@record}[5]{%
+ \gls@ifnotmeasuring
+ {%
+ \protected@write\@auxout{}{\string\glsxtr@select@entry@nameref
+ {#1}{#2}{#3}{#4}{#5}%
+ {\csuse{@currentlabelname}}{\csuse{@currentHref}}%
+ {\theHglsentrycounter}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifGlsXtrPrefixLabelFallbackLast}
+%\changes{1.49}{2022-10-14}{new}
+% Determine whether the first or last label should be used as the
+% fallback in the event that there's no match on any prefixes.
+% \begin{macrocode}
+\newif\ifGlsXtrPrefixLabelFallbackLast
+\GlsXtrPrefixLabelFallbackLasttrue
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@glsxtr@get@prefixedlabel}
%\changes{1.37}{2018-11-30}{new}
%Iterate through all the prefixes and find the first
%prefix and label combination that exists. If none found, this could
-%mean that it's the first \LaTeX\ run, so the last prefix in the
-%list needs to be the fallback one. Grouping is used in case
-%of a nested for loop.
+%mean that it's the first \LaTeX\ run.
% \begin{macrocode}
\newcommand*{\@glsxtr@get@prefixedlabel}[1]{%
+% \end{macrocode}
+% Grouping is used in case of a nested for loop.
+% \begin{macrocode}
\begingroup
% \end{macrocode}
+%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
%Initialise to the unprefixed label in the event that the list is
%empty.
-%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
% \begin{macrocode}
\protected@edef\@gls@thislabel{#1}%
+% \end{macrocode}
+%Save the first label.
+% \begin{macrocode}
+ \let\@glsxtr@prefixedfirstlabel\@gls@thislabel
+ \def\@glsxtr@set@prefixedfirstlabel{%
+ \let\@glsxtr@prefixedfirstlabel\@gls@thislabel
+ \let\@glsxtr@set@prefixedfirstlabel\relax
+ }%
+% \end{macrocode}
+%List of labels in the event that no combination is found.
+% \begin{macrocode}
+ \let\@glsxtr@prefixedlist\@empty
+% \end{macrocode}
+% Iterate over all labels.
+% \begin{macrocode}
+ \count@=0\relax
\@for\@glsxtr@prefix:=\@glsxtr@labelprefixes\do
{%
+ \advance\count@ by 1\relax
\protected@edef\@gls@thislabel{\@glsxtr@prefix#1}%
- \ifglsentryexists{\@gls@thislabel}{\@endfortrue}{}%
+ \@glsxtr@set@prefixedfirstlabel
+% \end{macrocode}
+% Check if this label exists.
+% \begin{macrocode}
+ \ifglsentryexists{\@gls@thislabel}%
+ {%
+ \@endfortrue
+% \end{macrocode}
+% Found a label that exists. Clear the list.
+% \begin{macrocode}
+ \let\@glsxtr@prefixedlist\@empty
+ }%
+ {%
+% \end{macrocode}
+% Append or prepend to list.
+% \begin{macrocode}
+ \ifdefempty\@glsxtr@prefixedlist
+ {\let\@glsxtr@prefixedlist\@gls@thislabel}%
+ {%
+ \ifGlsXtrPrefixLabelFallbackLast
+ \epreto\@glsxtr@prefixedlist{\expandonce\@gls@thislabel,}%
+ \else
+ \eappto\@glsxtr@prefixedlist{,\expandonce\@gls@thislabel}%
+ \fi
+ }%
+ }%
}%
+ \if@endfor
+% \end{macrocode}
+% Loop ended prematurely, which means label was found.
+% \begin{macrocode}
+ \else
+ \ifnum\count@>1\relax
+ \ifGlsXtrPrefixLabelFallbackLast
+ \else
+% \end{macrocode}
+% Fallback on first label.
+% \begin{macrocode}
+ \let\@gls@thislabel\@glsxtr@prefixedfirstlabel
+ \fi
+ \else
+% \end{macrocode}
+% Only one prefix so assume that one.
+% \begin{macrocode}
+ \let\@glsxtr@prefixedlist\@empty
+ \fi
+ \fi
% \end{macrocode}
%\changes{1.46}{2021-09-20}{changed \cs{x} to \cs{@glo@tmp}}
% \begin{macrocode}
- \edef\@glo@tmp{\endgroup\noexpand\def\noexpand\@gls@thislabel{\@gls@thislabel}}\@glo@tmp
+ \edef\@glo@tmp{\endgroup
+ \noexpand\def\noexpand\@glsxtr@prefixedlist{\expandonce\@glsxtr@prefixedlist}%
+ \noexpand\def\noexpand\@gls@thislabel{\expandonce\@gls@thislabel}}\@glo@tmp
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@dgls@}
+%\changes{1.49}{2022-10-14}{new}
+%Used by all the \cs{dgls}-like commands to find the first match.
+% \begin{macrocode}
+\newcommand*{\@@dgls@}[3]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \ifx\@glsxtr@prefixedlist\@empty
+ \let\@dgls@@next#3%
+ \else
+ \let\@dgls@@next\@glsxtr@dglsnomatch
+ \fi
+ \new@ifnextchar[{\@dgls@@next{#1}{\@gls@thislabel}}%
+ {\@dgls@@next{#1}{\@gls@thislabel}[]}%
}
% \end{macrocode}
%\end{macro}
@@ -30841,10 +40591,7 @@ defined}{}%
%\begin{macro}{\@dgls}
%\changes{1.37}{2018-11-30}{new}
% \begin{macrocode}
-\newcommand*{\@dgls}[2][]{%
- \@glsxtr@get@prefixedlabel{#2}%
- \new@ifnextchar[{\@gls@{#1}{\@gls@thislabel}}{\@gls@{#1}{\@gls@thislabel}[]}%
-}
+\newcommand*{\@dgls}[2][]{\@@dgls@{#1}{#2}{\@gls@}}
% \end{macrocode}
%\end{macro}
%
@@ -30857,42 +40604,35 @@ defined}{}%
%\begin{macro}{\@dglspl}
%\changes{1.37}{2018-11-30}{new}
% \begin{macrocode}
-\newcommand*{\@dglspl}[2][]{%
- \@glsxtr@get@prefixedlabel{#2}%
- \new@ifnextchar[{\@glspl@{#1}{\@gls@thislabel}}{\@glspl@{#1}{\@gls@thislabel}[]}%
-}
+\newcommand*{\@dglspl}[2][]{\@@dgls@{#1}{#2}{\@glspl@}}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\dGls}
% \begin{macrocode}
\newrobustcmd*{\dGls}{\@gls@hyp@opt\@dGls}
+\glsmfuaddmap{\dgls}{\dGls}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@dGls}
%\changes{1.37}{2018-11-30}{new}
% \begin{macrocode}
-\newcommand*{\@dGls}[2][]{%
- \@glsxtr@get@prefixedlabel{#2}%
- \new@ifnextchar[{\@Gls@{#1}{\@gls@thislabel}}{\@Gls@{#1}{\@gls@thislabel}[]}%
-}
+\newcommand*{\@dGls}[2][]{\@@dgls@{#1}{#2}{\@Gls@}}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\dGlspl}
% \begin{macrocode}
\newrobustcmd*{\dGlspl}{\@gls@hyp@opt\@dGlspl}
+\glsmfuaddmap{\dglspl}{\dGlspl}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@dGlspl}
%\changes{1.37}{2018-11-30}{new}
% \begin{macrocode}
-\newcommand*{\@dGlspl}[2][]{%
- \@glsxtr@get@prefixedlabel{#2}%
- \new@ifnextchar[{\@Glspl@{#1}{\@gls@thislabel}}{\@Glspl@{#1}{\@gls@thislabel}[]}%
-}
+\newcommand*{\@dGlspl}[2][]{\@@dgls@{#1}{#2}{\@Glspl@}}
% \end{macrocode}
%\end{macro}
%
@@ -30900,16 +40640,14 @@ defined}{}%
%\changes{1.37}{2018-11-30}{new}
% \begin{macrocode}
\newrobustcmd*{\dGLS}{\@gls@hyp@opt\@dGLS}
+\glsmfublocker{\dGLS}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@dGLS}
%\changes{1.37}{2018-11-30}{new}
% \begin{macrocode}
-\newcommand*{\@dGLS}[2][]{%
- \@glsxtr@get@prefixedlabel{#2}%
- \new@ifnextchar[{\@GLS@{#1}{\@gls@thislabel}}{\@GLS@{#1}{\@gls@thislabel}[]}%
-}
+\newcommand*{\@dGLS}[2][]{\@@dgls@{#1}{#2}{\@GLS@}}
% \end{macrocode}
%\end{macro}
%
@@ -30917,16 +40655,14 @@ defined}{}%
%\changes{1.37}{2018-11-30}{new}
% \begin{macrocode}
\newrobustcmd*{\dGLSpl}{\@gls@hyp@opt\@dGLSpl}
+\glsmfublocker{\dGLSpl}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@dGLSpl}
%\changes{1.37}{2018-11-30}{new}
% \begin{macrocode}
-\newcommand*{\@dGLSpl}[2][]{%
- \@glsxtr@get@prefixedlabel{#2}%
- \new@ifnextchar[{\@GLSpl@{#1}{\@gls@thislabel}}{\@GLSpl@{#1}{\@gls@thislabel}[]}%
-}
+\newcommand*{\@dGLSpl}[2][]{\@@dgls@{#1}{#2}{\@GLSpl@}}
% \end{macrocode}
%\end{macro}
%
@@ -30934,24 +40670,438 @@ defined}{}%
%\changes{1.37}{2018-11-30}{new}
%Like \cs{glslink} but tries the prefixes.
% \begin{macrocode}
-\newrobustcmd*{\dglslink}[3][]{%
+\newrobustcmd*{\dglslink}{\@gls@hyp@opt\@dglslink}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dglslink}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@dglslink}[3][]{%
\@glsxtr@get@prefixedlabel{#2}%
\glslink[#1]{\@gls@thislabel}{#3}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\dGlslink}
+%\changes{1.49}{2022-10-14}{new}
+%Sentence-case version to provide a mapping.
+% \begin{macrocode}
+\newrobustcmd*{\dGlslink}{\@gls@hyp@opt\@dGlslink}
+\glsmfuaddmap{\dglslink}{\dGlslink}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dGlslink}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@dGlslink}[3][]{%
+ \dglslink[#1]{#2}{\glssentencecase{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\dglsdisp}
%\changes{1.37}{2018-11-30}{new}
%Like \cs{glsdisp} but tries the prefixes.
% \begin{macrocode}
-\newrobustcmd*{\dglsdisp}[3][]{%
+\newrobustcmd*{\dglsdisp}{\@gls@hyp@opt\@dglsdisp}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dglsdisp}
+%\changes{1.49}{2022-10-14}{new}
+%Like \cs{glsdisp} but tries the prefixes.
+% \begin{macrocode}
+\newcommand*{\@dglsdisp}[3][]{%
\@glsxtr@get@prefixedlabel{#2}%
\glsdisp[#1]{\@gls@thislabel}{#3}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\dGlsdisp}
+%\changes{1.49}{2022-10-14}{new}
+%Sentence-case version to provide a mapping.
+% \begin{macrocode}
+\newrobustcmd*{\dGlsdisp}{\@gls@hyp@opt\@dGlsdisp}
+\glsmfuaddmap{\dglsdisp}{\dGlsdisp}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dGlsdisp}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@dGlsdisp}[3][]{%
+ \dglsdisp[#1]{#2}{\glssentencecase{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Similar to the above but searches for a match with the given field
+%set.
+%\begin{macro}{\@glsxtr@get@prefixedlabel@field}
+%\changes{1.49}{2022-10-14}{new}
+%The second argument is the field's internal label.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@get@prefixedlabel@field}[2]{%
+ \protected@edef\dglsfieldcurrentfieldlabel{#2}%
+ \let\dglsfieldactualfieldlabel\dglsfieldcurrentfieldlabel
+% \end{macrocode}
+% Grouping is used in case of a nested for loop.
+% \begin{macrocode}
+ \begingroup
+% \end{macrocode}
+%Initialise to the unprefixed label in the event that the list is
+%empty.
+% \begin{macrocode}
+ \protected@edef\@gls@thislabel{#1}%
+% \end{macrocode}
+%Save the first label.
+% \begin{macrocode}
+ \let\@glsxtr@prefixedfirstlabel\@gls@thislabel
+ \def\@glsxtr@set@prefixedfirstlabel{%
+ \let\@glsxtr@prefixedfirstlabel\@gls@thislabel
+ \let\@glsxtr@set@prefixedfirstlabel\relax
+ }%
+% \end{macrocode}
+%Initialise fallback label.
+% \begin{macrocode}
+ \let\@gls@fallbacklabel\relax
+% \end{macrocode}
+%List of labels in the event that no combination is found.
+% \begin{macrocode}
+ \let\@glsxtr@prefixedlist\@empty
+% \end{macrocode}
+% Iterate over all labels.
+% \begin{macrocode}
+ \count@=0\relax
+ \@for\@glsxtr@prefix:=\@glsxtr@labelprefixes\do
+ {%
+ \advance\count@ by 1\relax
+ \protected@edef\@gls@thislabel{\@glsxtr@prefix#1}%
+ \@glsxtr@set@prefixedfirstlabel
+% \end{macrocode}
+% Check if this label exists.
+% \begin{macrocode}
+ \ifglsentryexists{\@gls@thislabel}%
+ {%
+% \end{macrocode}
+% Found a label that exists. Has the field been set?
+% \begin{macrocode}
+ \ifcsvoid{glo@\glsdetoklabel{\@gls@thislabel}@#2}%
+ {%
+% \end{macrocode}
+%Field hasn't been set. Has a fallback been set yet?
+% \begin{macrocode}
+ \ifx\@gls@fallbacklabel\relax
+ \ifcsvoid
+ {glo@\glsdetoklabel{\@gls@thislabel}@\dglsfieldfallbackfieldlabel}%
+ {}%
+ {%
+ \let\@gls@fallbacklabel\@gls@thislabel
+ }%
+ \fi
+ }%
+ {%
+ \@endfortrue
+% \end{macrocode}
+% The field has been set. Clear the list.
+% \begin{macrocode}
+ \let\@glsxtr@prefixedlist\@empty
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Append or prepend to list.
+% \begin{macrocode}
+ \ifdefempty\@glsxtr@prefixedlist
+ {\let\@glsxtr@prefixedlist\@gls@thislabel}%
+ {%
+ \ifGlsXtrPrefixLabelFallbackLast
+ \epreto\@glsxtr@prefixedlist{\expandonce\@gls@thislabel,}%
+ \else
+ \eappto\@glsxtr@prefixedlist{,\expandonce\@gls@thislabel}%
+ \fi
+ }%
+ }%
+ }%
+ \if@endfor
+% \end{macrocode}
+% Loop ended prematurely, which means label was found.
+% \begin{macrocode}
+ \else
+% \end{macrocode}
+% Label not found. Was the fallback field found?
+% \begin{macrocode}
+ \ifx\@gls@fallbacklabel\relax
+% \end{macrocode}
+% No field fallback found.
+% \begin{macrocode}
+ \ifnum\count@>1\relax
+ \ifGlsXtrPrefixLabelFallbackLast
+ \else
+% \end{macrocode}
+% Fallback on first label.
+% \begin{macrocode}
+ \let\@gls@thislabel\@glsxtr@prefixedfirstlabel
+ \fi
+ \else
+% \end{macrocode}
+% Only one prefix so assume that one.
+% \begin{macrocode}
+ \let\@glsxtr@prefixedlist\@empty
+ \fi
+ \else
+% \end{macrocode}
+% Fallback field was found.
+% \begin{macrocode}
+ \let\@gls@thislabel\@gls@fallbacklabel
+ \let\dglsfieldactualfieldlabel\dglsfieldfallbackfieldlabel
+ \fi
+ \fi
+% \end{macrocode}
+%\changes{1.46}{2021-09-20}{changed \cs{x} to \cs{@glo@tmp}}
+% \begin{macrocode}
+ \edef\@glo@tmp{\endgroup
+ \noexpand\def\noexpand\@glsxtr@prefixedlist{\expandonce\@glsxtr@prefixedlist}%
+ \noexpand\def\noexpand\@gls@thislabel{\expandonce\@gls@thislabel}%
+ \noexpand\def\noexpand\dglsfieldactualfieldlabel
+ {\expandonce\dglsfieldactualfieldlabel}%
+ }%
+ \@glo@tmp
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@dgls@@field}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{@@dgls@@field}\marg{options}\marg{label}\marg{field}\marg{cs}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\@@dgls@@field}[4]{%
+ \@glsxtr@get@prefixedlabel@field{#2}{#3}%
+ \ifx\@glsxtr@prefixedlist\@empty
+ \let\@dgls@@next#4%
+ \else
+ \let\@dgls@@next\@glsxtr@dglsnomatch
+ \fi
+ \new@ifnextchar[{\@dgls@@next{#1}{\@gls@thislabel}}%
+ {\@dgls@@next{#1}{\@gls@thislabel}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dglsfieldcurrentfieldlabel}
+%\changes{1.49}{2022-10-14}{new}
+%Set by the \cs{dglsfield} commands to the current field label.
+%This is the field requested in the argument of \cs{dglsfield}.
+% \begin{macrocode}
+\newcommand*{\dglsfieldcurrentfieldlabel}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dglsfieldfallbackfieldlabel}
+%\changes{1.49}{2022-10-14}{new}
+%The field to use if the required field isn't set.
+% \begin{macrocode}
+\newcommand*{\dglsfieldfallbackfieldlabel}{text}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dglsfieldactualfieldlabel}
+%\changes{1.49}{2022-10-14}{new}
+%This is the field that's actually used.
+% \begin{macrocode}
+\newcommand*{\dglsfieldactualfieldlabel}{\dglsfieldcurrentfieldlabel}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dglsfield}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{dglsfield}\oarg{options}\marg{label}\marg{field}\oarg{insert}
+%\end{definition}
+% \begin{macrocode}
+\newrobustcmd*{\dglsfield}{\@gls@hyp@opt\@dglsfield}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dglsfield}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@dglsfield}[3][]{%
+ \@@dgls@@field{#1}{#2}{#3}{\@dgls@field}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dgls@field}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\def\@dgls@field#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsxtrusefield{#2}{\dglsfieldactualfieldlabel}#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dGlsfield}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{dGlsfield}\oarg{options}\marg{label}\marg{field}\oarg{insert}
+%\end{definition}
+% \begin{macrocode}
+\newrobustcmd*{\dGlsfield}{\@gls@hyp@opt\@dGlsfield}
+\glsmfuaddmap{\dglsfield}{\dGlsfield}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dGlsfield}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@dGlsfield}[3][]{%
+ \@@dgls@@field{#1}{#2}{#3}{\@dGls@field}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dGls@field}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\def\@dGls@field#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsxtrusefield{#2}{\dglsfieldactualfieldlabel}#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dGLSfield}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{dGlsfield}\oarg{options}\marg{label}\marg{field}\oarg{insert}
+%\end{definition}
+% \begin{macrocode}
+\newrobustcmd*{\dGLSfield}{\@gls@hyp@opt\@dGLSfield}
+\glsmfublocker{\dGLSfield}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dGLSfield}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@dGLSfield}[3][]{%
+ \@@dgls@@field{#1}{#2}{#3}{\@dGLS@field}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dGLS@field}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\def\@dGLS@field#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\GLSxtrusefield{#2}{\dglsfieldactualfieldlabel}#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\d@inner@glsfield}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{d@inner@glsfield}\marg{default options}\marg{field}\meta{modifier}%
+%\oarg{options}\marg{label}\oarg{insert}
+%\end{definition}
+% \begin{macrocode}
+\newrobustcmd*{\d@inner@glsfield}[2]{%
+ \ifstrempty{#1}
+ {\def\@d@inner@glsfield@opts{}}%
+ {\def\@d@inner@glsfield@opts{#1,}}%
+ \def\dglsfieldcurrentfieldlabel{#2}%
+ \@gls@hyp@opt\@d@inner@glsfield
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@d@inner@glsfield}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@d@inner@glsfield}[2][]{%
+ \expandafter\@@dgls@@field\expandafter
+ {\@d@inner@glsfield@opts#1}{#2}{\dglsfieldcurrentfieldlabel}{\@dgls@field}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\d@inner@Glsfield}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\d@inner@Glsfield}[2]{%
+ \ifstrempty{#1}
+ {\def\@d@inner@glsfield@opts{}}%
+ {\def\@d@inner@glsfield@opts{#1,}}%
+ \def\dglsfieldcurrentfieldlabel{#2}%
+ \@gls@hyp@opt\@d@inner@Glsfield
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@d@inner@Glsfield}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@d@inner@Glsfield}[2][]{%
+ \expandafter\@@dgls@@field\expandafter
+ {\@d@inner@glsfield@opts#1}{#2}{\dglsfieldcurrentfieldlabel}{\@dGls@field}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\d@inner@GLSfield}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\d@inner@GLSfield}[2]{%
+ \ifstrempty{#1}
+ {\def\@d@inner@glsfield@opts{}}%
+ {\def\@d@inner@glsfield@opts{#1,}}%
+ \def\dglsfieldcurrentfieldlabel{#2}%
+ \@gls@hyp@opt\@d@inner@GLSfield
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@d@inner@GLSfield}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@d@inner@GLSfield}[2][]{%
+ \expandafter\@@dgls@@field\expandafter
+ {\@d@inner@glsfield@opts#1}{#2}{\dglsfieldcurrentfieldlabel}{\@dGLS@field}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\newdglsfield}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{newdglsfield}\oarg{options}\marg{field}\marg{cs}
+%\end{definition}
+% \begin{macrocode}
+\newrobustcmd*{\newdglsfield}[3][]{%
+ \newrobustcmd*{#3}{\d@inner@glsfield{#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\newdglsfieldlike}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{newdglsfieldlike}\oarg{options}\marg{field}\marg{cs}\marg{Cs}\marg{CS}
+%\end{definition}
+% \begin{macrocode}
+\newrobustcmd*{\newdglsfieldlike}[5][]{%
+ \newrobustcmd*{#3}{\d@inner@glsfield{#1}{#2}}%
+ \newrobustcmd*{#4}{\d@inner@Glsfield{#1}{#2}}%
+ \newrobustcmd*{#5}{\d@inner@GLSfield{#1}{#2}}%
+ \glsmfuaddmap{#3}{#4}%
+ \glsmfublocker{#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%Multi (compound/combined) entry commands used by \app{bib2gls}.
%\begin{macro}{\glsxtrmultientryadjustedname}
%\begin{definition}
@@ -31000,6 +41150,7 @@ defined}{}%
\@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}%
\egroup
}
+\glsmfuaddmap{\glsxtrmultientryadjustedname}{\Glsxtrmultientryadjustedname}
% \end{macrocode}
%\end{macro}
%
@@ -31019,6 +41170,7 @@ defined}{}%
\@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}%
\egroup
}
+\glsmfublocker{\GlsXtrmultientryadjustedname}
% \end{macrocode}
%\end{macro}
%
@@ -31038,6 +41190,7 @@ defined}{}%
\@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}%
\egroup
}
+\glsmfublocker{\GLSxtrmultientryadjustedname}
% \end{macrocode}
%\end{macro}
%
@@ -31122,7 +41275,7 @@ defined}{}%
%\begin{macro}{\Glsxtrmultientryadjustednamefmt}
%\changes{1.48}{2021-11-22}{new}
% \begin{macrocode}
-\newcommand*{\Glsxtrmultientryadjustednamefmt}[1]{\makefirstuc{#1}}
+\newcommand*{\Glsxtrmultientryadjustednamefmt}[1]{\glssentencecase{#1}}
% \end{macrocode}
%\end{macro}
%
@@ -31158,14 +41311,14 @@ defined}{}%
%\changes{1.48}{2021-11-22}{new}
% \begin{macrocode}
\newcommand*{\GLSxtrmultientryadjustednameother}[1]{%
- \mfirstucMakeUppercase{\glsentryname{#1}}}
+ \glsuppercase{\glsentryname{#1}}}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\GLSxtrmultientryadjustednamefmt}
%\changes{1.48}{2021-11-22}{new}
% \begin{macrocode}
-\newcommand*{\GLSxtrmultientryadjustednamefmt}[1]{\mfirstucMakeUppercase{#1}}
+\newcommand*{\GLSxtrmultientryadjustednamefmt}[1]{\glsuppercase{#1}}
% \end{macrocode}
%\end{macro}
%
@@ -31406,7 +41559,7 @@ defined}{}%
%of \cs{IfTrackedLanguageFileExists} in the \sty{tracklang} manual
%for the allowed forms of \meta{tag}. The simplest is to just use
%the root language label or ISO code. The file will then be automatically loaded
-%by \styfmt{glossaries-extra} if the document has support for that
+%by \sty{glossaries-extra} if the document has support for that
%language.
%
%When combining these blocks of rules, remember to separate them
@@ -31416,7 +41569,7 @@ defined}{}%
% ;\glsxtrspacerules
% ;\glsxtrnonprintablerules
% ;\glsxtrcombiningdiacriticrules
-% ,\glsxtrhyphenrules
+% ;\glsxtrhyphenrules
% <\glsxtrgeneralpuncrules
% <\glsxtrdigitrules
% <\glsxtrfractionrules
@@ -31425,6 +41578,34 @@ defined}{}%
%}
%\end{verbatim}
%
+%\begin{macro}{\glsxtrIgnorableRules}
+%\changes{1.49}{2022-10-14}{new}
+%A shortcut command for common ignorable characters.
+% \begin{macrocode}
+\newcommand{\glsxtrIgnorableRules}{%
+ \glsxtrcontrolrules
+ \string;\glsxtrspacerules
+ \string;\glsxtrnonprintablerules
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralInitRules}
+%\changes{1.49}{2022-10-14}{new}
+%A shortcut command for common initial rules for ignorables,
+%diacritics, punctuation and digits.
+% \begin{macrocode}
+\newcommand{\glsxtrGeneralInitRules}{%
+ \glsxtrIgnorableRules
+ \string;\glsxtrcombiningdiacriticrules
+ \string;\glsxtrhyphenrules
+ \string<\glsxtrgeneralpuncrules
+ \string<\glsxtrdigitrules
+ \string<\glsxtrfractionrules
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrcontrolrules}
%\changes{1.27}{2018-02-26}{new}
%These are control characters that are usually placed at the start
@@ -31671,6 +41852,20 @@ defined}{}%
%First set of general punctuation.
% \begin{macrocode}
\newcommand*{\glsxtrgeneralpuncIrules}{%
+ \glsxtrgeneralpuncmarksrules
+ \string<\glsxtrgeneralpuncaccentsrules
+ \string<\glsxtrgeneralpuncquoterules
+ \string<\glsxtrgeneralpuncbracketrules
+ \string<\glsxtrgeneralpuncsignrules
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrgeneralpuncmarksrules}
+%\changes{1.49}{2022-10-14}{new}
+%Punctuation marks subset.
+% \begin{macrocode}
+\newcommand*{\glsxtrgeneralpuncmarksrules}{%
\string'\glshex 005F\string'% underscore
\string<\glshex 00AF% macron
\string<\string'\glshex 002C\string'% comma
@@ -31682,18 +41877,45 @@ defined}{}%
\string<\glshex 00BF% inverted question mark
\string<\string'\glshex 002F\string'% solidus
\string<\string'\glshex 002E\string'% full stop
- \string<\glshex 00B4% acute accent
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrgeneralpuncaccentsrules}
+%\changes{1.49}{2022-10-14}{new}
+%Punctuation marks subset: accent characters.
+% \begin{macrocode}
+\newcommand*{\glsxtrgeneralpuncaccentsrules}{%
+ \glshex 00B4% acute accent
\string<\string'\glshex 0060\string'% grave accent
\string<\string'\glshex 005E\string'% circumflex accent
\string<\glshex 00A8% diaersis
\string<\string'\glshex 007E\string'% tilde
\string<\glshex 00B7% middle dot
\string<\glshex 00B8% cedilla
- \string<\string'\glshex 0027\string'% straight apostrophe
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrgeneralpuncquoterules}
+%\changes{1.49}{2022-10-14}{new}
+%Punctuation marks subset: quotes.
+% \begin{macrocode}
+\newcommand*{\glsxtrgeneralpuncquoterules}{%
+ \string'\glshex 0027\string'% straight apostrophe
\string<\string'\glshex 0022\string'% straight double quote
\string<\glshex 00AB% left guillemet
\string<\glshex 00BB% right guillemet
- \string<\string'\glshex 0028\string'% left parenthesis
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrgeneralpuncbracketrules}
+%\changes{1.49}{2022-10-14}{new}
+%Punctuation marks subset: brackets.
+% \begin{macrocode}
+\newcommand*{\glsxtrgeneralpuncbracketrules}{%
+ \string'\glshex 0028\string'% left parenthesis
\string=\glshex 207D\string=\glshex 208D% super/subscript left parenthesis
\string<\string'\glshex 0029\string'% right parenthesis
\string=\glshex 207E\string=\glshex 208E% super/subscript right parenthesis
@@ -31701,7 +41923,16 @@ defined}{}%
\string<\string'\glshex 005D\string'% right square bracket
\string<\string'\glshex 007B\string'% left curly bracket
\string<\string'\glshex 007D\string'% right curly bracket
- \string<\glshex 00A7% section sign
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrgeneralpuncsignrules}
+%\changes{1.49}{2022-10-14}{new}
+%Punctuation marks subset: signs.
+% \begin{macrocode}
+\newcommand*{\glsxtrgeneralpuncsignrules}{%
+ \glshex 00A7% section sign
\string<\glshex 00B6% pilcrow sign
\string<\glshex 00A9% copyright sign
\string<\glshex 00AE% registered sign
@@ -32078,6 +42309,115 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%Fragments.
+%\begin{macro}{\glsxtrGeneralLatinAtoMrules}
+%\changes{1.49}{2022-10-14}{new}
+%Basic Latin alphabet A--M.
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinAtoMrules}{%
+ \glsxtrLatinA
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralLatinNtoZrules}
+%\changes{1.49}{2022-10-14}{new}
+%Basic Latin alphabet N--Z.
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinNtoZrules}{%
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string<\glsxtrLatinT
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralLatinAtoGrules}
+%\changes{1.49}{2022-10-14}{new}
+%Basic Latin alphabet A--G.
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinAtoGrules}{%
+ \glsxtrLatinA
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralLatinHtoMrules}
+%\changes{1.49}{2022-10-14}{new}
+%Basic Latin alphabet H--M.
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinHtoMrules}{%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralLatinNtoSrules}
+%\changes{1.49}{2022-10-14}{new}
+%Basic Latin alphabet N--S.
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinNtoSrules}{%
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\glsxtrGeneralLatinTtoZrules}
+%\changes{1.49}{2022-10-14}{new}
+%Basic Latin alphabet T--Z.
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinTtoZrules}{%
+ \string<\glsxtrLatinT
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
%\begin{macro}{\glsxtrLatinA}
%\changes{1.27}{2018-02-26}{new}
% \begin{macrocode}
@@ -32207,20 +42547,22 @@ defined}{}%
%
%\begin{macro}{\glsxtrLatinEszettSs}
%\changes{1.27}{2018-02-26}{new}
+%\SS=ss
% \begin{macrocode}
\newcommand*{\glsxtrLatinEszettSs}{%
\glshex 00DF% eszett
- \string=\glshex 017Fs % long S s
+ \string=\glshex 017Fs % "long S"s
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\glsxtrLatinEszettSz}
%\changes{1.27}{2018-02-26}{new}
+%\SS=sz
% \begin{macrocode}
\newcommand*{\glsxtrLatinEszettSz}{%
\glshex 00DF% eszett
- \string= \glshex 017Fz % long S z
+ \string= \glshex 017Fz % "long S"z
}
% \end{macrocode}
%\end{macro}
@@ -33363,7 +43705,7 @@ defined}{}%
%If \cs{glsxtr@loaddialect} has been defined, then
%\sty{glossaries-extra-bib2gls} has been loaded after
%\sty{glossaries-extra}. (For example, through
-%\ics{glossariesextrasetup}.) Not recommended, but if this has been
+%\cs{glossariesextrasetup}.) Not recommended, but if this has been
%done try to find the associated language resources.
% \begin{macrocode}
\ifdef\glsxtr@loaddialect
@@ -33390,16 +43732,24 @@ defined}{}%
%<*glossaries-extra-stylemods.sty>
% \end{macrocode}
%\fi
-%\chapter{Style Adjustments (\styfmt{glossaries-extra-stylemods.sty})}
+%\section{Style Adjustments (\sty{glossaries-extra-stylemods.sty})}
% This package adjusts the predefined styles so that they include the post
% description hook. Also, some other minor adjustments may be made
% to make existing styles more flexible.
%
-%\section{Package Initialisation}
+%\subsection{Package Initialisation}
% First identify package:
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossaries-extra-stylemods}[2021/11/22 v1.48 (NLCT)]
+% \end{macrocode}
+% Rollback releases:
+% \begin{macrocode}
+\DeclareRelease{v1.48}{2021-11-22}{glossaries-extra-stylemods-2021-11-22.sty}
+\DeclareCurrentRelease{v1.49}{2022-10-14}
+% \end{macrocode}
+% Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossaries-extra-stylemods}[2022/10/14 v1.49 (NLCT)]
% \end{macrocode}
% Provide package options to automatically load required predefined
% styles. The simplest method is to just test for the existence of
@@ -33414,8 +43764,8 @@ defined}{}%
%
%\begin{option}{all}
%\changes{1.21}{2017-11-03}{new}
-%\changes{1.38}{2018-12-01}{added \styfmt{glossary-longextra}}
-%\changes{1.40}{2019-03-22}{added \styfmt{glossary-topic}}
+%\changes{1.38}{2018-12-01}{added \sty{glossary-longextra}}
+%\changes{1.40}{2019-03-22}{added \sty{glossary-topic}}
%Provide all known styles.
% \begin{macrocode}
\DeclareOption{all}{%
@@ -33485,7 +43835,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\section{List-Like Styles}
+%\subsection{List-Like Styles}
% The list-like styles mostly already use the post description hook.
% Only the \glostyle{listdotted} style need modifying to add this.
% \begin{macrocode}
@@ -33615,6 +43965,13 @@ defined}{}%
{\glslistinit\begin{description}}{\end{description}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}. This
+% does nothing as the sub-entries don't have the name displayed for
+% the list styles.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand*{\glossentry}[2]{%
\glslistitem{##1}\glslistdesc{##1}\glslistprelocation ##2}%
\renewcommand*{\subglossentry}[3]{%
@@ -33665,10 +44022,15 @@ defined}{}%
\ifdef{\@glsstyle@listgroup}
{%
% \end{macrocode}
-%\begin{macro}{\glslistgroupafterheader}
+%\begin{macro}{\glslistgroupheaderitem}
%\changes{1.47}{2021-11-04}{new}
% \begin{macrocode}
\newcommand{\glslistgroupheaderitem}[2]{\item[{#2}]}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslistgroupafterheader}
+%\changes{1.47}{2021-11-04}{new}
+% \begin{macrocode}
\newcommand{\glslistgroupafterheader}{%
\mbox{}\par\nobreak\@afterheading
}
@@ -33741,7 +44103,7 @@ defined}{}%
{}
% \end{macrocode}
%
-%\section{Longtable Styles}
+%\subsection{Longtable Styles}
% The three and four column styles require adjustment to add the
% post-description hook. The two column styles need the hard-coded
% \cs{space} changed to \cs{glsxtrprelocation}.
@@ -33754,6 +44116,13 @@ defined}{}%
{\end{longtable}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}. This
+% does nothing as the sub-entries don't have the name displayed for
+% the long styles.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glossentrydesc{##1}\glspostdescription
@@ -33784,6 +44153,13 @@ defined}{}%
{\end{longtable}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}. This
+% does nothing as the sub-entries don't have the name displayed for
+% the long styles.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glossentrydesc{##1}\glspostdescription & ##2\tabularnewline
@@ -33818,6 +44194,13 @@ defined}{}%
{\end{longtable}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}. This
+% does nothing as the sub-entries don't have the name displayed for
+% the long styles.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glossentrydesc{##1}\glspostdescription &
@@ -33847,7 +44230,7 @@ defined}{}%
%styles in \sty{glossary-long}, so no adjustments are needed for
%that package.
%
-%\section{Long Ragged Styles}
+%\subsection{Long Ragged Styles}
% The three and four column styles require adjustment for the
% post-description hook, but not the two column styles. However, the
% two-column styles need to have \cs{space} replaced with
@@ -33861,6 +44244,13 @@ defined}{}%
{\end{longtable}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}. This
+% does nothing as the sub-entries don't have the name displayed for
+% the longragged styles.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glossentrydesc{##1}\glspostdescription\glsxtrprelocation ##2%
@@ -33894,6 +44284,13 @@ defined}{}%
{\end{longtable}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}. This
+% does nothing as the sub-entries don't have the name displayed for
+% the longragged styles.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glossentrydesc{##1}\glspostdescription & ##2\tabularnewline
@@ -33927,6 +44324,13 @@ defined}{}%
{\end{longtable}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}. This
+% does nothing as the sub-entries don't have the name displayed for
+% the longragged styles.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glossentrydesc{##1}\glspostdescription & \glossentrysymbol{##1} &
@@ -33951,7 +44355,7 @@ defined}{}%
{}
% \end{macrocode}
%
-%\section{Supertabular Styles}
+%\subsection{Supertabular Styles}
% The three and four column styles require adjustment to add the
% post-description hook. The two column styles need the hard-coded
% \cs{space} changed to \cs{glsxtrprelocation}.
@@ -33965,6 +44369,13 @@ defined}{}%
{\end{supertabular}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}. This
+% does nothing as the sub-entries don't have the name displayed for
+% the super styles.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glossentrydesc{##1}\glspostdescription
@@ -33996,6 +44407,13 @@ defined}{}%
{\end{supertabular}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}. This
+% does nothing as the sub-entries don't have the name displayed for
+% the super styles.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glossentrydesc{##1}\glspostdescription & ##2\tabularnewline
@@ -34029,6 +44447,13 @@ defined}{}%
\end{supertabular}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}. This
+% does nothing as the sub-entries don't have the name displayed for
+% the super styles.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glossentrydesc{##1}\glspostdescription &
@@ -34053,7 +44478,7 @@ defined}{}%
{}
% \end{macrocode}
%
-%\section{Super Ragged Styles}
+%\subsection{Super Ragged Styles}
% The three and four column styles require adjustment for the
% post-description hook, but not the two column styles. However, the
% two-column styles need to have \cs{space} replaced with
@@ -34068,6 +44493,13 @@ defined}{}%
{\end{supertabular}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}. This
+% does nothing as the sub-entries don't have the name displayed for
+% the super styles.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glossentrydesc{##1}\glspostdescription\glsxtrprelocation ##2%
@@ -34101,6 +44533,13 @@ defined}{}%
{\end{supertabular}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}. This
+% does nothing as the sub-entries don't have the name displayed for
+% the super styles.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glossentrydesc{##1}\glspostdescription &
@@ -34159,7 +44598,7 @@ defined}{}%
{}
% \end{macrocode}
%
-%\section{Inline Style}
+%\subsection{Inline Style}
% The \glostyle{inline} style is dealt with slightly differently.
% The \cs{glspostdescription} hook is actually in
% \cs{glspostinline}, which is called at the end of the glossary.
@@ -34187,7 +44626,7 @@ defined}{}%
{}
% \end{macrocode}
%
-%\section{Tree Styles}
+%\subsection{Tree Styles}
% Redefine both \cs{glstreenamefmt} and \cs{glstreegroupheaderfmt}
% in terms of \cs{glstreedefaultnamefmt} to make it easier to change
% both at the same time or only change one without affecting the
@@ -34232,6 +44671,17 @@ defined}{}%
\newcommand{\glstreePreHeader}[2]{}
% \end{macrocode}
%\end{macro}
+%
+%\begin{macro}{\glstreeSubPreHeader}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glstreeSubPreHeader}\marg{previous group level}\marg{level}\marg{parent label}\marg{group label}\marg{title}
+%\end{definition}
+% \begin{macrocode}
+ \newcommand{\glstreeSubPreHeader}[5]{}
+% \end{macrocode}
+%\end{macro}
+%
% \begin{macrocode}
}
{}
@@ -34288,6 +44738,11 @@ defined}{}%
{\par}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand*{\glossentry}[2]{%
\item\glsentryitem{##1}%
\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
@@ -34320,14 +44775,57 @@ defined}{}%
% \begin{macrocode}
\ifdef{\@glsstyle@indexgroup}
{%
+% \end{macrocode}
+% Provide formatting command for sub-headings to make it easier to
+% adjust.
+%\begin{macro}{\glsindexsubgroupitem}
+%\begin{definition}
+%\cs{glsindexsubgroupitem}\marg{previous group level}\marg{level}\marg{parent label}\marg{group label}\marg{title}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsindexsubgroupitem}[5]{%
+ \ifcase#2\relax
+% \end{macrocode}
+%This case shouldn't occur as \cs{glsgroupheading} will be used
+%instead, but include for completeness.
+% \begin{macrocode}
+ \item \glstreegroupheaderfmt{#5}%
+ \glstreegroupheaderskip
+ \or
+ \smallskip
+ \subitem \glstreegroupheaderfmt{#5}%
+ \smallskip
+ \else
+ \smallskip
+ \subsubitem \glstreegroupheaderfmt{#5}%
+ \smallskip
+ \fi
+ }
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
\renewglossarystyle{indexgroup}{%
\setglossarystyle{index}%
+% \end{macrocode}
+% Group heading.
+% \begin{macrocode}
\renewcommand*{\glsgroupheading}[1]{%
\glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
\glstreePreHeader{##1}{\glsxtr@grptitle}%
\item\glstreegroupheaderfmt{\glsxtr@grptitle}%
\glstreegroupheaderskip\@afterheading
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ \glsindexsubgroupitem{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ \@afterheading
+ }%
}
}
{}
@@ -34344,12 +44842,26 @@ defined}{}%
\renewcommand*{\glossaryheader}{%
\item\glstreenavigationfmt{\glsnavigation}%
\glstreegroupheaderskip\@afterheading}%
+% \end{macrocode}
+% Group heading.
+% \begin{macrocode}
\renewcommand*{\glsgroupheading}[1]{%
\glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
\glstreePreHeader{##1}{\glsxtr@grptitle}%
\item\glstreegroupheaderfmt
{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
\glstreegroupheaderskip\@afterheading}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ \glsindexsubgroupitem{##1}{##2}{##3}{##4}%
+ {\glsnavhypertarget{##4}{\glsxtr@grptitle}}%
+ \@afterheading
+ }%
}%
}
{}
@@ -34368,13 +44880,13 @@ defined}{}%
%\begin{macro}{\glsxtrtreepredesc}
%\changes{1.46}{2021-09-20}{new}
% \begin{macrocode}
-\newcommand{\glsxtrtreepredesc}{\glstreepredesc}
+ \newcommand{\glsxtrtreepredesc}{\glstreepredesc}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\glsxtrtreechildpredesc}
%\changes{1.46}{2021-09-20}{new}
% \begin{macrocode}
-\newcommand{\glsxtrtreechildpredesc}{\glstreechildpredesc}
+ \newcommand{\glsxtrtreechildpredesc}{\glstreechildpredesc}
% \end{macrocode}
%\end{macro}
%Provide a command for use with the \glostyle{tree} styles that displays
@@ -34456,6 +44968,7 @@ defined}{}%
}%
% \end{macrocode}
%\end{macro}
+%Redefine tree style.
% \begin{macrocode}
\renewglossarystyle{tree}{%
\renewenvironment{theglossary}%
@@ -34463,7 +44976,18 @@ defined}{}%
\setlength{\parskip}{0pt plus 0.3pt}}%
{}%
\renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% Group heading.
+% \begin{macrocode}
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
+% \end{macrocode}
+% Top level entry.
+% \begin{macrocode}
\renewcommand{\glossentry}[2]{%
\hangindent0pt\relax
\parindent0pt\relax
@@ -34471,6 +44995,9 @@ defined}{}%
\glstreesymbol{##1}%
\glstreeDescLoc{##1}{##2}\par
}%
+% \end{macrocode}
+% Sub entries.
+% \begin{macrocode}
\renewcommand{\subglossentry}[3]{%
\hangindent##1\glstreeindent\relax
\parindent##1\glstreeindent\relax
@@ -34494,13 +45021,42 @@ defined}{}%
% \begin{macrocode}
\ifdef{\@glsstyle@treegroup}
{%
+% \end{macrocode}
+% Provide formatting command for sub-headings to make it easier to
+% adjust.
+%\begin{macro}{\glstreesubgroupitem}
+%\begin{definition}
+%\cs{glstreesubgroupitem}\marg{previous group level}\marg{level}\marg{parent label}\marg{group label}\marg{title}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glstreesubgroupitem}[5]{%
+ \par\smallskip\noindent\hspace{#2\glstreeindent}%
+ \glstreegroupheaderfmt{#5}\smallskip\par
+ }
+% \end{macrocode}
+%\end{macro}
+% Redefine treegroup style.
+% \begin{macrocode}
\renewglossarystyle{treegroup}{%
\setglossarystyle{tree}%
+% \end{macrocode}
+% Group heading.
+% \begin{macrocode}
\renewcommand{\glsgroupheading}[1]{%
\glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
\glstreePreHeader{##1}{\glsxtr@grptitle}%
\par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}%
\glstreegroupheaderskip\@afterheading}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ \glstreesubgroupitem{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ }%
}
}
{}
@@ -34517,6 +45073,9 @@ defined}{}%
\renewcommand*{\glossaryheader}{%
\par\noindent\glstreenavigationfmt{\glsnavigation}%
\glstreegroupheaderskip\@afterheading}%
+% \end{macrocode}
+% Group heading.
+% \begin{macrocode}
\renewcommand*{\glsgroupheading}[1]{%
\glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
\glstreePreHeader{##1}{\glsxtr@grptitle}%
@@ -34524,6 +45083,16 @@ defined}{}%
\glstreegroupheaderfmt
{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
\glstreegroupheaderskip\@afterheading}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ \glstreesubgroupitem{##1}{##2}{##3}{##4}%
+ {\glsnavhypertarget{##4}{\glsxtr@grptitle}}%
+ }%
}
}
{}
@@ -34581,6 +45150,7 @@ defined}{}%
}
% \end{macrocode}
%\end{macro}
+%Redefine treenoname style
% \begin{macrocode}
\renewglossarystyle{treenoname}{%
\renewenvironment{theglossary}%
@@ -34588,7 +45158,15 @@ defined}{}%
\setlength{\parskip}{0pt plus 0.3pt}}%
{}%
\renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% Group heading.
+% \begin{macrocode}
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\hangindent0pt\relax
\parindent0pt\relax
@@ -34615,7 +45193,8 @@ defined}{}%
% \end{macrocode}
%
% The \glostyle{treenonamegroup} style is redefined to discourage a page
-% break after the heading.
+% break after the heading. There are no sub-groups as sub-entries
+% don't have the name shown.
%\changes{1.21}{2017-11-03}{redefined \texttt{treenonamegroup} to discourage
%breaks after group headings}
% \begin{macrocode}
@@ -34888,7 +45467,7 @@ defined}{}%
%
%\begin{macro}{\glsFindWidestTopLevelName}
%CamelCase is easier for long command names. Provide a CamelCase
-%synonym of \ics{glsfindwidesttoplevelname}.
+%synonym of \cs{glsfindwidesttoplevelname}.
% \begin{macrocode}
\let\glsFindWidestTopLevelName\glsfindwidesttoplevelname
% \end{macrocode}
@@ -35164,7 +45743,7 @@ defined}{}%
%\begin{macro}{\glsFindWidestUsedAnyNameSymbolLocation}
%\changes{1.05}{2016-06-10}{new}
% Like the \cs{glsFindWidestUsedAnyNameSymbol} but also measures the
-% location list. This requires \ics{glsentrynumberlist}.
+% location list. This requires \cs{glsentrynumberlist}.
% The length of the widest symbol is stored in the second argument
% should be a length register. The length of the widest location
% list is stored in the third argument, which should also be a
@@ -35280,7 +45859,7 @@ defined}{}%
%\begin{macro}{\glsFindWidestAnyNameLocation}
%\changes{1.05}{2016-06-10}{new}
% Like the \cs{glsFindWidestAnyNameLocation} but doesn't
-% check the \gls{firstuse} flag.
+% check the first use flag.
% \begin{macrocode}
\newrobustcmd*{\glsFindWidestAnyNameLocation}[2][\@glo@types]{%
\dimen@=0pt\relax
@@ -35369,6 +45948,11 @@ defined}{}%
{\par}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{}%
\renewcommand{\glossentry}[2]{%
\ifnum\@gls@prevlevel=0\relax
\else
@@ -35426,7 +46010,24 @@ defined}{}%
%breaks after group headings}
% \begin{macrocode}
\ifdef{\@glsstyle@alttreegroup}
-{%
+{
+% \end{macrocode}
+%\begin{macro}{\glsalttreesubgroupitem}
+%\begin{definition}
+%\cs{glsalttreesubgroupheader}\marg{previous group level}\marg{group
+%level}\marg{parent label}\marg{group label}\marg{title}\marg{width}
+%\end{definition}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand*{\glsalttreesubgroupheader}[6]{%
+ \par\smallskip
+ \makebox[0pt][r]{\glstreenamebox{#6}%
+ {\glstreegroupheaderfmt{#5}}}%
+ \smallskip\par
+ }
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
\renewglossarystyle{alttreegroup}{%
\setglossarystyle{alttree}%
\renewcommand{\glsgroupheading}[1]{\par
@@ -35442,6 +46043,52 @@ defined}{}%
% \begin{macrocode}
\glstreegroupheaderskip
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+% \end{macrocode}
+%This is similar to \cs{subglossentry}
+% \begin{macrocode}
+ \ifnum\@gls@prevlevel=##2\relax
+ \else
+ \ifcsundef{@glswidestname\romannumeral##2}%
+ {%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}%
+ }%
+ {%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##2\endcsname\space}}%
+ }%
+ \ifnum\@gls@prevlevel<##2\relax
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+ \ifnum\@gls@prevlevel=0\relax
+ \glsxtrComputeTreeIndent{##2}%
+ \else
+ \ifcsundef{@glswidestname\romannumeral##2}%
+ {%
+ \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}%
+ }%
+ {%
+ \settowidth{\glstreeindent}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##2\endcsname\space}}%
+ }%
+ \fi
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+ \glsxtrAltTreeSetSubHangIndent{##2}%
+ \glsalttreesubgroupheader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}{\gls@tmplen}%
+ \def\@gls@prevlevel{##2}%
+ \par
+ }%
}%
}%
{%
@@ -35481,13 +46128,60 @@ defined}{}%
% \begin{macrocode}
\glstreegroupheaderskip
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+% \end{macrocode}
+%This is similar to \cs{subglossentry}
+% \begin{macrocode}
+ \ifnum\@gls@prevlevel=##2\relax
+ \else
+ \ifcsundef{@glswidestname\romannumeral##2}%
+ {%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}%
+ }%
+ {%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##2\endcsname\space}}%
+ }%
+ \ifnum\@gls@prevlevel<##2\relax
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+ \ifnum\@gls@prevlevel=0\relax
+ \glsxtrComputeTreeIndent{##2}%
+ \else
+ \ifcsundef{@glswidestname\romannumeral##2}%
+ {%
+ \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}%
+ }%
+ {%
+ \settowidth{\glstreeindent}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##2\endcsname\space}}%
+ }%
+ \fi
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+ \glsxtrAltTreeSetSubHangIndent{##2}%
+ \glsalttreesubgroupheader{##1}{##2}{##3}{##4}%
+ {\glsnavhypertarget{##4}{\glsxtr@grptitle}}{\gls@tmplen}%
+ \def\@gls@prevlevel{##2}%
+ \par
+ }%
}
}%
{%
}
% \end{macrocode}
%
-%\section{Multicolumn Styles}
+%\subsection{Multicolumn Styles}
%Adjust \glostyle{mcolindexgroup} to discourage page breaks after
%the group headings.
%\changes{1.21}{2017-11-03}{redefined \texttt{mcolindexgroup} to discourage
@@ -35497,12 +46191,25 @@ defined}{}%
{%
\renewglossarystyle{mcolindexgroup}{%
\setglossarystyle{mcolindex}%
+% \end{macrocode}
+% Group heading as \glostyle{indexgroup}.
+% \begin{macrocode}
\renewcommand*{\glsgroupheading}[1]{%
\glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
\glstreePreHeader{##1}{\glsxtr@grptitle}%
\item\glstreegroupheaderfmt{\glsxtr@grptitle}%
\glstreegroupheaderskip\@afterheading
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ \glsindexsubgroupitem{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ \@afterheading
+ }%
}
}%
{%
@@ -35523,6 +46230,9 @@ defined}{}%
% \begin{macrocode}
\glstreegroupheaderskip\@afterheading
}%
+% \end{macrocode}
+% Group heading.
+% \begin{macrocode}
\renewcommand*{\glsgroupheading}[1]{%
\glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
\glstreePreHeader{##1}{\glsxtr@grptitle}%
@@ -35530,6 +46240,17 @@ defined}{}%
{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
\glstreegroupheaderskip\@afterheading
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ \glsindexsubgroupitem{##1}{##2}{##3}{##4}%
+ {\glsnavhypertarget{##4}{\glsxtr@grptitle}}%
+ \@afterheading
+ }%
}
}%
{%
@@ -35550,6 +46271,9 @@ defined}{}%
\setlength{\parskip}{0pt plus 0.3pt}%
\let\item\glstreeitem}%
{\end{multicols}}%
+% \end{macrocode}
+% Group heading.
+% \begin{macrocode}
\renewcommand*{\glsgroupheading}[1]{%
\glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
\glstreePreHeader{##1}{\glsxtr@grptitle}%
@@ -35557,6 +46281,17 @@ defined}{}%
{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
\glstreegroupheaderskip\@afterheading
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ \glsindexsubgroupitem{##1}{##2}{##3}{##4}%
+ {\glsnavhypertarget{##4}{\glsxtr@grptitle}}%
+ \@afterheading
+ }%
}
}%
{%
@@ -35570,12 +46305,24 @@ defined}{}%
{%
\renewglossarystyle{mcoltreegroup}{%
\setglossarystyle{mcoltree}%
+% \end{macrocode}
+% Group heading.
+% \begin{macrocode}
\renewcommand{\glsgroupheading}[1]{%
\glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
\glstreePreHeader{##1}{\glsxtr@grptitle}%
\par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}%
\glstreegroupheaderskip\@afterheading
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ \glstreesubgroupitem{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ }%
}
}%
{%
@@ -35593,6 +46340,9 @@ defined}{}%
\par\noindent\glstreenavigationfmt{\glsnavigation}%
\glstreegroupheaderskip
}%
+% \end{macrocode}
+% Group heading.
+% \begin{macrocode}
\renewcommand*{\glsgroupheading}[1]{%
\glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
\glstreePreHeader{##1}{\glsxtr@grptitle}%
@@ -35600,6 +46350,16 @@ defined}{}%
\glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
\glstreegroupheaderskip\@afterheading
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ \glstreesubgroupitem{##1}{##2}{##3}{##4}%
+ {\glsnavhypertarget{##4}{\glsxtr@grptitle}}%
+ }%
}
}%
{%
@@ -35621,6 +46381,9 @@ defined}{}%
\setlength{\parskip}{0pt plus 0.3pt}%
}%
{\end{multicols}}%
+% \end{macrocode}
+% Group heading.
+% \begin{macrocode}
\renewcommand*{\glsgroupheading}[1]{%
\glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
\glstreePreHeader{##1}{\glsxtr@grptitle}%
@@ -35628,6 +46391,16 @@ defined}{}%
\glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
\glstreegroupheaderskip\@afterheading
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+ \glstreesubgroupitem{##1}{##2}{##3}{##4}%
+ {\glsnavhypertarget{##4}{\glsxtr@grptitle}}%
+ }%
}
}%
{%
@@ -35636,6 +46409,8 @@ defined}{}%
%Similarly for \glostyle{mcoltreenonamegroup}.
%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreenonamegroup} to discourage
%breaks after group headings}
+%There are no sub-groups for this style as it doesn't show the name
+%of the child entries.
% \begin{macrocode}
\ifdef{\@glsstyle@mcoltreenonamegroup}
{%
@@ -35742,6 +46517,52 @@ defined}{}%
\glstreegroupheaderfmt{\glsxtr@grptitle}%
\glstreegroupheaderskip
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+% \end{macrocode}
+%This is similar to \cs{subglossentry}
+% \begin{macrocode}
+ \ifnum\@gls@prevlevel=##2\relax
+ \else
+ \ifcsundef{@glswidestname\romannumeral##2}%
+ {%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}%
+ }%
+ {%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##2\endcsname\space}}%
+ }%
+ \ifnum\@gls@prevlevel<##2\relax
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+ \ifnum\@gls@prevlevel=0\relax
+ \glsxtrComputeTreeIndent{##2}%
+ \else
+ \ifcsundef{@glswidestname\romannumeral##2}%
+ {%
+ \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}%
+ }%
+ {%
+ \settowidth{\glstreeindent}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##2\endcsname\space}}%
+ }%
+ \fi
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+ \glsxtrAltTreeSetSubHangIndent{##2}%
+ \glsalttreesubgroupheader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}{\gls@tmplen}%
+ \def\@gls@prevlevel{##2}%
+ \par
+ }%
}
}%
{%
@@ -35773,6 +46594,53 @@ defined}{}%
\glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
\glstreegroupheaderskip
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+% \end{macrocode}
+%This is similar to \cs{subglossentry}
+% \begin{macrocode}
+ \ifnum\@gls@prevlevel=##2\relax
+ \else
+ \ifcsundef{@glswidestname\romannumeral##2}%
+ {%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}%
+ }%
+ {%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##2\endcsname\space}}%
+ }%
+ \ifnum\@gls@prevlevel<##2\relax
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+ \ifnum\@gls@prevlevel=0\relax
+ \glsxtrComputeTreeIndent{##2}%
+ \else
+ \ifcsundef{@glswidestname\romannumeral##2}%
+ {%
+ \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}%
+ }%
+ {%
+ \settowidth{\glstreeindent}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##2\endcsname\space}}%
+ }%
+ \fi
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+ \glsxtrAltTreeSetSubHangIndent{##2}%
+ \glsalttreesubgroupheader{##1}{##2}{##3}{##4}%
+ {\glsnavhypertarget{##4}{\glsxtr@grptitle}}{\gls@tmplen}%
+ \def\@gls@prevlevel{##2}%
+ \par
+ }%
}
}%
{%
@@ -35804,6 +46672,53 @@ defined}{}%
\glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
\glstreegroupheaderskip
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+ \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}%
+ \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}%
+% \end{macrocode}
+%This is similar to \cs{subglossentry}
+% \begin{macrocode}
+ \ifnum\@gls@prevlevel=##2\relax
+ \else
+ \ifcsundef{@glswidestname\romannumeral##2}%
+ {%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}%
+ }%
+ {%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##2\endcsname\space}}%
+ }%
+ \ifnum\@gls@prevlevel<##2\relax
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+ \ifnum\@gls@prevlevel=0\relax
+ \glsxtrComputeTreeIndent{##2}%
+ \else
+ \ifcsundef{@glswidestname\romannumeral##2}%
+ {%
+ \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}%
+ }%
+ {%
+ \settowidth{\glstreeindent}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##2\endcsname\space}}%
+ }%
+ \fi
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+ \glsxtrAltTreeSetSubHangIndent{##2}%
+ \glsalttreesubgroupheader{##1}{##2}{##3}{##4}%
+ {\glsnavhypertarget{##4}{\glsxtr@grptitle}}{\gls@tmplen}%
+ \def\@gls@prevlevel{##2}%
+ \par
+ }%
}
}%
{%
@@ -35827,12 +46742,19 @@ defined}{}%
%<*glossary-bookindex.sty>
% \end{macrocode}
%\fi
-%\chapter{bookindex style (\styfmt{glossary-bookindex.sty})}
+%\section{bookindex style (\sty{glossary-bookindex.sty})}
%\changes{1.21}{2017-11-03}{new}
-%\section{Package Initialisation and Options}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossary-bookindex}[2021/11/22 v1.48 (NLCT)]
+% \end{macrocode}
+% Rollback releases:
+% \begin{macrocode}
+\DeclareRelease{v1.48}{2021-11-22}{glossary-bookindex-2021-11-22.sty}
+\DeclareCurrentRelease{v1.49}{2022-10-14}
+% \end{macrocode}
+% Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossary-bookindex}[2022/10/14 v1.49 (NLCT)]
% \end{macrocode}
%Load required packages.
% \begin{macrocode}
@@ -35957,7 +46879,7 @@ defined}{}%
%\end{macro}
%\begin{macro}{\glsxtrbookindexatendgroup}
%\changes{1.21}{2017-11-03}{new}
-%At the end of a letter group. The argument is the index of the last
+%At the end of a letter group. The argument is the label of the last
%top-level entry.
% \begin{macrocode}
\newcommand{\glsxtrbookindexatendgroup}[1]{}
@@ -35965,7 +46887,7 @@ defined}{}%
%\end{macro}
%\begin{macro}{\glsxtrbookindexsubatendgroup}
%\changes{1.21}{2017-11-03}{new}
-%At the end of a letter group. The argument is the index of the last
+%At the end of a letter group. The argument is the label of the last
%level~1 entry.
% \begin{macrocode}
\newcommand{\glsxtrbookindexsubatendgroup}[1]{}
@@ -35973,7 +46895,7 @@ defined}{}%
%\end{macro}
%\begin{macro}{\glsxtrbookindexsubsubatendgroup}
%\changes{1.21}{2017-11-03}{new}
-%At the end of a letter group. The argument is the index of the last
+%At the end of a letter group. The argument is the label of the last
%level~2 entry.
% \begin{macrocode}
\newcommand{\glsxtrbookindexsubsubatendgroup}[1]{}
@@ -35988,16 +46910,70 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrbookindexpregroupskip}
+%\changes{1.49}{2022-10-14}{new}
+%After group header. The argument is the skip that would normally
+%be inserted if there wasn't a group header.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexpregroupskip}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexpostgroupskip}
+%\changes{1.49}{2022-10-14}{new}
+%After group header.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexpostgroupskip}{\indexspace}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexpresubgroupskip}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glsxtrbookindexpresubgroupskip}\marg{default}\marg{prev group
+%level}\marg{group level}
+%\end{definition}
+%Before sub-group separator.
+%The first argument is the skip that would normally be used at this
+%point if there wasn't a header.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexpresubgroupskip}[3]{\par\medskip}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexpostsubgroupskip}
+%\changes{1.49}{2022-10-14}{new}
+%After sub-group separator.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexpostsubgroupskip}[2]{\par\medskip}
+% \end{macrocode}
+%\end{macro}
+%
%Format group title.
%\begin{macro}{\glsxtrbookindexformatheader}
%\changes{1.21}{2017-11-03}{new}
-%Group separator.
+%Group header.
% \begin{macrocode}
\newcommand*{\glsxtrbookindexformatheader}[1]{%
\par{\centering\glstreegroupheaderfmt{#1}\par}%
}
% \end{macrocode}
%\end{macro}
+%Format sub-group title.
+%\begin{macro}{\glsxtrbookindexformatsubheader}
+%\changes{1.49}{2022-10-14}{new}
+%Sub-group header. This defaults to the same format as the
+%top-level group.
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexformatsubheader}[5]{%
+ \ifnum#2>1\relax
+ \glstreesubsubitem\glstreegroupheaderfmt{#5}%
+ \else
+ \glstreesubitem\glstreegroupheaderfmt{#5}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{\glsxtrbookindexbookmark}
%\changes{1.21}{2017-11-03}{new}
%Book mark group heading if supported.
@@ -36016,6 +46992,24 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsxtrbookindexsubbookmark}
+%\changes{1.49}{2022-10-14}{new}
+%Book mark sub-group heading if supported.
+% \begin{macrocode}
+\ifdef\pdfbookmark
+{%
+ \newcommand*{\glsxtrbookindexsubbookmark}[3]{%
+ \ifdefstring{\@@glossarysec}{chapter}%
+ {\expandafter\pdfbookmark\expandafter[\number\numexpr#1+1]{#3}{#2}}%
+ {\expandafter\pdfbookmark\expandafter[\number\numexpr#1+2]{#3}{#2}}%
+ }
+}
+{%
+ \newcommand*{\glsxtrbookindexsubbookmark}[3]{}
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsxtrbookindexbookmarkprefix}
%\changes{1.42}{2020-02-03}{new}
%Make the bookmark label prefix used for letter groups depend on the glossary label
@@ -36039,6 +47033,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{style}{bookindex}
%Define the style.
% \begin{macrocode}
\newglossarystyle{bookindex}{%
@@ -36114,10 +47109,15 @@ defined}{}%
\let\@glsxtr@bookindex@subsep\glsxtrbookindexparentsubchildsep
\let\@glsxtr@bookindex@subbetween\@gobble
\let\@glsxtr@bookindex@subsubbetween\@gobble
- \edef\@glsxtr@bookindex@between{%
+% \end{macrocode}
+%The second argument of \cs{glsxtrbookindexbetween} will be supplied
+%as the argument to \cs{@glsxtr@bookindex@between}.
+%\changes{1.49}{2022-10-14}{replaced \cs{edef} with \cs{protected@edef}}
+% \begin{macrocode}
+ \protected@edef\@glsxtr@bookindex@between{%
\noexpand\glsxtrbookindexbetween{##1}%
}%
- \edef\@glsxtr@bookindex@atendgroup{%
+ \protected@edef\@glsxtr@bookindex@atendgroup{%
\noexpand\glsxtrbookindexatendgroup{##1}%
}%
\let\@glsxtr@bookindex@subatendgroup\relax
@@ -36203,7 +47203,7 @@ defined}{}%
\@glsxtr@bookindex@subsubatendgroup
\@glsxtr@bookindex@subatendgroup
\@glsxtr@bookindex@atendgroup
- \@glsxtr@bookindexgroupskip
+ \glsxtrbookindexpregroupskip\@glsxtr@bookindexgroupskip
% \end{macrocode}
% Update separators.
% \begin{macrocode}
@@ -36226,10 +47226,45 @@ defined}{}%
% Format the group title.
% \begin{macrocode}
\glsxtrbookindexformatheader{\glsxtrcurrentgrptitle}%
- \nopagebreak\indexspace\nopagebreak\@afterheading
+ \nopagebreak\glsxtrbookindexpostgroupskip\nopagebreak\@afterheading
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}[4]{%
+% \end{macrocode}
+% Do end group hooks.
+% \begin{macrocode}
+ \@glsxtr@bookindex@subsubatendgroup
+ \@glsxtr@bookindex@subatendgroup
+ \@glsxtr@bookindex@atendgroup
+ \glsxtrbookindexpresubgroupskip\@glsxtr@bookindexgroupskip{##1}{##2}%
+% \end{macrocode}
+% Update separators.
+% \begin{macrocode}
+ \let\@glsxtr@bookindexgroupskip\glsxtrbookindexgroupskip
+ \let\@glsxtr@bookindex@between\@gobble
+ \let\@glsxtr@bookindex@atendgroup\relax
+ \let\@glsxtr@bookindex@subatendgroup\relax
+ \let\@glsxtr@bookindex@subsubatendgroup\relax
+% \end{macrocode}
+% Get group title.
+% \begin{macrocode}
+ \glsxtrgetgrouptitle{##4}{\glsxtrcurrentgrptitle}%
+% \end{macrocode}
+% Do the PDF bookmark if supported.
+% \begin{macrocode}
+ \glsxtrbookindexsubbookmark{##2}{##4}{\glsxtrcurrentgrptitle}%
+% \end{macrocode}
+% Format the group title.
+% \begin{macrocode}
+ \glsxtrbookindexformatsubheader{##1}{##2}{##3}{##4}{\glsxtrcurrentgrptitle}%
+ \nopagebreak\glsxtrbookindexpostsubgroupskip{##1}{##2}\nopagebreak\@afterheading
+ }
}
% \end{macrocode}
+%\end{style}
% Some supplementary commands that may be useful.
% These store the entry label for the current page. Since the page
% number is needed in the control sequence, this uses
@@ -36322,13 +47357,20 @@ defined}{}%
%<*glossary-longextra.sty>
% \end{macrocode}
%\fi
-%\chapter{longextra styles (\styfmt{glossary-longextra.sty})}
+%\section{longextra styles (\sty{glossary-longextra.sty})}
%\changes{1.37}{2018-11-30}{new}
-%\section{Package Initialisation and Options}
%Provides additional long styles.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossary-longextra}[2021/11/22 v1.48 (NLCT)]
+% \end{macrocode}
+% Rollback releases:
+% \begin{macrocode}
+\DeclareRelease{v1.48}{2021-11-22}{glossary-longextra-2021-11-22.sty}
+\DeclareCurrentRelease{v1.49}{2022-10-14}
+% \end{macrocode}
+% Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossary-longextra}[2022/10/14 v1.49 (NLCT)]
% \end{macrocode}
%Load required packages.
% \begin{macrocode}
@@ -36373,6 +47415,35 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glslongextraSymbolTargetFmt}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glslongextraSymbolTargetFmt}\marg{label}
+%\end{definition}
+%Governs the way the symbol is displayed if it needs to include the
+%target.
+% \begin{macrocode}
+\newcommand{\glslongextraSymbolTargetFmt}[1]{%
+ \glsentryitem{#1}\glstarget{#1}{\glslongextraSymbolFmt{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSymbolOrName}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glslongextraSymbolOrName}\marg{label}
+%\end{definition}
+%Governs the way the symbol is displayed if it needs to include the
+%target.
+% \begin{macrocode}
+\newcommand{\glslongextraSymbolOrName}[1]{%
+ \ifglshassymbol{#1}%
+ {\glslongextraSymbolTargetFmt{#1}}%
+ {\glslongextraNameFmt{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glslongextraLocationFmt}
%\changes{1.37}{2018-11-30}{new}
%\begin{definition}
@@ -36384,6 +47455,34 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glslongextraShortTargetFmt}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glslongextraShortTargetFmt}\marg{label}
+%\end{definition}
+%Governs the way the short form is displayed if it needs to include the
+%target.
+% \begin{macrocode}
+\newcommand{\glslongextraShortTargetFmt}[1]{%
+ \glsentryitem{#1}\glstarget{#1}{{\glsxtrshort[noindex,hyper=false]{#1}}}%
+ \glsxtrpostnamehook{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraLongFmt}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glslongextraLongFmt}\marg{label}
+%\end{definition}
+%Governs the way the long form is displayed.
+% \begin{macrocode}
+\newcommand{\glslongextraLongFmt}[1]{%
+ {\glsxtrlong[noindex,hyper=false]{#1}}\glspostdescription
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glslongextraSubNameFmt}
%\changes{1.37}{2018-11-30}{new}
%\begin{definition}
@@ -36424,6 +47523,62 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glslongextraSubSymbolTargetFmt}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glslongextraSubSymbolTargetFmt}\marg{level}\marg{label}
+%\end{definition}
+%Governs the way the child symbol is displayed if the target is
+%required.
+% \begin{macrocode}
+\newcommand{\glslongextraSubSymbolTargetFmt}[2]{%
+ \glssubentryitem{#2}\glstarget{#2}{\glslongextraSymbolFmt{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSubSymbolOrName}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glslongextraSubSymbolOrName}\marg{level}\marg{label}
+%\end{definition}
+%Shows the symbol or the name (if the symbol isn't set) as the
+%target for sub-entries.
+% \begin{macrocode}
+\newcommand{\glslongextraSubSymbolOrName}[2]{%
+ \ifglshassymbol{#2}%
+ {\glslongextraSubSymbolTargetFmt{#1}{#2}}%
+ {\glslongextraSubNameFmt{#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSubShortTargetFmt}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glslongextraSubShortTargetFmt}\marg{level}\marg{label}
+%\end{definition}
+%Governs the way the short form is displayed if it needs to include the
+%target.
+% \begin{macrocode}
+\newcommand{\glslongextraSubShortTargetFmt}[2]{%
+ \glssubentryitem{#2}\glstarget{#2}{{\glsxtrshort[noindex,hyper=false]{#2}}}%
+ \glsxtrpostnamehook{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSubLongFmt}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glslongextraSubLongFmt}\marg{label}
+%\end{definition}
+%Governs the way the long form is displayed.
+% \begin{macrocode}
+\newcommand{\glslongextraSubLongFmt}[2]{\glslongextraLongFmt{#2}}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glslongextraSubLocationFmt}
%\changes{1.37}{2018-11-30}{new}
%\begin{definition}
@@ -36459,6 +47614,15 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glslongextraSymbolNameAlign}
+%\changes{1.49}{2022-10-14}{new}
+%Alignment for the symbol column when it's being used instead of the
+%name.
+% \begin{macrocode}
+\newcommand{\glslongextraSymbolNameAlign}{l}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glslongextraLocationAlign}
%\changes{1.37}{2018-11-30}{new}
%Alignment for the location column.
@@ -36477,6 +47641,17 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glslongextraSubGroupHeading}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glslongextraSubGroupHeading}\marg{number of columns}\marg{prev group level}\marg{group
+%level}\marg{parent entry}\marg{group label}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glslongextraSubGroupHeading}[5]{}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glslongextraHeaderFormat}
%\changes{1.37}{2018-11-30}{new}
%Format for the column headers.
@@ -36615,6 +47790,25 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glslongextraSymNoNameSetDescWidth}
+%\changes{1.49}{2022-10-14}{new}
+% Computes the value of \cs{glsdescwidth} for the styles that only
+% have symbol and description columns.
+% \begin{macrocode}
+\newcommand{\glslongextraSymNoNameSetDescWidth}{%
+% \end{macrocode}
+% Now work out the symbol column width. This is assuming that the
+% column title will be the widest text in the column.
+% \begin{macrocode}
+ \settowidth{\gls@tmplen}{\glslongextraHeaderFmt\symbolname}%
+% \end{macrocode}
+% Subtract 4\cs{tabcolsep} and the symbol header width.
+% \begin{macrocode}
+ \setlength{\glsdescwidth}{\dimexpr\linewidth-4\tabcolsep-\gls@tmplen}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glslongextraLocSetDescWidth}
%\changes{1.37}{2018-11-30}{new}
% Computes the value of \cs{glsdescwidth} for the styles that only
@@ -36651,6 +47845,26 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glslongextraShortNoNameSetDescWidth}
+%\changes{1.49}{2022-10-14}{new}
+% Computes the value of \cs{glsdescwidth} for the styles that only
+% have short and long columns. The long form will essentially be
+% treated like a description column.
+% \begin{macrocode}
+\newcommand{\glslongextraShortNoNameSetDescWidth}{%
+% \end{macrocode}
+% Now work out the short column width. This is assuming that the
+% column title will be the widest text in the column.
+% \begin{macrocode}
+ \settowidth{\gls@tmplen}{\glslongextraHeaderFmt\glslongextraShortHeader}%
+% \end{macrocode}
+% Subtract 4\cs{tabcolsep} and the above header width.
+% \begin{macrocode}
+ \setlength{\glsdescwidth}{\dimexpr\linewidth-4\tabcolsep-\gls@tmplen}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\ifGlsLongExtraUseTabular}
%\changes{1.37}{2018-11-30}{new}
%If true use \env{tabular} instead of \env{longtable}. Obviously
@@ -36668,7 +47882,7 @@ defined}{}%
\newcommand*{\glslongextraTabularVAlign}{c}
% \end{macrocode}
%\end{macro}
-%\begin{abbrvstyle}{long-name-desc}
+%\begin{style}{long-name-desc}
%\changes{1.37}{2018-11-30}{new}
%Two column style with multi-lined descriptions and header.
%This is similar to the \glostyle{longragged-booktabs} style.
@@ -36705,10 +47919,21 @@ defined}{}%
\renewcommand*{\glossaryheader}{\glslongextraNameDescHeader}%
\fi
\renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{2}{##1}}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{2}}%
+% \end{macrocode}
+%Top-level entry.
+% \begin{macrocode}
\renewcommand{\glossentry}[2]{%
\glslongextraNameFmt{##1} &
\glslongextraDescFmt{##1}\tabularnewline
}%
+% \end{macrocode}
+%Child entry.
+% \begin{macrocode}
\renewcommand{\subglossentry}[3]{%
\glslongextraSubNameFmt{##1}{##2}
&
@@ -36722,7 +47947,7 @@ defined}{}%
\fi
}
% \end{macrocode}
-%\end{abbrvstyle}
+%\end{style}
%
%\begin{macro}{\glslongextraNameDescLocationHeader}
%\changes{1.37}{2018-11-30}{new}
@@ -36756,7 +47981,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{abbrvstyle}{long-name-desc-loc}
+%\begin{style}{long-name-desc-loc}
%\changes{1.37}{2018-11-30}{new}
%Three columns: name, description and location list.
% \begin{macrocode}
@@ -36796,6 +48021,11 @@ defined}{}%
\renewcommand*{\glossaryheader}{\glslongextraNameDescLocationHeader}%
\fi
\renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}%
\renewcommand{\glossentry}[2]{%
\glslongextraNameFmt{##1} &
\glslongextraDescFmt{##1} &
@@ -36814,7 +48044,7 @@ defined}{}%
\fi
}
% \end{macrocode}
-%\end{abbrvstyle}
+%\end{style}
%
%\begin{macro}{\glslongextraDescNameHeader}
%\changes{1.37}{2018-11-30}{new}
@@ -36847,7 +48077,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{abbrvstyle}{long-desc-name}
+%\begin{style}{long-desc-name}
%\changes{1.37}{2018-11-30}{new}
%Like \glostyle{name-desc} but swaps the columns.
% \begin{macrocode}
@@ -36883,6 +48113,11 @@ defined}{}%
\renewcommand*{\glossaryheader}{\glslongextraDescNameHeader}%
\fi
\renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{2}{##1}}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{2}}%
\renewcommand{\glossentry}[2]{%
\glslongextraDescFmt{##1} &
\glslongextraNameFmt{##1}\tabularnewline
@@ -36898,7 +48133,7 @@ defined}{}%
\fi
}
% \end{macrocode}
-%\end{abbrvstyle}
+%\end{style}
%
%\begin{macro}{\glslongextraLocationDescNameHeader}
%\changes{1.37}{2018-11-30}{new}
@@ -36932,7 +48167,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{abbrvstyle}{long-loc-desc-name}
+%\begin{style}{long-loc-desc-name}
%\changes{1.37}{2018-11-30}{new}
%Three columns: location, description and name.
% \begin{macrocode}
@@ -36969,6 +48204,11 @@ defined}{}%
\renewcommand*{\glossaryheader}{\glslongextraLocationDescNameHeader}%
\fi
\renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}%
\renewcommand{\glossentry}[2]{%
\glslongextraLocationFmt{##1}{##2} &
\glslongextraDescFmt{##1} &
@@ -36986,7 +48226,7 @@ defined}{}%
\fi
}
% \end{macrocode}
-%\end{abbrvstyle}
+%\end{style}
%
%\begin{macro}{\glslongextraNameDescSymHeader}
%\changes{1.37}{2018-11-30}{new}
@@ -37020,7 +48260,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{abbrvstyle}{long-name-desc-sym}
+%\begin{style}{long-name-desc-sym}
%\changes{1.37}{2018-11-30}{new}
%Three column style with symbol in the third column.
% \begin{macrocode}
@@ -37060,6 +48300,11 @@ defined}{}%
\renewcommand*{\glossaryheader}{\glslongextraNameDescSymHeader}%
\fi
\renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}%
\renewcommand{\glossentry}[2]{%
\glslongextraNameFmt{##1} &
\glslongextraDescFmt{##1} &
@@ -37078,7 +48323,7 @@ defined}{}%
\fi
}
% \end{macrocode}
-%\end{abbrvstyle}
+%\end{style}
%
%\begin{macro}{\glslongextraNameDescSymLocationHeader}
%\changes{1.37}{2018-11-30}{new}
@@ -37113,7 +48358,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{abbrvstyle}{long-name-desc-sym-loc}
+%\begin{style}{long-name-desc-sym-loc}
%\changes{1.37}{2018-11-30}{new}
%Four columns: name, description and location
% \begin{macrocode}
@@ -37155,6 +48400,11 @@ defined}{}%
\renewcommand*{\glossaryheader}{\glslongextraNameDescSymLocationHeader}%
\fi
\renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{4}}%
\renewcommand{\glossentry}[2]{%
\glslongextraNameFmt{##1} &
\glslongextraDescFmt{##1} &
@@ -37175,7 +48425,7 @@ defined}{}%
\fi
}
% \end{macrocode}
-%\end{abbrvstyle}
+%\end{style}
%
%\begin{macro}{\glslongextraNameSymDescHeader}
%\changes{1.37}{2018-11-30}{new}
@@ -37209,7 +48459,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{abbrvstyle}{long-name-sym-desc}
+%\begin{style}{long-name-sym-desc}
%\changes{1.37}{2018-11-30}{new}
%Three column style with symbol in the second column.
% \begin{macrocode}
@@ -37249,6 +48499,11 @@ defined}{}%
\renewcommand*{\glossaryheader}{\glslongextraNameSymDescHeader}%
\fi
\renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}%
\renewcommand{\glossentry}[2]{%
\glslongextraNameFmt{##1} &
\glslongextraSymbolFmt{##1} &
@@ -37266,7 +48521,7 @@ defined}{}%
\fi
}
% \end{macrocode}
-%\end{abbrvstyle}
+%\end{style}
%
%\begin{macro}{\glslongextraNameSymDescLocationHeader}
%\changes{1.37}{2018-11-30}{new}
@@ -37301,7 +48556,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{abbrvstyle}{long-name-sym-desc-loc}
+%\begin{style}{long-name-sym-desc-loc}
%\changes{1.37}{2018-11-30}{new}
%Four column style with symbol in the second column.
% \begin{macrocode}
@@ -37343,6 +48598,11 @@ defined}{}%
\renewcommand*{\glossaryheader}{\glslongextraNameSymDescLocationHeader}%
\fi
\renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{4}}%
\renewcommand{\glossentry}[2]{%
\glslongextraNameFmt{##1} &
\glslongextraSymbolFmt{##1} &
@@ -37362,7 +48622,7 @@ defined}{}%
\fi
}
% \end{macrocode}
-%\end{abbrvstyle}
+%\end{style}
%
%\begin{macro}{\glslongextraSymDescNameHeader}
%\changes{1.37}{2018-11-30}{new}
@@ -37396,7 +48656,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{abbrvstyle}{long-sym-desc-name}
+%\begin{style}{long-sym-desc-name}
%\changes{1.37}{2018-11-30}{new}
%Three column style with symbol in the first column, description in
%the second and name in the third.
@@ -37437,6 +48697,11 @@ defined}{}%
\renewcommand*{\glossaryheader}{\glslongextraSymDescNameHeader}%
\fi
\renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}%
\renewcommand{\glossentry}[2]{%
\glslongextraSymbolFmt{##1} &
\glslongextraDescFmt{##1} &
@@ -37454,7 +48719,7 @@ defined}{}%
\fi
}
% \end{macrocode}
-%\end{abbrvstyle}
+%\end{style}
%
%\begin{macro}{\glslongextraLocationSymDescNameHeader}
%\changes{1.37}{2018-11-30}{new}
@@ -37489,7 +48754,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{abbrvstyle}{long-loc-sym-desc-name}
+%\begin{style}{long-loc-sym-desc-name}
%\changes{1.37}{2018-11-30}{new}
%Four column style with location list, symbol, description and name.
% \begin{macrocode}
@@ -37531,6 +48796,11 @@ defined}{}%
\renewcommand*{\glossaryheader}{\glslongextraLocationSymDescNameHeader}%
\fi
\renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{4}}%
\renewcommand{\glossentry}[2]{%
\glslongextraLocationFmt{##1}{##2} &
\glslongextraSymbolFmt{##1} &
@@ -37550,7 +48820,7 @@ defined}{}%
\fi
}
% \end{macrocode}
-%\end{abbrvstyle}
+%\end{style}
%
%\begin{macro}{\glslongextraDescSymNameHeader}
%\changes{1.37}{2018-11-30}{new}
@@ -37584,7 +48854,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{abbrvstyle}{long-desc-sym-name}
+%\begin{style}{long-desc-sym-name}
%\changes{1.37}{2018-11-30}{new}
%Three column style with description in the first column, symbol in
%the second and name in the third.
@@ -37625,6 +48895,11 @@ defined}{}%
\renewcommand*{\glossaryheader}{\glslongextraDescSymNameHeader}%
\fi
\renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}%
\renewcommand{\glossentry}[2]{%
\glslongextraDescFmt{##1} &
\glslongextraSymbolFmt{##1} &
@@ -37642,7 +48917,7 @@ defined}{}%
\fi
}
% \end{macrocode}
-%\end{abbrvstyle}
+%\end{style}
%
%\begin{macro}{\glslongextraLocationDescSymNameHeader}
%\changes{1.37}{2018-11-30}{new}
@@ -37677,7 +48952,7 @@ defined}{}%
% \end{macrocode}
%\end{macro}
%
-%\begin{abbrvstyle}{long-loc-desc-sym-name}
+%\begin{style}{long-loc-desc-sym-name}
%\changes{1.37}{2018-11-30}{new}
%Four column style with location list, description, symbol and name.
% \begin{macrocode}
@@ -37719,6 +48994,11 @@ defined}{}%
\renewcommand*{\glossaryheader}{\glslongextraLocationDescSymNameHeader}%
\fi
\renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{4}}%
\renewcommand{\glossentry}[2]{%
\glslongextraLocationFmt{##1}{##2} &
\glslongextraDescFmt{##1} &
@@ -37738,7 +49018,411 @@ defined}{}%
\fi
}
% \end{macrocode}
-%\end{abbrvstyle}
+%\end{style}
+%
+%\begin{style}{long-sym-desc}
+%\changes{1.49}{2022-10-14}{new}
+%Two column style with symbol in the first column and description in
+%the second. The name isn't shown unless the symbol is missing.
+% \begin{macrocode}
+\newglossarystyle{long-sym-desc}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymNoNameSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraSymbolNameAlign
+ \expandonce\glslongextraDescAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraSymDescTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraSymDescTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymNoNameSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraSymbolNameAlign
+ \expandonce\glslongextraDescAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraSymDescHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+% \end{macrocode}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraSymbolOrName{##1} &
+ \glslongextraDescFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubSymbolOrName{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{macro}{\glslongextraSymDescHeader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraSymDescHeader}{%
+ \glslongextraSymDescTabularHeader\endhead
+ \glslongextraSymDescTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSymDescTabularHeader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraSymDescTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\descriptionname\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSymDescTabularFooter}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraSymDescTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{long-desc-sym}
+%\changes{1.49}{2022-10-14}{new}
+%Two column style with description in the first column and symbol in
+%the second. The name isn't shown.
+% \begin{macrocode}
+\newglossarystyle{long-desc-sym}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymNoNameSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraDescSymTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraDescSymTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymNoNameSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraDescSymHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+% \end{macrocode}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraDescFmt{##1} &
+ \glslongextraSymbolOrName{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubSymbolOrName{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{macro}{\glslongextraDescSymHeader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraDescSymHeader}{%
+ \glslongextraDescSymTabularHeader\endhead
+ \glslongextraDescSymTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraDescSymTabularHeader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraDescSymTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\symbolname\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraDescSymTabularFooter}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraDescSymTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{abbr-short-long}
+%\changes{1.49}{2022-10-14}{new}
+%Two column style with the short field in the first column and the
+%long field in the second. The name, symbol and description aren't shown
+%(although the abbreviation style may mean that they will happen to
+%be shown if they are the same as the short or long field).
+% \begin{macrocode}
+\newglossarystyle{abbr-short-long}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraShortNoNameSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraShortLongTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraShortLongTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraShortNoNameSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraShortLongHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+% \end{macrocode}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}%
+ \renewcommand{\glossentry}[2]{%
+ \ifglshasshort{##1}%
+ {\glslongextraShortTargetFmt{##1}}%
+ {\glslongextraNameFmt{##1}}%
+ &
+ \ifglshaslong{##1}%
+ {\glslongextraLongFmt{##1}}%
+ {\glslongextraDescFmt{##1}}%
+ \tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifglshasshort{##2}%
+ {\glslongextraSubShortTargetFmt{##1}{##2}}%
+ {\glslongextraSubNameFmt{##1}{##2}}%
+ &
+ \ifglshaslong{##2}%
+ {\glslongextraSubLongFmt{##1}{##2}}%
+ {\glslongextraSubDescFmt{##1}{##2}}%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{macro}{\glslongextraShortLongHeader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraShortLongHeader}{%
+ \glslongextraShortLongTabularHeader\endhead
+ \glslongextraShortLongTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraShortHeader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraShortHeader}{\entryname}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslongextraLongHeader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLongHeader}{\descriptionname}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslongextraShortLongTabularHeader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraShortLongTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\glslongextraShortHeader &
+ \glslongextraHeaderFmt\glslongextraLongHeader\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraShortLongTabularFooter}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraShortLongTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{abbr-long-short}
+%\changes{1.49}{2022-10-14}{new}
+%Two column style with the short field in the first column and the
+%long field in the second. The name, symbol and description aren't shown
+%(although the abbreviation style may mean that they will happen to
+%be shown if they are the same as the short or long field).
+% \begin{macrocode}
+\newglossarystyle{abbr-long-short}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraShortNoNameSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraLongShortTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraLongShortTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraShortNoNameSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraLongShortHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+% \end{macrocode}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}%
+ \renewcommand{\glossentry}[2]{%
+ \ifglshaslong{##1}%
+ {\glslongextraLongFmt{##1}}%
+ {\glslongextraDescFmt{##1}}%
+ &
+ \ifglshasshort{##1}%
+ {\glslongextraShortTargetFmt{##1}}%
+ {\glslongextraNameFmt{##1}}%
+ \tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifglshaslong{##2}%
+ {\glslongextraSubLongFmt{##1}{##2}}%
+ {\glslongextraSubDescFmt{##1}{##2}}%
+ &
+ \ifglshasshort{##2}%
+ {\glslongextraSubShortTargetFmt{##1}{##2}}%
+ {\glslongextraSubNameFmt{##1}{##2}}%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{macro}{\glslongextraLongShortHeader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLongShortHeader}{%
+ \glslongextraLongShortTabularHeader\endhead
+ \glslongextraLongShortTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraLongShortTabularHeader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLongShortTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\glslongextraLongHeader &
+ \glslongextraHeaderFmt\glslongextraShortHeader\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraLongShortTabularFooter}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLongShortTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
%
%\iffalse
% \begin{macrocode}
@@ -37750,14 +49434,21 @@ defined}{}%
%<*glossary-topic.sty>
% \end{macrocode}
%\fi
-%\chapter{topic styles (\styfmt{glossary-topic.sty})}
+%\section{topic styles (\sty{glossary-topic.sty})}
%\changes{1.40}{2019-03-22}{new}
-%\section{Package Initialisation and Options}
%Provides \qt{topic} styles where top-level entries are considered a
%topic.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossary-topic}[2021/11/22 v1.48 (NLCT)]
+% \end{macrocode}
+% Rollback releases:
+% \begin{macrocode}
+\DeclareRelease{v1.48}{2021-11-22}{glossary-topic-2021-11-22.sty}
+\DeclareCurrentRelease{v1.49}{2022-10-14}
+% \end{macrocode}
+% Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossary-topic}[2022/10/14 v1.49 (NLCT)]
% \end{macrocode}
%Load required package.
% \begin{macrocode}
@@ -37781,6 +49472,11 @@ defined}{}%
\def\glstopic@prevlevel{-1}%
\glstopicGroupHeading{##1}%
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glstopicSubGroupHeading}%
\renewcommand{\glossentry}[2]{%
\hangindent0pt\relax
\parindent\glstopicParIndent\relax
@@ -37834,6 +49530,26 @@ defined}{}%
\newcommand*{\glstopicGroupHeading}[1]{}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\glstopicSubGroupHeading}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glstopicSubGroupHeading}\marg{prev group level}\marg{group
+%level}\marg{parent entry}\marg{group label}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glstopicSubGroupHeading}[4]{%
+ \begingroup
+ \glspar\glstopicPreSkip\glspar\noindent
+ \glsxtrgetgrouptitle{#4}{\glstopicsubgrouptitle}%
+ \glstopicAssignSubIndent{#2}%
+ \glstopicSubItemBox{#2}{\glstopicTitleFont{\glstopicsubgrouptitle}}%
+ \glstopicSubItemSep
+ \glspar\nobreak\glstopicPostSkip
+ \par
+ \endgroup
+}
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{\glstopicItem}
%\changes{1.40}{2019-03-22}{new}
%\begin{definition}
@@ -37849,7 +49565,8 @@ defined}{}%
}%
\ifglshasdesc{#1}%
{\glspar\nobreak\glstopicMidSkip\glspar\nobreak
- \@afterheading\glstopicDesc{#1}\glspar\glstopicPostSkip}%
+ \@afterheading\glstopicDesc{#1}\glspar\glstopicPostSkip
+ }%
{\glspar\nobreak\glstopicPostSkip}%
\glstopicLoc{#1}{#2}%
}
@@ -38100,6 +49817,11 @@ defined}{}%
\def\glstopic@prevlevel{-1}%
\glstopicGroupHeading{##1}%
}%
+% \end{macrocode}
+%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}}
+% Sub-groups are only supported with \cs{printunsrtglossary}.
+% \begin{macrocode}
+ \renewcommand*{\glssubgroupheading}{\glstopicSubGroupHeading}%
\renewcommand{\glossentry}[2]{%
\ifnum\glstopic@prevlevel>0\relax\glstopic@postchildren\fi
\def\glstopic@prevlevel{0}%
@@ -38143,6 +49865,1956 @@ defined}{}%
%\fi
%\iffalse
% \begin{macrocode}
+%<*glossary-table.sty>
+% \end{macrocode}
+%\fi
+%\section{table styles (\sty{glossary-table.sty})}
+%\changes{1.49}{2022-10-14}{new}
+%Intended for use with \app{bib2gls}. This is still experimental.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossary-table}[2022/10/14 v1.49 (NLCT)]
+% \end{macrocode}
+%Load required packages.
+% \begin{macrocode}
+\RequirePackage{glossary-longbooktabs}
+% \end{macrocode}
+%\begin{macro}{\glstableblockperrowcount}
+%\changes{1.49}{2022-10-14}{new}
+%Number of blocks (entries) per row.
+% \begin{macrocode}
+\newcount\glstableblockperrowcount
+\glstableblockperrowcount=2\relax
+% \end{macrocode}
+%\end{macro}
+%Add a key to allow this value to be changed.
+% \begin{macrocode}
+\define@key{printglosstable}{blocks}{\glstableblockperrowcount=#1\relax}
+% \end{macrocode}
+%
+%\begin{macro}{\glstablecurrentblockindex}
+%Keep track of current block (entry) index.
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcount\glstablecurrentblockindex
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstabletotalcols}
+%\changes{1.49}{2022-10-14}{new}
+%Total number of columns. This will be updated at the start of
+%\cs{printunsrttable}, but is a user level command so that it can be
+%used in any hooks.
+% \begin{macrocode}
+\newcount\glstabletotalcols
+\glstabletotalcols=4\relax
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablenameheader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstablenameheader}{\entryname}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstabledescheader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstabledescheader}{\descriptionname}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableotherheader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableotherheader}{\MFUsentencecase{\glstableotherfield}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablesymbolheader}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstablesymbolheader}{\symbolname}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide boolean option to suppress header.
+% \begin{macrocode}
+\define@boolkey{printglosstable}{header}[true]{}
+\KV@printglosstable@headertrue
+% \end{macrocode}
+%
+%Provide boolean option to suppress rules.
+% \begin{macrocode}
+\define@boolkey{printglosstable}{rules}[true]{}
+\KV@printglosstable@rulestrue
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@key{printglosstable}{blocksep}{\renewcommand{\glstable@blockalignsep}{#1}}
+% \end{macrocode}
+%
+%\begin{macro}{\glstable@blockalignsep}
+%\changes{1.49}{2022-10-14}{new}
+%Alignment spec between blocks.
+% \begin{macrocode}
+\newcommand{\glstable@blockalignsep}{|}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{environment}{glstablesubentries}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newenvironment{glstablesubentries}{\begin{tabular}[t]{l}}{\end{tabular}}
+% \end{macrocode}
+%\end{environment}
+%
+%\begin{macro}{\glstablePreChildren}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstablePreChildren}{\glstableifpar{\par}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableblocksubentrysep}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableblocksubentrysep}{\\}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide boolean option to allow paragraph cells.
+% \begin{macrocode}
+\define@choicekey{printglosstable}{par}
+[\@glstable@par@val\@glstable@par@n]
+{false,justified,ragged}
+{%
+ \ifcase\@glstable@par@n
+ \renewcommand{\glstable@parcase}[3]{##1}%
+ \or
+ \renewcommand{\glstable@parcase}[3]{##2}%
+ \or
+ \renewcommand{\glstable@parcase}[3]{##3}%
+ \fi
+}
+% \end{macrocode}
+%
+%\begin{macro}{\glstable@parcase}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstable@parcase}[3]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableifpar}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableifpar}[1]{\glstable@parcase{}{#1}{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableleftalign}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableleftalign}[1]{%
+ \glstable@parcase{l}{p{#1}}{>{\protect\raggedright}p{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablerightalign}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstablerightalign}[1]{%
+ \glstable@parcase{r}{p{#1}}{>{\protect\raggedleft}p{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablecenteralign}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstablecenteralign}[1]{%
+ \glstable@parcase{c}{p{#1}}{>{\protect\centering}p{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablenamecolalign}
+%\changes{1.49}{2022-10-14}{new}
+%The alignment for the name column.
+% \begin{macrocode}
+\newcommand{\glstablenamecolalign}{\glstableleftalign{\glstablenamewidth}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstabledesccolalign}
+%\changes{1.49}{2022-10-14}{new}
+%The alignment for the description column.
+% \begin{macrocode}
+\newcommand{\glstabledesccolalign}{\glstableleftalign{\glstabledescwidth}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablesymbolcolalign}
+%\changes{1.49}{2022-10-14}{new}
+%The alignment for the symbol column.
+% \begin{macrocode}
+\newcommand{\glstablesymbolcolalign}{\glstablecenteralign{\glstablesymbolwidth}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableNameTarget}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableNameTarget}[1]{%
+ \glstarget{#1}{\glstableNameFmt{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableNameFmt}
+%\changes{1.49}{2022-10-14}{new}
+%Entry item needs to be included in measuring to ensure there's
+%enough room for it as well.
+% \begin{macrocode}
+\newcommand{\glstableNameFmt}[1]{\glsentryitem{#1}\glossentryname{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSubNameTarget}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableSubNameTarget}[1]{%
+ \glstarget{#1}{\glstableSubNameFmt{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSubNameFmt}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableSubNameFmt}[1]{%
+ \glssubentryitem{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableotherfield}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableotherfield}{}
+% \end{macrocode}
+%\end{macro}
+%
+%Add an extra key to allow this value to be changed.
+% \begin{macrocode}
+\define@key{printglosstable}{other}{\renewcommand{\glstableotherfield}{#1}}
+% \end{macrocode}
+%
+%\begin{macro}{\glstableOther}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableOther}[1]{%
+ \glsxtrusefield{#1}{\glstableotherfield}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableNameSingleFmt}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableNameSingleFmt}[1]{%
+ \glstableNameTarget{#1}%
+ \ifglshasdesc{#1}%
+ {%
+ \glstableNameSinglePostName
+ \glstableNameSingleSuppl
+ {%
+ \ifglshassymbol{#1}%
+ {\glstableSymbolFmt{#1}\glstableNameSingleSymSep}%
+ {}%
+ \ifdefempty\glstableotherfield{}%
+ {%
+ \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}%
+ {\glstableOther{#1}\glstableOtherSep}%
+ }%
+ \glstableDescFmt{#1}%
+ }%
+ }%
+ {%
+ \ifglshassymbol{#1}%
+ {%
+ \glstableNameSinglePostName
+ \glstableNameSingleSuppl{\glstableSymbolFmt{#1}}%
+ \ifdefempty\glstableotherfield{}%
+ {%
+ \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}%
+ {\glstableNameSingleSymSep\glstableOther{#1}}%
+ }%
+ }%
+ {%
+ \ifdefempty\glstableotherfield{}%
+ {%
+ \glstableNameSinglePostName
+ \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}%
+ {\glstableOther{#1}}%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableNameSingleSuppl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableNameSingleSuppl}[1]{(#1)}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableNameSinglePostName}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableNameSinglePostName}{ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableNameSingleSymSep}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableNameSingleSymSep}{ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableOtherSep}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableOtherSep}{, }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSubNameSingleFmt}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableSubNameSingleFmt}[1]{%
+ \glstableSubNameTarget{#1}%
+ \GlsXtrIfFieldUndef{desc}{#1}{}%
+ {%
+ \GlsXtrIfFieldUndef{symbol}{#1}{}{}%
+ {%
+ \glstableNameSinglePostSubName
+ \glstableNameSingleSubSuppl{\glstableSubSymbolFmt{#1}}%
+ }%
+ }%
+ {%
+ \glstableNameSinglePostSubName
+ \glstableNameSingleSubSuppl
+ {%
+ \GlsXtrIfFieldUndef{symbol}{#1}{}%
+ {\glstableSubSymbolFmt{#1}\glstableNameSingleSymSep}%
+ \glstableSubDescFmt{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableNameSingleSubSuppl}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableNameSingleSubSuppl}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableNameSinglePostSubName}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableNameSinglePostSubName}{ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableNameNoDesc}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableNameNoDesc}[1]{%
+ \glstableNameTarget{#1}%
+ \ifdefempty\glstableotherfield{}%
+ {%
+ \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}%
+ {\glstableOtherSep\glstableOther{#1}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSubNameNoDesc}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableSubNameNoDesc}[1]{%
+ \glstableSubNameTarget{#1}%
+ \ifdefempty\glstableotherfield{}%
+ {%
+ \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}%
+ {\glstableOtherSep\glstableOther{#1}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSymbolFmt}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableSymbolFmt}[1]{\glossentrysymbol{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSubSymbolFmt}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableSubSymbolFmt}[1]{\glstableSymbolFmt{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSymbolNameTarget}
+%\changes{1.49}{2022-10-14}{new}
+%Where the symbol takes place of the name.
+% \begin{macrocode}
+\newcommand{\glstableSymbolNameTarget}[1]{%
+ \glstarget{#1}{\glstableSymbolNameFmt{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSymbolNameFmt}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableSymbolNameFmt}[1]{\glsentryitem{#1}\glossentrysymbol{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSubSymbolNameTarget}
+%\changes{1.49}{2022-10-14}{new}
+%Where the symbol takes place of the name.
+% \begin{macrocode}
+\newcommand{\glstableSubSymbolNameTarget}[1]{%
+ \glstarget{#1}{\glstableSubSymbolNameFmt{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSubSymbolNameFmt}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableSubSymbolNameFmt}[1]{\glssubentryitem{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableDesc}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableDesc}[1]{%
+ \ifdefempty\glstableotherfield{}%
+ {%
+ \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}%
+ {\glstableOther{#1}\ifglshasdesc{#1}{\glstableOtherSep}{}}%
+ }%
+ \glstableDescFmt{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableDescFmt}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableDescFmt}[1]{\glossentrydesc{#1}\glspostdescription}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSubDesc}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableSubDesc}[1]{\glstableDesc{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSubDescFmt}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableSubDescFmt}[1]{\glstableDescFmt{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableOtherNoDesc}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableOtherNoDesc}[1]{%
+ \ifdefempty\glstableotherfield{}%
+ {%
+ \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}%
+ {\glstableOther{#1}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableSubOtherNoDesc}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableSubOtherNoDesc}[1]{%
+ \glstableOtherNoDesc{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableHeaderFmt}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableHeaderFmt}[1]{\textbf{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macrocode}
+\define@key{printglosstable}{block-style}
+{\glstablesetstyle{#1}}
+% \end{macrocode}
+%
+%\begin{macro}{\glstablecolsperblock}
+%\changes{1.49}{2022-10-14}{new}
+%Number of columns per block (entry).
+%Assigned by block style.
+% \begin{macrocode}
+\newcount\glstablecolsperblock
+\glstablecolsperblock=2\relax
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableblockheader}
+%\changes{1.49}{2022-10-14}{new}
+%The column header, which may cover multiple columns.
+%Redefined by block style.
+% \begin{macrocode}
+\newcommand{\glstableblockheader}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstableblockalign}
+%\changes{1.49}{2022-10-14}{new}
+%The column alignment.
+%The default assumes two columns per entry (name and description)
+%Redefined by the block style.
+% \begin{macrocode}
+\newcommand{\glstableblockalign}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableblockentry}
+%\changes{1.49}{2022-10-14}{new}
+%The entry item, which may cover multiple columns.
+%Redefined by block style.
+% \begin{macrocode}
+\newcommand{\glstableblockentry}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableblocksubentry}
+%\changes{1.49}{2022-10-14}{new}
+%The sub-entry is in the final column of the block (requires children to be saved)
+%Redefined by block style.
+% \begin{macrocode}
+\newcommand{\glstableblocksubentry}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableinitlengthupdates}
+%\changes{1.49}{2022-10-14}{new}
+%Block style command.
+% \begin{macrocode}
+\newcommand{\glstableinitlengthupdates}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablelengthupdate}
+%\changes{1.49}{2022-10-14}{new}
+%Block style command.
+% \begin{macrocode}
+\newcommand{\glstablelengthupdate}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablefinishlengthupdates}
+%\changes{1.49}{2022-10-14}{new}
+%Block style command.
+% \begin{macrocode}
+\newcommand{\glstablefinishlengthupdates}{}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\glstablesetstyle}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstablesetstyle}[1]{%
+ \ifcsdef{@glstable@style@#1}%
+ {\csuse{@glstable@style@#1}}%
+ {\PackageError{glossary-table}{Unknown style `#1'}{}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablenewstyle}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstablenewstyle}[2]{%
+ \ifcsdef{@glstable@style@#1}%
+ {\PackageError{glossary-table}{style `#1' already defined}{}}%
+ {\csdef{@glstable@style@#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide some common layouts.
+% \begin{macrocode}
+\glstablenewstyle{name-desc}{%
+% \end{macrocode}
+% 2 columns per block (name, description).
+% \begin{macrocode}
+ \glstablecolsperblock=2\relax
+% \end{macrocode}
+% Initialise length registers (need to calculate max name
+% width if par align).
+% \begin{macrocode}
+ \renewcommand{\glstableinitlengthupdates}{%
+ \ifKV@printglosstable@header
+ \settowidth{\glstablenamewidth}%
+ {\glstableHeaderFmt\glstablenameheader}%
+ \else
+ \setlength{\glstablenamewidth}{0pt}%
+ \fi
+ \setlength{\glstabledescwidth}{0pt}%
+ }%
+% \end{macrocode}
+% Update width in unsrt hook.
+% \begin{macrocode}
+ \renewcommand{\glstablelengthupdate}[1]{%
+ \glstablemeasureandupdate{\glstablenamewidth}{\glstableNameFmt{##1}}%
+ }%
+% \end{macrocode}
+% Finally set the description width to the remaining available.
+% \begin{macrocode}
+ \renewcommand{\glstablefinishlengthupdates}{%
+ \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth
+ - \glstablenamewidth}%
+ \ifdim\glstabledescwidth<0pt\relax
+ \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth}%
+ \setlength{\glstabledescwidth}{\glstablenamewidth}%
+ \fi
+ }%
+% \end{macrocode}
+% How to format the top-level entry in the block.
+% \begin{macrocode}
+ \renewcommand{\glstableblockentry}[1]{%
+ \glstableNameTarget{##1} & \glstableDesc{##1}}%
+% \end{macrocode}
+% How to format the entry's children.
+% \begin{macrocode}
+ \renewcommand{\glstableblocksubentry}[1]{%
+ \glstableSubNameTarget{##1} & \glstableSubDesc{##1}}%
+% \end{macrocode}
+% How to format the block's header row, if required.
+% \begin{macrocode}
+ \renewcommand{\glstableblockheader}{%
+ \glstableHeaderFmt\glstablenameheader &
+ \glstableHeaderFmt\glstabledescheader}%
+% \end{macrocode}
+% Set the block's column alignments.
+% \begin{macrocode}
+ \renewcommand{\glstableblockalign}{\glstablenamecolalign\glstabledesccolalign}%
+}
+% \end{macrocode}
+%Set the default style.
+% \begin{macrocode}
+\glstablesetstyle{name-desc}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\glstablenewstyle{name}{%
+% \end{macrocode}
+% 1 columns per block (name optionally with symbol and description).
+% \begin{macrocode}
+ \glstablecolsperblock=1\relax
+% \end{macrocode}
+% Initialise length registers (no calculation required, column width
+% same as block width).
+% \begin{macrocode}
+ \renewcommand{\glstableinitlengthupdates}{}%
+% \end{macrocode}
+% No measuring required.
+% \begin{macrocode}
+ \renewcommand{\glstablelengthupdate}[1]{}%
+% \end{macrocode}
+% Set the name width to the amount available.
+% \begin{macrocode}
+ \renewcommand{\glstablefinishlengthupdates}{%
+ \setlength{\glstablenamewidth}{\glstableblockwidth}%
+ }%
+% \end{macrocode}
+% How to format the top-level entry in the block.
+% \begin{macrocode}
+ \renewcommand{\glstableblockentry}[1]{%
+ \glstableNameSingleFmt{##1}}%
+% \end{macrocode}
+% How to format the entry's children.
+% \begin{macrocode}
+ \renewcommand{\glstableblocksubentry}[1]{%
+ \glstableSubNameSingleFmt{##1}}%
+% \end{macrocode}
+% How to format the block's header row, if required.
+% \begin{macrocode}
+ \renewcommand{\glstableblockheader}{%
+ \glstableHeaderFmt\glstablenameheader}%
+% \end{macrocode}
+% Set the block's column alignments.
+% \begin{macrocode}
+ \renewcommand{\glstableblockalign}{\glstablenamecolalign}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\glstablenewstyle{name-symbol}{%
+% \end{macrocode}
+% 2 columns per block (name and symbol).
+% \begin{macrocode}
+ \glstablecolsperblock=2\relax
+% \end{macrocode}
+% Initialise length registers (need to calculate max symbol
+% width if par align). This assumes the symbol requires the minimal
+% width and any leftover can be assigned to the name.
+% \begin{macrocode}
+ \renewcommand{\glstableinitlengthupdates}{%
+ \ifKV@printglosstable@header
+ \settowidth{\glstablesymbolwidth}%
+ {\glstableHeaderFmt\glstablesymbolheader}%
+ \else
+ \setlength{\glstablesymbolwidth}{0pt}%
+ \fi
+ \setlength{\glstablenamewidth}{0pt}%
+ }%
+% \end{macrocode}
+% Update widths in unsrt hook.
+% \begin{macrocode}
+ \renewcommand{\glstablelengthupdate}[1]{%
+ \glstablemeasureandupdate{\glstablesymbolwidth}{\glstableSymbolFmt{##1}}%
+ }%
+% \end{macrocode}
+% Finally set the name width to the remaining available.
+% \begin{macrocode}
+ \renewcommand{\glstablefinishlengthupdates}{%
+ \setlength{\glstablenamewidth}{\dimexpr\glstableblockwidth
+ - \glstablesymbolwidth}%
+ \ifdim\glstablenamewidth<0pt\relax
+ \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth}%
+ \setlength{\glstablesymbolwidth}{\glstablenamewidth}%
+ \fi
+ }%
+% \end{macrocode}
+% How to format the top-level entry in the block.
+% \begin{macrocode}
+ \renewcommand{\glstableblockentry}[1]{%
+ \glstableNameNoDesc{##1} & \glstableSymbolFmt{##1}}%
+% \end{macrocode}
+% How to format the entry's children.
+% \begin{macrocode}
+ \renewcommand{\glstableblocksubentry}[1]{%
+ \glstableSubNameNoDesc{##1} & \glstableSubSymbolFmt{##1}}%
+% \end{macrocode}
+% How to format the block's header row, if required.
+% \begin{macrocode}
+ \renewcommand{\glstableblockheader}{%
+ \glstableHeaderFmt\glstablenameheader &
+ \glstableHeaderFmt\glstablesymbolheader}%
+% \end{macrocode}
+% Set the block's column alignments.
+% \begin{macrocode}
+ \renewcommand{\glstableblockalign}{\glstablenamecolalign\glstablesymbolcolalign}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\glstablenewstyle{desc-name}{%
+% \end{macrocode}
+% 2 columns per block (description, name).
+% \begin{macrocode}
+ \glstablecolsperblock=2\relax
+% \end{macrocode}
+% Initialise length registers (need to calculate max name
+% width if par align).
+% \begin{macrocode}
+ \renewcommand{\glstableinitlengthupdates}{%
+ \ifKV@printglosstable@header
+ \settowidth{\glstablenamewidth}%
+ {\glstableHeaderFmt\glstablenameheader}%
+ \else
+ \setlength{\glstablenamewidth}{0pt}%
+ \fi
+ \setlength{\glstabledescwidth}{0pt}%
+ }%
+% \end{macrocode}
+% Update width in unsrt hook.
+% \begin{macrocode}
+ \renewcommand{\glstablelengthupdate}[1]{%
+ \glstablemeasureandupdate{\glstablenamewidth}{\glstableNameFmt{##1}}%
+ }%
+% \end{macrocode}
+% Finally set the description width to the remaining available.
+% \begin{macrocode}
+ \renewcommand{\glstablefinishlengthupdates}{%
+ \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth
+ - \glstablenamewidth}%
+ \ifdim\glstabledescwidth<0pt\relax
+ \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth}%
+ \setlength{\glstabledescwidth}{\glstablenamewidth}%
+ \fi
+ }%
+% \end{macrocode}
+% How to format the top-level entry in the block.
+% \begin{macrocode}
+ \renewcommand{\glstableblockentry}[1]{%
+ \glstableDesc{##1} &
+ \glstableNameTarget{##1}%
+ }%
+% \end{macrocode}
+% How to format the entry's children.
+% \begin{macrocode}
+ \renewcommand{\glstableblocksubentry}[1]{%
+ \glstableSubDesc{##1} &
+ \glstableSubNameTarget{##1}%
+ }%
+% \end{macrocode}
+% How to format the block's header row, if required.
+% \begin{macrocode}
+ \renewcommand{\glstableblockheader}{%
+ \glstableHeaderFmt\glstabledescheader &
+ \glstableHeaderFmt\glstablenameheader
+ }%
+% \end{macrocode}
+% Set the block's column alignments.
+% \begin{macrocode}
+ \renewcommand{\glstableblockalign}{\glstabledesccolalign\glstablenamecolalign}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\glstablenewstyle{symbol-name}{%
+% \end{macrocode}
+% 2 columns per block (symbol, name).
+% \begin{macrocode}
+ \glstablecolsperblock=2\relax
+% \end{macrocode}
+% Initialise length registers (need to calculate max symbol
+% width if par align).
+% \begin{macrocode}
+ \renewcommand{\glstableinitlengthupdates}{%
+ \ifKV@printglosstable@header
+ \settowidth{\glstablesymbolwidth}%
+ {\glstableHeaderFmt\glstablesymbolheader}%
+ \else
+ \setlength{\glstablesymbolwidth}{0pt}%
+ \fi
+ \setlength{\glstablenamewidth}{0pt}%
+ }%
+% \end{macrocode}
+% Update widths in unsrt hook.
+% \begin{macrocode}
+ \renewcommand{\glstablelengthupdate}[1]{%
+ \glstablemeasureandupdate{\glstablesymbolwidth}{\glstableSymbolFmt{##1}}%
+ }%
+% \end{macrocode}
+% Finally set the name width to the remaining available.
+% \begin{macrocode}
+ \renewcommand{\glstablefinishlengthupdates}{%
+ \setlength{\glstablenamewidth}{\dimexpr\glstableblockwidth
+ - \glstablesymbolwidth}%
+ \ifdim\glstablenamewidth<0pt\relax
+ \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth}%
+ \setlength{\glstablesymbolwidth}{\glstablenamewidth}%
+ \fi
+ }%
+% \end{macrocode}
+% How to format the top-level entry in the block.
+% \begin{macrocode}
+ \renewcommand{\glstableblockentry}[1]{%
+ \glstableSymbolFmt{##1} &
+ \glstableNameNoDesc{##1}%
+ }%
+% \end{macrocode}
+% How to format the entry's children.
+% \begin{macrocode}
+ \renewcommand{\glstableblocksubentry}[1]{%
+ \glstableSubSymbolFmt{##1} &
+ \glstableSubNameNoDesc{##1}%
+ }%
+% \end{macrocode}
+% How to format the block's header row, if required.
+% \begin{macrocode}
+ \renewcommand{\glstableblockheader}{%
+ \glstableHeaderFmt\glstablesymbolheader &
+ \glstableHeaderFmt\glstablenameheader
+ }%
+% \end{macrocode}
+% Set the block's column alignments.
+% \begin{macrocode}
+ \renewcommand{\glstableblockalign}{\glstablesymbolcolalign\glstablenamecolalign}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\glstablenewstyle{name-symbol-desc}{%
+% \end{macrocode}
+% 3 columns per block (name, symbol, description).
+% \begin{macrocode}
+ \glstablecolsperblock=3\relax
+% \end{macrocode}
+% Initialise length registers (need to calculate max name and symbol
+% widths if par align).
+% \begin{macrocode}
+ \renewcommand{\glstableinitlengthupdates}{%
+ \ifKV@printglosstable@header
+ \settowidth{\glstablenamewidth}%
+ {\glstableHeaderFmt\glstablenameheader}%
+ \settowidth{\glstablesymbolwidth}%
+ {\glstableHeaderFmt\glstablesymbolheader}%
+ \else
+ \setlength{\glstablenamewidth}{0pt}%
+ \setlength{\glstablesymbolwidth}{0pt}%
+ \fi
+ \setlength{\glstabledescwidth}{0pt}%
+ }%
+% \end{macrocode}
+% Update widths in unsrt hook.
+% \begin{macrocode}
+ \renewcommand{\glstablelengthupdate}[1]{%
+ \glstablemeasureandupdate{\glstablenamewidth}{\glstableNameFmt{##1}}%
+ \glstablemeasureandupdate{\glstablesymbolwidth}{\glstableSymbolFmt{##1}}%
+ }%
+% \end{macrocode}
+% Finally set the description width to the remaining available.
+% \begin{macrocode}
+ \renewcommand{\glstablefinishlengthupdates}{%
+ \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth
+ - \glstablesymbolwidth - \glstablenamewidth}%
+ \ifdim\glstabledescwidth<0pt\relax
+ \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth
+ - 0.5\glstablesymbolwidth}%
+ \setlength{\glstabledescwidth}{\glstablenamewidth}%
+ \fi
+ }%
+% \end{macrocode}
+% How to format the top-level entry in the block.
+% \begin{macrocode}
+ \renewcommand{\glstableblockentry}[1]{%
+ \glstableNameTarget{##1} &
+ \glstableSymbolFmt{##1} &
+ \glstableDesc{##1}}%
+% \end{macrocode}
+% How to format the entry's children.
+% \begin{macrocode}
+ \renewcommand{\glstableblocksubentry}[1]{%
+ \glstableSubNameTarget{##1} &
+ \glstableSubSymbolFmt{##1} &
+ \glstableSubDesc{##1}}%
+% \end{macrocode}
+% How to format the block's header row, if required.
+% \begin{macrocode}
+ \renewcommand{\glstableblockheader}{%
+ \glstableHeaderFmt\glstablenameheader &
+ \glstableHeaderFmt\glstablesymbolheader &
+ \glstableHeaderFmt\glstabledescheader}%
+% \end{macrocode}
+% Set the block's column alignments.
+% \begin{macrocode}
+ \renewcommand{\glstableblockalign}{%
+ \glstablenamecolalign\glstablesymbolcolalign\glstabledesccolalign}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\glstablenewstyle{name-desc-symbol}{%
+% \end{macrocode}
+% 3 columns per block (name, description, symbol).
+% \begin{macrocode}
+ \glstablecolsperblock=3\relax
+% \end{macrocode}
+% Initialise length registers (need to calculate max name and symbol
+% widths if par align).
+% \begin{macrocode}
+ \renewcommand{\glstableinitlengthupdates}{%
+ \ifKV@printglosstable@header
+ \settowidth{\glstablenamewidth}%
+ {\glstableHeaderFmt\glstablenameheader}%
+ \settowidth{\glstablesymbolwidth}%
+ {\glstableHeaderFmt\glstablesymbolheader}%
+ \else
+ \setlength{\glstablenamewidth}{0pt}%
+ \setlength{\glstablesymbolwidth}{0pt}%
+ \fi
+ \setlength{\glstabledescwidth}{0pt}%
+ }%
+% \end{macrocode}
+% Update widths in unsrt hook.
+% \begin{macrocode}
+ \renewcommand{\glstablelengthupdate}[1]{%
+ \glstablemeasureandupdate{\glstablenamewidth}{\glstableNameFmt{##1}}%
+ \glstablemeasureandupdate{\glstablesymbolwidth}{\glstableSymbolFmt{##1}}%
+ }%
+% \end{macrocode}
+% Finally set the description width to the remaining available.
+% \begin{macrocode}
+ \renewcommand{\glstablefinishlengthupdates}{%
+ \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth
+ - \glstablesymbolwidth - \glstablenamewidth}%
+ \ifdim\glstabledescwidth<0pt\relax
+ \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth
+ - 0.5\glstablesymbolwidth}%
+ \setlength{\glstabledescwidth}{\glstablenamewidth}%
+ \fi
+ }%
+% \end{macrocode}
+% How to format the top-level entry in the block.
+% \begin{macrocode}
+ \renewcommand{\glstableblockentry}[1]{%
+ \glstableNameTarget{##1} &
+ \glstableDesc{##1} &
+ \glstableSymbolFmt{##1}%
+ }%
+% \end{macrocode}
+% How to format the entry's children.
+% \begin{macrocode}
+ \renewcommand{\glstableblocksubentry}[1]{%
+ \glstableSubNameTarget{##1} &
+ \glstableSubDesc{##1} &
+ \glstableSubSymbolFmt{##1}%
+ }%
+% \end{macrocode}
+% How to format the block's header row, if required.
+% \begin{macrocode}
+ \renewcommand{\glstableblockheader}{%
+ \glstableHeaderFmt\glstablenameheader &
+ \glstableHeaderFmt\glstabledescheader &
+ \glstableHeaderFmt\glstablesymbolheader
+ }%
+% \end{macrocode}
+% Set the block's column alignments.
+% \begin{macrocode}
+ \renewcommand{\glstableblockalign}{%
+ \glstablenamecolalign\glstabledesccolalign\glstablesymbolcolalign}%
+}
+% \end{macrocode}
+%
+%As name-desc but the other field is put in the description column.
+% \begin{macrocode}
+\glstablenewstyle{name-other}{%
+% \end{macrocode}
+% 2 columns per block (name, other).
+% \begin{macrocode}
+ \glstablecolsperblock=2\relax
+% \end{macrocode}
+% Initialise length registers (need to calculate max name
+% width if par align).
+% \begin{macrocode}
+ \renewcommand{\glstableinitlengthupdates}{%
+ \ifKV@printglosstable@header
+ \settowidth{\glstablenamewidth}%
+ {\glstableHeaderFmt\glstablenameheader}%
+ \else
+ \setlength{\glstablenamewidth}{0pt}%
+ \fi
+ \setlength{\glstabledescwidth}{0pt}%
+ }%
+% \end{macrocode}
+% Update width in unsrt hook.
+% \begin{macrocode}
+ \renewcommand{\glstablelengthupdate}[1]{%
+ \glstablemeasureandupdate{\glstablenamewidth}{\glstableNameFmt{##1}}%
+ }%
+% \end{macrocode}
+% Finally set the description width to the remaining available.
+% \begin{macrocode}
+ \renewcommand{\glstablefinishlengthupdates}{%
+ \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth
+ - \glstablenamewidth}%
+ \ifdim\glstabledescwidth<0pt\relax
+ \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth}%
+ \setlength{\glstabledescwidth}{\glstablenamewidth}%
+ \fi
+ }%
+% \end{macrocode}
+% How to format the top-level entry in the block.
+% \begin{macrocode}
+ \renewcommand{\glstableblockentry}[1]{%
+ \glstableNameTarget{##1} & \glstableOtherNoDesc{##1}}%
+% \end{macrocode}
+% How to format the entry's children.
+% \begin{macrocode}
+ \renewcommand{\glstableblocksubentry}[1]{%
+ \glstableSubNameTarget{##1} & \glstableSubOtherNoDesc{##1}}%
+% \end{macrocode}
+% How to format the block's header row, if required.
+% \begin{macrocode}
+ \renewcommand{\glstableblockheader}{%
+ \glstableHeaderFmt\glstablenameheader &
+ \glstableHeaderFmt\glstableotherheader}%
+% \end{macrocode}
+% Set the block's column alignments.
+% \begin{macrocode}
+ \renewcommand{\glstableblockalign}{\glstablenamecolalign\glstabledesccolalign}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\glstablenewstyle{other-name}{%
+% \end{macrocode}
+% 2 columns per block (other, name).
+% \begin{macrocode}
+ \glstablecolsperblock=2\relax
+% \end{macrocode}
+% Initialise length registers (need to calculate max name
+% width if par align).
+% \begin{macrocode}
+ \renewcommand{\glstableinitlengthupdates}{%
+ \ifKV@printglosstable@header
+ \settowidth{\glstablenamewidth}%
+ {\glstableHeaderFmt\glstablenameheader}%
+ \else
+ \setlength{\glstablenamewidth}{0pt}%
+ \fi
+ \setlength{\glstabledescwidth}{0pt}%
+ }%
+% \end{macrocode}
+% Update width in unsrt hook.
+% \begin{macrocode}
+ \renewcommand{\glstablelengthupdate}[1]{%
+ \glstablemeasureandupdate{\glstablenamewidth}{\glstableNameFmt{##1}}%
+ }%
+% \end{macrocode}
+% Finally set the description width to the remaining available.
+% \begin{macrocode}
+ \renewcommand{\glstablefinishlengthupdates}{%
+ \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth
+ - \glstablenamewidth}%
+ \ifdim\glstabledescwidth<0pt\relax
+ \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth}%
+ \setlength{\glstabledescwidth}{\glstablenamewidth}%
+ \fi
+ }%
+% \end{macrocode}
+% How to format the top-level entry in the block.
+% \begin{macrocode}
+ \renewcommand{\glstableblockentry}[1]{%
+ \glstableOtherNoDesc{##1} &
+ \glstableNameTarget{##1}}%
+% \end{macrocode}
+% How to format the entry's children.
+% \begin{macrocode}
+ \renewcommand{\glstableblocksubentry}[1]{%
+ \glstableSubOtherNoDesc{##1} &
+ \glstableSubNameTarget{##1}}%
+% \end{macrocode}
+% How to format the block's header row, if required.
+% \begin{macrocode}
+ \renewcommand{\glstableblockheader}{%
+ \glstableHeaderFmt\glstableotherheader &
+ \glstableHeaderFmt\glstablenameheader}%
+% \end{macrocode}
+% Set the block's column alignments.
+% \begin{macrocode}
+ \renewcommand{\glstableblockalign}{\glstabledesccolalign\glstablenamecolalign}%
+}
+% \end{macrocode}
+%
+%As name-other but the use the symbol in place of the name.
+% \begin{macrocode}
+\glstablenewstyle{symbol-other}{%
+% \end{macrocode}
+% 2 columns per block (symbol, other).
+% \begin{macrocode}
+ \glstablecolsperblock=2\relax
+% \end{macrocode}
+% Initialise length registers (need to calculate max symbol
+% width if par align).
+% \begin{macrocode}
+ \renewcommand{\glstableinitlengthupdates}{%
+ \ifKV@printglosstable@header
+ \settowidth{\glstablesymbolwidth}%
+ {\glstableHeaderFmt\glstablesymbolheader}%
+ \else
+ \setlength{\glstablesymbolwidth}{0pt}%
+ \fi
+ \setlength{\glstabledescwidth}{0pt}%
+ }%
+% \end{macrocode}
+% Update width in unsrt hook.
+% \begin{macrocode}
+ \renewcommand{\glstablelengthupdate}[1]{%
+ \glstablemeasureandupdate{\glstablesymbolwidth}{\glstableSymbolNameFmt{##1}}%
+ }%
+% \end{macrocode}
+% Finally set the description width to the remaining available.
+% \begin{macrocode}
+ \renewcommand{\glstablefinishlengthupdates}{%
+ \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth
+ - \glstablesymbolwidth}%
+ \ifdim\glstabledescwidth<0pt\relax
+ \setlength{\glstablesymbolwidth}{\dimexpr0.5\glstableblockwidth}%
+ \setlength{\glstabledescwidth}{\glstablesymbolwidth}%
+ \fi
+ }%
+% \end{macrocode}
+% How to format the top-level entry in the block.
+% \begin{macrocode}
+ \renewcommand{\glstableblockentry}[1]{%
+ \glstableSymbolNameTarget{##1} & \glstableOtherNoDesc{##1}}%
+% \end{macrocode}
+% How to format the entry's children.
+% \begin{macrocode}
+ \renewcommand{\glstableblocksubentry}[1]{%
+ \glstableSubSymbolNameTarget{##1} & \glstableSubOtherNoDesc{##1}}%
+% \end{macrocode}
+% How to format the block's header row, if required.
+% \begin{macrocode}
+ \renewcommand{\glstableblockheader}{%
+ \glstableHeaderFmt\glstablesymbolheader &
+ \glstableHeaderFmt\glstableotherheader}%
+% \end{macrocode}
+% Set the block's column alignments.
+% \begin{macrocode}
+ \renewcommand{\glstableblockalign}{\glstablesymbolcolalign\glstabledesccolalign}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\glstablenewstyle{other-symbol}{%
+% \end{macrocode}
+% 2 columns per block (other-symbol).
+% \begin{macrocode}
+ \glstablecolsperblock=2\relax
+% \end{macrocode}
+% Initialise length registers (need to calculate max symbol
+% width if par align).
+% \begin{macrocode}
+ \renewcommand{\glstableinitlengthupdates}{%
+ \ifKV@printglosstable@header
+ \settowidth{\glstablesymbolwidth}%
+ {\glstableHeaderFmt\glstablesymbolheader}%
+ \else
+ \setlength{\glstablesymbolwidth}{0pt}%
+ \fi
+ \setlength{\glstabledescwidth}{0pt}%
+ }%
+% \end{macrocode}
+% Update width in unsrt hook.
+% \begin{macrocode}
+ \renewcommand{\glstablelengthupdate}[1]{%
+ \glstablemeasureandupdate{\glstablesymbolwidth}{\glstableSymbolNameFmt{##1}}%
+ }%
+% \end{macrocode}
+% Finally set the description width to the remaining available.
+% \begin{macrocode}
+ \renewcommand{\glstablefinishlengthupdates}{%
+ \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth
+ - \glstablesymbolwidth}%
+ \ifdim\glstabledescwidth<0pt\relax
+ \setlength{\glstablesymbolwidth}{\dimexpr0.5\glstableblockwidth}%
+ \setlength{\glstabledescwidth}{\glstablesymbolwidth}%
+ \fi
+ }%
+% \end{macrocode}
+% How to format the top-level entry in the block.
+% \begin{macrocode}
+ \renewcommand{\glstableblockentry}[1]{%
+ \glstableOtherNoDesc{##1} & \glstableSymbolNameTarget{##1}}%
+% \end{macrocode}
+% How to format the entry's children.
+% \begin{macrocode}
+ \renewcommand{\glstableblocksubentry}[1]{%
+ \glstableSubOtherNoDesc{##1} &
+ \glstableSubSymbolNameTarget{##1}}%
+% \end{macrocode}
+% How to format the block's header row, if required.
+% \begin{macrocode}
+ \renewcommand{\glstableblockheader}{%
+ \glstableHeaderFmt\glstableotherheader &
+ \glstableHeaderFmt\glstablesymbolheader}%
+% \end{macrocode}
+% Set the block's column alignments.
+% \begin{macrocode}
+ \renewcommand{\glstableblockalign}{\glstabledesccolalign\glstablesymbolcolalign}%
+}
+% \end{macrocode}
+%
+%
+%\begin{macro}{\glstablecaption}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glstablecaption}\marg{toc title}\marg{title}\marg{label}
+%\end{definition}
+% \begin{macrocode}
+\newcommand{\glstablecaption}[3]{%
+ \caption[#1]{#3#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablepostnextcaption}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstablepostnextcaption}{ Cont./}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablenextcaption}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glstablenextcaption}\marg{toc title}\marg{title}
+%\end{definition}
+% \begin{macrocode}
+\newcommand{\glstablenextcaption}[2]{%
+ \caption[]{#1\glstablepostnextcaption}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablefoot}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glstablefoot}\marg{postamble}
+%\end{definition}
+% \begin{macrocode}
+\newcommand{\glstablefoot}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablelastfoot}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glstablelastfoot}\marg{postamble}
+%\end{definition}
+% \begin{macrocode}
+\newcommand{\glstablelastfoot}[1]{\glstablerowspan{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablehead}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glstablehead}\marg{preamble}
+%\end{definition}
+% \begin{macrocode}
+\newcommand{\glstablehead}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablefirsthead}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glstablefirsthead}\marg{preamble}
+%\end{definition}
+% \begin{macrocode}
+\newcommand{\glstablefirsthead}[1]{\glstablerowspan{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablerowspan}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glstablerowspan}\marg{text}
+%\end{definition}
+% \begin{macrocode}
+\newcommand{\glstablerowspan}[1]{%
+ \multicolumn{\glstabletotalcols}{c}{\parbox{\LTcapwidth}{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstable@begin}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstable@begin}{%
+ \PackageError{glossary-table}{table style can only be used with
+ \string\printunsrttable}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstable@filter}
+%\changes{1.49}{2022-10-14}{new}
+%Filter all child entries, but take level offset into account and
+%apply custom handler.
+% \begin{macrocode}
+\newcommand{\glstable@filter}[1]{%
+ \ifnum\glscurrententrylevel>0\relax
+ \printunsrtglossaryskipentry
+ \else
+ \glstableiffilter{#1}%
+ {\printunsrtglossaryskipentry}%
+ {%
+ \glstableifpar{\glstablelengthupdate{#1}}%
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableiffilter}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableiffilter}[3]{#3}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablenamewidth}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newlength\glstablenamewidth
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableblockwidth}
+%\changes{1.49}{2022-10-14}{new}
+%Maximum width available for each block.
+% \begin{macrocode}
+\newlength\glstableblockwidth
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstabledescwidth}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newlength\glstabledescwidth
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablesymbolwidth}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newlength\glstablesymbolwidth
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableifmeasuring}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glstableifmeasuring}\marg{true}\marg{false}
+%\end{definition}
+% \begin{macrocode}
+\newcommand{\glstableifmeasuring}[2]{#2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstable@stepentry}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstable@stepentry}[1]{%
+ \ifglsentrycounter
+ \stepcounter{glossaryentry}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstable@stepsubentry}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstable@stepsubentry}[1]{%
+ \ifglssubentrycounter
+ \stepcounter{glossarysubentry}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablemeasureandupdate}
+%\changes{1.49}{2022-10-14}{new}
+%\begin{definition}
+%\cs{glstablemeasureandupdate}\marg{len reg}\marg{text}
+%\end{definition}
+% \begin{macrocode}
+\newcommand{\glstablemeasureandupdate}[2]{%
+ \let\glstableifmeasuring\@firstoftwo
+% \end{macrocode}
+%Disable unset and indexing
+% \begin{macrocode}
+ \let\@glsunset\@glsxtrbuffer@unset
+ \let\@gls@org@noindex\ifKV@glslink@noindex
+ \KV@glslink@noindextrue
+% \end{macrocode}
+%Disable targets and links
+% \begin{macrocode}
+ \let\@glstable@org@target\glstarget
+ \let\glstarget\@secondoftwo
+ \let\@glstable@org@link\@glslink
+ \let\@glslink\@secondoftwo
+% \end{macrocode}
+%Disable ref step and label
+% \begin{macrocode}
+ \let\glstable@org@stepentry\glsstepentry
+ \let\glsstepentry\glstable@stepentry
+ \let\glstable@org@stepsubentry\glsstepsubentry
+ \let\glsstepsubentry\glstable@stepsubentry
+% \end{macrocode}
+%Measure.
+% \begin{macrocode}
+ \settowidth{\dimen@}{#2}%
+% \end{macrocode}
+%Update if wider.
+% \begin{macrocode}
+ \ifdim\dimen@>#1\relax
+ \setlength{#1}{\dimen@}%
+ \fi
+% \end{macrocode}
+%Restore
+% \begin{macrocode}
+ \let\ifKV@glslink@noindex\@gls@org@noindex
+ \let\@glsunset\@glsxtr@unset
+ \let\glstarget\@glstable@org@target
+ \let\@glslink\@glstable@org@link
+ \let\glsstepentry\glstable@org@stepentry
+ \let\glsstepsubentry\glstable@org@stepsubentry
+ \let\glstableifmeasuring\@secondoftwo
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstable@ifhaspreamble}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstable@ifhaspreamble}[2]{%
+ \ifdefempty\glossarypreamble
+ {#2}%
+ {%
+ \ifx\@glstable@defaultpreamble\glossarypreamble
+ \ifcsvoid{@glossarypreamble@\currentglossary}{#2}{#1}%
+ \else
+ #1%
+ \fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Need the type, preamble and postamble.
+% \begin{macrocode}
+\define@key{printglosstable}{type}{\renewcommand{\@glo@type}{#1}}
+\define@key{printglosstable}{preamble}{\renewcommand{\glossarypreamble}{#1}}
+\define@key{printglosstable}{postamble}{\renewcommand{\glossarypostamble}{#1}}
+% \end{macrocode}
+%
+%Allow localised initialisation.
+%\begin{macro}{\glstable@init}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand\glstable@init{}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+\define@key{printglosstable}{init}{\renewcommand{\glstable@init}{#1}}
+% \end{macrocode}
+%
+%The default setting is groups=false, unlike the usual default for
+%\cs{printunsrtglossary}. Support for groups isn't fully
+%implemented.
+% \begin{macrocode}
+\define@choicekey{printglosstable}{groups}
+[\@glstable@groups@val\@glstable@groups@n]
+{false,true}[true]%
+{%
+ \ifnum\@glstable@groups@n=0\relax
+ \let\glstable@groupheading\@gobble
+ \glsxtr@printgloss@groupsfalse
+ \else
+ \let\glstable@groupheading\glstablegroupheading
+ \glsxtr@printgloss@groupstrue
+ \fi
+}
+% \end{macrocode}
+%
+%\begin{macro}{\glstable@groupheading}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstable@groupheading}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstablegroupheading}
+%\changes{1.49}{2022-10-14}{new}
+%This isn't quite working as it puts a spurious line above if it
+%occurs at the start of a new row.
+% \begin{macrocode}
+\newcommand{\glstablegroupheading}[1]{%
+ \glstablefinishrow
+ \multicolumn{\glstabletotalcols}{c}{%
+ \glsxtrgetgrouptitle{#1}{\glsxtrcurrentgrptitle}%
+ \glstableGroupHeaderFmt\glsxtrcurrentgrptitle
+ }%
+ \\*%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glstable@defaultpreamble}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\let\@glstable@defaultpreamble\glossarypreamble
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableGroupHeaderFmt}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableGroupHeaderFmt}{\glstableHeaderFmt}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrttable}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd*{\printunsrttable}[1][]{%
+ \bgroup
+% \end{macrocode}
+%Initialise glossary type.
+% \begin{macrocode}
+ \def\@glo@type{\glsdefaulttype}%
+% \end{macrocode}
+%Initialise title.
+% \begin{macrocode}
+ \def\glossarytitle{%
+ \ifcsdef{@glotype@\@glo@type @title}%
+ {\csuse{@glotype@\@glo@type @title}}%
+ {\glossaryname}%
+ }%
+ \def\glossarytoctitle{\glossarytitle}%
+% \end{macrocode}
+%Initialise preamble.
+% \begin{macrocode}
+ \let\glossarypreamble\@glstable@defaultpreamble
+% \end{macrocode}
+%Set table keys.
+% \begin{macrocode}
+ \setkeys*{printglosstable}{#1}%
+ \let\currentglossary\@glo@type
+ \protected@edef\glstable@opts{type=\@glo@type,style=table}%
+ \ifdefempty\XKV@rm{}{\epreto\glstable@opts{\expandonce\XKV@rm,}}%
+% \end{macrocode}
+%Calculate the total number of columns.
+% \begin{macrocode}
+ \glstabletotalcols=\numexpr\glstablecolsperblock*\glstableblockperrowcount\relax
+% \end{macrocode}
+%If the widest name is non-void, calculate the remaining width
+%available for the blocks.
+% \begin{macrocode}
+ \glstableifpar
+ {%
+ \glstableblockwidth=\dimexpr\linewidth/\glstableblockperrowcount
+ -\glstablecolsperblock\tabcolsep\relax
+ \glstableinitlengthupdates
+ }%
+% \end{macrocode}
+%If no vertical line required between blocks, \cs{glstablefinishrow}
+%can simply do a new line.
+% \begin{macrocode}
+ \ifdefempty\glstable@blockalignsep{\def\glstable@finishrow{}}{}%
+% \end{macrocode}
+%Build the header row.
+% \begin{macrocode}
+ \def\glstable@alignment{}%
+ \ifKV@printglosstable@rules
+ \def\glstable@header{\toprule}%
+ \else
+ \def\glstable@header{}%
+ \fi
+ \global\glstablecurrentblockindex=0\relax
+ \loop
+% \end{macrocode}
+%Add to alignment spec.
+% \begin{macrocode}
+ \ifnum\glstablecurrentblockindex>0\relax
+ \protected@eappto\glstable@alignment{\glstable@blockalignsep}%
+ \fi
+ \protected@eappto\glstable@alignment{\glstableblockalign}%
+ \ifKV@printglosstable@header
+% \end{macrocode}
+%Add to header.
+% \begin{macrocode}
+ \ifnum\glstablecurrentblockindex>0\relax
+ \appto\glstable@header{&}%
+ \fi
+ \eappto\glstable@header{\expandonce\glstableblockheader}%
+ \fi
+% \end{macrocode}
+%Increment loop counter
+% \begin{macrocode}
+ \advance\glstablecurrentblockindex by 1\relax
+ \ifnum\glstablecurrentblockindex<\glstableblockperrowcount
+ \repeat
+ \ifKV@printglosstable@header
+% \end{macrocode}
+%Append cr to header.
+% \begin{macrocode}
+ \appto\glstable@header{\tabularnewline}%
+ \ifKV@printglosstable@rules
+ \appto\glstable@header{\midrule}%
+ \fi
+ \fi
+ \protected@edef\glstable@begin{%
+ \noexpand\begin{longtable}{\expandonce\glstable@alignment}%
+ \noexpand\glstablecaption
+ {\noexpand\glossarytoctitle}{\noexpand\glossarytitle}%
+ {\noexpand\@@glossaryseclabel}%
+ \noexpand\tabularnewline
+ }%
+% \end{macrocode}
+%Add preamble if set.
+% \begin{macrocode}
+ \glstable@ifhaspreamble
+ {%
+ \eappto\glstable@begin{\noexpand\glstablefirsthead
+ {\expandonce\glossarypreamble}%
+ \noexpand\tabularnewline
+ \expandonce\glstable@header
+ \noexpand\endfirsthead
+ \noexpand\glstablenextcaption
+ {\noexpand\glossarytoctitle}{\noexpand\glossarytitle}%
+ {\expandonce\glossarypreamble}%
+ }%
+ }%
+ {%
+ \eappto\glstable@begin{%
+ \expandonce\glstable@header
+ \noexpand\endfirsthead
+ \noexpand\glstablenextcaption
+ {\noexpand\glossarytoctitle}{\noexpand\glossarytitle}%
+ }%
+ }%
+ \eappto\glstable@begin{%
+ \noexpand\tabularnewline
+ \expandonce\glstable@header
+ \noexpand\endhead
+ }%
+% \end{macrocode}
+%Add postamble if set.
+% \begin{macrocode}
+ \ifdefvoid\glossarypostamble
+ {%
+% \end{macrocode}
+%Just add rule, if required.
+% \begin{macrocode}
+ \ifKV@printglosstable@rules
+ \appto\glstable@begin{\bottomrule\endfoot}%
+ \fi
+ }
+ {%
+ \ifKV@printglosstable@rules
+ \eappto\glstable@begin{%
+ \noexpand\bottomrule
+ \noexpand\glstablefoot{\expandonce\glossarypostamble}%
+ \noexpand\tabularnewline
+ \noexpand\endfoot
+ \noexpand\bottomrule
+ \noexpand\glstablelastfoot{\expandonce\glossarypostamble}%
+ \noexpand\tabularnewline
+ \noexpand\endlastfoot
+ }%
+ \else
+ \eappto\glstable@begin{%
+ \noexpand\glstablefoot{\expandonce\glossarypostamble}%
+ \noexpand\tabularnewline
+ \noexpand\endfoot
+ \noexpand\glstablelastfoot{\expandonce\glossarypostamble}%
+ \noexpand\tabularnewline
+ \noexpand\endlastfoot
+ }%
+ \fi
+ }%
+% \end{macrocode}
+%Initialisation hook.
+% \begin{macrocode}
+ \glstable@init
+% \end{macrocode}
+%Set up filtering.
+% \begin{macrocode}
+ \let\printunsrtglossaryentryprocesshook\glstable@filter
+% \end{macrocode}
+%Disable preamble and postamble commands as their content has
+%already been added to the table specs.
+% \begin{macrocode}
+ \let\glossarypostamble\relax
+ \let\glossarypreamble\relax
+% \end{macrocode}
+%Disable the section command as the title and toc title are now in
+%the caption.
+% \begin{macrocode}
+ \renewcommand{\glossarysection}[2][]{}%
+% \end{macrocode}
+%The glossary will be empty on the first \LaTeX\ run as the entries
+%won't be defined until \app{bib2gls} has selected them.
+% \begin{macrocode}
+ \glsxtrifemptyglossary{\currentglossary}
+ {%
+ \GlossariesExtraWarning{Glossary `\currentglossary' is empty}%
+% \end{macrocode}
+%Just do the table header and footer to allow it to be added to the
+%list of tables and have the label added to the aux file.
+% \begin{macrocode}
+ \edef\@glsxtr@tmp{\noexpand\setkeys{printgloss}{\expandonce\glstable@opts}}%
+ \@glsxtr@tmp
+ \glstableifpar{\glstablefinishlengthupdates}%
+ \global\glstablecurrentblockindex=0\relax
+ \glstable@begin
+ \glstablefinishrow
+ \end{longtable}%
+ }%
+ {%
+ \expandafter\printunsrtglossary\expandafter[\glstable@opts]\relax
+ }%
+ \egroup
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstable@child}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstable@child}[1]{%
+ \ifdefempty\glstable@dochildren{}%
+ {\appto\glstable@dochildren{\glstableblocksubentrysep}}%
+ \appto\glstable@dochildren{\glstableblocksubentry{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstableChildEntries}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstableChildEntries}[1]{%
+ \def\glstable@dochildren{}%
+ \GlsXtrIfHasNonZeroChildCount*{#1}%
+ {%
+ \glsxtrfieldforlistloop{#1}{childlist}{\glstable@child}%
+ \preto\glstable@dochildren{%
+ \glstablePreChildren
+ \begin{glstablesubentries}%
+ }%
+ \appto\glstable@dochildren{\end{glstablesubentries}}%
+ }%
+ {}%
+ \glstable@dochildren
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstable@n@amps}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstable@n@amps}[1]{%
+ \ifnum#1>0\relax
+ \count@=0\relax
+ \loop
+ \advance\count@ by 1\relax
+ \appto\glstable@endblock{&}%
+ \ifnum\count@<#1
+ \repeat
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%TODO: this needs to do nothing if it occurs are the start of a new
+%row. The position of \cs{tabularnewline} may need changing within
+%\cs{printunsrttable} and the table style.
+%\begin{macro}{\glstablefinishrow}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstablefinishrow}{%
+ \glstable@finishrow
+ \tabularnewline
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstable@finishrow}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glstable@finishrow}{%
+ \def\glstable@endblock{}%
+ \@glstable@finishrow
+ \glstable@endblock
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glstable@finishrow}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\@glstable@finishrow}{%
+ \ifnum\glstablecurrentblockindex>0
+ \ifnum\glstablecurrentblockindex<\glstableblockperrowcount
+ \expandafter\glstable@n@amps\expandafter{%
+ \numexpr
+ (\glstableblockperrowcount-\glstablecurrentblockindex)
+ * (\glstablecolsperblock -1)
+ }%
+ \fi
+ \global\glstablecurrentblockindex=0
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{table}
+%\changes{1.49}{2022-10-14}{new}
+% \begin{macrocode}
+\newglossarystyle{table}%
+{%
+ \renewenvironment{theglossary}%
+ {%
+ \glstableifpar{\glstablefinishlengthupdates}%
+ \global\glstablecurrentblockindex=0\relax
+ \glstable@begin
+ }
+ {%
+ \glstablefinishrow
+ \end{longtable}%
+ }%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{\glstable@groupheading{##1}}%
+ \renewcommand*{\glssubgroupheading}[4]{}%
+ \renewcommand*{\glsgroupskip}{}%
+ \renewcommand{\glossentry}[2]{%
+ \global\advance\glstablecurrentblockindex by 1\relax
+ \ifnum\glstableblockperrowcount=\glstablecurrentblockindex
+ \gdef\glstable@endblock{%
+ \global\glstablecurrentblockindex=0\relax
+ \tabularnewline
+ }%
+ \else
+ \gdef\glstable@endblock{&}%
+ \fi
+ \glstableblockentry{##1}%
+ \glstableChildEntries{##1}%
+ \glstable@endblock
+ }%
+ \renewcommand{\subglossentry}[3]{}%
+}
+% \end{macrocode}
+%\end{style}
+%\iffalse
+% \begin{macrocode}
+%</glossary-table.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
%<*example-glossaries-xr.tex>
% \end{macrocode}
%\fi
@@ -41043,5 +54715,19676 @@ amet, libero}
%</example-glossaries-xr.bib>
% \end{macrocode}
%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-extra-2021-11-22.sty>
+% \end{macrocode}
+%\fi
+%\section{Rollback Files}
+% \subsection{Rollback v1.48 (glossaries-extra-2021-11-22.sty)}
+% Version 1.48 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-extra}[2021/11/22 v1.48 (NLCT)]
+\RequirePackage{xkeyval}
+\RequirePackage{etoolbox}
+\@ifpackageloaded{glossaries}
+{%
+ \newcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}%
+ \let\@glsxtr@declareoption\@gls@declareoption
+}
+{%
+ \newcommand{\glsxtr@dooption}[1]{%
+ \PassOptionsToPackage{#1}{glossaries}%
+ }%
+ \PassOptionsToPackage{toc}{glossaries}
+ \PassOptionsToPackage{nopostdot}{glossaries}
+ \PassOptionsToPackage{noredefwarn}{glossaries}
+ \@ifpackageloaded{polyglossia}%
+ {}%
+ {%
+ \@ifpackageloaded{babel}%
+ {\PassOptionsToPackage{translate=babel}{glossaries}}%
+ {}%
+ }%
+ \newcommand*{\@glsxtr@declareoption}[2]{%
+ \DeclareOptionX{#1}{#2}%
+ \DeclareOption{#1}{#2}%
+ }
+}
+\newcommand*{\glsxtrundefaction}[2]{%
+ \@glsxtrundeftag\PackageError{glossaries-extra}{#1}{#2}%
+}
+\newcommand*{\glsxtr@warnonexistsordo}[1]{}
+\newcommand*{\glsxtrundeftag}{??}
+\newcommand*{\@glsxtrundeftag}{}
+\newcommand*{\@glsxtr@warn@undefaction}[2]{%
+ \@glsxtrundeftag\GlossariesExtraWarning{#1}%
+}
+\newcommand*{\@glsxtr@err@undefaction}[2]{%
+ \@glsxtrundeftag\PackageError{glossaries-extra}{#1}{#2}%
+}
+\newcommand*{\@glsxtr@warn@onexistsordo}[1]{%
+ \GlossariesExtraWarning{\string#1\space hasn't been defined, so
+ some errors won't be converted to warnings.
+ (This most likely means your version of
+ glossaries.sty is below version 4.19.)}%
+}
+
+\newcommand*{\@glsxtr@redef@forglsentries}{}
+\newcommand*{\@glsxtr@do@redef@forglsentries}{%
+ \renewcommand*{\forglsentries}[3][\glsdefaulttype]{%
+ \protected@edef\@@glo@list{\csname glolist@##1\endcsname}%
+ \ifdefstring{\@@glo@list}{,}%
+ {%
+ \GlossariesExtraWarning{No entries defined in glossary `##1'}%
+ }%
+ {%
+ \@for##2:=\@@glo@list\do
+ {%
+ \ifdefempty{##2}{}{##3}%
+ }%
+ }%
+ }%
+}%
+\define@choicekey{glossaries-extra.sty}{undefaction}%
+ [\glsxtr@undefaction@val\glsxtr@undefaction@nr]%
+ {warn,error}%
+ {%
+ \ifcase\glsxtr@undefaction@nr\relax
+ \let\glsxtrundefaction\@glsxtr@warn@undefaction
+ \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo
+ \let\@glsxtr@redef@forglsentries\@glsxtr@do@redef@forglsentries
+ \or
+ \let\glsxtrundefaction\@glsxtr@err@undefaction
+ \let\glsxtr@warnonexistsordo\@gobble
+ \let\@glsxtr@redef@forglsentries\relax
+ \fi
+ }
+\newcommand*{\@glsxtr@record}[3]{}
+\newcommand*{\glsxtr@recordsee}[2]{}
+\newcommand*{\@glsxtr@defaultnumberformat}{glsnumberformat}%
+\newcommand*{\GlsXtrSetDefaultNumberFormat}[1]{%
+ \renewcommand*{\@glsxtr@defaultnumberformat}{#1}%
+}%
+\newcommand*{\@glsxtr@do@record@wrglossary}[1]{%
+ \begingroup
+ \ifKV@glslink@noindex
+ \else
+ \protected@edef\@gls@label{\glsdetoklabel{#1}}%
+ \let\glslabel\@gls@label
+ \glswriteentry{#1}%
+ {%
+ \ifdefempty{\@glsxtr@thevalue}%
+ {%
+ \ifx\@glsxtr@org@theHvalue\@glsxtr@theHvalue
+ \else
+ \let\theHglsentrycounter\@glsxtr@theHvalue
+ \fi
+ \glsxtr@saveentrycounter
+ \let\@@do@@wrglossary\@glsxtr@dorecord
+ }%
+ {%
+ \let\theglsentrycounter\@glsxtr@thevalue
+ \let\theHglsentrycounter\@glsxtr@theHvalue
+ \let\@@do@@wrglossary\@glsxtr@dorecordnodefer
+ }%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex
+ \glsxtr@@do@wrglossary{#1}%
+ \else
+ \@@glsxtrwrglossmark
+ \glsxtr@inc@wrglossaryctr{#1}%
+ \@@do@@wrglossary
+ \fi
+ }%
+ \fi
+ \endgroup
+}
+\newcommand*{\glsxtr@do@alsoindex@wrglossary}[1]{%
+ \glsxtr@@do@wrglossary{#1}%
+ \@glsxtr@do@record@wrglossary{#1}%
+}
+\newcommand*{\@@glsxtr@record}[3]{%
+ \protected@edef\@gls@label{\glsdetoklabel{#2}}%
+ \let\glslabel\@gls@label
+ \ifglsentryexists{#2}{}%
+ {%
+ \@@glsxtrwrglossmark
+ \begingroup
+ \let\@glsnumberformat\@glsxtr@defaultnumberformat
+ \def\@glsxtr@thevalue{}%
+ \def\@glsxtr@theHvalue{\@glsxtr@thevalue}%
+ \let\@glsxtr@org@theHvalue\@glsxtr@theHvalue
+ \let\@gls@counter\glscounter
+ \if@glsxtr@equations
+ \@glsxtr@use@equation@counter
+ \fi
+ \@gls@setdefault@glslink@opts
+ \csuse{@glsxtr@#3@prekeys}%
+ \setkeys{#3}{#1}%
+ \glsxtr@do@autoadd{#3}%
+ \csuse{@glsxtr@#3@postkeys}%
+ \glsxtr@inc@wrglossaryctr{#2}%
+ \ifKV@glslink@noindex
+ \else
+ \glswriteentry{#2}%
+ {%
+ \ifdefempty{\@glsxtr@thevalue}%
+ {%
+ \ifx\@glsxtr@org@theHvalue\@glsxtr@theHvalue
+ \else
+ \let\theHglsentrycounter\@glsxtr@theHvalue
+ \fi
+ \glsxtr@saveentrycounter
+ \let\@@do@@wrglossary\@glsxtr@dorecord
+ }%
+ {%
+ \let\theglsentrycounter\@glsxtr@thevalue
+ \let\theHglsentrycounter\@glsxtr@theHvalue
+ \let\@@do@@wrglossary\@glsxtr@dorecordnodefer
+ }%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex
+ \glsxtr@@do@wrglossary{#2}%
+ \else
+ \@@do@@wrglossary
+ \fi
+ }%
+ \fi
+ \endgroup
+ }%
+}
+\newcommand{\@glsxtr@glslink@prekeys}{\glslinkpresetkeys}
+\newcommand{\@glsxtr@glslink@postkeys}{\glslinkpostsetkeys}
+\newcommand{\@glsxtr@glossadd@prekeys}{\glsaddpresetkeys}
+\newcommand{\@glsxtr@glossadd@postkeys}{\glsaddpostsetkeys}
+\newcommand*\@glsxtr@dorecord{%
+ \global\let\@glsrecordlocref\theglsentrycounter
+ \let\@glsxtr@orgprefix\@glo@counterprefix
+ \ifx\theglsentrycounter\theHglsentrycounter
+ \def\@glo@counterprefix{}%
+ \else
+ \protected@edef\@glsxtr@theentrycounter{\theglsentrycounter}%
+ \protected@edef\@glsxtr@theHentrycounter{\theHglsentrycounter}%
+ \@onelevel@sanitize\@glsxtr@theentrycounter
+ \@onelevel@sanitize\@glsxtr@theHentrycounter
+ \protected@edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
+ {\@glsxtr@theentrycounter}{\@glsxtr@theHentrycounter}%
+ }%
+ \@do@gls@getcounterprefix
+ \fi
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ \@glsxtr@do@nameref@record
+ {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}%
+ {\@glsrecordlocref}%
+ \else
+ \protected@write\@auxout{}{\string\glsxtr@record
+ {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}%
+ {\@glsrecordlocref}}%
+ \fi
+ \@glsxtr@counterrecordhook
+ \let\@glo@counterprefix\@glsxtr@orgprefix
+}
+\newcommand*\@glsxtr@dorecordnodefer{%
+ \ifx\theglsentrycounter\theHglsentrycounter
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ \@glsxtr@do@nameref@record
+ {\@gls@label}{}{\@gls@counter}{\@glsnumberformat}%
+ {\theglsentrycounter}%
+ \else
+ \protected@write\@auxout{}{\string\glsxtr@record
+ {\@gls@label}{}{\@gls@counter}{\@glsnumberformat}%
+ {\theglsentrycounter}}%
+ \fi
+ \else
+ \edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
+ {\theglsentrycounter}{\theHglsentrycounter}%
+ }%
+ \@do@gls@getcounterprefix
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ \@glsxtr@do@nameref@record
+ {\@gls@label}{\@glo@counterprefix}{\@gls@counter}%
+ {\@glsnumberformat}{\theglsentrycounter}%
+ \else
+ \protected@write\@auxout{}{\string\glsxtr@record
+ {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}%
+ {\theglsentrycounter}}%
+ \fi
+ \fi
+ \@glsxtr@counterrecordhook
+}
+\newcommand{\@glsxtr@ifnum@mmode}[2]{%
+ \ifmmode
+ \ifst@rred
+ #2%
+ \else
+ \if@display #1\else #2\fi
+ \fi
+ \else
+ #2%
+ \fi
+}
+\newcommand*{\@glsxtr@do@nameref@record}[5]{%
+ \gls@ifnotmeasuring
+ {%
+ \protected@write\@auxout{}{\string\glsxtr@record@nameref
+ {#1}{#2}{#3}{#4}{#5}%
+ {\csuse{@currentlabelname}}{\csuse{@currentHref}}%
+ {\theHglsentrycounter}}%
+ }%
+}
+\newcommand*{\@@glsxtr@recordcounter}{%
+ \@glsxtr@noop@recordcounter
+}
+\newcommand*{\@glsxtr@noop@recordcounter}[1]{%
+ \PackageError{glossaries-extra}{\string\GlsXtrRecordCounter\space
+ requires record=only or record=hybrid package option}{}%
+}
+\newcommand*{\@glsxtr@op@recordcounter}[1]{%
+ \protected@eappto\@glsxtr@counterrecordhook{\noexpand\@glsxtr@docounterrecord{#1}}%
+}
+\newcommand*{\@glsxtr@recordsee}[2]{%
+ \@@glsxtrwrglossmark
+ \def\@gls@xref{#2}%
+ \@onelevel@sanitize\@gls@xref
+ \protected@write\@auxout{}{\string\glsxtr@recordsee{#1}{\@gls@xref}}%
+}
+\newcommand{\printunsrtglossaryunit}{%
+ \print@noop@unsrtglossaryunit
+}
+\newcommand*{\glsxtr@setup@record}{\let\@@do@wrglossary\glsxtr@@do@wrglossary}
+\newcommand*{\glsxtr@indexonly@saveentrycounter}{%
+ \ifKV@glslink@noindex
+ \else
+ \glsxtr@saveentrycounter
+ \fi
+}
+\newcommand*{\glsxtr@addloclistfield}{%
+ \key@ifundefined{glossentry}{loclist}%
+ {%
+ \define@key{glossentry}{loclist}{\def\@glo@loclist{##1}}%
+ \appto\@gls@keymap{,{loclist}{loclist}}%
+ \appto\@newglossaryentryprehook{\def\@glo@loclist{}}%
+ \appto\@newglossaryentryposthook{%
+ \gls@assign@field{}{\@glo@label}{loclist}{\@glo@loclist}%
+ }%
+ \glssetnoexpandfield{loclist}%
+ }%
+ {}%
+ \key@ifundefined{glossentry}{location}%
+ {%
+ \define@key{glossentry}{location}{\def\@glo@location{##1}}%
+ \appto\@gls@keymap{,{location}{location}}%
+ \appto\@newglossaryentryprehook{\def\@glo@location{}}%
+ \appto\@newglossaryentryposthook{%
+ \gls@assign@field{}{\@glo@label}{location}{\@glo@location}%
+ }%
+ \glssetnoexpandfield{location}%
+ }%
+ {}%
+ \key@ifundefined{glossentry}{group}%
+ {%
+ \define@key{glossentry}{group}{\def\@glo@group{##1}}%
+ \appto\@gls@keymap{,{group}{group}}%
+ \appto\@newglossaryentryprehook{\def\@glo@group{}}%
+ \appto\@newglossaryentryposthook{%
+ \gls@assign@field{}{\@glo@label}{group}{\@glo@group}%
+ }%
+ \glssetnoexpandfield{group}%
+ }%
+ {}%
+}
+\newcommand*{\@glsxtr@record@setting}{off}
+\newcommand*{\@glsxtr@record@setting@alsoindex}{alsoindex}
+\newcommand*{\@glsxtr@record@setting@only}{only}
+\newcommand*{\@glsxtr@record@setting@nameref}{nameref}
+\newcommand*{\@glsxtr@if@record@only}[2]{%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@only
+ #1%
+ \else
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ #1%
+ \else
+ #2%
+ \fi
+ \fi
+}
+\newcommand*{\@glsxtr@record@setting@off}{off}
+\newcommand\@glsxtr@warn@hybrid@noprintgloss{%
+ \ifdefstring{\@glo@types}{,}%
+ {%
+ \GlossariesExtraWarningNoLine{No glossaries have been defined}%
+ }%
+ {%
+ \GlossariesExtraWarningNoLine{No \string\printglossary\space
+ or \string\printglossaries\space
+ found. ^^JYou have requested the hybrid setting
+ record=\@glsxtr@record@setting\space which requires a
+ combination of bib2gls (to fetch entries) and makeindex/xindy
+ (to sort and collate the entries). If you only want to use
+ bib2gls then change the option to record=only or record=nameref}%
+ }%
+}
+\newcommand*{\@glsxtr@record@only@setup}{%
+ \def\glsxtr@setup@record{%
+ \@glsxtr@autoseeindexfalse
+ \let\@do@seeglossary\@glsxtr@recordsee
+ \let\@glsxtr@record\@@glsxtr@record
+ \let\@@do@wrglossary\@glsxtr@do@record@wrglossary
+ \let\@gls@saveentrycounter\relax
+ \let\glsxtrundefaction\@glsxtr@warn@undefaction
+ \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo
+ \glsxtr@addloclistfield
+ \renewcommand*{\@glsxtr@autoindexcrossrefs}{}%
+ \let\@@glsxtr@recordcounter\@glsxtr@op@recordcounter
+ \def\printunsrtglossaryunit{\print@op@unsrtglossaryunit}%
+ \def\glsxtrsetaliasnoindex{}%
+ \ifdef\@gls@setupsort@none{\@gls@setupsort@none}{}%
+ \def\glsxtrNoGlossaryWarning{\@glsxtr@record@noglossarywarning}%
+ \RequirePackage{glossaries-extra-bib2gls}[=v1.48]%
+ }%
+}
+\define@choicekey{glossaries-extra.sty}{record}
+ [\@glsxtr@record@setting\glsxtr@record@nr]%
+ {off,only,alsoindex,nameref,hybrid}%
+ [only]%
+ {%
+ \ifcase\glsxtr@record@nr\relax
+ \def\glsxtr@setup@record{%
+ \renewcommand*{\@do@seeglossary}{\@glsxtr@doseeglossary}%
+ \renewcommand*{\@glsxtr@record}[3]{}%
+ \let\@@do@wrglossary\glsxtr@@do@wrglossary
+ \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter
+ \let\glsxtrundefaction\@glsxtr@err@undefaction
+ \let\glsxtr@warnonexistsordo\@gobble
+ \let\@@glsxtr@recordcounter\@glsxtr@noop@recordcounter
+ \def\printunsrtglossaryunit{\print@noop@unsrtglossaryunit}%
+ \undef\glsxtrsetaliasnoindex
+ }%
+ \or
+ \@glsxtr@record@only@setup
+ \or
+ \def\glsxtr@setup@record{%
+ \renewcommand*{\@glsxtr@record@setting@alsoindex}{alsoindex}%
+ \renewcommand*{\@do@seeglossary}{\@glsxtr@dosee@alsoindex@glossary}%
+ \let\@glsxtr@record\@@glsxtr@record
+ \let\@@do@wrglossary\glsxtr@do@alsoindex@wrglossary
+ \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter
+ \let\glsxtrundefaction\@glsxtr@warn@undefaction
+ \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo
+ \glsxtr@addloclistfield
+ \let\@@glsxtr@recordcounter\@glsxtr@op@recordcounter
+ \def\printunsrtglossaryunit{\print@op@unsrtglossaryunit}%
+ \undef\glsxtrsetaliasnoindex
+ }%
+ \or
+ \@glsxtr@record@only@setup
+ \ifundef\hyperlink
+ {\GlossariesExtraWarning{You have requested record=nameref but
+ the document doesn't support hyperlinks}}%
+ {}%
+ \or
+ \def\glsxtr@setup@record{%
+ \renewcommand*{\@glsxtr@record@setting@alsoindex}{hybrid}%
+ \renewcommand*{\@do@seeglossary}{\@glsxtr@dosee@alsoindex@glossary}%
+ \let\@glsxtr@record\@@glsxtr@record
+ \let\@@do@wrglossary\glsxtr@do@alsoindex@wrglossary
+ \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter
+ \let\glsxtrundefaction\@glsxtr@warn@undefaction
+ \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo
+ \glsxtr@addloclistfield
+ \let\@@glsxtr@recordcounter\@glsxtr@op@recordcounter
+ \def\printunsrtglossaryunit{\print@op@unsrtglossaryunit}%
+ \undef\glsxtrsetaliasnoindex
+ }%
+ \fi
+ }
+\newcommand*{\@glsxtr@docdefval}{0}
+\newcommand*{\if@glsxtrdocdef}{\ifnum\@glsxtr@docdefval>0 }
+\newcommand*{\@glsxtrdocdeftrue}{\def\@glsxtr@docdefval{1}}
+\newcommand*{\@glsxtrdocdeffalse}{\def\@glsxtr@docdefval{0}}
+\define@choicekey{glossaries-extra.sty}{docdef}
+ [\@glsxtr@docdefsetting\@glsxtr@docdefval]%
+ {false,true,restricted,atom}[true]%
+{%
+ \ifnum\@glsxtr@docdefval>1\relax
+ \renewcommand*{\@glsdoifexistsorwarn}{\glsdoifexists}%
+ \else
+ \renewcommand*{\@glsdoifexistsorwarn}{\glsdoifexistsorwarn}%
+ \fi
+}
+\newcommand*{\if@glsxtrdocdefrestricted}{\ifnum\@glsxtr@docdefval>1 }
+\newcommand*{\@glsdoifexistsorwarn}{\glsdoifexistsorwarn}
+\define@boolkey{glossaries-extra.sty}[@glsxtr]{indexcrossrefs}[true]{%
+ \if@glsxtrindexcrossrefs
+ \else
+ \renewcommand*{\@glsxtr@autoindexcrossrefs}{}%
+ \fi
+}
+\@glsxtrindexcrossrefsfalse
+\newcommand*{\@glsxtr@autoindexcrossrefs}{\@glsxtrindexcrossrefstrue}
+\define@boolkey{glossaries-extra.sty}[@glsxtr@]{autoseeindex}[true]{%
+}
+\@glsxtr@autoseeindextrue
+\define@boolkey{glossaries-extra.sty}[@glsxtr@]{equations}[true]{%
+}
+\@glsxtr@equationsfalse
+\let\glsxtr@float\@float
+\let\glsxtr@dblfloat\@dblfloat
+\define@boolkey{glossaries-extra.sty}[@glsxtr@]{floats}[true]{%
+ \if@glsxtr@floats
+ \renewcommand*{\@float}[1]{\renewcommand{\glscounter}{##1}\glsxtr@float{##1}}%
+ \renewcommand*{\@dblfloat}[1]{\renewcommand{\glscounter}{##1}\glsxtr@dblfloat{##1}}%
+ \else
+ \let\@float\glsxtr@float
+ \let\@dblfloat\glsxtr@dblfloat
+ \fi
+}
+\@glsxtr@floatsfalse
+\newcommand*{\GlossariesExtraWarning}[1]{\PackageWarning{glossaries-extra}{#1}}
+\newcommand*{\GlossariesExtraWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries-extra}{#1}}
+\@glsxtr@declareoption{nowarn}{%
+ \let\GlossariesExtraWarning\@gobble
+ \let\GlossariesExtraWarningNoLine\@gobble
+ \glsxtr@dooption{nowarn}%
+}
+\newcommand*{\@glsxtr@defpostpunc}{}
+\@glsxtr@declareoption{postdot}{%
+ \glsxtr@dooption{nopostdot=false}%
+ \renewcommand*{\@glsxtr@defpostpunc}{%
+ \renewcommand*{\glspostdescription}{%
+ \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi}%
+ }%
+}
+
+\define@choicekey{glossaries-extra.sty}{nopostdot}{true,false}[true]{%
+ \glsxtr@dooption{nopostdot=#1}%
+ \renewcommand*{\@glsxtr@defpostpunc}{%
+ \renewcommand*{\glspostdescription}{%
+ \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi}%
+ }%
+}
+\define@key{glossaries-extra.sty}{postpunc}{%
+ \glsxtr@dooption{nopostdot=false}%
+ \ifstrequal{#1}{dot}%
+ {%
+ \renewcommand*{\@glsxtr@defpostpunc}{%
+ \renewcommand*{\glspostdescription}{.\spacefactor\sfcode`\. }%
+ }%
+ }%
+ {%
+ \ifstrequal{#1}{comma}%
+ {%
+ \renewcommand*{\@glsxtr@defpostpunc}{%
+ \renewcommand*{\glspostdescription}{,}%
+ }%
+ }%
+ {%
+ \ifstrequal{#1}{none}%
+ {%
+ \glsxtr@dooption{nopostdot=true}%
+ \renewcommand*{\@glsxtr@defpostpunc}{%
+ \renewcommand*{\glspostdescription}{}%
+ }%
+ }%
+ {%
+ \renewcommand*{\@glsxtr@defpostpunc}{%
+ \renewcommand*{\glspostdescription}{#1}%
+ }%
+ }%
+ }%
+ }%
+}
+\newcommand*{\glsxtrabbrvtype}{\glsdefaulttype}
+\newcommand*{\@glsxtr@abbreviationsdef}{}
+
+\newcommand*{\@glsxtr@doabbreviationsdef}{%
+ \@ifpackageloaded{babel}%
+ {\providecommand{\abbreviationsname}{\acronymname}}%
+ {\providecommand{\abbreviationsname}{Abbreviations}}%
+ \newglossary[glg-abr]{abbreviations}{gls-abr}{glo-abr}{\abbreviationsname}%
+ \renewcommand*{\glsxtrabbrvtype}{abbreviations}%
+ \newcommand*{\printabbreviations}[1][]{%
+ \printglossary[type=\glsxtrabbrvtype,##1]%
+ }%
+ \disable@keys{glossaries-extra.sty}{abbreviations}%
+ \ifglsacronym
+ \else
+ \renewcommand*{\acronymtype}{\glsxtrabbrvtype}%
+ \fi
+}%
+\@glsxtr@declareoption{abbreviations}{%
+ \let\@glsxtr@abbreviationsdef\@glsxtr@doabbreviationsdef
+}
+\newcommand*{\GlsXtrDefineAbbreviationShortcuts}{%
+ \newcommand*{\ab}{\cgls}%
+ \newcommand*{\abp}{\cglspl}%
+ \newcommand*{\as}{\glsxtrshort}%
+ \newcommand*{\asp}{\glsxtrshortpl}%
+ \newcommand*{\al}{\glsxtrlong}%
+ \newcommand*{\alp}{\glsxtrlongpl}%
+ \newcommand*{\af}{\glsxtrfull}%
+ \newcommand*{\afp}{\glsxtrfullpl}%
+ \newcommand*{\Ab}{\cGls}%
+ \newcommand*{\Abp}{\cGlspl}%
+ \newcommand*{\As}{\Glsxtrshort}%
+ \newcommand*{\Asp}{\Glsxtrshortpl}%
+ \newcommand*{\Al}{\Glsxtrlong}%
+ \newcommand*{\Alp}{\Glsxtrlongpl}%
+ \newcommand*{\Af}{\Glsxtrfull}%
+ \newcommand*{\Afp}{\Glsxtrfullpl}%
+ \newcommand*{\AB}{\cGLS}%
+ \newcommand*{\ABP}{\cGLSpl}%
+ \newcommand*{\AS}{\GLSxtrshort}%
+ \newcommand*{\ASP}{\GLSxtrshortpl}%
+ \newcommand*{\AL}{\GLSxtrlong}%
+ \newcommand*{\ALP}{\GLSxtrlongpl}%
+ \newcommand*{\AF}{\GLSxtrfull}%
+ \newcommand*{\AFP}{\GLSxtrfullpl}%
+ \providecommand*{\newabbr}{\newabbreviation}%
+ \let\GlsXtrDefineAbbreviationShortcuts\relax
+}
+\newcommand*{\GlsXtrDefineAcShortcuts}{%
+ \newcommand*{\ac}{\cgls}%
+ \newcommand*{\acp}{\cglspl}%
+ \newcommand*{\acs}{\glsxtrshort}%
+ \newcommand*{\acsp}{\glsxtrshortpl}%
+ \newcommand*{\acl}{\glsxtrlong}%
+ \newcommand*{\aclp}{\glsxtrlongpl}%
+ \newcommand*{\acf}{\glsxtrfull}%
+ \newcommand*{\acfp}{\glsxtrfullpl}%
+ \newcommand*{\Ac}{\cGls}%
+ \newcommand*{\Acp}{\cGlspl}%
+ \newcommand*{\Acs}{\Glsxtrshort}%
+ \newcommand*{\Acsp}{\Glsxtrshortpl}%
+ \newcommand*{\Acl}{\Glsxtrlong}%
+ \newcommand*{\Aclp}{\Glsxtrlongpl}%
+ \newcommand*{\Acf}{\Glsxtrfull}%
+ \newcommand*{\Acfp}{\Glsxtrfullpl}%
+ \newcommand*{\AC}{\cGLS}%
+ \newcommand*{\ACP}{\cGLSpl}%
+ \newcommand*{\ACS}{\GLSxtrshort}%
+ \newcommand*{\ACSP}{\GLSxtrshortpl}%
+ \newcommand*{\ACL}{\GLSxtrlong}%
+ \newcommand*{\ACLP}{\GLSxtrlongpl}%
+ \newcommand*{\ACF}{\GLSxtrfull}%
+ \newcommand*{\ACFP}{\GLSxtrfullpl}%
+ \providecommand*{\newabbr}{\newabbreviation}%
+ \let\GlsXtrDefineAcShortcuts\relax
+}
+\newcommand*{\GlsXtrDefineOtherShortcuts}{%
+ \newcommand*{\newentry}{\newglossaryentry}%
+ \ifdef\printsymbols
+ {%
+ \newcommand*{\newsym}{\glsxtrnewsymbol}%
+ }{}%
+ \ifdef\printnumbers
+ {%
+ \newcommand*{\newnum}{\glsxtrnewnumber}%
+ }{}%
+ \let\GlsXtrDefineOtherShortcuts\relax
+}
+\newcommand*{\@glsxtr@setupshortcuts}{}
+\newcommand*{\@glsxtr@shortcutsval}{\ifglsacrshortcuts acro\else none\fi}%
+\define@choicekey{glossaries-extra.sty}{shortcuts}%
+ [\@glsxtr@shortcutsval\@glsxtr@shortcutsnr]%
+ {acronyms,acro,abbreviations,abbr,other,all,true,ac,none,false}[true]{%
+ \ifcase\@glsxtr@shortcutsnr\relax % acronyms
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+ \DefineAcronymSynonyms
+ }%
+ \or % acro
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+ \DefineAcronymSynonyms
+ }%
+ \or % abbreviations
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \GlsXtrDefineAbbreviationShortcuts
+ }%
+ \or % abbr
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \GlsXtrDefineAbbreviationShortcuts
+ }%
+ \or % other
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \GlsXtrDefineOtherShortcuts
+ }%
+ \or % all
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+ \GlsXtrDefineAcShortcuts
+ \GlsXtrDefineAbbreviationShortcuts
+ \GlsXtrDefineOtherShortcuts
+ }%
+ \or % true
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+ \GlsXtrDefineAcShortcuts
+ \GlsXtrDefineAbbreviationShortcuts
+ \GlsXtrDefineOtherShortcuts
+ }%
+ \or % ac
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+ \GlsXtrDefineAcShortcuts
+ }%
+ \else % none, false
+ \renewcommand*{\@glsxtr@setupshortcuts}{}%
+ \fi
+ }
+\newcommand*{\@glsxtr@doaccsupp}{}
+\@glsxtr@declareoption{accsupp}{%
+ \renewcommand*{\@glsxtr@doaccsupp}{\RequirePackage{glossaries-accsupp}}}
+\newcommand*{\@glsxtr@doloadprefix}{}
+\@glsxtr@declareoption{prefix}{%
+ \renewcommand*{\@glsxtr@doloadprefix}{\RequirePackage{glossaries-prefix}}}
+\newcommand{\glsxtrNoGlossaryWarning}[1]{%
+ \GlossariesExtraWarning{Glossary `#1' is missing}%
+ \@glsxtr@defaultnoglossarywarning{#1}%
+}
+\define@choicekey{glossaries-extra.sty}{nomissingglstext}
+ [\@glsxtr@nomissingglstextval\@glsxtr@nomissingglstextnr]%
+ {true,false}[true]{%
+ \ifcase\@glsxtr@nomissingglstextnr\relax % true
+ \renewcommand{\glsxtrNoGlossaryWarning}[1]{\null}%
+ \else % false
+ \renewcommand{\glsxtrNoGlossaryWarning}[1]{%
+ \@glsxtr@defaultnoglossarywarning{#1}%
+ }%
+ \fi
+ }
+\newcommand*{\@glsxtr@redefstyles}{}
+\define@key{glossaries-extra.sty}{stylemods}[default]{%
+ \ifstrequal{#1}{default}%
+ {%
+ \renewcommand*{\@glsxtr@redefstyles}{%
+ \RequirePackage{glossaries-extra-stylemods}}%
+ }%
+ {%
+ \ifstrequal{#1}{all}%
+ {%
+ \renewcommand*{\@glsxtr@redefstyles}{%
+ \PassOptionsToPackage{all}{glossaries-extra-stylemods}%
+ \RequirePackage{glossaries-extra-stylemods}%
+ }%
+ }%
+ {%
+ \renewcommand*{\@glsxtr@redefstyles}{}%
+ \@for\@glsxtr@tmp:=#1\do{%
+ \IfFileExists{glossary-\@glsxtr@tmp.sty}%
+ {%
+ \eappto\@glsxtr@redefstyles{%
+ \noexpand\RequirePackage{glossary-\@glsxtr@tmp}}%
+ }%
+ {%
+ \PackageError{glossaries-extra}%
+ {Glossaries style package `glossary-\@glsxtr@tmp.sty'
+ doesn't exist (did you mean to use the `style' key?)}%
+ {The list of values (#1) in the `stylemods' key should
+ match the glossary-xxx.sty files provided with
+ glossaries.sty}%
+ }%
+ }%
+ \appto\@glsxtr@redefstyles{\RequirePackage{glossaries-extra-stylemods}[=v1.48]}%
+ }
+ }%
+}
+\newcommand*{\@glsxtr@do@style}{}
+\define@key{glossaries-extra.sty}{style}{%
+ \renewcommand*{\@glsxtr@do@style}{%
+ \setkeys{glossaries.sty}{style={#1}}%
+ \setglossarystyle{#1}%
+ }%
+}
+\newcommand*{\glsxtr@inc@wrglossaryctr}[1]{}
+\newcommand*{\GlsXtrInternalLocationHyperlink}[3]{%
+ \glsxtrhyperlink{#1#2#3}{#3}%
+}
+\newcommand*{\@glsxtr@wrglossary@locationhyperlink}[3]{%
+ \pageref{wrglossary.#3}%
+}
+\@glsxtr@declareoption{indexcounter}{%
+ \glsxtr@dooption{counter=wrglossary}%
+ \ifundef\c@wrglossary
+ {%
+ \newcounter{wrglossary}%
+ \renewcommand{\thewrglossary}{\arabic{wrglossary}}%
+ }%
+ {}%
+ \renewcommand*{\glsxtr@inc@wrglossaryctr}[1]{%
+ \ifdefstring\@gls@counter{wrglossary}%
+ {%
+ \refstepcounter{wrglossary}%
+ \label{wrglossary.\thewrglossary}%
+ }%
+ {}%
+ }%
+ \renewcommand*{\GlsXtrInternalLocationHyperlink}[3]{%
+ \ifdefstring\glsentrycounter{wrglossary}%
+ {%
+ \@glsxtr@wrglossary@locationhyperlink{##1}{##2}{##3}%
+ }%
+ {\glsxtrhyperlink{##1##2##3}{##3}}%
+ }%
+}
+\newcommand*{\@glsxtrwrglossmark}{}
+\newcommand*{\@@glsxtrwrglossmark}{}
+\AtBeginDocument{\renewcommand*{\@@glsxtrwrglossmark}{\@glsxtrwrglossmark}}
+\newcommand*{\glsxtrwrglossmark}{\ensuremath{\cdot}}
+\newcommand\@glsxtr@doshowtarget[2]{#2}
+\define@choicekey{glossaries-extra.sty}{debug}
+ [\@glsxtr@debugval\@glsxtr@debugnr]%
+ {true,false,showtargets,showwrgloss,all,showaccsupp}[true]{%
+ \ifcase\@glsxtr@debugnr\relax % true
+ \glsxtr@dooption{debug=true}%
+ \renewcommand*{\@glsxtrwrglossmark}{}%
+ \or % false
+ \glsxtr@dooption{debug=false}%
+ \renewcommand*{\@glsxtrwrglossmark}{}%
+ \let\@glsxtr@doshowtarget\@secondoftwo
+ \or % showtargets
+ \glsxtr@dooption{debug=showtargets}%
+ \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}%
+ \or % showwrgloss
+ \glsxtr@dooption{debug=true}%
+ \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}%
+ \or % all
+ \glsxtr@dooption{debug=showtargets,debug=showaccsupp}%
+ \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}%
+ \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}%
+ \or % showaccsupp
+ \glsxtr@dooption{debug=showaccsupp}%
+ \fi
+ }
+\newcommand*{\glsxtrshowtargetouter}{\glsshowtargetouter}
+\newcommand*{\glsxtrshowtargetinner}[1]{\glsshowtargetinner{#1}}
+\newcommand{\@glsxtrshowtargetleft}[2]{\@glsshowtarget{#1}#2\@glsxtrshowtargetmark}%
+\newcommand{\@glsxtrshowtargetright}[2]{\@glsxtrshowtargetmark#2\@glsshowtarget{#1}}%
+\newcommand{\@glsxtrshowtargetmark}{}%
+\define@choicekey{glossaries-extra.sty}{showtargets}
+ [\@glsxtr@showtargetsval\@glsxtr@showtargetsnr]%
+ {left,right,innerleft,innerright,annoteleft,annoteright}%
+ {%
+ \glsxtr@dooption{debug=showtargets}%
+ \ifcase\@glsxtr@showtargetsnr\relax
+ \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}%
+ \def\glsxtrshowtargetouter{\glsshowtargetouter}%
+ \def\glsxtrshowtargetinner{\glsshowtargetinner}%
+ \let\@glsxtrshowtargetmark\empty
+ \or
+ \def\@glsxtr@doshowtarget{\@glsxtrshowtargetright}%
+ \def\glsxtrshowtargetouter{\glsshowtargetouter}%
+ \def\glsxtrshowtargetinner{\glsshowtargetinner}%
+ \let\@glsxtrshowtargetmark\empty
+ \or
+ \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}%
+ \def\glsxtrshowtargetouter{\glsxtrshowtargetinner}%
+ \def\glsxtrshowtargetinner{\glsshowtargetinnersymleft}%
+ \let\@glsxtrshowtargetmark\empty
+ \or
+ \def\@glsxtr@doshowtarget{\@glsxtrshowtargetright}%
+ \def\glsxtrshowtargetouter{\glsxtrshowtargetinner}%
+ \def\glsxtrshowtargetinner{\glsshowtargetinnersymright}%
+ \let\@glsxtrshowtargetmark\empty
+ \or
+ \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}%
+ \def\glsxtrshowtargetouter{\glsxtrshowtargetinner}%
+ \def\glsxtrshowtargetinner{\glsshowtargetinnersymleft}%
+ \def\@glsxtrshowtargetmark{\@glsshowtargetmarkfmt\glsxtrshowtargetsymbolright}%
+ \or
+ \def\@glsxtr@doshowtarget{\@glsxtrshowtargetright}%
+ \def\glsxtrshowtargetouter{\glsxtrshowtargetinner}%
+ \def\glsxtrshowtargetinner{\glsshowtargetinnersymright}%
+ \def\@glsxtrshowtargetmark{\@glsshowtargetmarkfmt\glsxtrshowtargetsymbolleft}%
+ \fi
+ }
+\DeclareOptionX*{%
+ \expandafter\glsxtr@dooption\expandafter{\CurrentOption}}
+\ProcessOptionsX
+\RequirePackage{glossaries}
+\@glsxtr@doaccsupp
+\@glsxtr@doloadprefix
+\@glsxtr@defpostpunc
+\def\glsdoshowtarget{\@glsxtr@doshowtarget}
+\newcommand{\glsxtrshowtargetsymbolright}{{\tiny$\triangleleft$}}%
+\newcommand{\glsxtrshowtargetsymbolleft}{{\tiny$\triangleright$}}%
+\providecommand*{\glsshowtargetinner}[1]{{\glsshowtargetfont [#1]}}
+\providecommand*{\glsshowtargetfont}{\ttfamily\footnotesize}
+\newcommand*{\glsshowtargetinnersymleft}[1]{%
+ \glsshowtargetinner{#1}\allowbreak\glsxtrshowtargetsymbolleft}
+\newcommand*{\glsshowtargetinnersymright}[1]{%
+ \glsxtrshowtargetsymbolright\allowbreak\glsshowtargetinner{#1}}
+\providecommand*{\glsshowtargetouter}[1]{%
+ \glsshowtargetsymbol\marginpar{\glsshowtargetsymbol\glsshowtargetfont #1}}
+\providecommand*{\@glsshowtarget}[1]{}
+\def\glsshowtarget#1{%
+ \glsxtrtitleorpdforheading
+ {%
+ \ifmmode
+ \nfss@text{\glsxtrshowtargetinner{#1}}%
+ \else
+ \ifinner
+ \glsxtrshowtargetinner{#1}%
+ \else
+ \glsxtrshowtargetouter{#1}%
+ \fi
+ \fi
+ }%
+ {[#1]}%
+ {{\protect\glsshowtargetinner{#1}}}%
+}
+\newcommand*{\@glsshowtargetmarkfmt}[1]{%
+ \glsxtrtitleorpdforheading
+ {%
+ \ifmmode \nfss@text{#1}\else #1\fi
+ }%
+ {}%
+ {\ifmmode \nfss@text{#1}\else #1\fi}%
+}
+\let\@glsxtr@org@doseeglossary\@do@seeglossary
+\newcommand*{\@glsxtr@doseeglossary}[2]{%
+ \glsdoifexists{#1}%
+ {%
+ \@@glsxtrwrglossmark
+ \@glsxtr@org@doseeglossary{#1}{#2}%
+ }%
+}
+\newcommand*{\@glsxtr@dosee@alsoindex@glossary}[2]{%
+ \@glsxtr@recordsee{#1}{#2}%
+ \@glsxtr@doseeglossary{#1}{#2}%
+}
+\let\@glsxtr@org@gloautosee\@glo@autosee
+\if@glsxtr@autoseeindex
+\else
+ \ifdef\@glsxtr@org@gloautosee
+ {}%
+ {\PackageError{glossaries-extra}{`autoseeindex=false' package
+ option requires at least v4.30 of glossaries.sty}%
+ {You need to update the glossaries.sty package}%
+ }
+\fi
+\ifdef\@glo@autosee
+{%
+ \renewcommand*{\@glo@autosee}{%
+ \if@glsxtr@autoseeindex\@glsxtr@org@gloautosee\fi}%
+}%
+{}
+\renewcommand*{\gls@checkseeallowed}{%
+ \if@glsxtr@autoseeindex\@gls@see@noindex\fi
+}
+\@glsxtr@abbreviationsdef
+\let\@glsxtr@abbreviationsdef\relax
+\@glsxtr@setupshortcuts
+\@glsxtr@redef@forglsentries
+\renewcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}%
+\disable@keys{glossaries-extra.sty}{accsupp}
+\newcommand*{\glossariesextrasetup}[1]{%
+ \let\glsxtr@setup@record\relax
+ \let\@glsxtr@setupshortcuts\relax
+ \let\@glsxtr@redef@forglsentries\relax
+ \let\@glsxtr@doloadprefix\relax
+ \setkeys{glossaries-extra.sty}{#1}%
+ \@glsxtr@abbreviationsdef
+ \let\@glsxtr@abbreviationsdef\relax
+ \@glsxtr@setupshortcuts
+ \glsxtr@setup@record
+ \@glsxtr@redef@forglsentries
+ \@glsxtr@doloadprefix
+}
+\let\glsxtr@org@@do@wrglossary\@@do@wrglossary
+\newcommand*{\glsxtr@@do@wrglossary}[1]{%
+ \@@glsxtrwrglossmark
+ \glsxtr@inc@wrglossaryctr{#1}%
+ \glsxtr@org@@do@wrglossary{#1}%
+}
+\let\glsxtr@saveentrycounter\@gls@saveentrycounter
+\let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter
+\renewcommand*\@gls@getcounterprefix[2]{%
+ \protected@edef\@gls@thisloc{#1}\protected@edef\@gls@thisHloc{#2}%
+ \ifx\@gls@thisloc\@gls@thisHloc
+ \def\@glo@counterprefix{}%
+ \else
+ \def\@gls@get@counterprefix##1.#1##2\end@getprefix{%
+ \def\@glo@tmp{##2}%
+ \ifx\@glo@tmp\@empty
+ \def\@glo@counterprefix{}%
+ \else
+ \def\@glo@counterprefix{##1}%
+ \fi
+ }%
+ \@gls@get@counterprefix#2.#1\end@getprefix
+ \ifx\@glo@counterprefix\@empty
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ \else
+ \GlossariesExtraWarning{Hyper target `#2' can't be formed by
+ prefixing^^Jlocation `#1'. You need to modify the
+ definition of \string\theH\@gls@counter^^Jotherwise you
+ will get the warning: "`name{\@gls@counter.#1}' has been^^J
+ referenced but does not exist"%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@only
+ . You may want to consider using record=nameref instead%
+ \fi}%
+ \fi
+ \fi
+ \fi
+}
+\newcommand*{\@glsxtrdialecthook}{}
+\glsxtr@setup@record
+\AtBeginDocument{%
+ \disable@keys{glossaries-extra.sty}{abbreviations,docdef,record}%
+ \def\@glsxtrundeftag{\glsxtrundeftag}%
+}
+\newcommand*{\GlsXtrIfUnusedOrUndefined}[3]{%
+ \ifglsentryexists{#1}%
+ {\ifbool{glo@\glsdetoklabel{#1}@flag}{#3}{#2}}%
+ {#2}%
+}
+\ifdef\s@ifglossaryexists
+{}
+{
+ \renewcommand{\ifglossaryexists}{%
+ \@ifstar\s@ifglossaryexists\@ifglossaryexists
+ }
+ \newcommand{\@ifglossaryexists}[3]{%
+ \ifcsundef{@glotype@#1@out}{#3}{#2}%
+ }
+ \newcommand{\s@ifglossaryexists}[3]{%
+ \ifcsundef{glolist@#1}{#3}{#2}%
+ }
+}
+\newcommand{\glsxtrifemptyglossary}[3]{%
+ \ifcsdef{glolist@#1}%
+ {%
+ \ifcsstring{glolist@#1}{,}{#2}{#3}%
+ }%
+ {%
+ \glsxtrundefaction{Glossary type `#1' doesn't exist}{}%
+ #2%
+ }%
+}
+\newcommand*{\glsxtrifkeydefined}[3]{%
+ \key@ifundefined{glossentry}{#1}{#3}{#2}%
+}
+\newcommand*{\glsxtrprovidestoragekey}{%
+ \@ifstar\@sglsxtr@provide@storagekey\@glsxtr@provide@storagekey
+}
+\newcommand*{\@glsxtr@provide@storagekey}[3]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}%
+ \appto\@gls@keymap{,{#1}{#1}}%
+ \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}%
+ \appto\@newglossaryentryposthook{%
+ \letcs{\@glo@tmp}{@glo@#1}%
+ \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}%
+ }%
+ \ifblank{#3}
+ {}%
+ {%
+ \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}%
+ }%
+ }%
+ {%
+ \ifblank{#3}
+ {}%
+ {%
+ \providecommand*{#3}[1]{\@gls@entry@field{##1}{#1}}%
+ }%
+ }%
+}
+\newcommand*{\s@glsxtr@provide@storagekey}[1]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname gls@assign@#1@field\endcsname}[2]{%
+ \@@gls@expand@field{##1}{#1}{##2}%
+ }%
+ }%
+ {}%
+ \@glsxtr@provide@addstoragekey{#1}%
+}
+\newcommand{\GlsXtrFmtField}{useri}
+\newcommand{\GlsXtrFmtDefaultOptions}{noindex}
+\newrobustcmd*{\glsxtrfmt}{\@ifstar\s@glsxtrfmt\@glsxtrfmt}
+\newcommand*{\@glsxtrfmt}[3][]{\@@glsxtrfmt{#1}{#2}{#3}{}}
+\newcommand*{\s@glsxtrfmt}[3][]{%
+ \new@ifnextchar[{\s@@glsxtrfmt{#1}{#2}{#3}}%
+ {\@@glsxtrfmt{#1}{#2}{#3}{}}%
+}
+\def\s@@glsxtrfmt#1#2#3[#4]{\@@glsxtrfmt{#1}{#2}{#3}{#4}}
+\newcommand*{\@@glsxtrfmt}[4]{%
+ \begingroup
+ \def\glslabel{#2}%
+ \glsdoifexistsordo{#2}%
+ {%
+ \ifglshasfield{\GlsXtrFmtField}{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \expandafter\@gls@link\expandafter[\GlsXtrFmtDefaultOptions,#1]{#2}%
+ {\glsxtrfmtdisplay{\glscurrentfieldvalue}{#3}{#4}}%
+ }%
+ {\glsxtrfmtdisplay{@firstofone}{#3}{#4}}%
+ }%
+ {%
+ \begingroup
+ \@gls@setdefault@glslink@opts
+ \setkeys{glslink}{\GlsXtrFmtDefaultOptions,#1}%
+ \ifKV@glslink@noindex\else\glsadd{#2}\fi
+ \endgroup
+ \glsxtrfmtdisplay{@firstofone}{#3}{#4}%
+ }%
+ \endgroup
+}
+\newcommand{\glsxtrfmtdisplay}[3]{\csuse{#1}{#2}#3}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsxtrentryfmt}[2]{%
+ \texorpdfstring{\@glsxtrentryfmt{#1}{#2}}{\glsxtrpdfentryfmt{#1}{#2}}%
+ }
+}
+{
+ \newcommand*{\glsxtrentryfmt}{\@glsxtrentryfmt}
+}
+\newcommand*{\glsxtrpdfentryfmt}[2]{#2}
+\newrobustcmd*{\@glsxtrentryfmt}[2]{%
+ {%
+ \protected@edef\glslabel{#1}%
+ \glsdoifexistsordo{#1}%
+ {%
+ \ifglshasfield{\GlsXtrFmtField}{#1}%
+ {%
+ \csuse{\glscurrentfieldvalue}{#2}%
+ }%
+ {#2}%
+ }%
+ {#2}%
+ }%
+}
+\newcommand*{\glsxtrfieldlistadd}[3]{%
+ \listcsadd{glo@\glsdetoklabel{#1}@#2}{#3}%
+}
+\newcommand*{\glsxtrfieldlistgadd}[3]{%
+ \listcsgadd{glo@\glsdetoklabel{#1}@#2}{#3}%
+}
+\newcommand*{\glsxtrfieldlisteadd}[3]{%
+ \listcseadd{glo@\glsdetoklabel{#1}@#2}{#3}%
+}
+\newcommand*{\glsxtrfieldlistxadd}[3]{%
+ \listcsxadd{glo@\glsdetoklabel{#1}@#2}{#3}%
+}
+\newcommand*{\glsxtrfielddolistloop}[2]{%
+ \dolistcsloop{glo@\glsdetoklabel{#1}@#2}%
+}
+\newcommand*{\glsxtrfieldforlistloop}[3]{%
+ \forlistcsloop{#3}{glo@\glsdetoklabel{#1}@#2}%
+}
+\newrobustcmd*{\glsxtrfieldformatlist}[2]{%
+ \begingroup
+ \def\@dtl@formatlist@itemsep{}%
+ \def\@dtl@formatlist@lastitem{}%
+ \def\@dtl@formatlist@prelastitem{}%
+ \def\@dtl@formatlist@prelastitemsep{}%
+ \forlistcsloop{\@dtl@formatlist@handler}{glo@\glsdetoklabel{#1}@#2}%
+ \@dtl@formatlist@prelastitem\@dtl@formatlist@lastitem
+ \endgroup
+}
+\newcommand*{\glsxtrfieldifinlist}[5]{%
+ \ifinlistcs{#3}{glo@\glsdetoklabel{#1}@#2}{#4}{#5}%
+}
+\newcommand*{\glsxtrfieldxifinlist}[5]{%
+ \xifinlistcs{#3}{glo@\glsdetoklabel{#1}@#2}{#4}{#5}%
+}
+\newcommand*{\glsxtrforcsvfield}{%
+ \@ifstar\s@glsxtrforcsvfield\@glsxtrforcsvfield
+}
+\newcommand*{\@glsxtrforcsvfield}[3]{%
+ \@glsxtrifhasfield{#2}{#1}%
+ {%
+ \let\glsxtrendfor\@endfortrue
+ \@for\@glsxtr@label:=\glscurrentfieldvalue\do
+ {\expandafter#3\expandafter{\@glsxtr@label}}}%
+ {}%
+}
+\newcommand*{\s@glsxtrforcsvfield}[3]{%
+ \s@glsxtrifhasfield{#2}{#1}%
+ {%
+ \let\glsxtrendfor\@endfortrue
+ \@for\@glsxtr@label:=\glscurrentfieldvalue\do
+ {\expandafter#3\expandafter{\@glsxtr@label}}}%
+ {}%
+}
+\newrobustcmd*{\glsxtrfieldformatcsvlist}[2]{%
+ \@glsxtrifhasfield{#2}{#1}%
+ {\@dtlformatlist\glscurrentfieldvalue}%
+ {}%
+}
+\newcommand*{\GlsXtrIfFieldValueInCsvList}{%
+ \@ifstar\s@GlsXtrIfFieldValueInCsvList\@GlsXtrIfFieldValueInCsvList
+}
+\newcommand*{\@GlsXtrIfFieldValueInCsvList}[5]{%
+ \@glsxtrifhasfield{#2}{#1}%
+ {%
+ \expandafter\DTLifinlist\expandafter{\glscurrentfieldvalue}%
+ {#3}{#4}{#5}%
+ }%
+ {#5}%
+}
+\newcommand*{\s@GlsXtrIfFieldValueInCsvList}[5]{%
+ \s@glsxtrifhasfield{#2}{#1}%
+ {%
+ \expandafter\DTLifinlist\expandafter{\glscurrentfieldvalue}%
+ {#3}{#4}{#5}%
+ }%
+ {#5}%
+}
+\newcommand*{\GlsXtrIfValueInFieldCsvList}{%
+ \@ifstar\s@GlsXtrIfValueInFieldCsvList\@GlsXtrIfValueInFieldCsvList
+}
+\newcommand*{\@GlsXtrIfValueInFieldCsvList}[5]{%
+ \@glsxtrifhasfield{#2}{#1}%
+ {%
+ \DTLifinlist{#3}{\glscurrentfieldvalue}{#4}{#5}%
+ }%
+ {#5}%
+}
+\newcommand*{\s@GlsXtrIfValueInFieldCsvList}[5]{%
+ \s@glsxtrifhasfield{#2}{#1}%
+ {%
+ \DTLifinlist{#3}{\glscurrentfieldvalue}{#4}{#5}%
+ }%
+ {#5}%
+}
+\newcommand*{\xGlsXtrIfValueInFieldCsvList}{%
+ \@ifstar\s@xGlsXtrIfValueInFieldCsvList\@xGlsXtrIfValueInFieldCsvList
+}
+\newcommand*{\@xGlsXtrIfValueInFieldCsvList}[5]{%
+ \@glsxtrifhasfield{#2}{#1}%
+ {%
+ \protected@edef\@gls@tmp{#3}%
+ \expandafter\DTLifinlist\expandafter{\@gls@tmp}{\glscurrentfieldvalue}{#4}{#5}%
+ }%
+ {#5}%
+}
+\newcommand*{\s@xGlsXtrIfValueInFieldCsvList}[5]{%
+ \s@glsxtrifhasfield{#2}{#1}%
+ {%
+ \protected@edef\@gls@tmp{#3}%
+ \expandafter\DTLifinlist\expandafter{\@gls@tmp}{\glscurrentfieldvalue}{#4}{#5}%
+ }%
+ {#5}%
+}
+\newrobustcmd{\glsxtrifhasfield}{%
+ \@ifstar{\s@glsxtrifhasfield}{\@glsxtrifhasfield}%
+}
+\newcommand{\@glsxtrifhasfield}[4]{%
+ {\s@glsxtrifhasfield{#1}{#2}{#3}{#4}}%
+}
+\newcommand{\s@glsxtrifhasfield}[4]{%
+ \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}%
+ \ifundef\glscurrentfieldvalue
+ {#4}%
+ {%
+ \ifdefempty\glscurrentfieldvalue{#4}{#3}%
+ }%
+}
+\newcommand{\GlsXtrIfFieldNonZero}{%
+ \@ifstar\s@GlsXtrIfFieldNonZero\@GlsXtrIfFieldNonZero
+}
+\newcommand{\@GlsXtrIfFieldNonZero}[4]{%
+ \@GlsXtrIfFieldCmpNum{#1}{#2}{=}{0}{#4}{#3}%
+}
+\newcommand{\s@GlsXtrIfFieldNonZero}[4]{%
+ \s@GlsXtrIfFieldCmpNum{#1}{#2}{=}{0}{#4}{#3}%
+}
+\newcommand{\GlsXtrIfFieldEqNum}{%
+ \@ifstar\s@GlsXtrIfFieldEqNum\@GlsXtrIfFieldEqNum
+}
+\newcommand{\@GlsXtrIfFieldEqNum}[5]{%
+ \@GlsXtrIfFieldCmpNum{#1}{#2}{=}{#3}{#4}{#5}%
+}
+\newcommand{\s@GlsXtrIfFieldEqNum}[5]{%
+ \s@GlsXtrIfFieldCmpNum{#1}{#2}{=}{#3}{#4}{#5}%
+}
+\newcommand{\GlsXtrIfFieldCmpNum}{%
+ \@ifstar\s@GlsXtrIfFieldCmpNum\@GlsXtrIfFieldCmpNum
+}
+\newcommand{\@GlsXtrIfFieldCmpNum}[6]{%
+ {%
+ \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}%
+ \ifundef\glscurrentfieldvalue
+ {\def\glscurrentfieldvalue{0}}%
+ {%
+ \ifdefempty\glscurrentfieldvalue
+ {\def\glscurrentfieldvalue{0}}%
+ {}%
+ }%
+ \ifnum\glscurrentfieldvalue#3#4\relax #5\else #6\fi
+ }%
+}
+\newcommand{\s@GlsXtrIfFieldCmpNum}[6]{%
+ \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}%
+ \ifundef\glscurrentfieldvalue
+ {\def\glscurrentfieldvalue{0}}%
+ {%
+ \ifdefempty\glscurrentfieldvalue
+ {\def\glscurrentfieldvalue{0}}%
+ {}%
+ }%
+ \ifnum\glscurrentfieldvalue#3#4\relax #5\else #6\fi
+}
+\newcommand{\GlsXtrIfFieldUndef}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@#1}%
+}
+\newcommand*{\glsxtrusefield}[2]{%
+ \@gls@entry@field{#1}{#2}%
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsxtrusefield}[2]{%
+ \texorpdfstring
+ {\@Gls@entry@field{#1}{#2}}
+ {\@gls@entry@field{#1}{#2}}%
+ }
+}
+{
+ \newcommand*{\Glsxtrusefield}[2]{%
+ \@Gls@entry@field{#1}{#2}%
+ }
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\GLSxtrusefield}[2]{%
+ \texorpdfstring
+ {\glsdoifexists{#1}{\mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}}}%
+ {\@gls@entry@field{#1}{#2}}%
+ }
+}
+{
+ \newcommand*{\GLSxtrusefield}[2]{%
+ \glsdoifexists{#1}{\mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}}%
+ }
+}
+\newcommand*{\glsxtrentryparentname}[1]{%
+ \ifcsdef{glo@\glsdetoklabel{#1}@parent}%
+ {\csuse{glo@\csuse{glo@\glsdetoklabel{#1}@parent}@name}}%
+ {}%
+}
+\newcommand*{\glsxtrdeffield}[2]{\csdef{glo@\glsdetoklabel{#1}@#2}}
+\newcommand*{\glsxtredeffield}[2]{\protected@csedef{glo@\glsdetoklabel{#1}@#2}}
+\newcommand*{\glsxtrapptocsvfield}[3]{%
+ \ifcsdef{glo@\glsdetoklabel{#1}@#2}%
+ {\csappto{glo@\glsdetoklabel{#1}@#2}{,#3}}%
+ {\csdef{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+\newcommand*{\glsxtrsetfieldifexists}[3]{\glsdoifexists{#1}{#3}}
+\newrobustcmd*{\GlsXtrSetField}[3]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\csdef{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+\newrobustcmd*{\GlstrLetField}[3]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\cslet{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+\newrobustcmd*{\csGlsXtrLetField}[3]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\csletcs{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+\newrobustcmd*{\GlsXtrLetFieldToField}[4]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\csletcs{glo@\glsdetoklabel{#1}@#2}{glo@\glsdetoklabel{#3}@#4}}%
+}
+\newrobustcmd*{\gGlsXtrSetField}[3]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\csgdef{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+\newrobustcmd*{\xGlsXtrSetField}[3]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\protected@csxdef{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+\newrobustcmd*{\eGlsXtrSetField}[3]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\protected@csedef{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+\newcommand*{\GlsXtrIfFieldEqStr}{%
+ \@ifstar\s@GlsXtrIfFieldEqStr\@GlsXtrIfFieldEqStr
+}
+\newrobustcmd*{\@GlsXtrIfFieldEqStr}[5]{%
+ \@glsxtrifhasfield{#1}{#2}%
+ {%
+ \ifdefstring{\glscurrentfieldvalue}{#3}{#4}{#5}%
+ }%
+ {#5}%
+}
+\newrobustcmd*{\s@GlsXtrIfFieldEqStr}[5]{%
+ \s@glsxtrifhasfield{#1}{#2}%
+ {%
+ \ifdefstring{\glscurrentfieldvalue}{#3}{#4}{#5}%
+ }%
+ {#5}%
+}
+\newcommand*{\GlsXtrIfFieldEqXpStr}{%
+ \@ifstar\s@GlsXtrIfFieldEqXpStr\@GlsXtrIfFieldEqXpStr
+}
+\newrobustcmd*{\@GlsXtrIfFieldEqXpStr}[5]{%
+ \@glsxtrifhasfield{#1}{#2}%
+ {%
+ \protected@edef\@gls@tmp{#3}%
+ \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}%
+ }%
+ {#5}%
+}
+\newrobustcmd*{\s@GlsXtrIfFieldEqXpStr}[5]{%
+ \s@glsxtrifhasfield{#1}{#2}%
+ {%
+ \protected@edef\@gls@tmp{#3}%
+ \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}%
+ }%
+ {#5}%
+}
+\newcommand*{\GlsXtrIfXpFieldEqXpStr}{%
+ \@ifstar\s@GlsXtrIfXpFieldEqXpStr\@GlsXtrIfXpFieldEqXpStr
+}
+\newrobustcmd*{\@GlsXtrIfXpFieldEqXpStr}[5]{%
+ \@glsxtrifhasfield{#1}{#2}%
+ {%
+ \protected@edef\@gls@tmp{\glscurrentfieldvalue}%
+ \let\glscurrentfieldvalue\@gls@tmp
+ \protected@edef\@gls@tmp{#3}%
+ \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}%
+ }%
+ {#5}%
+}
+\newrobustcmd*{\s@GlsXtrIfXpFieldEqXpStr}[5]{%
+ \s@glsxtrifhasfield{#1}{#2}%
+ {%
+ \protected@edef\@gls@tmp{\glscurrentfieldvalue}%
+ \let\glscurrentfieldvalue\@gls@tmp
+ \protected@edef\@gls@tmp{#3}%
+ \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}%
+ }%
+ {#5}%
+}
+\ifdef\foreignlanguage
+{
+ \ifdef\GetTrackedDialectFromLanguageTag
+ {
+ \newcommand{\GlsXtrForeignText}[2]{%
+ \let\@glsxtr@org@currentfieldvalue\glscurrentfieldvalue
+ \glsxtrifhasfield{\GlsXtrForeignTextField}{#1}%
+ {%
+ \expandafter\GetTrackedDialectFromLanguageTag\expandafter
+ {\glscurrentfieldvalue}{\@glsxtr@dialect}%
+ \let\@glsxtr@locale\glscurrentfieldvalue
+ \let\glscurrentfieldvalue\@glsxtr@org@currentfieldvalue
+ \ifdefempty\@glsxtr@dialect
+ {%
+ \ifundef\TrackedDialectClosestSubMatch
+ {%
+ \GlossariesExtraWarning{Can't obtain dialect label
+ (tracklang v1.3.6+ required)}%
+ }%
+ {\let\@glsxtr@dialect\TrackedDialectClosestSubMatch}%
+ }%
+ {}%
+ \ifdefempty\@glsxtr@dialect
+ {%
+ }%
+ {%
+ \ifcsundef{captions\@glsxtr@dialect}{}%
+ {%
+ \IfTrackedDialectHasMapping{\@glsxtr@dialect}%
+ {%
+ \edef\@glsxtr@dialect{%
+ \GetTrackedDialectToMapping{\@glsxtr@dialect}}%
+ \ifcsundef{captions\@glsxtr@dialect}{}%
+ {%
+ \ifcsundef{captions\@tracklang@lang}{}%
+ {%
+ \let\@glsxtr@dialect\@tracklang@lang
+ }%
+ }%
+ }%
+ {%
+ \ifcsundef{captions\@tracklang@lang}{}%
+ {%
+ \let\@glsxtr@dialect\@tracklang@lang
+ }%
+ }%
+ }%
+ }%
+ \ifdefempty\@glsxtr@dialect
+ {%
+ \GlsXtrUnknownDialectWarning{\@glsxtr@locale}{\@tracklang@lang}%
+ #2%
+ }%
+ {\foreignlanguage{\@glsxtr@dialect}{#2}}%
+ }%
+ {#2}% key not set
+ }
+ }
+ {
+ \newcommand{\GlsXtrForeignText}[2]{%
+ \GlossariesExtraWarning{Can't encapsulate foreign text:
+ tracklang v1.3.6+ required}%
+ #2%
+ }
+ }
+}
+{
+ \newcommand{\GlsXtrForeignText}[2]{#2}
+}
+\newcommand*{\GlsXtrForeignTextField}{userii}
+\newcommand*{\GlsXtrUnknownDialectWarning}[2]{%
+ \GlossariesExtraWarning{Can't determine valid dialect label
+ for locale `#1' (root language: #2)}%
+}
+\ifdef\GlsEntryCounterLabelPrefix
+{%
+ \newcommand*{\glsxtrpageref}[1]{%
+ \ifglsentrycounter
+ \pageref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \else
+ \ifglssubentrycounter
+ \pageref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \else
+ \gls{#1}%
+ \fi
+ \fi
+ }
+}%
+{%
+ \newcommand*{\glsxtrpageref}[1]{%
+ \ifglsentrycounter
+ \pageref{glsentry-\glsdetoklabel{#1}}%
+ \else
+ \ifglssubentrycounter
+ \pageref{glsentry-\glsdetoklabel{#1}}%
+ \else
+ \gls{#1}%
+ \fi
+ \fi
+ }
+}%
+\newcommand{\apptoglossarypreamble}[2][\glsdefaulttype]{%
+ \ifcsdef{glolist@#1}%
+ {%
+ \ifcsundef{@glossarypreamble@#1}%
+ {\csdef{@glossarypreamble@#1}{}}%
+ {}%
+ \csappto{@glossarypreamble@#1}{#2}%
+ }%
+ {%
+ \GlossariesExtraWarning{Glossary `#1' is not defined}%
+ }%
+}
+\newcommand{\preglossarypreamble}[2][\glsdefaulttype]{%
+ \ifcsdef{glolist@#1}%
+ {%
+ \ifcsundef{@glossarypreamble@#1}%
+ {\csdef{@glossarypreamble@#1}{}}%
+ {}%
+ \cspreto{@glossarypreamble@#1}{#2}%
+ }%
+ {%
+ \GlossariesExtraWarning{Glossary `#1' is not defined}%
+ }%
+}
+\ifdef\@gls@entry@field
+{
+ \renewcommand*{\@gls@entry@field}[2]{\csuse{glo@\glsdetoklabel{#1}@#2}}
+}
+{}
+\renewcommand*{\ifglsused}[3]{%
+ \glsdoifexists{#1}{\ifbool{glo@\glsdetoklabel{#1}@flag}{#2}{#3}}%
+}
+\renewcommand*{\longnewglossaryentry}{%
+ \@ifstar\@glsxtr@s@longnewglossaryentry\@glsxtr@longnewglossaryentry
+}
+\newcommand{\@glsxtr@s@longnewglossaryentry}[3]{%
+ \glsdoifnoexists{#1}%
+ {%
+ \bgroup
+ \let\@org@newglossaryentryprehook\@newglossaryentryprehook
+ \long\def\@newglossaryentryprehook{%
+ \long\def\@glo@desc{#3}%
+ \@org@newglossaryentryprehook
+ }%
+ \renewcommand*{\gls@assign@desc}[1]{%
+ \global\cslet{glo@\glsdetoklabel{#1}@desc}{\@glo@desc}%
+ \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@descplural}%
+ }
+ \gls@defglossaryentry{#1}{#2}%
+ \egroup
+ }%
+}
+\newcommand{\@glsxtr@longnewglossaryentry}[3]{%
+ \glsdoifnoexists{#1}%
+ {%
+ \bgroup
+ \let\@org@newglossaryentryprehook\@newglossaryentryprehook
+ \long\def\@newglossaryentryprehook{%
+ \long\def\@glo@desc{#3\glsxtrpostlongdescription}%
+ \@org@newglossaryentryprehook
+ }%
+ \renewcommand*{\gls@assign@desc}[1]{%
+ \global\cslet{glo@\glsdetoklabel{#1}@desc}{\@glo@desc}%
+ \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@descplural}%
+ }
+ \gls@defglossaryentry{#1}{#2}%
+ \egroup
+ }%
+}
+\newcommand*{\glsxtrpostlongdescription}{\leavevmode\unskip\nopostdesc}
+\renewcommand{\newignoredglossary}{%
+ \@ifstar\glsxtr@s@newignoredglossary\glsxtr@org@newignoredglossary
+}
+\newcommand*{\glsxtr@org@newignoredglossary}[1]{%
+ \ifcsdef{glolist@#1}
+ {%
+ \glsxtrundefaction{Glossary type `#1' already exists}{}%
+ }%
+ {%
+ \ifdefempty\@ignored@glossaries
+ {%
+ \protected@edef\@ignored@glossaries{#1}%
+ }%
+ {%
+ \protected@eappto\@ignored@glossaries{,#1}%
+ }%
+ \csgdef{glolist@#1}{,}%
+ \ifcsundef{gls@#1@entryfmt}%
+ {%
+ \defglsentryfmt[#1]{\glsentryfmt}%
+ }%
+ {}%
+ \ifdefempty\@gls@nohyperlist
+ {%
+ \renewcommand*{\@gls@nohyperlist}{#1}%
+ }%
+ {%
+ \protected@eappto\@gls@nohyperlist{,#1}%
+ }%
+ }%
+}
+\newcommand*{\glsxtr@s@newignoredglossary}[1]{%
+ \ifcsdef{glolist@#1}
+ {%
+ \glsxtrundefaction{Glossary type `#1' already exists}{}%
+ }%
+ {%
+ \ifdefempty\@ignored@glossaries
+ {%
+ \protected@edef\@ignored@glossaries{#1}%
+ }%
+ {%
+ \protected@eappto\@ignored@glossaries{,#1}%
+ }%
+ \csgdef{glolist@#1}{,}%
+ \ifcsundef{gls@#1@entryfmt}%
+ {%
+ \defglsentryfmt[#1]{\glsentryfmt}%
+ }%
+ {}%
+ }%
+}
+\glsifusetranslator
+{%
+ \renewcommand*{\glssettoctitle}[1]{%
+ \ifcsdef{gls@tr@set@#1@toctitle}%
+ {%
+ \csuse{gls@tr@set@#1@toctitle}%
+ }%
+ {%
+ \ifcsdef{@glotype@#1@title}%
+ {\def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}%
+ {\def\glossarytoctitle{\glossarytitle}}%
+ }%
+ }%
+}
+{
+ \renewcommand*{\glssettoctitle}[1]{%
+ \ifcsdef{@glotype@#1@title}%
+ {\def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}%
+ {\def\glossarytoctitle{\glossarytitle}}%
+ }
+}
+\newcommand{\provideignoredglossary}{%
+ \@ifstar\glsxtr@s@provideignoredglossary\glsxtr@provideignoredglossary
+}
+\newcommand*{\glsxtr@provideignoredglossary}[1]{%
+ \ifcsdef{glolist@#1}
+ {}%
+ {%
+ \ifdefempty\@ignored@glossaries
+ {%
+ \protected@edef\@ignored@glossaries{#1}%
+ }%
+ {%
+ \protected@eappto\@ignored@glossaries{,#1}%
+ }%
+ \csgdef{glolist@#1}{,}%
+ \ifcsundef{gls@#1@entryfmt}%
+ {%
+ \defglsentryfmt[#1]{\glsentryfmt}%
+ }%
+ {}%
+ \ifdefempty\@gls@nohyperlist
+ {%
+ \renewcommand*{\@gls@nohyperlist}{#1}%
+ }%
+ {%
+ \protected@eappto\@gls@nohyperlist{,#1}%
+ }%
+ }%
+}
+\newcommand*{\glsxtr@s@provideignoredglossary}[1]{%
+ \ifcsdef{glolist@#1}
+ {}%
+ {%
+ \ifdefempty\@ignored@glossaries
+ {%
+ \protected@edef\@ignored@glossaries{#1}%
+ }%
+ {%
+ \protected@eappto\@ignored@glossaries{,#1}%
+ }%
+ \csgdef{glolist@#1}{,}%
+ \ifcsundef{gls@#1@entryfmt}%
+ {%
+ \defglsentryfmt[#1]{\glsentryfmt}%
+ }%
+ {}%
+ }%
+}
+\newcommand*{\glsxtrcopytoglossary}[2]{%
+ \glsdoifexists{#1}%
+ {%
+ \ifcsdef{glolist@#2}
+ {%
+ \protected@cseappto{glolist@#2}{#1,}%
+ }%
+ {%
+ \glsxtrundefaction{Glossary type `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\renewcommand{\glsdoifexists}[2]{%
+ \ifglsentryexists{#1}{#2}%
+ {%
+ \protected@edef\glslabel{\glsdetoklabel{#1}}%
+ \glsxtrundefaction{Glossary entry `\glslabel'
+ has not been defined}{You need to define a glossary entry before
+ you can reference it.}%
+ }%
+}
+\renewcommand{\glsdoifnoexists}[2]{%
+ \ifglsentryexists{#1}{%
+ \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}'
+ has already been defined}{}}{#2}%
+}
+\ifdef\glsdoifexistsordo
+{%
+ \renewcommand{\glsdoifexistsordo}[3]{%
+ \ifglsentryexists{#1}{#2}%
+ {%
+ \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}'
+ has not been defined}{You need to define a glossary entry
+ before you can use it.}%
+ #3%
+ }%
+ }%
+}
+{%
+ \glsxtr@warnonexistsordo\glsdoifexistsordo
+ \newcommand{\glsdoifexistsordo}[3]{%
+ \ifglsentryexists{#1}{#2}%
+ {%
+ \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}'
+ has not been defined}{You need to define a glossary entry
+ before you can use it.}%
+ #3%
+ }%
+ }%
+}
+\ifdef\doifglossarynoexistsordo
+{%
+ \renewcommand{\doifglossarynoexistsordo}[3]{%
+ \ifglossaryexists*{#1}%
+ {%
+ \glsxtrundefaction{Glossary type `#1' already exists}{}%
+ #3%
+ }%
+ {#2}%
+ }%
+}
+{%
+ \glsxtr@warnonexistsordo\doifglossarynoexistsordo
+ \newcommand{\doifglossarynoexistsordo}[3]{%
+ \ifglossaryexists*{#1}%
+ {%
+ \glsxtrundefaction{Glossary type `#1' already exists}{}%
+ #3%
+ }%
+ {#2}%
+ }%
+}
+
+\appto\@newglossaryentryposthook{%
+ \ifdefvoid\@glo@see
+ {\csxdef{glo@\@glo@label @see}{}}%
+ {%
+ \csxdef{glo@\@glo@label @see}{\@glo@see}%
+ \if@glsxtr@autoseeindex
+ \@glsxtr@autoindexcrossrefs
+ \fi
+ }%
+}
+\appto\@gls@keymap{,{see}{see}}
+\newcommand*{\glsxtrusesee}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@see}%
+ \ifdefempty\@glo@see
+ {}%
+ {%
+ \expandafter\glsxtr@usesee\@glo@see\@end@glsxtr@usesee
+ }%
+ }%
+}
+\newcommand*{\glsxtr@usesee}[1][\seename]{%
+ \@glsxtr@usesee[#1]%
+}
+\def\@glsxtr@usesee[#1]#2\@end@glsxtr@usesee{%
+ \glsxtruseseeformat{#1}{#2}%
+}
+\newcommand*{\glsxtruseseeformat}[2]{%
+ \glsseeformat[#1]{#2}{}%
+}
+\renewcommand*{\glsseeitemformat}[1]{%
+ \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}%
+}
+\newcommand*{\glsxtrhiername}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsxtrifhasfield{parent}{#1}%
+ {\glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}%
+ {}%
+ \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}%
+ }%
+}
+\newcommand*{\Glsxtrhiername}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsxtrifhasfield{parent}{#1}%
+ {%
+ \Glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep
+ \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}%
+ }%
+ {\ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}}%
+ }%
+}
+\newcommand*{\GlsXtrhiername}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsxtrifhasfield{parent}{#1}%
+ {\GlsXtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}%
+ {}%
+ \ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}%
+ }%
+}
+\newcommand*{\GLSxtrhiername}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsxtrifhasfield{parent}{#1}%
+ {%
+ \GLSxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep
+ \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}%
+ }%
+ {\ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}}%
+ }%
+}
+\newcommand*{\GLSXTRhiername}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsxtrifhasfield{parent}{#1}%
+ {\GLSXTRhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}%
+ {}
+ \ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}%
+ }%
+}
+\newcommand*{\glsxtrhiernamesep}{\,{\small$\triangleright$}\,}
+\newcommand*{\glsxtruseseealso}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@seealso}%
+ \ifdefempty\@glo@see
+ {}%
+ {%
+ \expandafter\glsxtruseseealsoformat\expandafter{\@glo@see}%
+ }%
+ }%
+}
+\newcommand*{\glsxtrusealias}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@alias}%
+ \ifdefempty\@glo@see
+ {}%
+ {%
+ \glsxtruseseeformat{\seename}{\@glo@see}%
+ }%
+ }%
+}
+\newcommand*{\glsxtruseseealsoformat}[1]{%
+ \glsseeformat[\seealsoname]{#1}{}%
+}
+\newrobustcmd{\glsxtrseelist}[1]{%
+ \protected@edef\@glo@tmp{\noexpand\glsseelist{#1}}\@glo@tmp
+}
+\renewrobustcmd*{\glsseelist}[1]{%
+ \let\@gls@dolast\relax
+ \let\@gls@donext\relax
+ \let\@glsseeitem\@glsxtr@seefirstitem
+ \let\@glsseelastsep\glsseelastsep
+ \@for\@gls@thislabel:=#1\do{%
+ \ifx\@xfor@nextelement\@nnil
+ \@gls@dolast
+ \else
+ \@gls@donext
+ \fi
+ \expandafter\@glsseeitem\expandafter{\@gls@thislabel}%
+ \let\@gls@dolast\@glsseelastsep
+ \let\@gls@donext\glsseesep
+ \let\@glsseeitem\@glsxtr@seeitem
+ \let\@glsseelastsep\glsseelastoxfordsep
+ }%
+}
+\newcommand*{\@glsxtr@seeitem}[1]{%
+ \glsxtrifmulti{#1}{\mglsseeitem{#1}}{\glsseeitem{#1}}%
+}
+\newcommand*{\@glsxtr@seefirstitem}[1]{%
+ \glsxtrifmulti{#1}{\mglsseefirstitem{#1}}{\glsseefirstitem{#1}}%
+}
+\newcommand*{\mglsseeitem}[1]{%
+ \mglsname[all={noindex},setup={hyper=allmain}]{#1}%
+}
+\newcommand*{\mglsseefirstitem}{\mglsseeitem}
+\newcommand*{\glsseefirstitem}{\glsseeitem}
+\newcommand*{\glsseelastoxfordsep}{\glsseelastsep}
+\ifdef\alsoname
+{\providecommand{\seealsoname}{\alsoname}}
+{\providecommand{\seealsoname}{see also}}
+\ifdef\@xdycrossrefhook
+{
+ \appto\@xdycrossrefhook{%
+ \write\glswrite{(define-crossref-class \string"seealso\string"
+ :unverified )}%
+ \write\glswrite{(markup-crossref-list
+ :class \string"seealso\string"^^J\space\space\space
+ :open \string"\string\glsxtruseseealsoformat\glsopenbrace\string"
+ :close \string"\glsclosebrace\string")}%
+ }
+ \appto\@xdylocationclassorder{\space\string"seealso\string"}
+ \newrobustcmd*{\glsxtrindexseealso}[2]{%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex
+ \@glsxtr@recordsee{#1}{#2}%
+ \fi
+ \glsdoifexists{#1}%
+ {%
+ \@@glsxtrwrglossmark
+ \def\@gls@xref{#2}%
+ \@onelevel@sanitize\@gls@xref
+ \@gls@checkmkidxchars\@gls@xref
+ \gls@glossary{\csname glo@#1@type\endcsname}{%
+ (indexentry
+ :tkey (\csname glo@#1@index\endcsname)
+ :xref (\string"\@gls@xref\string")
+ :attr \string"seealso\string"
+ )
+ }%
+ }%
+ }
+}
+{
+ \newrobustcmd*{\glsxtrindexseealso}{\glssee[\seealsoname]}
+}
+\ifdef\gls@set@xr@key
+{
+ \define@key{glossentry}{alias}{%
+ \gls@set@xr@key{alias}{\@glo@alias}{#1}%
+ }
+ \define@key{glossentry}{seealso}{%
+ \gls@set@xr@key{seealso}{\@glo@seealso}{#1}%
+ }
+ \appto\@gls@keymap{,{alias}{alias},{seealso}{seealso}}
+ \appto\@newglossaryentryprehook{\def\@glo@alias{}\def\@glo@seealso{}}%
+ \appto\@newglossaryentryposthook{%
+ \ifdefvoid\@glo@seealso
+ {\csxdef{glo@\@glo@label @seealso}{}}%
+ {%
+ \csxdef{glo@\@glo@label @seealso}{\@glo@seealso}%
+ \if@glsxtr@autoseeindex
+ \@glsxtr@autoindexcrossrefs
+ \fi
+ }%
+ \ifdefvoid\@glo@alias
+ {\csxdef{glo@\@glo@label @alias}{}}%
+ {%
+ \csxdef{glo@\@glo@label @alias}{\@glo@alias}%
+ }%
+ }
+ \newcommand*{\glsxtralias}[1]{\@gls@entry@field{#1}{alias}}
+ \newcommand*{\glsxtrseealsolabels}[1]{\@gls@entry@field{#1}{seealso}}
+ \appto\@glo@autoseehook{%
+ \ifdefvoid\@glo@alias
+ {%
+ \ifdefvoid\@glo@seealso
+ {}%
+ {%
+ \protected@edef\@do@glssee{\noexpand\glsxtrindexseealso
+ {\@glo@label}{\@glo@seealso}}%
+ \@do@glssee
+ }%
+ }%
+ {%
+ \ifdefvoid\@glo@see
+ {%
+ \protected@edef\@do@glssee{\noexpand\glssee{\@glo@label}{\@glo@alias}}%
+ \@do@glssee
+ }%
+ {}%
+ }%
+ }%
+}
+{
+ \glsaddstoragekey*{alias}{}{\glsxtralias}
+ \glsaddstoragekey*{seealso}{}{\glsxtrseealsolabels}
+ \appto\@newglossaryentryposthook{%
+ \ifcsvoid{glo@\@glo@label @alias}%
+ {%
+ \ifcsvoid{glo@\@glo@label @seealso}%
+ {}%
+ {%
+ \protected@edef\@do@glssee{\noexpand\glsxtrindexseealso
+ {\@glo@label}{\csuse{glo@\@glo@label @seealso}}}%
+ \@do@glssee
+ }%
+ }%
+ {%
+ \ifdefvoid\@glo@see
+ {%
+ \protected@edef\@do@glssee{\noexpand\glssee
+ {\@glo@label}{\csuse{glo@\@glo@label @alias}}}%
+ \@do@glssee
+ }%
+ {}%
+ }%
+ }
+}
+\AtEndDocument{\if@glsxtrindexcrossrefs\glsxtraddallcrossrefs\fi}
+\newcommand*{\glsxtraddallcrossrefs}{%
+ \forallglossaries{\@glo@type}%
+ {%
+ \forglsentries[\@glo@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {\expandafter\@glsxtr@addunusedxrefs\expandafter{\@glo@label}}{}%
+ }%
+ }%
+}
+\newcommand*{\@glsxtr@addunusedxrefs}[1]{%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@see}%
+ \ifdefvoid\@glo@see
+ {}%
+ {%
+ \expandafter\glsxtr@addunused\@glo@see\@end@glsxtr@addunused
+ }%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@seealso}%
+ \ifdefvoid\@glo@see
+ {}%
+ {%
+ \expandafter\glsxtr@addunused\@glo@see\@end@glsxtr@addunused
+ }%
+}
+\newcommand*{\glsxtr@addunused}[1][]{%
+ \@glsxtr@addunused
+}
+\def\@glsxtr@addunused#1\@end@glsxtr@addunused{%
+ \@for\@glsxtr@label:=#1\do
+ {%
+ \glsxtrifmulti\@glsxtr@label
+ {%
+ \letcs\@glsxtr@labellist{@gls@combined@\@glsxtr@label @list}%
+ \@for\@glsxtr@multilabel:=\@glsxtr@labellist\do
+ {\@glsxtr@addunused\@glsxtr@multilabel\@end@glsxtr@addunused}%
+ }%
+ {%
+ \ifglsused{\@glsxtr@label}{}%
+ {%
+ \glsadd[format=glsxtrunusedformat]{\@glsxtr@label}%
+ \glsunset{\@glsxtr@label}%
+ \expandafter\@glsxtr@addunusedxrefs\expandafter{\@glsxtr@label}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\glsxtrunusedformat}[1]{\unskip}
+\ifdef\gls@begindocdefs
+{%
+ \renewcommand*{\gls@begindocdefs}{%
+ \ifnum\@glsxtr@docdefval=1\relax
+ \@gls@enablesavenonumberlist
+ \edef\@gls@restoreat{%
+ \noexpand\catcode`\noexpand\@=\number\catcode`\@\relax}%
+ \makeatletter
+ \InputIfFileExists{\jobname.glsdefs}{}{}%
+ \@gls@restoreat
+ \undef\@gls@restoreat
+ \gls@defdocnewglossaryentry
+ \else
+ \ifnum\@glsxtr@docdefval=3\relax
+ \@gls@enablesavenonumberlist
+ \let\gls@checkseeallowed\relax
+ \let\newglossaryentry\new@atom@glossaryentry
+ \global\newwrite\@gls@deffile
+ \immediate\openout\@gls@deffile=\jobname.glsdefs
+ \forallglsentries{\@glsentry}{\@gls@writedef{\@glsentry}}%
+ \fi
+ \fi
+ }
+}
+{%
+ \ifnum\@glsxtr@docdefval=3\relax
+ \PackageError{glossaries-extra}{Package option
+ `docdef=\@glsxtr@docdefsetting' requires at least version 4.37
+ of the base glossaries.sty package}{}
+ \fi
+}
+\newrobustcmd{\new@atom@glossaryentry}[2]{%
+ \gls@defglossaryentry{#1}{#2}%
+ \@gls@writedef{#1}%
+}
+\let\glsxtr@orgmakenoidxglossaries\makenoidxglossaries
+\renewcommand{\makenoidxglossaries}{%
+ \@domakeglossaries
+ {%
+ \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off
+ {%
+ \glsxtr@orgmakenoidxglossaries
+ \renewcommand{\@do@seeglossary}[2]{%
+ \@@glsxtrwrglossmark
+ \protected@edef\@gls@label{\glsdetoklabel{##1}}%
+ \protected@write\@auxout{}{%
+ \string\@gls@reference
+ {\csname glo@\@gls@label @type\endcsname}%
+ {\@gls@label}%
+ {%
+ \string\glsseeformat##2{}%
+ }%
+ }%
+ }%
+ \if@glsxtrdocdefrestricted
+ \renewcommand*{\@gls@reference}[3]{%
+ \ifcsundef{@glsref@##1}{\csgdef{@glsref@##1}{}}{}%
+ \ifinlistcs{##2}{@glsref@##1}%
+ {}%
+ {\listcsgadd{@glsref@##1}{##2}}%
+ \ifcsundef{glo@\glsdetoklabel{##2}@loclist}%
+ {\csgdef{glo@\glsdetoklabel{##2}@loclist}{}}%
+ {}%
+ \listcsgadd{glo@\glsdetoklabel{##2}@loclist}{##3}%
+ }%
+ \else
+ \@glsxtrdocdeffalse
+ \fi
+ \disable@keys{glossaries-extra.sty}{docdef}%
+ }%
+ {%
+ \PackageError{glossaries-extra}{\string\makenoidxglossaries\space
+ not permitted\MessageBreak
+ with record=\@glsxtr@record@setting\space package option}%
+ {You may only use \string\makenoidxglossaries\ space with the
+ record=off option}%
+ }%
+ }%
+}
+\renewcommand*{\gls@defdocnewglossaryentry}{%
+ \ifcase\@glsxtr@docdefval
+ \renewcommand*{\newglossaryentry}[2]{%
+ \PackageError{glossaries-extra}{Glossary entries must
+ be \MessageBreak defined in the preamble with \MessageBreak
+ package option `docdef=false'\MessageBreak(consider using
+ `docdef=restricted')}{Move your glossary definitions to
+ the preamble. You can also put them in a \MessageBreak separate file
+ and load them with \string\loadglsentries.}%
+ }%
+ \or
+ \let\gls@checkseeallowed\relax
+ \let\newglossaryentry\new@glossaryentry
+ \else
+ \let\gls@checkseeallowed\relax
+ \fi
+}%
+\newcommand*{\GlsXtrEnableOnTheFly}{%
+ \@ifstar\@sGlsXtrEnableOnTheFly\@GlsXtrEnableOnTheFly
+}
+\newcommand*{\@sGlsXtrEnableOnTheFly}{%
+ \renewcommand*{\glsdetoklabel}[1]{%
+ \expandafter\@glsxtr@ifcsstart\string##1 \@glsxtr@end@
+ {%
+ \expandafter\detokenize\expandafter{##1}%
+ }%
+ {\detokenize{##1}}%
+ }%
+ \@GlsXtrEnableOnTheFly
+}
+\def\@glsxtr@ifcsstart#1#2\@glsxtr@end@#3#4{%
+ \expandafter\if\glsbackslash#1%
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\glsxtrstarflywarn}{%
+ \GlossariesExtraWarning{Experimental starred version of
+ \string\GlsXtrEnableOnTheFly\space in use (please ensure you have
+ read the warnings in the glossaries-extra user manual)}%
+}
+\newcommand*{\@GlsXtrEnableOnTheFly}{%
+ \newcommand*{\glsxtrcat}{general}
+ \newcommand*{\glsxtr}[1][]{%
+ \def\glsxtr@keylist{##1}%
+ \@glsxtr
+ }
+ \newcommand*{\@glsxtr}[2][]{%
+ \ifglsentryexists{##2}%
+ {%
+ \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}%
+ }%
+ {%
+ \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat,
+ description={\nopostdesc},##1}%
+ }%
+ \expandafter\gls\expandafter[\glsxtr@keylist]{##2}%
+ }
+ \newcommand*{\Glsxtr}[1][]{%
+ \def\glsxtr@keylist{##1}%
+ \@Glsxtr
+ }
+ \newcommand*{\@Glsxtr}[2][]{%
+ \ifglsentryexists{##2}%
+ {%
+ \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}%
+ }%
+ {%
+ \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat,
+ description={\nopostdesc},##1}%
+ }%
+ \expandafter\Gls\expandafter[\glsxtr@keylist]{##2}%
+ }
+ \newcommand*{\glsxtrpl}[1][]{%
+ \def\glsxtr@keylist{##1}%
+ \@glsxtrpl
+ }
+ \newcommand*{\@glsxtrpl}[2][]{%
+ \ifglsentryexists{##2}%
+ {%
+ \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}%
+ }%
+ {%
+ \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat,
+ description={\nopostdesc},##1}%
+ }%
+ \expandafter\glspl\expandafter[\glsxtr@keylist]{##2}%
+ }
+ \newcommand*{\Glsxtrpl}[1][]{%
+ \def\glsxtr@keylist{##1}%
+ \@Glsxtrpl
+ }
+ \newcommand*{\@Glsxtrpl}[2][]{%
+ \ifglsentryexists{##2}
+ {%
+ \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}%
+ }%
+ {%
+ \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat,
+ description={\nopostdesc},##1}%
+ }%
+ \expandafter\Glspl\expandafter[\glsxtr@keylist]{##2}%
+ }
+ \newcommand*{\GlsXtrWarning}[2]{%
+ \def\@glsxtr@optlist{##1}%
+ \@onelevel@sanitize\@glsxtr@optlist
+ \GlossariesExtraWarning{The options `\@glsxtr@optlist' have
+ been ignored for entry `##2' as it has already been defined}%
+ }
+ \renewcommand\@printglossary[2]{%
+ \def\@glsxtr@printglossopts{##1}%
+ \@glsxtr@orgprintglossary{##1}{##2}%
+ \def\@glsxtr{\@glsxtr@disabledflycommand\glsxtr}%
+ \def\@glsxtrpl{\@glsxtr@disabledflycommand\glsxtrpl}%
+ \def\@Glsxtr{\@glsxtr@disabledflycommand\Glsxtr}%
+ \def\@Glsxtrpl{\@glsxtr@disabledflycommand\Glsxtrpl}%
+ }
+ \newcommand*{\@glsxtr@disabledflycommand}[1]{%
+ \PackageError{glossaries-extra}%
+ {\string##1\space can't be used after any of the \MessageBreak
+ glossaries have been displayed}%
+ {The on-the-fly commands enabled by
+ \string\GlsXtrEnableOnTheFly\space may only be used \MessageBreak
+ before the glossaries. If you want to use any entries \MessageBreak
+ after any of the glossaries, you must use the standard \MessageBreak
+ method of first defining the entry and then using the \MessageBreak
+ entry with commands like \string\gls}%
+ \@@glsxtr@disabledflycommand
+ }%
+ \newcommand*{\@@glsxtr@disabledflycommand}[2][]{##2}
+ \let\GlsXtrEnableOnTheFly\relax
+}
+\@onlypreamble\GlsXtrEnableOnTheFly
+\newcommand*{\@glsxtr@current@style}{\@glossary@default@style}
+\renewcommand*{\setglossarystyle}[1]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries-extra}{Glossary style `#1' undefined}{}%
+ }%
+ {%
+ \csname @glsstyle@#1\endcsname
+ \protected@edef\@glsxtr@current@style{#1}%
+ }%
+ \ifx\@glossary@default@style\relax
+ \protected@edef\@glossary@default@style{#1}%
+ \fi
+}
+\ifdef\@glossary@default@style
+{}
+{%
+ \let\@glossary@default@style\relax
+}
+\ifdef\glslistdottedwidth
+{%
+ \ifdim\glslistdottedwidth=.5\hsize
+ \setlength{\glslistdottedwidth}{-\dimexpr\maxdimen-1sp\relax}
+ \AtBeginDocument{%
+ \ifdim\glslistdottedwidth=-\dimexpr\maxdimen-1sp\relax
+ \setlength{\glslistdottedwidth}{.5\columnwidth}%
+ \fi
+ }%
+ \fi
+}
+{}%
+\ifdef\glsdescwidth
+{%
+ \ifdim\glsdescwidth=.6\hsize
+ \setlength{\glsdescwidth}{-\dimexpr\maxdimen-1sp\relax}
+ \AtBeginDocument{%
+ \ifdim\glsdescwidth=-\dimexpr\maxdimen-1sp\relax
+ \setlength{\glsdescwidth}{.6\columnwidth}%
+ \fi
+ }%
+ \fi
+}
+{}%
+\ifdef\glspagelistwidth
+{%
+ \ifdim\glspagelistwidth=.1\hsize
+ \setlength{\glspagelistwidth}{-\dimexpr\maxdimen-1sp\relax}
+ \AtBeginDocument{%
+ \ifdim\glspagelistwidth=-\dimexpr\maxdimen-1sp\relax
+ \setlength{\glspagelistwidth}{.1\columnwidth}%
+ \fi
+ }%
+ \fi
+}
+{}%
+\def\org@glossaryentrynumbers#1{#1\gls@save@numberlist{#1}}%
+\ifx\org@glossaryentrynumbers\glossaryentrynumbers
+ \glsnonumberlistfalse
+ \renewcommand*{\glossaryentrynumbers}[1]{%
+ \ifglsentryexists{\glscurrententrylabel}%
+ {%
+ \@glsxtrpreloctag
+ \GlsXtrFormatLocationList{#1}%
+ \@glsxtrpostloctag
+ \gls@save@numberlist{#1}%
+ }{}%
+ }%
+\else
+ \glsnonumberlisttrue
+ \renewcommand*{\glossaryentrynumbers}[1]{%
+ \ifglsentryexists{\glscurrententrylabel}%
+ {%
+ \gls@save@numberlist{#1}%
+ }{}%
+ }%
+\fi
+\newcommand*{\GlsXtrFormatLocationList}[1]{#1}
+\newcommand*{\GlsXtrEnablePreLocationTag}[2]{%
+ \let\@glsxtrpreloctag\@@glsxtrpreloctag
+ \let\@glsxtrpostloctag\@@glsxtrpostloctag
+ \renewcommand*{\@glsxtr@pagetag}{#1}%
+ \renewcommand*{\@glsxtr@pagestag}{#2}%
+ \renewcommand*{\@glsxtr@savepreloctag}[2]{%
+ \csgdef{@glsxtr@preloctag@##1}{##2}%
+ }%
+ \renewcommand*{\@glsxtr@doloctag}{%
+ \ifcsundef{@glsxtr@preloctag@\glscurrententrylabel}%
+ {%
+ \GlossariesWarning{Missing pre-location tag for `\glscurrententrylabel'.
+ Rerun required}%
+ }%
+ {%
+ \csuse{@glsxtr@preloctag@\glscurrententrylabel}%
+ }%
+ }%
+}
+\@onlypreamble\GlsXtrEnablePreLocationTag
+\newcommand*{\@@glsxtrpreloctag}{%
+ \let\@glsxtr@org@delimN\delimN
+ \let\@glsxtr@org@delimR\delimR
+ \let\@glsxtr@org@glsignore\glsignore
+ \gdef\@glsxtr@thisloctag{\@glsxtr@pagetag}%
+ \renewcommand*{\delimN}{%
+ \gdef\@glsxtr@thisloctag{\@glsxtr@pagestag}%
+ \@glsxtr@org@delimN}%
+ \renewcommand*{\delimR}{%
+ \gdef\@glsxtr@thisloctag{\@glsxtr@pagestag}%
+ \@glsxtr@org@delimR}%
+ \renewcommand*{\glsignore}[1]{%
+ \gdef\@glsxtr@thisloctag{\relax}%
+ \@glsxtr@org@glsignore{##1}}%
+ \@glsxtr@doloctag
+}
+\newcommand*{\@glsxtrpreloctag}{}
+\newcommand*{\@glsxtr@pagetag}{}%
+\newcommand*{\@glsxtr@pagestag}{}%
+\newcommand*{\@@glsxtrpostloctag}{%
+ \let\delimN\@glsxtr@org@delimN
+ \let\delimR\@glsxtr@org@delimR
+ \let\glsignore\@glsxtr@org@glsignore
+ \protected@write\@auxout{}%
+ {\string\@glsxtr@savepreloctag{\glscurrententrylabel}{\@glsxtr@thisloctag}}%
+}
+\newcommand*{\@glsxtrpostloctag}{}
+\newcommand*{\@glsxtr@savepreloctag}[2]{}
+\protected@write\@auxout{}{%
+ \string\providecommand\string\@glsxtr@savepreloctag[2]{}}
+\newcommand*{\@glsxtr@doloctag}{}
+\renewcommand*{\KV@printgloss@nonumberlist}[1]{%
+ \XKV@plfalse
+ \XKV@sttrue
+ \XKV@checkchoice[\XKV@resa]{#1}{true,false}%
+ {%
+ \csname glsnonumberlist\XKV@resa\endcsname
+ \ifglsnonumberlist
+ \def\glossaryentrynumbers##1{\gls@save@numberlist{##1}}%
+ \else
+ \def\glossaryentrynumbers##1{%
+ \@glsxtrpreloctag
+ \GlsXtrFormatLocationList{##1}%
+ \@glsxtrpostloctag
+ \gls@save@numberlist{##1}}%
+ \fi
+ }%
+}
+\renewcommand*{\glsentryfmt}{%
+ \ifglshasshort{\glslabel}{\glssetabbrvfmt{\glscategory{\glslabel}}}{}%
+ \glsifregular{\glslabel}%
+ {\glsxtrregularfont{\glsgenentryfmt}}%
+ {%
+ \ifglshasshort{\glslabel}%
+ {\glsxtrabbreviationfont{\glsxtrgenabbrvfmt}}%
+ {\glsxtrregularfont{\glsgenentryfmt}}%
+ }%
+}
+\newcommand*{\glsxtrregularfont}[1]{#1}
+\newcommand*{\glsxtrabbreviationfont}[1]{#1}
+\renewcommand{\@gls@field@link}[4][]{%
+ \@glsxtr@record{#2}{#3}{glslink}%
+ \glsdoifexists{#3}%
+ {%
+ \let\glsxtrorg@ifKV@glslink@hyper\ifKV@glslink@hyper
+ \@gls@save@glslocal
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glscustomtext{#4}%
+ \@glsxtr@field@linkdefs
+ #1%
+ \@gls@link[#2]{#3}{#4}%
+ \let\ifKV@glslink@hyper\glsxtrorg@ifKV@glslink@hyper
+ \@gls@restore@glslocal
+ }%
+ \glspostlinkhook
+}
+\let\@glsxtr@org@gls@\@gls@
+\def\@gls@#1#2{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \@glsxtr@org@gls@{#1}{#2}%
+}%
+\let\@glsxtr@org@glspl@\@glspl@
+\def\@glspl@#1#2{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \@glsxtr@org@glspl@{#1}{#2}%
+}%
+\let\@glsxtr@org@Gls@\@Gls@
+\def\@Gls@#1#2{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \@glsxtr@org@Gls@{#1}{#2}%
+}%
+\let\@glsxtr@org@Glspl@\@Glspl@
+\def\@Glspl@#1#2{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \@glsxtr@org@Glspl@{#1}{#2}%
+}%
+\let\@glsxtr@org@GLS@\@GLS@
+\def\@GLS@#1#2{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \@glsxtr@org@GLS@{#1}{#2}%
+}%
+\let\@glsxtr@org@GLSpl@\@GLSpl@
+\def\@GLSpl@#1#2{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \@glsxtr@org@GLSpl@{#1}{#2}%
+}%
+\renewcommand*{\@glsdisp}[3][]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}{%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \def\glscustomtext{#3}%
+ \def\glsinsert{}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\renewcommand*{\@gls@@link}[3][]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexistsordo{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \def\glscustomtext{#3}%
+ \@glsxtr@field@linkdefs
+ \@gls@link[#1]{#2}{#3}%
+ }%
+ {%
+ \glstextformat{#3}%
+ }%
+ \glspostlinkhook
+}
+\newcommand*{\glsxtrinitwrgloss}{%
+ \glsifattribute{\glslabel}{wrgloss}{after}%
+ {%
+ \glsxtrinitwrglossbeforefalse
+ }%
+ {%
+ \glsxtrinitwrglossbeforetrue
+ }%
+}
+\newif\ifglsxtrinitwrglossbefore
+\glsxtrinitwrglossbeforetrue
+\define@choicekey{glslink}{wrgloss}%
+[\@glsxtr@wrglossval\@glsxtr@wrglossnr]%
+{before,after}%
+{%
+ \ifcase\@glsxtr@wrglossnr\relax
+ \glsxtrinitwrglossbeforetrue
+ \or
+ \glsxtrinitwrglossbeforefalse
+ \fi
+}
+\define@key{glslink}{thevalue}{\def\@glsxtr@thevalue{#1}}
+\define@key{glslink}{theHvalue}{\def\@glsxtr@theHvalue{#1}}
+\define@boolkey{glslink}[glsxtr@]{hyperoutside}[true]{}
+\glsxtr@hyperoutsidetrue
+\define@key{glslink}{textformat}{%
+ \ifcsdef{#1}
+ {%
+ \letcs{\@glsxtr@local@textformat}{#1}%
+ }%
+ {%
+ \PackageError{glossaries-extra}{Unknown control sequence name `#1'}{}%
+ }%
+}
+\define@key{glslink}{prefix}{\def\glolinkprefix{#1}}
+\newcommand*{\glsxtrinithyperoutside}{%
+ \glsifattribute{\glslabel}{hyperoutside}{false}%
+ {%
+ \glsxtr@hyperoutsidefalse
+ }%
+ {%
+ \glsxtr@hyperoutsidetrue
+ }%
+}
+\newcommand*{\glsxtr@inc@linkcount}{}
+\newcommand*{\glslinkpresetkeys}{}
+\newrobustcmd*{\GlsXtrExpandedFmt}[2]{%
+ \protected@edef\@glsxtr@tmp{#2}%
+ \expandafter#1\expandafter{\@glsxtr@tmp}%
+}
+\newcommand*{\@glsxtr@use@equation@counter}{%
+ \@glsxtr@ifnum@mmode{\def\@gls@counter{equation}}{}%
+}
+\newcommand*{\glsxtr@do@autoadd}[1]{}
+\newcommand*{\GlsXtrAutoAddOnFormat}[3][\glslabel]{%
+ \renewcommand*{\glsxtr@do@autoadd}[1]{%
+ \begingroup
+ \protected@edef\@glsxtr@do@autoadd{%
+ \noexpand\ifstrequal{##1}{glslink}%
+ {%
+ \noexpand\DTLifinlist{\@glsnumberformat}{#2}{\noexpand\glsadd[format={\@glsnumberformat},#3]{#1}}{}%
+ }%
+ {}%
+ }%
+ \@glsxtr@do@autoadd
+ \endgroup
+ }%
+}
+\providecommand*{\glslinkwrcontent}[1]{{#1}}
+\def\@gls@link[#1]#2#3{%
+ \leavevmode
+ \protected@edef\glslabel{\glsdetoklabel{#2}}%
+ \def\@gls@link@opts{#1}%
+ \let\@gls@link@label\glslabel
+ \let\@glsnumberformat\@glsxtr@defaultnumberformat
+ \protected@edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}%
+ \protected@edef\glstype{\csname glo@\glslabel @type\endcsname}%
+ \let\org@ifKV@glslink@hyper\ifKV@glslink@hyper
+ \@gls@save@glslocal
+ \let\@glsxtr@org@glolinkprefix\glolinkprefix
+ \let\@glsxtr@local@textformat\relax
+ \def\@glsxtr@thevalue{}%
+ \def\@glsxtr@theHvalue{\@glsxtr@thevalue}%
+ \glsxtrinitwrgloss
+ \glsxtrinithyperoutside
+ \@gls@setdefault@glslink@opts
+ \glsxtr@inc@linkcount
+ \if@glsxtr@equations
+ \@glsxtr@use@equation@counter
+ \fi
+ \do@glsdisablehyperinlist
+ \do@gls@link@checkfirsthyper
+ \glslinkpresetkeys
+ \setkeys{glslink}{#1}%
+ \glsxtr@do@autoadd{glslink}%
+ \glslinkpostsetkeys
+ \ifdefempty{\@glsxtr@thevalue}%
+ {%
+ \@gls@saveentrycounter
+ }%
+ {%
+ \let\theglsentrycounter\@glsxtr@thevalue
+ \def\theHglsentrycounter{\@glsxtr@theHvalue}%
+ }%
+ \@gls@setsort{\glslabel}%
+ \ifx\@glsxtr@local@textformat\relax
+ \glshasattribute{\glslabel}{textformat}%
+ {%
+ \protected@edef\@glsxtr@attrval{\glsgetattribute{\glslabel}{textformat}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@textformat}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in textformat attribute
+ for entry `\glslabel'. Reverting to default \string\glstextformat}%
+ \let\@glsxtr@textformat\glstextformat
+ }%
+ }%
+ {%
+ \let\@glsxtr@textformat\glstextformat
+ }%
+ \else
+ \let\@glsxtr@textformat\@glsxtr@local@textformat
+ \fi
+ \glslinkwrcontent
+ {%
+ \ifglsxtrinitwrglossbefore
+ \@do@wrglossary{#2}%
+ \fi
+ \ifKV@glslink@hyper
+ \ifglsxtr@hyperoutside
+ \@glslink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}%
+ \else
+ \@glsxtr@textformat{\@glslink{\glolinkprefix\glslabel}{#3}}%
+ \fi
+ \else
+ \ifglsxtr@hyperoutside
+ \glsdonohyperlink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}%
+ \else
+ \@glsxtr@textformat{\glsdonohyperlink{\glolinkprefix\glslabel}{#3}}%
+ \fi
+ \fi
+ \ifglsxtrinitwrglossbefore
+ \else
+ \@do@wrglossary{#2}%
+ \fi
+ }%
+ \let\glolinkprefix\@glsxtr@org@glolinkprefix
+ \let\ifKV@glslink@hyper\org@ifKV@glslink@hyper
+ \@gls@restore@glslocal
+}
+\define@key{glossadd}{thevalue}{\def\@glsxtr@thevalue{#1}}
+\define@key{glossadd}{theHvalue}{\def\@glsxtr@theHvalue{#1}}
+\newcommand*{\glsaddpresetkeys}{}
+
+\newcommand*{\glsaddpostsetkeys}{}
+\renewrobustcmd*{\glsadd}[2][]{%
+ \glsxtrifinmark
+ {}%
+ {%
+ \@gls@adjustmode
+ \begingroup
+ \@glsxtr@record{#1}{#2}{glossadd}%
+ \glsdoifexists{#2}%
+ {%
+ \let\@glsnumberformat\@glsxtr@defaultnumberformat
+ \protected@edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}%
+ \def\@glsxtr@thevalue{}%
+ \def\@glsxtr@theHvalue{\@glsxtr@thevalue}%
+ \glsaddpresetkeys
+ \setkeys{glossadd}{#1}%
+ \glsaddpostsetkeys
+ \ifdefempty{\@glsxtr@thevalue}%
+ {%
+ \@gls@saveentrycounter
+ }%
+ {%
+ \let\theglsentrycounter\@glsxtr@thevalue
+ \def\theHglsentrycounter{\@glsxtr@theHvalue}%
+ }%
+ \@gls@setsort{#2}%
+ \KV@glslink@noindexfalse
+ \@@do@wrglossary{#2}%
+ }%
+ \endgroup
+ }%
+}
+\newrobustcmd{\glsaddeach}[2][]{%
+ \@for\@gls@thislabel:=#2\do{\glsadd[#1]{\@gls@thislabel}}%
+}
+\newcommand*{\@glsxtr@field@linkdefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+}
+\newcommand*{\glsxtrassignfieldfont}[1]{%
+ \ifglsentryexists{#1}%
+ {%
+ \ifglshasshort{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glsifregular{#1}%
+ {\let\@gls@field@font\glsxtrregularfont}%
+ {\let\@gls@field@font\@firstofone}%
+ }%
+ {%
+ \glsifnotregular{#1}%
+ {\let\@gls@field@font\@firstofone}%
+ {\let\@gls@field@font\glsxtrregularfont}%
+ }%
+ }%
+ {%
+ \let\@gls@field@font\@gobble
+ }%
+}
+\def\@glstext@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesstext{#2}#3}}%
+}
+\def\@GLStext@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]{#1}{#2}%
+ {\@gls@field@font{\GLSaccesstext{#2}\mfirstucMakeUppercase{#3}}}%
+}
+\def\@Glstext@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@secondofthree]{#1}{#2}%
+ {\@gls@field@font{\Glsaccesstext{#2}#3}}%
+}
+\newcommand*{\glsxtrchecknohyperfirst}[1]{%
+ \glsifattribute{#1}{nohyperfirst}{true}{\KV@glslink@hyperfalse}{}%
+}
+\def\@glsfirst@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \glsxtrchecknohyperfirst{#2}%
+ ]{#1}{#2}%
+ {\@gls@field@font{\glsaccessfirst{#2}#3}}%
+}
+\def\@Glsfirst@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \glsxtrchecknohyperfirst{#2}%
+ ]%
+ {#1}{#2}{\@gls@field@font{\Glsaccessfirst{#2}#3}}%
+}
+\def\@GLSfirst@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \glsxtrchecknohyperfirst{#2}%
+ ]%
+ {#1}{#2}{\@gls@field@font{\GLSaccessfirst{#2}\mfirstucMakeUppercase{#3}}}%
+}
+\def\@glsplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glsifplural\@firstoftwo]{#1}{#2}%
+ {\@gls@field@font{\glsaccessplural{#2}#3}}%
+}
+\def\@Glsplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ ]%
+ {#1}{#2}{\@gls@field@font{\Glsaccessplural{#2}#3}}%
+}
+\def\@GLSplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ ]%
+ {#1}{#2}{\@gls@field@font{\GLSaccessplural{#2}\mfirstucMakeUppercase{#3}}}%
+}
+\def\@glsfirstplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glsifplural\@firstoftwo
+ \glsxtrchecknohyperfirst{#2}%
+ ]%
+ {#1}{#2}{\@gls@field@font{\glsaccessfirstplural{#2}#3}}%
+}
+\def\@Glsfirstplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \glsxtrchecknohyperfirst{#2}%
+ ]%
+ {#1}{#2}{\@gls@field@font{\Glsaccessfirstplural{#2}#3}}%
+}
+\def\@GLSfirstplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \glsxtrchecknohyperfirst{#2}%
+ ]%
+ {#1}{#2}%
+ {\@gls@field@font{\GLSaccessfirstplural{#2}\mfirstucMakeUppercase{#3}}}%
+}
+\def\@glsname@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessname{#2}#3}}%
+}
+\def\@Glsname@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}%
+ {\@gls@field@font{\Glsaccessname{#2}#3}}%
+}
+\def\@GLSname@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}%
+ {\@gls@field@font{\GLSaccessname{#2}\mfirstucMakeUppercase{#3}}}%
+}
+\def\@glsdesc@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessdesc{#2}#3}}%
+}
+\def\@Glsdesc@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}%
+ {\@gls@field@font{\Glsaccessdesc{#2}#3}}%
+}
+\def\@GLSdesc@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\GLSaccessdesc{#2}\mfirstucMakeUppercase{#3}}}%
+}
+\def\@glsdescplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ ]{#1}{#2}{\@gls@field@font{\glsaccessdescplural{#2}#3}}%
+}
+\def\@Glsdescplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ ]{#1}{#2}{\@gls@field@font{\Glsaccessdescplural{#2}#3}}%
+}
+\def\@GLSdesc@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@thirdoftwo
+ \let\glsifplural\@firstoftwo
+ ]%
+ {#1}{#2}%
+ {\@gls@field@font{\GLSaccessdescplural{#2}\mfirstucMakeUppercase{#3}}}%
+}
+\def\@glssymbol@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesssymbol{#2}#3}}%
+}
+\def\@Glssymbol@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]%
+ {#1}{#2}{\@gls@field@font{\Glsaccesssymbol{#2}#3}}%
+}
+\def\@GLSsymbol@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\GLSaccesssymbol{#2}\mfirstucMakeUppercase{#3}}}%
+}
+\def\@glssymbolplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ ]{#1}{#2}{\@gls@field@font{\glsaccesssymbolplural{#2}#3}}%
+}
+\def\@Glssymbolplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ ]{#1}{#2}{\@gls@field@font{\Glsaccesssymbolplural{#2}#3}}%
+}
+\def\@GLSsymbol@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@thirdoftwo
+ \let\glsifplural\@firstoftwo
+ ]%
+ {#1}{#2}%
+ {\@gls@field@font{\GLSaccesssymbolplural{#2}\mfirstucMakeUppercase{#3}}}%
+}
+\def\@Glsuseri@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}%
+ {\@gls@field@font{\Glsentryuseri{#2}#3}}%
+}
+\def\@GLSuseri@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseri{#2}#3}}}%
+}
+\def\@Glsuserii@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]%
+ {#1}{#2}{\@gls@field@font{\Glsentryuserii{#2}#3}}%
+}
+\def\@GLSuserii@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserii{#2}#3}}}%
+}
+\def\@Glsuseriii@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]%
+ {#1}{#2}{\@gls@field@font{\Glsentryuseriii{#2}#3}}%
+}
+\def\@GLSuseriii@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriii{#2}#3}}}%
+}
+\def\@Glsuseriv@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]%
+ {#1}{#2}{\@gls@field@font{\Glsentryuseriv{#2}#3}}%
+}
+\def\@GLSuseriv@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}%
+ {\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriv{#2}#3}}}%
+}
+\def\@Glsuserv@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]%
+ {#1}{#2}{\@gls@field@font{\Glsentryuserv{#2}#3}}%
+}
+\def\@GLSuserv@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserv{#2}#3}}}%
+}
+\def\@Glsuservi@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]%
+ {#1}{#2}{\@gls@field@font{\Glsentryuservi{#2}#3}}%
+}
+\def\@GLSuservi@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuservi{#2}#3}}}%
+}
+\newcommand*{\@@glsxtr@base@acrcmd@warn}[2]{%
+ \GlossariesExtraWarning{Base acronym command \string#1\space
+ should not be used with new abbreviation definitions. Use
+ \string#2\space instead}%
+}
+\let\@glsxtr@base@acrcmd\@@glsxtr@base@acrcmd@warn
+\def\@acrshort#1#2[#3]{%
+ \@glsxtr@base@acrcmd\acrshort\glsxtrshort
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsaccessshort{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@Acrshort#1#2[#3]{%
+ \@glsxtr@base@acrcmd\Acrshort\Glsxtrshort
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsaccessshort{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@ACRshort#1#2[#3]{%
+ \@glsxtr@base@acrcmd\ACRshort\GLSxtrshort
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\acronymfont{\glsaccessshort{#2}}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@acrshortpl#1#2[#3]{%
+ \@glsxtr@base@acrcmd\acrshortpl\glsxtrshortpl
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsaccessshortpl{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@Acrshortpl#1#2[#3]{%
+ \@glsxtr@base@acrcmd\Acrshortpl\Glsxtrshortpl
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsaccessshortpl{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@ACRshortpl#1#2[#3]{%
+ \@glsxtr@base@acrcmd\ACRshortpl\GLSxtrshortpl
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\acronymfont{\glsaccessshortpl{#2}}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@acrlong#1#2[#3]{%
+ \@glsxtr@base@acrcmd\acrlong\glsxtrlong
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsaccesslong{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@Acrlong#1#2[#3]{%
+ \@glsxtr@base@acrcmd\Acrlong\Glsxtrlong
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsaccesslong{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@ACRlong#1#2[#3]{%
+ \@glsxtr@base@acrcmd\ACRlong\GLSxtrlong
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\acronymfont{\glsaccesslong{#2}}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@acrlongpl#1#2[#3]{%
+ \@glsxtr@base@acrcmd\acrlongpl\glsxtrlongpl
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsaccesslongpl{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@Acrlongpl#1#2[#3]{%
+ \@glsxtr@base@acrcmd\Acrlongpl\Glsxtrlongpl
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsaccesslongpl{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@ACRlongpl#1#2[#3]{%
+ \@glsxtr@base@acrcmd\ACRlongpl\GLSxtrlongpl
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\acronymfont{\glsaccesslongpl{#2}}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@acrfull#1#2[#3]{%
+ \@glsxtr@base@acrcmd\acrfull\glsxtrfull
+ \acrfullfmt{#1}{#2}{#3}%
+}
+\def\@Acrfull#1#2[#3]{%
+ \@glsxtr@base@acrcmd\Acrfull\Glsxtrfull
+ \Acrfullfmt{#1}{#2}{#3}%
+}
+\def\@ACRfull#1#2[#3]{%
+ \@glsxtr@base@acrcmd\ACRfull\GLSxtrfull
+ \ACRfullfmt{#1}{#2}{#3}%
+}
+\def\@acrfullpl#1#2[#3]{%
+ \@glsxtr@base@acrcmd\acrfullpl\glsxtrfullpl
+ \acrfullplfmt{#1}{#2}{#3}%
+}
+\def\@Acrfullpl#1#2[#3]{%
+ \@glsxtr@base@acrcmd\Acrfullpl\Glsxtrfullpl
+ \Acrfullplfmt{#1}{#2}{#3}%
+}
+\def\@ACRfullpl#1#2[#3]{%
+ \@glsxtr@base@acrcmd\ACRfullpl\GLSxtrfullpl
+ \ACRfullplfmt{#1}{#2}{#3}%
+}
+\renewcommand*{\@glsaddkey}[7]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}%
+ \appto\@gls@keymap{,{#1}{#1}}%
+ \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}%
+ \appto\@newglossaryentryposthook{%
+ \letcs{\@glo@tmp}{@glo@#1}%
+ \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}%
+ }%
+ \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}%
+ \newcommand*{#4}[1]{\@Gls@entry@field{##1}{#1}}%
+ \ifcsdef{@gls@user@#1@}%
+ {%
+ \PackageError{glossaries}%
+ {Can't define `\string#5' as helper command
+ `\expandafter\string\csname @gls@user@#1@\endcsname' already
+ exists}%
+ {}%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname @gls@user@#1\endcsname}[2][]{%
+ \new@ifnextchar[%
+ {\csuse{@gls@user@#1@}{##1}{##2}}%
+ {\csuse{@gls@user@#1@}{##1}{##2}[]}}%
+ \csdef{@gls@user@#1@}##1##2[##3]{%
+ \@gls@field@link{##1}{##2}{#3{##2}##3}%
+ }%
+ \newrobustcmd*{#5}{%
+ \expandafter\@gls@hyp@opt\csname @gls@user@#1\endcsname}%
+ }%
+ \ifcsdef{@Gls@user@#1@}%
+ {%
+ \PackageError{glossaries}%
+ {Can't define `\string#6' as helper command
+ `\expandafter\string\csname @Gls@user@#1@\endcsname' already
+ exists}%
+ {}%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname @Gls@user@#1\endcsname}[2][]{%
+ \new@ifnextchar[%
+ {\csuse{@Gls@user@#1@}{##1}{##2}}%
+ {\csuse{@Gls@user@#1@}{##1}{##2}[]}}%
+ \csdef{@Gls@user@#1@}##1##2[##3]{%
+ \@gls@field@link[\let\glscapscase\@secondofthree]%
+ {##1}{##2}{#4{##2}##3}%
+ }%
+ \newrobustcmd*{#6}{%
+ \expandafter\@gls@hyp@opt\csname @Gls@user@#1\endcsname}%
+ }%
+ \ifcsdef{@GLS@user@#1@}%
+ {%
+ \PackageError{glossaries}%
+ {Can't define `\string#7' as helper command
+ `\expandafter\string\csname @GLS@user@#1@\endcsname' already
+ exists}%
+ {}%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname @GLS@user@#1\endcsname}[2][]{%
+ \new@ifnextchar[%
+ {\csuse{@GLS@user@#1@}{##1}{##2}}%
+ {\csuse{@GLS@user@#1@}{##1}{##2}[]}}%
+ \csdef{@GLS@user@#1@}##1##2[##3]{%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]%
+ {##1}{##2}{\mfirstucMakeUppercase{#3{##2}##3}}%
+ }%
+ \newrobustcmd*{#7}{%
+ \expandafter\@gls@hyp@opt\csname @GLS@user@#1\endcsname}%
+ }%
+ }%
+ {%
+ \PackageError{glossaries-extra}{Key `#1' already exists}{}%
+ }%
+}
+\providecommand*{\@gls@link@nocheckfirsthyper}{}
+\let\@glsxtr@org@checkfirsthyper\@gls@link@checkfirsthyper
+\renewcommand*{\@gls@link@checkfirsthyper}{%
+ \ifglsused{\glslabel}%
+ {\let\glsxtrifwasfirstuse\@secondoftwo}
+ {\let\glsxtrifwasfirstuse\@firstoftwo}%
+ \protected@edef\glscategorylabel{\glscategory{\glslabel}}%
+ \ifglsused{\glslabel}%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{nohypernext}{true}%
+ {\KV@glslink@hyperfalse}{}%
+ }%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{nohyperfirst}{true}%
+ {\KV@glslink@hyperfalse}{}%
+ }%
+ \glslinkcheckfirsthyperhook
+}
+\ifdef\do@glsdisablehyperinlist
+{%
+ \let\@glsxtr@do@glsdisablehyperinlist\do@glsdisablehyperinlist
+ \renewcommand*{\do@glsdisablehyperinlist}{%
+ \@glsxtr@do@glsdisablehyperinlist
+ \glsifattribute{\glslabel}{nohyper}{true}{\KV@glslink@hyperfalse}{}%
+ }
+}
+{}
+\define@boolkey{glslink}{noindex}[true]{}
+\KV@glslink@noindexfalse
+\providecommand*{\@gls@save@glslocal}{%
+ \let\if@org@KV@glslink@local\ifKV@glslink@local
+}
+\providecommand*{\@gls@restore@glslocal}{%
+ \ifKV@glslink@local
+ \let\@gls@do@glsunset\glslocalunset
+ \else
+ \let\@gls@do@glsunset\glsunset
+ \fi
+}
+\providecommand*{\@gls@do@glsunset}[1]{\glsunset{#1}}
+\ifdef\@gls@setdefault@glslink@opts
+{
+ \renewcommand*{\@gls@setdefault@glslink@opts}{%
+ \KV@glslink@noindexfalse
+ \@glsxtrsetaliasnoindex
+ }
+}
+{
+ \newcommand*{\@gls@setdefault@glslink@opts}{%
+ \KV@glslink@noindexfalse
+ \@glsxtrsetaliasnoindex
+ }
+ \preto\do@glsdisablehyperinlist{\@gls@setdefault@glslink@opts}
+}
+\providecommand*{\glsxtrsetaliasnoindex}{%
+ \KV@glslink@noindextrue
+}
+\newcommand*{\@glsxtrsetaliasnoindex}{%
+ \ifcsvoid{glo@\glsdetoklabel{\glslabel}@alias}%
+ {}%
+ {%
+ \let\glsxtrindexaliased\@glsxtrindexaliased
+ \glsxtrsetaliasnoindex
+ \let\glsxtrindexaliased\@no@glsxtrindexaliased
+ }%
+}
+\newcommand{\@glsxtrindexaliased}{%
+ \ifKV@glslink@noindex
+ \else
+ \begingroup
+ \let\@glsnumberformat\@glsxtr@defaultnumberformat
+ \protected@edef\@gls@counter{\csname glo@\glsdetoklabel{\glslabel}@counter\endcsname}%
+ \glsxtr@saveentrycounter
+ \@@do@wrglossary{\glsxtralias{\glslabel}}%
+ \endgroup
+ \fi
+}
+\newcommand{\@no@glsxtrindexaliased}{%
+ \PackageError{glossaries-extra}{\string\glsxtrindexaliased\space
+ not permitted outside definition of \string\glsxtrsetaliasnoindex}%
+ {}%
+}
+\let\glsxtrindexaliased\@no@glsxtrindexaliased
+\newcommand*{\GlsXtrSetDefaultGlsOpts}[1]{%
+ \renewcommand*{\@gls@setdefault@glslink@opts}{%
+ \setkeys{glslink}{#1}%
+ \@glsxtrsetaliasnoindex
+ }%
+}
+\newcommand*{\glsxtrifindexing}[2]{%
+ \ifKV@glslink@noindex #2\else #1\fi
+}
+\renewcommand*{\glswriteentry}[2]{%
+ \glsxtrifindexing
+ {%
+ \ifglsindexonlyfirst
+ \GlsXtrIfUnusedOrUndefined{#1}
+ {#2}%
+ {\glsxtrdoautoindexname{#1}{dualindex}}%
+ \else
+ \glsifattribute{#1}{indexonlyfirst}{true}%
+ {%
+ \GlsXtrIfUnusedOrUndefined{#1}%
+ {#2}%
+ {\glsxtrdoautoindexname{#1}{dualindex}}%
+ }%
+ {#2}%
+ \fi
+ }%
+ {}%
+}
+\appto\@@do@@wrglossary{\@glsxtr@do@@wrindex
+ \glsxtrdowrglossaryhook{\@gls@label}%
+}
+\appto\gls@noidxglossary{\@glsxtr@do@@wrindex
+ \glsxtrdowrglossaryhook{\@gls@label}%
+}
+\newcommand*{\@glsxtr@do@@wrindex}{%
+ \glsxtrdoautoindexname{\@gls@label}{dualindex}%
+}
+\newcommand*{\glsxtrdowrglossaryhook}[1]{}
+\newcommand*{\@gls@alt@hyp@opt}[1]{%
+ \let\glslinkvar\@firstofthree
+ \let\@gls@hyp@opt@cs#1\relax
+ \@ifstar{\s@gls@hyp@opt}%
+ {\@ifnextchar+%
+ {\@firstoftwo{\p@gls@hyp@opt}}%
+ {%
+ \expandafter\@ifnextchar\@gls@alt@hyp@opt@char
+ {\@firstoftwo{\@alt@gls@hyp@opt}}%
+ {#1}%
+ }%
+ }%
+}
+\newcommand*{\@alt@gls@hyp@opt}[1][]{%
+ \let\glslinkvar\@firstofthree
+ \expandafter\@gls@hyp@opt@cs\expandafter[\@gls@alt@hyp@opt@keys,#1]}
+\newcommand*{\@gls@alt@hyp@opt@char}{}
+\newcommand*{\@gls@alt@hyp@opt@keys}{}
+\newcommand*{\GlsXtrSetAltModifier}[2]{%
+ \let\@gls@hyp@opt\@gls@alt@hyp@opt
+ \ifstrequal{#1}{+}%
+ {\PackageError{glossaries-extra}%
+ {Can't use '#1' as modifier (it's already in use)}{}}%
+ {%
+ \ifstrequal{#1}{*}%
+ {\PackageError{glossaries-extra}%
+ {Can't use '#1' as modifier (it's already in use)}{}}%
+ {}%
+ }%
+ \def\@gls@alt@hyp@opt@char{#1}%
+ \def\@gls@alt@hyp@opt@keys{#2}%
+ \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off
+ {}%
+ {%
+ \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@altmodifier}[1]{}}%
+ \protected@write\@auxout{}{\string\@glsxtr@altmodifier{#1}}%
+ }%
+}
+\let\glsxtr@org@dohyperlink\glsdohyperlink
+\ifdef\glsnavhyperlink
+{
+ \renewcommand*{\glsnavhyperlink}[3][\@glo@type]{%
+ \protected@edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}%
+ {%
+ \let\glsxtrdohyperlink\glsxtr@org@dohyperlink
+ \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}%
+ }%
+ }%
+}
+{}
+\ifdef\@@gls@navhypertarget
+{}
+{%
+ \renewcommand*{\glsnavhypertarget}{\protect\@@gls@navhypertarget}
+ \newcommand*{\@@gls@navhypertarget}[3][\@glo@type]{%
+ \@glsnavhypertarget{#1}{#2}{#3}%
+ }
+}%
+\ifdef\@glsnavhypertarget
+{%
+ \renewcommand*{\@glsnavhypertarget}[3]{%
+ \protected@write\@auxout{}{\string\@gls@hypergroup{#1}{#2}}%
+ \@glsxtr@do@org@target{\glsnavhyperlinkname{#1}{#2}}{#3}%
+ \ifcsdef{@gls@hypergrouplist@#1}%
+ {%
+ \letcs\@gls@list{@gls@hypergrouplist@#1}%
+ \protected@edef\@gls@thishypernavlabel{#2}%
+ \expandafter\DTLifinlist\expandafter{\@gls@thishypernavlabel}\@gls@list{}%
+ {%
+ \GlossariesWarningNoLine{Navigation panel
+ for glossary type `#1'^^Jmissing group `#2'}%
+ \gdef\gls@hypergrouprerun{%
+ \GlossariesWarningNoLine{Navigation panel
+ has changed. Rerun LaTeX}}%
+ }%
+ }%
+ {%
+ \GlossariesWarningNoLine{Navigation panel
+ for glossary type `#1'^^Jmissing group `#2'}%
+ \gdef\gls@hypergrouprerun{%
+ \GlossariesWarningNoLine{Navigation panel
+ has changed. Rerun LaTeX}}%
+ }%
+ }%
+}
+{}
+\newcommand*{\glsxtrdohyperlink}[2]{%
+ \glshasattribute{\glslabel}{targeturl}%
+ {%
+ \glshasattribute{\glslabel}{targetname}%
+ {%
+ \glshasattribute{\glslabel}{targetcategory}%
+ {%
+ \hyperref{\glsgetattribute{\glslabel}{targeturl}}%
+ {\glsgetattribute{\glslabel}{targetcategory}}%
+ {\glsgetattribute{\glslabel}{targetname}}%
+ {{\glsxtrprotectlinks#2}}%
+ }%
+ {%
+ \hyperref{\glsgetattribute{\glslabel}{targeturl}}%
+ {}%
+ {\glsgetattribute{\glslabel}{targetname}}%
+ {{\glsxtrprotectlinks#2}}%
+ }%
+ }%
+ {%
+ \href{\glsgetattribute{\glslabel}{targeturl}}%
+ {{\glsxtrprotectlinks#2}}%
+ }%
+ }%
+ {%
+ \glsfieldfetch{\glslabel}{alias}{\gloaliaslabel}%
+ \ifdefvoid\gloaliaslabel
+ {%
+ \glsxtrhyperlink{#1}{{\glsxtrprotectlinks#2}}%
+ }%
+ {%
+ \glsxtrifmulti\gloaliaslabel
+ {%
+ \letcs\gloaliaslabel{@gls@combined@\gloaliaslabel @main}%
+ }%
+ {}%
+ \glsxtrhyperlink
+ {\glolinkprefix\glsdetoklabel{\gloaliaslabel}}%
+ {{\glsxtrprotectlinks#2}}%
+ }%
+ }%
+}
+
+\newcommand{\glsxtrhyperlink}[2]{%
+ \glsdoshowtarget{#1}{\hyperlink{#1}{#2}}%
+}%
+\renewrobustcmd*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{%
+ \glsdoifexists{#2}%
+ {%
+ \def\@glo@label{#2}%
+ {\protected@edef\glslabel{#2}%
+ \@glslink{\glolinkprefix\glslabel}{#1}}%
+ }%
+}
+\renewcommand{\glsdisablehyper}{%
+ \KV@glslink@hyperfalse
+ \def\@glslink{\glsdonohyperlink}%
+ \let\@glstarget\@secondoftwo
+}
+\renewcommand{\glsenablehyper}{%
+ \KV@glslink@hypertrue
+ \def\@glslink{\glsxtrdohyperlink}%
+ \def\@glstarget{\glsdohypertarget}%
+}
+\def\glsdonohyperlink#1#2{{\glsxtrprotectlinks #2}}
+\ifcsundef{hyperlink}%
+{%
+ \def\@glslink{\glsdonohyperlink}
+}%
+{%
+ \def\@glslink{\glsxtrdohyperlink}
+}
+\newcommand*{\glsxtrprotectlinks}{%
+ \KV@glslink@hyperfalse
+ \KV@glslink@noindextrue
+ \let\@gls@\@glsxtr@p@text@
+ \let\@Gls@\@Glsxtr@p@text@
+ \let\@GLS@\@GLSxtr@p@text@
+ \let\@glspl@\@glsxtr@p@plural@
+ \let\@Glspl@\@Glsxtr@p@plural@
+ \let\@GLSpl@\@GLSxtr@p@plural@
+ \let\@glsxtrshort\@glsxtr@p@short@
+ \let\@Glsxtrshort\@Glsxtr@p@short@
+ \let\@GLSxtrshort\@GLSxtr@p@short@
+ \let\@glsxtrlong\@glsxtr@p@long@
+ \let\@Glsxtrlong\@Glsxtr@p@long@
+ \let\@GLSxtrlong\@GLSxtr@p@long@
+ \let\@glsxtrshortpl\@glsxtr@p@shortpl@
+ \let\@Glsxtrshortpl\@Glsxtr@p@shortpl@
+ \let\@GLSxtrshortpl\@GLSxtr@p@shortpl@
+ \let\@glsxtrlongpl\@glsxtr@p@longpl@
+ \let\@Glsxtrlongpl\@Glsxtr@p@longpl@
+ \let\@GLSxtrlongpl\@GLSxtr@p@longpl@
+ \let\@acrshort\@glsxtr@p@acrshort@
+ \let\@Acrshort\@Glsxtr@p@acrshort@
+ \let\@ACRshort\@GLSxtr@p@acrshort@
+ \let\@acrshortpl\@glsxtr@p@acrshortpl@
+ \let\@Acrshortpl\@Glsxtr@p@acrshortpl@
+ \let\@ACRshortpl\@GLSxtr@p@acrshortpl@
+ \let\@acrlong\@glsxtr@p@acrlong@
+ \let\@Acrlong\@Glsxtr@p@acrlong@
+ \let\@ACRlong\@GLSxtr@p@acrlong@
+ \let\@acrlongpl\@glsxtr@p@acrlongpl@
+ \let\@Acrlongpl\@Glsxtr@p@acrlongpl@
+ \let\@ACRlongpl\@GLSxtr@p@acrlongpl@
+}
+\def\@glsxtr@p@text@#1#2[#3]{{\@glstext@{#1}{#2}[#3]}}
+\def\@Glsxtr@p@text@#1#2[#3]{{\@Glstext@{#1}{#2}[#3]}}
+\def\@GLSxtr@p@text@#1#2[#3]{{\@GLStext@{#1}{#2}[#3]}}
+\def\@glsxtr@p@plural@#1#2[#3]{{\@glsplural@{#1}{#2}[#3]}}
+\def\@Glsxtr@p@plural@#1#2[#3]{{\@Glsplural@{#1}{#2}[#3]}}
+\def\@GLSxtr@p@plural@#1#2[#3]{{\@GLSplural@{#1}{#2}[#3]}}
+\def\@glsxtr@p@short@#1#2[#3]{%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \glsabbrvfont{\glsentryshort{#2}}#3%
+ }%
+}
+\def\@Glsxtr@p@short@#1#2[#3]{%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \glsabbrvfont{\Glsentryshort{#2}}#3%
+ }%
+}
+\def\@GLSxtr@p@short@#1#2[#3]{%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshort{#2}}#3}%
+ }%
+}
+\def\@glsxtr@p@shortpl@#1#2[#3]{%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \glsabbrvfont{\glsentryshortpl{#2}}#3%
+ }%
+}
+\def\@Glsxtr@p@shortpl@#1#2[#3]{%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \glsabbrvfont{\Glsentryshortpl{#2}}#3%
+ }%
+}
+\def\@GLSxtr@p@shortpl@#1#2[#3]{%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshortpl{#2}}#3}%
+ }%
+}
+\def\@glsxtr@p@long@#1#2[#3]{{\glsentrylong{#2}#3}}
+\def\@Glsxtr@p@long@#1#2[#3]{{\Glsentrylong{#2}#3}}
+\def\@GLSxtr@p@long@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\glslongfont{\glsentrylong{#2}}#3}}}
+\def\@glsxtr@p@longpl@#1#2[#3]{{\glsentrylongpl{#2}#3}}
+\def\@Glsxtr@p@longpl@#1#2[#3]{{\glslongfont{\Glsentrylongpl{#2}}#3}}
+\def\@GLSxtr@p@longpl@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\glslongfont{\glsentrylongpl{#2}}#3}}}
+\def\@glsxtr@p@acrshort@#1#2[#3]{{\acronymfont{\glsentryshort{#2}}#3}}
+\def\@Glsxtr@p@acrshort@#1#2[#3]{{\acronymfont{\Glsentryshort{#2}}#3}}
+\def\@GLSxtr@p@acrshort@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\acronymfont{\glsentryshort{#2}}#3}}}
+\def\@glsxtr@p@acrshortpl@#1#2[#3]{{\acronymfont{\glsentryshortpl{#2}}#3}}
+\def\@Glsxtr@p@acrshortpl@#1#2[#3]{{\acronymfont{\Glsentryshortpl{#2}}#3}}
+\def\@GLSxtr@p@acrshortpl@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\acronymfont{\glsentryshortpl{#2}}#3}}}
+\def\@glsxtr@p@acrlong@#1#2[#3]{{\glsentrylong{#2}#3}}
+\def\@Glsxtr@p@acrlong@#1#2[#3]{{\Glsentrylong{#2}#3}}
+\def\@GLSxtr@p@acrlong@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\glsentrylong{#2}#3}}}
+\def\@glsxtr@p@acrlongpl@#1#2[#3]{{\glsentrylongpl{#2}#3}}
+\def\@Glsxtr@p@acrlongpl@#1#2[#3]{{\Glsentrylongpl{#2}#3}}
+\def\@GLSxtr@p@acrlongpl@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\glsentrylongpl{#2}#3}}}
+\newcommand*{\@glsxtrp@opt}{hyper=false,noindex}
+\newcommand*{\glsxtrsetpopts}[1]{%
+ \renewcommand*{\@glsxtrp@opt}{#1}%
+}
+\newcommand*{\glossxtrsetpopts}{%
+ \glsxtrsetpopts{noindex}%
+}
+\newrobustcmd*{\@@glsxtrp}[2]{%
+ {%
+ \let\glspostlinkhook\relax
+ \csname#1\expandafter\endcsname\expandafter[\@glsxtrp@opt]{#2}[]%
+ }%
+}
+\newrobustcmd*{\@glsxtrp}[2]{%
+ \ifcsdef{gls#1}%
+ {%
+ \@@glsxtrp{gls#1}{#2}%
+ }%
+ {%
+ \ifcsdef{glsxtr#1}%
+ {%
+ \@@glsxtrp{glsxtr#1}{#2}%
+ }%
+ {%
+ \PackageError{glossaries-extra}{`#1' not recognised by
+ \string\glsxtrp}{}%
+ }%
+ }%
+}
+\newrobustcmd*{\@Glsxtrp}[2]{%
+ \ifcsdef{Gls#1}%
+ {%
+ \@@glsxtrp{Gls#1}{#2}%
+ }%
+ {%
+ \ifcsdef{Glsxtr#1}%
+ {%
+ \@@glsxtrp{Glsxtr#1}{#2}%
+ }%
+ {%
+ \PackageError{glossaries-extra}{`#1' not recognised by
+ \string\Glsxtrp}{}%
+ }%
+ }%
+}
+\newrobustcmd*{\@GLSxtrp}[2]{%
+ \ifcsdef{GLS#1}%
+ {%
+ \@@glsxtrp{GLS#1}{#2}%
+ }%
+ {%
+ \ifcsdef{GLSxtr#1}%
+ {%
+ \@@glsxtrp{GLSxtr#1}{#2}%
+ }%
+ {%
+ \PackageError{glossaries-extra}{`#1' not recognised by
+ \string\GLSxtrp}{}%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtr@headentry@p}[2]{%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}%
+ }%
+ {%
+ \@gls@entry@field{#1}{#2}%
+ }%
+}
+\ifdef\texorpdfstring
+{
+ \newcommand{\glsxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\texorpdfstring
+ {%
+ \protect\glsxtrifinmark
+ {%
+ \ifcsdef{glsxtrhead#1}%
+ {%
+ {\protect\csuse{glsxtrhead#1}{#2}}%
+ }%
+ {%
+ \glsxtr@headentry@p{#2}{#1}%
+ }%
+ }%
+ {%
+ \@glsxtrp{#1}{#2}%
+ }%
+ }%
+ {%
+ \protect\@gls@entry@field{#2}{#1}%
+ }%
+ }%
+ }
+}
+{
+ \newcommand{\glsxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\glsxtrifinmark
+ {%
+ \ifcsdef{glsxtrhead#1}%
+ {%
+ {\protect\csuse{glsxtrhead#1}}%
+ }%
+ {%
+ \glsxtr@headentry@p{#2}{#1}%
+ }%
+ }%
+ {%
+ \@glsxtrp{#1}{#2}%
+ }%
+ }%
+ }
+}
+\newcommand*{\glsps}{\glsxtrp{short}}
+\newcommand*{\glspt}{\glsxtrp{text}}
+\ifdef\texorpdfstring
+{
+ \newcommand{\Glsxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\texorpdfstring
+ {%
+ \protect\glsxtrifinmark
+ {%
+ \ifcsdef{Glsxtrhead#1}%
+ {%
+ {\protect\csuse{Glsxtrhead#1}{#2}}%
+ }%
+ {%
+ \protect\@Gls@entry@field{#2}{#1}%
+ }%
+ }%
+ {%
+ \@Glsxtrp{#1}{#2}%
+ }%
+ }%
+ {%
+ \protect\@gls@entry@field{#2}{#1}%
+ }%
+ }%
+ }
+}
+{
+ \newcommand{\Glsxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\glsxtrifinmark
+ {%
+ \ifcsdef{Glsxtrhead#1}%
+ {%
+ {\protect\csuse{Glsxtrhead#1}}%
+ }%
+ {%
+ \protect\@Gls@entry@field{#2}{#1}%
+ }%
+ }%
+ {%
+ \@Glsxtrp{#1}{#2}%
+ }%
+ }%
+ }
+}
+\ifdef\texorpdfstring
+{
+ \newcommand{\GLSxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\texorpdfstring
+ {%
+ \protect\glsxtrifinmark
+ {%
+ \ifcsdef{GLSxtr#1}%
+ {%
+ {\protect\GLSxtrshort[noindex,hyper=false]{#1}[]}%
+ }%
+ {%
+ \protect\mfirstucMakeUppercase
+ {%
+ \protect\@gls@entry@field{#2}{#1}%
+ }%
+ }%
+ }%
+ {%
+ \@GLSxtrp{#1}{#2}%
+ }%
+ }%
+ {%
+ \protect\@gls@entry@field{#2}{#1}%
+ }%
+ }%
+ }
+}
+{
+ \newcommand{\GLSxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\glsxtrifinmark
+ {%
+ \ifcsdef{GLSxtr#1}%
+ {%
+ {\protect\GLSxtrshort[noindex,hyper=false]{#1}[]}%
+ }%
+ {%
+ \protect\mfirstucMakeUppercase
+ {%
+ \protect\@gls@entry@field{#2}{#1}%
+ }%
+ }%
+ }%
+ {%
+ \@GLSxtrp{#1}{#2}%
+ }%
+ }%
+ }
+}
+\newcommand*{\@glsxtr@unset}[1]{%
+ \@@glsunset{#1}%
+ \glsxtrpostunset{#1}%
+}%
+\let\@glsunset\@glsxtr@unset
+\newcommand*{\glsxtrpostunset}[1]{}
+\newcommand*{\GlsXtrStartUnsetBuffering}{%
+ \@ifstar\s@GlsXtrStartUnsetBuffering\@GlsXtrStartUnsetBuffering
+}
+\newcommand*{\@GlsXtrStartUnsetBuffering}{%
+ \let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer
+ \def\@glsxtr@unset@buffer{}%
+ \let\@glsunset\@glsxtrbuffer@unset
+}
+\newcommand*{\s@GlsXtrStartUnsetBuffering}{%
+ \let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer
+ \def\@glsxtr@unset@buffer{}%
+ \let\@glsunset\@glsxtrbuffer@nodup@unset
+}
+\newcommand*{\@glsxtrbuffer@unset}[1]{%
+ \listxadd\@glsxtr@unset@buffer{#1}%
+}
+\newcommand*{\@glsxtrbuffer@nodup@unset}[1]{%
+ \expandafter\ifinlist\expandafter{#1}{\@glsxtr@unset@buffer}{}%
+ {\listxadd\@glsxtr@unset@buffer{#1}}%
+}
+\newcommand*{\GlsXtrStopUnsetBuffering}{%
+ \@ifstar\s@GlsXtrStopUnsetBuffering\@GlsXtrStopUnsetBuffering
+}
+\newcommand*{\@GlsXtrStopUnsetBuffering}{%
+ \let\@glsunset\@glsxtr@unset
+ \forlistloop\@glsunset\@glsxtr@unset@buffer
+ \let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer
+}
+\newcommand*{\s@GlsXtrStopUnsetBuffering}{%
+ \forlistloop\@glslocalunset\@glsxtr@unset@buffer
+ \let\@glsunset\@glsxtr@unset
+}
+\newcommand*{\GlsXtrDiscardUnsetBuffering}{%
+ \let\@glsunset\@glsxtr@unset
+ \let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer
+}
+\newcommand*{\GlsXtrForUnsetBufferedList}[1]{%
+ \forlistloop#1\@glsxtr@unset@buffer
+}
+\renewcommand*{\@glslocalunset}[1]{%
+ \@@glslocalunset{#1}%
+ \glsxtrpostlocalunset{#1}%
+}%
+\newcommand*{\glsxtrpostlocalunset}[1]{}
+\renewcommand*{\@glsreset}[1]{%
+ \@@glsreset{#1}%
+ \glsxtrpostreset{#1}%
+}%
+\newcommand*{\glsxtrpostreset}[1]{}
+\renewcommand*{\@glslocalreset}[1]{%
+ \@@glslocalreset{#1}%
+ \glsxtrpostlocalreset{#1}%
+}%
+\newcommand*{\glsxtrpostlocalreset}[1]{}
+\newcommand*{\glslocalreseteach}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \@for\@gls@thislabel:=#1\do{%
+ \glsdoifexists{\@gls@thislabel}%
+ {%
+ \@glslocalreset{\@gls@thislabel}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\glslocalunseteach}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \@for\@gls@thislabel:=#1\do{%
+ \glsdoifexists{\@gls@thislabel}%
+ {%
+ \@glslocalunset{\@gls@thislabel}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\GlsXtrEnableEntryCounting}[2]{%
+ \glsenableentrycount
+ \renewcommand*{\gls}{\cgls}%
+ \renewcommand*{\Gls}{\cGls}%
+ \renewcommand*{\glspl}{\cglspl}%
+ \renewcommand*{\Glspl}{\cGlspl}%
+ \renewcommand*{\GLS}{\cGLS}%
+ \renewcommand*{\GLSpl}{\cGLSpl}%
+ \@glsxtr@setentrycountunsetattr{#1}{#2}%
+ \let\GlsXtrEnableEntryCounting\@glsxtr@setentrycountunsetattr
+ \renewcommand*{\GlsXtrEnableEntryUnitCounting}[3]{%
+ \PackageError{glossaries-extra}{\string\GlsXtrEnableEntryUnitCounting\space
+ can't be used with \string\GlsXtrEnableEntryCounting}%
+ {Use one or other but not both commands}}%
+}
+\newcommand*{\@glsxtr@setentrycountunsetattr}[2]{%
+ \@for\@glsxtr@cat:=#1\do
+ {%
+ \ifdefempty{\@glsxtr@cat}{}%
+ {%
+ \glssetcategoryattribute{\@glsxtr@cat}{entrycount}{#2}%
+ }%
+ }%
+}
+\renewcommand*{\glsenableentrycount}{%
+ \appto\@newglossaryentry@defcounters{\@@newglossaryentry@defcounters}%
+ \renewcommand*{\gls@defdocnewglossaryentry}{%
+ \renewcommand*\newglossaryentry[2]{%
+ \PackageError{glossaries}{\string\newglossaryentry\space
+ may only be used in the preamble when entry counting has
+ been activated}{If you use \string\glsenableentrycount\space
+ you must place all entry definitions in the preamble not in
+ the document environment}%
+ }%
+ }%
+ \newcommand*{\glsentrycurrcount}[1]{%
+ \ifcsundef{glo@\glsdetoklabel{##1}@currcount}%
+ {0}{\@gls@entry@field{##1}{currcount}}%
+ }%
+ \newcommand*{\glsentryprevcount}[1]{%
+ \ifcsundef{glo@\glsdetoklabel{##1}@prevcount}%
+ {0}{\@gls@entry@field{##1}{prevcount}}%
+ }%
+ \let\@glsxtr@entrycount@org@unset\glsxtrpostunset
+ \renewcommand*{\glsxtrpostunset}[1]{%
+ \@glsxtr@entrycount@org@unset{##1}%
+ \@gls@increment@currcount{##1}%
+ }%
+ \let\@glsxtr@entrycount@org@localunset\glsxtrpostlocalunset
+ \renewcommand*{\glsxtrpostlocalunset}[1]{%
+ \@glsxtr@entrycount@org@localunset{##1}%
+ \@gls@local@increment@currcount{##1}%
+ }%
+ \let\@glsxtr@entrycount@org@reset\glsxtrpostreset
+ \renewcommand*{\glsxtrpostreset}[1]{%
+ \@glsxtr@entrycount@org@reset{##1}%
+ \csgdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ }%
+ \let\@glsxtr@entrycount@org@localreset\glsxtrpostlocalreset
+ \renewcommand*{\glsxtrpostlocalreset}[1]{%
+ \@glsxtr@entrycount@org@localreset{##1}%
+ \csdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ }%
+ \let\@cgls@\@@cgls@
+ \let\@cglspl@\@@cglspl@
+ \let\@cGls@\@@cGls@
+ \let\@cGlspl@\@@cGlspl@
+ \let\@cGLS@\@@cGLS@
+ \let\@cGLSpl@\@@cGLSpl@
+ \AtEndDocument{\@gls@write@entrycounts}%
+ \renewcommand*{\@gls@entry@count}[2]{%
+ \csgdef{glo@\glsdetoklabel{##1}@prevcount}{##2}%
+ }%
+ \let\glsenableentrycount\relax
+ \renewcommand*{\glsenableentryunitcount}{%
+ \PackageError{glossaries-extra}{\string\glsenableentryunitcount\space
+ can't be used with \string\glsenableentrycount}%
+ {Use one or other but not both commands}%
+ }%
+}
+\renewcommand*{\@gls@write@entrycounts}{%
+ \immediate\write\@auxout
+ {\string\providecommand*{\string\@gls@entry@count}[2]{}}%
+ \count@=0\relax
+ \forallglsentries{\@glsentry}{%
+ \glshasattribute{\@glsentry}{entrycount}%
+ {%
+ \ifglsused{\@glsentry}%
+ {%
+ \immediate\write\@auxout
+ {\string\@gls@entry@count{\@glsentry}{\glsentrycurrcount{\@glsentry}}}%
+ }%
+ {}%
+ \advance\count@ by \@ne
+ }%
+ {}%
+ }%
+ \ifnum\count@=0
+ \GlossariesExtraWarningNoLine{Entry counting has been enabled
+ \MessageBreak with \string\glsenableentrycount\space but the
+ \MessageBreak attribute `entrycount' hasn't
+ \MessageBreak been assigned to any of the defined
+ \MessageBreak entries}%
+ \fi
+}
+\newcommand*{\glsxtrifcounttrigger}[3]{%
+ \glshasattribute{#1}{entrycount}%
+ {%
+ \ifnum\glsentryprevcount{#1}>\glsgetattribute{#1}{entrycount}\relax
+ #3%
+ \else
+ #2%
+ \fi
+ }%
+ {#3}%
+}
+\def\@@cgls@#1#2[#3]{%
+ \glsxtrifcounttrigger{#2}%
+ {%
+ \cglsformat{#2}{#3}%
+ \glsunset{#2}%
+ }%
+ {%
+ \@gls@{#1}{#2}[#3]%
+ }%
+}%
+\def\@@cglspl@#1#2[#3]{%
+ \glsxtrifcounttrigger{#2}%
+ {%
+ \cglsplformat{#2}{#3}%
+ \glsunset{#2}%
+ }%
+ {%
+ \@glspl@{#1}{#2}[#3]%
+ }%
+}%
+\def\@@cGls@#1#2[#3]{%
+ \glsxtrifcounttrigger{#2}%
+ {%
+ \cGlsformat{#2}{#3}%
+ \glsunset{#2}%
+ }%
+ {%
+ \@Gls@{#1}{#2}[#3]%
+ }%
+}%
+\def\@@cGlspl@#1#2[#3]{%
+ \glsxtrifcounttrigger{#2}%
+ {%
+ \cGlsplformat{#2}{#3}%
+ \glsunset{#2}%
+ }%
+ {%
+ \@Glspl@{#1}{#2}[#3]%
+ }%
+}%
+\def\@@cGLS@#1#2[#3]{%
+ \glsxtrifcounttrigger{#2}%
+ {%
+ \cGLSformat{#2}{#3}%
+ \glsunset{#2}%
+ }%
+ {%
+ \@GLS@{#1}{#2}[#3]%
+ }%
+}%
+\def\@@cGLSpl@#1#2[#3]{%
+ \glsxtrifcounttrigger{#2}%
+ {%
+ \cGLSplformat{#2}{#3}%
+ \glsunset{#2}%
+ }%
+ {%
+ \@GLSpl@{#1}{#2}[#3]%
+ }%
+}%
+\def\@cgls@#1#2[#3]{\@gls@{#1}{#2}[#3]}
+\def\@cGls@#1#2[#3]{\@Gls@{#1}{#2}[#3]}
+\def\@cglspl@#1#2[#3]{\@glspl@{#1}{#2}[#3]}
+\def\@cGlspl@#1#2[#3]{\@Glspl@{#1}{#2}[#3]}
+\newrobustcmd*{\cGLS}{\@gls@hyp@opt\@cGLS}
+\newcommand*{\@cGLS}[2][]{%
+ \new@ifnextchar[{\@cGLS@{#1}{#2}}{\@cGLS@{#1}{#2}[]}%
+}
+\def\@cGLS@#1#2[#3]{\@GLS@{#1}{#2}[#3]}
+\newcommand*{\cGLSformat}[2]{%
+ \expandafter\mfirstucMakeUppercase\expandafter{\cglsformat{#1}{#2}}%
+}
+\newrobustcmd*{\cGLSpl}{\@gls@hyp@opt\@cGLSpl}
+\newcommand*{\@cGLSpl}[2][]{%
+ \new@ifnextchar[{\@cGLSpl@{#1}{#2}}{\@cGLSpl@{#1}{#2}[]}%
+}
+\def\@cGLSpl@#1#2[#3]{\@GLSpl@{#1}{#2}[#3]}
+\newcommand*{\cGLSplformat}[2]{%
+ \expandafter\mfirstucMakeUppercase\expandafter{\cglsplformat{#1}{#2}}%
+}
+\renewcommand*{\cglsformat}[2]{%
+ \glsifregular{#1}
+ {\glsentryfirst{#1}}%
+ {\ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}}#2%
+}
+\renewcommand*{\cGlsformat}[2]{%
+ \glsifregular{#1}
+ {\Glsentryfirst{#1}}%
+ {\ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}}#2%
+}
+\renewcommand*{\cglsplformat}[2]{%
+ \glsifregular{#1}
+ {\glsentryfirstplural{#1}}%
+ {\ifglshaslong{#1}{\glsentrylongpl{#1}}{\glsentryfirstplural{#1}}}#2%
+}
+\renewcommand*{\cGlsplformat}[2]{%
+ \glsifregular{#1}
+ {\Glsentryfirstplural{#1}}%
+ {\ifglshaslong{#1}{\Glsentrylongpl{#1}}{\Glsentryfirstplural{#1}}}#2%
+}
+\newcommand*{\@@newglossaryentry@defunitcounters}{%
+ \protected@edef\@glo@countunit{\csuse{@glsxtr@categoryattr@@\@glo@category @unitcount}}%
+ \ifdefvoid\@glo@countunit
+ {}%
+ {%
+ \@glsxtr@ifunitcounter{\@glo@countunit}%
+ {}%
+ {\expandafter\@glsxtr@addunitcounter\expandafter{\@glo@countunit}}%
+ }%
+}
+\newcommand*{\@glsxtr@unitcountlist}{}
+\newcommand*{\@glsxtr@addunitcounter}[1]{%
+ \listadd{\@glsxtr@unitcountlist}{#1}%
+ \ifcsundef{glsxtr@theunit@#1}
+ {%
+ \ifcsdef{theH#1}%
+ {\csdef{glsxtr@theunit@#1}{\csuse{theH#1}}}%
+ {\csdef{glsxtr@theunit@#1}{\csuse{the#1}}}%
+ }%
+ {}%
+}
+\newcommand*{\@glsxtr@ifunitcounter}[3]{%
+ \xifinlist{#1}{\@glsxtr@unitcountlist}{#2}{#3}%
+}
+\newcommand*\@glsxtr@currentunitcount[1]{%
+ glo@\glsdetoklabel{#1}@currunit@\glsgetattribute{#1}{unitcount}.%
+ \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}%
+}
+\newcommand*\@glsxtr@previousunitcount[1]{%
+ glo@\glsdetoklabel{#1}@prevunit@\glsgetattribute{#1}{unitcount}.%
+ \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}%
+}
+\newcommand*{\@gls@increment@currunitcount}[1]{%
+ \glshasattribute{#1}{unitcount}%
+ {%
+ \protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{#1}}%
+ \ifcsundef{\@glsxtr@csname}%
+ {%
+ \csgdef{\@glsxtr@csname}{1}%
+ \listcsxadd
+ {glo@\glsdetoklabel{#1}@unitlist}%
+ {\glsgetattribute{#1}{unitcount}.%
+ \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}%
+ }%
+ }%
+ {%
+ \csxdef{\@glsxtr@csname}%
+ {\number\numexpr\csname\@glsxtr@csname\endcsname+1}%
+ }%
+ }%
+ {}%
+}
+\newcommand*{\@gls@local@increment@currunitcount}[1]{%
+ \glshasattribute{#1}{unitcount}%
+ {%
+ \protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{#1}}%
+ \ifcsundef{\@glsxtr@csname}%
+ {%
+ \csdef{\@glsxtr@csname}{1}%
+ \listcseadd
+ {glo@\glsdetoklabel{#1}@unitlist}%
+ {\glsgetattribute{#1}{unitcount}.%
+ \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}%
+ }%
+ }%
+ {%
+ \csedef{\@glsxtr@csname}%
+ {\number\numexpr\csname\@glsxtr@csname\endcsname+1}%
+ }%
+ }%
+ {}%
+}
+\newcommand*{\@glsxtr@currunitcount}[2]{%
+ \ifcsundef
+ {glo@\glsdetoklabel{#1}@currunit@#2}%
+ {0}%
+ {\csuse{glo@\glsdetoklabel{#1}@currunit@#2}}%
+}%
+\newcommand*{\@glsxtr@prevunitcount}[2]{%
+ \ifcsundef
+ {glo@\glsdetoklabel{#1}@prevunit@#2}%
+ {0}%
+ {\csuse{glo@\glsdetoklabel{#1}@prevunit@#2}}%
+}%
+\newcommand*{\glsenableentryunitcount}{%
+ \appto\@newglossaryentry@defcounters{\@@newglossaryentry@defunitcounters}%
+ \renewcommand*{\gls@defdocnewglossaryentry}{%
+ \renewcommand*\newglossaryentry[2]{%
+ \PackageError{glossaries}{\string\newglossaryentry\space
+ may only be used in the preamble when entry counting has
+ been activated}{If you use \string\glsenableentryunitcount\space
+ you must place all entry definitions in the preamble not in
+ the document environment}%
+ }%
+ }%
+ \newcommand*{\glsentrycurrcount}[1]{%
+ \@glsxtr@currunitcount{##1}{\glsgetattribute{##1}{unitcount}.%
+ \csuse{glsxtr@theunit@\glsgetattribute{##1}{unitcount}}}%
+ }%
+ \newcommand*{\glsentryprevcount}[1]{%
+ \@glsxtr@prevunitcount{##1}{\glsgetattribute{##1}{unitcount}.%
+ \csuse{glsxtr@theunit@\glsgetattribute{##1}{unitcount}}}%
+ }%
+ \newcommand*{\glsentryprevtotalcount}[1]{%
+ \ifcsundef{glo@\glsdetoklabel{##1}@prevunittotal}%
+ {0}%
+ {%
+ \number\csuse{glo@\glsdetoklabel{##1}@prevunittotal}
+ }%
+ }%
+ \newcommand*{\glsentryprevmaxcount}[1]{%
+ \ifcsundef{glo@\glsdetoklabel{##1}@prevunitmax}%
+ {0}%
+ {%
+ \number\csuse{glo@\glsdetoklabel{##1}@prevunitmax}
+ }%
+ }%
+ \let\@glsxtr@entryunitcount@org@unset\glsxtrpostunset
+ \renewcommand*{\glsxtrpostunset}[1]{%
+ \@glsxtr@entryunitcount@org@unset{##1}%
+ \@gls@increment@currunitcount{##1}%
+ }%
+ \let\@glsxtr@entryunitcount@org@localunset\glsxtrpostlocalunset
+ \renewcommand*{\glsxtrpostlocalunset}[1]{%
+ \@glsxtr@entryunitcount@org@localunset{##1}%
+ \@gls@local@increment@currunitcount{##1}%
+ }%
+ \let\@glsxtr@entryunitcount@org@reset\glsxtrpostreset
+ \renewcommand*{\glsxtrpostreset}[1]{%
+ \glshasattribute{##1}{unitcount}%
+ {%
+ \protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}%
+ \ifcsundef{\@glsxtr@csname}%
+ {}%
+ {\csgdef{\@glsxtr@csname}{0}}%
+ }%
+ {}%
+ }%
+ \let\@glsxtr@entryunitcount@org@localreset\glsxtrpostlocalreset
+ \renewcommand*{\glsxtrpostlocalreset}[1]{%
+ \@glsxtr@entryunitcount@org@localreset{##1}%
+ \glshasattribute{##1}{unitcount}%
+ {%
+ \protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}%
+ \ifcsundef{\@glsxtr@csname}%
+ {}%
+ {\csdef{\@glsxtr@csname}{0}}%
+ }%
+ {}%
+ }%
+ \let\@cgls@\@@cgls@
+ \let\@cglspl@\@@cglspl@
+ \let\@cGls@\@@cGls@
+ \let\@cGlspl@\@@cGlspl@
+ \let\@cGLS@\@@cGLS@
+ \let\@cGLSpl@\@@cGLSpl@
+ \AtEndDocument{\@gls@write@entryunitcounts}%
+ \renewcommand*{\@gls@entry@unitcount}[3]{%
+ \csgdef{glo@\glsdetoklabel{##1}@prevunit@##3}{##2}%
+ \ifcsundef{glo@\glsdetoklabel{##1}@prevunittotal}%
+ {\csgdef{glo@\glsdetoklabel{##1}@prevunittotal}{##2}}%
+ {%
+ \csxdef{glo@\glsdetoklabel{##1}@prevunittotal}{
+ \number\numexpr\csuse{glo@\glsdetoklabel{##1}@prevunittotal}+##2}%
+ }%
+ \ifcsundef{glo@\glsdetoklabel{##1}@prevunitmax}%
+ {\csgdef{glo@\glsdetoklabel{##1}@prevunitmax}{##2}}%
+ {%
+ \ifnum\csuse{glo@\glsdetoklabel{##1}@prevunitmax}<##2
+ \csgdef{glo@\glsdetoklabel{##1}@prevunitmax}{##2}%
+ \fi
+ }%
+ }%
+ \let\glsenableentryunitcount\relax
+ \renewcommand*{\glsenableentrycount}{%
+ \PackageError{glossaries-extra}{\string\glsenableentrycount\space
+ can't be used with \string\glsenableentryunitcount}%
+ {Use one or other but not both commands}%
+ }%
+}
+\@onlypreamble\glsenableentryunitcount
+\newcommand*{\@gls@entry@unitcount}[3]{}
+\newcommand*{\@gls@write@entryunitcounts@do}[1]{%
+ \immediate\write\@auxout
+ {\string\@gls@entry@unitcount
+ {\@glsentry}%
+ {\@glsxtr@currunitcount{\@glsentry}{#1}%
+ }%
+ {#1}}%
+}
+\newcommand*{\@gls@write@entryunitcounts}{%
+ \immediate\write\@auxout
+ {\string\providecommand*{\string\@gls@entry@unitcount}[3]{}}%
+ \count@=0\relax
+ \forallglsentries{\@glsentry}{%
+ \glshasattribute{\@glsentry}{unitcount}%
+ {%
+ \ifglsused{\@glsentry}%
+ {%
+ \forlistcsloop
+ {\@gls@write@entryunitcounts@do}%
+ {glo@\glsdetoklabel{\@glsentry}@unitlist}%
+ }%
+ {}%
+ \advance\count@ by \@ne
+ }%
+ {}%
+ }%
+ \ifnum\count@=0
+ \GlossariesExtraWarningNoLine{Entry counting has been enabled
+ \MessageBreak with \string\glsenableentryunitcount\space but the
+ \MessageBreak attribute `unitcount' hasn't
+ \MessageBreak been assigned to any of the defined
+ \MessageBreak entries}%
+ \fi
+}
+\newcommand*{\GlsXtrEnableEntryUnitCounting}[3]{%
+ \glsenableentryunitcount
+ \renewcommand*{\gls}{\cgls}%
+ \renewcommand*{\Gls}{\cGls}%
+ \renewcommand*{\glspl}{\cglspl}%
+ \renewcommand*{\Glspl}{\cGlspl}%
+ \renewcommand*{\GLS}{\cGLS}%
+ \renewcommand*{\GLSpl}{\cGLSpl}%
+ \@glsxtr@setentryunitcountunsetattr{#1}{#2}{#3}%
+ \let\GlsXtrEnableEntryUnitCounting\@glsxtr@setentryunitcountunsetattr
+ \renewcommand*{\GlsXtrEnableEntryCounting}[2]{%
+ \PackageError{glossaries-extra}{\string\GlsXtrEnableEntryCounting\space
+ can't be used with \string\GlsXtrEnableEntryUnitCounting}%
+ {Use one or other but not both commands}}%
+}
+\newcommand*{\@glsxtr@setentryunitcountunsetattr}[3]{%
+ \@for\@glsxtr@cat:=#1\do
+ {%
+ \ifdefempty{\@glsxtr@cat}{}%
+ {%
+ \glssetcategoryattribute{\@glsxtr@cat}{entrycount}{#2}%
+ \glssetcategoryattribute{\@glsxtr@cat}{unitcount}{#3}%
+ }%
+ }%
+}
+\renewcommand*{\SetGenericNewAcronym}{%
+ \ifdefequal\@addtoacronymlists\@glsxtr@org@addtoacronynlists
+ {}%
+ {%
+ \GlossariesWarning{\string\SetGenericNewAcronym\space used
+ without restoring base acronym functions with
+ \string\RestoreAcronyms}%
+ }%
+ \let\@Gls@entryname\@Gls@acrentryname
+ \renewcommand{\newacronym}[4][]{%
+ \ifdefempty{\@glsacronymlists}%
+ {%
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ }%
+ {}%
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \protected@edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\expandonce{\acronymentry{##2}}},%
+ sort={\acronymsort{\the\glsshorttok}{\the\glslongtok}},%
+ text={\the\glsshorttok},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ category=acronym,
+ \GenericAcronymFields,%
+ \the\glskeylisttok
+ }%
+ }%
+ \@do@newglossaryentry
+ }%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\genacrfullformat{##2}{##3}}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\Genacrfullformat{##2}{##3}}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \mfirstucMakeUppercase{\genacrfullformat{##2}{##3}}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\genplacrfullformat{##2}{##3}}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\Genplacrfullformat{##2}{##3}}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \mfirstucMakeUppercase{\genplacrfullformat{##2}{##3}}}}%
+ \renewcommand*{\glsentryfull}[1]{\genacrfullformat{##1}{}}%
+ \renewcommand*{\Glsentryfull}[1]{\Genacrfullformat{##1}{}}%
+ \renewcommand*{\glsentryfullpl}[1]{\genplacrfullformat{##1}{}}%
+ \renewcommand*{\Glsentryfullpl}[1]{\Genplacrfullformat{##1}{}}%
+}
+\let\@glsxtr@org@setacronymstyle\setacronymstyle
+\let\@glsxtr@org@newacronymstyle\newacronymstyle
+\let\@glsxtr@acronymlists\@glsacronymlists
+\let\@glsxtr@org@addtoacronynlists\@addtoacronymlists
+\let\@glsxtr@org@setacronymlists\SetAcronymLists
+\newcommand{\@glsxtr@abbrlists}{}
+\newcommand*{\forallabbreviationlists}[2]{%
+ \@for#1:=\@glsxtr@abbrlists\do{\ifdefempty{#1}{}{#2}}%
+}
+\newcommand*{\@glsxtr@addabbreviationlist}[1]{%
+ \protected@edef\@glo@type{#1}%
+ \ifdefempty\@glsxtr@abbrlists
+ {\let\@glsxtr@abbrlists\@glo@type}%
+ {%
+ \ifdefequal\@glsxtr@abbrlists\@glo@type
+ {}%
+ {%
+ \expandafter\DTLifinlist\expandafter{\@glo@type}{\@glsxtr@abbrlists}{}%
+ {\protected@eappto\@glsxtr@abbrlists{,\@glo@type}}%
+ }%
+ }%
+}
+\renewcommand*{\forallacronyms}[2]{%
+ \@glsxtr@base@acrcmd\forallacronyms\forallabbreviationlists
+ \@for#1:=\@glsacronymlists\do{\ifx#1\@empty\else#2\fi}%
+}
+\newcommand*{\MakeAcronymsAbbreviations}{%
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \csgdef{gls@\@gls@type @entryfmt}{\glsentryfmt}%
+ }%
+ \let\@glsxtr@acronymlists\@glsacronymlists
+ \let\@glsacronymlists\@empty
+ \let\@addtoacronymlists\@gobble
+ \let\SetAcronymLists\@gobble
+ \let\@glsxtr@base@acrcmd\@@glsxtr@base@acrcmd@warn
+ \renewcommand*{\newacronym}[4][]{%
+ \glsxtr@newabbreviation{type=\acronymtype,category=acronym,##1}{##2}{##3}{##4}%
+ }%
+ \renewcommand*{\firstacronymfont}[1]{\glsfirstabbrvfont{##1}}%
+ \renewcommand*{\acronymfont}[1]{\glsabbrvfont{##1}}%
+ \renewcommand*{\setacronymstyle}[1]{%
+ \PackageError{glossaries-extra}{\string\setacronymstyle{##1}
+ unavailable.
+ Use \string\setabbreviationstyle[acronym]\space instead.
+ The original acronym interface can be restored with
+ \string\RestoreAcronyms}{}%
+ }%
+ \renewcommand*{\newacronymstyle}[1]{%
+ \GlossariesExtraWarning{New acronym style `##1' won't be
+ available unless you restore the original acronym interface with
+ \string\RestoreAcronyms}%
+ \@glsxtr@org@newacronymstyle{##1}%
+ }%
+}
+\MakeAcronymsAbbreviations
+\newcommand*{\RestoreAcronyms}{%
+ \let\@glsacronymlists\@glsxtr@acronymlists
+ \let\@addtoacronymlists\@glsxtr@org@addtoacronynlists
+ \let\SetAcronymLists\@glsxtr@org@setacronymlists
+ \let\@glsxtr@base@acrcmd\@gobbletwo
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetDefaultAcronymDisplayStyle{\@gls@type}%
+ }%
+ \SetGenericNewAcronym
+ \renewcommand{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand{\acronymfont}[1]{##1}%
+ \let\setacronymstyle\@glsxtr@org@setacronymstyle
+ \let\newacronymstyle\@glsxtr@org@newacronymstyle
+ \renewcommand*\@gls@link@checkfirsthyper{%
+ \ifglsused{\glslabel}%
+ {\let\glsxtrifwasfirstuse\@secondoftwo}
+ {\let\glsxtrifwasfirstuse\@firstoftwo}%
+ \@glsxtr@org@checkfirsthyper
+ }
+ \glssetcategoryattribute{acronym}{regular}{false}%
+ \setacronymstyle{long-short}%
+}
+\renewcommand*{\glsacspace}[1]{%
+ \settowidth{\dimen@}{(\firstacronymfont{\glsentryshort{#1}})}%
+ \ifdim\dimen@<\glsacspacemax~\else\space\fi
+}
+\newcommand*{\glsacspacemax}{3em}
+\newcommand*{\@glsxtr@reg@glosslist}{}
+\let\@glsxtr@org@makeglossaries\makeglossaries
+\providecommand\@makeglossaries@warn@noprintglossary{%
+ \ifdefstring{\@glo@types}{,}%
+ {%
+ \GlossariesWarningNoLine{No glossaries have been defined}%
+ }%
+ {%
+ \GlossariesWarningNoLine{No \string\printglossary\space
+ or \string\printglossaries\space
+ found. ^^J(Remove \string\makeglossaries\space if you
+ don't want any glossaries.) ^^JThis document will not
+ have a glossary}%
+ }%
+}%
+\providecommand{\@domakeglossaries}[1]{#1}
+\renewcommand*{\makeglossaries}[1][]{%
+ \@domakeglossaries
+ {%
+ \@glsxtr@if@record@only
+ {%
+ \PackageError{glossaries-extra}{\string\makeglossaries\space
+ not permitted\MessageBreak with record=\@glsxtr@record@setting\space
+ package option}%
+ {You may only use \string\makeglossaries\space with
+ record=off or record=hybrid options}%
+ }%
+ {%
+ \ifblank{#1}%
+ {%
+ \@glsxtr@org@makeglossaries
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex
+ \let\warn@noprintglossary\@glsxtr@warn@hybrid@noprintgloss
+ \fi
+ }%
+ {%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex
+ \PackageError{glossaries-extra}{\string\makeglossaries[#1]\space
+ not permitted\MessageBreak with record=\@glsxtr@record@setting\space package option}%
+ {You may only use the hybrid \string\makeglossaries[...]\space with
+ record=off option}%
+ \else
+ \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}%
+ \protected@edef\@glsxtr@reg@glosslist{#1}%
+ \ifundef{\glswrite}{\newwrite\glswrite}{}%
+ \protected@write\@auxout{}{\string\providecommand
+ \string\@glsorder[1]{}}
+ \protected@write\@auxout{}{\string\providecommand
+ \string\@istfilename[1]{}}
+ \protected@write\@auxout{}{\string\@istfilename{\istfilename}}%
+ \protected@write\@auxout{}{\string\@glsorder{\glsorder}}
+ \protected@write\@auxout{}{\string\glsxtr@makeglossaries{#1}}
+ \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}%
+ \@for\@glo@type:=#1\do{%
+ \ifdefempty{\@glo@type}{}{\@makeglossary{\@glo@type}}%
+ }%
+ \renewcommand*\newglossary[4][]{%
+ \PackageError{glossaries}{New glossaries
+ must be created before \string\makeglossaries}{You need
+ to move \string\makeglossaries\space after all your
+ \string\newglossary\space commands}}%
+ \let\@makeglossary\@gobble
+ \renewcommand\makeglossaries[1][]{}%
+ \@disable@onlypremakeg
+ \let\gls@checkseeallowed\relax
+ \renewcommand*{\@do@seeglossary}[2]{%
+ \glsdoifexists{##1}%
+ {%
+ \protected@edef\@gls@label{\glsdetoklabel{##1}}%
+ \protected@edef\@gls@type{\csname glo@\@gls@label @type\endcsname}%
+ \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}%
+ {\@glsxtr@org@doseeglossary{##1}{##2}}%
+ {%
+ \@@glsxtrwrglossmark
+ \protected@write\@auxout{}{%
+ \string\@gls@reference
+ {\gls@type}{\@gls@label}{\string\glsseeformat##2{}}%
+ }%
+ }%
+ }%
+ }%
+ \let\@glsxtr@@do@@wrglossary\@@do@@wrglossary
+ \def\@@do@@wrglossary{%
+ \protected@edef\@gls@type{\csname glo@\@gls@label @type\endcsname}%
+ \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}%
+ {\@glsxtr@@do@@wrglossary}%
+ {\gls@noidxglossary}%
+ }%
+ \let\warn@nomakeglossaries\relax
+ \let\warn@noprintglossary\@makeglossaries@warn@noprintglossary
+ \renewcommand{\@gls@noref@warn}[1]{%
+ \protected@edef\@gls@type{##1}%
+ \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}%
+ {%
+ \GlossariesExtraWarning{Can't use
+ \string\printnoidxglossary[type={\@gls@type}]
+ when `\@gls@type' is listed in the optional argument of
+ \string\makeglossaries}%
+ }%
+ {%
+ \GlossariesWarning{Empty glossary for
+ \string\printnoidxglossary[type={##1}].
+ Rerun may be required (or you may have forgotten to use
+ commands like \string\gls)}%
+ }%
+ }%
+ \renewcommand*{\glsdisplaynumberlist}[1]{%
+ \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}%
+ {\@glsxtr@idx@displaynumberlist{##1}}%
+ {\@glsxtr@noidx@displaynumberlist{##1}}%
+ }%
+ \renewcommand*{\glsentrynumberlist}[1]{%
+ \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}%
+ {\@glsxtr@idx@entrynumberlist{##1}}%
+ {\@glsxtr@noidx@entrynumberlist{##1}}%
+ }%
+ \renewcommand*{\glsnumberlistloop}[2]{%
+ \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}%
+ {%
+ \PackageError{glossaries-extra}{\string\glsnumberlistloop\space
+ not available for glossary `##1'}{}%
+ }%
+ {\@glsxtr@noidx@numberlistloop{##1}{##2}}%
+ }%
+ \renewcommand*{\glsprestandardsort}[3]{%
+ \expandafter\DTLifinlist\expandafter{##2}{\@glsxtr@reg@glosslist}%
+ {%
+ \glsdosanitizesort
+ }%
+ {%
+ \ifglssanitizesort
+ \@gls@noidx@sanitizesort
+ \else
+ \@gls@noidx@nosanitizesort
+ \fi
+ }%
+ }%
+ \renewcommand*\new@glossaryentry[2]{%
+ \PackageError{glossaries-extra}{Glossary entries must be defined
+ in the preamble\MessageBreak when you use the optional argument
+ of \string\makeglossaries}{Either move your definitions to the
+ preamble or don't use the optional argument of
+ \string\makeglossaries}%
+ }%
+ \let\@glo@assign@sortkey\@glsxtr@mixed@assign@sortkey
+ \renewcommand*{\@printgloss@setsort}{%
+ \expandafter\@glsxtr@gettype\expandafter,\@glsxtr@printglossopts,%
+ type=\glsdefaulttype,\@end@glsxtr@gettype
+ \def\@glo@sorttype{\@glo@default@sorttype}%
+ }%
+ \ifglsautomake
+ \renewcommand*{\@gls@doautomake}{%
+ \@for\@gls@type:=\@glsxtr@reg@glosslist\do{%
+ \ifdefempty{\@gls@type}{}{\@gls@automake{\@gls@type}}%
+ }%
+ }%
+ \fi
+ \ifdef\@glo@check@sortallowed{\@glo@check@sortallowed\makeglossaries}{}%
+ \fi
+ }%
+ }%
+ }%
+}
+\ifdef\@printgloss@checkexists
+{\newcommand{\glsxtr@printgloss@checkexists}{\@printgloss@checkexists}}
+{\newcommand{\glsxtr@printgloss@checkexists}[2]{#2}}
+\newcommand{\@glsxtr@orgprintglossary}[2]{%
+ \def\@glo@type{\glsdefaulttype}%
+ \def\glossarytitle{%
+ \ifcsdef{@glotype@\@glo@type @title}%
+ {\csuse{@glotype@\@glo@type @title}}%
+ {\glossaryname}}%
+ \def\glossarytoctitle{\glossarytitle}%
+ \let\org@glossarytitle\glossarytitle
+ \def\@glossarystyle{%
+ \ifx\@glossary@default@style\relax
+ \GlossariesWarning{No default glossary style provided \MessageBreak
+ for the glossary `\@glo@type'. \MessageBreak
+ Using deprecated fallback. \MessageBreak
+ To fix this set the style with \MessageBreak
+ \string\setglossarystyle\space or use the \MessageBreak
+ style key=value option}%
+ \fi
+ }%
+ \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}%
+ \let\@org@glossaryentrynumbers\glossaryentrynumbers
+ \bgroup
+ \@printgloss@setsort
+ \setkeys{printgloss}{#1}%
+ \ifx\glossarytitle\org@glossarytitle
+ \else
+ \cslet{@glotype@\@glo@type @title}{\glossarytitle}%
+ \fi
+ \let\currentglossary\@glo@type
+ \let\org@glossaryentrynumbers\glossaryentrynumbers
+ \let\glsnonextpages\@glsnonextpages
+ \let\glsnextpages\@glsnextpages
+ \glsxtractivatenopost
+ \gls@dotoctitle
+ \@glossarystyle
+ \let\gls@org@glossaryentryfield\glossentry
+ \let\gls@org@glossarysubentryfield\subglossentry
+ \renewcommand{\glossentry}[1]{%
+ \protected@xdef\glscurrententrylabel{\glsdetoklabel{##1}}%
+ \gls@org@glossaryentryfield{##1}%
+ }%
+ \renewcommand{\subglossentry}[2]{%
+ \protected@xdef\glscurrententrylabel{\glsdetoklabel{##2}}%
+ \gls@org@glossarysubentryfield{##1}{##2}%
+ }%
+ \@gls@preglossaryhook
+ \glsxtr@printgloss@checkexists{\@glo@type}{#2}%
+ \egroup
+ \global\let\glossaryentrynumbers\@org@glossaryentrynumbers
+ \global\let\warn@noprintglossary\relax
+}
+\newcommand*{\glsxtractivatenopost}{%
+ \let\nopostdesc\@nopostdesc
+ \let\glsxtrnopostpunc\@glsxtr@nopostpunc
+}
+\newrobustcmd*{\glsxtrnopostpunc}{}
+\newcommand{\@glsxtr@nopostpunc}{%
+ \let\@@glsxtr@org@postdescription\glspostdescription
+ \ifglsnopostdot
+ \renewcommand{\glspostdescription}{%
+ \glsnopostdottrue
+ \let\glspostdescription\@@glsxtr@org@postdescription
+ \let\glsxtrrestorepostpunc\@glsxtr@restore@postpunc
+ \glsxtrpostdescription
+ \@glsxtr@nopostpunc@postdesc}%
+ \else
+ \renewcommand{\glspostdescription}{%
+ \let\glspostdescription\@@glsxtr@org@postdescription
+ \let\glsxtrrestorepostpunc\@glsxtr@restore@postpunc
+ \glsxtrpostdescription
+ \@glsxtr@nopostpunc@postdesc}%
+ \fi
+ \glsnopostdotfalse
+}
+\newcommand*{\@glsxtr@nopostpunc@postdesc}{}
+\newcommand*{\@glsxtr@restore@postpunc}{%
+ \def\@glsxtr@nopostpunc@postdesc{%
+ \@glsxtr@org@postdescription
+ \let\@glsxtr@nopostpunc@postdesc\@empty
+ \let\glsxtrrestorepostpunc\@empty
+ }%
+}
+\newcommand*{\glsxtrrestorepostpunc}{}
+\renewcommand{\@printglossary}[2]{%
+ \def\@glsxtr@printglossopts{#1}%
+ \@glsxtr@orgprintglossary{#1}{#2}%
+}
+\define@choicekey{printgloss}{target}
+[\@glsxtr@printglossval\@glsxtr@printglossnr]%
+{true,false}[true]%
+{%
+ \ifcase\@glsxtr@printglossnr
+ \def\@glstarget{\glsdohypertarget}%
+ \else
+ \let\@glstarget\@secondoftwo
+ \fi
+}
+\newcommand{\@glsxtrhypernameprefix}{}
+\define@key{printgloss}{targetnameprefix}{%
+ \renewcommand{\@glsxtrhypernameprefix}{#1}%
+}
+\define@key{printgloss}{prefix}{%
+ \renewcommand{\glolinkprefix}{#1}%
+}
+\define@key{printgloss}{label}{%
+ \glsxtrsetglossarylabel{#1}%
+}
+\newcommand{\glsxtrsetglossarylabel}[1]{%
+ \renewcommand*{\@@glossaryseclabel}{%
+ \protected@edef\@currentlabelname{\glossarytoctitle}%
+ \label{#1}%
+ }%
+}
+\newcount\@glsxtr@leveloffset
+\define@key{printgloss}{leveloffset}{%
+ \@glsxtr@assign@leveloffset#1\relax
+}
+\newcommand*{\@glsxtr@assign@leveloffset}{%
+ \@ifnextchar+{\p@glsxtr@assign@leveloffset}{\np@glsxtr@assign@leveloffset}%
+}
+\newcommand*{\p@glsxtr@assign@leveloffset}[1]{%
+ \@ifnextchar+{\pp@glsxtr@assign@leveloffset}{\np@glsxtr@assign@leveloffset}%
+}
+\def\np@glsxtr@assign@leveloffset#1\relax{\@glsxtr@leveloffset=#1\relax}
+\def\pp@glsxtr@assign@leveloffset#1\relax{\advance\@glsxtr@leveloffset by #1\relax}
+\define@boolkey{printgloss}[glsxtr@printgloss@]{groups}[true]{}
+\glsxtr@printgloss@groupstrue
+\let\@glsxtr@org@glsdohypertarget\glsdohypertarget
+\renewcommand{\glsdohypertarget}[2]{%
+ \@glsxtr@org@glsdohypertarget{\@glsxtrhypernameprefix#1}{#2}%
+}
+\ifx\@glstarget\@glsxtr@org@glsdohypertarget
+ \def\@glstarget{\glsdohypertarget}%
+\fi
+\newcommand{\@glsxtr@do@org@target}[2]{%
+ {%
+ \let\glsdohypertarget\@glsxtr@org@glsdohypertarget
+ \@glstarget{#1}{#2}%
+ }%
+}
+\newcommand*{\glsxtr@makeglossaries}[1]{}
+\def\@glsxtr@gettype#1,type=#2,#3\@end@glsxtr@gettype{%
+ \def\@glo@type{#2}%
+}
+\newcommand\@glsxtr@mixed@assign@sortkey[1]{%
+ \protected@edef\@glo@type{\@glo@type}%
+ \expandafter\DTLifinlist\expandafter{\@glo@type}{\@glsxtr@reg@glosslist}%
+ {%
+ \@glo@no@assign@sortkey{#1}%
+ }%
+ {%
+ \@@glo@assign@sortkey{#1}%
+ }%
+}%
+\let\@glsxtr@idx@displaynumberlist\glsdisplaynumberlist
+\newcommand*{\@glsxtr@noidx@displaynumberlist}[1]{%
+ \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}%
+ \ifdef\@gls@loclist
+ {%
+ \def\@gls@noidxloclist@sep{%
+ \def\@gls@noidxloclist@sep{%
+ \def\@gls@noidxloclist@sep{%
+ \glsnumlistsep
+ }%
+ \def\@gls@noidxloclist@finalsep{\glsnumlistlastsep}%
+ }%
+ }%
+ \def\@gls@noidxloclist@finalsep{}%
+ \def\@gls@noidxloclist@prev{}%
+ \forlistloop{\glsnoidxdisplayloclisthandler}{\@gls@loclist}%
+ \@gls@noidxloclist@finalsep
+ \@gls@noidxloclist@prev
+ }%
+ {%
+ \glsxtrundeftag
+ \glsdoifexists{#1}%
+ {%
+ \GlossariesWarning{Missing location list for `#1'. Either
+ a rerun is required or you haven't referenced the entry.}%
+ }%
+ }%
+}%
+
+\newcommand*{\@glsxtr@noidx@numberlistloop}[3]{%
+ \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}%
+ \let\@gls@org@glsnoidxdisplayloc\glsnoidxdisplayloc
+ \let\@gls@org@glsseeformat\glsseeformat
+ \let\glsnoidxdisplayloc#2\relax
+ \let\glsseeformat#3\relax
+ \ifdef\@gls@loclist
+ {%
+ \forlistloop{\glsnoidxnumberlistloophandler}{\@gls@loclist}%
+ }%
+ {%
+ \glsxtrundeftag
+ \glsdoifexists{#1}%
+ {%
+ \GlossariesWarning{Missing location list for `##1'. Either
+ a rerun is required or you haven't referenced the entry.}%
+ }%
+ }%
+ \let\glsnoidxdisplayloc\@gls@org@glsnoidxdisplayloc
+ \let\glsseeformat\@gls@org@glsseeformat
+}%
+\newcommand*{\@glsxtr@noidx@entrynumberlist}[1]{%
+ \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}%
+ \ifdef\@gls@loclist
+ {%
+ \glsnoidxloclist{\@gls@loclist}%
+ }%
+ {%
+ \glsxtrundeftag
+ \glsdoifexists{#1}%
+ {%
+ \GlossariesWarning{Missing location list for `#1'. Either
+ a rerun is required or you haven't referenced the entry.}%
+ }%
+ }%
+}%
+\newcommand*{\@glsxtr@idx@entrynumberlist}[1]{\glsentrynumberlist{#1}}
+\renewcommand*{\@gls@noidx@getgrouptitle}[2]{%
+ \protected@edef\@glsxtr@titlelabel{#1}%
+ \ifdefvoid\@glsxtr@titlelabel
+ {}%
+ {%
+ \protected@edef\@glsxtr@titlelabel{\csuse{glsxtr@grouptitle@#1}}%
+ }%
+ \ifdefvoid{\@glsxtr@titlelabel}%
+ {%
+ \DTLifint{#1}%
+ {%
+ \ifnum#1<256\relax
+ \edef#2{\char#1\relax}%
+ \else
+ \edef#2{#1}%
+ \fi
+ }%
+ {%
+ \ifcsundef{#1groupname}%
+ {\def#2{#1}}%
+ {\letcs#2{#1groupname}}%
+ }%
+ }%
+ {%
+ \let#2\@glsxtr@titlelabel
+ }%
+}
+\let\glsxtr@org@getgrouptitle\@gls@getgrouptitle
+\newrobustcmd{\glsxtrgetgrouptitle}[2]{%
+ \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}%
+ \@onelevel@sanitize\@glsxtr@titlelabel
+ \ifcsdef{\@glsxtr@titlelabel}
+ {\letcs{#2}{\@glsxtr@titlelabel}}%
+ {\glsxtr@org@getgrouptitle{#1}{#2}}%
+}
+\let\@gls@getgrouptitle\glsxtrgetgrouptitle
+\newcommand{\glsxtrsetgrouptitle}[2]{%
+ \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}%
+ \@onelevel@sanitize\@glsxtr@titlelabel
+ \protected@csxdef{\@glsxtr@titlelabel}{#2}%
+}
+\newcommand{\glsxtrlocalsetgrouptitle}[2]{%
+ \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}%
+ \@onelevel@sanitize\@glsxtr@titlelabel
+ \protected@csedef{\@glsxtr@titlelabel}{#2}%
+}
+\renewcommand*{\glsnavigation}{%
+ \def\@gls@between{}%
+ \ifcsundef{@gls@hypergrouplist@\@glo@type}%
+ {%
+ \def\@gls@list{}%
+ }%
+ {%
+ \expandafter\let\expandafter\@gls@list
+ \csname @gls@hypergrouplist@\@glo@type\endcsname
+ }%
+ \@for\@gls@tmp:=\@gls@list\do{%
+ \@gls@between
+ \glsxtrgetgrouptitle{\@gls@tmp}{\@gls@grptitle}%
+ \glsnavhyperlink{\@gls@tmp}{\@gls@grptitle}%
+ \let\@gls@between\glshypernavsep
+ }%
+}
+\renewcommand*{\@print@noidx@glossary}{%
+ \ifcsdef{@glsref@\@glo@type}%
+ {%
+ \ifcsdef{@glo@sortmacro@\@glo@sorttype}%
+ {%
+ \csuse{@glo@sortmacro@\@glo@sorttype}{\@glo@type}%
+ }%
+ {%
+ \PackageError{glossaries}{Unknown sort handler `\@glo@sorttype'}{}%
+ }%
+ \glossarysection[\glossarytoctitle]{\glossarytitle}%
+ \glossarypreamble
+ \def\@gls@currentlettergroup{}%
+ \begin{theglossary}%
+ \glossaryheader
+ \glsresetentrylist
+ \forlistcsloop{\@gls@noidx@do}{@glsref@\@glo@type}%
+ \end{theglossary}%
+ \glossarypostamble
+ }%
+ {%
+ \glsxtrifemptyglossary{\@glo@type}%
+ {}%
+ {\glossarysection[\glossarytoctitle]{\glossarytitle}}%
+ \@gls@noref@warn{\@glo@type}%
+ }%
+}
+\renewcommand*{\glsnoidxdisplayloc}[4]{%
+ \setentrycounter[#1]{#2}%
+ \@glsxtr@display@loc#3\empty\end@glsxtr@display@loc{#4}%
+}
+\def\@glsxtr@display@loc#1#2\end@glsxtr@display@loc#3{%
+ \ifx#1(\relax
+ \glsxtrdisplaystartloc{#2}{#3}%
+ \else
+ \ifx#1)\relax
+ \glsxtrdisplayendloc{#2}{#3}%
+ \else
+ \glsxtrdisplaysingleloc{#1#2}{#3}%
+ \fi
+ \fi
+}
+\newcommand*{\glsxtrdisplaysingleloc}[2]{%
+ \csuse{#1}{#2}%
+}
+\newcommand*{\glsxtrdisplaystartloc}[2]{%
+ \protected@edef\glsxtrlocrangefmt{#1}%
+ \ifx\glsxtrlocrangefmt\empty
+ \def\glsxtrlocrangefmt{glsnumberformat}%
+ \fi
+ \expandafter\glsxtrdisplaysingleloc
+ \expandafter{\glsxtrlocrangefmt}{#2}%
+}
+\newcommand*{\glsxtrdisplayendloc}[2]{%
+ \protected@edef\@glsxtr@tmp{#1}%
+ \ifdefempty{\@glsxtr@tmp}{\def\@glsxtr@tmp{glsnumberformat}}{}%
+ \ifx\glsxtrlocrangefmt\@glsxtr@tmp
+ \else
+ \GlossariesExtraWarning{Mismatched end location range
+ (start=\glsxtrlocrangefmt, end=\@glsxtr@tmp)}%
+ \fi
+ \expandafter\glsxtrdisplayendlochook\expandafter{\@glsxtr@tmp}{#2}%
+ \expandafter\glsxtrdisplaysingleloc
+ \expandafter{\glsxtrlocrangefmt}{#2}%
+ \def\glsxtrlocrangefmt{}%
+}
+\newcommand*{\glsxtrdisplayendlochook}[2]{}
+\newcommand*{\glsxtrlocrangefmt}{}
+\renewcommand*{\setentrycounter}[2][]{%
+ \def\glsxtrcounterprefix{#1}%
+ \ifx\glsxtrcounterprefix\@empty
+ \def\@glo@counterprefix{.}%
+ \else
+ \def\@glo@counterprefix{.#1.}%
+ \fi
+ \def\glsentrycounter{#2}%
+}
+\def\@gls@removespaces#1 #2\@nil{%
+ \toks@=\expandafter{\the\toks@#1}%
+ \ifx\\#2\\%
+ \edef\@glo@tmp{\the\toks@}%
+ \ifx\@glo@tmp\empty
+ \else
+ \expandafter\glsxtrlocationhyperlink\expandafter
+ \glsentrycounter\expandafter\@glo@counterprefix\expandafter{\the\toks@}%
+ \fi
+ \else
+ \@gls@ReturnAfterFi{%
+ \@gls@removespaces#2\@nil
+ }%
+ \fi
+}
+\newcommand*{\glsxtrlocationhyperlink}[3]{%
+ \ifdefvoid\glsxtrsupplocationurl
+ {%
+ \GlsXtrInternalLocationHyperlink{#1}{#2}{#3}%
+ }%
+ {%
+ \hyperref{\glsxtrsupplocationurl}{}{#1#2#3}{#3}%
+ }%
+}
+\newcommand*{\glsxtrsupphypernumber}[1]{%
+ {%
+ \glshasattribute{\glscurrententrylabel}{externallocation}%
+ {%
+ \def\glsxtrsupplocationurl{%
+ \glsgetattribute{\glscurrententrylabel}{externallocation}}%
+ }%
+ {%
+ \def\glsxtrsupplocationurl{}%
+ }%
+ \glshypernumber{#1}%
+ }%
+}
+\renewcommand{\@print@glossary}{%
+ \makeatletter
+ \@input@{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
+ \IfFileExists{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
+ {}%
+ {\glsxtrNoGlossaryWarning{\@glo@type}}%
+ \ifglsxindy
+ \ifcsundef{@xdy@\@glo@type @language}%
+ {%
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\providecommand\string\@xdylanguage[2]{}}%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\@xdylanguage{\@glo@type}{\@xdy@main@language}}%
+ }%
+ }%
+ }%
+ {%
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\providecommand\string\@xdylanguage[2]{}}%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\@xdylanguage{\@glo@type}{\csname @xdy@\@glo@type
+ @language\endcsname}}%
+ }%
+ }%
+ }%
+ \@do@auxoutstuff
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\providecommand\string\@gls@codepage[2]{}}%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\@gls@codepage{\@glo@type}{\gls@codepage}}%
+ }%
+ }%
+ \@do@auxoutstuff
+ \fi
+ \renewcommand*{\@warn@nomakeglossaries}{%
+ \GlossariesWarningNoLine{\string\makeglossaries\space
+ hasn't been used,^^Jthe glossaries will not be updated}%
+ }%
+}
+\newcommand{\GlsXtrNoGlsWarningHead}[2]{%
+ This document is incomplete. The external file associated with
+ the glossary `#1' (which should be called \texttt{#2})
+ hasn't been created.%
+}
+\newcommand{\GlsXtrNoGlsWarningEmptyStart}{%
+ This has probably happened because there are no entries defined
+ in this glossary.%
+}
+\newcommand{\GlsXtrNoGlsWarningEmptyMain}{%
+ If you don't want this glossary,
+ add \texttt{nomain} to your package option list when you load
+ \texttt{glossaries-extra.sty}. For example:%
+}
+\newcommand{\GlsXtrNoGlsWarningEmptyNotMain}[1]{%
+ Did you forget to use \texttt{type=#1} when you defined your
+ entries? If you tried to load entries into this glossary with
+ \texttt{\string\loadglsentries} did you remember to use
+ \texttt{[#1]} as the optional argument? If you did, check that
+ the definitions in the file you loaded all had the type set
+ to \texttt{\string\glsdefaulttype}.%
+}
+\newcommand{\GlsXtrNoGlsWarningCheckFile}[1]{%
+ Check the contents of the file \texttt{#1}. If
+ it's empty, that means you haven't indexed any of your entries in this
+ glossary (using commands like \texttt{\string\gls} or
+ \texttt{\string\glsadd}) so this list can't be generated.
+ If the file isn't empty, the document build process hasn't been
+ completed.%
+}
+\newcommand{\GlsXtrNoGlsWarningAutoMake}[1]{%
+ You may need to rerun \LaTeX. If you already have, it may be that
+ \TeX's shell escape doesn't allow you to run
+ \ifglsxindy xindy\else makeindex\fi. Check the
+ transcript file \texttt{\jobname.log}. If the shell escape is
+ disabled, try one of the following:
+
+ \begin{itemize}
+ \item Run the external (Lua) application:
+
+ \texttt{makeglossaries-lite \string"\jobname\string"}
+
+ \item Run the external (Perl) application:
+
+ \texttt{makeglossaries \string"\jobname\string"}
+ \end{itemize}
+
+ Then rerun \LaTeX\ on this document.
+ \GlossariesExtraWarning{Rerun required to build the
+ glossary `#1' or check TeX's shell escape allows
+ you to run \ifglsxindy xindy\else makeindex\fi}%
+}
+\newcommand{\GlsXtrNoGlsWarningMisMatch}{%
+ You need to either replace \texttt{\string\makenoidxglossaries}
+ with \texttt{\string\makeglossaries} or replace
+ \texttt{\string\printglossary} (or \texttt{\string\printglossaries}) with
+ \texttt{\string\printnoidxglossary}
+ (or \texttt{\string\printnoidxglossaries}) and then rebuild
+ this document.%
+}
+\newcommand{\GlsXtrNoGlsWarningBuildInfo}{%
+ Try one of the following:
+ \begin{itemize}
+ \item Add \texttt{automake} to your package option list when you load
+ \texttt{glossaries-extra.sty}. For example:
+
+ \texttt{\string\usepackage[automake]%
+ \glsopenbrace glossaries-extra\glsclosebrace}
+
+ \item Run the external (Lua) application:
+
+ \texttt{makeglossaries-lite.lua \string"\jobname\string"}
+
+ \item Run the external (Perl) application:
+
+ \texttt{makeglossaries \string"\jobname\string"}
+ \end{itemize}
+
+ Then rerun \LaTeX\ on this document.%
+}
+\newcommand{\GlsXtrRecordWarning}[1]{%
+ \texttt{\string\printglossary} doesn't work
+ with the \texttt{record=\@glsxtr@record@setting} package option
+ use\par\texttt{\string\printunsrtglossary[type=#1]}\par
+ instead (or change the package option).%
+}
+\newcommand{\GlsXtrNoGlsWarningTail}{%
+ This message will be removed once the problem has been fixed.%
+}
+\newcommand{\GlsXtrNoGlsWarningNoOut}[1]{%
+ The file \texttt{#1} doesn't exist. This most likely means you haven't used
+ \texttt{\string\makeglossaries} or you have used
+ \texttt{\string\nofiles}. If this is just a draft version of the
+ document, you can suppress this message using the
+ \texttt{nomissingglstext} package option.%
+}
+\newcommand*{\@glsxtr@defaultnoglossarywarning}[1]{%
+ \glossarysection[\glossarytoctitle]{\glossarytitle}
+ \GlsXtrNoGlsWarningHead{#1}{\jobname.\csname @glotype@\@glo@type @in\endcsname}
+ \par
+ \glsxtrifemptyglossary{#1}%
+ {%
+ \GlsXtrNoGlsWarningEmptyStart\space
+ \ifthenelse{\equal{#1}{main}}{\GlsXtrNoGlsWarningEmptyMain\par
+ \medskip
+ \noindent\texttt{\string\usepackage[nomain\ifglsacronym ,acronym\fi]%
+ \glsopenbrace glossaries-extra\glsclosebrace}
+ \medskip
+ }%
+ {\GlsXtrNoGlsWarningEmptyNotMain{#1}}%
+ }%
+ {%
+ \IfFileExists{\jobname.\csname @glotype@\@glo@type @out\endcsname}
+ {%
+ \GlsXtrNoGlsWarningCheckFile
+ {\jobname.\csname @glotype@\@glo@type @out\endcsname}
+
+ \ifglsautomake
+
+ \GlsXtrNoGlsWarningAutoMake{#1}
+
+ \else
+
+ \ifthenelse{\equal{#1}{main}}%
+ {%
+ \GlsXtrNoGlsWarningEmptyMain\par
+ \medskip
+ \noindent\texttt{\string\usepackage[nomain]%
+ \glsopenbrace glossaries-extra\glsclosebrace}
+ \medskip
+ }%
+ {}%
+
+ \ifdefequal\makeglossaries\@no@makeglossaries
+ {%
+ \GlsXtrNoGlsWarningMisMatch
+ }%
+ {%
+ \GlsXtrNoGlsWarningBuildInfo
+ }%
+ \fi
+ }%
+ {%
+ \GlsXtrNoGlsWarningNoOut
+ {\jobname.\csname @glotype@\@glo@type @out\endcsname}%
+ }%
+ }%
+ \par
+ \GlsXtrNoGlsWarningTail
+}
+\newcommand*{\@glsxtr@record@noglossarywarning}[1]{%
+ \GlossariesExtraWarning{\string\printglossary\space doesn't work\MessageBreak
+ with record=\@glsxtr@record@setting\space package option\MessageBreak(use
+ \string\printunsrtglossary[type=#1])\MessageBreak
+ instead (or change the package option)}%
+ \glossarysection[\glossarytoctitle]{\glossarytitle}
+ \GlsXtrRecordWarning{#1}
+ \GlsXtrNoGlsWarningTail
+}
+\newcommand*{\GlsXtrDefaultResourceOptions}{}
+\newcommand*{\glsxtrresourcefile}[2][]{%
+ \disable@keys{glossaries-extra.sty}{record}%
+ \glsxtr@writefields
+ \ifdefempty\GlsXtrDefaultResourceOptions
+ {%
+ \protected@write\@auxout{\glsxtrresourceinit}%
+ {\string\glsxtr@resource{#1}{#2}}%
+ }%
+ {%
+ \protected@write\@auxout{\glsxtrresourceinit}%
+ {\string\glsxtr@resource{\GlsXtrDefaultResourceOptions,#1}{#2}}%
+ }%
+ \let\@glsxtr@org@see@noindex\@gls@see@noindex
+ \let\@gls@see@noindex\relax
+ \IfFileExists{#2.glstex}%
+ {%
+ \edef\@bibgls@restoreat{\noexpand\catcode\noexpand`\noexpand\@=\number\catcode`\@}%
+ \makeatletter
+ \@input{#2.glstex}%
+ \@bibgls@restoreat
+ \@glsxtr@check@bibgls@nameref
+ }%
+ {%
+ \GlossariesExtraWarning{No file `#2.glstex'}%
+ }%
+ \let\@gls@see@noindex\@glsxtr@org@see@noindex
+}
+\@onlypreamble\glsxtrresourcefile
+\newcommand{\@glsxtr@check@bibgls@nameref}{%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ \ifdef\bibglshrefchar
+ {}%
+ {%
+ \GlossariesExtraWarning{record=nameref requires at least
+ version 1.8 of bib2gls}%
+ }%
+ \fi
+ \let\@glsxtr@check@bibgls@nameref\relax
+}
+\newcommand*{\glsxtrresourceinit}{}
+\newcount\glsxtrresourcecount
+\newcommand*{\GlsXtrLoadResources}[1][]{%
+ \ifnum\glsxtrresourcecount=0\relax
+ \glsxtrresourcefile[#1]{\jobname}%
+ \else
+ \glsxtrresourcefile[#1]{\jobname-\the\glsxtrresourcecount}%
+ \fi
+ \advance\glsxtrresourcecount by 1\relax
+}
+\newcommand*{\glsxtr@resource}[2]{}
+\newcommand*{\glsxtr@fields}[1]{}
+\newcommand*{\glsxtr@texencoding}[1]{}
+\newcommand*{\glsxtr@langtag}[1]{}
+\newcommand*{\glsxtr@pluralsuffixes}[4]{}
+\newcommand*{\glsxtr@shortcutsval}[1]{}
+\newcommand*{\glsxtr@linkprefix}[1]{}
+\newcommand*{\glsxtr@writefields}{%
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@fields}[1]{}}%
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@resource}[2]{}}%
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@pluralsuffixes}[4]{}}%
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@shortcutsval}[1]{}}%
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@linkprefix}[1]{}}%
+ \protected@write\@auxout{}{\string\glsxtr@fields{\@gls@keymap}}%
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@record}[5]{}}%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@record@nameref}[8]{}}%
+ \fi
+ \ifdef\CurrentTrackedLanguageTag
+ {%
+ \protected@write\@auxout{}{%
+ \string\glsxtr@langtag{\CurrentTrackedLanguageTag}}%
+ }%
+ {}%
+ \protected@write\@auxout{}{\string\glsxtr@pluralsuffixes
+ {\glspluralsuffix}{\abbrvpluralsuffix}{\acrpluralsuffix}%
+ {\glsxtrabbrvpluralsuffix}}%
+ \ifdef\inputencodingname
+ {%
+ \protected@write\@auxout{}{\string\glsxtr@texencoding{\inputencodingname}}%
+ }%
+ {%
+ \@ifpackageloaded{fontspec}%
+ {\protected@write\@auxout{}{\string\glsxtr@texencoding{utf8}}}%
+ {}%
+ }%
+ \protected@write\@auxout{}{\string\glsxtr@shortcutsval{\@glsxtr@shortcutsval}}%
+ \AtBeginDocument
+ {\protected@write\@auxout{}{\string\glsxtr@linkprefix{\glolinkprefix}}}%
+ \let\glsxtr@writefields\relax
+ \ifglsautomake
+ \IfFileExists{\jobname.aux}%
+ {\immediate\write18{bib2gls \jobname}}{}%
+ \ifx\@gls@doautomake\@gls@doautomake@err
+ \let\@gls@doautomake\relax
+ \fi
+ \fi
+ \@glsxtr@if@record@only
+ {\ifdefstring{\glsorder}{letter}%
+ {\GlossariesExtraWarningNoLine{Package option `order=letter' isn't
+ supported with `record=\@glsxtr@record@setting'. Use `break-at=none'
+ resource option instead}}%
+ {}%
+ }%
+ {}%
+}
+\newcommand*{\@gls@doautomake@err}{%
+ \PackageError{glossaries}{You must use
+ \string\makeglossaries\space with automake=true}
+ {%
+ Either remove the automake=true setting or
+ add \string\makeglossaries\space to your document preamble.%
+ }%
+}
+\newcommand*{\glsxtr@record}[5]{}
+\newcommand*{\glsxtr@record@nameref}[8]{}
+\newcommand*{\glsxtr@counterrecord}[3]{%
+ \glsxtrfieldlistgadd{#1}{record.#2}{#3}%
+}
+\newcommand*{\@glsxtr@counterrecordhook}{}
+\newcommand*{\GlsXtrRecordCounter}[1]{%
+ \@@glsxtr@recordcounter{#1}%
+}
+\@onlypreamble\GlsXtrRecordCounter
+\newcommand*{\@glsxtr@docounterrecord}[1]{%
+ \protected@write\@auxout{}{\string\glsxtr@counterrecord
+ {\@gls@label}{#1}{\csuse{the#1}}}%
+}
+\newcommand*{\glsxtrglossentry}[1]{%
+ \glsxtrtitleorpdforheading
+ {\@glsxtrglossentry{#1}}%
+ {\glsentryname{#1}}%
+ {\glsxtrheadname{#1}}%
+}
+\newrobustcmd*{\@glsxtrglossentry}[1]{%
+ \glsxtrtitleorpdforheading
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \begingroup
+ \protected@edef\glscurrententrylabel{\glsdetoklabel{#1}}%
+ \protected@edef\currentglossary{\GlsXtrStandaloneGlossaryType}%
+ \ifglshasparent{#1}%
+ {\GlsXtrStandaloneSubEntryItem{#1}}%
+ {\glsentryitem{#1}}%
+ \GlsXtrStandaloneEntryName{#1}%
+ \endgroup
+ }%
+ }%
+ {\glsentryname{#1}}%
+ {\glsxtrheadname{#1}}%
+}
+\newcommand*{\GlsXtrStandaloneEntryName}[1]{%
+ \glstarget{#1}{\glossentryname{#1}}%
+}
+\newcommand{\GlsXtrStandaloneGlossaryType}{\glsentrytype{\glscurrententrylabel}}
+\newcommand*{\GlsXtrStandaloneSubEntryItem}[1]{%
+ \GlsXtrIfFieldEqNum{level}{#1}{1}{\glssubentryitem{#1}}{}%
+}
+\newcommand*{\glsxtrglossentryother}[3]{%
+ \ifstrempty{#1}%
+ {%
+ \ifcsdef{glsxtrhead#3}%
+ {%
+ \glsxtrtitleorpdforheading
+ {\@glsxtrglossentryother{#2}{#3}{#1}}%
+ {\@gls@entry@field{#2}{#3}}%
+ {\csuse{glsxtrhead#3}{#2}}%
+ }%
+ {%
+ \glsxtrtitleorpdforheading
+ {\@glsxtrglossentryother{#2}{#3}{#1}}%
+ {\@gls@entry@field{#2}{#3}}%
+ {\@gls@entry@field{\NoCaseChange{#2}}{#3}}%
+ }%
+ }%
+ {%
+ \glsxtrtitleorpdforheading
+ {\@glsxtrglossentryother{#2}{#3}{#1}}%
+ {\@gls@entry@field{#2}{#3}}%
+ {#1}%
+ }%
+}
+\newrobustcmd*{\@glsxtrglossentryother}[3]{%
+ \glsxtrtitleorpdforheading
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \begingroup
+ \protected@edef\glscurrententrylabel{\glsdetoklabel{#1}}%
+ \protected@edef\currentglossary{\GlsXtrStandaloneGlossaryType}%
+ \ifglshasparent{#1}%
+ {\GlsXtrStandaloneSubEntryItem{#1}}%
+ {\glsentryitem{#1}}%
+ \GlsXtrStandaloneEntryOther{#1}%
+ \endgroup
+ }%
+ }%
+ {\@gls@entry@field{#1}{#2}}%
+ {#3}%
+}
+\newcommand*{\GlsXtrStandaloneEntryOther}[2]{%
+ \glstarget{#1}{\glossentrynameother{#1}{#2}}%
+}
+\ifdef\@printgloss@checkexists
+{
+ \newcommand*{\printunsrtglossary}{%
+ \let\@printgloss@checkexists\@printgloss@checkexists@allowignored
+ \@ifstar\s@printunsrtglossary\@printunsrtglossary
+ }
+}
+{
+ \newcommand*{\printunsrtglossary}{%
+ \@ifstar\s@printunsrtglossary\@printunsrtglossary
+ }
+}
+\newcommand*{\@printunsrtglossary}[1][]{%
+ \@printglossary{type=\glsdefaulttype,#1}{\@print@unsrt@glossary}%
+}
+\newcommand*{\s@printunsrtglossary}[2][]{%
+ \begingroup
+ #2%
+ \@printglossary{type=\glsdefaulttype,#1}{\@print@unsrt@glossary}%
+ \endgroup
+}
+\newcommand*{\printunsrtglossaries}{%
+ \forallglossaries{\@@glo@type}{\printunsrtglossary[type=\@@glo@type]}%
+}
+
+\newcommand*{\@print@unsrt@glossary}{%
+ \glossarysection[\glossarytoctitle]{\glossarytitle}%
+ \glossarypreamble
+ \glsxtrifemptyglossary{\@glo@type}%
+ {%
+ \GlossariesExtraWarning{No entries defined in glossary `\@glo@type'}%
+ }%
+ {%
+ \key@ifundefined{glossentry}{group}%
+ {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}%
+ {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}%
+ \def\@gls@currentlettergroup{}%
+ \def\@glsxtr@doglossary{%
+ \begin{theglossary}%
+ \glossaryheader
+ \glsresetentrylist
+ }%
+ \expandafter\@for\expandafter\glscurrententrylabel\expandafter
+ :\expandafter=\csname glolist@\@glo@type\endcsname\do{%
+ \ifdefempty{\glscurrententrylabel}
+ {}%
+ {%
+ \let\glsxtr@process\@firstofone
+ \let\printunsrtglossaryskipentry
+ \@glsxtr@printunsrtglossaryskipentry
+ \printunsrtglossaryentryprocesshook{\glscurrententrylabel}%
+ \glsxtr@process
+ {%
+ \ifglsxtr@printgloss@groups
+ \ifglshasparent{\glscurrententrylabel}{}%
+ {%
+ \@glsxtr@checkgroup\glscurrententrylabel
+ \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter
+ {\@glsxtr@groupheading}%
+ }%
+ \fi
+ \protected@eappto\@glsxtr@doglossary{%
+ \noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}%
+ }%
+ }%
+ }%
+ \appto\@glsxtr@doglossary{\end{theglossary}}%
+ \printunsrtglossarypredoglossary
+ \@glsxtr@doglossary
+ }%
+ \glossarypostamble
+}
+\newcommand*{\printunsrtinnerglossary}[3][]{%
+ \begingroup
+ \def\@glsxtr@printglossopts{#1}%
+ \def\@glo@type{\glsdefaulttype}%
+ \setkeys{printgloss}[title,toctitle,style,numberedsection,sort,label]{#1}%
+ \let\currentglossary\@glo@type
+ #2%
+ \@print@unsrt@innerglossary
+ #3%
+ \endgroup
+}
+\newenvironment{printunsrtglossarywrap}[1][]%
+{%
+ \def\@glsxtr@printglossopts{#1}%
+ \def\@glo@type{\glsdefaulttype}%
+ \def\glossarytitle{\csname @glotype@\@glo@type @title\endcsname}%
+ \def\glossarytoctitle{\glossarytitle}%
+ \let\org@glossarytitle\glossarytitle
+ \def\@glossarystyle{%
+ \ifx\@glossary@default@style\relax
+ \GlossariesWarning{No default glossary style provided \MessageBreak
+ for the glossary `\@glo@type'. \MessageBreak
+ Using deprecated fallback. \MessageBreak
+ To fix this set the style with \MessageBreak
+ \string\setglossarystyle\space or use the \MessageBreak
+ style key=value option}%
+ \fi
+ }%
+ \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}%
+ \let\@org@glossaryentrynumbers\glossaryentrynumbers
+ \@printgloss@setsort
+ \setkeys{printgloss}{#1}%
+ \ifglossaryexists*{\@glo@type}%
+ {%
+ \ifx\glossarytitle\org@glossarytitle
+ \else
+ \expandafter\let\csname @glotype@\@glo@type @title\endcsname
+ \glossarytitle
+ \fi
+ \let\currentglossary\@glo@type
+ }%
+ {}%
+ \let\org@glossaryentrynumbers\glossaryentrynumbers
+ \let\glsnonextpages\@glsnonextpages
+ \let\glsnextpages\@glsnextpages
+ \let\nopostdesc\@nopostdesc
+ \gls@dotoctitle
+ \@glossarystyle
+ \let\gls@org@glossaryentryfield\glossentry
+ \let\gls@org@glossarysubentryfield\subglossentry
+ \renewcommand{\glossentry}[1]{%
+ \protected@xdef\glscurrententrylabel{\glsdetoklabel{##1}}%
+ \gls@org@glossaryentryfield{##1}%
+ }%
+ \renewcommand{\subglossentry}[2]{%
+ \protected@xdef\glscurrententrylabel{\glsdetoklabel{##2}}%
+ \gls@org@glossarysubentryfield{##1}{##2}%
+ }%
+ \@gls@preglossaryhook
+ \glossarysection[\glossarytoctitle]{\glossarytitle}%
+ \glossarypreamble
+ \begin{theglossary}%
+ \glossaryheader
+ \glsresetentrylist
+}%
+{%
+ \end{theglossary}%
+ \glossarypostamble
+ \global\let\glossaryentrynumbers\@org@glossaryentrynumbers
+ \global\let\warn@noprintglossary\relax
+}
+\newcommand*{\@print@unsrt@innerglossary}{%
+ \glsxtrifemptyglossary{\@glo@type}%
+ {%
+ \GlossariesExtraWarning{No entries defined in glossary `\@glo@type'}%
+ }%
+ {%
+ \key@ifundefined{glossentry}{group}%
+ {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}%
+ {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}%
+ \def\@gls@currentlettergroup{}%
+ \def\@glsxtr@doglossary{}%
+ \expandafter\@for\expandafter\glscurrententrylabel\expandafter
+ :\expandafter=\csname glolist@\@glo@type\endcsname\do{%
+ \ifdefempty{\glscurrententrylabel}
+ {}%
+ {%
+ \let\glsxtr@process\@firstofone
+ \let\printunsrtglossaryskipentry
+ \@glsxtr@printunsrtglossaryskipentry
+ \printunsrtglossaryentryprocesshook{\glscurrententrylabel}%
+ \glsxtr@process
+ {%
+ \ifglsxtr@printgloss@groups
+ \ifglshasparent{\glscurrententrylabel}{}%
+ {%
+ \@glsxtr@checkgroup\glscurrententrylabel
+ \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter
+ {\@glsxtr@groupheading}%
+ }%
+ \fi
+ \protected@eappto\@glsxtr@doglossary{%
+ \noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}%
+ }%
+ }%
+ }%
+ \printunsrtglossarypredoglossary
+ \@glsxtr@doglossary
+ }%
+}
+\newcommand*{\printunsrtglossaryentryprocesshook}[1]{}
+\newcommand*{\printunsrtglossaryskipentry}{%
+ \PackageError{glossaries-extra}{\string\printunsrtglossaryskipentry\space
+can only be used within \string\printunsrtglossaryentryprocesshook}{}%
+}
+\newcommand*{\@glsxtr@printunsrtglossaryskipentry}{%
+ \let\glsxtr@process\@gobble
+}
+\newcommand*{\printunsrtglossarypredoglossary}{}
+\newcommand{\@printunsrt@glossary@handler}[1]{%
+ \protected@xdef\glscurrententrylabel{#1}%
+ \printunsrtglossaryhandler\glscurrententrylabel
+}
+\newcommand{\printunsrtglossaryhandler}[1]{%
+ \glsxtrunsrtdo{#1}%
+}
+\newrobustcmd*{\glsxtriflabelinlist}[4]{%
+ \protected@edef\@glsxtr@doiflabelinlist{\noexpand\@gls@ifinlist{#1}{#2}}%
+ \@glsxtr@doiflabelinlist{#3}{#4}%
+}
+\newcommand{\print@op@unsrtglossaryunit}[2][]{%
+ \s@printunsrtglossary[type=\glsdefaulttype,#1]{%
+ \printunsrtglossaryunitsetup{#2}%
+ }%
+}
+\newcommand*{\printunsrtglossaryunitsetup}[1]{%
+ \renewcommand{\printunsrtglossaryhandler}[1]{%
+ \glsxtrfieldxifinlist{##1}{record.#1}{\csuse{the#1}}
+ {\glsxtrunsrtdo{##1}}%
+ {}%
+ }%
+ \ifcsundef{theH#1}%
+ {%
+ \renewcommand*{\@glsxtrhypernameprefix}{record.#1.\csuse{the#1}.\@gobble}%
+ }%
+ {%
+ \renewcommand*{\@glsxtrhypernameprefix}{record.#1.\csuse{theH#1}.\@gobble}%
+ }%
+ \renewcommand*{\glossarysection}[2][]{}%
+ \appto\glossarypostamble{\glspar\medskip\glspar}%
+}
+\newcommand{\print@noop@unsrtglossaryunit}[2][]{%
+ \PackageError{glossaries-extra}{\string\printunsrtglossaryunit\space
+ requires the record=only or record=alsoindex package option}{}%
+}
+\newrobustcmd*{\@glsxtr@unsrt@getgrouptitle}[2]{%
+ \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}%
+ \@onelevel@sanitize\@glsxtr@titlelabel
+ \ifcsdef{\@glsxtr@titlelabel}
+ {\letcs{#2}{\@glsxtr@titlelabel}}%
+ {\def#2{#1}}%
+}
+\newcommand{\glsxtrunsrtdo}{\@glsxtr@noidx@do}
+\newcommand*{\glsxtrgroupfield}{group}
+\newcommand*{\@glsxtr@checkgroup}[1]{%
+ \def\@glsxtr@groupheading{}%
+ \key@ifundefined{glossentry}{group}%
+ {%
+ \letcs{\@gls@sort}{glo@\glsdetoklabel{#1}@sort}%
+ \expandafter\glo@grabfirst\@gls@sort{}{}\@nil
+ }%
+ {%
+ \protected@edef\@glo@thislettergrp{%
+ \csuse{glo@\glsdetoklabel{#1}@\glsxtrgroupfield}}%
+ }%
+ \ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}%
+ {}%
+ {%
+ \ifdefempty{\@gls@currentlettergroup}{}%
+ {\def\@glsxtr@groupheading{\glsgroupskip}}%
+ \protected@eappto\@glsxtr@groupheading{%
+ \noexpand\glsgroupheading{\expandonce\@glo@thislettergrp}%
+ }%
+ }%
+ \let\@gls@currentlettergroup\@glo@thislettergrp
+}
+\newcommand*{\GlsXtrLocationField}{location}
+\newcommand{\@glsxtr@noidx@do}[1]{%
+ \ifglsentryexists{#1}%
+ {%
+ \global\letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}%
+ \global\letcs{\@gls@location}{glo@\glsdetoklabel{#1}@\GlsXtrLocationField}%
+ \gls@level=\numexpr\csuse{glo@\glsdetoklabel{#1}@level}+\@glsxtr@leveloffset\relax
+ \ifnum\gls@level>0
+ \let\@glsxtr@ifischild\@firstoftwo
+ \else
+ \let\@glsxtr@ifischild\@secondoftwo
+ \fi
+ \@glsxtr@ifischild
+ {%
+ \ifdefvoid{\@gls@location}%
+ {%
+ \ifdefvoid{\@gls@loclist}%
+ {%
+ \expandafter\subglossentry\expandafter{\number\gls@level}{#1}{}%
+ }%
+ {%
+ \expandafter\subglossentry\expandafter{\number\gls@level}{#1}%
+ {%
+ \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ }%
+ }%
+ }%
+ {%
+ \expandafter\subglossentry\expandafter
+ {\number\gls@level}{#1}{\glossaryentrynumbers{\@gls@location}}%
+ }%
+ }%
+ {%
+ \ifdefvoid{\@gls@location}%
+ {%
+ \ifdefvoid{\@gls@loclist}
+ {%
+ \glossentry{#1}{}%
+ }%
+ {%
+ \glossentry{#1}%
+ {%
+ \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ }%
+ }%
+ }%
+ {%
+ \glossentry{#1}%
+ {%
+ \glossaryentrynumbers{\@gls@location}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+}
+\newcount\@glsxtrnewgls@inner
+\newcommand*{\@glsxtr@providenewgls}{%
+ \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@newglslike}[2]{}}%
+ \let\@glsxtr@providenewgls\relax
+}
+\newcommand{\glsxtridentifyglslike}[2]{%
+ \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off
+ {}%
+ {%
+ \@glsxtr@providenewgls
+ \protected@write\@auxout{}{\string\@glsxtr@newglslike{#1}{\string#2}}%
+ }%
+}
+\newcommand*{\@glsxtrnewgls}[4]{%
+ \ifdef{#3}%
+ {%
+ \PackageError{glossaries-extra}{Command \string#3\space already
+defined}{}%
+ }%
+ {%
+ \glsxtridentifyglslike{#2}{#3}%
+ \ifcsdef{@#4like@#2}%
+ {%
+ \advance\@glsxtrnewgls@inner by \@ne
+ \def\@glsxtrnewgls@innercsname{@#4like\number\@glsxtrnewgls@inner @#2}%
+ }%
+ {\def\@glsxtrnewgls@innercsname{@#4like@#2}}%
+ \expandafter\newrobustcmd\expandafter*\expandafter
+ #3\expandafter{\expandafter\@gls@hyp@opt\csname\@glsxtrnewgls@innercsname\endcsname}%
+ \ifstrempty{#1}%
+ {%
+ \expandafter\newcommand\expandafter*\csname\@glsxtrnewgls@innercsname\endcsname[2][]{%
+ \new@ifnextchar[%
+ {\csname @#4@\endcsname{##1}{#2##2}}%
+ {\csname @#4@\endcsname{##1}{#2##2}[]}%
+ }%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\csname\@glsxtrnewgls@innercsname\endcsname[2][]{%
+ \new@ifnextchar[%
+ {\csname @#4@\endcsname{#1,##1}{#2##2}}%
+ {\csname @#4@\endcsname{#1,##1}{#2##2}[]}%
+ }%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtrnewgls}[3][]{%
+ \@glsxtrnewgls{#1}{#2}{#3}{gls}%
+}
+\newrobustcmd*{\glsxtrnewglslike}[6][]{%
+ \@glsxtrnewgls{#1}{#2}{#3}{gls}%
+ \@glsxtrnewgls{#1}{#2}{#4}{glspl}%
+ \@glsxtrnewgls{#1}{#2}{#5}{Gls}%
+ \@glsxtrnewgls{#1}{#2}{#6}{Glspl}%
+}
+\newrobustcmd*{\glsxtrnewGLSlike}[4][]{%
+ \@glsxtrnewgls{#1}{#2}{#3}{GLS}%
+ \@glsxtrnewgls{#1}{#2}{#4}{GLSpl}%
+}
+\newrobustcmd*{\glsxtrnewrgls}[3][]{%
+ \@glsxtrnewgls{#1}{#2}{#3}{rgls}%
+}
+\newrobustcmd*{\glsxtrnewrglslike}[6][]{%
+ \@glsxtrnewgls{#1}{#2}{#3}{rgls}%
+ \@glsxtrnewgls{#1}{#2}{#4}{rglspl}%
+ \@glsxtrnewgls{#1}{#2}{#5}{rGls}%
+ \@glsxtrnewgls{#1}{#2}{#6}{rGlspl}%
+}
+\newrobustcmd*{\glsxtrnewrGLSlike}[4][]{%
+ \@glsxtrnewgls{#1}{#2}{#3}{rGLS}%
+ \@glsxtrnewgls{#1}{#2}{#4}{rGLSpl}%
+}
+\newcommand*{\GlsXtrTotalRecordCount}[1]{%
+ \ifcsdef{glo@\glsdetoklabel{#1}@recordcount}%
+ {\csname glo@\glsdetoklabel{#1}@recordcount\endcsname}%
+ {0}%
+}
+\newcommand*{\GlsXtrRecordCount}[2]{%
+ \ifcsdef{glo@\glsdetoklabel{#1}@recordcount.#2}%
+ {\csname glo@\glsdetoklabel{#1}@recordcount.#2\endcsname}%
+ {0}%
+}
+\newcommand*{\GlsXtrLocationRecordCount}[3]{%
+ \ifcsdef{glo@\glsdetoklabel{#1}@recordcount.#2.\glsxtrdetoklocation{#3}}%
+ {\csname glo@\glsdetoklabel{#1}@recordcount.#2.\glsxtrdetoklocation{#3}\endcsname}%
+ {0}%
+}
+\newcommand*{\glsxtrdetoklocation}[1]{#1}
+\newcommand*{\glsxtrenablerecordcount}{%
+ \renewcommand*{\gls}{\rgls}%
+ \renewcommand*{\Gls}{\rGls}%
+ \renewcommand*{\glspl}{\rglspl}%
+ \renewcommand*{\Glspl}{\rGlspl}%
+ \renewcommand*{\GLS}{\rGLS}%
+ \renewcommand*{\GLSpl}{\rGLSpl}%
+}
+\newcommand*{\glsxtrrecordtriggervalue}[1]{%
+ \GlsXtrTotalRecordCount{#1}%
+}
+\newcommand*{\GlsXtrSetRecordCountAttribute}[2]{%
+ \@for\@glsxtr@cat:=#1\do
+ {%
+ \ifdefempty{\@glsxtr@cat}{}%
+ {%
+ \glssetcategoryattribute{\@glsxtr@cat}{recordcount}{#2}%
+ }%
+ }%
+}
+\newcommand*{\glsxtrifrecordtrigger}[3]{%
+ \glshasattribute{#1}{recordcount}%
+ {%
+ \ifnum\glsxtrrecordtriggervalue{#1}>\glsgetattribute{#1}{recordcount}\relax
+ #3%
+ \else
+ #2%
+ \fi
+ }%
+ {#3}%
+}
+\newcommand*{\@glsxtr@rglstrigger@record}[3]{%
+ \protected@edef\glslabel{\glsdetoklabel{#2}}%
+ \let\@gls@link@label\glslabel
+ \def\@glsxtr@thevalue{}%
+ \def\@glsxtr@theHvalue{\@glsxtr@thevalue}%
+ \def\@glsnumberformat{glstriggerrecordformat}%
+ \protected@edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}%
+ \protected@edef\glstype{\csname glo@\glslabel @type\endcsname}%
+ \def\@glsxtr@thevalue{}%
+ \def\@glsxtr@theHvalue{\@glsxtr@thevalue}%
+ \@gls@save@glslocal
+ \glsxtrinitwrgloss
+ \glslinkpresetkeys
+ \setkeys{glslink}{#1}%
+ \glslinkpostsetkeys
+ \ifdefempty{\@glsxtr@thevalue}%
+ {%
+ \@gls@saveentrycounter
+ }%
+ {%
+ \let\theglsentrycounter\@glsxtr@thevalue
+ \def\theHglsentrycounter{\@glsxtr@theHvalue}%
+ }%
+ \glslinkwrcontent
+ {%
+ \ifglsxtrinitwrglossbefore
+ \@do@wrglossary{#2}%
+ \fi
+ #3%
+ \ifglsxtrinitwrglossbefore
+ \else
+ \@do@wrglossary{#2}%
+ \fi
+ }%
+ \@gls@restore@glslocal
+ \@gls@do@glsunset{#2}%
+}
+\newcommand*{\glstriggerrecordformat}[1]{}
+\newrobustcmd*{\rgls}{\@gls@hyp@opt\@rgls}
+\newcommand*{\@rgls}[2][]{%
+ \new@ifnextchar[{\@rgls@{#1}{#2}}{\@rgls@{#1}{#2}[]}%
+}
+\def\@rgls@#1#2[#3]{%
+ \glsxtrifrecordtrigger{#2}%
+ {%
+ \@glsxtr@rglstrigger@record{#1}{#2}{\rglsformat{#2}{#3}}%
+ }%
+ {%
+ \@gls@{#1}{#2}[#3]%
+ }%
+}%
+\newrobustcmd*{\rglspl}{\@gls@hyp@opt\@rglspl}
+\newcommand*{\@rglspl}[2][]{%
+ \new@ifnextchar[{\@rglspl@{#1}{#2}}{\@rglspl@{#1}{#2}[]}%
+}
+\def\@rglspl@#1#2[#3]{%
+ \glsxtrifrecordtrigger{#2}%
+ {%
+ \@glsxtr@rglstrigger@record{#1}{#2}{\rglsplformat{#2}{#3}}%
+ }%
+ {%
+ \@glspl@{#1}{#2}[#3]%
+ }%
+}%
+\newrobustcmd*{\rGls}{\@gls@hyp@opt\@rGls}
+\newcommand*{\@rGls}[2][]{%
+ \new@ifnextchar[{\@rGls@{#1}{#2}}{\@rGls@{#1}{#2}[]}%
+}
+\def\@rGls@#1#2[#3]{%
+ \glsxtrifrecordtrigger{#2}%
+ {%
+ \@glsxtr@rglstrigger@record{#1}{#2}{\rGlsformat{#2}{#3}}%
+ }%
+ {%
+ \@Gls@{#1}{#2}[#3]%
+ }%
+}%
+\newrobustcmd*{\rGlspl}{\@gls@hyp@opt\@rGlspl}
+\newcommand*{\@rGlspl}[2][]{%
+ \new@ifnextchar[{\@rGlspl@{#1}{#2}}{\@rGlspl@{#1}{#2}[]}%
+}
+\def\@rGlspl@#1#2[#3]{%
+ \glsxtrifrecordtrigger{#2}%
+ {%
+ \@glsxtr@rglstrigger@record{#1}{#2}{\rGlsplformat{#2}{#3}}%
+ }%
+ {%
+ \@Glspl@{#1}{#2}[#3]%
+ }%
+}%
+\newrobustcmd*{\rGLS}{\@gls@hyp@opt\@rGLS}
+\newcommand*{\@rGLS}[2][]{%
+ \new@ifnextchar[{\@rGLS@{#1}{#2}}{\@rGLS@{#1}{#2}[]}%
+}
+\def\@rGLS@#1#2[#3]{%
+ \glsxtrifrecordtrigger{#2}%
+ {%
+ \@glsxtr@rglstrigger@record{#1}{#2}{\rGLSformat{#2}{#3}}%
+ }%
+ {%
+ \@GLS@{#1}{#2}[#3]%
+ }%
+}%
+\newrobustcmd*{\rGLSpl}{\@gls@hyp@opt\@rGLSpl}
+\newcommand*{\@rGLSpl}[2][]{%
+ \new@ifnextchar[{\@rGLSpl@{#1}{#2}}{\@rGLSpl@{#1}{#2}[]}%
+}
+\def\@rGLSpl@#1#2[#3]{%
+ \glsxtrifrecordtrigger{#2}%
+ {%
+ \@glsxtr@rglstrigger@record{#1}{#2}{\rGLSplformat{#2}{#3}}%
+ }%
+ {%
+ \@GLSpl@{#1}{#2}[#3]%
+ }%
+}%
+\newcommand*{\rglsformat}[2]{%
+ \glsifregular{#1}
+ {\glsentryfirst{#1}}%
+ {\ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}}#2%
+}
+\newcommand*{\rglsplformat}[2]{%
+ \glsifregular{#1}
+ {\glsentryfirstplural{#1}}%
+ {\ifglshaslong{#1}{\glsentrylongplural{#1}}{\glsentryfirstplural{#1}}}#2%
+}
+\newcommand*{\rGlsformat}[2]{%
+ \glsifregular{#1}
+ {\Glsentryfirst{#1}}%
+ {\ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}}#2%
+}
+\newcommand*{\rGlsplformat}[2]{%
+ \glsifregular{#1}
+ {\Glsentryfirstplural{#1}}%
+ {\ifglshaslong{#1}{\Glsentrylongplural{#1}}{\Glsentryfirstplural{#1}}}#2%
+}
+\newcommand*{\rGLSformat}[2]{%
+ \expandafter\mfirstucMakeUppercase\expandafter{\rglsformat{#1}{#2}}%
+}
+\newcommand*{\rGLSplformat}[2]{%
+ \expandafter\mfirstucMakeUppercase\expandafter{\rglsplformat{#1}{#2}}%
+}
+\newcommand{\@glsxtr@do@inc@linkcount}{%
+ \glsifattribute{\glslabel}{linkcount}{true}%
+ {%
+ \ifcsdef{c@glsxtr@linkcount@\glslabel}{}%
+ {%
+ \newcounter{glsxtr@linkcount@\glslabel}%
+ \glshasattribute{\glslabel}{linkcountmaster}%
+ {%
+ \begingroup
+ \edef\@glo@tmp{\endgroup\noexpand\@addtoreset{glsxtr@linkcount@\glslabel}%
+ {\glsgetattribute{\glslabel}{linkcountmaster}}}%
+ \@glo@tmp
+ }%
+ {}%
+ }%
+ \glsxtrinclinkcounter{glsxtr@linkcount@\glslabel}%
+ }%
+ {}%
+}
+\newcommand*{\glsxtrinclinkcounter}[1]{\stepcounter{#1}}
+\newcommand*{\GlsXtrLinkCounterValue}[1]{%
+ \ifcsundef{c@glsxtr@linkcount@#1}{0}{\csname c@glsxtr@linkcount@#1\endcsname}%
+}
+\newcommand*{\GlsXtrTheLinkCounter}[1]{%
+ \ifcsundef{theglsxtr@linkcount@#1}{0}%
+ {\csname theglsxtr@linkcount@#1\endcsname}%
+}
+\newcommand*{\GlsXtrIfLinkCounterDef}[3]{%
+ \ifcsundef{theglsxtr@linkcount@#1}{#3}{#2}%
+}
+\newcommand*{\GlsXtrLinkCounterName}[1]{glsxtr@linkcount@#1}
+\newcommand*{\GlsXtrEnableLinkCounting}[2][]{%
+ \let\glsxtr@inc@linkcount\@glsxtr@do@inc@linkcount
+ \@for\@glsxtr@label:=#2\do
+ {%
+ \glssetcategoryattribute{\@glsxtr@label}{linkcount}{true}%
+ \ifstrempty{#1}{}%
+ {%
+ \ifcsundef{c@#1}%
+ {\@nocounterr{#1}}%
+ {\glssetcategoryattribute{\@glsxtr@label}{linkcountmaster}{#1}}%
+ }%
+ }%
+}
+\@onlypreamble\GlsXtrEnableLinkCounting
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \newcommand*{\glsaccessname}[1]{%
+ \glsnameaccessdisplay
+ {%
+ \glsentryname{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\Glsaccessname}[1]{%
+ \glsnameaccessdisplay
+ {%
+ \Glsentryname{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\GLSaccessname}[1]{%
+ \glsnameaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryname{#1}}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\glsaccesstext}[1]{%
+ \glstextaccessdisplay
+ {%
+ \glsentrytext{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\Glsaccesstext}[1]{%
+ \glstextaccessdisplay
+ {%
+ \Glsentrytext{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\GLSaccesstext}[1]{%
+ \glstextaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrytext{#1}}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\glsaccessplural}[1]{%
+ \glspluralaccessdisplay
+ {%
+ \glsentryplural{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\Glsaccessplural}[1]{%
+ \glspluralaccessdisplay
+ {%
+ \Glsentryplural{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\GLSaccessplural}[1]{%
+ \glspluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryplural{#1}}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\glsaccessfirst}[1]{%
+ \glsfirstaccessdisplay
+ {%
+ \glsentryfirst{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\Glsaccessfirst}[1]{%
+ \glsfirstaccessdisplay
+ {%
+ \Glsentryfirst{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\GLSaccessfirst}[1]{%
+ \glsfirstaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryfirst{#1}}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\glsaccessfirstplural}[1]{%
+ \glsfirstpluralaccessdisplay
+ {%
+ \glsentryfirstplural{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\Glsaccessfirstplural}[1]{%
+ \glsfirstpluralaccessdisplay
+ {%
+ \Glsentryfirstplural{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\GLSaccessfirstplural}[1]{%
+ \glsfirstpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryfirstplural{#1}}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\glsaccesssymbol}[1]{%
+ \glssymbolaccessdisplay
+ {%
+ \glsentrysymbol{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\Glsaccesssymbol}[1]{%
+ \glssymbolaccessdisplay
+ {%
+ \Glsentrysymbol{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\GLSaccesssymbol}[1]{%
+ \glssymbolaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrysymbol{#1}}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\glsaccesssymbolplural}[1]{%
+ \glssymbolpluralaccessdisplay
+ {%
+ \glsentrysymbolplural{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\Glsaccesssymbolplural}[1]{%
+ \glssymbolpluralaccessdisplay
+ {%
+ \Glsentrysymbolplural{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\GLSaccesssymbolplural}[1]{%
+ \glssymbolpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrysymbolplural{#1}}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\glsaccessdesc}[1]{%
+ \glsdescriptionaccessdisplay
+ {%
+ \glsentrydesc{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\Glsaccessdesc}[1]{%
+ \glsdescriptionaccessdisplay
+ {%
+ \Glsentrydesc{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\GLSaccessdesc}[1]{%
+ \glsdescriptionaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrydesc{#1}}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\glsaccessdescplural}[1]{%
+ \glsdescriptionpluralaccessdisplay
+ {%
+ \glsentrydescplural{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\Glsaccessdescplural}[1]{%
+ \glsdescriptionpluralaccessdisplay
+ {%
+ \Glsentrydescplural{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\GLSaccessdescplural}[1]{%
+ \glsdescriptionpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrydescplural{#1}}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\glsaccessshort}[1]{%
+ \glsshortaccessdisplay
+ {%
+ \glsentryshort{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\Glsaccessshort}[1]{%
+ \glsshortaccessdisplay
+ {%
+ \Glsentryshort{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\GLSaccessshort}[1]{%
+ \glsshortaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryshort{#1}}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\glsaccessshortpl}[1]{%
+ \glsshortpluralaccessdisplay
+ {%
+ \glsentryshortpl{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\Glsaccessshortpl}[1]{%
+ \glsshortpluralaccessdisplay
+ {%
+ \Glsentryshortpl{#1}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\GLSaccessshortpl}[1]{%
+ \glsshortpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryshortpl{#1}}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\glsaccesslong}[1]{%
+ \glslongaccessdisplay{\glsentrylong{#1}}{#1}%
+ }
+
+ \newcommand*{\Glsaccesslong}[1]{%
+ \glslongaccessdisplay{\Glsentrylong{#1}}{#1}%
+ }
+ \newcommand*{\GLSaccesslong}[1]{%
+ \glslongaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrylong{#1}}%
+ }%
+ {#1}%
+ }
+ \newcommand*{\glsaccesslongpl}[1]{%
+ \glslongpluralaccessdisplay{\glsentrylongpl{#1}}{#1}%
+ }
+
+ \newcommand*{\Glsaccesslongpl}[1]{%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{#1}}{#1}%
+ }
+ \newcommand*{\GLSaccesslongpl}[1]{%
+ \glslongpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrylongpl{#1}}%
+ }%
+ {#1}%
+ }
+ \define@key{glsxtrabbrv}{access}{%
+ \def\@gls@nameaccess{#1}%
+ }
+ \define@key{glsxtrabbrv}{textaccess}{%
+ \def\@gls@textaccess{#1}%
+ }
+ \define@key{glsxtrabbrv}{pluralaccess}{%
+ \def\@gls@pluralaccess{#1}%
+ }
+ \define@key{glsxtrabbrv}{firstaccess}{%
+ \def\@gls@firstaccess{#1}%
+ }
+ \define@key{glsxtrabbrv}{firstpluralaccess}{%
+ \def\@gls@firstpluralaccess{#1}%
+ }
+ \define@key{glsxtrabbrv}{shortaccess}{%
+ \def\@gls@shortaccess{#1}%
+ }
+ \define@key{glsxtrabbrv}{shortpluralaccess}{%
+ \def\@gls@shortaccesspl{#1}%
+ }
+ \define@key{glsxtrabbrv}{longaccess}{%
+ \def\@gls@longaccess{#1}%
+ }
+ \define@key{glsxtrabbrv}{shortlonglaccess}{%
+ \def\@gls@longaccesspl{#1}%
+ }
+ \newcommand*{\@gls@initaccesskeys}{%
+ \def\@gls@nameaccess{}%
+ \def\@gls@textaccess{}%
+ \def\@gls@pluralaccess{}%
+ \def\@gls@firstaccess{}%
+ \def\@gls@firstpluralaccess{}%
+ \def\@gls@shortaccess{}%
+ \def\@gls@shortaccesspl{}%
+ \def\@gls@longaccess{}%
+ \def\@gls@longaccesspl{}%
+ }
+\newcommand*{\@gls@ifaccessattribute@set}[3]{%
+ \glsifcategoryattribute{\glscategorylabel}{access#1}{true}%
+ {#2}%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{access#1}{false}%
+ {#3}%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{#1}{true}%
+ {#2}%
+ {#3}%
+ }%
+ }%
+}
+ \def\glsdefaultshortaccess#1#2{#1 (#2)}
+ \newcommand{\glsxtrassignactualsetup}{%
+ \let\@\empty
+ \let\emph\@firstofone
+ \let\textbf\@firstofone
+ \let\textmd\@firstofone
+ \let\textit\@firstofone
+ \let\textsl\@firstofone
+ \let\textsc\@firstofone
+ \let\textrm\@firstofone
+ \let\textsf\@firstofone
+ \let\texttt\@firstofone
+ }
+ \ifdef\pdfstringdef
+ {
+ \newcommand{\@gls@assign@actual}{%
+ \begingroup
+ \glsxtrassignactualsetup
+ \pdfstringdef\@gls@actualshort{\glsxtrorgshort}%
+ \pdfstringdef\@gls@actuallong{\glsxtrorglong}%
+ \pdfstringdef\@gls@actualshortpl{\@gls@shortpl}%
+ \pdfstringdef\@gls@actuallongpl{\@gls@longpl}%
+ \protected@edef\@gls@tmp{\endgroup
+ \def\noexpand\@gls@actualshort{\expandonce\@gls@actualshort}%
+ \def\noexpand\@gls@actuallong{\expandonce\@gls@actuallong}%
+ \def\noexpand\@gls@actualshortpl{\expandonce\@gls@actualshortpl}%
+ \def\noexpand\@gls@actuallongpl{\expandonce\@gls@actuallongpl}%
+ }%
+ \@gls@tmp
+ }
+ }
+ {
+ \newcommand{\@gls@assign@actual}{%
+ \begingroup
+ \glsxtrassignactualsetup
+ \protected@edef\@gls@tmp{\endgroup
+ \def\noexpand\@gls@actualshort{\glsxtrorgshort}%
+ \def\noexpand\@gls@actuallong{\glsxtrorglong}%
+ \def\noexpand\@gls@actualshortpl{\@gls@shortpl}%
+ \def\noexpand\@gls@actuallongpl{\@gls@longpl}%
+ }%
+ \@gls@tmp
+ }
+ }
+ \newcommand{\@gls@setup@default@access}{%
+ \@gls@assign@actual
+ \ifdefempty\@gls@shortaccess
+ {%
+ \@gls@ifaccessattribute@set{insertdots}%
+ {%
+ \expandafter\@glsxtr@insertdots\expandafter\@gls@actualshort\expandafter
+ {\@gls@actualshort}%
+ }%
+ {}%
+ \ifdefempty\@gls@longaccess
+ {%
+ \protected@edef\@gls@shortaccess{\glsdefaultshortaccess
+ {\expandonce\@gls@actuallong}{\expandonce\@gls@actualshort}}%
+ }%
+ {%
+ \protected@edef\@gls@shortaccess{\glsdefaultshortaccess
+ {\expandonce\@gls@longaccess}{\expandonce\@gls@actualshort}}%
+ }%
+ \eappto\ExtraCustomAbbreviationFields{shortaccess={\@gls@shortaccess},}%
+ \ifdefempty\@gls@shortaccesspl
+ {%
+ \@gls@ifaccessattribute@set{aposplural}%
+ {%
+ \expandafter\def\expandafter\@gls@shortaccesspl\expandafter{%
+ \@gls@actualshort'\glsxtrabbrvpluralsuffix}%
+ }%
+ {%
+ \@gls@ifaccessattribute@set{noshortplural}%
+ {%
+ \let\@gls@shortaccesspl\@gls@shortaccess
+ }%
+ {%
+ \let\@gls@shortaccesspl\@gls@actualshortpl
+ }%
+ }%
+ \ifdefempty\@gls@longaccesspl
+ {%
+ \protected@edef\@gls@shortaccesspl{\glsdefaultshortaccess
+ {\expandonce\@gls@actuallongpl}{\expandonce\@gls@actualshortpl}}%
+ }%
+ {%
+ \protected@edef\@gls@shortaccesspl{\glsdefaultshortaccess
+ {\expandonce\@gls@longaccesspl}{\expandonce\@gls@actualshort}}%
+ }%
+ \eappto\ExtraCustomAbbreviationFields{shortpluralaccess={\@gls@shortaccesspl},}%
+ }%
+ {}%
+ }%
+ {%
+ \ifdefempty\@gls@shortaccesspl
+ {\let\@gls@shortaccesspl\@gls@shortaccess}%
+ {}%
+ }%
+ \ifdefempty\@gls@nameaccess
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{nameshortaccess}{true}%
+ {%
+ \eappto\ExtraCustomAbbreviationFields{access={\@gls@shortaccess},}%
+ }%
+ {}%
+ }%
+ {}%
+ \ifdefempty\@gls@textaccess
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{textshortaccess}{true}%
+ {%
+ \eappto\ExtraCustomAbbreviationFields{textaccess={\@gls@shortaccess},}%
+ }%
+ {}%
+ }%
+ {}%
+ \ifdefempty\@gls@pluralaccess
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{textshortaccess}{true}%
+ {%
+ \eappto\ExtraCustomAbbreviationFields{%
+ pluralaccess={\@gls@shortaccesspl},%
+ }%
+ }%
+ {}%
+ }%
+ {}%
+ \ifdefempty\@gls@firstaccess
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{firstshortaccess}{true}%
+ {%
+ \eappto\ExtraCustomAbbreviationFields{firstaccess={\@gls@shortaccess},}%
+ }%
+ {}%
+ }%
+ {}%
+ \ifdefempty\@gls@firstpluralaccess
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{firstshortaccess}{true}%
+ {%
+ \eappto\ExtraCustomAbbreviationFields{%
+ firstpluralaccess={\@gls@shortaccesspl},%
+ }%
+ }%
+ {}%
+ }%
+ {}%
+ }
+ \newcommand*{\glsxtrprovideaccsuppcmd}[2]{%
+ \ifcsundef{glsxtr#1#2accsupp}%
+ {\csdef{glsxtr#1#2accsupp}{\glsshortaccsupp}}%
+ {}%
+ }
+ \newcommand*{\glsxtrAccSuppAbbrSetNoLongAttrs}[1]{%
+ \glssetcategoryattribute{#1}{nameshortaccess}{true}%
+ \glssetcategoryattribute{#1}{firstshortaccess}{true}%
+ \glssetcategoryattribute{#1}{textshortaccess}{true}%
+ \glsxtrprovideaccsuppcmd{#1}{name}%
+ \glsxtrprovideaccsuppcmd{#1}{first}%
+ \glsxtrprovideaccsuppcmd{#1}{firstpl}%
+ \glsxtrprovideaccsuppcmd{#1}{text}%
+ \glsxtrprovideaccsuppcmd{#1}{plural}%
+ }
+ \newcommand*{\glsxtrAccSuppAbbrSetFirstLongAttrs}[1]{%
+ \glssetcategoryattribute{#1}{nameshortaccess}{true}%
+ \glssetcategoryattribute{#1}{textshortaccess}{true}%
+ \glsxtrprovideaccsuppcmd{#1}{name}%
+ \glsxtrprovideaccsuppcmd{#1}{text}%
+ \glsxtrprovideaccsuppcmd{#1}{plural}%
+ }
+ \newcommand*{\glsxtrAccSuppAbbrSetTextShortAttrs}[1]{%
+ \glssetcategoryattribute{#1}{textshortaccess}{true}%
+ \glsxtrprovideaccsuppcmd{#1}{text}%
+ \glsxtrprovideaccsuppcmd{#1}{plural}%
+ }
+ \newcommand*{\glsxtrAccSuppAbbrSetNameShortAttrs}[1]{%
+ \glssetcategoryattribute{#1}{nameshortaccess}{true}%
+ \glsxtrprovideaccsuppcmd{#1}{name}%
+ }
+ \newcommand*{\glsxtrAccSuppAbbrSetNameLongAttrs}[1]{%
+ \glssetcategoryattribute{#1}{firstshortaccess}{true}%
+ \glssetcategoryattribute{#1}{textshortaccess}{true}%
+ \glsxtrprovideaccsuppcmd{#1}{first}%
+ \glsxtrprovideaccsuppcmd{#1}{firstpl}%
+ \glsxtrprovideaccsuppcmd{#1}{text}%
+ \glsxtrprovideaccsuppcmd{#1}{plural}%
+ }
+}
+{
+ \newcommand*{\glsaccessname}[1]{\glsentryname{#1}}
+ \newcommand*{\Glsaccessname}[1]{\Glsentryname{#1}}
+ \newcommand*{\GLSaccessname}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentryname{#1}}}
+ \newcommand*{\glsaccesstext}[1]{\glsentrytext{#1}}
+ \newcommand*{\Glsaccesstext}[1]{\Glsentrytext{#1}}
+ \newcommand*{\GLSaccesstext}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrytext{#1}}}
+ \newcommand*{\glsaccessplural}[1]{\glsentryplural{#1}}
+ \newcommand*{\Glsaccessplural}[1]{\Glsentryplural{#1}}
+ \newcommand*{\GLSaccessplural}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentryplural{#1}}}
+ \newcommand*{\glsaccessfirst}[1]{\glsentryfirst{#1}}
+ \newcommand*{\Glsaccessfirst}[1]{\Glsentryfirst{#1}}
+ \newcommand*{\GLSaccessfirst}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentryfirst{#1}}}
+ \newcommand*{\glsaccessfirstplural}[1]{\glsentryfirstplural{#1}}
+ \newcommand*{\Glsaccessfirstplural}[1]{\Glsentryfirstplural{#1}}
+ \newcommand*{\GLSaccessfirstplural}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentryfirstplural{#1}}}
+ \newcommand*{\glsaccesssymbol}[1]{\glsentrysymbol{#1}}
+ \newcommand*{\Glsaccesssymbol}[1]{\Glsentrysymbol{#1}}
+ \newcommand*{\GLSaccesssymbol}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrysymbol{#1}}}
+ \newcommand*{\glsaccesssymbolplural}[1]{\glsentrysymbolplural{#1}}
+ \newcommand*{\Glsaccesssymbolplural}[1]{\Glsentrysymbolplural{#1}}
+ \newcommand*{\GLSaccesssymbolplural}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrysymbolplural{#1}}}
+ \newcommand*{\glsaccessdesc}[1]{\glsentrydesc{#1}}
+ \newcommand*{\Glsaccessdesc}[1]{\Glsentrydesc{#1}}
+ \newcommand*{\GLSaccessdesc}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrydesc{#1}}}
+ \newcommand*{\glsaccessdescplural}[1]{\glsentrydescplural{#1}}
+ \newcommand*{\Glsaccessdescplural}[1]{\Glsentrydescplural{#1}}
+ \newcommand*{\GLSaccessdescplural}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrydescplural{#1}}}
+ \newcommand*{\glsaccessshort}[1]{\glsentryshort{#1}}
+ \newcommand*{\Glsaccessshort}[1]{\Glsentryshort{#1}}
+ \newcommand*{\GLSaccessshort}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentryshort{#1}}}
+ \newcommand*{\glsaccessshortpl}[1]{\glsentryshortpl{#1}}
+ \newcommand*{\Glsaccessshortpl}[1]{\Glsentryshortpl{#1}}
+ \newcommand*{\GLSaccessshortpl}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentryshortpl{#1}}}
+ \newcommand*{\glsaccesslong}[1]{\glsentrylong{#1}}
+ \newcommand*{\Glsaccesslong}[1]{\Glsentrylong{#1}}
+ \newcommand*{\GLSaccesslong}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrylong{#1}}}
+ \newcommand*{\glsaccesslongpl}[1]{\glsentrylongpl{#1}}
+ \newcommand*{\Glsaccesslongpl}[1]{\Glsentrylongpl{#1}}
+ \newcommand*{\GLSaccesslongpl}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrylongpl{#1}}}
+ \newcommand*{\@gls@initaccesskeys}{}
+ \newcommand{\@gls@setup@default@access}{}
+ \newcommand*{\glsxtrAccSuppAbbrSetNoLongAttrs}[1]{}
+ \newcommand*{\glsxtrAccSuppAbbrSetFirstLongAttrs}[1]{}
+ \newcommand*{\glsxtrAccSuppAbbrSetTextShortAttrs}[1]{}
+ \newcommand*{\glsxtrAccSuppAbbrSetNameShortAttrs}[1]{}
+ \newcommand*{\glsxtrAccSuppAbbrSetNameLongAttrs}[1]{}
+}
+\glsaddstoragekey{category}{general}{\glscategory}
+\newcommand{\glsifcategory}[4]{%
+ \ifglsfieldeq{#1}{category}{#2}{#3}{#4}%
+}
+\newcommand*{\glssetcategoryattribute}[3]{%
+ \csdef{@glsxtr@categoryattr@@#1@#2}{#3}%
+}
+\newcommand*{\glssetcategoriesattribute}[3]{%
+ \@for\@gls@thiscatlabel:=#1\do{%
+ \csgdef{@glsxtr@categoryattr@@\@gls@thiscatlabel @#2}{#3}%
+ }%
+}
+\newcommand*{\glssetcategoriesattributes}[3]{%
+ {%
+ \@for\@gls@thisattrlabel:=#2\do{%
+ \glssetcategoriesattribute{#1}{\@gls@thisattrlabel}{#3}%
+ }%
+ }%
+}
+\newcommand*{\glsgetcategoryattribute}[2]{%
+ \csuse{@glsxtr@categoryattr@@#1@#2}%
+}
+\newcommand*{\glsunsetcategoryattribute}[2]{%
+ \csundef{@glsxtr@categoryattr@@#1@#2}%
+}
+\newcommand*{\glshascategoryattribute}[4]{%
+ \ifcsvoid{@glsxtr@categoryattr@@#1@#2}{#4}{#3}%
+}
+\newcommand*{\glssetattribute}[3]{%
+ \glssetcategoryattribute{\glscategory{#1}}{#2}{#3}%
+}
+\newcommand*{\glsgetattribute}[2]{%
+ \glsgetcategoryattribute{\glscategory{#1}}{#2}%
+}
+\newcommand*{\glshasattribute}[4]{%
+ \ifglsentryexists{#1}%
+ {\glshascategoryattribute{\glscategory{#1}}{#2}{#3}{#4}}%
+ {#4}%
+}
+\newcommand{\glsifcategoryattribute}[5]{%
+ \ifcsundef{@glsxtr@categoryattr@@#1@#2}%
+ {#5}%
+ {\ifcsstring{@glsxtr@categoryattr@@#1@#2}{#3}{#4}{#5}}%
+}
+\newcommand{\glsifattribute}[5]{%
+ \ifglsentryexists{#1}%
+ {\glsifcategoryattribute{\glscategory{#1}}{#2}{#3}{#4}{#5}}%
+ {#5}%
+}
+\glssetcategoryattribute{general}{regular}{true}
+\glssetcategoryattribute{acronym}{regular}{true}
+\newcommand*{\glssetregularcategory}[1]{%
+ \glssetcategoryattribute{#1}{regular}{true}%
+}
+\newcommand{\glsifregularcategory}[3]{%
+ \glsifcategoryattribute{#1}{regular}{true}{#2}{#3}%
+}
+\newcommand{\glsifnotregularcategory}[3]{%
+ \glsifcategoryattribute{#1}{regular}{false}{#2}{#3}%
+}
+\newcommand{\glsifregular}[3]{%
+ \glsifregularcategory{\glscategory{#1}}{#2}{#3}%
+}
+\newcommand{\glsifnotregular}[3]{%
+ \glsifnotregularcategory{\glscategory{#1}}{#2}{#3}%
+}
+\newcommand{\glsforeachincategory}[5][\@glo@types]{%
+ \forallglossaries[#1]{#3}%
+ {%
+ \forglsentries[#3]{#4}%
+ {%
+ \glsifcategory{#4}{#2}{#5}{}%
+ }%
+ }%
+}
+\newcommand{\glsforeachwithattribute}[6][\@glo@types]{%
+ \forallglossaries[#1]{#4}%
+ {%
+ \forglsentries[#4]{#5}%
+ {%
+ \glsifattribute{#5}{#2}{#3}{#6}{}%
+ }%
+ }%
+}
+\ifdef\newterm
+{%
+ \renewcommand*{\newterm}[2][]{%
+ \newglossaryentry{#2}%
+ {type={index},category=index,name={#2},%
+ description={\glsxtrpostdescription\nopostdesc},#1}%
+ }
+ \glssetcategoryattribute{index}{regular}{true}
+ \newcommand*{\glsxtrpostdescindex}{}
+}
+{}
+\ifdef\printsymbols
+{%
+ \newcommand*{\glsxtrnewsymbol}[3][]{%
+ \newglossaryentry{#2}{name={#3},sort={#2},type=symbols,category=symbol,#1}%
+ }
+ \glssetcategoryattribute{symbol}{regular}{true}
+ \newcommand*{\glsxtrpostdescsymbol}{}
+}
+{}
+\ifdef\printnumbers
+{%
+\ifdef\printnumbers
+ \newcommand*{\glsxtrnewnumber}[3][]{%
+ \newglossaryentry{#2}{name={#3},sort={#2},type=numbers,category=number,#1}%
+ }
+ \glssetcategoryattribute{number}{regular}{true}
+ \newcommand*{\glsxtrpostdescnumber}{}
+}
+{}
+\newcommand*{\glsxtrsetcategory}[2]{%
+ \@for\@glsxtr@label:=#1\do
+ {%
+ \glsfieldxdef{\@glsxtr@label}{category}{#2}%
+ }%
+}
+\newcommand*{\glsxtrsetcategoryforall}[2]{%
+ \forallglossaries[#1]{\@glsxtr@type}{%
+ \forglsentries[\@glsxtr@type]{\@glsxtr@label}%
+ {%
+ \glsfieldxdef{\@glsxtr@label}{category}{#2}%
+ }%
+ }%
+}
+\newcommand*{\glsxtrfieldtitlecase}[2]{%
+ \expandafter\glsxtrfieldtitlecasecs\expandafter
+ {\csname glo@\glsdetoklabel{#1}@#2\endcsname}%
+}
+\ifdef\glscapitalisewords
+{
+ \newcommand*{\glsxtrfieldtitlecasecs}[1]{%
+ \expandafter\glscapitalisewords\expandafter{#1}}
+}
+{
+ \newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisewords{#1}}
+}
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \renewcommand*{\glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glshasattribute{#1}{glossdescfont}%
+ {%
+ \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossdescfont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossdescfont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossdescfont attribute
+ for entry `#1'. Ignoring}%
+ \let\@glsxtr@glossdescfont\@firstofone
+ }%
+ }%
+ {\let\@glsxtr@glossdescfont\@firstofone}%
+ \glsifattribute{#1}{glossdesc}{firstuc}%
+ {%
+ \@glsxtr@glossdescfont{\Glsaccessdesc{#1}}%
+ }%
+ {%
+ \glsifattribute{#1}{glossdesc}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \glsdescriptionaccessdisplay
+ {%
+ \@glsxtr@glossdescfont{\glsxtrfieldtitlecase{#1}{desc}}%
+ }%
+ {#1}%
+ }%
+ {%
+ \@glsxtr@glossdescfont{\glsaccessdesc{#1}}%
+ }%
+ }%
+ }%
+ }
+}
+{
+ \renewcommand*{\glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glshasattribute{#1}{glossdescfont}%
+ {%
+ \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossdescfont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossdescfont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossdescfont attribute
+ for entry `#1'. Ignoring}%
+ \let\@glsxtr@glossdescfont\@firstofone
+ }%
+ }%
+ {\let\@glsxtr@glossdescfont\@firstofone}%
+ \glsifattribute{#1}{glossdesc}{firstuc}%
+ {%
+ \@glsxtr@glossdescfont{\Glsentrydesc{#1}}%
+ }%
+ {%
+ \glsifattribute{#1}{glossdesc}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \@glsxtr@glossdescfont{\glsxtrfieldtitlecase{#1}{desc}}%
+ }%
+ {%
+ \@glsxtr@glossdescfont{\glsentrydesc{#1}}%
+ }%
+ }%
+ }%
+ }
+}
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \renewcommand*{\glossentryname}[1]{%
+ \@glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glshasattribute{#1}{glossnamefont}%
+ {%
+ \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossnamefont attribute
+ for entry `#1'. Reverting to default \string\glsnamefont}%
+ \let\@glsxtr@glossnamefont\glsnamefont
+ }%
+ }%
+ {\let\@glsxtr@glossnamefont\glsnamefont}%
+ \glsifattribute{#1}{glossname}{firstuc}%
+ {%
+ \glsnameaccessdisplay
+ {%
+ \@glsxtr@glossnamefont{\Glsentryname{#1}}%
+ }%
+ {#1}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \glsnameaccessdisplay
+ {%
+ \@glsxtr@glossnamefont{\glsxtrfieldtitlecase{#1}{name}}%
+ }%
+ {#1}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{uc}%
+ {%
+ \glsnameaccessdisplay
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}%
+ }%
+ {#1}%
+ }%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \glsnameaccessdisplay
+ {%
+ \expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}%
+ }%
+ {#1}%
+ }%
+ }%
+ }%
+ \glsxtrpostnamehook{#1}%
+ }%
+ }
+}
+{
+ \renewcommand*{\glossentryname}[1]{%
+ \@glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glshasattribute{#1}{glossnamefont}%
+ {%
+ \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossnamefont attribute
+ for entry `#1'. Reverting to default \string\glsnamefont}%
+ \let\@glsxtr@glossnamefont\glsnamefont
+ }%
+ }%
+ {\let\@glsxtr@glossnamefont\glsnamefont}%
+ \glsifattribute{#1}{glossname}{firstuc}%
+ {%
+ \@glsxtr@glossnamefont{\Glsentryname{#1}}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \@glsxtr@glossnamefont{\glsxtrfieldtitlecase{#1}{name}}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{uc}%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}%
+ }%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}%
+ }%
+ }%
+ }%
+ \glsxtrpostnamehook{#1}%
+ }%
+ }
+}
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \renewcommand*{\Glossentryname}[1]{%
+ \@glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glshasattribute{#1}{glossnamefont}%
+ {%
+ \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossnamefont attribute
+ for entry `#1'. Reverting to default \string\glsnamefont}%
+ \let\@glsxtr@glossnamefont\glsnamefont
+ }%
+ }%
+ {\let\@glsxtr@glossnamefont\glsnamefont}%
+ \glsnameaccessdisplay
+ {%
+ \@glsxtr@glossnamefont{\Glsentryname{#1}}%
+ }%
+ {#1}%
+ \glsxtrpostnamehook{#1}%
+ }%
+ }
+}
+{
+ \renewcommand*{\Glossentryname}[1]{%
+ \@glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glshasattribute{#1}{glossnamefont}%
+ {%
+ \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossnamefont attribute
+ for entry `#1'. Reverting to default \string\glsnamefont}%
+ \let\@glsxtr@glossnamefont\glsnamefont
+ }%
+ }%
+ {\let\@glsxtr@glossnamefont\glsnamefont}%
+ \@glsxtr@glossnamefont{\Glsentryname{#1}}%
+ \glsxtrpostnamehook{#1}%
+ }%
+ }
+}
+\newcommand*{\glsxtrpostnamehook}[1]{%
+ \let\@glsnumberformat\@glsxtr@defaultnumberformat
+ \glsxtrdoautoindexname{#1}{indexname}%
+ \glsextrapostnamehook{#1}%
+ \csuse{glsxtrpostname\glscategory{#1}}%
+}
+\newcommand*{\glsextrapostnamehook}[1]{}%
+\newcommand*{\glsdefpostname}[2]{%
+ \csdef{glsxtrpostname#1}{#2}%
+}
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \newcommand*{\glsxtr@setaccessdisplay}[1]{%
+ \ifcsdef{gls#1accessdisplay}%
+ {\letcs\@glsxtr@accessdisplay{gls#1accessdisplay}}%
+ {%
+ \protected@edef\@gls@thisval{#1}%
+ \@for\@gls@map:=\@gls@keymap\do{%
+ \protected@edef\@this@key{\expandafter\@secondoftwo\@gls@map}%
+ \ifdefequal{\@this@key}{\@gls@thisval}%
+ {%
+ \protected@edef\@gls@thisval{\expandafter\@firstoftwo\@gls@map}%
+ \@endfortrue
+ }%
+ {}%
+ }%
+ \ifcsdef{gls\@gls@thisval accessdisplay}%
+ {\letcs\@glsxtr@accessdisplay{gls\@gls@thisval accessdisplay}}%
+ {\let\@glsxtr@accessdisplay\@firstoftwo}%
+ }%
+ }
+}
+{%
+ \newcommand*{\glsxtr@setaccessdisplay}[1]{%
+ \let\@glsxtr@accessdisplay\@firstoftwo}
+}
+\newrobustcmd*{\glossentrynameother}[2]{%
+ \@glsdoifexistsorwarn{#1}%
+ {%
+ \glsxtr@setaccessdisplay{#2}%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glshasattribute{#1}{glossnamefont}%
+ {%
+ \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossnamefont attribute
+ for entry `#1'. Reverting to default \string\glsnamefont}%
+ \let\@glsxtr@glossnamefont\glsnamefont
+ }%
+ }%
+ {\let\@glsxtr@glossnamefont\glsnamefont}%
+ \glsifattribute{#1}{glossname}{firstuc}%
+ {%
+ \@glsxtr@accessdisplay
+ {\@glsxtr@glossnamefont{\@Gls@entry@field{#1}{#2}}}%
+ {#1}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \@glsxtr@accessdisplay
+ {\@glsxtr@glossnamefont{\glsxtrfieldtitlecase{#1}{#2}}}%
+ {#1}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{uc}%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@#2}%
+ \@glsxtr@accessdisplay
+ {\@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}}%
+ {#1}%
+ }%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@#2}%
+ \@glsxtr@accessdisplay
+ {\expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}}%
+ {#1}%
+ }%
+ }%
+ }%
+ \glsxtrpostnamehook{#1}%
+ }%
+}
+\newif\if@glsxtr@format@override
+\@glsxtr@format@overridefalse
+\@ifpackageloaded{hyperref}
+{
+ \ifHy@hyperindex
+ \newcommand*{\GlsXtrEnableIndexFormatOverride}{%
+ \@glsxtr@format@overridetrue
+ \appto\theindex{\let\glshypernumber\@firstofone}%
+ }
+ \else
+ \newcommand*{\GlsXtrEnableIndexFormatOverride}{%
+ \@glsxtr@format@overridetrue
+ \appto\theindex{\let\glshypernumber\hyperpage}%
+ }
+ \fi
+}
+{
+ \newcommand*{\GlsXtrEnableIndexFormatOverride}{%
+ \@glsxtr@format@overridetrue
+ }
+}
+\@onlypreamble\GlsXtrEnableIndexFormatOverride
+\newcommand*{\glsxtrdoautoindexname}[2]{%
+ \glshasattribute{#1}{#2}%
+ {%
+ \@glsxtr@autoindex@setname{#1}%
+ \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{#2}}%
+ \if@glsxtr@format@override
+ \ifx\@glsnumberformat\@glsxtr@defaultnumberformat
+ \else
+ \let\@glsxtr@attrval\@glsnumberformat
+ \fi
+ \fi
+ \ifdefstring{\@glsxtr@attrval}{true}%
+ {}%
+ {\protected@eappto\@glo@name{\@glsxtr@autoindex@encap\@glsxtr@attrval}}%
+ \expandafter\glsxtrautoindex\expandafter{\@glo@name}%
+ }%
+ {}%
+}
+\newcommand*{\glsxtrautoindex}{\index}
+\newcommand{\glsxtrautoindexesc}{%
+ \@gls@checkmkidxchars\@glo@sort
+ \@glsxtr@autoindex@doextra@esc\@glo@sort
+}
+\newcommand*{\@glsxtr@autoindex@setname}[1]{%
+ \protected@edef\@glo@name{\glsxtrautoindexentry{#1}}%
+ \glsxtrautoindexassignsort{\@glo@sort}{#1}%
+ \glsxtrautoindexesc
+ \epreto\@glo@name{\@glo@sort\@glsxtr@autoindex@at}%
+}
+\newcommand*{\glsxtrautoindexentry}[1]{\string\glsentryname{#1}}
+\newcommand*{\glsxtrautoindexassignsort}[2]{%
+ \glsletentryfield{#1}{#2}{sort}%
+}
+\newcommand*{\@glsxtr@autoindex@doextra@esc}[1]{%
+ \ifx\@glsxtr@autoindex@esc\@gls@quotechar
+ \else
+ \def\@gls@checkedmkidx{}%
+ \edef\@@glsxtr@checkspch{%
+ \noexpand\@glsxtr@autoindex@escquote\expandonce{#1}%
+ \noexpand\@empty\@glsxtr@autoindex@esc\noexpand\@nnil
+ \@glsxtr@autoindex@esc\noexpand\@empty\noexpand\@glsxtr@endescspch}%
+ \@@glsxtr@checkspch
+ \let#1\@gls@checkedmkidx\relax
+ \fi
+ \ifx\@glsxtr@autoindex@at\@gls@actualchar
+ \else
+ \def\@gls@checkedmkidx{}%
+ \edef\@@glsxtr@checkspch{%
+ \noexpand\@glsxtr@autoindex@escat\expandonce{#1}%
+ \noexpand\@empty\@glsxtr@autoindex@at\noexpand\@nnil
+ \@glsxtr@autoindex@at\noexpand\@empty\noexpand\@glsxtr@endescspch}%
+ \@@glsxtr@checkspch
+ \let#1\@gls@checkedmkidx\relax
+ \fi
+ \ifx\@glsxtr@autoindex@level\@gls@levelchar
+ \else
+ \def\@gls@checkedmkidx{}%
+ \edef\@@glsxtr@checkspch{%
+ \noexpand\@glsxtr@autoindex@esclevel\expandonce{#1}%
+ \noexpand\@empty\@glsxtr@autoindex@level\noexpand\@nnil
+ \@glsxtr@autoindex@level\noexpand\@empty\noexpand\@glsxtr@endescspch}%
+ \@@glsxtr@checkspch
+ \let#1\@gls@checkedmkidx\relax
+ \fi
+ \ifx\@glsxtr@autoindex@encap\@gls@encapchar
+ \else
+ \def\@gls@checkedmkidx{}%
+ \edef\@@glsxtr@checkspch{%
+ \noexpand\@glsxtr@autoindex@escencap\expandonce{#1}%
+ \noexpand\@empty\@glsxtr@autoindex@encap\noexpand\@nnil
+ \@glsxtr@autoindex@encap\noexpand\@empty\noexpand\@glsxtr@endescspch}%
+ \@@glsxtr@checkspch
+ \let#1\@gls@checkedmkidx\relax
+ \fi
+}
+\newcommand*{\@glsxtr@autoindex@at}{}
+\newcommand*{\GlsXtrSetActualChar}[1]{%
+ \gdef\@glsxtr@autoindex@at{#1}%
+ \def\@glsxtr@autoindex@escat##1#1##2#1##3\@glsxtr@endescspch{%
+ \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@escat}{##1}{##2}{##3}%
+ }%
+}
+\@onlypreamble\GlsXtrSetActualChar
+\makeatother
+\GlsXtrSetActualChar{@}
+\makeatletter
+\newcommand*{\@glsxtr@autoindex@encap}{}
+\newcommand*{\GlsXtrSetEncapChar}[1]{%
+ \gdef\@glsxtr@autoindex@encap{#1}%
+ \def\@glsxtr@autoindex@escencap##1#1##2#1##3\@glsxtr@endescspch{%
+ \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@escencap}{##1}{##2}{##3}%
+ }%
+}
+\GlsXtrSetEncapChar{|}
+\@onlypreamble\GlsXtrSetEncapChar
+\newcommand*{\@glsxtr@autoindex@level}{}
+\newcommand*{\GlsXtrSetLevelChar}[1]{%
+ \gdef\@glsxtr@autoindex@level{#1}%
+ \def\@glsxtr@autoindex@esclevel##1#1##2#1##3\@glsxtr@endescspch{%
+ \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@esclevel}{##1}{##2}{##3}%
+ }%
+}
+\GlsXtrSetLevelChar{!}
+\@onlypreamble\GlsXtrSetLevelChar
+\newcommand*{\@glsxtr@autoindex@esc}{"}
+\newcommand*{\GlsXtrSetEscChar}[1]{%
+ \gdef\@glsxtr@autoindex@esc{#1}%
+ \def\@glsxtr@autoindex@escquote##1#1##2#1##3\@glsxtr@endescspch{%
+ \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@escquote}{##1}{##2}{##3}%
+ }%
+}
+\GlsXtrSetEscChar{"}
+\@onlypreamble\GlsXtrSetEscChar
+\ifdef\actualchar
+ {\expandafter\GlsXtrSetActualChar\expandafter{\actualchar}}
+ {}
+\ifdef\quotechar
+ {\expandafter\GlsXtrSetEscChar\expandafter{\quotechar}}
+ {}
+\ifdef\levelchar
+ {\expandafter\GlsXtrSetLevelChar\expandafter{\levelchar}}
+ {}
+\ifdef\encapchar
+ {\expandafter\GlsXtrSetEncapChar\expandafter{\encapchar}}
+ {}
+\def\@glsxtr@gobbleto@endescspch#1\@glsxtr@endescspch{}
+\newcommand*{\@@glsxtr@autoindex@escspch}[5]{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#3}%
+ \ifx\@nnil#3\relax
+ \def\@@glsxtr@checkspch{\@glsxtr@gobbleto@endescspch#5\@glsxtr@endescspch}%
+ \else
+ \ifx\@nnil#4\relax
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@glsxtr@checkspch{\@glsxtr@gobbleto@endescspch
+ #4#5\@glsxtr@endescspch}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@glsxtr@autoindex@esc#1}%
+ \def\@@glsxtr@checkspch{#2#5#1\@nnil#1\@glsxtr@endescspch}%
+ \fi
+ \fi
+ \@@glsxtr@checkspch
+}
+\renewcommand*{\Glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \Glsaccessdesc{#1}%
+ }%
+}
+\ifdef\texorpdfstring
+{
+ \renewcommand*{\glossentrysymbol}[1]{%
+ \texorpdfstring{\@glossentrysymbol{#1}}{\glsentrypdfsymbol{#1}}%
+ }
+}
+{
+ \renewcommand*{\glossentrysymbol}[1]{\@glossentrysymbol{#1}}
+}
+\newcommand{\glsentrypdfsymbol}[1]{\glsentrysymbol{#1}}
+\newrobustcmd*{\@glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \begingroup
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glshasattribute{#1}{glosssymbolfont}%
+ {%
+ \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glosssymbolfont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glosssymbolfont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glosssymbolfont attribute
+ for entry `#1'. Ignoring}%
+ \let\@glsxtr@glosssymbolfont\@firstofone
+ }%
+ }%
+ {\let\@glsxtr@glosssymbolfont\@firstofone}%
+ \@glsxtr@glosssymbolfont{\glsaccesssymbol{#1}}%
+ \endgroup
+ }%
+}
+\renewcommand*{\Glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \Glsaccesssymbol{#1}%
+ }%
+}
+\newcommand*{\GlsXtrEnableInitialTagging}{%
+ \@ifstar\s@glsxtr@enabletagging\@glsxtr@enabletagging
+}
+\@onlypreamble\GlsXtrEnableInitialTagging
+\newcommand*{\s@glsxtr@enabletagging}[2]{%
+ \undef#2%
+ \@glsxtr@enabletagging{#1}{#2}%
+}
+\newcommand*{\@glsxtr@enabletagging}[2]{%
+ \@for\@glsxtr@cat:=#1\do
+ {%
+ \ifdefempty\@glsxtr@cat
+ {}%
+ {\glssetcategoryattribute{\@glsxtr@cat}{tagging}{true}}%
+ }%
+ \newrobustcmd*#2[1]{##1}%
+ \def\@glsxtr@taggingcs{#2}%
+ \renewcommand*\@glsxtr@activate@initialtagging{%
+ \let#2\@glsxtr@tag
+ }%
+ \ifundef\@gls@preglossaryhook
+ {\GlossariesExtraWarning{Initial tagging requires at least
+ glossaries.sty v4.19 to work correctly}}%
+ {}%
+}
+\ifundef\mfu@checkword@do
+{
+ \newcommand*{\mfu@checkword@do}[1]{%
+ \ifdefstring{\mfu@checkword@arg}{#1}%
+ {%
+ \let\@mfu@domakefirstuc\@firstofone
+ \listbreak
+ }%
+ {}%
+ }
+ \ifundef\mfu@checkword
+ {
+ \newcommand{\@glsxtr@do@titlecaps@warn}{%
+ \GlossariesExtraWarning{mfirstuc.sty too old. Title Caps
+ support not available}%
+ \let\@glsxtr@do@titlecaps@warn\relax
+ }
+ }
+ {
+ \renewcommand*{\mfu@checkword}[1]{%
+ \def\mfu@checkword@arg{#1}%
+ \let\@mfu@domakefirstuc\makefirstuc
+ \forlistloop\mfu@checkword@do\@mfu@nocaplist
+ }
+ }
+}
+{}% no patch required
+\newcommand*{\@glsxtr@do@titlecaps@warn}{}
+\newcommand*\@glsxtr@activate@initialtagging{}
+\newrobustcmd*{\@glsxtr@tag}[1]{%
+ \glsifattribute{\glscurrententrylabel}{tagging}{true}%
+ {\glsxtrtagfont{#1}}{#1}%
+}
+\newcommand*{\glsxtrtagfont}[1]{\underline{#1}}
+\ifdef\@gls@preglossaryhook
+{
+ \renewcommand*{\@gls@preglossaryhook}{%
+ \@glsxtr@activate@initialtagging
+ \ifundef\@glsxtr@org@postdescription
+ {%
+ \let\@glsxtr@org@postdescription\glspostdescription
+ \renewcommand*{\glspostdescription}{%
+ \ifglsentryexists{\glscurrententrylabel}%
+ {%
+ \glsxtrpostdescription
+ \@glsxtr@org@postdescription
+ }%
+ {}%
+ }%
+ }%
+ {}%
+ \glossxtrsetpopts
+ }%
+}
+{}
+\newcommand*{\glsxtrpostdescription}{%
+ \csuse{glsxtrpostdesc\glscategory{\glscurrententrylabel}}%
+}
+\newcommand*{\glsxtrpostdescgeneral}{}
+\newcommand*{\glsxtrpostdescterm}{}
+\newcommand*{\glsxtrpostdescacronym}{}
+\newcommand*{\glsxtrpostdescabbreviation}{}
+\newcommand*{\glsdefpostdesc}[2]{%
+ \csdef{glsxtrpostdesc#1}{#2}%
+}
+\renewcommand*{\glspostlinkhook}{%
+ \ifglsentryexists{\glslabel}{\glsxtrpostlinkhook}{}%
+}
+\newcommand*{\glsxtrpostlinkhook}{%
+ \glsxtrdiscardperiod{\glslabel}%
+ {\glsxtrpostlinkendsentence}%
+ {\glsxtrifcustomdiscardperiod
+ {\glsxtrifperiod{\glsxtrpostlinkendsentence}{\glsxtrpostlink}}%
+ {\glsxtrpostlink}%
+ }%
+}
+\newcommand*{\glsxtrifcustomdiscardperiod}[2]{#2}
+\newcommand*{\glsxtrpostlink}{%
+ \csuse{glsxtrpostlink\glscategory{\glslabel}}%
+}
+\newcommand*{\glsdefpostlink}[2]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\PackageError{glossaries-extra}
+ {Invalid empty category label in \string\glsdefpostlink}{}}%
+ {\csdef{glsxtrpostlink#1}{#2}}%
+}
+\newcommand*{\glsxtrpostlinkendsentence}{%
+ \ifcsdef{glsxtrpostlink\glscategory{\glslabel}}
+ {%
+ \csuse{glsxtrpostlink\glscategory{\glslabel}}%
+ .\spacefactor\sfcode`\. \relax
+ }%
+ {%
+ \spacefactor\sfcode`\. \relax
+ }%
+}
+\newcommand*{\glsxtrpostlinkAddDescOnFirstUse}{%
+ \glsxtrifwasfirstuse{\space\glsxtrparen{\glsaccessdesc{\glslabel}}}{}%
+}
+\newcommand*{\glsxtrpostlinkAddSymbolOnFirstUse}{%
+ \glsxtrifwasfirstuse
+ {%
+ \ifglshassymbol{\glslabel}%
+ {\space\glsxtrparen{\glsaccesssymbol{\glslabel}}}%
+ {}%
+ }%
+ {}%
+}
+\newcommand*{\glsxtrpostlinkAddSymbolDescOnFirstUse}{%
+ \glsxtrifwasfirstuse
+ {%
+ \space\glsxtrparen
+ {%
+ \ifglshassymbol{\glslabel}%
+ {\glsaccesssymbol{\glslabel}, }%
+ {}%
+ \glsaccessdesc{\glslabel}%
+ }%
+ }%
+ {}%
+}
+\newcommand*{\glsxtrdiscardperiod}[3]{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsifattribute{#1}{retainfirstuseperiod}{true}%
+ {#3}%
+ {%
+ \glsifattribute{#1}{discardperiod}{true}%
+ {%
+ \glsifplural
+ {%
+ \glsifattribute{#1}{pluraldiscardperiod}{true}%
+ {\glsxtrifperiod{#2}{#3}}%
+ {#3}%
+ }%
+ {%
+ \glsxtrifperiod{#2}{#3}%
+ }%
+ }%
+ {#3}%
+ }%
+ }%
+ {%
+ \glsifattribute{#1}{discardperiod}{true}%
+ {%
+ \glsifplural
+ {%
+ \glsifattribute{#1}{pluraldiscardperiod}{true}%
+ {\glsxtrifperiod{#2}{#3}}%
+ {#3}%
+ }%
+ {%
+ \glsxtrifperiod{#2}{#3}%
+ }%
+ }%
+ {#3}%
+ }%
+}
+\newcommand*{\glsxtrifperiod}[1]{\new@ifnextchar.{\@firstoftwo{#1}}}
+\newcommand*{\glsxtr@punclist}{.,:;?!}
+\newcommand*{\glsxtraddpunctuationmark}[1]{\appto\glsxtr@punclist{#1}}
+\newcommand*{\glsxtrsetpunctuationmarks}[1]{\def\glsxtr@punclist{#1}}
+\newcommand*{\glsxtrifnextpunc}[2]{%
+ \def\reserved@a{#1}%
+ \def\reserved@b{#2}%
+ \futurelet\@glspunc@token\glsxtr@ifnextpunc
+}
+\newcommand*{\glsxtr@ifnextpunc}{%
+ \glsxtr@ifpunctoken{\@glspunc@token}{\let\reserved@b\reserved@a}{}%
+ \reserved@b
+}
+\newcommand*{\glsxtr@ifpunctoken}[1]{%
+ \expandafter\@glsxtr@ifpunctoken\expandafter#1\glsxtr@punclist\@nnil
+}
+\def\@glsxtr@ifpunctoken#1#2{%
+ \let\reserved@d=#2%
+ \ifx\reserved@d\@nnil
+ \let\glsxtr@next\@glsxtr@notfoundinlist
+ \else
+ \ifx#1\reserved@d
+ \let\glsxtr@next\@glsxtr@foundinlist
+ \else
+ \let\glsxtr@next\@glsxtr@ifpunctoken
+ \fi
+ \fi
+ \glsxtr@next#1%
+}
+\def\@glsxtr@foundinlist#1\@nnil{\@firstoftwo}
+\def\@glsxtr@notfoundinlist#1{\@secondoftwo}
+\newcommand{\glsxtrdopostpunc}[1]{%
+ \glsxtrifnextpunc{\@glsxtr@swaptwo{#1}}{#1}%
+}
+\newcommand{\@glsxtr@swaptwo}[2]{#2#1}
+\define@key{glsxtrabbrv}{category}{%
+ \protected@edef\glscategorylabel{#1}%
+}
+\define@key{glsxtrabbrv}{shortplural}{%
+ \def\@gls@shortpl{#1}%
+}
+\define@key{glsxtrabbrv}{longplural}{%
+ \def\@gls@longpl{#1}%
+}
+\newtoks\glsshortpltok
+\newtoks\glslongpltok
+\newcommand*{\@glsxtr@insertdots}[2]{%
+ \def#1{}%
+ \@glsxtr@insert@dots#1#2\@nnil
+}
+\newcommand*{\@glsxtr@insert@dots}[2]{%
+ \ifx\@nnil#2\relax
+ \let\@glsxtr@insert@dots@next\@gobble
+ \else
+ \ifx\relax#2\relax
+ \else
+ \appto#1{#2.}%
+ \fi
+ \let\@glsxtr@insert@dots@next\@glsxtr@insert@dots
+ \fi
+ \@glsxtr@insert@dots@next#1%
+}
+\newcommand*{\glsxtrwordsep}{\space}
+\newcommand*{\glsxtrword}[1]{#1}
+\newcommand*{\@glsxtr@markwordseps}[2]{%
+ \def#1{}%
+ \@glsxtr@mark@wordseps#1#2 \@nnil
+}
+\def\@glsxtr@mark@wordseps#1#2 #3{%
+ \ifdefempty{#1}%
+ {\def#1{\protect\glsxtrword{#2}}}%
+ {\appto#1{\protect\glsxtrwordsep\protect\glsxtrword{#2}}}%
+ \ifx\@nnil#3\relax
+ \let\@glsxtr@mark@wordseps@next\relax
+ \else
+ \def\@glsxtr@mark@wordseps@next{%
+ \@glsxtr@mark@wordseps#1#3}%
+ \fi
+ \@glsxtr@mark@wordseps@next
+}
+\newcommand*{\newabbreviation}[4][]{%
+ \glsxtr@newabbreviation{#1}{#2}{#3}{#4}%
+}
+\newcommand*{\glsxtr@newabbreviation}[4]{%
+ \glskeylisttok{#1}%
+ \glslabeltok{#2}%
+ \glsshorttok{#3}%
+ \glslongtok{#4}%
+ \def\glsxtrorgshort{#3}%
+ \def\glsxtrorglong{#4}%
+ \def\ExtraCustomAbbreviationFields{}%
+ \@gls@initaccesskeys
+ \def\glscategorylabel{abbreviation}%
+ \setkeys*{glsxtrabbrv}[shortplural,longplural]{#1}%
+ \ifcsdef{@glsabbrv@current@\glscategorylabel}%
+ {%
+ \let\@glsxtr@orgwarndep\GlsXtrWarnDeprecatedAbbrStyle
+ \let\GlsXtrWarnDeprecatedAbbrStyle\@gobbletwo
+ \glsxtr@applyabbrvstyle{\csname @glsabbrv@current@\glscategorylabel\endcsname}%
+ \let\GlsXtrWarnDeprecatedAbbrStyle\@glsxtr@orgwarndep
+ }%
+ {%
+ \glsxtr@applyabbrvstyle{\@glsabbrv@current@abbreviation}%
+ }%
+ \def\@gls@longpl{#4\glspluralsuffix}%
+ \let\@gls@default@longpl\@gls@longpl
+ \glsifcategoryattribute{\glscategorylabel}{markwords}{true}%
+ {%
+ \@glsxtr@markwordseps\@gls@long{#4}%
+ \expandafter\def\expandafter\@gls@longpl\expandafter
+ {\@gls@long\glspluralsuffix}%
+ \let\@gls@default@longpl\@gls@longpl
+ \expandafter\glslongtok\expandafter{\@gls@long}%
+ }%
+ {}%
+ \glsifcategoryattribute{\glscategorylabel}{markshortwords}{true}%
+ {%
+ \@glsxtr@markwordseps\@gls@short{#3}%
+ }%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{insertdots}{true}%
+ {%
+ \@glsxtr@insertdots\@gls@short{#3}%
+ \appto\@gls@short{\@}%
+ }%
+ {\def\@gls@short{#3}}%
+ }%
+ \glsifcategoryattribute{\glscategorylabel}{aposplural}{true}%
+ {%
+ \expandafter\def\expandafter\@gls@shortpl\expandafter{\@gls@short
+ '\abbrvpluralsuffix}%
+ }%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{noshortplural}{true}%
+ {%
+ \let\@gls@shortpl\@gls@short
+ }%
+ {%
+ \expandafter\def\expandafter\@gls@shortpl\expandafter{\@gls@short
+ \abbrvpluralsuffix}%
+ }%
+ }%
+ \expandafter\glsshorttok\expandafter{\@gls@short}%
+ \glsxtrnewabbrevpresetkeyhook{#1}{#2}{#3}%
+ \setkeys*{glsxtrabbrv}[category]{#1}%
+ \let\@gls@org@longpl\@gls@longpl
+ \let\@gls@org@shortpl\@gls@shortpl
+ \ifx\@gls@default@longpl\@gls@longpl
+ \else
+ \glsifcategoryattribute{\glscategorylabel}{markwords}{true}%
+ {%
+ \expandafter\@glsxtr@markwordseps\expandafter\@gls@longpl\expandafter
+ {\@gls@longpl}%
+ }%
+ {}%
+ \fi
+ \expandafter\glsshortpltok\expandafter{\@gls@shortpl}%
+ \expandafter\glslongpltok\expandafter{\@gls@longpl}%
+ \@gls@setup@default@access
+ \newabbreviationhook
+ \protected@edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\glsxtrabbrvtype,%
+ category=abbreviation,%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshortpltok},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongpltok},%
+ name={\the\glsshorttok},%
+ \CustomAbbreviationFields,%
+ \ExtraCustomAbbreviationFields
+ \the\glskeylisttok
+ }%
+ }%
+ \@do@newglossaryentry
+ \@glsxtr@addabbreviationlist{\glsentrytype{\the\glslabeltok}}%
+ \GlsXtrPostNewAbbreviation
+}
+\newcommand*{\glsxtrnewabbrevpresetkeyhook}[3]{}
+\newcommand*{\GlsXtrPostNewAbbreviation}{}
+\newcommand*{\newabbreviationhook}{}
+\newcommand*{\CustomAbbreviationFields}{}
+\newcommand*{\glsxtrparen}[1]{(#1)}
+\newcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{#1}}#2\glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}%
+}
+\newcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslong{#1}}#2\glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}%
+}
+\newcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}%
+}
+\newcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}%
+}
+\newcommand*{\glsxtrfullsep}[1]{\space}
+\newcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}
+\newcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}
+\newcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}
+\newcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}
+\renewcommand*{\glsentryfull}[1]{\glsxtrinlinefullformat{#1}{}}
+\renewcommand*{\Glsentryfull}[1]{\Glsxtrinlinefullformat{#1}{}}
+\renewcommand*{\glsentryfullpl}[1]{\glsxtrinlinefullplformat{#1}{}}
+\renewcommand*{\Glsentryfullpl}[1]{\Glsxtrinlinefullplformat{#1}{}}
+\newcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{#1}}
+\newcommand*{\glsfirstabbrvdefaultfont}[1]{\glsabbrvdefaultfont{#1}}
+\newcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{#1}}
+\newcommand*{\glsabbrvdefaultfont}[1]{#1}
+\newcommand*{\glslongfont}[1]{\glslongdefaultfont{#1}}
+\newcommand*{\glslongdefaultfont}[1]{#1}
+\newcommand*{\glsfirstlongfont}[1]{\glslongfont{#1}}
+\newcommand*{\glsfirstlongdefaultfont}[1]{\glslongdefaultfont{#1}}
+\newcommand*{\glsxtrabbrvpluralsuffix}{\glspluralsuffix}
+\newcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}
+\newrobustcmd*{\glsxtrfull}{\@gls@hyp@opt\ns@glsxtrfull}
+\newcommand*\ns@glsxtrfull[2][]{%
+ \new@ifnextchar[{\@glsxtr@full{#1}{#2}}%
+ {\@glsxtr@full{#1}{#2}[]}%
+}
+\def\@glsxtr@full#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\glsxtrinlinefullformat{#2}{#3}}%
+ \glsxtrsetupfulldefs
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@firstoftwo
+}
+\newrobustcmd*{\Glsxtrfull}{\@gls@hyp@opt\ns@Glsxtrfull}
+\newcommand*\ns@Glsxtrfull[2][]{%
+ \new@ifnextchar[{\@Glsxtr@full{#1}{#2}}%
+ {\@Glsxtr@full{#1}{#2}[]}%
+}
+\def\@Glsxtr@full#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\Glsxtrinlinefullformat{#2}{#3}}%
+ \glsxtrsetupfulldefs
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\GLSxtrfull}{\@gls@hyp@opt\ns@GLSxtrfull}
+\newcommand*\ns@GLSxtrfull[2][]{%
+ \new@ifnextchar[{\@GLSxtr@full{#1}{#2}}%
+ {\@GLSxtr@full{#1}{#2}[]}%
+}
+\def\@GLSxtr@full#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\mfirstucMakeUppercase{\glsxtrinlinefullformat{#2}{#3}}}%
+ \glsxtrsetupfulldefs
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\glsxtrfullpl}{\@gls@hyp@opt\ns@glsxtrfullpl}
+\newcommand*\ns@glsxtrfullpl[2][]{%
+ \new@ifnextchar[{\@glsxtr@fullpl{#1}{#2}}%
+ {\@glsxtr@fullpl{#1}{#2}[]}%
+}
+\def\@glsxtr@fullpl#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\glsxtrinlinefullplformat{#2}{#3}}%
+ \glsxtrsetupfulldefs
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Glsxtrfullpl}{\@gls@hyp@opt\ns@Glsxtrfullpl}
+\newcommand*\ns@Glsxtrfullpl[2][]{%
+ \new@ifnextchar[{\@Glsxtr@fullpl{#1}{#2}}%
+ {\@Glsxtr@fullpl{#1}{#2}[]}%
+}
+\def\@Glsxtr@fullpl#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\Glsxtrinlinefullplformat{#2}{#3}}%
+ \glsxtrsetupfulldefs
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\GLSxtrfullpl}{\@gls@hyp@opt\ns@GLSxtrfullpl}
+\newcommand*\ns@GLSxtrfullpl[2][]{%
+ \new@ifnextchar[{\@GLSxtr@fullpl{#1}{#2}}%
+ {\@GLSxtr@fullpl{#1}{#2}[]}%
+}
+\def\@GLSxtr@fullpl#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\glsxtrinlinefullplformat{#2}{#3}}}%
+ \glsxtrsetupfulldefs
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\glsxtrshort}{\@gls@hyp@opt\ns@glsxtrshort}
+\newcommand*{\ns@glsxtrshort}[2][]{%
+ \new@ifnextchar[{\@glsxtrshort{#1}{#2}}{\@glsxtrshort{#1}{#2}[]}%
+}
+\def\@glsxtrshort#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsabbrvfont{\glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Glsxtrshort}{\@gls@hyp@opt\ns@Glsxtrshort}
+\newcommand*{\ns@Glsxtrshort}[2][]{%
+ \new@ifnextchar[{\@Glsxtrshort{#1}{#2}}{\@Glsxtrshort{#1}{#2}[]}%
+}
+\def\@Glsxtrshort#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsabbrvfont{\Glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\GLSxtrshort}{\@gls@hyp@opt\ns@GLSxtrshort}
+\newcommand*{\ns@GLSxtrshort}[2][]{%
+ \new@ifnextchar[{\@GLSxtrshort{#1}{#2}}{\@GLSxtrshort{#1}{#2}[]}%
+}
+\def\@GLSxtrshort#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase
+ {\glsabbrvfont{\glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\glsxtrlong}{\@gls@hyp@opt\ns@glsxtrlong}
+\newcommand*{\ns@glsxtrlong}[2][]{%
+ \new@ifnextchar[{\@glsxtrlong{#1}{#2}}{\@glsxtrlong{#1}{#2}[]}%
+}
+\def\@glsxtrlong#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glslongfont{\glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Glsxtrlong}{\@gls@hyp@opt\ns@Glsxtrlong}
+\newcommand*{\ns@Glsxtrlong}[2][]{%
+ \new@ifnextchar[{\@Glsxtrlong{#1}{#2}}{\@Glsxtrlong{#1}{#2}[]}%
+}
+\def\@Glsxtrlong#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glslongfont{\Glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\GLSxtrlong}{\@gls@hyp@opt\ns@GLSxtrlong}
+\newcommand*{\ns@GLSxtrlong}[2][]{%
+ \new@ifnextchar[{\@GLSxtrlong{#1}{#2}}{\@GLSxtrlong{#1}{#2}[]}%
+}
+\def\@GLSxtrlong#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase
+ {\glslongfont{\glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\glsxtrshortpl}{\@gls@hyp@opt\ns@glsxtrshortpl}
+\newcommand*{\ns@glsxtrshortpl}[2][]{%
+ \new@ifnextchar[{\@glsxtrshortpl{#1}{#2}}{\@glsxtrshortpl{#1}{#2}[]}%
+}
+\def\@glsxtrshortpl#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsabbrvfont{\glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Glsxtrshortpl}{\@gls@hyp@opt\ns@Glsxtrshortpl}
+\newcommand*{\ns@Glsxtrshortpl}[2][]{%
+ \new@ifnextchar[{\@Glsxtrshortpl{#1}{#2}}{\@Glsxtrshortpl{#1}{#2}[]}%
+}
+\def\@Glsxtrshortpl#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsabbrvfont{\Glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\GLSxtrshortpl}{\@gls@hyp@opt\ns@GLSxtrshortpl}
+\newcommand*{\ns@GLSxtrshortpl}[2][]{%
+ \new@ifnextchar[{\@GLSxtrshortpl{#1}{#2}}{\@GLSxtrshortpl{#1}{#2}[]}%
+}
+\def\@GLSxtrshortpl#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase
+ {\glsabbrvfont{\glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\glsxtrlongpl}{\@gls@hyp@opt\ns@glsxtrlongpl}
+\newcommand*{\ns@glsxtrlongpl}[2][]{%
+ \new@ifnextchar[{\@glsxtrlongpl{#1}{#2}}{\@glsxtrlongpl{#1}{#2}[]}%
+}
+\def\@glsxtrlongpl#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glslongfont{\glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Glsxtrlongpl}{\@gls@hyp@opt\ns@Glsxtrlongpl}
+\newcommand*{\ns@Glsxtrlongpl}[2][]{%
+ \new@ifnextchar[{\@Glsxtrlongpl{#1}{#2}}{\@Glsxtrlongpl{#1}{#2}[]}%
+}
+\def\@Glsxtrlongpl#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glslongfont{\Glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\GLSxtrlongpl}{\@gls@hyp@opt\ns@GLSxtrlongpl}
+\newcommand*{\ns@GLSxtrlongpl}[2][]{%
+ \new@ifnextchar[{\@GLSxtrlongpl{#1}{#2}}{\@GLSxtrlongpl{#1}{#2}[]}%
+}
+\def\@GLSxtrlongpl#1#2[#3]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase
+ {\glslongfont{\glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newcommand*{\glssetabbrvfmt}[1]{%
+ \ifcsdef{@glsabbrv@current@#1}%
+ {\glsxtr@applyabbrvfmt{\csname @glsabbrv@current@#1\endcsname}}%
+ {\glsxtr@applyabbrvfmt{\@glsabbrv@current@abbreviation}}%
+}
+\newrobustcmd*{\glsuseabbrvfont}[2]{{\glssetabbrvfmt{#2}\glsabbrvfont{#1}}}
+\newrobustcmd*{\glsuselongfont}[2]{{\glssetabbrvfmt{#2}\glslongfont{#1}}}
+\newcommand*{\glsxtrgenabbrvfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \glsxtrsubsequentplfmt{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Glsxtrsubsequentplfmt{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\glsxtrsubsequentplfmt{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \glsxtrsubsequentfmt{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Glsxtrsubsequentfmt{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\glsxtrsubsequentfmt{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ }%
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \glsxtrfullplformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Glsxtrfullplformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\glsxtrfullplformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \glsxtrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Glsxtrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\glsxtrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \glscustomtext
+ }%
+}
+\newcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glsabbrvfont{\glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}%
+ \ifglsxtrinsertinside \else#2\fi
+}
+\let\glsxtrdefaultsubsequentfmt\glsxtrsubsequentfmt
+\newcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glsabbrvfont{\glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}%
+ \ifglsxtrinsertinside \else#2\fi
+}
+\let\glsxtrdefaultsubsequentplfmt\glsxtrsubsequentplfmt
+\newcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glsabbrvfont{\Glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}%
+ \ifglsxtrinsertinside \else#2\fi
+}
+\let\Glsxtrdefaultsubsequentfmt\Glsxtrsubsequentfmt
+\newcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glsabbrvfont{\Glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}%
+ \ifglsxtrinsertinside \else#2\fi
+}
+\let\Glsxtrdefaultsubsequentplfmt\Glsxtrsubsequentplfmt
+\newcommand*{\setabbreviationstyle}[2][abbreviation]{%
+ \ifcsundef{@glsabbrv@dispstyle@setup@#2}
+ {%
+ \PackageError{glossaries-extra}{Undefined abbreviation style `#2'}{}%
+ }%
+ {%
+ \ifcsstring{@glsabbrv@current@#1}{#2}%
+ {%
+ }%
+ {%
+ \def\@glsxtr@dostylewarn{}%
+ \glsforeachincategory{#1}{\@gls@type}{\@gls@label}%
+ {%
+ \def\@glsxtr@dostylewarn{\GlossariesWarning{Abbreviation
+ style has been switched \MessageBreak
+ for category `#1', \MessageBreak
+ but there have already been entries \MessageBreak
+ defined for this category. Unwanted \MessageBreak
+ side-effects may result}}%
+ \@endfortrue
+ }%
+ \@glsxtr@dostylewarn
+ \csdef{@glsabbrv@current@#1}{#2}%
+ \protected@edef\glscategorylabel{#1}%
+ \glsxtr@applyabbrvstyle{#2}%
+ }%
+ }%
+}
+\newcommand*{\glsxtr@applyabbrvstyle}[1]{%
+ \csuse{@glsabbrv@dispstyle@setup@#1}%
+ \csuse{@glsabbrv@dispstyle@fmts@#1}%
+}
+\newcommand*{\glsxtr@applyabbrvfmt}[1]{%
+ \csuse{@glsabbrv@dispstyle@fmts@#1}%
+}
+\newcommand*{\newabbreviationstyle}[3]{%
+ \ifcsdef{@glsabbrv@dispstyle@setup@#1}
+ {%
+ \PackageError{glossaries-extra}{Abbreviation style `#1' already
+ defined}{}%
+ }%
+ {%
+ \csdef{@glsabbrv@dispstyle@setup@#1}{%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{}%
+ #2}%
+ \csdef{@glsabbrv@dispstyle@fmts@#1}{%
+ \renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}%
+ \renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}%
+ \renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}%
+ \renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}%
+ \let\glsxtrsubsequentfmt\glsxtrdefaultsubsequentfmt
+ \let\glsxtrsubsequentplfmt\glsxtrdefaultsubsequentplfmt
+ \let\Glsxtrsubsequentfmt\Glsxtrdefaultsubsequentfmt
+ \let\Glsxtrsubsequentplfmt\Glsxtrdefaultsubsequentplfmt
+ #3}%
+ }%
+}
+\newcommand*{\renewabbreviationstyle}[3]{%
+ \ifcsundef{@glsabbrv@dispstyle@setup@#1}
+ {%
+ \PackageError{glossaries-extra}{Abbreviation style `#1' not defined}{}%
+ }%
+ {%
+ \csdef{@glsabbrv@dispstyle@setup@#1}{%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{}%
+ #2}%
+ \csdef{@glsabbrv@dispstyle@fmts@#1}{%
+ \renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}%
+ \renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}%
+ \renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}%
+ \renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}%
+ #3}%
+ }%
+}
+\newcommand*{\letabbreviationstyle}[2]{%
+ \csletcs{@glsabbrv@dispstyle@setup@#1}{@glsabbrv@dispstyle@setup@#2}%
+ \csletcs{@glsabbrv@dispstyle@fmts@#1}{@glsabbrv@dispstyle@fmts@#2}%
+}
+\newcommand*{\@glsxtr@deprecated@abbrstyle}[2]{%
+ \csdef{@glsabbrv@dispstyle@setup@#1}{%
+ \GlsXtrWarnDeprecatedAbbrStyle{#1}{#2}%
+ \csuse{@glsabbrv@dispstyle@setup@#2}%
+ }%
+ \csletcs{@glsabbrv@dispstyle@fmts@#1}{@glsabbrv@dispstyle@fmts@#2}%
+}
+\newcommand*{\GlsXtrWarnDeprecatedAbbrStyle}[2]{%
+ \GlossariesExtraWarning{Deprecated abbreviation style name `#1',
+ use `#2' instead}%
+}
+\newcommand*{\GlsXtrUseAbbrStyleSetup}[1]{%
+ \ifcsundef{@glsabbrv@dispstyle@setup@#1}%
+ {%
+ \PackageError{glossaries-extra}%
+ {Unknown abbreviation style definitions `#1'}{}%
+ }%
+ {%
+ \csname @glsabbrv@dispstyle@setup@#1\endcsname
+ }%
+}
+\newcommand*{\GlsXtrUseAbbrStyleFmts}[1]{%
+ \ifcsundef{@glsabbrv@dispstyle@fmts@#1}%
+ {%
+ \PackageError{glossaries-extra}%
+ {Unknown abbreviation style formats `#1'}{}%
+ }%
+ {%
+ \csname @glsabbrv@dispstyle@fmts@#1\endcsname
+ }%
+}
+\newif\ifglsxtrinsertinside
+\glsxtrinsertinsidefalse
+\newcommand*{\glsxtrlongshortname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+}
+\newabbreviationstyle{long-short}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}},%
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+\setabbreviationstyle{long-short}
+\newcommand*{\glsxtrlongshortdescsort}{%
+ \expandonce\glsxtrorglong\space (\expandonce\glsxtrorgshort)%
+}
+\newcommand*{\glsxtrlongshortdescname}{%
+ \protect\glslongfont{\the\glslongtok}
+ \glsxtrparen{\protect\glsabbrvfont{\the\glsshorttok}}%
+}
+\newabbreviationstyle{long-short-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlongfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short}%
+}
+\newcommand*{\glsxtrshortlongname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+}
+\newabbreviationstyle{short-long}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\newcommand*{\glsxtrshortlongdescsort}{\the\glsshorttok}
+\newcommand*{\glsxtrshortlongdescname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}
+ \glsxtrparen{\protect\glslongfont{\the\glslongtok}}%
+}
+\newabbreviationstyle{short-long-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},
+ sort={\glsxtrshortlongdescsort},
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-long}%
+}
+\newcommand*{\glsfirstlongfootnotefont}[1]{\glslongfootnotefont{#1}}%
+\newcommand*{\glslongfootnotefont}[1]{\glslongdefaultfont{#1}}%
+\newcommand*{\glsxtrabbrvfootnote}[2]{\footnote{#2}}
+\newcommand*{\glsxtrfootnotename}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+}
+\newabbreviationstyle{footnote}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\letabbreviationstyle{short-footnote}{footnote}
+\newcommand*{\glsxtrfootnotedescname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}%
+}
+\newcommand*{\glsxtrfootnotedescsort}{\the\glsshorttok}
+\newabbreviationstyle{short-footnote-desc}%
+{%
+ \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotedescname},
+ sort={\glsxtrfootnotedescsort},
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{footnote}%
+}
+\letabbreviationstyle{footnote-desc}{short-footnote-desc}
+\newabbreviationstyle{postfootnote}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},%
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
+ {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+ \renewcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\letabbreviationstyle{short-postfootnote}{postfootnote}
+\newabbreviationstyle{short-postfootnote-desc}%
+{%
+ \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotedescname},
+ sort={\glsxtrfootnotedescsort},
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},%
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
+ {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+ \renewcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{postfootnote}%
+}
+\letabbreviationstyle{postfootnote-desc}{short-postfootnote-desc}
+\newcommand*{\glsxtrshortnolongname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+}
+\newabbreviationstyle{short}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortnolongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}},
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvfont{\glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvfont{\glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\Glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\Glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\setabbreviationstyle[acronym]{short}
+\letabbreviationstyle{short-nolong}{short}
+\newabbreviationstyle{short-nolong-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-nolong}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-nolong}%
+}
+\newcommand*{\glsxtrshortdescname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}%
+}
+\newabbreviationstyle{short-desc}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortdescname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\letabbreviationstyle{short-nolong-desc}{short-desc}
+\newabbreviationstyle{short-nolong-desc-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-nolong-desc}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-nolong-desc}%
+}
+\newabbreviationstyle{nolong-short}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-nolong}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-nolong}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongfont{\glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongfont{\glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongfont{\glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\Glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongfont{\glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\Glsaccessshortpl{##1}}}%
+ }%
+}
+\newabbreviationstyle{nolong-short-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{nolong-short}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{nolong-short}%
+}
+\newcommand*{\glsxtrlongnoshortdescname}{%
+ \protect\glslongfont{\the\glslongtok}%
+}
+\newabbreviationstyle{long-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortdescname},
+ sort={\the\glslongtok},
+ first={\protect\glsfirstlongfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}},
+ text={\glslongfont{\the\glslongtok}},
+ plural={\glslongfont{\the\glslongpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\letabbreviationstyle{long-noshort-desc}{long-desc}
+\newabbreviationstyle{long-noshort-desc-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-noshort-desc}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-noshort-desc}%
+}
+\newcommand*{\glsxtrlongnoshortname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+}
+\newabbreviationstyle{long}%
+{%
+ \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}},
+ text={\glslongfont{\the\glslongtok}},
+ plural={\glslongfont{\the\glslongpltok}},%
+ description={\the\glslongtok}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-desc}%
+}
+\letabbreviationstyle{long-noshort}{long}
+\newabbreviationstyle{long-noshort-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-noshort}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-noshort}%
+}
+\newcommand*{\glsxtrscfont}[1]{\textsc{#1}}
+\newcommand*{\glsabbrvscfont}{\glsxtrscfont}
+\newcommand*{\glsxtrfirstscfont}[1]{\glsabbrvscfont{#1}}
+\newcommand*{\glsfirstabbrvscfont}{\glsxtrfirstscfont}
+\newcommand*{\glsxtrscsuffix}{\protect\glstextup{\glsxtrabbrvpluralsuffix}}
+\newabbreviationstyle{long-short-sc}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}},%
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+\newabbreviationstyle{long-short-sc-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short-sc}%
+}
+\newabbreviationstyle{short-sc-long}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\newabbreviationstyle{short-sc-long-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},
+ sort={\glsxtrshortlongdescsort},
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-sc-long}%
+}
+\newabbreviationstyle{short-sc}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortnolongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}},
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvscfont{\glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvscfont{\Glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvscfont{\Glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\letabbreviationstyle{short-sc-nolong}{short-sc}
+\newabbreviationstyle{short-sc-desc}%
+{%
+ \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortdescname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\letabbreviationstyle{short-sc-nolong-desc}{short-sc-desc}
+\newabbreviationstyle{nolong-short-sc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-sc-nolong}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-sc-nolong}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+\newabbreviationstyle{long-noshort-sc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}},
+ text={\protect\glslongdefaultfont{\the\glslongtok}},
+ plural={\protect\glslongdefaultfont{\the\glslongpltok}},%
+ description={\the\glslongtok}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\@glsxtr@deprecated@abbrstyle{long-sc}{long-noshort-sc}
+\newabbreviationstyle{long-noshort-sc-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-noshort-desc}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\@glsxtr@deprecated@abbrstyle{long-desc-sc}{long-noshort-sc-desc}
+\newabbreviationstyle{short-sc-footnote}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\@glsxtr@deprecated@abbrstyle{footnote-sc}{short-sc-footnote}
+\newabbreviationstyle{short-sc-footnote-desc}%
+{%
+ \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotedescname},
+ sort={\glsxtrfootnotedescsort},
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-sc-footnote}%
+}
+\newabbreviationstyle{short-sc-postfootnote}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},%
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
+ {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+ \renewcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\@glsxtr@deprecated@abbrstyle{postfootnote-sc}{short-sc-postfootnote}
+\newabbreviationstyle{short-sc-postfootnote-desc}%
+{%
+ \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotedescname},
+ sort={\glsxtrfootnotedescsort},
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},%
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
+ {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+ \renewcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-sc-postfootnote}%
+}
+\newcommand*{\glsxtrsmfont}[1]{\textsmaller{#1}}
+\newcommand*{\glsabbrvsmfont}{\glsxtrsmfont}
+\newcommand*{\glsxtrfirstsmfont}[1]{\glsabbrvsmfont{#1}}
+\newcommand*{\glsfirstabbrvsmfont}{\glsxtrfirstsmfont}
+\newcommand*{\glsxtrsmsuffix}{\glsxtrabbrvpluralsuffix}
+\newabbreviationstyle{long-short-sm}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}},%
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+\newabbreviationstyle{long-short-sm-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short-sm}%
+}
+\newabbreviationstyle{short-sm-long}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\newabbreviationstyle{short-sm-long-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},
+ sort={\glsxtrshortlongdescsort},
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-sm-long}%
+}
+\newabbreviationstyle{short-sm}%
+{%
+ \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortnolongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}},
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvsmfont{\glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvsmfont{\Glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvsmfont{\Glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\letabbreviationstyle{short-sm-nolong}{short-sm}
+\newabbreviationstyle{short-sm-desc}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortdescname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\letabbreviationstyle{short-sm-nolong-desc}{short-sm-desc}
+\newabbreviationstyle{nolong-short-sm}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-sm-nolong}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-sm-nolong}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+\newabbreviationstyle{long-noshort-sm}%
+{%
+ \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}},
+ text={\protect\glslongdefaultfont{\the\glslongtok}},
+ plural={\protect\glslongdefaultfont{\the\glslongpltok}},%
+ description={\the\glslongtok}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\@glsxtr@deprecated@abbrstyle{long-sm}{long-noshort-sm}
+\newabbreviationstyle{long-noshort-sm-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-noshort-desc}%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\@glsxtr@deprecated@abbrstyle{long-desc-sm}{long-noshort-sm-desc}
+\newabbreviationstyle{short-sm-footnote}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\@glsxtr@deprecated@abbrstyle{footnote-sm}{short-sm-footnote}
+\newabbreviationstyle{short-sm-footnote-desc}%
+{%
+ \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotedescname},
+ sort={\glsxtrfootnotedescsort},
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-sm-footnote}%
+}
+\newabbreviationstyle{short-sm-postfootnote}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},%
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
+ {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+ \renewcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ }%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\@glsxtr@deprecated@abbrstyle{postfootnote-sm}{short-sm-postfootnote}
+\newabbreviationstyle{short-sm-postfootnote-desc}%
+{%
+ \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotedescname},
+ sort={\glsxtrfootnotedescsort},
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},%
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
+ {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+ \renewcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-sm-postfootnote}%
+}
+\newcommand*{\glsabbrvemfont}[1]{\emph{#1}}%
+\newcommand*{\glsfirstabbrvemfont}[1]{\glsabbrvemfont{#1}}%
+\newcommand*{\glsxtremsuffix}{\glsxtrabbrvpluralsuffix}
+\newcommand*{\glsfirstlongemfont}[1]{\glslongemfont{#1}}%
+\newcommand*{\glslongemfont}[1]{\emph{#1}}%
+\newabbreviationstyle{long-short-em}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}},%
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+\newabbreviationstyle{long-short-em-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short-em}%
+}
+\newabbreviationstyle{long-em-short-em}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongemfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}},%
+ description={\protect\glslongemfont{\the\glslongtok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+\newabbreviationstyle{long-em-short-em-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlongemfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-em-short-em}%
+}
+\newabbreviationstyle{short-em-long}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\newabbreviationstyle{short-em-long-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},
+ sort={\glsxtrshortlongdescsort},
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-em-long}%
+}
+\newabbreviationstyle{short-em-long-em}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ description={\protect\glslongemfont{\the\glslongtok}},%
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongemfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongemfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongemfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongemfont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\newabbreviationstyle{short-em-long-em-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},%
+ sort={\glsxtrshortlongdescsort},%
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-em-long-em}%
+}
+\newabbreviationstyle{short-em}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortnolongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}},
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvemfont{\glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvemfont{\Glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvemfont{\Glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\letabbreviationstyle{short-em-nolong}{short-em}
+\newabbreviationstyle{short-em-desc}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortdescname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\letabbreviationstyle{short-em-nolong-desc}{short-em-desc}
+\newabbreviationstyle{nolong-short-em}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-em-nolong}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-em-nolong}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+\newabbreviationstyle{long-noshort-em}%
+{%
+ \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}},
+ text={\protect\glslongdefaultfont{\the\glslongtok}},
+ plural={\protect\glslongdefaultfont{\the\glslongpltok}},%
+ description={\the\glslongtok}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\@glsxtr@deprecated@abbrstyle{long-em}{long-noshort-em}
+\newabbreviationstyle{long-em-noshort-em}%
+{%
+ \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongemfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}},
+ text={\protect\glslongemfont{\the\glslongtok}},
+ plural={\protect\glslongemfont{\the\glslongpltok}},%
+ description={\protect\glslongemfont{\the\glslongtok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}%
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\newabbreviationstyle{long-em-noshort-em-noreg}%
+{%
+ \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel
+ \GlsXtrUseAbbrStyleSetup{long-em-noshort-em}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-em-noshort-em}%
+}
+\newabbreviationstyle{long-noshort-em-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-noshort-desc}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\@glsxtr@deprecated@abbrstyle{long-desc-em}{long-noshort-em-desc}
+\newabbreviationstyle{long-em-noshort-em-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortdescname},
+ sort={\the\glslongtok},
+ first={\protect\glsfirstlongemfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}},
+ text={\glslongemfont{\the\glslongtok}},
+ plural={\glslongemfont{\the\glslongpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}%
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+\newabbreviationstyle{long-em-noshort-em-desc-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-em-noshort-em-desc}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-em-noshort-em-desc}%
+}
+\newabbreviationstyle{short-em-footnote}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\@glsxtr@deprecated@abbrstyle{footnote-em}{short-em-footnote}
+\newabbreviationstyle{short-em-footnote-desc}%
+{%
+ \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotedescname},
+ sort={\glsxtrfootnotedescsort},
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-em-footnote}%
+}
+\newabbreviationstyle{short-em-postfootnote}%
+{%
+ \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
+ {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+ \renewcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+\@glsxtr@deprecated@abbrstyle{postfootnote-em}{short-em-postfootnote}
+\newabbreviationstyle{short-em-postfootnote-desc}%
+{%
+ \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotedescname},
+ sort={\glsxtrfootnotedescsort},
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
+ {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+ \renewcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-em-postfootnote}%
+}
+\newcommand*{\glsxtruserfield}{useri}
+\ifdef\glscurrentfieldvalue
+{
+ \newcommand*{\glsxtruserparen}[2]{%
+ \glsxtrfullsep{#2}%
+ \glsxtrparen
+ {#1\ifglshasfield{\glsxtruserfield}{#2}{, \glscurrentfieldvalue}{}}%
+ }
+}
+{
+ \newcommand*{\glsxtruserparen}[2]{%
+ \glsxtrfullsep{#2}%
+ \glsxtrparen
+ {#1\ifglshasfield{\glsxtruserfield}{#2}{, \@glo@thisvalue}{}}%
+ }
+}
+\newcommand*{\glsabbrvuserfont}[1]{\glsabbrvdefaultfont{#1}}
+\newcommand*{\glsfirstabbrvuserfont}[1]{\glsabbrvuserfont{#1}}
+\newcommand*{\glslonguserfont}[1]{\glslongdefaultfont{#1}}
+\newcommand*{\glsfirstlonguserfont}[1]{\glslonguserfont{#1}}
+\newcommand*{\glsxtrusersuffix}{\glsxtrabbrvpluralsuffix}
+\newcommand*{\glsuserdescription}[2]{\glslonguserfont{#1}}
+\newabbreviationstyle{long-short-user}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}%
+ \protect\glsxtruserparen{\protect\glsfirstabbrvuserfont{\the\glsshorttok}}%
+ {\the\glslabeltok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}%
+ \protect\glsxtruserparen
+ {\protect\glsfirstabbrvuserfont{\the\glsshortpltok}}{\the\glslabeltok}},%
+ text={\protect\glsabbrvuserfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},%
+ description={\protect\glsuserdescription{\the\glslongtok}%
+ {\the\glslabeltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}%
+ }%
+}
+\newabbreviationstyle{long-postshort-user}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvuserfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},%
+ description={\protect\glsuserdescription{\the\glslongtok}%
+ {\the\glslabeltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtruserparen
+ {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}%
+ {\glslabel}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}%
+ }%
+}
+\newcommand*{\glsabbrvscuserfont}{\glsabbrvscfont}%
+\newcommand*{\glsfirstabbrvscuserfont}{\glsabbrvscuserfont}%
+\newcommand*{\glsxtrscusersuffix}{\glsxtrscsuffix}
+\newcommand*{\glsxtrlongshortscusername}{%
+ \protect\glsabbrvscuserfont{\the\glsshorttok}%
+}
+\newabbreviationstyle{long-postshort-sc-user}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortscusername},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvscuserfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvscuserfont{\the\glsshortpltok}},%
+ description={\protect\glsuserdescription{\the\glslongtok}%
+ {\the\glslabeltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtruserparen
+ {\glsfirstabbrvscuserfont{\glsentryshort{\glslabel}}}%
+ {\glslabel}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrscusersuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvscuserfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvscuserfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshort{##1}}}{##1}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshortpl{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshort{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshortpl{##1}}}{##1}%
+ }%
+}
+\newcommand*{\glsxtrlongshortuserdescname}{%
+ \protect\glslonguserfont{\the\glslongtok}%
+ \protect\glsxtruserparen
+ {\protect\glsabbrvuserfont{\the\glsshorttok}}{\the\glslabeltok}%
+}
+\newabbreviationstyle{long-postshort-user-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortuserdescname},
+ sort={\the\glslongtok},
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvuserfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtruserparen
+ {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}%
+ {\glslabel}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-postshort-user}%
+}
+\newcommand*{\glsxtrlongshortscuserdescname}{%
+ \protect\glslonguserfont{\the\glslongtok}%
+ \protect\glsxtruserparen
+ {\protect\glsabbrvscuserfont{\the\glsshorttok}}{\the\glslabeltok}%
+}
+\newabbreviationstyle{long-postshort-sc-user-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortscuserdescname},
+ sort={\the\glslongtok},
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvscuserfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvscuserfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtruserparen
+ {\glsfirstabbrvscuserfont{\glsentryshort{\glslabel}}}%
+ {\glslabel}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-postshort-sc-user}%
+}
+\newabbreviationstyle{short-postlong-user}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvuserfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},%
+ description={\protect\glsuserdescription{\the\glslongtok}%
+ {\the\glslabeltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtruserparen
+ {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}%
+ {\glslabel}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}%
+ }%
+}
+\newcommand*{\glsxtrshortlonguserdescname}{%
+ \protect\glsabbrvuserfont{\the\glsshorttok}%
+ \protect\glsxtruserparen
+ {\protect\glslonguserfont{\the\glslongpltok}}%
+ {\the\glslabeltok}%
+}
+\newabbreviationstyle{short-postlong-user-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlonguserdescname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvuserfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtruserparen
+ {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}%
+ {\glslabel}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-postlong-user}%
+}
+\newabbreviationstyle{long-short-user-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortuserdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}%
+ \protect\glsxtruserparen{\protect\glsfirstabbrvuserfont{\the\glsshorttok}}%
+ {\the\glslabeltok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}%
+ \protect\glsxtruserparen
+ {\protect\glsfirstabbrvuserfont{\the\glsshortpltok}}{\the\glslabeltok}},%
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short-user}%
+}
+\newabbreviationstyle{short-long-user}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ description={\protect\glsuserdescription{\the\glslongtok}%
+ {\the\glslabeltok}},%
+ first={\protect\glsfirstabbrvuserfont{\the\glsshorttok}%
+ \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongtok}}%
+ {\the\glslabeltok}},%
+ firstplural={\protect\glsfirstabbrvuserfont{\the\glsshortpltok}%
+ \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongpltok}}%
+ {\the\glslabeltok}},%
+ text={\protect\glsabbrvuserfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}%
+ }%
+}
+\newabbreviationstyle{short-long-user-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlonguserdescname},
+ sort={\glsxtrshortlongdescsort},%
+ first={\protect\glsfirstabbrvuserfont{\the\glsshorttok}%
+ \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongtok}}%
+ {\the\glslabeltok}},%
+ firstplural={\protect\glsfirstabbrvuserfont{\the\glsshortpltok}%
+ \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongpltok}}%
+ {\the\glslabeltok}},%
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-long-user}%
+}
+\newrobustcmd*{\glsxtrifhyphenstart}[3]{%
+ \ifx\glsinsert#1\relax
+ \expandafter\@glsxtrifhyphenstart#1\relax\relax
+ \@end@glsxtrifhyphenstart{#2}{#3}%
+ \else
+ \@glsxtrifhyphenstart#1\relax\relax\@end@glsxtrifhyphenstart{#2}{#3}%
+ \fi
+}
+\def\@glsxtrifhyphenstart#1#2\@end@glsxtrifhyphenstart#3#4{%
+ \ifx-#1\relax#3\else #4\fi
+}
+\newcommand*{\glsxtrlonghyphenshort}[4]{%
+ {%
+ \glsxtrifhyphenstart{#4}{\def\glsxtrwordsep{-}}{}%
+ \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside{#4}\fi}%
+ \ifglsxtrinsertinside\else{#4}\fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsfirstabbrvhyphenfont{#3\ifglsxtrinsertinside{#4}\fi}%
+ \ifglsxtrinsertinside\else{#4}\fi}%
+ }%
+}
+\newcommand*{\glsabbrvhyphenfont}{\glsabbrvdefaultfont}%
+\newcommand*{\glsfirstabbrvhyphenfont}{\glsabbrvhyphenfont}%
+\newcommand*{\glslonghyphenfont}{\glslongdefaultfont}%
+\newcommand*{\glsfirstlonghyphenfont}{\glslonghyphenfont}%
+\newcommand*{\glsxtrhyphensuffix}{\glsxtrabbrvpluralsuffix}
+\newabbreviationstyle{long-hyphen-short-hyphen}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonghyphenfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},%
+ description={\protect\glslonghyphenfont{\the\glslongtok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrhyphensuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsxtrlonghyphenshort{##1}{\glsaccesslong{##1}}{\glsaccessshort{##1}}{##2}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsxtrlonghyphenshort{##1}{\glsaccesslongpl{##1}}%
+ {\glsaccessshortpl{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsxtrlonghyphenshort{##1}{\Glsaccesslong{##1}}{\glsaccessshort{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsxtrlonghyphenshort{##1}{\Glsaccesslongpl{##1}}%
+ {\glsaccessshortpl{##1}}{##2}%
+ }%
+}
+\newabbreviationstyle{long-hyphen-short-hyphen-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},
+ first={\protect\glsfirstlonghyphenfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-hyphen-short-hyphen}%
+}
+\newcommand*{\glsxtrlonghyphennoshort}[3]{%
+ {%
+ \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}%
+ \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside{#3}\fi}%
+ \ifglsxtrinsertinside\else{#3}\fi
+ }%
+}
+\newabbreviationstyle{long-hyphen-noshort-desc-noreg}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortdescname},
+ sort={\expandonce\glsxtrorglong},
+ first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},%
+ text={\protect\glslonghyphenfont{\the\glslongtok}},%
+ plural={\protect\glslonghyphenfont{\the\glslongpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-hyphen-short-hyphen}%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}%
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}%
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}%
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}%
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}%
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}%
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}%
+ }%
+}
+\newabbreviationstyle{long-hyphen-noshort-noreg}%
+{%
+ \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},%
+ text={\protect\glslonghyphenfont{\the\glslongtok}},%
+ plural={\protect\glslonghyphenfont{\the\glslongpltok}},%
+ description={\the\glslongtok}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-hyphen-noshort-desc-noreg}%
+}
+\newcommand*{\glsxtrlonghyphen}[3]{%
+ {%
+ \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}%
+ \glsfirstlonghyphenfont{#1}%
+ }%
+}
+\newcommand*{\glsxtrposthyphenshort}[2]{%
+ {%
+ \glsxtrifhyphenstart{#2}{\def\glsxtrwordsep{-}}{}%
+ \ifglsxtrinsertinside{\glsfirstlonghyphenfont{#2}}\else{#2}\fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen
+ {\glsfirstabbrvhyphenfont{\glsentryshort{#1}\ifglsxtrinsertinside{#2}\fi}%
+ \ifglsxtrinsertinside\else{#2}\fi
+ }%
+ }%
+}
+\newcommand*{\glsxtrposthyphensubsequent}[2]{%
+ \glsabbrvfont{\ifglsxtrinsertinside {#2}\fi}%
+ \ifglsxtrinsertinside \else{#2}\fi
+}
+\newabbreviationstyle{long-hyphen-postshort-hyphen}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},%
+ description={\protect\glslonghyphenfont{\the\glslongtok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrposthyphenshort{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}%
+ }%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glsabbrvfont{\glsaccessshort{##1}}%
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glsabbrvfont{\glsaccessshortpl{##1}}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glsabbrvfont{\Glsaccessshort{##1}}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glsabbrvfont{\Glsaccessshortpl{##1}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsxtrlonghyphen{\glsaccesslong{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsxtrlonghyphen{\glsaccesslongpl{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsxtrlonghyphen{\Glsaccesslong{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsxtrlonghyphen{\Glsaccesslongpl{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlonghyphenfont{\glsaccesslong{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlonghyphenfont{\glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlonghyphenfont{\Glsaccesslong{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlonghyphenfont{\Glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+}
+\newabbreviationstyle{long-hyphen-postshort-hyphen-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrposthyphenshort{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}%
+ }%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-hyphen-postshort-hyphen}%
+}
+\newcommand*{\glsxtrshorthyphenlong}[4]{%
+ {%
+ \glsxtrifhyphenstart{#4}{\def\glsxtrwordsep{-}}{}%
+ \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside{#4}\fi}%
+ \ifglsxtrinsertinside\else{#4}\fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsfirstlonghyphenfont{#3\ifglsxtrinsertinside{#4}\fi}%
+ \ifglsxtrinsertinside\else{#4}\fi}%
+ }%
+}
+\newabbreviationstyle{short-hyphen-long-hyphen}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},%
+ description={\protect\glslonghyphenfont{\the\glslongtok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrhyphensuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsxtrshorthyphenlong{##1}{\glsaccessshort{##1}}{\glsaccesslong{##1}}{##2}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsxtrshorthyphenlong{##1}%
+ {\glsaccessshortpl{##1}}{\glsaccesslongpl{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsxtrshorthyphenlong{##1}{\glsaccessshort{##1}}{\Glsaccesslong{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsxtrshorthyphenlong{##1}%
+ {\glsaccessshortpl{##1}}{\Glsaccesslongpl{##1}}{##2}%
+ }%
+}
+\newabbreviationstyle{short-hyphen-long-hyphen-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},
+ sort={\glsxtrshortlongdescsort},
+ first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-hyphen-long-hyphen}%
+}
+\newcommand*{\glsxtrshorthyphen}[3]{%
+ {%
+ \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}%
+ \glsfirstabbrvhyphenfont{#1}%
+ }%
+}
+\newcommand*{\glsxtrposthyphenlong}[2]{%
+ {%
+ \glsxtrifhyphenstart{#2}{\def\glsxtrwordsep{-}}{}%
+ \ifglsxtrinsertinside{\glsfirstabbrvhyphenfont{#2}}\else{#2}\fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen
+ {\glsfirstlonghyphenfont{\glsentrylong{#1}\ifglsxtrinsertinside{#2}\fi}%
+ \ifglsxtrinsertinside\else{#2}\fi
+ }%
+ }%
+}
+\newabbreviationstyle{short-hyphen-postlong-hyphen}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},%
+ text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},%
+ description={\protect\glslonghyphenfont{\the\glslongtok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrposthyphenlong{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}%
+ }%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glsabbrvfont{\glsaccessshort{##1}}%
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glsabbrvfont{\glsaccessshortpl{##1}}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glsabbrvfont{\Glsaccessshort{##1}}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glsabbrvfont{\Glsaccessshortpl{##1}}%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsxtrshorthyphen{\glsaccessshort{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsxtrshorthyphen{\glsaccessshortpl{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsxtrshorthyphen{\Glsaccessshort{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsxtrshorthyphen{\Glsaccessshortpl{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvhyphenfont{\glsaccessshort{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvhyphenfont{\glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvhyphenfont{\Glsaccessshort{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvhyphenfont{\Glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+}
+\newabbreviationstyle{short-hyphen-postlong-hyphen-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},
+ sort={\glsxtrshortlongdescsort},%
+ first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},%
+ text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrposthyphenlong{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}%
+ }%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-hyphen-postlong-hyphen}%
+}
+\newcommand*{\glsabbrvonlyfont}{\glsabbrvdefaultfont}%
+\newcommand*{\glsfirstabbrvonlyfont}{\glsabbrvonlyfont}%
+\newcommand*{\glslongonlyfont}{\glslongdefaultfont}%
+\newcommand*{\glsfirstlongonlyfont}{\glslongonlyfont}%
+\newcommand*{\glsxtronlysuffix}{\glsxtrabbrvpluralsuffix}
+\newcommand*{\glsxtronlyname}{%
+ \protect\glsabbrvonlyfont{\the\glsshorttok}%
+}
+\newabbreviationstyle{long-only-short-only}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtronlyname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongonlyfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvonlyfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}},%
+ description={\protect\glslongonlyfont{\the\glslongtok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtronlysuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvonlyfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvonlyfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongonlyfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongonlyfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvonlyfont{\Glsaccessshortpl{##1}}}%
+ }%
+}
+\newcommand*{\glsxtronlydescsort}{\the\glslongtok}
+\newcommand*{\glsxtronlydescname}{%
+ \protect\glslongfont{\the\glslongtok}%
+}
+\newabbreviationstyle{long-only-short-only-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtronlydescname},
+ sort={\glsxtronlydescsort},%
+ first={\protect\glsfirstlongonlyfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvonlyfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-only-short-only}%
+}
+\newcommand*{\glsabbrvsconlyfont}{\glsabbrvscfont}%
+\newcommand*{\glsfirstabbrvsconlyfont}{\glsabbrvsconlyfont}%
+\newcommand*{\glsxtrsconlysuffix}{\glsxtrscsuffix}
+\newcommand*{\glsxtrsconlyname}{%
+ \protect\glsabbrvsconlyfont{\the\glsshorttok}%
+}
+\newabbreviationstyle{long-only-short-sc-only}%
+{%
+ \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrsconlyname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongonlyfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvsconlyfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvsconlyfont{\the\glsshortpltok}},%
+ description={\protect\glslongonlyfont{\the\glslongtok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrsconlysuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvsconlyfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvsconlyfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongonlyfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongonlyfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\Glsaccessshortpl{##1}}}%
+ }%
+}
+\newcommand*{\glsxtrsconlydescsort}{\glsxtronlydescsort}
+\newcommand*{\glsxtrsconlydescname}{\glsxtronlydescname}
+\newabbreviationstyle{long-only-short-sc-only-desc}%
+{%
+ \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrsconlydescname},
+ sort={\glsxtrsconlydescsort},%
+ first={\protect\glsfirstlongonlyfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvsconlyfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvsconlyfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-only-short-sc-only}%
+}
+\let\@glsxtr@org@markright\markright
+\renewcommand*{\markright}[1]{%
+ \glsxtrmarkhook
+ \@glsxtr@org@markright{\@glsxtrinmark#1\@glsxtrnotinmark}%
+ \glsxtrrestoremarkhook
+}
+\let\@glsxtr@org@markboth\markboth
+\renewcommand*{\markboth}[2]{%
+ \glsxtrmarkhook
+ \@glsxtr@org@markboth
+ {\@glsxtrinmark#1\@glsxtrnotinmark}%
+ {\@glsxtrinmark#2\@glsxtrnotinmark}%
+ \glsxtrrestoremarkhook
+}
+\let\@glsxtr@org@@starttoc\@starttoc
+\renewcommand*{\@starttoc}[1]{%
+ \glsxtrmarkhook
+ \@glsxtrinmark
+ \@glsxtr@org@@starttoc{#1}%
+ \@glsxtrnotinmark
+ \glsxtrrestoremarkhook
+}
+\newcommand*{\glsxtrRevertMarks}{%
+ \let\markright\@glsxtr@org@markright
+ \let\markboth\@glsxtr@org@markboth
+ \let\@starttoc\@glsxtr@org@@starttoc
+}
+\newcommand*{\glsxtrRevertTocMarks}{%
+ \let\@starttoc\@glsxtr@org@@starttoc
+}
+\newcommand*{\glsxtrifinmark}[2]{#2}
+\newrobustcmd*{\@glsxtrinmark}{%
+ \let\glsxtrifinmark\@firstoftwo
+}
+\newrobustcmd*{\@glsxtrnotinmark}{%
+ \let\glsxtrifinmark\@secondoftwo
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsxtrtitleorpdforheading}[3]{\texorpdfstring{#1}{#2}}
+}
+{
+ \newcommand*{\glsxtrtitleorpdforheading}[3]{#1}
+}
+\newcommand*{\glsxtrmarkhook}{%
+ \let\@glsxtr@org@MakeUppercase\MakeUppercase
+ \let\@glsxtr@org@glsxtrtitleorpdforheading\glsxtrtitleorpdforheading
+ \let\@glsxtr@org@glsxtrtitleshort\glsxtrtitleshort
+ \let\@glsxtr@org@glsxtrtitleshortpl\glsxtrtitleshortpl
+ \let\@glsxtr@org@Glsxtrtitleshort\Glsxtrtitleshort
+ \let\@glsxtr@org@Glsxtrtitleshortpl\Glsxtrtitleshortpl
+ \let\@glsxtr@org@glsxtrtitlename\glsxtrtitlename
+ \let\@glsxtr@org@Glsxtrtitlename\Glsxtrtitlename
+ \let\@glsxtr@org@glsxtrtitletext\glsxtrtitletext
+ \let\@glsxtr@org@Glsxtrtitletext\Glsxtrtitletext
+ \let\@glsxtr@org@glsxtrtitleplural\glsxtrtitleplural
+ \let\@glsxtr@org@Glsxtrtitleplural\Glsxtrtitleplural
+ \let\@glsxtr@org@glsxtrtitlefirst\glsxtrtitlefirst
+ \let\@glsxtr@org@Glsxtrtitlefirst\Glsxtrtitlefirst
+ \let\@glsxtr@org@glsxtrtitlefirstplural\glsxtrtitlefirstplural
+ \let\@glsxtr@org@Glsxtrtitlefirstplural\Glsxtrtitlefirstplural
+ \let\@glsxtr@org@glsxtrtitlelong\glsxtrtitlelong
+ \let\@glsxtr@org@glsxtrtitlelongpl\glsxtrtitlelongpl
+ \let\@glsxtr@org@Glsxtrtitlelong\Glsxtrtitlelong
+ \let\@glsxtr@org@Glsxtrtitlelongpl\Glsxtrtitlelongpl
+ \let\@glsxtr@org@glsxtrtitlefull\glsxtrtitlefull
+ \let\@glsxtr@org@glsxtrtitlefullpl\glsxtrtitlefullpl
+ \let\@glsxtr@org@Glsxtrtitlefull\Glsxtrtitlefull
+ \let\@glsxtr@org@Glsxtrtitlefullpl\Glsxtrtitlefullpl
+ \let\glsxtrifinmark\@firstoftwo
+ \let\MakeUppercase\MakeTextUppercase
+ \let\glsxtrtitleorpdforheading\@thirdofthree
+ \let\glsxtrtitleshort\glsxtrheadshort
+ \let\glsxtrtitleshortpl\glsxtrheadshortpl
+ \let\Glsxtrtitleshort\Glsxtrheadshort
+ \let\Glsxtrtitleshortpl\Glsxtrheadshortpl
+ \let\glsxtrtitlename\glsxtrheadname
+ \let\Glsxtrtitlename\Glsxtrheadname
+ \let\glsxtrtitletext\glsxtrheadtext
+ \let\Glsxtrtitletext\Glsxtrheadtext
+ \let\glsxtrtitleplural\glsxtrheadplural
+ \let\Glsxtrtitleplural\Glsxtrheadplural
+ \let\glsxtrtitlefirst\glsxtrheadfirst
+ \let\Glsxtrtitlefirst\Glsxtrheadfirst
+ \let\glsxtrtitlefirstplural\glsxtrheadfirstplural
+ \let\Glsxtrtitlefirstplural\Glsxtrheadfirstplural
+ \let\glsxtrtitlelong\glsxtrheadlong
+ \let\glsxtrtitlelongpl\glsxtrheadlongpl
+ \let\Glsxtrtitlelong\Glsxtrheadlong
+ \let\Glsxtrtitlelongpl\Glsxtrheadlongpl
+ \let\glsxtrtitlefull\glsxtrheadfull
+ \let\glsxtrtitlefullpl\glsxtrheadfullpl
+ \let\Glsxtrtitlefull\Glsxtrheadfull
+ \let\Glsxtrtitlefullpl\Glsxtrheadfullpl
+}
+\newcommand*{\glsxtrrestoremarkhook}{%
+ \let\glsxtrifinmark\@secondoftwo
+ \let\MakeUppercase\@glsxtr@org@MakeUppercase
+ \let\glsxtrtitleorpdforheading\@glsxtr@org@glsxtrtitleorpdforheading
+ \let\glsxtrtitleshort\@glsxtr@org@glsxtrtitleshort
+ \let\glsxtrtitleshortpl\@glsxtr@org@glsxtrtitleshortpl
+ \let\Glsxtrtitleshort\@glsxtr@org@Glsxtrtitleshort
+ \let\Glsxtrtitleshortpl\@glsxtr@org@Glsxtrtitleshortpl
+ \let\glsxtrtitlename\@glsxtr@org@glsxtrtitlename
+ \let\Glsxtrtitlename\@glsxtr@org@Glsxtrtitlename
+ \let\glsxtrtitletext\@glsxtr@org@glsxtrtitletext
+ \let\Glsxtrtitletext\@glsxtr@org@Glsxtrtitletext
+ \let\glsxtrtitleplural\@glsxtr@org@glsxtrtitleplural
+ \let\Glsxtrtitleplural\@glsxtr@org@Glsxtrtitleplural
+ \let\glsxtrtitlefirst\@glsxtr@org@glsxtrtitlefirst
+ \let\Glsxtrtitlefirst\@glsxtr@org@Glsxtrtitlefirst
+ \let\glsxtrtitlefirstplural\@glsxtr@org@glsxtrtitlefirstplural
+ \let\Glsxtrtitlefirstplural\@glsxtr@org@Glsxtrtitlefirstplural
+ \let\glsxtrtitlelong\@glsxtr@org@glsxtrtitlelong
+ \let\glsxtrtitlelongpl\@glsxtr@org@glsxtrtitlelongpl
+ \let\Glsxtrtitlelong\@glsxtr@org@Glsxtrtitlelong
+ \let\Glsxtrtitlelongpl\@glsxtr@org@Glsxtrtitlelongpl
+ \let\glsxtrtitlefull\@glsxtr@org@glsxtrtitlefull
+ \let\glsxtrtitlefullpl\@glsxtr@org@glsxtrtitlefullpl
+ \let\Glsxtrtitlefull\@glsxtr@org@Glsxtrtitlefull
+ \let\Glsxtrtitlefullpl\@glsxtr@org@Glsxtrtitlefullpl
+}
+\newcommand*{\glsxtrheadshort}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtrtitleshort}[1]{%
+ \glsxtrshort[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\glsxtrheadshortpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtrtitleshortpl}[1]{%
+ \glsxtrshortpl[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\Glsxtrheadshort}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\Glsxtrtitleshort}[1]{%
+ \Glsxtrshort[noindex,hyper=false]{#1}[]%
+}
+\newrobustcmd*{\GLSxtrtitleshort}[1]{%
+ \GLSxtrshort[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\Glsxtrheadshortpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\Glsxtrtitleshortpl}[1]{%
+ \Glsxtrshortpl[noindex,hyper=false]{#1}[]%
+}
+\newrobustcmd*{\GLSxtrtitleshortpl}[1]{%
+ \GLSxtrshortpl[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\glsxtrheadname}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSname[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsname[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtrtitlename}[1]{%
+ \glsname[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\Glsxtrheadname}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSname[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsname[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\Glsxtrtitlename}[1]{%
+ \Glsname[noindex,hyper=false]{#1}[]%
+}
+\newrobustcmd*{\GLSxtrtitlename}[1]{%
+ \GLSname[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\glsxtrheadtext}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLStext[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glstext[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtrtitletext}[1]{%
+ \glstext[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\Glsxtrheadtext}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLStext[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glstext[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\Glsxtrtitletext}[1]{%
+ \Glstext[noindex,hyper=false]{#1}[]%
+}
+\newrobustcmd*{\GLSxtrtitletext}[1]{%
+ \GLStext[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\glsxtrheadplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSplural[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsplural[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtrtitleplural}[1]{%
+ \glsplural[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\Glsxtrheadplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSplural[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsplural[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\Glsxtrtitleplural}[1]{%
+ \Glsplural[noindex,hyper=false]{#1}[]%
+}
+\newrobustcmd*{\GLSxtrtitleplural}[1]{%
+ \GLSplural[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\glsxtrheadfirst}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSfirst[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsfirst[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtrtitlefirst}[1]{%
+ \glsfirst[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\Glsxtrheadfirst}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSfirst[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsfirst[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\Glsxtrtitlefirst}[1]{%
+ \Glsfirst[noindex,hyper=false]{#1}[]%
+}
+\newrobustcmd*{\GLSxtrtitlefirst}[1]{%
+ \GLSfirst[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\glsxtrheadfirstplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtrtitlefirstplural}[1]{%
+ \glsfirstplural[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\Glsxtrheadfirstplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\Glsxtrtitlefirstplural}[1]{%
+ \Glsfirstplural[noindex,hyper=false]{#1}[]%
+}
+\newrobustcmd*{\GLSxtrtitlefirstplural}[1]{%
+ \GLSfirstplural[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\glsxtrheadlong}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtrtitlelong}[1]{%
+ \glsxtrlong[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\glsxtrheadlongpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtrtitlelongpl}[1]{%
+ \glsxtrlongpl[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\Glsxtrheadlong}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\Glsxtrtitlelong}[1]{%
+ \Glsxtrlong[noindex,hyper=false]{#1}[]%
+}
+\newrobustcmd*{\GLSxtrtitlelong}[1]{%
+ \GLSxtrlong[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\Glsxtrheadlongpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\Glsxtrtitlelongpl}[1]{%
+ \Glsxtrlongpl[noindex,hyper=false]{#1}[]%
+}
+\newrobustcmd*{\GLSxtrtitlelongpl}[1]{%
+ \GLSxtrlongpl[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\glsxtrheadfull}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtrtitlefull}[1]{%
+ \glsxtrfull[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\glsxtrheadfullpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\glsxtrtitlefullpl}[1]{%
+ \glsxtrfullpl[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\Glsxtrheadfull}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\Glsxtrtitlefull}[1]{%
+ \Glsxtrfull[noindex,hyper=false]{#1}[]%
+}
+\newrobustcmd*{\GLSxtrtitlefull}[1]{%
+ \GLSxtrfull[noindex,hyper=false]{#1}[]%
+}
+\newcommand*{\Glsxtrheadfullpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+\newrobustcmd*{\Glsxtrtitlefullpl}[1]{%
+ \Glsxtrfullpl[noindex,hyper=false]{#1}[]%
+}
+\newrobustcmd*{\GLSxtrtitlefullpl}[1]{%
+ \GLSxtrfullpl[noindex,hyper=false]{#1}[]%
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtshort}[1]{%
+ \texorpdfstring
+ {\glsxtrtitleshort{#1}}%
+ {\glsentryshort{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtshort}[1]{%
+ \glsxtrtitleshort{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtshortpl}[1]{%
+ \texorpdfstring
+ {\glsxtrtitleshortpl{#1}}%
+ {\glsentryshortpl{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtshortpl}[1]{%
+ \glsxtrtitleshortpl{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtshort}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitleshort{#1}}%
+ {\glsentryshort{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtshort}[1]{%
+ \Glsxtrtitleshort{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtshortpl}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitleshortpl{#1}}%
+ {\glsentryshortpl{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtshortpl}[1]{%
+ \Glsxtrtitleshortpl{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtname}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlename{#1}}%
+ {\glsentryname{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtname}[1]{%
+ \glsxtrtitlename{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtname}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlename{#1}}%
+ {\glsentryname{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtname}[1]{%
+ \Glsxtrtitlename{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\GLSfmtname}[1]{%
+ \texorpdfstring
+ {\GLSxtrtitlename{#1}}%
+ {\glsentryname{#1}}%
+ }
+}
+{
+ \newcommand*{\GLSfmtname}[1]{%
+ \GLSxtrtitlename{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmttext}[1]{%
+ \texorpdfstring
+ {\glsxtrtitletext{#1}}%
+ {\glsentrytext{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmttext}[1]{%
+ \glsxtrtitletext{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmttext}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitletext{#1}}%
+ {\glsentrytext{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmttext}[1]{%
+ \Glsxtrtitletext{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\GLSfmttext}[1]{%
+ \texorpdfstring
+ {\GLSxtrtitletext{#1}}%
+ {\glsentrytext{#1}}%
+ }
+}
+{
+ \newcommand*{\GLSfmttext}[1]{%
+ \GLSxtrtitletext{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtplural}[1]{%
+ \texorpdfstring
+ {\glsxtrtitleplural{#1}}%
+ {\glsentryplural{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtplural}[1]{%
+ \glsxtrtitleplural{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtplural}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitleplural{#1}}%
+ {\glsentryplural{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtplural}[1]{%
+ \Glsxtrtitleplural{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\GLSfmtplural}[1]{%
+ \texorpdfstring
+ {\GLSxtrtitleplural{#1}}%
+ {\glsentryplural{#1}}%
+ }
+}
+{
+ \newcommand*{\GLSfmtplural}[1]{%
+ \GLSxtrtitleplural{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtfirst}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlefirst{#1}}%
+ {\glsentryfirst{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtfirst}[1]{%
+ \glsxtrtitlefirst{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtfirst}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlefirst{#1}}%
+ {\glsentryfirst{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtfirst}[1]{%
+ \Glsxtrtitlefirst{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\GLSfmtfirst}[1]{%
+ \texorpdfstring
+ {\GLSxtrtitlefirst{#1}}%
+ {\glsentryfirst{#1}}%
+ }
+}
+{
+ \newcommand*{\GLSfmtfirst}[1]{%
+ \Glsxtrtitlefirst{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtfirstpl}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlefirstplural{#1}}%
+ {\glsentryfirstplural{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtfirstpl}[1]{%
+ \glsxtrtitlefirstplural{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtfirstpl}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlefirstplural{#1}}%
+ {\glsentryfirstplural{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtfirstpl}[1]{%
+ \Glsxtrtitlefirstplural{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\GLSfmtfirstpl}[1]{%
+ \texorpdfstring
+ {\GLSxtrtitlefirstplural{#1}}%
+ {\glsentryfirstplural{#1}}%
+ }
+}
+{
+ \newcommand*{\GLSfmtfirstpl}[1]{%
+ \GLSxtrtitlefirstplural{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtlong}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlelong{#1}}%
+ {\glsentrylong{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtlong}[1]{%
+ \glsxtrtitlelong{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtlong}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlelong{#1}}%
+ {\glsentrylong{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtlong}[1]{%
+ \Glsxtrtitlelong{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\GLSfmtlong}[1]{%
+ \texorpdfstring
+ {\GLSxtrtitlelong{#1}}%
+ {\glsentrylong{#1}}%
+ }
+}
+{
+ \newcommand*{\GLSfmtlong}[1]{%
+ \GLSxtrtitlelong{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtlongpl}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlelongpl{#1}}%
+ {\glsentrylongpl{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtlongpl}[1]{%
+ \glsxtrtitlelongpl{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtlongpl}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlelongpl{#1}}%
+ {\glsentrylongpl{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtlongpl}[1]{%
+ \Glsxtrtitlelongpl{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\GLSfmtlongpl}[1]{%
+ \texorpdfstring
+ {\GLSxtrtitlelongpl{#1}}%
+ {\glsentrylongpl{#1}}%
+ }
+}
+{
+ \newcommand*{\GLSfmtlongpl}[1]{%
+ \GLSxtrtitlelongpl{#1}}
+}
+\newcommand*{\glspdffmtfull}[1]{\glsentrylong{#1} (\glsentryshort{#1})}%
+\newcommand*{\glspdffmtfullpl}[1]{\glsentrylongpl{#1} (\glsentryshortpl{#1})}%
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtfull}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlefull{#1}}%
+ {\glspdffmtfull{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtfull}[1]{%
+ \glsxtrtitlefull{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtfull}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlefull{#1}}%
+ {\glspdffmtfull{#1}{}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtfull}[1]{%
+ \Glsxtrtitlefull{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\GLSfmtfull}[1]{%
+ \texorpdfstring
+ {\GLSxtrtitlefull{#1}}%
+ {\glspdffmtfull{#1}}%
+ }
+}
+{
+ \newcommand*{\GLSfmtfull}[1]{%
+ \GLSxtrtitlefull{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtfullpl}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlefullpl{#1}}%
+ {\glspdffmtfullpl{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtfullpl}[1]{%
+ \glsxtrtitlefullpl{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtfullpl}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlefullpl{#1}}%
+ {\glspdffmtfullpl{#1}{}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtfullpl}[1]{%
+ \Glsxtrtitlefullpl{#1}}
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\GLSfmtfullpl}[1]{%
+ \texorpdfstring
+ {\GLSxtrtitlefullpl{#1}}%
+ {\glspdffmtfullpl{#1}{}}%
+ }
+}
+{
+ \newcommand*{\GLSfmtfullpl}[1]{%
+ \GLSxtrtitlefullpl{#1}}
+}
+\newcommand*{\multiglossaryentrysetup}[1]{\setkeys{glsxtrcombined}{#1}}
+\newcommand*{\@gls@combined@indexmain}{1}
+\define@choicekey{glsxtrcombined}{indexmain}%
+ [\@gls@combined@indexmain@val\@gls@combined@indexmain]
+ {false,true,first}[true]{}
+\newcommand*{\@gls@combined@indexothers}{2}
+\define@choicekey{glsxtrcombined}{indexothers}%
+ [\@gls@combined@indexothers@val\@gls@combined@indexothers]
+ {false,true,first}[true]{}
+\newcommand*{\@gls@combined@hyper}{3}
+\define@choicekey{glsxtrcombined}{hyper}%
+ [\@gls@combined@hyper@val\@gls@combined@hyper]
+ {none,allmain,mainonly,individual,otheronly,notmainfirst,nototherfirst,notfirst}{}
+\newcommand*{\@gls@combined@encapmain}{glsnumberformat}
+\define@key{glsxtrcombined}{encapmain}{%
+ \renewcommand*{\@gls@combined@encapmain}{#1}%
+}
+\newcommand*{\@gls@combined@encapothers}{glsnumberformat}
+\define@key{glsxtrcombined}{encapothers}{%
+ \renewcommand*{\@gls@combined@encapothers}{#1}%
+}
+\newcommand*{\@gls@combined@textformat}{@firstofone}
+\define@key{glsxtrcombined}{textformat}{%
+ \renewcommand*{\@gls@combined@textformat}{#1}%
+}
+\newcommand*{\@gls@combined@category}{}
+\define@key{glsxtrcombined}{category}{%
+ \renewcommand*{\@gls@combined@category}{#1}%
+}
+\define@key{glsxtrcombinedpreopts}{category}{%
+ \renewcommand*{\@gls@combined@category}{#1}%
+}
+\newcommand*{\@gls@combined@mglsopts}{}
+\define@key{glsxtrcombined}{mglsopts}{%
+ \renewcommand*{\@gls@combined@mglsopts}{#1}%
+}
+\define@key{glsxtrcombinedpreopts}{mglsopts}{%
+ \@gls@combined@mglsopts@do
+ {%
+ \renewcommand*{\@gls@combined@mglsopts}{#1}%
+ }%
+}
+\newcommand*{\@gls@combined@mglsopts@do}[1]{#1}
+\newcommand*{\mgls@disable@mglsopts}{%
+ \let\@gls@combined@mglsopts@do\@gls@combined@mglsopts@do@not
+}
+\newcommand*{\mgls@enable@mglsopts}{%
+ \let\@gls@combined@mglsopts@do\@firstofone
+}
+\newcommand*{\@gls@combined@mglsopts@do@not}[1]{%
+ \PackageError{glossaries-extra}{`mglsopts' key not permitted inside
+ `setup' value}{}%
+}
+\newcommand*{\@gls@combined@firstprefix}{}
+\define@key{glsxtrcombined}{firstprefix}{%
+ \renewcommand*{\@gls@combined@firstprefix}{#1}%
+}
+\newcommand*{\@gls@combined@usedprefix}{}
+\define@key{glsxtrcombined}{usedprefix}{%
+ \renewcommand*{\@gls@combined@usedprefix}{#1}%
+}
+\newcommand*{\@gls@combined@firstsuffix}{}
+\define@key{glsxtrcombined}{firstsuffix}{%
+ \renewcommand*{\@gls@combined@firstsuffix}{#1}%
+}
+\newcommand*{\@gls@combined@usedsuffix}{}
+\define@key{glsxtrcombined}{usedsuffix}{%
+ \renewcommand*{\@gls@combined@usedsuffix}{#1}%
+}
+\define@boolkey{glsxtrcombined}{firstskipmain}[true]{}
+\KV@glsxtrcombined@firstskipmainfalse
+\define@boolkey{glsxtrcombined}{firstskipothers}[true]{}
+\KV@glsxtrcombined@firstskipothersfalse
+\define@boolkey{glsxtrcombined}{usedskipmain}[true]{}
+\KV@glsxtrcombined@usedskipmainfalse
+\define@boolkey{glsxtrcombined}{usedskipothers}[true]{}
+\KV@glsxtrcombined@usedskipothersfalse
+\newcommand*{\@gls@combined@postlinks@nr}{0}
+\define@choicekey{glsxtrcombined}{postlinks}%
+ [\@gls@combined@postlinks@val\@gls@combined@postlinks@nr]
+ {none,all,notlast,mainnotlast,mainonly,othernotlast,otheronly}{}
+\newcommand*{\@gls@combined@mpostlink@nr}{1}
+\define@choicekey{glsxtrcombined}{mpostlink}%
+ [\@gls@combined@mpostlink@val\@gls@combined@mpostlink@nr]
+ {false,true,firstonly,usedonly}[true]{}
+\newcommand*{\@gls@combined@mpostlinkelement@nr}{0}
+\define@choicekey{glsxtrcombined}{mpostlinkelement}%
+ [\@gls@combined@mpostlinkelement@val\@gls@combined@mpostlinkelement@nr]
+ {last,main,custom}{}
+\newcommand*{\glsxtrifmulti}[3]{\ifcsdef{@gls@combined@#1@main}{#2}{#3}}
+\newcommand*{\glsxtrmultimain}[1]{\csuse{@gls@combined@#1@main}}
+\newcommand*{\glsxtrmultilist}[1]{\csuse{@gls@combined@#1@list}}
+\newcommand*{\glsxtrmultitotalelements}[1]{\csuse{@gls@combined@#1@total}}
+\newcommand*{\glsxtrmultimainindex}[1]{\csuse{@gls@combined@#1@mainindex}}
+\newcommand*{\glsxtrmultilastotherindex}[1]{\csuse{@gls@combined@#1@lastotherindex}}
+\newif\ifmultiglossaryentryglobal
+\multiglossaryentryglobalfalse
+\newcount\mglselementindex
+\newrobustcmd{\multiglossaryentry}[1][]{%
+ \def\@gls@combined@current@opts{#1}%
+ \ifnum\@glsxtr@docdefval=1\relax
+ \let\@multi@glossentry@donext\@defmultiglossaryentry
+ \else
+ \let\@multi@glossentry@donext\@multiglossaryentry
+ \fi
+ \@multi@glossentry@donext
+}
+\newcommand*{\@multiglossaryentry}[1]{%
+ \def\@gls@combined@current@label{#1}%
+ \@multi@glossaryentry
+}
+\newcommand*{\@multi@glossaryentry}[2][]{%
+ \ifcsdef{@gls@combined@\@gls@combined@current@label @main}%
+ {\PackageError{glossaries-extra}%
+ {Multi-entry label `\@gls@combined@current@label' already defined}%
+ {}%
+ }%
+ {%
+ \@multi@glossary@entry{#1}{#2}%
+ }%
+}
+\newcommand*{\@defmultiglossaryentry}[1]{%
+ \def\@gls@combined@current@label{#1}%
+ \@def@multi@glossaryentry
+}
+\newcommand*{\@def@multi@glossaryentry}[2][]{%
+ \let\@def@multi@glossaryentry@do\@multi@glossary@entry
+ \ifundef\@glsxtr@docdefs@multilist
+ {%
+ \gdef\@glsxtr@docdefs@multilist{}%
+ \listxadd
+ {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}%
+ }%
+ {%
+ \xifinlist{\@gls@combined@current@label}{\@glsxtr@docdefs@multilist}%
+ {%
+ \PackageError{glossaries-extra}%
+ {Multi-entry label `\@gls@combined@current@label' already defined}%
+ {}%
+ \let\@def@multi@glossaryentry@do\@gobbletwo
+ }%
+ {%
+ \listxadd
+ {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}%
+ }%
+ }%
+ \@def@multi@glossaryentry@do{#1}{#2}%
+}
+\newcommand*{\@multi@glossary@doifexists}{\glsdoifexists}
+\newrobustcmd{\providemultiglossaryentry}[2][]{%
+ \def\@gls@combined@current@opts{#1}%
+ \def\@gls@combined@current@label{#2}%
+ \ifcsdef{@gls@combined@\@gls@combined@current@label @main}%
+ {\def\@multi@glossentry@donext{\@provide@multi@glossaryentry@noop}}%
+ {%
+ \ifnum\@glsxtr@docdefval=1\relax
+ \def\@multi@glossentry@donext{\@def@multi@glossaryentry}%
+ \else
+ \def\@multi@glossentry@donext{\@multi@glossaryentry}%
+ \fi
+ }%
+ \@multi@glossentry@donext
+}
+\newcommand*{\@provide@multi@glossaryentry@noop}[2][]{}
+\newcommand*{\@multi@glossaryentry@list}{}
+\newcommand*{\@multi@glossary@entry}[2]{%
+ \protected@edef\@gls@combined@current@main{#1}%
+ \protected@edef\@gls@combined@currentlist{#2}%
+ \mglselementindex=0\relax
+ \@for\@gls@tmp:=\@gls@combined@currentlist\do{%
+ \advance\mglselementindex by 1\relax
+ \@multi@glossary@doifexists{\@gls@tmp}{}%
+ \let\@gls@combined@finalitem\@gls@tmp
+ \ifdefvoid\@gls@combined@current@main
+ {}%
+ {%
+ \ifx\@gls@combined@current@main\@gls@tmp
+ \ifmultiglossaryentryglobal
+ \global\cslet{@gls@combined@\@gls@combined@current@label @main}%
+ \@gls@combined@current@main
+ \csxdef{@gls@combined@\@gls@combined@current@label @mainindex}%
+ {\the\mglselementindex}%
+ \else
+ \cslet{@gls@combined@\@gls@combined@current@label @main}%
+ \@gls@combined@current@main
+ \csedef{@gls@combined@\@gls@combined@current@label @mainindex}%
+ {\the\mglselementindex}%
+ \fi
+ \else
+ \ifmultiglossaryentryglobal
+ \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}%
+ {\the\mglselementindex}%
+ \else
+ \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}%
+ {\the\mglselementindex}%
+ \fi
+ \fi
+ }%
+ }%
+ \ifmultiglossaryentryglobal
+ \csxdef{@gls@combined@\@gls@combined@current@label @total}%
+ {\the\mglselementindex}%
+ \else
+ \csedef{@gls@combined@\@gls@combined@current@label @total}%
+ {\the\mglselementindex}%
+ \fi
+ \ifnum\mglselementindex<2\relax
+ \PackageError{glossaries-extra}{At least 2 labels required in
+ multi-entry element list (\number\mglselementindex\space found)}{}%
+ \else
+ \ifdefvoid\@gls@combined@current@main
+ {}%
+ {%
+ \ifcsundef{@gls@combined@\@gls@combined@current@label @main}%
+ {\PackageError{glossaries-extra}%
+ {Main element `\@gls@combined@current@main' not found in list}%
+ {The final element `\@gls@combined@finalitem' will be used instead}
+ \let\@gls@combined@current@main\@empty
+ }%
+ {}%
+ }%
+ \ifdefvoid\@gls@combined@current@main
+ {%
+ \ifmultiglossaryentryglobal
+ \global\cslet{@gls@combined@\@gls@combined@current@label @main}%
+ \@gls@combined@finalitem
+ \global\csletcs{@gls@combined@\@gls@combined@current@label @mainindex}%
+ {@gls@combined@\@gls@combined@current@label @total}%
+ \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}%
+ {\the\numexpr\mglselementindex-1 }%
+ \else
+ \cslet{@gls@combined@\@gls@combined@current@label @main}%
+ \@gls@combined@finalitem
+ \csletcs{@gls@combined@\@gls@combined@current@label @mainindex}%
+ {@gls@combined@\@gls@combined@current@label @total}%
+ \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}%
+ {\the\numexpr\mglselementindex-1 }%
+ \fi
+ }%
+ {}%
+ \ifmultiglossaryentryglobal
+ \global\cslet{@gls@combined@\@gls@combined@current@label @list}%
+ \@gls@combined@currentlist
+ \protected@csxdef{@gls@combined@\@gls@combined@current@label @options}%
+ {\@gls@combined@current@opts}%
+ \expandafter\@ifdefinable
+ \csname if@gls@combined@\@gls@combined@current@label @flag\endcsname
+ {\expandafter\global\expandafter
+ \newif\csname if@gls@combined@\@gls@combined@current@label @flag\endcsname}%
+ \expandafter\global
+ \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname
+ \else
+ \cslet{@gls@combined@\@gls@combined@current@label @list}%
+ \@gls@combined@currentlist
+ \protected@csedef{@gls@combined@\@gls@combined@current@label @options}%
+ {\@gls@combined@current@opts}%
+ \newboolean{@gls@combined@\@gls@combined@current@label @flag}%
+ \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname
+ \fi
+ \fi
+ \writemultiglossentry
+ {\@gls@combined@current@opts}{\@gls@combined@current@label}%
+ {\csuse{@gls@combined@\@gls@combined@current@label @main}}{#2}%
+ \ifmultiglossaryentryglobal
+ \ifdefempty\@multi@glossaryentry@list
+ {\let\@multi@glossaryentry@list\@gls@combined@current@label}%
+ {%
+ \eappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}%
+ }%
+ \else
+ \ifdefempty\@multi@glossaryentry@list
+ {\global\let\@multi@glossaryentry@list\@gls@combined@current@label}%
+ {%
+ \xappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}%
+ }%
+ \fi
+}
+\newcommand*{\@glsxtr@multientry}[4]{%
+ \ifnum\@glsxtr@docdefval=1\relax
+ \bgroup
+ \def\@gls@combined@current@opts{#1}%
+ \def\@gls@combined@current@label{#2}%
+ \let\@multi@glossary@doifexists\@secondoftwo
+ \let\writemultiglossentry\@gobblefour
+ \multiglossaryentryglobaltrue
+ \@multi@glossary@entry{#3}{#4}%
+ \egroup
+ \fi
+}
+\newcommand*{\writemultiglossentry}[4]{%
+ \protected@write\@auxout{}{\string\@glsxtr@multientry{#1}{#2}{#3}{#4}}%
+}
+\newcommand*{\ifmglsused}[3]{%
+ \ifbool{@gls@combined@#1@flag}{#2}{#3}%
+}
+\newcommand*{\mglsunset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsxtrifmulti{#1}{\@mglsunset{#1}}%
+ {%
+ \glsxtrundefaction{Multi entry `#1' hasn't been defined}%
+ {You need to define `#1' with \string\multiglossaryentry}%
+ }%
+ }%
+}
+\newcommand*{\@mglsunset}[1]{%
+ \expandafter\global\csname @gls@combined@#1@flagtrue\endcsname
+}
+\newcommand*{\mglsreset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsxtrifmulti{#1}{\@mglsreset{#1}}%
+ {%
+ \glsxtrundefaction{Multi entry `#1' hasn't been defined}%
+ {You need to define `#1' with \string\multiglossaryentry}%
+ }%
+ }%
+}
+\newcommand*{\@mglsreset}[1]{%
+ \expandafter\global\csname @gls@combined@#1@flagfalse\endcsname
+}
+\newcommand*{\mglslocalunset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsxtrifmulti{#1}{\@mglslocalunset{#1}}%
+ {%
+ \glsxtrundefaction{Multi entry `#1' hasn't been defined}%
+ {You need to define `#1' with \string\multiglossaryentry}%
+ }%
+ }%
+}
+\newcommand*{\@mglslocalunset}[1]{%
+ \csname @gls@combined@#1@flagtrue\endcsname
+}
+\newcommand*{\mglslocalreset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsxtrifmulti{#1}{\@mglslocalreset{#1}}%
+ {%
+ \glsxtrundefaction{Multi entry `#1' hasn't been defined}%
+ {You need to define `#1' with \string\multiglossaryentry}%
+ }%
+ }%
+}
+\newcommand*{\@mglslocalreset}[1]{%
+ \csname @gls@combined@#1@flagfalse\endcsname
+}
+\newcommand*{\mglsunsetall}{%
+ \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsunset\@mgls@thislabel}%
+}%
+\newcommand*{\mglsresetall}{%
+ \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsreset\@mgls@thislabel}%
+}%
+\newrobustcmd{\mglsSetMain}[2]{%
+ \ifcsundef{@gls@combined@#1@main}%
+ {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}%
+ {%
+ \protected@edef\@gls@combined@current@main{#2}%
+ \letcs\@gls@combined@currentlist{@gls@combined@#1@list}%
+ \mglselementindex=0\relax
+ \count@=0\relax
+ \@for\@gls@tmp:=\@gls@combined@currentlist\do{%
+ \advance\mglselementindex by 1\relax
+ \ifx\@gls@combined@current@main\@gls@tmp
+ \count@=\mglselementindex\relax
+ \let\@gls@combined@finalitem\@gls@tmp
+ \ifmultiglossaryentryglobal
+ \global\cslet{@gls@combined@#1@main}\@gls@combined@current@main
+ \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}%
+ \else
+ \cslet{@gls@combined@#1@main}\@gls@combined@current@main
+ \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}%
+ \fi
+ \else
+ \ifmultiglossaryentryglobal
+ \csxdef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}%
+ \else
+ \csedef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}%
+ \fi
+ \fi
+ }%
+ \ifnum\count@=0\relax
+ \PackageError{glossaries-extra}{Label `#2' is not in `#1' set
+ (\@gls@combined@currentlist)}{}%
+ \ifmultiglossaryentryglobal
+ \global\cslet{@gls@combined@#1@main}\@gls@combined@finalitem
+ \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}%
+ \csxdef{@gls@combined@#1@lastotherindex}{%
+ \number\numexpr\mglselementindex-1 }%
+ \else
+ \cslet{@gls@combined@#1@main}\@gls@combined@finalitem
+ \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}%
+ \csedef{@gls@combined@#1@lastotherindex}{%
+ \number\numexpr\mglselementindex-1 }%
+ \fi
+ \fi
+ }%
+}
+\newrobustcmd{\mglsSetOptions}[2]{%
+ \ifcsundef{@gls@combined@#1@main}%
+ {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}%
+ {%
+ \csdef{@gls@combined@#1@options}{#2}%
+ }%
+}
+\newrobustcmd{\mglsAddOptions}[2]{%
+ \ifcsundef{@gls@combined@#1@main}%
+ {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}%
+ {%
+ \ifcsempty{@gls@combined@#1@options}%
+ {\csdef{@gls@combined@#1@options}{#2}}%
+ {\csappto{@gls@combined@#1@options}{,#2}}%
+ }%
+}
+\newcommand*{\@mgls@all}{}
+\define@key{mgls}{all}{\renewcommand*{\@mgls@all}{#1}}
+\newcommand*{\@mgls@main}{}
+\define@key{mgls}{main}{\renewcommand*{\@mgls@main}{#1}}
+\newcommand*{\@mgls@others}{}
+\define@key{mgls}{others}{\renewcommand*{\@mgls@others}{#1}}
+\newcommand*{\@mgls@setup}{}
+\define@key{mgls}{setup}{%
+ \@mgls@setup@do{\renewcommand*{\@mgls@setup}{#1}}%
+}
+\newcommand*{\@mgls@setup@do}[1]{#1}
+\newcommand*{\@mgls@setup@do@not}[1]{%
+ \PackageError{glossaries-extra}{`setup' key not permitted inside
+ `mglsopts' value}{}%
+}
+\newcommand*{\mgls@disable@setup}{%
+ \let\@mgls@setup@do\@mgls@setup@do@not
+}
+\newcommand*{\mgls@enable@setup}{%
+ \let\@mgls@setup@do\@firstofone
+}
+\newcommand\@mgls@unsetaction{0}
+\define@choicekey{mgls}{multiunset}[\@mgls@unsetaction@val\@mgls@unsetaction]%
+ {global,local,none}{}
+\define@boolkey{mgls}{presetlocal}[true]{}
+\KV@mgls@presetlocalfalse
+\newcommand*{\@mgls@hyper}{}
+\define@choicekey{mgls}{hyper}[\@mgls@hyper@val\@mgls@hyper@nr]{true,false}[true]%
+{%
+ \renewcommand*{\@mgls@hyper}{hyper=#1}%
+ \ifnum\@mgls@hyper@nr=1\relax
+ \let\@mgls@hyperlink\@secondoftwo
+ \else
+ \let\@mgls@hyperlink\@@mgls@hyperlink
+ \fi
+}
+\newcommand*{\@@mgls@hyperlink}[2]{%
+ \ifx\@glslink\glsdonohyperlink
+ #2%
+ \else
+ \glsxtr@org@dohyperlink{\glolinkprefix#1}{#2}%
+ \fi
+}
+\let\@mgls@hyperlink\@@mgls@hyperlink
+\newcommand*{\mglsforelements}[3]{%
+ \expandafter\@for\expandafter#2\expandafter:\expandafter
+ =\csname @gls@combined@#1@list\endcsname\do{#3}%
+}
+\newcommand*{\mglsforotherelements}[3]{%
+ \expandafter\@for\expandafter#2\expandafter:\expandafter
+ =\csname @gls@combined@#1@list\endcsname\do
+ {\expandafter\ifdefequal\csname @gls@combined@#1@main\endcsname{#2}{}{#3}}%
+}
+\newcommand*{\mglsunsetothers}[1]{%
+ \mglsforotherelements{#1}{\@gls@tmp}{\glsunset{\@gls@tmp}}%
+}
+\newcommand*{\mglslocalunsetothers}[1]{%
+ \mglsforotherelements{#1}{\@gls@tmp}{\glslocalunset{\@gls@tmp}}%
+}
+\newcommand*{\mglselementreset}[1]{%
+ \ifKV@mgls@presetlocal
+ \glslocalreset{#1}%
+ \else
+ \glsreset{#1}%
+ \fi
+}
+\newcommand*{\mglselementunset}[1]{%
+ \ifKV@mgls@presetlocal
+ \glslocalunset{#1}%
+ \else
+ \glsunset{#1}%
+ \fi
+}
+\newcommand*{\@mgls@resetall}{}
+\define@choicekey{mgls}{resetall}%
+[\@mgls@resetall@val\@mgls@resetall@nr]{false,true}[true]%
+{%
+ \ifcase\@mgls@resetall@nr\relax
+ \renewcommand*{\@mgls@resetall}{}%
+ \or
+ \renewcommand*{\@mgls@resetall}{%
+ \@for\@gls@resetlabel:=\mglscurrentlist\do{\mglselementreset\@gls@resetlabel}}%
+ \renewcommand*{\@mgls@unsetall}{}%
+ \fi
+}
+\newcommand*{\@mgls@resetmain}{}
+\define@choicekey{mgls}{resetmain}
+[\@mgls@resetmain@val\@mgls@resetmain@nr]{false,true}[true]%
+{%
+ \ifcase\@mgls@resetmain@nr\relax
+ \renewcommand*{\@mgls@resetmain}{}%
+ \or
+ \renewcommand*{\@mgls@resetmain}{\mglselementreset\mglscurrentmainlabel}%
+ \renewcommand*{\@mgls@unsetmain}{}%
+ \fi
+}
+\newcommand*{\@mgls@resetothers}{}
+\define@choicekey{mgls}{resetothers}
+[\@mgls@resetothers@val\@mgls@resetothers@nr]{false,true}[true]%
+{%
+ \ifcase\@mgls@resetothers@nr\relax
+ \renewcommand*{\@mgls@resetothers}{}%
+ \or
+ \renewcommand*{\@mgls@resetothers}{%
+ \@for\@gls@resetlabel:=\mglscurrentlist\do{%
+ \ifx\@gls@resetlabel\mglscurrentmainlabel
+ \else
+ \mglselementreset\@gls@resetlabel
+ \fi
+ }%
+ }%
+ \renewcommand*{\@mgls@unsetothers}{}%
+ \fi
+}
+\newcommand*{\@mgls@unsetall}{}
+\define@choicekey{mgls}{unsetall}%
+[\@mgls@unsetall@val\@mgls@unsetall@nr]{false,true}[true]%
+{%
+ \ifcase\@mgls@unsetall@nr\relax
+ \renewcommand*{\@mgls@unsetall}{}%
+ \or
+ \renewcommand*{\@mgls@unsetall}{%
+ \@for\@gls@unsetlabel:=\mglscurrentlist\do{\mglselementunset\@gls@unsetlabel}}%
+ \renewcommand*{\@mgls@resetall}{}%
+ \fi
+}
+\newcommand*{\@mgls@unsetmain}{}
+\define@choicekey{mgls}{unsetmain}
+[\@mgls@unsetmain@val\@mgls@unsetmain@nr]{false,true}[true]%
+{%
+ \ifcase\@mgls@unsetmain@nr\relax
+ \renewcommand*{\@mgls@unsetmain}{}%
+ \or
+ \renewcommand*{\@mgls@unsetmain}{\mglselementunset\mglscurrentmainlabel}%
+ \renewcommand*{\@mgls@resetmain}{}%
+ \fi
+}
+\newcommand*{\@mgls@unsetothers}{}
+\define@choicekey{mgls}{unsetothers}
+[\@mgls@unsetothers@val\@mgls@unsetothers@nr]{false,true}[true]%
+{%
+ \ifcase\@mgls@unsetothers@nr\relax
+ \renewcommand*{\@mgls@unsetothers}{}%
+ \or
+ \renewcommand*{\@mgls@unsetothers}{%
+ \@for\@gls@unsetlabel:=\mglscurrentlist\do{%
+ \ifx\@gls@unsetlabel\mglscurrentmainlabel
+ \else
+ \mglselementunset\@gls@unsetlabel
+ \fi
+ }%
+ }%
+ \renewcommand*{\@mgls@resetothers}{}%
+ \fi
+}
+\newcommand{\glsxtr@setup@docurrent}{%
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \mglsisfirstuse
+ {%
+ \ifKV@glsxtrcombined@firstskipmain
+ \let\@mgls@do@current@element\@gobble
+ \else
+ \let\@mgls@do@current@element\@firstofone
+ \fi
+ }%
+ {%
+ \ifKV@glsxtrcombined@usedskipmain
+ \let\@mgls@do@current@element\@gobble
+ \else
+ \let\@mgls@do@current@element\@firstofone
+ \fi
+ }%
+ \else
+ \mglsisfirstuse
+ {%
+ \ifKV@glsxtrcombined@firstskipothers
+ \let\@mgls@do@current@element\@gobble
+ \else
+ \let\@mgls@do@current@element\@firstofone
+ \fi
+ }%
+ {%
+ \ifKV@glsxtrcombined@usedskipothers
+ \let\@mgls@do@current@element\@gobble
+ \else
+ \let\@mgls@do@current@element\@firstofone
+ \fi
+ }%
+ \fi
+}
+\newcommand*{\glsxtr@mgls@checklastelement}[2]{%
+ \ifbool{KV@glsxtrcombined@#1skipmain}%
+ {%
+ \ifbool{KV@glsxtrcombined@#1skipothers}%
+ {%
+ }%
+ {%
+ \ifnum\mglselementindex=\glsxtrmultilastotherindex{#2}\relax
+ \let\mglsiflast\@firstoftwo
+ \else
+ \let\mglsiflast\@secondoftwo
+ \fi
+ }%
+ }%
+ {%
+ \ifbool{KV@glsxtrcombined@#1skipothers}%
+ {%
+ \ifnum\mglselementindex=\glsxtrmultimainindex{#2}\relax
+ \let\mglsiflast\@firstoftwo
+ \else
+ \let\mglsiflast\@secondoftwo
+ \fi
+ }%
+ {%
+ \let\mglsiflast\@secondoftwo
+ }%
+ }%
+}
+\newcommand{\glsxtrmglsWarnAllSkipped}[3]{%
+ \GlossariesExtraWarning{#1}%
+ #3{#2}%
+}
+\newcommand*{\glsxtr@mgls@applyopts}[1]{%
+ \edef\@mgls@dooptions{\noexpand\setkeys*{mgls}{\expandonce#1}}%
+ \@mgls@dooptions
+ \ifdefvoid\XKV@rm{}{\eappto\@mgls@all{,\expandonce\XKV@rm}}%
+ \ifdefvoid\@mgls@setup
+ {}%
+ {%
+ \edef\@mgls@dooptions{%
+ \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@setup}}%
+ \mgls@disable@mglsopts
+ \@mgls@dooptions
+ \mgls@enable@mglsopts
+ \ifx\@mgls@setupoptions\@empty
+ \let\@mgls@setupoptions\XKV@rm
+ \else
+ \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}%
+ \fi
+ }%
+ \@mgls@resetall
+ \@mgls@unsetall
+ \@mgls@resetmain
+ \@mgls@unsetmain
+ \@mgls@resetothers
+ \@mgls@unsetothers
+ \let\@mgls@resetall\@empty
+ \let\@mgls@resetmain\@empty
+ \let\@mgls@resetothers\@empty
+ \let\@mgls@unsetall\@empty
+ \let\@mgls@unsetmain\@empty
+ \let\@mgls@unsetothers\@empty
+ \ifmglsused\mglscurrentmultilabel
+ {\let\mglsisfirstuse\@secondoftwo}%
+ {\let\mglsisfirstuse\@firstoftwo}%
+}
+\providecommand{\@firstofthree}[3]{#1}
+\providecommand{\@secondofthree}[3]{#2}
+\providecommand{\@thirdofthree}[3]{#3}
+\newcommand*{\glsxtr@mgls@inner}[7]{%
+ \let\mglslastmainlabel\@empty
+ \let\mglsiflastmainwasfirstuse\@firstoftwo
+ \let\mglsiflastmainwasplural\@secondoftwo
+ \let\mglsiflastmaincapscase\@firstofthree
+ \let\mglsiflastmainskipped\@firstoftwo
+ \bgroup
+ \ifcsundef{@gls@combined@#2@main}%
+ {%
+ \glsxtrundefaction{Multi entry `#2' hasn't been defined}%
+ {You need to define `#2' with \string\multiglossaryentry}%
+ \gdef\@mgls@post@hookdefs{%
+ \protected@edef\mglslastmultilabel{#2}%
+ \let\mglswasfirstuse\@firstoftwo
+ \let\mglslastcategory\@empty
+ \let\mglsiflastelementskipped\@firstoftwo
+ \let\mglsiflastelementwasfirstuse\@firstoftwo
+ \let\mglsiflastelementwasplural\@secondoftwo
+ \let\mglsiflastelementcapscase\@firstofthree
+ \let\mglslastelementlabel\@empty
+ \let\mgls@do@postlinkhook\relax
+ }%
+ }%
+ {%
+ \protected@edef\mglscurrentmultilabel{#2}%
+ \letcs\mglscurrentmainlabel{@gls@combined@#2@main}%
+ \letcs\mglscurrentlist{@gls@combined@#2@list}%
+ \letcs\mglscurrentoptions{@gls@combined@#2@options}%
+ \ifmglsused\mglscurrentmultilabel
+ {\let\mglsisfirstuse\@secondoftwo}%
+ {\let\mglsisfirstuse\@firstoftwo}%
+ \edef\@mgls@dooptions{%
+ \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\mglscurrentoptions}}%
+ \@mgls@dooptions
+ \let\@mgls@setupoptions\XKV@rm
+ \mgls@disable@setup
+ \ifdefvoid\@gls@combined@mglsopts
+ {}%
+ {\glsxtr@mgls@applyopts\@gls@combined@mglsopts}%
+ \mgls@enable@setup
+ \ifstrempty{#1}{}{\def\@mgls@options{#1}\glsxtr@mgls@applyopts\@mgls@options}%
+ \ifx\@gls@combined@category\empty
+ \else
+ \glshascategoryattribute{\@gls@combined@category}{multioptions}%
+ {%
+ \letcs\@mgls@attroptions{@glsxtr@categoryattr@@\@gls@combined@category
+ @multioptions}%
+ \let\@gls@combined@mglsopts\@empty
+ \edef\@mgls@dooptions{%
+ \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@attroptions}}%
+ \@mgls@dooptions
+ \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}%
+ \ifx\@gls@combined@mglsopts\@empty
+ \else
+ \let\@mgls@setup\@empty
+ \mgls@disable@setup
+ \glsxtr@mgls@applyopts\@gls@combined@mglsopts
+ \mgls@enable@setup
+ \fi
+ }%
+ {}%
+ \fi
+ \edef\@mgls@dooptions{%
+ \noexpand\setkeys{glsxtrcombined}{\expandonce\@mgls@setupoptions}}%
+ \@mgls@dooptions
+ \let\mglscurrentcategory\@gls@combined@category
+ \ifnum\@gls@combined@hyper=1\relax
+ \def\@mgls@combinedlink{\@mgls@hyperlink{\mglscurrentmainlabel}}%
+ \else
+ \def\@mgls@combinedlink{\@firstofone}%
+ \fi
+ \def\@gls@combined@encapsulator##1{%
+ \@mgls@combinedlink{\csuse{\@gls@combined@textformat}{##1}}}%
+ \let\@mgls@do@current@element\@firstofone
+ \mglsisfirstuse
+ {%
+ \ifKV@glsxtrcombined@firstskipmain
+ \ifKV@glsxtrcombined@firstskipothers
+ \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator
+ \def\@gls@combined@encapsulator##1{%
+ \glsxtrmglsWarnAllSkipped{All elements skipped for
+ first use of multi-entry `#2'}{#3}%
+ {\@gls@org@combined@encapsulator}%
+ }%
+ \let\@mgls@do@current@element\@gobble
+ \fi
+ \fi
+ }%
+ {%
+ \ifKV@glsxtrcombined@usedskipmain
+ \ifKV@glsxtrcombined@usedskipothers
+ \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator
+ \def\@gls@combined@encapsulator##1{%
+ \glsxtrmglsWarnAllSkipped{All elements skipped for
+ subsequent use of multi-entry `#2'}{#3}%
+ {\@gls@org@combined@encapsulator}%
+ }%
+ \let\@mgls@do@current@element\@gobble
+ \fi
+ \fi
+ }%
+ \mglsisfirstuse
+ {%
+ \let\mglscurrentprefix\@gls@combined@firstprefix
+ \let\mglscurrentsuffix\@gls@combined@firstsuffix
+ }%
+ {%
+ \let\mglscurrentprefix\@gls@combined@usedprefix
+ \let\mglscurrentsuffix\@gls@combined@usedsuffix
+ }%
+ \xdef\@mgls@post@hookdefs{%
+ \noexpand\def\noexpand\mglslastmultilabel{\expandonce\mglscurrentmultilabel}%
+ \noexpand\def\noexpand\mglslastcategory{\mglscurrentcategory}%
+ }%
+ \ifx\@mgls@do@current@element\@gobble
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastelementskipped\@firstoftwo
+ \let\mglslastelementlabel\@empty
+ \let\mglsiflastelementwasfirstuse\@firstoftwo
+ \let\mglsiflastelementwasplural\@secondoftwo
+ \let\mglsiflastelementcapscase\@firstofthree
+ }%
+ \fi
+ \mglsisfirstuse
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@firstoftwo}%
+ \ifcase\@gls@combined@mpostlink@nr\relax
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}%
+ \or
+ \ifcase\@gls@combined@mpostlinkelement@nr\relax
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}%
+ \fi
+ \or
+ \ifcase\@gls@combined@mpostlinkelement@nr\relax
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}%
+ \fi
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}%
+ \fi
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@secondoftwo}%
+ \ifcase\@gls@combined@mpostlink@nr\relax
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}%
+ \or
+ \ifcase\@gls@combined@mpostlinkelement@nr\relax
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}%
+ \fi
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}%
+ \or
+ \ifcase\@gls@combined@mpostlinkelement@nr\relax
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}%
+ \or
+ \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}%
+ \fi
+ \fi
+ }%
+ \let\mgls@org@postlinkhook\glspostlinkhook
+ \mglsprefix
+ \let\mglslastelementlabel\@empty
+ \@gls@combined@encapsulator
+ {%
+ \def\@mgls@previouslabel{}%
+ \mglselementindex=0\relax
+ \@for\mglscurrentlabel:=\mglscurrentlist\do{%
+ \advance\mglselementindex by 1\relax
+ \glsxtr@setup@docurrent
+ \ifx\@xfor@nextelement\@nnil
+ \let\mglsiflast\@firstoftwo
+ \else
+ \let\mglsiflast\@secondoftwo
+ \mglsisfirstuse
+ {%
+ \glsxtr@mgls@checklastelement{first}{#2}%
+ }%
+ {%
+ \glsxtr@mgls@checklastelement{used}{#2}%
+ }%
+ \fi
+ \ifcase\@gls@combined@postlinks@nr\relax
+ \let\glspostlinkhook\relax
+ \or
+ \let\glspostlinkhook\mgls@org@postlinkhook
+ \or
+ \mglsiflast
+ {%
+ \let\glspostlinkhook\relax
+ }%
+ {%
+ \let\glspostlinkhook\mgls@org@postlinkhook
+ }%
+ \or
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \mglsiflast
+ {%
+ \let\glspostlinkhook\relax
+ }%
+ {%
+ \let\glspostlinkhook\mgls@org@postlinkhook
+ }%
+ \else
+ \let\glspostlinkhook\relax
+ \fi
+ \or
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \let\glspostlinkhook\mgls@org@postlinkhook
+ \else
+ \let\glspostlinkhook\relax
+ \fi
+ \or
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \let\glspostlinkhook\relax
+ \else
+ \mglsiflast
+ {%
+ \let\glspostlinkhook\relax
+ }%
+ {%
+ \let\glspostlinkhook\mgls@org@postlinkhook
+ }%
+ \fi
+ \or
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \let\glspostlinkhook\relax
+ \else
+ \let\glspostlinkhook\mgls@org@postlinkhook
+ \fi
+ \fi
+ \mglsiflast
+ {%
+ \xappto\@mgls@post@hookdefs{%
+ \noexpand\def\noexpand\mglslastelementlabel
+ {\expandonce\mglscurrentlabel}}%
+ }%
+ {}%
+ \@mgls@do@current@element
+ {%
+ \mglselementprehook
+ \GlsXtrIfUnusedOrUndefined{\mglscurrentlabel}%
+ {\let\@mgls@current@iffirstuse\@firstoftwo}%
+ {\let\@mgls@current@iffirstuse\@secondoftwo}%
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \edef\@mgls@current@options{format=\@gls@combined@encapmain}%
+ \ifcase\@gls@combined@indexmain
+ \appto\@mgls@current@options{,noindex}%
+ \or
+ \appto\@mgls@current@options{,noindex=false}%
+ \or
+ \@mgls@current@iffirstuse
+ {\appto\@mgls@current@options{,noindex=false}}%
+ {\appto\@mgls@current@options{,noindex}}%
+ \fi
+ \ifcase\@gls@combined@hyper\relax
+ \appto\@mgls@current@options{,hyper=false}% none
+ \or
+ \appto\@mgls@current@options{,hyper=false}% allmain
+ \or
+ \eappto\@mgls@current@options{,\@mgls@hyper}% mainonly
+ \or
+ \eappto\@mgls@current@options{,\@mgls@hyper}% individual
+ \or
+ \appto\@mgls@current@options{,hyper=false}% otheronly
+ \or
+ \mglsisfirstuse
+ {%
+ \appto\@mgls@current@options{,hyper=false}% notmainfirst
+ }%
+ {%
+ \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst
+ }%
+ \or
+ \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst
+ \or
+ \mglsisfirstuse
+ {%
+ \appto\@mgls@current@options{,hyper=false}% notfirst
+ }%
+ {%
+ \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst
+ }%
+ \fi
+ \eappto\@mgls@current@options{,\@mgls@all,\@mgls@main}%
+ \else
+ \edef\@mgls@current@options{format=\@gls@combined@encapothers}%
+ \ifcase\@gls@combined@indexothers\relax
+ \appto\@mgls@current@options{,noindex}%
+ \or
+ \appto\@mgls@current@options{,noindex=false}%
+ \or
+ \@mgls@current@iffirstuse
+ {\appto\@mgls@current@options{,noindex=false}}%
+ {\appto\@mgls@current@options{,noindex}}%
+ \fi
+ \ifcase\@gls@combined@hyper\relax
+ \appto\@mgls@current@options{,hyper=false}% none
+ \or
+ \appto\@mgls@current@options{,hyper=false}% allmain
+ \or
+ \appto\@mgls@current@options{,hyper=false}% mainonly
+ \or
+ \eappto\@mgls@current@options{,\@mgls@hyper}% individual
+ \or
+ \eappto\@mgls@current@options{,\@mgls@hyper}% otheronly
+ \or
+ \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst
+ \or
+ \mglsisfirstuse
+ {%
+ \appto\@mgls@current@options{,hyper=false}% nototherfirst
+ }%
+ {%
+ \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst
+ }%
+ \or
+ \mglsisfirstuse
+ {%
+ \appto\@mgls@current@options{,hyper=false}% notfirst
+ }%
+ {%
+ \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst
+ }%
+ \fi
+ \eappto\@mgls@current@options{,\@mgls@all,\@mgls@others}%
+ \fi
+ \ifx\@mgls@previouslabel\empty
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \let\@mgls@cs#6\relax
+ \else
+ \let\@mgls@cs#4\relax
+ \fi
+ \else
+ \@mgls@previous@iffirstuse
+ {%
+ \@mgls@current@iffirstuse
+ {\glscombinedfirstsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}%
+ {\glscombinedfirstsep{\@mgls@previouslabel}{\mglscurrentlabel}}%
+ }%
+ {%
+ \@mgls@current@iffirstuse
+ {\glscombinedsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}%
+ {\glscombinedsep{\@mgls@previouslabel}{\mglscurrentlabel}}%
+ }%
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \let\@mgls@cs#7\relax
+ \else
+ \let\@mgls@cs#5\relax
+ \fi
+ \fi
+ \mglsiflast
+ {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[#3]}%
+ {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[]}%
+ \ifx\mglscurrentlabel\mglscurrentmainlabel
+ \xappto\@mgls@post@hookdefs{%
+ \noexpand\def\noexpand\mglslastmainlabel
+ {\expandonce\mglscurrentmainlabel}%
+ }%
+ \glsxtrifwasfirstuse
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@firstoftwo}%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@secondoftwo}%
+ }%
+ \glsifplural
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@firstoftwo}%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@secondoftwo}%
+ }%
+ \glscapscase
+ {%
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastmaincapscase\@firstofthree
+ }%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastmaincapscase\@secondofthree
+ }%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastmaincapscase\@thirdofthree
+ }%
+ }%
+ \fi
+ \let\@mgls@previouslabel\mglscurrentlabel
+ \let\@mgls@previous@iffirstuse\@mgls@current@iffirstuse
+ }%
+ \mglselementposthook
+ }%
+ \ifx\mglslastmainlabel\@empty
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@firstoftwo}%
+ \else
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@secondoftwo}%
+ \fi
+ \ifx\@mgls@do@current@element\@gobble
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@firstoftwo}%
+ \else
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@secondoftwo}%
+ \fi
+ \glsxtrifwasfirstuse
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@firstoftwo}%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@secondoftwo}%
+ }%
+ \glsifplural
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@firstoftwo}%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@secondoftwo}%
+ }%
+ \glscapscase
+ {%
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastelementcapscase\@firstofthree
+ }%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastelementcapscase\@secondofthree
+ }%
+ }%
+ {%
+ \gappto\@mgls@post@hookdefs{%
+ \let\mglsiflastelementcapscase\@thirdofthree
+ }%
+ }%
+ }%
+ \@mgls@post@hookdefs
+ \mglssuffix
+ \ifcase\@mgls@unsetaction\relax
+ \xappto\@mgls@post@hookdefs{%
+ \noexpand\mglsunset{\expandonce\mglscurrentmultilabel}}%
+ \or
+ \xappto\@mgls@post@hookdefs{%
+ \noexpand\mglslocalunset{\expandonce\mglscurrentmultilabel}}%
+ \fi
+ }%
+ \glsxtrmglswrite{#2}%
+ \egroup
+ \@mgls@post@hookdefs
+ \mgls@do@postlinkhook
+}
+\newcommand*{\mglscustompostlinkhook}{}
+\newcommand*{\mglslastelementpostlinkhook}{%
+ \let\glsxtrifwasfirstuse\mglsiflastelementwasfirstuse
+ \let\glsifplural\mglsiflastelementwasplural
+ \let\glscapscase\mglsiflastelementcapscase
+ \let\glslabel\mglslastelementlabel
+ \glspostlinkhook
+}
+\newcommand*{\mglslastmainpostlinkhook}{%
+ \let\glsxtrifwasfirstuse\mglsiflastmainwasfirstuse
+ \let\glsifplural\mglsiflastmainwasplural
+ \let\glscapscase\mglsiflastmaincapscase
+ \let\glslabel\mglslastmainlabel
+ \glspostlinkhook
+}
+\newcommand*{\mglsdefcategoryprefix}[2]{%
+ \csdef{mglsprefix@#1}{#2}%
+}
+\newcommand*{\mglshascategoryprefix}[3]{%
+ \ifcsdef{mglsprefix@#1}{#2}{#3}%
+}
+\newcommand*{\mglsusecategoryprefix}[1]{%
+ \csuse{mglsprefix@#1}%
+}
+\newcommand*{\mglsprefix}{%
+ \ifdefempty\mglscurrentcategory
+ {\mglscurrentprefix}%
+ {%
+ \mglshascategoryprefix{\mglscurrentcategory}%
+ {\mglsusecategoryprefix{\mglscurrentcategory}}%
+ {\mglscurrentprefix}%
+ }%
+}
+\newcommand*{\mglsdefcategorysuffix}[2]{%
+ \csdef{mglssuffix@#1}{#2}%
+}
+\newcommand*{\mglshascategorysuffix}[3]{%
+ \ifcsdef{mglssuffix@#1}{#2}{#3}%
+}
+\newcommand*{\mglsusecategorysuffix}[1]{%
+ \csuse{mglssuffix@#1}%
+}
+\newcommand*{\mglssuffix}{%
+ \ifdefempty\mglscurrentcategory
+ {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}%
+ {%
+ \mglshascategorysuffix{\mglscurrentcategory}%
+ {\mglsusecategorysuffix{\mglscurrentcategory}}%
+ {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}%
+ }%
+}
+\newcommand*{\mglselementprehook}{}
+\newcommand*{\mglselementposthook}{}
+\newcommand*{\glscombinedsep}[2]{%
+ \glshasattribute{#1}{combinedsep}%
+ {\glsgetattribute{#1}{combinedsep}}%
+ { }%
+}
+\newcommand*{\glscombinedfirstsepfirst}[2]{%
+ \glshasattribute{#1}{combinedfirstsepfirst}%
+ {\glsgetattribute{#1}{combinedfirstsepfirst}}%
+ {\glscombinedsep{#1}{#2}}%
+}
+\newcommand*{\glscombinedfirstsep}[2]{%
+ \glshasattribute{#1}{combinedfirstsep}%
+ {\glsgetattribute{#1}{combinedfirstsep}}%
+ {\glscombinedsep{#1}{#2}}%
+}
+\newcommand*{\glscombinedsepfirst}[2]{%
+ \glshasattribute{#1}{combinedsepfirst}%
+ {\glsgetattribute{#1}{combinedsepfirst}}%
+ {\glscombinedsep{#1}{#2}}%
+}
+\newcommand*{\glssetcombinedsepabbrvnbsp}{%
+ \renewcommand*{\glscombinedsep}[2]{%
+ \glshasattribute{##1}{combinedsep}%
+ {\glsgetattribute{##1}{combinedsep}}%
+ {\ifhasshort{##1}{~}{ }}%
+ }%
+ \renewcommand*{\glscombinedsepfirst}[2]{%
+ \glshasattribute{##1}{combinedsepfirst}%
+ {\glsgetattribute{##1}{combinedsepfirst}}%
+ {\ifhasshort{##1}{~}{ }}%
+ }%
+ \renewcommand*{\glscombinedfirstsep}[2]{%
+ \glshasattribute{##1}{combinedfirstsep}%
+ {\glsgetattribute{##1}{combinedfirstsep}}%
+ { }%
+ }%
+ \renewcommand*{\glscombinedfirstsepfirst}[2]{%
+ \glshasattribute{##1}{combinedfirstsepfirst}%
+ {\glsgetattribute{##1}{combinedfirstsepfirst}}%
+ { }%
+ }%
+}
+\newcommand*{\glssetcombinedsepabbrvnone}{%
+ \renewcommand*{\glscombinedsep}[2]{%
+ \glshasattribute{##1}{combinedsep}%
+ {\glsgetattribute{##1}{combinedsep}}%
+ {\ifhasshort{##1}{}{\ifhasshort{##2}{}{ }}}%
+ }%
+ \renewcommand*{\glscombinedsepfirst}[2]{%
+ \glshasattribute{##1}{combinedsepfirst}%
+ {\glsgetattribute{##1}{combinedsepfirst}}%
+ {\ifhasshort{##1}{}{ }}%
+ }%
+ \renewcommand*{\glscombinedfirstsep}[2]{%
+ \glshasattribute{##1}{combinedfirstsep}%
+ {\glsgetattribute{##1}{combinedfirstsep}}%
+ {\ifhasshort{##2}{}{ }}%
+ }%
+ \renewcommand*{\glscombinedfirstsepfirst}[2]{%
+ \glshasattribute{##1}{combinedfirstsepfirst}%
+ {\glsgetattribute{##1}{combinedfirstsepfirst}}%
+ { }%
+ }%
+}
+\newcommand*{\glssetcombinedsepnarrow}[2]{%
+ \renewcommand*{\glscombinedsep}[2]{%
+ \glshasattribute{##1}{combinedsep}%
+ {\glsgetattribute{##1}{combinedsep}}%
+ {%
+ \ifhasshort{##1}%
+ {\settowidth{\dimen@}{\glsentryshort{##1}}}%
+ {\settowidth{\dimen@}{\glsentrytext{##1}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \ifhasshort{##2}%
+ {\settowidth{\dimen@}{\glsentryshort{##2}}}%
+ {\settowidth{\dimen@}{\glsentrytext{##2}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \space
+ \fi
+ \fi
+ }%
+ }%
+ \renewcommand*{\glscombinedsepfirst}[2]{%
+ \glshasattribute{##1}{combinedsepfirst}%
+ {\glsgetattribute{##1}{combinedsepfirst}}%
+ {%
+ \ifhasshort{##1}%
+ {\settowidth{\dimen@}{\glsentryshort{##1}}}%
+ {\settowidth{\dimen@}{\glsentrytext{##1}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \ifhaslong{##2}%
+ {\settowidth{\dimen@}{\glsentrylong{##2}}}%
+ {\settowidth{\dimen@}{\glsentryfirst{##2}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \space
+ \fi
+ \fi
+ }%
+ }%
+ \renewcommand*{\glscombinedfirstsep}[2]{%
+ \glshasattribute{##1}{combinedfirstsep}%
+ {\glsgetattribute{##1}{combinedfirstsep}}%
+ {%
+ \ifhaslong{##1}%
+ {\settowidth{\dimen@}{\glsentrylong{##1}}}%
+ {\settowidth{\dimen@}{\glsentryfirst{##1}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \ifhasshort{##2}%
+ {\settowidth{\dimen@}{\glsentryshort{##2}}}%
+ {\settowidth{\dimen@}{\glsentrytext{##2}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \space
+ \fi
+ \fi
+ }%
+ }%
+ \renewcommand*{\glscombinedfirstsepfirst}[2]{%
+ \glshasattribute{##1}{combinedfirstsepfirst}%
+ {\glsgetattribute{##1}{combinedfirstsepfirst}}%
+ {%
+ \ifhaslong{##1}%
+ {\settowidth{\dimen@}{\glsentrylong{##1}}}%
+ {\settowidth{\dimen@}{\glsentryfirst{##1}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \ifhaslong{##2}%
+ {\settowidth{\dimen@}{\glsentrylong{##2}}}%
+ {\settowidth{\dimen@}{\glsentryfirst{##2}}}%
+ \ifdim\dimen@<#1\relax
+ #2%
+ \else
+ \space
+ \fi
+ \fi
+ }%
+ }%
+}
+\newcommand{\glsxtrmglswrite}[1]{%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off
+ \else
+ \protected@edef\@glsxtr@mglslabel{#1}%
+ \ifdef\@glsxtr@mglsreflist
+ {%
+ \expandafter\DTLifinlist\expandafter{\@glsxtr@mglslabel}%
+ {\@glsxtr@mglsreflist}{}%
+ {%
+ \xappto\@glsxtr@mglsreflist{,\expandonce\@glsxtr@mglslabel}%
+ \if@mgls@writeseparaterefs
+ \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}%
+ \fi
+ }%
+ }%
+ {%
+ \global\let\@glsxtr@mglsreflist\@glsxtr@mglslabel
+ \if@mgls@writeseparaterefs
+ \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}%
+ \else
+ \AtEndDocument{\immediate\protected@write\@auxout{}%
+ {\string\@glsxtr@mglsrefs{\@glsxtr@mglsreflist}}}%
+ \fi
+ \@mgls@disable@writeseparateref@cond
+ }%
+ \fi
+}
+\newcommand{\@glsxtr@mglsrefs}[1]{}
+\newif\if@mgls@writeseparaterefs \@mgls@writeseparaterefsfalse
+\newcommand{\mglsWriteSeparateRefsTrue}{\global\@mgls@writeseparaterefstrue}
+\newcommand{\mglsWriteSeparateRefsFalse}{\global\@mgls@writeseparaterefsfalse}
+\newcommand*{\@mgls@disable@writeseparateref@cond}{%
+ \gdef\mglsWriteSeparateRefsTrue{\PackageError{glossaries-extra}%
+ {Too late to use \string\mglsWriteSeparateRefsTrue}%
+ {\string\mglsWriteSeparateRefsTrue\space can only be used before
+ the first instance of any \string\mgls-like command}}%
+ \gdef\mglsWriteSeparateRefsFalse{\PackageError{glossaries-extra}%
+ {Too late to use \string\mglsWriteSeparateRefsFalse}%
+ {\string\mglsWriteSeparateRefsFalse\space can only be used before
+ the first instance of any \string\mgls-like command}}%
+}
+\newcommand{\glsxtr@newmgls}[5]{%
+ \edef\@glsxr@newmgls@do{%
+ \noexpand\newrobustcmd*{\expandonce{\csname #1\endcsname}}%
+ {\noexpand\@gls@hyp@opt\expandonce{\csname ns@glsxtr@#1\endcsname}}%
+ \noexpand\newcommand*{\expandonce{\csname ns@glsxtr@#1\endcsname}}[2][]{%
+ \noexpand\new@ifnextchar[%
+ {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}}%
+ {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}[]}%
+ }%
+ \noexpand\def\expandonce{\csname glsxtr@#1\endcsname}####1####2[####3]{%
+ \noexpand\def\noexpand\glsxtrcurrentmglscsname{#1}%
+ \noexpand\glsxtr@mgls@inner{####1}{####2}{####3}%
+ {\noexpand#2}{\noexpand#3}{\noexpand#4}{\noexpand#5}%
+ }%
+ }%
+ \@glsxr@newmgls@do
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off
+ \else
+ \ifdef\@glsxtr@mglslikelist
+ {\xappto\@glsxtr@mglslikelist{,#1}}%
+ {%
+ \gdef\@glsxtr@mglslikelist{#1}%
+ \AtEndDocument{\immediate\protected@write\@auxout{}%
+ {\string\@glsxtr@mglslike{\@glsxtr@mglslikelist}}}%
+ }%
+ \fi
+}
+\newcommand*{\@glsxtr@mglslike}[1]{}
+\newcommand*{\GlsXtrMglsOrGls}[2]{%
+ \def\@glsxtr@mgls@or@gls@mcs{#1}%
+ \def\@glsxtr@mgls@or@gls@gcs{#2}%
+ \@ifstar{\s@GlsXtrMglsOrGls}%
+ {%
+ \@ifnextchar+{\PLUS\@firstoftwo{\p@GlsXtrMglsOrGls}}%
+ {%
+ \ifdefempty\@gls@alt@hyp@opt@char\@GlsXtrMglsOrGls\alt@GlsXtrMglsOrGls
+ }%
+ }%
+}
+\newcommand*{\alt@GlsXtrMglsOrGls}{
+ \expandafter\@ifnextchar\@gls@alt@hyp@opt@char
+ {\@firstoftwo{\@alt@GlsXtrMglsOrGls}}{\@GlsXtrMglsOrGls}%
+}
+\newcommand*{\@GlsXtrMglsOrGls}[2][]{%
+ \glsxtrifmulti{#2}%
+ {\@glsxtr@mgls@or@gls@mcs[#1]{#2}}%
+ {\@glsxtr@mgls@or@gls@gcs[#1]{#2}}%
+}
+\newcommand*{\s@GlsXtrMglsOrGls}[2][]{%
+ \glsxtrifmulti{#2}%
+ {\@glsxtr@mgls@or@gls@mcs*[#1]{#2}}%
+ {\@glsxtr@mgls@or@gls@gcs*[#1]{#2}}%
+}
+\newcommand*{\p@GlsXtrMglsOrGls}[2][]{%
+ \glsxtrifmulti{#2}%
+ {\@glsxtr@mgls@or@gls@mcs+[#1]{#2}}%
+ {\@glsxtr@mgls@or@gls@gcs+[#1]{#2}}%
+}
+\newcommand*{\@alt@GlsXtrMglsOrGls}[2][]{%
+ \glsxtrifmulti{#2}%
+ {\expandafter\@glsxtr@mgls@or@gls@mcs\@gls@alt@hyp@opt@char[#1]{#2}}%
+ {\expandafter\@glsxtr@mgls@or@gls@gcs\@gls@alt@hyp@opt@char[#1]{#2}}%
+}
+\glsxtr@newmgls{mgls}{\@gls@}{\@gls@}{\@gls@}{\@gls@}%
+\glsxtr@newmgls{mglspl}{\@glspl@}{\@glspl@}{\@glspl@}{\@glspl@}%
+\glsxtr@newmgls{mglsmainpl}{\@gls@}{\@gls@}{\@glspl@}{\@glspl@}%
+\glsxtr@newmgls{Mgls}{\@Gls@}{\@gls@}{\@Gls@}{\@gls@}%
+\glsxtr@newmgls{Mglspl}{\@Glspl@}{\@glspl@}{\@Glspl@}{\@glspl@}%
+\glsxtr@newmgls{Mglsmainpl}{\@Gls@}{\@gls@}{\@Glspl@}{\@glspl@}%
+\glsxtr@newmgls{MGls}{\@Gls@}{\@Gls@}{\@Gls@}{\@Gls@}%
+\glsxtr@newmgls{MGlspl}{\@Glspl@}{\@Glspl@}{\@Glspl@}{\@Glspl@}%
+\glsxtr@newmgls{MGlsmainpl}{\@Gls@}{\@Gls@}{\@Glspl@}{\@Glspl@}%
+\glsxtr@newmgls{MGLS}{\@GLS@}{\@GLS@}{\@GLS@}{\@GLS@}%
+\glsxtr@newmgls{MGLSpl}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}%
+\glsxtr@newmgls{MGLSmainpl}{\@GLS@}{\@GLS@}{\@GLSpl@}{\@GLSpl@}%
+\def\@glslongortext#1#2[#3]{%
+ \ifglshaslong{#2}{\@glsxtrlong{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}%
+}
+\def\@glsshortortext#1#2[#3]{%
+ \ifglshasshort{#2}{\@glsxtrshort{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}%
+}
+\def\@glsfullorfirst#1#2[#3]{%
+ \ifglshasshort{#2}{\@glsxtr@full{#1}{#2}[#3]}{\@glsfirst@{#1}{#2}[#3]}%
+}
+\def\@Glslongortext#1#2[#3]{%
+ \ifglshaslong{#2}{\@Glsxtrlong{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}%
+}
+\def\@Glsshortortext#1#2[#3]{%
+ \ifglshasshort{#2}{\@Glsxtrshort{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}%
+}
+\def\@Glsfullorfirst#1#2[#3]{%
+ \ifglshasshort{#2}{\@Glsxtr@full{#1}{#2}[#3]}{\@Glsfirst@{#1}{#2}[#3]}%
+}
+\glsxtr@newmgls{mglsshort}%
+{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}%
+\glsxtr@newmgls{mglslong}%
+{\@glslongortext}{\@glslongortext}{\@glslongortext}{\@glslongortext}%
+\glsxtr@newmgls{mglsfull}%
+{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}%
+\glsxtr@newmgls{Mglsshort}%
+{\@Glsshortortext}{\@glsshortortext}{\@Glsshortortext}{\@glsshortortext}%
+\glsxtr@newmgls{Mglslong}%
+{\@Glslongortext}{\@glslongortext}{\@Glslongortext}{\@glslongortext}%
+\glsxtr@newmgls{Mglsfull}%
+{\@Glsfullorfirst}{\@glsfullorfirst}{\@Glsfullorfirst}{\@glsfullorfirst}%
+\glsxtr@newmgls{mglsname}%
+ {\@glsname@}{\@glsname@}{\@glsname@}{\@glsname@}%
+\glsxtr@newmgls{Mglsname}%
+ {\@Glsname@}{\@glsname@}{\@Glsname@}{\@glsname@}%
+\glsxtr@newmgls{MGlsname}%
+ {\@Glsname@}{\@Glsname@}{\@Glsname@}{\@Glsname@}%
+\def\@glssymbolorgls#1#2[#3]{%
+ \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@gls@{#1}{#2}[#3]}%
+}
+\def\@glssymbolorGls#1#2[#3]{%
+ \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@Gls@{#1}{#2}[#3]}%
+}
+\glsxtr@newmgls{mglssymbol}%
+ {\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}%
+\glsxtr@newmgls{Mglssymbol}%
+ {\@glssymbolorGls}{\@glssymbolorgls}{\@glssymbolorGls}{\@glssymbolorgls}%
+\glsxtr@newmgls{MGlssymbol}%
+ {\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}%
+\newcommand{\mglsfield}{useri}
+\def\@glsfieldorgls#1#2[#3]{%
+ \glsxtrifhasfield{\mglsfield}{#2}%
+ {\@glsdisp[#1]{#2}{\glscurrentfieldvalue#3}}%
+ {\@gls@{#1}{#2}[#3]}%
+}
+\def\@Glsfieldorgls#1#2[#3]{%
+ \glsxtrifhasfield{\mglsfield}{#2}%
+ {\@glsdisp[#1]{#2}{\xmakefirstuc\glscurrentfieldvalue#3}}%
+ {\@Gls@{#1}{#2}[#3]}%
+}
+\glsxtr@newmgls{mglsusefield}%
+ {\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}%
+\glsxtr@newmgls{Mglsusefield}%
+ {\@Glsfieldorgls}{\@glsfieldorgls}{\@Glsfieldorgls}{\@glsfieldorgls}%
+\glsxtr@newmgls{MGlsusefield}%
+ {\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}%
+\newcommand*{\mpglsWarning}{%
+ \GlossariesExtraWarning{glossaries-prefix.sty is required for
+ \string\mpgls\space family of commands (either load after
+ glossaries-extra.sty or use the `prefix' package option)}%
+}
+\def\@pglsorgls#1#2[#3]{%
+ \ifdef\@pgls@{\@pgls@{#1}{#2}[#3]}{\mpglsWarning\@gls@{#1}{#2}[#3]}%
+}
+\def\@pglsorglspl#1#2[#3]{%
+ \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}%
+}
+\def\@Pglsorgls#1#2[#3]{%
+ \ifdef\@Pgls@{\@Pgls@{#1}{#2}[#3]}{\mpglsWarning\@Gls@{#1}{#2}[#3]}%
+}
+\def\@pglsorglspl#1#2[#3]{%
+ \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}%
+}
+\def\@Pglsorglspl#1#2[#3]{%
+ \ifdef\@Pglspl@{\@Pglspl@{#1}{#2}[#3]}{\mpglsWarning\@Glspl@{#1}{#2}[#3]}%
+}
+\def\@PGLSorgls#1#2[#3]{%
+ \ifdef\@PGLS@{\@PGLS@{#1}{#2}[#3]}{\mpglsWarning\@GLS@{#1}{#2}[#3]}%
+}
+\def\@PGLSorglspl#1#2[#3]{%
+ \ifdef\@PGLSpl@{\@PGLSpl@{#1}{#2}[#3]}{\mpglsWarning\@GLSpl@{#1}{#2}[#3]}%
+}
+\glsxtr@newmgls{mpgls}{\@pglsorgls@}{\@gls@}{\@pglsorgls@}{\@gls@}%
+\glsxtr@newmgls{mpglspl}{\@pglsorglspl@}{\@glspl@}{\@pglsorglspl@}{\@glspl@}%
+\glsxtr@newmgls{mpglsmainpl}{\@pglsorgls@}{\@gls@}{\@pglsorglspl@}{\@glspl@}%
+\glsxtr@newmgls{Mpgls}{\@Pglsorgls@}{\@gls@}{\@Pglsorgls@}{\@gls@}%
+\glsxtr@newmgls{Mpglspl}{\@Pglsorglspl@}{\@glspl@}{\@Pglsorglspl@}{\@glspl@}%
+\glsxtr@newmgls{Mpglsmainpl}{\@Pglsorgls@}{\@gls@}{\@Pglsorglspl@}{\@glspl@}%
+\glsxtr@newmgls{MPGls}{\@Pglsorgls@}{\@Gls@}{\@Pglsorgls@}{\@Gls@}%
+\glsxtr@newmgls{MPGlspl}{\@Pglsorglspl@}{\@Glspl@}{\@Pglsorglspl@}{\@Glspl@}%
+\glsxtr@newmgls{MPGlsmainpl}{\@Pglsorgls@}{\@Gls@}{\@Pglsorglspl@}{\@Glspl@}%
+\glsxtr@newmgls{MPGLS}{\@PGLSorgls@}{\@GLS@}{\@PGLSorgls@}{\@GLS@}%
+\glsxtr@newmgls{MPGLSpl}{\@PGLSorglspl@}{\@GLSpl@}{\@PGLSorglspl@}{\@GLSpl@}%
+\glsxtr@newmgls{MPGLSmainpl}{\@PGLSorgls@}{\@GLS@}{\@PGLSorglspl@}{\@GLSpl@}%
+\newcommand*{\RequireGlossariesExtraLang}[1]{%
+ \@ifundefined{ver@glossariesxtr-#1.ldf}{\input{glossariesxtr-#1.ldf}}{}%
+}
+\newcommand*{\ProvidesGlossariesExtraLang}[1]{%
+ \ProvidesFile{glossariesxtr-#1.ldf}%
+}
+\newcommand{\glsxtr@loaddialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossariesxtr-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesExtraLang{\CurrentTrackedTag}%
+ }%
+ {}% not found
+ \@glsxtrdialecthook
+}
+\@ifpackageloaded{tracklang} {%
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{\glsxtr@loaddialect}%
+ }%
+ {}%
+} {}
+\@glsxtr@redefstyles
+\@glsxtr@do@style
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-extra-2021-11-22.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-extra-bib2gls-2021-11-22.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v1.48 (glossaries-extra-bib2gls-2021-11-22.sty)}
+% Version 1.48 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-extra-bib2gls}[2021/11/22 v1.48 (NLCT)]
+\ifglsacronym
+ \providecommand*{\printunsrtacronyms}[1][]{%
+ \printunsrtglossary[type=\acronymtype,#1]}%
+\fi
+\ifglossaryexists{index}
+{
+ \providecommand*{\printunsrtindex}[1][]{%
+ \printunsrtglossary[type=index,#1]}%
+}{}
+\ifglossaryexists{symbols}
+{
+ \providecommand*{\printunsrtsymbols}[1][]{%
+ \printunsrtglossary[type=symbols,#1]}%
+}{}
+\ifglossaryexists{numbers}
+{
+ \providecommand*{\printunsrtnumbers}[1][]{%
+ \printunsrtglossary[type=numbers,#1]}%
+}{}
+\ifglossaryexists{abbreviations}
+{
+ \providecommand*{\printunsrtabbreviations}[1][]{%
+ \printunsrtglossary[type=abbreviations,#1]}%
+}{}
+\renewcommand*{\glsdisplaynumberlist}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ {\let\bibglsdelimN\glsnumlistsep
+ \let\bibglslastDelimN\glsnumlistlastsep
+ \glsxtrusefield{#1}{location}%
+ }%
+ }%
+}
+\robustify\glsdisplaynumberlist
+\renewcommand*{\glsentrynumberlist}[1]{\glsxtrusefield{#1}{location}}
+\newcommand*{\glshex}{\string\u}
+\newcommand*{\glscapturedgroup}{\string\$}
+\newcommand*{\GlsXtrIfHasNonZeroChildCount}{%
+ \@ifstar\s@GlsXtrIfHasNonZeroChildCount\@GlsXtrIfHasNonZeroChildCount
+}
+\newcommand*{\@GlsXtrIfHasNonZeroChildCount}[3]{%
+ \@GlsXtrIfFieldNonZero{childcount}{#1}{#2}{#3}%
+}
+\newcommand*{\s@GlsXtrIfHasNonZeroChildCount}[3]{%
+ \s@GlsXtrIfFieldNonZero{childcount}{#1}{#2}{#3}%
+}
+\newcommand*{\glsxtrprovidecommand}{\providecommand}
+\newcommand*{\glsrenewcommand}{\@star@or@long\glsxtr@renewcommand}
+\newcommand*{\glsxtr@renewcommand}[1]{%
+ \begingroup \escapechar\m@ne\xdef\@gtempa{{\string#1}}\endgroup
+ \expandafter\@ifundefined\@gtempa
+ {%
+ \GlossariesExtraWarning{can't redefine \noexpand#1(not already defined)}%
+ }%
+ \relax
+ \relax
+ \let\@ifdefinable\@rc@ifdefinable
+ \new@command#1%
+}
+\newcommand*{\glsxtr@wrglossarylocation}[2]{#1}
+\ifdef\hyperref
+{%
+ \newcommand*{\GlsXtrIndexCounterLink}[2]{%
+ \glsxtrifhasfield{indexcounter}{#2}%
+ {\hyperref[wrglossary.\glscurrentfieldvalue]{#1}}%
+ {#1}%
+ }
+}
+{
+ \newcommand*{\GlsXtrIndexCounterLink}[2]{#1}
+}
+\newcommand*{\GlsXtrDualField}{dual}
+\newcommand*{\GlsXtrDualBackLink}[2]{%
+ \glsxtrifhasfield{\GlsXtrDualField}{#2}%
+ {\glshyperlink[#1]{\glscurrentfieldvalue}}%
+ {#2}%
+}
+\newcommand*{\GlsXtrBibTeXEntryAliases}{%
+ article=bibtexentry,
+ book=bibtexentry,
+ booklet=bibtexentry,
+ conference=bibtexentry,
+ inbook=bibtexentry,
+ incollection=bibtexentry,
+ inproceedings=bibtexentry,
+ manual=bibtexentry,
+ mastersthesis=bibtexentry,
+ misc=bibtexentry,
+ phdthesis=bibtexentry,
+ proceedings=bibtexentry,
+ techreport=bibtexentry,
+ unpublished=bibtexentry
+}
+\newcommand*{\GlsXtrProvideBibTeXFields}{%
+ \glsaddstoragekey{address}{}{\glsxtrbibaddress}%
+ \glsaddstoragekey{author}{}{\glsxtrbibauthor}%
+ \glsaddstoragekey{booktitle}{}{\glsxtrbibbooktitle}%
+ \glsaddstoragekey{chapter}{}{\glsxtrbibchapter}%
+ \glsaddstoragekey{edition}{}{\glsxtrbibedition}%
+ \glsaddstoragekey{howpublished}{}{\glsxtrbibhowpublished}%
+ \glsaddstoragekey{institution}{}{\glsxtrbibinstitution}%
+ \glsaddstoragekey{journal}{}{\glsxtrbibjournal}%
+ \glsaddstoragekey{month}{}{\glsxtrbibmonth}%
+ \glsaddstoragekey{note}{}{\glsxtrbibnote}%
+ \glsaddstoragekey{number}{}{\glsxtrbibnumber}%
+ \glsaddstoragekey{organization}{}{\glsxtrbiborganization}%
+ \glsaddstoragekey{pages}{}{\glsxtrbibpages}%
+ \glsaddstoragekey{publisher}{}{\glsxtrbibpublisher}%
+ \glsaddstoragekey{school}{}{\glsxtrbibschool}%
+ \glsaddstoragekey{series}{}{\glsxtrbibseries}%
+ \glsaddstoragekey{title}{}{\glsxtrbibtitle}%
+ \glsaddstoragekey{bibtextype}{}{\glsxtrbibtype}%
+ \glsaddstoragekey{volume}{}{\glsxtrbibvolume}%
+}
+\newcommand*{\glsxtrmultisupplocation}[3]{%
+ {%
+ \def\glsxtrsupplocationurl{#2}%
+ \glshypernumber{#1}%
+ }%
+}
+\newcommand*\glsxtrdisplaysupploc[5]{%
+ \setentrycounter[#1]{#2}%
+ \glsxtrmultisupplocation{#5}{#4}{#3}%
+}
+\ifundef\hyperlink
+{
+ \newcommand*{\glsxtrdisplaylocnameref}[8]{%
+ \glsnoidxdisplayloc{#1}{#2}{#3}{#4}%
+ }
+}
+{
+ \newcommand*{\glsxtrdisplaylocnameref}[8]{%
+ \ifcsdef{glsxtr#2locfmt}%
+ {\glsxtrnamereflink{#3}{\csuse{glsxtr#2locfmt}{#4}{#5}}{#2.#7}{#8}}%
+ {%
+ \ifstrempty{#5}%
+ {%
+ \glsxtrnamereflink{#3}{#4}{#2.#7}{#8}%
+ }%
+ {%
+ \ifstrequal{#2}{page}%
+ {\glsxtrnamereflink{#3}{#4}{#2.#7}{#8}}%
+ {\glsxtrnamereflink{#3}{#5}{#2.#7}{#8}}%
+ }%
+ }%
+ }
+}
+\newcommand*{\glsxtrequationlocfmt}[2]{(#1)}
+\newcommand*{\glsxtrnamereflink}[4]{%
+ \begingroup
+ \let\glshypernumber\@firstofone
+ \ifstrempty{#4}%
+ {\glsxtrfmtinternalnameref{#3}{#1}{#2}}%
+ {\glsxtrfmtexternalnameref{#3}{#1}{#2}{#4}}%
+ \endgroup
+}
+\newcommand{\glsxtrnameloclink}[6]{%
+ \begingroup
+ \setentrycounter[#1]{#2}%
+ \def\glsxtr@locationhypertext{#5}%
+ \let\glshypernumber\@firstofone
+ \def\@glsnumberformat{#3}%
+ \def\glsxtrsupplocationurl{#6}%
+ \toks@={}%
+ \@glsxtr@bibgls@removespaces#4 \@nil
+ \endgroup
+}
+\def\@glsxtr@bibgls@removespaces#1 #2\@nil{%
+ \toks@=\expandafter{\the\toks@#1}%
+ \ifx\\#2\\%
+ \edef\@glo@tmp{\the\toks@}%
+ \ifx\@glo@tmp\empty
+ \else
+ \protected@edef\@glo@tmp{\glsentrycounter\@glo@counterprefix\the\toks@}%
+ \ifdefvoid\glsxtrsupplocationurl
+ {%
+ \expandafter\glsxtrfmtinternalnameref\expandafter{\@glo@tmp}%
+ {\@glsnumberformat}{\glsxtr@locationhypertext}%
+ }%
+ {%
+ \expandafter\glsxtrfmtexternalnameref\expandafter{\@glo@tmp}%
+ {\@glsnumberformat}{\glsxtr@locationhypertext}{\glsxtrsupplocationurl}%
+ }%
+ \fi
+ \else
+ \@gls@ReturnAfterFi{%
+ \@glsxtr@bibgls@removespaces#2\@nil
+ }%
+ \fi
+}
+\newcommand*{\glsxtrfmtinternalnameref}[3]{%
+ \csuse{#2}{\glsdohyperlink{#1}{#3}}%
+}
+\newcommand*{\glsxtrfmtexternalnameref}[4]{%
+ \csuse{#2}{\hyperref{#4}{}{#1}{#3}}%
+}
+\newcommand*{\glsxtrSetWidest}[3]{%
+ \ifdef\glsupdatewidest
+ {%
+ \ifdef\glslongextraUpdateWidest
+ {%
+ \ifstrempty{#1}
+ {%
+ \glsupdatewidest[#2]{#3}%
+ \ifnum#2=0\relax
+ \glslongextraUpdateWidest{#3}%
+ \else
+ \glslongextraUpdateWidestChild{#2}{#3}%
+ \fi
+ }%
+ {%
+ \apptoglossarypreamble[#1]{\glsupdatewidest[#2]{#3}}%
+ \ifnum#2=0\relax
+ \apptoglossarypreamble[#1]{\glslongextraUpdateWidest{#3}}%
+ \else
+ \apptoglossarypreamble[#1]{\glslongextraUpdateWidestChild{#2}{#3}}%
+ \fi
+ }%
+ }%
+ {%
+ \ifstrempty{#1}
+ {%
+ \glsupdatewidest[#2]{#3}%
+ }%
+ {%
+ \apptoglossarypreamble[#1]{\glsupdatewidest[#2]{#3}}%
+ }%
+ }%
+ }%
+ {%
+ \ifdef\glssetwidest
+ {%
+ \ifdef\glslongextraUpdateWidest
+ {%
+ \ifstrempty{#1}
+ {%
+ \glssetwidest[#2]{#3}%
+ \ifnum#2=0\relax
+ \glslongextraUpdateWidest{#3}%
+ \else
+ \glslongextraUpdateWidestChild{#2}{#3}%
+ \fi
+ }%
+ {%
+ \apptoglossarypreamble[#1]{\glssetwidest[#2]{#3}}%
+ \ifnum#2=0\relax
+ \apptoglossarypreamble[#1]{\glslongextraUpdateWidest{#3}}%
+ \else
+ \apptoglossarypreamble[#1]{\glslongextraUpdateWidestChild{#2}{#3}}%
+ \fi
+ }%
+ }%
+ {%
+ \ifstrempty{#1}
+ {%
+ \glssetwidest[#2]{#3}%
+ }%
+ {%
+ \apptoglossarypreamble[#1]{\glssetwidest[#2]{#3}}%
+ }%
+ }%
+ }%
+ {%
+ \ifdef\glslongextraUpdateWidest
+ {%
+ \ifstrempty{#1}
+ {%
+ \ifnum#2=0\relax
+ \glslongextraUpdateWidest{#3}%
+ \else
+ \glslongextraUpdateWidestChild{#2}{#3}%
+ \fi
+ }%
+ {%
+ \ifnum#2=0\relax
+ \apptoglossarypreamble[#1]{\glslongextraUpdateWidest{#3}}%
+ \else
+ \apptoglossarypreamble[#1]{\glslongextraUpdateWidestChild{#2}{#3}}%
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ }%
+}
+\newcommand*{\glsxtrSetWidestFallback}[2]{%
+ \ifnum#1=0\relax
+ \ifdef\glsFindWidestTopLevelName
+ {%
+ \glsFindWidestTopLevelName[#2]%
+ }%
+ {%
+ \GlossariesExtraWarning{You need stylemods={tree} to
+ provide a fallback for set-widest}%
+ }%
+ \else
+ \ifdef\glsFindWidestLevelTwo
+ {%
+ \glsFindWidestLevelTwo[#2]%
+ \ifdef\glslongextraUpdateWidestChild
+ {%
+ \glslongextraUpdateWidestChild{#1}{\csuse{@glswidestnamei}}%
+ \glslongextraUpdateWidestChild{#1}{\csuse{@glswidestnameii}}%
+ }%
+ {}%
+ }%
+ {%
+ \GlossariesExtraWarning{You need stylemods={tree} to
+ provide a fallback for set-widest}%
+ }%
+ \fi
+}
+\newcommand*{\@glsxtr@labelprefixes}{}
+\newcommand*{\glsxtrclearlabelprefixes}{%
+ \renewcommand*{\@glsxtr@labelprefixes}{}%
+}
+\newcommand*{\glsxtraddlabelprefix}[1]{%
+ \ifstrempty{#1}%
+ {\glsxtraddlabelprefix{\empty}}%
+ {%
+ \ifdefempty\@glsxtr@labelprefixes
+ {\def\@glsxtr@labelprefixes{#1}}%
+ {\appto\@glsxtr@labelprefixes{,#1}}%
+ }%
+}
+\newcommand*{\glsxtrprependlabelprefix}[1]{%
+ \ifstrempty{#1}%
+ {\glsxtrprependlabelprefix{\empty}}%
+ {%
+ \ifdefempty\@glsxtr@labelprefixes
+ {\def\@glsxtr@labelprefixes{#1}}%
+ {\preto\@glsxtr@labelprefixes{#1,}}%
+ }%
+}
+\newcommand*{\glsxtrifinlabelprefixlist}[3]{%
+ \ifstrempty{#1}%
+ {\glsxtrifinlabelprefixlist{\empty}{#2}{#3}}%
+ {%
+ \DTLifinlist{#1}{\@glsxtr@labelprefixes}{#2}{#3}%
+ }%
+}
+\AtBeginDocument{%
+ \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@prefixlabellist}[1]{}}%
+ \protected@write\@auxout{}{\string\@glsxtr@prefixlabellist{\@glsxtr@labelprefixes}}%
+}
+\newcommand*{\@glsxtr@get@prefixedlabel}[1]{%
+ \begingroup
+ \protected@edef\@gls@thislabel{#1}%
+ \@for\@glsxtr@prefix:=\@glsxtr@labelprefixes\do
+ {%
+ \protected@edef\@gls@thislabel{\@glsxtr@prefix#1}%
+ \ifglsentryexists{\@gls@thislabel}{\@endfortrue}{}%
+ }%
+ \edef\@glo@tmp{\endgroup\noexpand\def\noexpand\@gls@thislabel{\@gls@thislabel}}\@glo@tmp
+}
+\newrobustcmd*{\dgls}{\@gls@hyp@opt\@dgls}
+\newcommand*{\@dgls}[2][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \new@ifnextchar[{\@gls@{#1}{\@gls@thislabel}}{\@gls@{#1}{\@gls@thislabel}[]}%
+}
+\newrobustcmd*{\dglspl}{\@gls@hyp@opt\@dglspl}
+\newcommand*{\@dglspl}[2][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \new@ifnextchar[{\@glspl@{#1}{\@gls@thislabel}}{\@glspl@{#1}{\@gls@thislabel}[]}%
+}
+\newrobustcmd*{\dGls}{\@gls@hyp@opt\@dGls}
+\newcommand*{\@dGls}[2][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \new@ifnextchar[{\@Gls@{#1}{\@gls@thislabel}}{\@Gls@{#1}{\@gls@thislabel}[]}%
+}
+\newrobustcmd*{\dGlspl}{\@gls@hyp@opt\@dGlspl}
+\newcommand*{\@dGlspl}[2][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \new@ifnextchar[{\@Glspl@{#1}{\@gls@thislabel}}{\@Glspl@{#1}{\@gls@thislabel}[]}%
+}
+\newrobustcmd*{\dGLS}{\@gls@hyp@opt\@dGLS}
+\newcommand*{\@dGLS}[2][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \new@ifnextchar[{\@GLS@{#1}{\@gls@thislabel}}{\@GLS@{#1}{\@gls@thislabel}[]}%
+}
+\newrobustcmd*{\dGLSpl}{\@gls@hyp@opt\@dGLSpl}
+\newcommand*{\@dGLSpl}[2][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \new@ifnextchar[{\@GLSpl@{#1}{\@gls@thislabel}}{\@GLSpl@{#1}{\@gls@thislabel}[]}%
+}
+\newrobustcmd*{\dglslink}[3][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \glslink[#1]{\@gls@thislabel}{#3}%
+}
+\newrobustcmd*{\dglsdisp}[3][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \glsdisp[#1]{\@gls@thislabel}{#3}%
+}
+\newrobustcmd*{\glsxtrmultientryadjustedname}[4]{%
+ \bgroup
+ \let\@glsxtrmultientryadjustednamesep\glsxtrmultientryadjustednamesep
+ \let\@glsxtrmultientryadjustednamepresep\glsxtrmultientryadjustednamepresep
+ \let\@glsxtrmultientryadjustednamepostsep\glsxtrmultientryadjustednamepostsep
+ \let\@glsxtrmultientryadjustednameother\glsxtrmultientryadjustednameother
+ \let\@glsxtrmultientryadjustednamefmt\glsxtrmultientryadjustednamefmt
+ \let\@glsxtrmultientryadjustednamefirstother\glsxtrmultientryadjustednameother
+ \let\@glsxtrmultientryadjustednamefirstfmt\glsxtrmultientryadjustednamefmt
+ \@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}%
+ \egroup
+}
+\newrobustcmd*{\Glsxtrmultientryadjustedname}[4]{%
+ \bgroup
+ \let\@glsxtrmultientryadjustednamesep\glsxtrmultientryadjustednamesep
+ \let\@glsxtrmultientryadjustednamepresep\glsxtrmultientryadjustednamepresep
+ \let\@glsxtrmultientryadjustednamepostsep\glsxtrmultientryadjustednamepostsep
+ \let\@glsxtrmultientryadjustednameother\glsxtrmultientryadjustednameother
+ \let\@glsxtrmultientryadjustednamefmt\glsxtrmultientryadjustednamefmt
+ \let\@glsxtrmultientryadjustednamefirstother\Glsxtrmultientryadjustednameother
+ \let\@glsxtrmultientryadjustednamefirstfmt\Glsxtrmultientryadjustednamefmt
+ \@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}%
+ \egroup
+}
+\newrobustcmd*{\GlsXtrmultientryadjustedname}[4]{%
+ \bgroup
+ \let\@glsxtrmultientryadjustednamesep\glsxtrmultientryadjustednamesep
+ \let\@glsxtrmultientryadjustednamepresep\glsxtrmultientryadjustednamepresep
+ \let\@glsxtrmultientryadjustednamepostsep\glsxtrmultientryadjustednamepostsep
+ \let\@glsxtrmultientryadjustednameother\GlsXtrmultientryadjustednameother
+ \let\@glsxtrmultientryadjustednamefmt\GlsXtrmultientryadjustednamefmt
+ \let\@glsxtrmultientryadjustednamefirstother\GlsXtrmultientryadjustednameother
+ \let\@glsxtrmultientryadjustednamefirstfmt\GlsXtrmultientryadjustednamefmt
+ \@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}%
+ \egroup
+}
+\newrobustcmd*{\GLSxtrmultientryadjustedname}[4]{%
+ \bgroup
+ \let\@glsxtrmultientryadjustednamesep\glsxtrmultientryadjustednamesep
+ \let\@glsxtrmultientryadjustednamepresep\glsxtrmultientryadjustednamepresep
+ \let\@glsxtrmultientryadjustednamepostsep\glsxtrmultientryadjustednamepostsep
+ \let\@glsxtrmultientryadjustednameother\GLSxtrmultientryadjustednameother
+ \let\@glsxtrmultientryadjustednamefmt\GLSxtrmultientryadjustednamefmt
+ \let\@glsxtrmultientryadjustednamefirstother\GLSxtrmultientryadjustednameother
+ \let\@glsxtrmultientryadjustednamefirstfmt\GLSxtrmultientryadjustednamefmt
+ \@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}%
+ \egroup
+}
+\newcommand*{\@glsxtrmultientryadjustedname}[4]{%
+ \letcs\mglscurrentmainlabel{@gls@combined@#4@main}%
+ \letcs\mglscurrentmainlist{@gls@combined@#4@list}%
+ \letcs\mglscurrentmainoptions{@gls@combined@#4@options}%
+ \ifblank{#1}%
+ {%
+ \@glsxtrmultientryadjustednamefirstfmt{#2}%
+ }%
+ {%
+ \def\@mgls@previouslabel{}%
+ \let\@gls@xtradjustedother\@glsxtrmultientryadjustednamefirstother
+ \@for\mglscurrentlabel:=#1\do{%
+ \ifx\@mgls@previouslabel\empty
+ \else
+ \@glsxtrmultientryadjustednamesep{\@mgls@previouslabel}{\mglscurrentlabel}%
+ \fi
+ \@gls@xtradjustedother{\mglscurrentlabel}%
+ \let\@mgls@previouslabel\mglscurrentlabel
+ \let\@gls@xtradjustedother\@glsxtrmultientryadjustednameother
+ }%
+ \@glsxtrmultientryadjustednamepresep{\@mgls@previouslabel}{\mglscurrentmainlabel}%
+ \@glsxtrmultientryadjustednamefmt{#2}%
+ }%
+ \ifblank{#3}%
+ {}%
+ {%
+ \let\@mgls@previouslabel\mglscurrentmainlabel
+ \let\@gls@xtrmultientryadjustednamesep\@glsxtrmultientryadjustednamepostsep
+ \@for\mglscurrentlabel:=#3\do{%
+ \@gls@xtrmultientryadjustednamesep{\@mgls@previouslabel}{\mglscurrentlabel}%
+ \@glsxtrmultientryadjustednameother{\mglscurrentlabel}%
+ \let\@mgls@previouslabel\mglscurrentlabel
+ \let\@gls@xtrmultientryadjustednamesep\@glsxtrmultientryadjustednamesep
+ }%
+ }%
+}
+\newcommand*{\glsxtrmultientryadjustednamesep}{\glscombinedfirstsepfirst}
+\newcommand*{\glsxtrmultientryadjustednamepresep}{\glsxtrmultientryadjustednamesep}
+\newcommand*{\glsxtrmultientryadjustednamepostsep}{\glsxtrmultientryadjustednamesep}
+\newcommand*{\glsxtrmultientryadjustednamefmt}[1]{#1}
+\newcommand*{\glsxtrmultientryadjustednameother}[1]{\glsentryname{#1}}
+\newcommand*{\Glsxtrmultientryadjustednamefmt}[1]{\makefirstuc{#1}}
+\newcommand*{\Glsxtrmultientryadjustednameother}[1]{\Glsentryname{#1}}
+\newcommand*{\GlsXtrmultientryadjustednameother}[1]{%
+ \glsentrytitlecase{#1}{name}}
+\ifdef\glscapitalisewords
+{%
+ \newcommand*{\GlsXtrmultientryadjustednamefmt}[1]{\glscapitalisewords{#1}}
+}
+{
+ \newcommand*{\GlsXtrmultientryadjustednamefmt}[1]{\capitalisewords{#1}}
+}
+\newcommand*{\GLSxtrmultientryadjustednameother}[1]{%
+ \mfirstucMakeUppercase{\glsentryname{#1}}}
+\newcommand*{\GLSxtrmultientryadjustednamefmt}[1]{\mfirstucMakeUppercase{#1}}
+\providecommand*{\Alpha}{\mathrm{A}}
+\providecommand*{\Beta}{\mathrm{B}}
+\providecommand*{\Epsilon}{\mathrm{E}}
+\providecommand*{\Zeta}{\mathrm{Z}}
+\providecommand*{\Eta}{\mathrm{H}}
+\providecommand*{\Iota}{\mathrm{I}}
+\providecommand*{\Kappa}{\mathrm{K}}
+\providecommand*{\Mu}{\mathrm{M}}
+\providecommand*{\Nu}{\mathrm{N}}
+\providecommand*{\Omicron}{\mathrm{O}}
+\providecommand*{\Rho}{\mathrm{P}}
+\providecommand*{\Tau}{\mathrm{T}}
+\providecommand*{\Chi}{\mathrm{X}}
+\providecommand*{\Digamma}{\mathrm{F}}
+\providecommand*{\omicron}{\mathit{o}}
+\@ifpackageloaded{upgreek}%
+{
+ \providecommand*{\Upalpha}{\mathrm{A}}
+ \providecommand*{\Upbeta}{\mathrm{B}}
+ \providecommand*{\Upepsilon}{\mathrm{E}}
+ \providecommand*{\Upzeta}{\mathrm{Z}}
+ \providecommand*{\Upeta}{\mathrm{H}}
+ \providecommand*{\Upiota}{\mathrm{I}}
+ \providecommand*{\Upkappa}{\mathrm{K}}
+ \providecommand*{\Upmu}{\mathrm{M}}
+ \providecommand*{\Upnu}{\mathrm{N}}
+ \providecommand*{\Upomicron}{\mathrm{O}}
+ \providecommand*{\Uprho}{\mathrm{P}}
+ \providecommand*{\Uptau}{\mathrm{T}}
+ \providecommand*{\Upchi}{\mathrm{X}}
+ \providecommand*{\upomicron}{\mathrm{o}}
+}%
+{}% upgreek.sty not loaded
+\newcommand*{\glsxtrcontrolrules}{%
+ \string'\glshex 200B\string'\string=\glshex 200C\string=\glshex 200D
+ \string=\glshex 200E\string=\glshex 200F\string=\glshex 0000\string=\glshex 0001
+ \string=\glshex 0002\string=\glshex 0003\string=\glshex 0004\string=\glshex 0005
+ \string=\glshex 0006\string=\glshex 0007\string=\glshex 0008
+ \string=\string'\glshex 0009\string'\string=\string'\glshex 000B\string'
+ \string=\glshex 000E\string=\glshex 000F\string=\string'\glshex
+0010\string'\string=\glshex 0011
+ \string=\glshex 0012\string=\glshex 0013\string=\glshex 0014\string=\glshex 0015
+ \string=\glshex 0016\string=\glshex 0017\string=\glshex 0018\string=\glshex 0019
+ \string=\glshex 001A\string=\glshex 001B\string=\glshex 001C\string=\glshex 001D
+ \string=\glshex 001E\string=\glshex 001F\string=\glshex 007F\string=\glshex 0080
+ \string=\glshex 0081\string=\glshex 0082\string=\glshex 0083\string=\glshex 0084
+ \string=\glshex 0085\string=\glshex 0086\string=\glshex 0087\string=\glshex 0088
+ \string=\glshex 0089\string=\glshex 008A\string=\glshex 008B\string=\glshex 008C
+ \string=\glshex 008D\string=\glshex 008E\string=\glshex 008F\string=\glshex 0090
+ \string=\glshex 0091\string=\glshex 0092\string=\glshex 0093\string=\glshex 0094
+ \string=\glshex 0095\string=\glshex 0096\string=\glshex 0097\string=\glshex 0098
+ \string=\glshex 0099\string=\glshex 009A\string=\glshex 009B\string=\glshex 009C
+ \string=\glshex 009D\string=\glshex 009E\string=\glshex 009F
+}
+\newcommand*{\glsxtrspacerules}{%
+ \string' \string'\string;
+ \string'\glshex 00A0\string'\string;
+ \string'\glshex 2000\string'\string;
+ \string'\glshex 2001\string'\string;
+ \string'\glshex 2002\string'\string;
+ \string'\glshex 2003\string'\string;
+ \string'\glshex 2004\string'\string;
+ \string'\glshex 2005\string'\string;
+ \string'\glshex 2006\string'\string;
+ \string'\glshex 2007\string'\string;
+ \string'\glshex 2008\string'\string;
+ \string'\glshex 2009\string'\string;
+ \string'\glshex 200A\string'\string;
+ \string'\glshex 3000\string'
+}
+\newcommand*{\glsxtrnonprintablerules}{%
+ \string'\glshex FEFF\string'\string;
+ \string'\glshex 000A\string'\string;
+ \string'\glshex 0009\string'\string;
+ \string'\glshex 000C\string'\string;
+ \string'\glshex 000B\string'
+}
+
+\newcommand*{\glsxtrcombiningdiacriticrules}{%
+ \glsxtrcombiningdiacriticIrules\string;
+ \glsxtrcombiningdiacriticIIrules\string;
+ \glsxtrcombiningdiacriticIIIrules\string;
+ \glsxtrcombiningdiacriticIVrules
+}
+\newcommand*{\glsxtrcombiningdiacriticIrules}{%
+ \glshex 0301\string;% combining acute
+ \glshex 0300\string;% combining grave
+ \glshex 0306\string;% combining breve
+ \glshex 0302\string;% combining circumflex
+ \glshex 030C\string;% combining caron
+ \glshex 030A\string;% combining ring
+ \glshex 030D\string;% combining vertical line above
+ \glshex 0308\string;% combining diaeresis
+ \glshex 030B\string;% combining double acute
+ \glshex 0303\string;% combining tilde
+ \glshex 0307\string;% combining dot above
+ \glshex 0304% combining macron
+}
+\newcommand*{\glsxtrcombiningdiacriticIIrules}{%
+ \glshex 0337\string;% combining short solidus overlay
+ \glshex 0327\string;% combining cedilla
+ \glshex 0328\string;% combining ogonek
+ \glshex 0323\string;% combining dot below
+ \glshex 0332\string;% combining low line
+ \glshex 0305\string;% combining overline
+ \glshex 0309\string;% combining hook above
+ \glshex 030E\string;% combining double vertical line above
+ \glshex 030F\string;% combining double grave accent
+ \glshex 0310\string;% combining candrabindu
+ \glshex 0311\string;% combining inverted breve
+ \glshex 0312\string;% combining turned comma above
+ \glshex 0313\string;% combining comma above
+ \glshex 0314\string;% combining reversed comma above
+ \glshex 0315\string;% combining comma above right
+ \glshex 0316\string;% combining grave accent below
+ \glshex 0317% combining acute accent below
+}
+\newcommand*{\glsxtrcombiningdiacriticIIIrules}{%
+ \glshex 0318\string;% combining left tack below
+ \glshex 0319\string;% combining right tack below
+ \glshex 031A\string;% combining left angle above
+ \glshex 031B\string;% combining horn
+ \glshex 031C\string;% combining left half ring below
+ \glshex 031D\string;% combining up tack below
+ \glshex 031E\string;% combining down tack below
+ \glshex 031F\string;% combining plus sign below
+ \glshex 0320\string;% combining minus sign below
+ \glshex 0321\string;% combining palatalized hook below
+ \glshex 0322\string;% combining retroflex hook below
+ \glshex 0324\string;% combining diaresis below
+ \glshex 0325\string;% combining ring below
+ \glshex 0326\string;% combining comma below
+ \glshex 0329\string;% combining vertical line below
+ \glshex 032A\string;% combining bridge below
+ \glshex 032B\string;% combining inverted double arch below
+ \glshex 032C\string;% combining caron below
+ \glshex 032D\string;% combining circumflex accent below
+ \glshex 032E\string;% combining breve below
+ \glshex 032F\string;% combining inverted breve below
+ \glshex 0330\string;% combining tilde below
+ \glshex 0331\string;% combining macron below
+ \glshex 0333\string;% combining double low line
+ \glshex 0334\string;% combining tilde overlay
+ \glshex 0335\string;% combining short stroke overlay
+ \glshex 0336\string;% combining long stroke overlay
+ \glshex 0338\string;% combining long solidus overlay
+ \glshex 0339\string;% combining combining right half ring below
+ \glshex 033A\string;% combining inverted bridge below
+ \glshex 033B\string;% combining square below
+ \glshex 033C\string;% combining seagull below
+ \glshex 033D\string;% combining x above
+ \glshex 033E\string;% combining vertical tilde
+ \glshex 033F\string;% combining double overline
+ \glshex 0342\string;% combining Greek perispomeni
+ \glshex 0344\string;% combining Greek dialytika tonos
+ \glshex 0345\string;% combining Greek ypogegrammeni
+ \glshex 0360\string;% combining double tilde
+ \glshex 0361\string;% combining double inverted breve
+ \glshex 0483\string;% combining Cyrillic titlo
+ \glshex 0484\string;% combining Cyrillic palatalization
+ \glshex 0485\string;% combining Cyrillic dasia pneumata
+ \glshex 0486% combining Cyrillic psili pneumata
+}
+\newcommand*{\glsxtrcombiningdiacriticIVrules}{%
+ \glshex 20D0\string;% combining left harpoon above
+ \glshex 20D1\string;% combining right harpoon above
+ \glshex 20D2\string;% combining long vertical line overlay
+ \glshex 20D3\string;% combining short vertical line overlay
+ \glshex 20D4\string;% combining anticlockwise arrow above
+ \glshex 20D5\string;% combining clockwise arrow above
+ \glshex 20D6\string;% combining left arrow above
+ \glshex 20D7\string;% combining right arrow above
+ \glshex 20D8\string;% combining ring overlay
+ \glshex 20D9\string;% combining clockwise ring overlay
+ \glshex 20DA\string;% combining anticlockwise ring overlay
+ \glshex 20DB\string;% combining three dots above
+ \glshex 20DC\string;% combining four dots above
+ \glshex 20DD\string;% combining enclosing circle
+ \glshex 20DE\string;% combining enclosing square
+ \glshex 20DF\string;% combining enclosing diamond
+ \glshex 20E0\string;% combining enclosing circle backslash
+ \glshex 20E1% combining left right arrow above
+}
+\newcommand*{\glsxtrhyphenrules}{%
+ \string'\string-\string'\string;% ASCII hyphen
+ \glshex 00AD\string;% soft hyphen
+ \glshex 2010\string;% hyphen
+ \glshex 2011\string;% non-breaking hyphen
+ \glshex 2012\string;% figure dash
+ \glshex 2013\string;% en dash
+ \glshex 2014\string;% em dash
+ \glshex 2015\string;% horizontal bar
+ \glshex 2212\string=\glshex 207B\string=\glshex 208B% minus sign
+}
+\newcommand*{\glsxtrgeneralpuncrules}{%
+ \glsxtrgeneralpuncIrules
+ \string<\glsxtrcurrencyrules
+ \string<\glsxtrgeneralpuncIIrules
+}
+\newcommand*{\glsxtrgeneralpuncIrules}{%
+ \string'\glshex 005F\string'% underscore
+ \string<\glshex 00AF% macron
+ \string<\string'\glshex 002C\string'% comma
+ \string<\string'\glshex 003B\string'% semi-colon
+ \string<\string'\glshex 003A\string'% colon
+ \string<\string'\glshex 0021\string'% exclamation mark
+ \string<\glshex 00A1% inverted exclamation mark
+ \string<\string'\glshex 003F\string'% question mark
+ \string<\glshex 00BF% inverted question mark
+ \string<\string'\glshex 002F\string'% solidus
+ \string<\string'\glshex 002E\string'% full stop
+ \string<\glshex 00B4% acute accent
+ \string<\string'\glshex 0060\string'% grave accent
+ \string<\string'\glshex 005E\string'% circumflex accent
+ \string<\glshex 00A8% diaersis
+ \string<\string'\glshex 007E\string'% tilde
+ \string<\glshex 00B7% middle dot
+ \string<\glshex 00B8% cedilla
+ \string<\string'\glshex 0027\string'% straight apostrophe
+ \string<\string'\glshex 0022\string'% straight double quote
+ \string<\glshex 00AB% left guillemet
+ \string<\glshex 00BB% right guillemet
+ \string<\string'\glshex 0028\string'% left parenthesis
+ \string=\glshex 207D\string=\glshex 208D% super/subscript left parenthesis
+ \string<\string'\glshex 0029\string'% right parenthesis
+ \string=\glshex 207E\string=\glshex 208E% super/subscript right parenthesis
+ \string<\string'\glshex 005B\string'% left square bracket
+ \string<\string'\glshex 005D\string'% right square bracket
+ \string<\string'\glshex 007B\string'% left curly bracket
+ \string<\string'\glshex 007D\string'% right curly bracket
+ \string<\glshex 00A7% section sign
+ \string<\glshex 00B6% pilcrow sign
+ \string<\glshex 00A9% copyright sign
+ \string<\glshex 00AE% registered sign
+ \string<\string'\glshex 0040\string'% at sign
+}
+\newcommand*{\glsxtrcurrencyrules}{%
+ \glshex 00A4% currency sign
+ \string<\glshex 0E3F% Thai currency symbol baht
+ \string<\glshex 00A2% cent sign
+ \string<\glshex 20A1% colon sign
+ \string<\glshex 20A2% cruzeiro sign
+ \string<\string'\glshex 0024\string'% dollar sign
+ \string<\glshex 20AB% dong sign
+ \string<\glshex 20AC% euro sign
+ \string<\glshex 20A3% French franc sign
+ \string<\glshex 20A4% lira sign
+ \string<\glshex 20A5% mill sign
+ \string<\glshex 20A6% naira sign
+ \string<\glshex 20A7% peseta sign
+ \string<\glshex 00A3% pound sign
+ \string<\glshex 20A8% rupee sign
+ \string<\glshex 20AA% new sheqel sign
+ \string<\glshex 20A9% won sign
+ \string<\glshex 00A5% yen sign
+}
+\newcommand*{\glsxtrgeneralpuncIIrules}{%
+ \string'\glshex 002A\string'% asterisk
+ \string<\string'\glshex 005C\string'% backslash
+ \string<\string'\glshex 0026\string'% ampersand
+ \string<\string'\glshex 0023\string'% hash sign
+ \string<\string'\glshex 0025\string'% percent sign
+ \string<\string'\glshex 002B\string'% plus sign
+ \string=\glshex 207A\string=\glshex 208A% super/subscript plus sign
+ \string<\glshex 00B1% plus-minus sign
+ \string<\glshex 00F7% division sign
+ \string<\glshex 00D7% multiplication sign
+ \string<\string'\glshex 003C\string'% less-than sign
+ \string<\string'\glshex 003D\string'% equals sign
+ \string<\string'\glshex 003E\string'% greater-than sign
+ \string<\glshex 00AC% not sign
+ \string<\string'\glshex 007C\string'% vertical bar (pipe)
+ \string<\glshex 00A6% broken bar
+ \string<\glshex 00B0% degree sign
+ \string<\glshex 00B5% micron sign
+}
+\newcommand*{\glsxtrGeneralLatinIrules}{%
+ \glsxtrLatinA
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string<\glsxtrLatinT
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z
+}
+\newcommand*{\glsxtrGeneralLatinIIrules}{%
+ \glsxtrLatinA
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinEth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string& SS \string, \glsxtrLatinEszettSs
+ \string<\glsxtrLatinT
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+\newcommand*{\glsxtrGeneralLatinIIIrules}{%
+ \glsxtrLatinA
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinEth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string& SZ, \glsxtrLatinEszettSz
+ \string<\glsxtrLatinT
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+\newcommand*{\glsxtrGeneralLatinIVrules}{%
+ \glsxtrLatinA
+ \string& AE , \glsxtrLatinAELigature
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinEth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string& OE , \glsxtrLatinOELigature
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string& SS , \glsxtrLatinEszettSs
+ \string<\glsxtrLatinT
+ \string& th =\glshex 00DE
+ \string& TH =\glshex 00FE
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+\newcommand*{\glsxtrGeneralLatinVrules}{%
+ \glsxtrLatinA
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinEth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string& SS , \glsxtrLatinEszettSs
+ \string<\glsxtrLatinT
+ \string& th =\glshex 00DE
+ \string& TH =\glshex 00FE
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+\newcommand*{\glsxtrGeneralLatinVIrules}{%
+ \glsxtrLatinA
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinEth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string& SZ , \glsxtrLatinEszettSz
+ \string<\glsxtrLatinT
+ \string& th =\glshex 00DE
+ \string& TH =\glshex 00FE
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+\newcommand*{\glsxtrGeneralLatinVIIrules}{%
+ \glsxtrLatinA
+ \string<\glsxtrLatinAELigature
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinEth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<\glsxtrLatinInsularG
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinOELigature
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glshex 017F=\glsxtrLatinS % s and long s
+ \string<\glsxtrLatinT
+ \string<\glsxtrLatinThorn
+ \string<u,U%
+ \string<v,V%
+ \string< w\string=\glshex 01BF, W\string=\glshex 01F7
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+\newcommand*{\glsxtrGeneralLatinVIIIrules}{%
+ \glsxtrLatinA
+ \string& AE , \glsxtrLatinAELigature
+ \string<b,B%
+ \string<c,C%
+ \string<\glshex 00F0\string;d,\glshex 00D0\string;D% D and eth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glshex 0142\string=\glsxtrLatinL\string=\glshex 0141% L and \L
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glshex 00F8\string=\glsxtrLatinO\string=\glshex 00D8% O and \O
+ \string& OE , \glsxtrLatinOELigature
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string& SS , \glsxtrLatinEszettSs
+ \string<\glsxtrLatinT
+ \string& th =\glshex 00DE
+ \string& TH =\glshex 00FE
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+\newcommand*{\glsxtrLatinA}{%
+ a\string=\glshex 00AA\string=\glshex 2090,A
+}
+\newcommand*{\glsxtrLatinE}{%
+ e\string=\glshex 2091,E
+}
+\newcommand*{\glsxtrLatinH}{%
+ h\string=\glshex 2095,H
+}
+\newcommand*{\glsxtrLatinI}{%
+ i\string=\glshex 2071,I
+}
+\newcommand*{\glsxtrLatinK}{%
+ k\string=\glshex 2096,K
+}
+\newcommand*{\glsxtrLatinL}{%
+ l\string=\glshex 2097,L
+}
+\newcommand*{\glsxtrLatinM}{%
+ m\string=\glshex 2098,M
+}
+\newcommand*{\glsxtrLatinN}{%
+ n\string=\glshex 207F\string=\glshex 2099,N
+}
+\newcommand*{\glsxtrLatinO}{%
+ o\string=\glshex 00BA\string=\glshex 2092,O
+}
+\newcommand*{\glsxtrLatinP}{%
+ p\string=\glshex 209A,P
+}
+\newcommand*{\glsxtrLatinS}{%
+ s\string=\glshex 209B,S
+}
+\newcommand*{\glsxtrLatinT}{%
+ t\string=\glshex 209C,T
+}
+\newcommand*{\glsxtrLatinX}{%
+ x\string=\glshex 2093,X
+}
+\newcommand*{\glsxtrLatinSchwa}{%
+ \glshex 0259\string=\glshex 2094,\glshex 018F
+}
+\newcommand*{\glsxtrLatinEszettSs}{%
+ \glshex 00DF% eszett
+ \string=\glshex 017Fs % long S s
+}
+\newcommand*{\glsxtrLatinEszettSz}{%
+ \glshex 00DF% eszett
+ \string= \glshex 017Fz % long S z
+}
+\newcommand*{\glsxtrLatinEth}{%
+ \glshex 00F0,\glshex 00D0% eth
+}
+\newcommand*{\glsxtrLatinThorn}{%
+ \glshex 00FE,\glshex 00DE% thorn
+}
+\newcommand*{\glsxtrLatinAELigature}{%
+ \glshex 00E6,\glshex 00C6% AE-ligature
+}
+\newcommand*{\glsxtrLatinOELigature}{%
+ \glshex 0153,\glshex 0152% OE-ligature
+}
+\newcommand*{\glsxtrLatinAA}{%
+ \glshex 00E5=a\glshex 030A,% \aa
+ \glshex 00C5=A\glshex 030A% \AA
+}
+\newcommand*{\glsxtrLatinWynn}{%
+ \glshex 01BF,\glshex 01F7% wynn
+}
+\newcommand*{\glsxtrLatinInsularG}{%
+ \glshex 1D79,\glshex A77D% insular G
+ \string; g, G
+}
+\newcommand*{\glsxtrLatinOslash}{%
+ \glshex 00F8,\glshex 00D8% \o, \O
+}
+\newcommand*{\glsxtrLatinLslash}{%
+ \glshex 0142,\glshex 0141% \l, \L
+}
+\newcommand*{\glsxtrMathUpGreekIrules}{%
+ \glsxtrUpAlpha
+ \string<\glsxtrUpBeta
+ \string<\glsxtrUpGamma
+ \string<\glsxtrUpDelta
+ \string<\glsxtrUpEpsilon
+ \string<\glsxtrUpDigamma
+ \string<\glsxtrUpZeta
+ \string<\glsxtrUpEta
+ \string<\glsxtrUpTheta
+ \string<\glsxtrUpIota
+ \string<\glsxtrUpKappa
+ \string<\glsxtrUpLambda
+ \string<\glsxtrUpMu
+ \string<\glsxtrUpNu
+ \string<\glsxtrUpXi
+ \string<\glsxtrUpOmicron
+ \string<\glsxtrUpPi
+ \string<\glsxtrUpRho
+ \string<\glsxtrUpSigma
+ \string<\glsxtrUpTau
+ \string<\glsxtrUpUpsilon
+ \string<\glsxtrUpPhi
+ \string<\glsxtrUpChi
+ \string<\glsxtrUpPsi
+ \string<\glsxtrUpOmega
+}
+\newcommand*{\glsxtrMathUpGreekIIrules}{%
+ \glsxtrUpAlpha
+ \string<\glsxtrUpBeta
+ \string<\glsxtrUpGamma
+ \string<\glsxtrUpDelta
+ \string<\glsxtrUpEpsilon
+ \string<\glsxtrUpZeta
+ \string<\glsxtrUpEta
+ \string<\glsxtrUpTheta
+ \string<\glsxtrUpIota
+ \string<\glsxtrUpKappa
+ \string<\glsxtrUpLambda
+ \string<\glsxtrUpMu
+ \string<\glsxtrUpNu
+ \string<\glsxtrUpXi
+ \string<\glsxtrUpOmicron
+ \string<\glsxtrUpPi
+ \string<\glsxtrUpRho
+ \string<\glsxtrUpSigma
+ \string<\glsxtrUpTau
+ \string<\glsxtrUpUpsilon
+ \string<\glsxtrUpPhi
+ \string<\glsxtrUpChi
+ \string<\glsxtrUpPsi
+ \string<\glsxtrUpOmega
+}
+\newcommand*{\glsxtrMathItalicGreekIrules}{%
+ \glsxtrMathItalicAlpha
+ \string<\glsxtrMathItalicBeta
+ \string<\glsxtrMathItalicGamma
+ \string<\glsxtrMathItalicDelta
+ \string<\glsxtrMathItalicEpsilon
+ \string<\glsxtrUpDigamma
+ \string<\glsxtrMathItalicZeta
+ \string<\glsxtrMathItalicEta
+ \string<\glsxtrMathItalicTheta
+ \string<\glsxtrMathItalicIota
+ \string<\glsxtrMathItalicKappa
+ \string<\glsxtrMathItalicLambda
+ \string<\glsxtrMathItalicMu
+ \string<\glsxtrMathItalicNu
+ \string<\glsxtrMathItalicXi
+ \string<\glsxtrMathItalicOmicron
+ \string<\glsxtrMathItalicPi
+ \string<\glsxtrMathItalicRho
+ \string<\glsxtrMathItalicSigma
+ \string<\glsxtrMathItalicTau
+ \string<\glsxtrMathItalicUpsilon
+ \string<\glsxtrMathItalicPhi
+ \string<\glsxtrMathItalicChi
+ \string<\glsxtrMathItalicPsi
+ \string<\glsxtrMathItalicOmega
+}
+\newcommand*{\glsxtrMathItalicGreekIIrules}{%
+ \glsxtrMathItalicAlpha
+ \string<\glsxtrMathItalicBeta
+ \string<\glsxtrMathItalicGamma
+ \string<\glsxtrMathItalicDelta
+ \string<\glsxtrMathItalicEpsilon
+ \string<\glsxtrMathItalicZeta
+ \string<\glsxtrMathItalicEta
+ \string<\glsxtrMathItalicTheta
+ \string<\glsxtrMathItalicIota
+ \string<\glsxtrMathItalicKappa
+ \string<\glsxtrMathItalicLambda
+ \string<\glsxtrMathItalicMu
+ \string<\glsxtrMathItalicNu
+ \string<\glsxtrMathItalicXi
+ \string<\glsxtrMathItalicOmicron
+ \string<\glsxtrMathItalicPi
+ \string<\glsxtrMathItalicRho
+ \string<\glsxtrMathItalicSigma
+ \string<\glsxtrMathItalicTau
+ \string<\glsxtrMathItalicUpsilon
+ \string<\glsxtrMathItalicPhi
+ \string<\glsxtrMathItalicChi
+ \string<\glsxtrMathItalicPsi
+ \string<\glsxtrMathItalicOmega
+}
+\newcommand*{\glsxtrMathItalicUpperGreekIrules}{%
+ \glshex 1D6E2% upper case alpha (maths italic)
+ \string<\glshex 1D6E3% upper case beta (maths italic)
+ \string<\glshex 1D6E4% upper case gamma (maths italic)
+ \string<\glshex 1D6E5% upper case delta (maths italic)
+ \string<\glshex 1D6E6% upper case epsilon (maths italic)
+ \string<\glshex 03DC% upper case digamma
+ \string<\glshex 1D6E7% upper case zeta (maths italic)
+ \string<\glshex 1D6E8% upper case eta (maths italic)
+ \string<\glshex 1D6E9% upper case theta (maths italic)
+ \string=\glshex 1D6F3% upper case theta variant (maths italic)
+ \string<\glshex 1D6EA% upper case iota (maths italic)
+ \string<\glshex 1D6EB% upper case kappa (maths italic)
+ \string<\glshex 1D6EC% upper case lambda (maths italic)
+ \string<\glshex 1D6ED% upper case mu (maths italic)
+ \string<\glshex 1D6EE% upper case nu (maths italic)
+ \string<\glshex 1D6EF% upper case xi (maths italic)
+ \string<\glshex 1D6F0% upper case omicron (maths italic)
+ \string<\glshex 1D6F1% upper case pi (maths italic)
+ \string<\glshex 1D6F2% upper case rho (maths italic)
+ \string<\glshex 1D6F4% upper case sigma (maths italic)
+ \string<\glshex 1D6F5% upper case tau (maths italic)
+ \string<\glshex 1D6F6% upper case upsilon (maths italic)
+ \string<\glshex 1D6F7% upper case phi (maths italic)
+ \string<\glshex 1D6F8% upper case chi (maths italic)
+ \string<\glshex 1D6F9% upper case psi (maths italic)
+ \string<\glshex 1D6FA% upper case omega (maths italic)
+}
+\newcommand*{\glsxtrMathItalicUpperGreekIIrules}{%
+ \glshex 1D6E2% upper case alpha (maths italic)
+ \string<\glshex 1D6E3% upper case beta (maths italic)
+ \string<\glshex 1D6E4% upper case gamma (maths italic)
+ \string<\glshex 1D6E5% upper case delta (maths italic)
+ \string<\glshex 1D6E6% upper case epsilon (maths italic)
+ \string<\glshex 1D6E7% upper case zeta (maths italic)
+ \string<\glshex 1D6E8% upper case eta (maths italic)
+ \string<\glshex 1D6E9% upper case theta (maths italic)
+ \string=\glshex 1D6F3% upper case theta variant (maths italic)
+ \string<\glshex 1D6EA% upper case iota (maths italic)
+ \string<\glshex 1D6EB% upper case kappa (maths italic)
+ \string<\glshex 1D6EC% upper case lambda (maths italic)
+ \string<\glshex 1D6ED% upper case mu (maths italic)
+ \string<\glshex 1D6EE% upper case nu (maths italic)
+ \string<\glshex 1D6EF% upper case xi (maths italic)
+ \string<\glshex 1D6F0% upper case omicron (maths italic)
+ \string<\glshex 1D6F1% upper case pi (maths italic)
+ \string<\glshex 1D6F2% upper case rho (maths italic)
+ \string<\glshex 1D6F4% upper case sigma (maths italic)
+ \string<\glshex 1D6F5% upper case tau (maths italic)
+ \string<\glshex 1D6F6% upper case upsilon (maths italic)
+ \string<\glshex 1D6F7% upper case phi (maths italic)
+ \string<\glshex 1D6F8% upper case chi (maths italic)
+ \string<\glshex 1D6F9% upper case psi (maths italic)
+ \string<\glshex 1D6FA% upper case omega (maths italic)
+}
+\newcommand*{\glsxtrMathItalicLowerGreekIrules}{%
+ \glshex 1D6FC% lower case alpha (maths italic)
+ \string<\glshex 1D6FD% lower case beta (maths italic)
+ \string<\glshex 1D6FE% lower case gamma (maths italic)
+ \string<\glshex 1D6FF% lower case delta (maths italic)
+ \string<\glshex 1D700% lower case epsilon (maths italic)
+ \string=\glshex 1D716% lower case epsilon variant (maths italic)
+ \string<\glshex 03DD% lower case digamma
+ \string<\glshex 1D701% lower case zeta (maths italic)
+ \string<\glshex 1D702% lower case eta (maths italic)
+ \string<\glshex 1D703% lower case theta (maths italic)
+ \string=\glshex 1D717% lower case theta variant (maths italic)
+ \string<\glshex 1D704% lower case iota (maths italic)
+ \string<\glshex 1D705% lower case kappa (maths italic)
+ \string=\glshex 1D718% lower case kappa variant (maths italic)
+ \string<\glshex 1D706% lower case lambda (maths italic)
+ \string<\glshex 1D707% lower case mu (maths italic)
+ \string<\glshex 1D708% lower case nu (maths italic)
+ \string<\glshex 1D709% lower case xi (maths italic)
+ \string<\glshex 1D70A% lower case omicron (maths italic)
+ \string<\glshex 1D70B% lower case pi (maths italic)
+ \string=\glshex 1D71B% lower case pi variant (maths italic)
+ \string<\glshex 1D70C% lower case rho (maths italic)
+ \string=\glshex 1D71A% lower case rho variant (maths italic)
+ \string<\glshex 1D70D% lower case final sigma (maths italic)
+ \string=\glshex 1D70E% lower case sigma (maths italic)
+ \string<\glshex 1D70F% lower case tau (maths italic)
+ \string<\glshex 1D710% lower case upsilon (maths italic)
+ \string<\glshex 1D711% lower case phi (maths italic)
+ \string=\glshex 1D719% lower case phi variant (maths italic)
+ \string<\glshex 1D712% lower case chi (maths italic)
+ \string<\glshex 1D713% lower case psi (maths italic)
+ \string<\glshex 1D714% lower case omega (maths italic)
+}
+\newcommand*{\glsxtrMathItalicLowerGreekIIrules}{%
+ \glshex 1D6FC% lower case alpha (maths italic)
+ \string<\glshex 1D6FD% lower case beta (maths italic)
+ \string<\glshex 1D6FE% lower case gamma (maths italic)
+ \string<\glshex 1D6FF% lower case delta (maths italic)
+ \string<\glshex 1D700% lower case epsilon (maths italic)
+ \string=\glshex 1D716% lower case epsilon variant (maths italic)
+ \string<\glshex 1D701% lower case zeta (maths italic)
+ \string<\glshex 1D702% lower case eta (maths italic)
+ \string<\glshex 1D703% lower case theta (maths italic)
+ \string=\glshex 1D717% lower case theta variant (maths italic)
+ \string<\glshex 1D704% lower case iota (maths italic)
+ \string<\glshex 1D705% lower case kappa (maths italic)
+ \string=\glshex 1D718% lower case kappa variant (maths italic)
+ \string<\glshex 1D706% lower case lambda (maths italic)
+ \string<\glshex 1D707% lower case mu (maths italic)
+ \string<\glshex 1D708% lower case nu (maths italic)
+ \string<\glshex 1D709% lower case xi (maths italic)
+ \string<\glshex 1D70A% lower case omicron (maths italic)
+ \string<\glshex 1D70B% lower case pi (maths italic)
+ \string=\glshex 1D71B% lower case pi variant (maths italic)
+ \string<\glshex 1D70C% lower case rho (maths italic)
+ \string=\glshex 1D71A% lower case rho variant (maths italic)
+ \string<\glshex 1D70D% lower case final sigma (maths italic)
+ \string=\glshex 1D70E% lower case sigma (maths italic)
+ \string<\glshex 1D70F% lower case tau (maths italic)
+ \string<\glshex 1D710% lower case upsilon (maths italic)
+ \string<\glshex 1D711% lower case phi (maths italic)
+ \string=\glshex 1D719% lower case phi variant (maths italic)
+ \string<\glshex 1D712% lower case chi (maths italic)
+ \string<\glshex 1D713% lower case psi (maths italic)
+ \string<\glshex 1D714% lower case omega (maths italic)
+}
+\newcommand*{\glsxtrMathGreekIrules}{%
+ \glsxtrMathItalicAlpha
+ \string;\glsxtrUpAlpha
+ \string<\glsxtrMathItalicBeta
+ \string;\glsxtrUpBeta
+ \string<\glsxtrMathItalicGamma
+ \string;\glsxtrUpGamma
+ \string<\glsxtrMathItalicDelta
+ \string;\glsxtrUpDelta
+ \string<\glsxtrMathItalicEpsilon
+ \string;\glsxtrUpEpsilon
+ \string<\glsxtrUpDigamma
+ \string<\glsxtrMathItalicZeta
+ \string;\glsxtrUpZeta
+ \string<\glsxtrMathItalicEta
+ \string;\glsxtrUpEta
+ \string<\glsxtrMathItalicTheta
+ \string;\glsxtrUpTheta
+ \string<\glsxtrMathItalicIota
+ \string;\glsxtrUpIota
+ \string<\glsxtrMathItalicKappa
+ \string;\glsxtrUpKappa
+ \string<\glsxtrMathItalicLambda
+ \string;\glsxtrUpLambda
+ \string<\glsxtrMathItalicMu
+ \string;\glsxtrUpMu
+ \string<\glsxtrMathItalicNu
+ \string;\glsxtrUpNu
+ \string<\glsxtrMathItalicXi
+ \string;\glsxtrUpXi
+ \string<\glsxtrMathItalicOmicron
+ \string;\glsxtrUpOmicron
+ \string<\glsxtrMathItalicPi
+ \string;\glsxtrUpPi
+ \string<\glsxtrMathItalicRho
+ \string;\glsxtrUpRho
+ \string<\glsxtrMathItalicSigma
+ \string;\glsxtrUpSigma
+ \string<\glsxtrMathItalicTau
+ \string;\glsxtrUpTau
+ \string<\glsxtrMathItalicUpsilon
+ \string;\glsxtrUpUpsilon
+ \string<\glsxtrMathItalicPhi
+ \string;\glsxtrUpPhi
+ \string<\glsxtrMathItalicChi
+ \string;\glsxtrUpChi
+ \string<\glsxtrMathItalicPsi
+ \string;\glsxtrUpPsi
+ \string<\glsxtrMathItalicOmega
+ \string;\glsxtrUpOmega
+}
+\newcommand*{\glsxtrMathGreekIIrules}{%
+ \glsxtrMathItalicAlpha
+ \string;\glsxtrUpAlpha
+ \string<\glsxtrMathItalicBeta
+ \string;\glsxtrUpBeta
+ \string<\glsxtrMathItalicGamma
+ \string;\glsxtrUpGamma
+ \string<\glsxtrMathItalicDelta
+ \string;\glsxtrUpDelta
+ \string<\glsxtrMathItalicEpsilon
+ \string;\glsxtrUpEpsilon
+ \string<\glsxtrMathItalicZeta
+ \string;\glsxtrUpZeta
+ \string<\glsxtrMathItalicEta
+ \string;\glsxtrUpEta
+ \string<\glsxtrMathItalicTheta
+ \string;\glsxtrUpTheta
+ \string<\glsxtrMathItalicIota
+ \string;\glsxtrUpIota
+ \string<\glsxtrMathItalicKappa
+ \string;\glsxtrUpKappa
+ \string<\glsxtrMathItalicLambda
+ \string;\glsxtrUpLambda
+ \string<\glsxtrMathItalicMu
+ \string;\glsxtrUpMu
+ \string<\glsxtrMathItalicNu
+ \string;\glsxtrUpNu
+ \string<\glsxtrMathItalicXi
+ \string;\glsxtrUpXi
+ \string<\glsxtrMathItalicOmicron
+ \string;\glsxtrUpOmicron
+ \string<\glsxtrMathItalicPi
+ \string;\glsxtrUpPi
+ \string<\glsxtrMathItalicRho
+ \string;\glsxtrUpRho
+ \string<\glsxtrMathItalicSigma
+ \string;\glsxtrUpSigma
+ \string<\glsxtrMathItalicTau
+ \string;\glsxtrUpTau
+ \string<\glsxtrMathItalicUpsilon
+ \string;\glsxtrUpUpsilon
+ \string<\glsxtrMathItalicPhi
+ \string;\glsxtrUpPhi
+ \string<\glsxtrMathItalicChi
+ \string;\glsxtrUpChi
+ \string<\glsxtrMathItalicPsi
+ \string;\glsxtrUpPsi
+ \string<\glsxtrMathItalicOmega
+ \string;\glsxtrUpOmega
+}
+\newcommand*{\glsxtrUpAlpha}{%
+ \glshex 03B1,% lower case alpha
+ \glshex 0391% upper case alpha
+}
+\newcommand*{\glsxtrUpBeta}{%
+ \glshex 03B2,% lower case beta
+ \glshex 0392% upper case beta
+}
+\newcommand*{\glsxtrUpGamma}{%
+ \glshex 03B3,% lower case gamma
+ \glshex 0393% upper case gamma
+}
+\newcommand*{\glsxtrUpDelta}{%
+ \glshex 03B4,% lower case delta
+ \glshex 0394% upper case delta
+}
+\newcommand*{\glsxtrUpEpsilon}{%
+ \glshex 03B5% lower case epsilon
+ \string=\glshex 03F5,% lower case epsilon variant
+ \glshex 0395% upper case epsilon
+}
+\newcommand*{\glsxtrUpDigamma}{%
+ \glshex 03DD,% lower case digamma
+ \glshex 03DC% upper case digamma
+}
+\newcommand*{\glsxtrUpZeta}{%
+ \glshex 03B6,% lower case zeta
+ \glshex 0396% upper case zeta
+}
+\newcommand*{\glsxtrUpEta}{%
+ \glshex 03B7,% lower case eta
+ \glshex 0397% upper case eta
+}
+\newcommand*{\glsxtrUpTheta}{%
+ \glshex 03B8% lower case theta
+ \string=\glshex 03D1,% lower case theta variant
+ \glshex 0398% upper case theta
+}
+\newcommand*{\glsxtrUpIota}{%
+ \glshex 03B9,% lower case iota
+ \glshex 0399% upper case iota
+}
+\newcommand*{\glsxtrUpKappa}{%
+ \glshex 03BA% lower case kappa
+ \string=\glshex 03F0,% lower case kappa variant
+ \glshex 039A% upper case kappa
+}
+\newcommand*{\glsxtrUpLambda}{%
+ \glshex 03BB,% lower lambda
+ \glshex 039B% upper case lambda
+}
+\newcommand*{\glsxtrUpMu}{%
+ \glshex 03BC,% lower case mu
+ \glshex 039C% upper case mu
+}
+\newcommand*{\glsxtrUpNu}{%
+ \glshex 03BD,% lower case nu
+ \glshex 039D% upper case nu
+}
+\newcommand*{\glsxtrUpXi}{%
+ \glshex 03BE,% lower case xi
+ \glshex 039E% upper case xi
+}
+\newcommand*{\glsxtrUpOmicron}{%
+ \glshex 03BF,% lower case omicron
+ \glshex 039F% upper case omicron
+}
+\newcommand*{\glsxtrUpPi}{%
+ \glshex 03C0% lower case pi
+ \string=\glshex 03D6,% lower case pi variant
+ \glshex 03A0% upper case pi
+}
+\newcommand*{\glsxtrUpRho}{%
+ \glshex 03C1% lower case rho
+ \string=\glshex 03F1,% lower case rho variant
+ \glshex 03A1% upper case rho
+}
+\newcommand*{\glsxtrUpSigma}{%
+ \glshex 03C2% lower case sigma
+ \string=\glshex 03C3,% lower case sigma
+ \glshex 03A3% upper case sigma
+}
+\newcommand*{\glsxtrUpTau}{%
+ \glshex 03C4,% lower case tau
+ \glshex 03A4% upper case tau
+}
+\newcommand*{\glsxtrUpUpsilon}{%
+ \glshex 03C5,% lower case upsilon
+ \glshex 03A5% upper case upsilon
+}
+\newcommand*{\glsxtrUpPhi}{%
+ \glshex 03C6% lower case phi
+ \string=\glshex 03D5,% lower case phi variant
+ \glshex 03A6% upper case phi
+}
+\newcommand*{\glsxtrUpChi}{%
+ \glshex 03C7,% lower case chi
+ \glshex 03A7% upper case chi
+}
+\newcommand*{\glsxtrUpPsi}{%
+ \glshex 03C8,% lower case psi
+ \glshex 03A8% upper case psi
+}
+\newcommand*{\glsxtrUpOmega}{%
+ \glshex 03C9,% lower case omega
+ \glshex 03A9% upper case omega
+}
+\newcommand*{\glsxtrMathItalicAlpha}{%
+ \glshex 1D6FC,% lower case alpha (maths italic)
+ \glshex 1D6E2% upper case alpha (maths italic)
+}
+\newcommand*{\glsxtrMathItalicBeta}{%
+ \glshex 1D6FD,% lower case beta (maths italic)
+ \glshex 1D6E3% upper case beta (maths italic)
+}
+\newcommand*{\glsxtrMathItalicGamma}{%
+ \glshex 1D6FE,% lower case gamma (maths italic)
+ \glshex 1D6E4% upper case gamma (maths italic)
+}
+\newcommand*{\glsxtrMathItalicDelta}{%
+ \glshex 1D6FF,% lower case delta (maths italic)
+ \glshex 1D6E5% upper case delta (maths italic)
+}
+\newcommand*{\glsxtrMathItalicEpsilon}{%
+ \glshex 1D700% lower case epsilon (maths italic)
+ \string=\glshex 1D716,% lower case epsilon variant (maths italic)
+ \glshex 1D6E6% upper case epsilon (maths italic)
+}
+\newcommand*{\glsxtrMathItalicZeta}{%
+ \glshex 1D701,% lower case zeta (maths italic)
+ \glshex 1D6E7% upper case zeta (maths italic)
+}
+\newcommand*{\glsxtrMathItalicEta}{%
+ \glshex 1D702,% lower case eta (maths italic)
+ \glshex 1D6E8% upper case eta (maths italic)
+}
+\newcommand*{\glsxtrMathItalicTheta}{%
+ \glshex 1D703% lower case theta (maths italic)
+ \string=\glshex 1D717,% lower case theta variant (maths italic)
+ \glshex 1D6E9% upper case theta (maths italic)
+ \string=\glshex 1D6F3% upper case theta variant (maths italic)
+}
+\newcommand*{\glsxtrMathItalicIota}{%
+ \glshex 1D704,% lower case iota (maths italic)
+ \glshex 1D6EA% upper case iota (maths italic)
+}
+\newcommand*{\glsxtrMathItalicKappa}{%
+ \glshex 1D705% lower case kappa (maths italic)
+ \string=\glshex 1D718,% lower case kappa variant (maths italic)
+ \glshex 1D6EB% upper case kappa (maths italic)
+}
+\newcommand*{\glsxtrMathItalicLambda}{%
+ \glshex 1D706,% lower case lambda (maths italic)
+ \glshex 1D6EC% upper case lambda (maths italic)
+}
+\newcommand*{\glsxtrMathItalicMu}{%
+ \glshex 1D707,% lower case mu (maths italic)
+ \glshex 1D6ED% upper case mu (maths italic)
+}
+\newcommand*{\glsxtrMathItalicNu}{%
+ \glshex 1D708,% lower case nu (maths italic)
+ \glshex 1D6EE% upper case nu (maths italic)
+}
+\newcommand*{\glsxtrMathItalicXi}{%
+ \glshex 1D709,% lower case xi (maths italic)
+ \glshex 1D6EF% upper case xi (maths italic)
+}
+\newcommand*{\glsxtrMathItalicOmicron}{%
+ \glshex 1D70A,% lower case omicron (maths italic)
+ \glshex 1D6F0% upper case omicron (maths italic)
+}
+\newcommand*{\glsxtrMathItalicPi}{%
+ \glshex 1D70B% lower case pi (maths italic)
+ \string=\glshex 1D71B,% lower case pi variant (maths italic)
+ \glshex 1D6F1% upper case pi (maths italic)
+}
+\newcommand*{\glsxtrMathItalicRho}{%
+ \glshex 1D70C% lower case rho (maths italic)
+ \string=\glshex 1D71A,% lower case rho variant (maths italic)
+ \glshex 1D6F2% upper case rho (maths italic)
+}
+\newcommand*{\glsxtrMathItalicSigma}{%
+ \glshex 1D70D% lower case final sigma (maths italic)
+ \string=\glshex 1D70E,% lower case sigma (maths italic)
+ \glshex 1D6F4% upper case sigma (maths italic)
+}
+\newcommand*{\glsxtrMathItalicTau}{%
+ \glshex 1D70F,% lower case tau (maths italic)
+ \glshex 1D6F5% upper case tau (maths italic)
+}
+\newcommand*{\glsxtrMathItalicUpsilon}{%
+ \glshex 1D710,% lower case upsilon (maths italic)
+ \glshex 1D6F6% upper case upsilon (maths italic)
+}
+\newcommand*{\glsxtrMathItalicPhi}{%
+ \glshex 1D711% lower case phi (maths italic)
+ \string=\glshex 1D719,% lower case phi variant (maths italic)
+ \glshex 1D6F7% upper case phi (maths italic)
+}
+\newcommand*{\glsxtrMathItalicChi}{%
+ \glshex 1D712,% lower case chi (maths italic)
+ \glshex 1D6F8% upper case chi (maths italic)
+}
+\newcommand*{\glsxtrMathItalicPsi}{%
+ \glshex 1D713,% lower case psi (maths italic)
+ \glshex 1D6F9% upper case psi (maths italic)
+}
+\newcommand*{\glsxtrMathItalicOmega}{%
+ \glshex 1D714,% lower case omega (maths italic)
+ \glshex 1D6FA% upper case omega (maths italic)
+}
+\newcommand*{\glsxtrMathItalicPartial}{%
+ \glshex 1D715% partial differential (maths italic)
+}
+\newcommand*{\glsxtrMathItalicNabla}{%
+ \glshex 1D6FB% nabla (maths italic)
+}
+\newcommand*{\glsxtrdigitrules}{%
+ 0\string=\glshex 2080\string=\glshex 2070
+ \string<1\string=\glshex 2081\string=\glshex 00B9
+ \string<2\string=\glshex 2082\string=\glshex 00B2
+ \string<3\string=\glshex 2083\string=\glshex 00B3
+ \string<4\string=\glshex 2084\string=\glshex 2074
+ \string<5\string=\glshex 2085\string=\glshex 2075
+ \string<6\string=\glshex 2086\string=\glshex 2076
+ \string<7\string=\glshex 2087\string=\glshex 2077
+ \string<8\string=\glshex 2088\string=\glshex 2078
+ \string<9\string=\glshex 2089\string=\glshex 2079
+}
+\newcommand*{\glsxtrBasicDigitrules}{%
+ 0\string<1\string<2\string<3\string<4%
+ \string<5\string<6\string<7\string<8\string<9%
+}
+\newcommand*{\glsxtrSubScriptDigitrules}{%
+ \glshex 2080% subscript 0
+ \string<\glshex 2081% subscript 1
+ \string<\glshex 2082% subscript 2
+ \string<\glshex 2083% subscript 3
+ \string<\glshex 2084% subscript 4
+ \string<\glshex 2085% subscript 5
+ \string<\glshex 2086% subscript 6
+ \string<\glshex 2087% subscript 7
+ \string<\glshex 2088% subscript 8
+ \string<\glshex 2089% subscript 9
+}
+\newcommand*{\glsxtrSuperScriptDigitrules}{%
+ \glshex 2070% superscript 0
+ \string<\glshex 00B9% superscript 1
+ \string<\glshex 00B2% superscript 2
+ \string<\glshex 00B3% superscript 3
+ \string<\glshex 2074% superscript 4
+ \string<\glshex 2075% superscript 5
+ \string<\glshex 2076% superscript 6
+ \string<\glshex 2077% superscript 7
+ \string<\glshex 2078% superscript 8
+ \string<\glshex 2079% superscript 9
+}
+\newcommand*{\glsxtrfractionrules}{%
+ \glshex 215F% fraction numerator one (1/)
+ \string<\glshex 2189% zero thirds (0/3 = 0)
+ \string<\glshex 2152% one tenth (1/10 = 0.1)
+ \string<\glshex 2151% one ninth (1/9 ~ 0.111)
+ \string<\glshex 215B% one eighth (1/8 = 0.125)
+ \string<\glshex 2150% one seventh (1/7 ~ 0.143)
+ \string<\glshex 2159% one sixth (1/6 ~ 0.167)
+ \string<\glshex 2155% one fifth (1/5 = 0.2)
+ \string<\glshex 00BC% one quarter (1/4 = 0.25)
+ \string<\glshex 2153% one third (1/3 ~ 0.333)
+ \string<\glshex 215C% three eighths (3/8 = 0.375)
+ \string<\glshex 2156% two fifths (2/5 = 0.4)
+ \string<\glshex 00BD% one half (1/2 = 0.5)
+ \string<\glshex 2157% three fifths (3/5 = 0.6)
+ \string<\glshex 215D% five eighths (5/8 = 0.625)
+ \string<\glshex 2154% two thirds (2/3 ~ 0.667)
+ \string<\glshex 00BE% three quarters (3/4 = 0.75)
+ \string<\glshex 2158% four fifths (4/5 = 0.8)
+ \string<\glshex 215A% five sixths (5/6 ~ 0.833)
+ \string<\glshex 215E% seven eighths (7/8 = 0.875)
+}
+\renewcommand{\@glsxtrdialecthook}{%
+ \ifundef\CurrentTrackedScript
+ {%
+ \TrackLangIfHasDefaultScript{\CurrentTrackedLanguage}%
+ {%
+ \edef\CurrentTrackedScript{%
+ \TrackLangGetDefaultScript\CurrentTrackedLanguage}%
+ }%
+ {}%
+ }%
+ {}%
+ \ifdef\CurrentTrackedScript
+ {%
+ \let\gls@orgTrackLangRequireDialectPrefix\TrackLangRequireDialectPrefix
+ \def\TrackLangRequireDialectPrefix{glossariesxtr-}%
+ \let\CurrentTrackedTag\CurrentTrackedScript
+ \IfFileExists{\TrackLangRequireDialectPrefix\CurrentTrackedTag.ldf}
+ {\RequireGlossariesExtraLang{\CurrentTrackedTag}}%
+ {}%
+ \let\TrackLangRequireDialectPrefix\gls@orgTrackLangRequireDialectPrefix
+ }%
+ {}%
+}
+\ifdef\glsxtr@loaddialect
+{%
+ \@ifpackageloaded{tracklang}
+ {%
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{\glsxtr@loaddialect}%
+ }%
+ {}%
+ }
+ {}
+}
+{}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-extra-bib2gls-2021-11-22.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-extra-stylemods-2021-11-22.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v1.48 (glossaries-extra-stylemods-2021-11-22.sty)}
+% Version 1.48 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-extra-stylemods}[2021/11/22 v1.48 (NLCT)]
+\newcommand*{\@glsxtr@loadstyles}{}
+\DeclareOption{all}{%
+ \appto\@glsxtr@loadstyles{%
+ \RequirePackage{glossary-inline}%
+ \RequirePackage{glossary-list}%
+ \RequirePackage{glossary-tree}%
+ \RequirePackage{glossary-mcols}%
+ \RequirePackage{glossary-long}%
+ \RequirePackage{glossary-longragged}%
+ \RequirePackage{glossary-longbooktabs}%
+ \RequirePackage{glossary-super}%
+ \RequirePackage{glossary-superragged}%
+ \RequirePackage{glossary-bookindex}[=v1.48]%
+ \RequirePackage{glossary-longextra}[=v1.48]%
+ \RequirePackage{glossary-topic}[=v1.48]%
+ }
+}
+\DeclareOption*{%
+ \IfFileExists{glossary-\CurrentOption.sty}
+ {\eappto\@glsxtr@loadstyles{%
+ \noexpand\RequirePackage{glossary-\CurrentOption}}%
+ }%
+ {%
+ \PackageError{glossaries-extra-styles}%
+ {Unknown option `\CurrentOption'}{}%
+ }%
+}
+\ProcessOptions
+\@glsxtr@loadstyles
+\providecommand*{\glsxtrprelocation}{\space}
+\providecommand{\renewglossarystyle}[2]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries-extra}{Glossary style `#1' isn't already defined}{}%
+ }%
+ {%
+ \csdef{@glsstyle@#1}{#2}%
+ }%
+}
+\ifdef{\@glsstyle@listdotted}
+{%
+ \renewglossarystyle{listdotted}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}%
+ \glossentrydesc{##1}\glspostdescription}%
+ \renewcommand*{\subglossentry}[3]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\glossentryname{##2}}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}%
+ \glossentrydesc{##2}\glspostdescription}%
+ }
+}
+{%
+}
+\ifdef{\@glsstyle@list}
+{%
+ \newcommand{\glslistprelocation}{\glsxtrprelocation}
+ \newcommand{\glslistchildprelocation}{\glslistprelocation}
+ \newcommand{\glslistchildpostlocation}{.}
+ \newcommand{\glslistdesc}[1]{\glossentrydesc{#1}\glspostdescription}
+ \newcommand{\glslistgroupskip}{\nobreak\indexspace\nobreak}
+ \newcommand{\glslistitem}[1]{%
+ \item[\glsentryitem{#1}%
+ \glstarget{#1}{\glossentryname{#1}}]%
+ }
+ \providecommand{\glslistinit}{%
+ \ifdef\GetTitleStringDisableCommands
+ {%
+ \GetTitleStringSetup{expand}%
+ \GetTitleStringDisableCommands{%
+ \let\glsentryitem\@gobble
+ \let\glstarget\@secondoftwo
+ \let\glossentryname\glslistexpandedname
+ \let\glslistgroupheaderfmt\@firstofone
+ \let\glsgetgrouptitle\@firstofone
+ \let\glsnavhypertarget\@secondoftwo
+ \let\glsnavigation\relax
+ }%
+ }%
+ {}%
+ }
+ \providecommand{\glslistexpandedname}[1]{%
+ \ifcsname glo@\glsdetoklabel{#1}@name\endcsname
+ \expandafter\expandonce\csname glo@\glsdetoklabel{#1}@name\expandafter\endcsname
+ \fi
+ }
+ \renewglossarystyle{list}{%
+ \renewenvironment{theglossary}%
+ {\glslistinit\begin{description}}{\end{description}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glossentry}[2]{%
+ \glslistitem{##1}\glslistdesc{##1}\glslistprelocation ##2}%
+ \renewcommand*{\subglossentry}[3]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\space
+ \glslistdesc{##2}%
+ \glslistchildprelocation ##3\glslistchildpostlocation}%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glslistgroupskip\fi}%
+ }
+}
+{}
+\ifdef{\@glsstyle@altlist}
+{%
+ \newcommand{\glsaltlistitem}[1]{%
+ \glslistitem{#1}%
+ \mbox{}\par\nobreak\@afterheading
+ }
+ \renewglossarystyle{altlist}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \glsaltlistitem{##1}%
+ \glslistdesc{##1}\glslistprelocation ##2}%
+ \renewcommand{\subglossentry}[3]{%
+ \par
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glslistdesc{##2}%
+ \glslistchildprelocation ##3}%
+ }
+}
+{}
+\ifdef{\@glsstyle@listgroup}
+{%
+ \newcommand{\glslistgroupheaderitem}[2]{\item[{#2}]}
+ \newcommand{\glslistgroupafterheader}{%
+ \mbox{}\par\nobreak\@afterheading
+ }
+ \renewglossarystyle{listgroup}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glslistgroupheaderitem{##1}{\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}}%
+ \glslistgroupafterheader
+ }%
+ }
+}
+{}
+\ifdef{\@glsstyle@listhypergroup}
+{%
+ \renewglossarystyle{listhypergroup}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossaryheader}{%
+ \glslistnavigationitem{\glsnavigation}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glslistgroupheaderitem{##1}{\glslistgroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}}%
+ \glslistgroupafterheader
+ }%
+ }
+}
+{}
+\ifdef{\@glsstyle@altlistgroup}
+{%
+ \renewglossarystyle{altlistgroup}{%
+ \setglossarystyle{altlist}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glslistgroupheaderitem{##1}%
+ {\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}}%
+ \glslistgroupafterheader
+ }%
+ }
+}
+{}
+\ifdef{\@glsstyle@altlisthypergroup}
+{%
+ \renewglossarystyle{altlisthypergroup}{%
+ \setglossarystyle{altlist}%
+ \renewcommand*{\glossaryheader}{%
+ \glslistnavigationitem{\glsnavigation}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glslistgroupheaderitem{##1}{\glslistgroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}}%
+ \glslistgroupafterheader
+ }%
+ }
+}
+{}
+\ifcsdef{@glsstyle@long}
+{%
+ \renewglossarystyle{long}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription
+ \glsxtrprelocation ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription
+ \glsxtrprelocation ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & \tabularnewline}%
+ \fi
+ }
+}
+{}
+\ifcsdef{@glsstyle@long3col}
+{%
+ \renewglossarystyle{long3col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& &\tabularnewline}%
+ \fi
+ }
+}
+{}
+\ifcsdef{@glsstyle@long4col}
+{%
+ \renewglossarystyle{long4col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{llll}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription &
+ \glossentrysymbol{##1} &
+ ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & &\tabularnewline}%
+ \fi
+ }
+}
+{}
+\ifcsdef{@glsstyle@longragged}
+{%
+ \renewglossarystyle{longragged}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\glsxtrprelocation ##2%
+ \tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}%
+ \glspostdescription\glsxtrprelocation ##3%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & \tabularnewline}%
+ \fi
+ }
+}
+{}
+\ifcsdef{@glsstyle@longragged3col}
+{%
+ \renewglossarystyle{longragged3col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& &\tabularnewline}%
+ \fi
+ }
+}
+{}
+\ifcsdef{@glsstyle@altlongragged4col}
+{%
+ \renewglossarystyle{altlongragged4col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription & \glossentrysymbol{##1} &
+ ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & &\tabularnewline}%
+ \fi
+ }
+}
+{}
+\ifcsdef{@glsstyle@super}
+{%
+ \renewglossarystyle{super}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription
+ \glsxtrprelocation ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription
+ \glsxtrprelocation ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& \tabularnewline}%
+ \fi
+ }
+}
+{}
+\ifcsdef{@glsstyle@super3col}
+{%
+ \renewglossarystyle{super3col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & &\tabularnewline}%
+ \fi
+ }
+}
+{}
+\ifcsdef{@glsstyle@super4col}
+{%
+ \renewglossarystyle{super4col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{llll}}{%
+ \end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription &
+ \glossentrysymbol{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & &\tabularnewline}%
+ \fi
+ }
+}
+{}
+\ifcsdef{@glsstyle@superragged}
+{%
+ \renewglossarystyle{superragged}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\glsxtrprelocation ##2%
+ \tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription
+ \glsxtrprelocation ##3%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& \tabularnewline}%
+ \fi
+ }
+}
+{}
+\ifcsdef{@glsstyle@superragged3col}
+{%
+ \renewglossarystyle{superragged3col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription &
+ ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & &\tabularnewline}%
+ \fi
+ }
+}
+{}
+\ifcsdef{@glsstyle@altsuperragged4col}
+{%
+ \renewglossarystyle{altsuperragged4col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription &
+ \glossentrysymbol{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & &\tabularnewline}%
+ \fi
+ }
+}
+{}
+\ifdef{\@glsstyle@inline}
+{%
+ \renewcommand*{\glspostinline}{.\spacefactor\sfcode`\.}
+ \renewcommand*{\glsinlinedescformat}[3]{%
+ \space#1\glsxtrpostdescription}
+ \renewcommand*{\glsinlinesubdescformat}[3]{%
+ #1\glsxtrpostdescription}
+}
+{}
+\ifdef\glstreenamefmt
+{
+ \newcommand{\glstreedefaultnamefmt}[1]{\textbf{#1}}
+ \renewcommand{\glstreenamefmt}[1]{\glstreedefaultnamefmt{#1}}
+ \def\glstreegroupheaderfmt#1{\glstreedefaultnamefmt{#1}}
+ \def\glstreenavigationfmt#1{\glstreedefaultnamefmt{#1}}
+ \newcommand{\glstreePreHeader}[2]{}
+}
+{}
+\ifdef{\@glsstyle@index}
+{
+ \newcommand*{\glstreeprelocation}{\glsxtrprelocation}
+ \newcommand*{\glstreechildprelocation}{\glstreeprelocation}
+ \newcommand{\glstreegroupskip}{\indexspace}
+ \newcommand{\glstreegroupheaderskip}{\nopagebreak\glstreegroupskip\nobreak}
+ \renewglossarystyle{index}{%
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\glstreeitem
+ \let\subitem\glstreesubitem
+ \let\subsubitem\glstreesubsubitem
+ }%
+ {\par}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glossentry}[2]{%
+ \item\glsentryitem{##1}%
+ \glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \glstreesymbol{##1}%
+ \glstreeDescLoc{##1}{##2}%
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifcase##1\relax
+ \item
+ \or
+ \subitem
+ \glssubentryitem{##2}%
+ \else
+ \subsubitem
+ \fi
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}%
+ \glstreechildsymbol{##2}%
+ \glstreeChildDescLoc{##2}{##3}%
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}%
+ }
+}
+{}
+\ifdef{\@glsstyle@indexgroup}
+{%
+ \renewglossarystyle{indexgroup}{%
+ \setglossarystyle{index}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \item\glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupheaderskip\@afterheading
+ }%
+ }
+}
+{}
+\ifdef{\@glsstyle@indexhypergroup}
+{%
+ \renewglossarystyle{indexhypergroup}{%
+ \setglossarystyle{index}%
+ \renewcommand*{\glossaryheader}{%
+ \item\glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupheaderskip\@afterheading}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupheaderskip\@afterheading}%
+ }%
+}
+{}
+\ifdef{\@glsstyle@tree}
+{%
+\newcommand{\glsxtrtreepredesc}{\glstreepredesc}
+\newcommand{\glsxtrtreechildpredesc}{\glstreechildpredesc}
+ \newcommand{\glstreedesc}[1]{%
+ \glsxtrtreepredesc\glossentrydesc{#1}\glspostdescription
+ }
+ \newcommand{\glstreeDescLoc}[2]{%
+ \ifglshasdesc{#1}%
+ {\glstreedesc{#1}\glstreeprelocation}%
+ {\ifglshassymbol{#1}{\glstreeprelocation}{\glstreeNoDescSymbolPreLocation}}%
+ #2%
+ }
+ \newcommand{\glstreeNoDescSymbolPreLocation}{\space}
+ \newcommand{\glstreesymbol}[1]{%
+ \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}%
+ }%
+ \newcommand{\glstreechilddesc}[1]{%
+ \glsxtrtreechildpredesc\glossentrydesc{#1}\glspostdescription
+ }%
+ \newcommand{\glstreeChildDescLoc}[2]{%
+ \ifglshasdesc{#1}%
+ {\glstreechilddesc{#1}\glstreechildprelocation}%
+ {\ifglshassymbol{#1}{\glstreechildprelocation}%
+ {\glstreeNoDescSymbolPreLocation}%
+ }%
+ #2%
+ }%
+ \newcommand{\glstreechildsymbol}[1]{%
+ \glstreesymbol{#1}%
+ }%
+ \renewglossarystyle{tree}{%
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}}%
+ {}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \glstreesymbol{##1}%
+ \glstreeDescLoc{##1}{##2}\par
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}%
+ \glstreechildsymbol{##2}%
+ \glstreeChildDescLoc{##2}{##3}\par
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}%
+ }%
+}
+{}
+\ifdef{\@glsstyle@treegroup}
+{%
+ \renewglossarystyle{treegroup}{%
+ \setglossarystyle{tree}%
+ \renewcommand{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupheaderskip\@afterheading}%
+ }
+}
+{}
+\ifdef{\@glsstyle@treehypergroup}
+{%
+ \renewglossarystyle{treehypergroup}{%
+ \setglossarystyle{tree}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupheaderskip\@afterheading}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent
+ \glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupheaderskip\@afterheading}%
+ }
+}
+{}
+\ifdef{\@glsstyle@treenoname}
+{%
+ \newcommand{\glstreenonamedesc}[1]{%
+ \glstreepredesc\glossentrydesc{#1}\glspostdescription
+ }%
+ \newcommand{\glstreenonamesymbol}[1]{%
+ \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}%
+ }%
+ \newcommand{\glstreenonameDescLoc}[2]{%
+ \glstreenonamedesc{#1}\glstreeprelocation#2%
+ }
+ \newcommand{\glstreenonamechilddesc}[1]{%
+ \glossentrydesc{#1}\glspostdescription
+ }%
+ \newcommand{\glstreenonameChildDescLoc}[2]{%
+ \glstreenonamechilddesc{#1}\glstreechildprelocation#2%
+ }
+ \renewglossarystyle{treenoname}{%
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}}%
+ {}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \glstreenonamesymbol{##1}%
+ \glstreenonameDescLoc{##1}{##2}\par
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstarget{##2}{\strut}%
+ \glstreenonameChildDescLoc{##2}{##3}\par
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}%
+ }
+}
+{}
+\ifdef{\@glsstyle@treenonamegroup}
+{%
+ \renewglossarystyle{treenonamegroup}{%
+ \setglossarystyle{treenoname}%
+ \renewcommand{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupheaderskip\@afterheading
+ }%
+ }
+}
+{}
+\ifdef{\@glsstyle@treenonamehypergroup}
+{%
+ \renewglossarystyle{treenonamehypergroup}{%
+ \setglossarystyle{treenoname}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupheaderskip\@afterheading}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupheaderskip\@afterheading}%
+ }
+}
+{}
+\ifdef{\@glsstyle@alttree}
+{%
+\newcommand{\glsalttreepredesc}{}
+\newcommand{\glsalttreechildpredesc}{\glsalttreepredesc}
+ \newcommand{\glsxtralttreeSymbolDescLocation}[2]{%
+ {%
+ \let\par\glsxtrAltTreePar
+ \let\glsxtrtreepredesc\glsalttreepredesc
+ \let\glsxtrtreechildpredesc\glsalttreechildpredesc
+ \ifglshassymbol{#1}{(\glossentrysymbol{#1})\space}{}%
+ \glstreeDescLoc{#1}{#2}\par
+ }%
+ }
+ \newlength\glsxtrAltTreeIndent
+ \newcommand{\glsxtrAltTreePar}{%
+ \@@par
+ \glsxtrAltTreeSetHangIndent
+ \setlength{\parindent}{\dimexpr\hangindent+\glsxtrAltTreeIndent}%
+ }
+ \newcommand{\glsxtralttreeSubSymbolDescLocation}[3]{%
+ \glsxtralttreeSymbolDescLocation{#2}{#3}%
+ }
+ \newlength\glsxtrtreetopindent
+ \newcommand*{\glsxtralttreeInit}{%
+ \settowidth{\glsxtrtreetopindent}{\glstreenamefmt{\glsgetwidestname\space}}%
+ \glsxtrAltTreeIndent=\parindent
+ }
+ \newcommand*{\gglssetwidest}[2][0]{%
+ \csgdef{@glswidestname\romannumeral#1}{#2}%
+ }
+ \newcommand*{\eglssetwidest}[2][0]{%
+ \protected@csedef{@glswidestname\romannumeral#1}{#2}%
+ }
+ \newcommand*{\xglssetwidest}[2][0]{%
+ \protected@csxdef{@glswidestname\romannumeral#1}{#2}%
+ }
+ \newcommand*{\glsupdatewidest}[2][0]{%
+ \ifcsundef{@glswidestname\romannumeral#1}%
+ {\csdef{@glswidestname\romannumeral#1}{#2}}%
+ {%
+ \settowidth{\dimen@}{\csuse{@glswidestname\romannumeral#1}}%
+ \settowidth{\dimen@ii}{#2}%
+ \ifdim\dimen@ii>\dimen@
+ \csdef{@glswidestname\romannumeral#1}{#2}%
+ \fi
+ }%
+ }
+ \newcommand*{\gglsupdatewidest}[2][0]{%
+ \ifcsundef{@glswidestname\romannumeral#1}%
+ {\csgdef{@glswidestname\romannumeral#1}{#2}}%
+ {%
+ \settowidth{\dimen@}{\csuse{@glswidestname\romannumeral#1}}%
+ \settowidth{\dimen@ii}{#2}%
+ \ifdim\dimen@ii>\dimen@
+ \csgdef{@glswidestname\romannumeral#1}{#2}%
+ \fi
+ }%
+ }
+ \newcommand*{\eglsupdatewidest}[2][0]{%
+ \ifcsundef{@glswidestname\romannumeral#1}%
+ {\protected@csedef{@glswidestname\romannumeral#1}{#2}}%
+ {%
+ \settowidth{\dimen@}{\csuse{@glswidestname\romannumeral#1}}%
+ \settowidth{\dimen@ii}{#2}%
+ \ifdim\dimen@ii>\dimen@
+ \protected@csedef{@glswidestname\romannumeral#1}{#2}%
+ \fi
+ }%
+ }
+ \newcommand*{\xglsupdatewidest}[2][0]{%
+ \ifcsundef{@glswidestname\romannumeral#1}%
+ {\protected@csxdef{@glswidestname\romannumeral#1}{#2}}%
+ {%
+ \settowidth{\dimen@}{\csuse{@glswidestname\romannumeral#1}}%
+ \settowidth{\dimen@ii}{#2}%
+ \ifdim\dimen@ii>\dimen@
+ \protected@csxdef{@glswidestname\romannumeral#1}{#2}%
+ \fi
+ }%
+ }
+ \newcommand*{\glsgetwidestname}{\@glswidestname}
+ \newcommand*{\glsgetwidestsubname}[1]{%
+ \ifcsundef{@glswidestname\romannumeral#1}%
+ {\@glswidestname}%
+ {\csuse{@glswidestname\romannumeral#1}}%
+ }
+ \let\glsFindWidestTopLevelName\glsfindwidesttoplevelname
+ \newrobustcmd*{\glsFindWidestUsedTopLevelName}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {%
+ \ifglshasparent{\@glo@label}%
+ {}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ }%
+ }
+ \newrobustcmd*{\glsFindWidestUsedAnyName}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ {}%
+ }%
+ }%
+ }
+ \newrobustcmd*{\glsFindWidestAnyName}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ }
+ \newrobustcmd*{\glsFindWidestUsedLevelTwo}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \dimen@i=0pt\relax
+ \dimen@ii=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {%
+ \ifglshasparent{\@glo@label}%
+ {%
+ \protected@edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@label}@parent}}%
+ \ifglshasparent{\@glo@parent}%
+ {%
+ \protected@edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@parent}@parent}}%
+ \ifglshasparent{\@glo@parent}%
+ {}%
+ {%
+ \settowidth{\gls@tmplen}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\gls@tmplen>\dimen@ii
+ \dimen@ii=\gls@tmplen
+ \eglssetwidest[2]{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ {%
+ \settowidth{\gls@tmplen}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\gls@tmplen>\dimen@i
+ \dimen@i=\gls@tmplen
+ \eglssetwidest[1]{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ {%
+ \settowidth{\gls@tmplen}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\gls@tmplen>\dimen@
+ \dimen@=\gls@tmplen
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ }%
+ }
+ \newrobustcmd*{\glsFindWidestLevelTwo}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \dimen@i=0pt\relax
+ \dimen@ii=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglshasparent{\@glo@label}%
+ {%
+ \protected@edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@label}@parent}}%
+ \ifglshasparent{\@glo@parent}%
+ {%
+ \protected@edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@parent}@parent}}%
+ \ifglshasparent{\@glo@parent}%
+ {}%
+ {%
+ \settowidth{\gls@tmplen}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\gls@tmplen>\dimen@ii
+ \dimen@ii=\gls@tmplen
+ \eglssetwidest[2]{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ {%
+ \settowidth{\gls@tmplen}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\gls@tmplen>\dimen@i
+ \dimen@i=\gls@tmplen
+ \eglssetwidest[1]{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ {%
+ \settowidth{\gls@tmplen}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\gls@tmplen>\dimen@
+ \dimen@=\gls@tmplen
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ }%
+ }
+ \newrobustcmd*{\glsFindWidestUsedAnyNameSymbol}[2][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ #2=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ \settowidth{\dimen@}%
+ {\glsentrysymbol{\@glo@label}}%
+ \ifdim\dimen@>#2\relax
+ #2=\dimen@
+ \fi
+ }%
+ {}%
+ }%
+ }%
+ }
+ \newrobustcmd*{\glsFindWidestAnyNameSymbol}[2][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ #2=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ \settowidth{\dimen@}%
+ {\glsentrysymbol{\@glo@label}}%
+ \ifdim\dimen@>#2\relax
+ #2=\dimen@
+ \fi
+ }%
+ }%
+ }
+ \newrobustcmd*{\glsFindWidestUsedAnyNameSymbolLocation}[3][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ #2=0pt\relax
+ #3=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ \settowidth{\dimen@}%
+ {\glsentrysymbol{\@glo@label}}%
+ \ifdim\dimen@>#2\relax
+ #2=\dimen@
+ \fi
+ \settowidth{\dimen@}%
+ {\GlsXtrFormatLocationList{\glsentrynumberlist{\@glo@label}}}%
+ \ifdim\dimen@>#3\relax
+ #3=\dimen@
+ \fi
+ }%
+ {}%
+ }%
+ }%
+ }
+ \newrobustcmd*{\glsFindWidestAnyNameSymbolLocation}[3][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ #2=0pt\relax
+ #3=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ \settowidth{\dimen@}%
+ {\glsentrysymbol{\@glo@label}}%
+ \ifdim\dimen@>#2\relax
+ #2=\dimen@
+ \fi
+ \settowidth{\dimen@}%
+ {\GlsXtrFormatLocationList{\glsentrynumberlist{\@glo@label}}}%
+ \ifdim\dimen@>#3\relax
+ #3=\dimen@
+ \fi
+ }%
+ }%
+ }
+ \newrobustcmd*{\glsFindWidestUsedAnyNameLocation}[2][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ #2=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ \settowidth{\dimen@}%
+ {\GlsXtrFormatLocationList{\glsentrynumberlist{\@glo@label}}}%
+ \ifdim\dimen@>#2\relax
+ #2=\dimen@
+ \fi
+ }%
+ {}%
+ }%
+ }%
+ }
+ \newrobustcmd*{\glsFindWidestAnyNameLocation}[2][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ #2=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ \settowidth{\dimen@}%
+ {\GlsXtrFormatLocationList{\glsentrynumberlist{\@glo@label}}}%
+ \ifdim\dimen@>#2\relax
+ #2=\dimen@
+ \fi
+ }%
+ }%
+ }
+ \newcommand*{\glsxtrComputeTreeIndent}[1]{%
+ \glstreeindent=\glsxtrtreetopindent\relax
+ }
+ \newcommand*{\glsxtrComputeTreeSubIndent}[3]{%
+ \ifcsundef{@glswidestname\romannumeral#1}%
+ {%
+ \settowidth{#3}{\glstreenamefmt{\@glswidestname\space}}%
+ }%
+ {%
+ \settowidth{#3}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral#1\endcsname\space}}%
+ }%
+ }
+ \newcommand*{\glsxtrAltTreeSetHangIndent}{\hangindent\glstreeindent}
+ \newcommand*{\glsxtrAltTreeSetSubHangIndent}[1]{\hangindent\glstreeindent}
+ \renewglossarystyle{alttree}{%
+ \renewenvironment{theglossary}%
+ {%
+ \glsxtralttreeInit
+ \def\@gls@prevlevel{-1}%
+ \mbox{}\par}%
+ {\par}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \ifnum\@gls@prevlevel=0\relax
+ \else
+ \glsxtrComputeTreeIndent{##1}%
+ \fi
+ \parindent\glstreeindent
+ \glsxtrAltTreeSetHangIndent
+ \makebox[0pt][r]%
+ {%
+ \glstreenamebox{\glstreeindent}%
+ {%
+ \glsentryitem{##1}%
+ \glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ }%
+ }%
+ \glsxtralttreeSymbolDescLocation{##1}{##2}%
+ \def\@gls@prevlevel{0}%
+ }
+ \renewcommand{\subglossentry}[3]{%
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \ifnum\@gls@prevlevel=##1\relax
+ \else
+ \glsxtrComputeTreeSubIndent{##1}{##2}{\gls@tmplen}%
+ \ifnum\@gls@prevlevel<##1\relax
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+ \ifnum\@gls@prevlevel=0\relax
+ \glsxtrComputeTreeIndent{##2}%
+ \else
+ \glsxtrComputeTreeSubIndent{\@gls@prevlevel}{##2}{\glstreeindent}%
+ \fi
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+ \glsxtrAltTreeSetSubHangIndent{##1}%
+ \makebox[0pt][r]{\glstreenamebox{\gls@tmplen}{%
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}}}%
+ \glsxtralttreeSubSymbolDescLocation{##1}{##2}{##3}%
+ \def\@gls@prevlevel{##1}%
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@alttreegroup}
+{%
+ \renewglossarystyle{alttreegroup}{%
+ \setglossarystyle{alttree}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupheaderskip
+ }%
+ }%
+}%
+{%
+}
+\ifdef{\@glsstyle@alttreehypergroup}
+{%
+ \renewglossarystyle{alttreehypergroup}{%
+ \setglossarystyle{alttree}%
+ \renewcommand*{\glossaryheader}{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupheaderskip
+ }%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupheaderskip
+ }%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcolindexgroup}
+{%
+ \renewglossarystyle{mcolindexgroup}{%
+ \setglossarystyle{mcolindex}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \item\glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupheaderskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcolindexhypergroup}
+{%
+ \renewglossarystyle{mcolindexhypergroup}{%
+ \setglossarystyle{mcolindex}%
+ \renewcommand*{\glossaryheader}{%
+ \item\glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupheaderskip\@afterheading
+ }%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupheaderskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcolindexspannav}
+{%
+ \renewglossarystyle{mcolindexspannav}{%
+ \setglossarystyle{index}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]%
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\glstreeitem}%
+ {\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupheaderskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcoltreegroup}
+{%
+ \renewglossarystyle{mcoltreegroup}{%
+ \setglossarystyle{mcoltree}%
+ \renewcommand{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupheaderskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcoltreehypergroup}
+{%
+ \renewglossarystyle{mcoltreehypergroup}{%
+ \setglossarystyle{mcoltree}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupheaderskip
+ }%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupheaderskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcoltreespannav}
+{%
+ \renewglossarystyle{mcoltreespannav}{%
+ \setglossarystyle{tree}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}%
+ [\noindent\glstreenavigationfmt{\glsnavigation}]%
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupheaderskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcoltreenonamegroup}
+{%
+ \renewglossarystyle{mcoltreenonamegroup}{%
+ \setglossarystyle{mcoltreenoname}%
+ \renewcommand{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupheaderskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcoltreenonamehypergroup}
+{%
+ \renewglossarystyle{mcoltreenonamehypergroup}{%
+ \setglossarystyle{mcoltreenoname}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupheaderskip
+ }%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupheaderskip\@afterheading}%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcoltreenonamespannav}
+{%
+ \renewglossarystyle{mcoltreenonamespannav}{%
+ \setglossarystyle{treenoname}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}%
+ [\noindent\glstreenavigationfmt{\glsnavigation}]%
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupheaderskip\@afterheading}%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcolalttree}
+{%
+ \renewglossarystyle{mcolalttree}{%
+ \setglossarystyle{alttree}%
+ \renewenvironment{theglossary}%
+ {%
+ \glsxtralttreeInit
+ \def\@gls@prevlevel{-1}%
+ \begin{multicols}{\glsmcols}%
+ }%
+ {\par\end{multicols}}%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcolalttreegroup}
+{%
+ \renewglossarystyle{mcolalttreegroup}{%
+ \setglossarystyle{mcolalttree}%
+ \renewcommand{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupheaderskip
+ }%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcolalttreehypergroup}
+{%
+ \renewglossarystyle{mcolalttreehypergroup}{%
+ \setglossarystyle{mcolalttree}%
+ \renewcommand*{\glossaryheader}{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupheaderskip
+ }%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupheaderskip
+ }%
+ }
+}%
+{%
+}
+\ifdef{\@glsstyle@mcolalttreespannav}
+{%
+ \renewglossarystyle{mcolalttreespannav}{%
+ \setglossarystyle{alttree}%
+ \renewenvironment{theglossary}%
+ {%
+ \glsxtralttreeInit
+ \def\@gls@prevlevel{-1}%
+ \begin{multicols}{\glsmcols}%
+ [\noindent\glstreenavigationfmt{\glsnavigation}]%
+ }%
+ {\par\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupheaderskip
+ }%
+ }
+}%
+{%
+}
+\ifx\@glossary@default@style\relax
+\else
+ \setglossarystyle{\@glsxtr@current@style}
+\fi
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-extra-stylemods-2021-11-22.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-bookindex-2021-11-22.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v1.48 (glossary-bookindex-2021-11-22.sty)}
+% Version 1.48 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossary-bookindex}[2021/11/22 v1.48 (NLCT)]
+\RequirePackage{multicol}
+\RequirePackage{glossary-tree}
+\newcommand{\glsxtrbookindexcols}{2}
+\newcommand*{\glsxtrbookindexname}[1]{\glossentryname{#1}}
+\newcommand*{\glsxtrbookindexsubname}[1]{\glsxtrbookindexname{#1}}
+\providecommand*{\glsxtrprelocation}{\space}
+
+\newcommand*{\glsxtrbookindexprelocation}[1]{%
+ \glsxtrifhasfield{location}{#1}%
+ {,\glsxtrprelocation}%
+ {\glsxtrprelocation}%
+}
+\newcommand*{\glsxtrbookindexsubprelocation}[1]{%
+ \glsxtrbookindexprelocation{#1}%
+}
+\newcommand*{\glsxtrbookindexlocation}[2]{#2}
+\newcommand*{\glsxtrbookindexsublocation}{\glsxtrbookindexlocation}
+\newcommand{\glsxtrbookindexparentchildsep}{\nopagebreak}
+\newcommand{\glsxtrbookindexparentsubchildsep}{\glsxtrbookindexparentchildsep}
+\newcommand{\glsxtrbookindexbetween}[2]{}
+\newcommand{\glsxtrbookindexsubbetween}[2]{}
+\newcommand{\glsxtrbookindexsubsubbetween}[2]{}
+\newcommand{\glsxtrbookindexatendgroup}[1]{}
+\newcommand{\glsxtrbookindexsubatendgroup}[1]{}
+\newcommand{\glsxtrbookindexsubsubatendgroup}[1]{}
+\newcommand{\glsxtrbookindexgroupskip}{\ifglsnogroupskip\else\indexspace\fi}
+\newcommand*{\glsxtrbookindexformatheader}[1]{%
+ \par{\centering\glstreegroupheaderfmt{#1}\par}%
+}
+\ifdef\pdfbookmark
+{%
+ \newcommand*{\glsxtrbookindexbookmark}[2]{%
+ \ifdefstring{\@@glossarysec}{chapter}%
+ {\pdfbookmark[1]{#1}{#2}}%
+ {\pdfbookmark[2]{#1}{#2}}%
+ }
+}
+{%
+ \newcommand*{\glsxtrbookindexbookmark}[2]{}
+}
+\newcommand*{\glsxtrbookindexbookmarkprefix}{\currentglossary.}
+\newcommand*{\glsxtrbookindexcolspread}{}
+\newcommand*{\glsxtrbookindexmulticolsenv}{multicols}
+\newglossarystyle{bookindex}{%
+ \setglossarystyle{index}%
+ \renewenvironment{theglossary}%
+ {%
+ \ifnum\glsxtrbookindexcols>1\relax
+ \ifdefempty\glsxtrbookindexcolspread
+ {%
+ \edef\glsxtr@beginbookindex{%
+ \noexpand\begin{\glsxtrbookindexmulticolsenv}
+ {\glsxtrbookindexcols}%
+ }%
+ }%
+ {%
+ \edef\glsxtr@beginbookindex{%
+ \noexpand\begin{\glsxtrbookindexmulticolsenv}%
+ {\glsxtrbookindexcols}[\glsxtrbookindexcolspread]%
+ }%
+ }%
+ \else
+ \def\glsxtr@beginbookindex{}%
+ \fi
+ \glsxtr@beginbookindex
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\@glsxtr@bookindex@sep\glsxtrbookindexparentchildsep
+ \let\@glsxtr@bookindex@subsep\glsxtrbookindexparentsubchildsep
+ \let\@glsxtr@bookindex@between\@gobble
+ \let\@glsxtr@bookindex@subbetween\@gobble
+ \let\@glsxtr@bookindex@subsubbetween\@gobble
+ \let\@glsxtr@bookindex@atendgroup\relax
+ \let\@glsxtr@bookindex@subatendgroup\relax
+ \let\@glsxtr@bookindex@subsubatendgroup\relax
+ \let\@glsxtr@bookindexgroupskip\relax
+ }%
+ {%
+ \@glsxtr@bookindex@subsubatendgroup
+ \@glsxtr@bookindex@subatendgroup
+ \@glsxtr@bookindex@atendgroup
+ \ifnum\glsxtrbookindexcols>1\relax
+ \edef\glsxtr@endbookindex{%
+ \noexpand\end{\glsxtrbookindexmulticolsenv}%
+ }%
+ \else
+ \def\glsxtr@endbookindex{}%
+ \fi
+ \glsxtr@endbookindex
+ }%
+ \renewcommand*{\glossaryheader}{\raggedright}%
+ \renewcommand*{\glossentry}[2]{%
+ \@glsxtr@bookindex@between{##1}%
+ \let\@glsxtr@bookindex@sep\glsxtrbookindexparentchildsep
+ \let\@glsxtr@bookindex@subsep\glsxtrbookindexparentsubchildsep
+ \let\@glsxtr@bookindex@subbetween\@gobble
+ \let\@glsxtr@bookindex@subsubbetween\@gobble
+ \edef\@glsxtr@bookindex@between{%
+ \noexpand\glsxtrbookindexbetween{##1}%
+ }%
+ \edef\@glsxtr@bookindex@atendgroup{%
+ \noexpand\glsxtrbookindexatendgroup{##1}%
+ }%
+ \let\@glsxtr@bookindex@subatendgroup\relax
+ \let\@glsxtr@bookindex@subsubatendgroup\relax
+ \glstreeitem
+ \glsentryitem{##1}%
+ \glstarget{##1}{\glsxtrbookindexname{##1}}%
+ \glsxtrbookindexprelocation{##1}%
+ \glsxtrbookindexlocation{##1}{##2}%
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifcase##1\relax
+ \glstreeitem
+ \or
+ \@glsxtr@bookindex@sep
+ \@glsxtr@bookindex@subbetween{##2}%
+ \let\@glsxtr@bookindex@sep\relax
+ \let\@glsxtr@bookindex@subsubbetween\@gobble
+ \let\@glsxtr@bookindex@subsep\glsxtrbookindexparentsubchildsep
+ \edef\@glsxtr@bookindex@subbetween{%
+ \noexpand\glsxtrbookindexsubbetween{##2}%
+ }%
+ \edef\@glsxtr@bookindex@atsubendgroup{%
+ \noexpand\glsxtrbookindexatsubendgroup{##1}%
+ }%
+ \glstreesubitem
+ \glssubentryitem{##2}%
+ \else
+ \@glsxtr@bookindex@subsep
+ \@glsxtr@bookindex@subsubbetween{##2}%
+ \let\@glsxtr@bookindex@subsep\relax
+ \edef\@glsxtr@bookindex@subsubbetween{%
+ \noexpand\glsxtrbookindexsubsubbetween{##2}%
+ }%
+ \edef\@glsxtr@bookindex@atsubsubendgroup{%
+ \noexpand\glsxtrbookindexatsubsubendgroup{##1}%
+ }%
+ \glstreesubsubitem
+ \fi
+ \glstarget{##2}{\glsxtrbookindexsubname{##2}}%
+ \glsxtrbookindexsubprelocation{##2}%
+ \glsxtrbookindexsublocation{##2}{##3}%
+ }%
+ \renewcommand*{\glsgroupskip}{}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \@glsxtr@bookindex@subsubatendgroup
+ \@glsxtr@bookindex@subatendgroup
+ \@glsxtr@bookindex@atendgroup
+ \@glsxtr@bookindexgroupskip
+ \let\@glsxtr@bookindexgroupskip\glsxtrbookindexgroupskip
+ \let\@glsxtr@bookindex@between\@gobble
+ \let\@glsxtr@bookindex@atendgroup\relax
+ \let\@glsxtr@bookindex@subatendgroup\relax
+ \let\@glsxtr@bookindex@subsubatendgroup\relax
+ \glsxtrgetgrouptitle{##1}{\glsxtrcurrentgrptitle}%
+ \glsxtrbookindexbookmark{\glsxtrcurrentgrptitle}{\glsxtrbookindexbookmarkprefix##1}%
+ \glsxtrbookindexformatheader{\glsxtrcurrentgrptitle}%
+ \nopagebreak\indexspace\nopagebreak\@afterheading
+ }%
+}
+\newcommand{\glsxtrbookindexthepage}{%
+ \ifdef\currentglossary{\currentglossary.\arabic{page}}{\arabic{page}}%
+}
+\newcommand*{\glsxtrbookindexmarkentry}[1]{%
+ \protected@write\@auxout
+ {\let\glsxtrbookindexthepage\relax}%
+ {\string\glsxtr@setbookindexmark{\glsxtrbookindexthepage}{#1}}%
+}
+\newcommand*{\glsxtr@setbookindexmark}[2]{%
+ \ifcsundef{glsxtr@idxfirstmark@#1}%
+ {\csgdef{glsxtr@idxfirstmark@#1}{#2}}%
+ {}%
+ \csgdef{glsxtr@idxlastmark@#1}{#2}%
+}
+\newcommand*{\glsxtrbookindexfirstmarkfmt}[1]{%
+ \glsentryname{#1}%
+}
+\newcommand*{\glsxtrbookindexfirstmark}{%
+ \letcs{\glsxtr@label}{glsxtr@idxfirstmark@\glsxtrbookindexthepage}%
+ \ifdef\glsxtr@label
+ {\glsxtrbookindexfirstmarkfmt{\glsxtr@label}}%
+ {}%
+}
+\newcommand*{\glsxtrbookindexlastmarkfmt}[1]{%
+ \glsentryname{#1}%
+}
+\newcommand*{\glsxtrbookindexlastmark}{%
+ \letcs{\glsxtr@label}{glsxtr@idxlastmark@\glsxtrbookindexthepage}%
+ \ifdef\glsxtr@label
+ {\glsxtrbookindexlastmarkfmt{\glsxtr@label}}%
+ {}%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-bookindex-2021-11-22.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-longextra-2021-11-22.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v1.48 (glossary-longextra-2021-11-22.sty)}
+% Version 1.48 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossary-longextra}[2021/11/22 v1.48 (NLCT)]
+\RequirePackage{glossary-longbooktabs}
+\newcommand{\glslongextraNameFmt}[1]{%
+ \glsentryitem{#1}\glstarget{#1}{\glossentryname{#1}}%
+}
+\newcommand{\glslongextraDescFmt}[1]{%
+ \glossentrydesc{#1}\glspostdescription
+}
+\newcommand{\glslongextraSymbolFmt}[1]{\glossentrysymbol{#1}}
+\newcommand{\glslongextraLocationFmt}[2]{#2}
+\newcommand{\glslongextraSubNameFmt}[2]{%
+ \glssubentryitem{#2}\glstarget{#2}{\strut}%
+}
+\newcommand{\glslongextraSubDescFmt}[2]{%
+ \glslongextraDescFmt{#2}%
+}
+\newcommand{\glslongextraSubSymbolFmt}[2]{%
+ \glslongextraSymbolFmt{#2}%
+}
+\newcommand{\glslongextraSubLocationFmt}[3]{#3}
+\newcommand{\glslongextraNameAlign}{l}
+\newcommand{\glslongextraDescAlign}{>{\raggedright}p{\glsdescwidth}}
+\newcommand{\glslongextraSymbolAlign}{c}
+\newcommand{\glslongextraLocationAlign}{>{\raggedright}p{\glspagelistwidth}}
+\newcommand{\glslongextraGroupHeading}[2]{}
+\newcommand{\glslongextraHeaderFmt}[1]{\textbf{#1}}
+\newcommand{\glslongextraNameDescHeader}{%
+ \glslongextraNameDescTabularHeader\endhead
+ \glslongextraNameDescTabularFooter\endfoot
+}
+\newcommand{\glslongextraNameDescTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\entryname &
+ \glslongextraHeaderFmt\descriptionname\tabularnewline
+ \midrule
+}
+\newcommand{\glslongextraNameDescTabularFooter}{%
+ \bottomrule
+}
+\newcommand*{\glslongextraSetWidest}[1]{%
+ \def\@glslongextrawidestname{#1}%
+}
+\newcommand*{\@glslongextrawidestname}{\csuse{@glswidestname}}
+\newcommand*{\glslongextraUpdateWidest}[1]{%
+ \ifundef\@glslongextrawidestname
+ {\def\@glslongextrawidestname{#1}}%
+ {%
+ \settowidth{\dimen@}{\@glslongextrawidestname}%
+ \settowidth{\dimen@ii}{#1}%
+ \ifdim\dimen@ii>\dimen@
+ \def\@glslongextrawidestname{#1}%
+ \fi
+ }%
+}
+\newcommand*{\glslongextraUpdateWidestChild}[2]{}
+\newcommand{\glslongextraSetDescWidth}{%
+ \settowidth{\gls@tmplen}{\glslongextraHeaderFmt\entryname}%
+ \settowidth{\dimen@}{\glsnamefont{\@glslongextrawidestname}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \fi
+ \setlength{\glsdescwidth}{\dimexpr\linewidth-4\tabcolsep-\gls@tmplen}%
+}
+\newcommand{\glslongextraSymSetDescWidth}{%
+ \glslongextraSetDescWidth
+ \settowidth{\gls@tmplen}{\glslongextraHeaderFmt\symbolname}%
+ \setlength{\glsdescwidth}{\dimexpr\glsdescwidth-2\tabcolsep-\gls@tmplen}%
+}
+\newcommand{\glslongextraLocSetDescWidth}{%
+ \glslongextraSetDescWidth
+ \setlength{\glsdescwidth}{\dimexpr\glsdescwidth-2\tabcolsep-\glspagelistwidth}%
+}
+\newcommand{\glslongextraSymLocSetDescWidth}{%
+ \glslongextraSymSetDescWidth
+ \setlength{\glsdescwidth}{\dimexpr\glsdescwidth-2\tabcolsep-\glspagelistwidth}%
+}
+\newif\ifGlsLongExtraUseTabular
+\GlsLongExtraUseTabularfalse
+\newcommand*{\glslongextraTabularVAlign}{c}
+\newglossarystyle{long-name-desc}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign}}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraNameDescTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign}}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{2}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraNameFmt{##1} &
+ \glslongextraDescFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubNameFmt{##1}{##2}
+ &
+ \glslongextraSubDescFmt{##1}{##2}%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newcommand{\glslongextraNameDescLocationHeader}{%
+ \glslongextraNameDescLocationTabularHeader\endhead
+ \glslongextraNameDescLocationTabularFooter\endfoot
+}
+\newcommand{\glslongextraNameDescLocationTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\entryname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\pagelistname\tabularnewline
+ \midrule
+}
+\newcommand{\glslongextraNameDescLocationTabularFooter}{%
+ \bottomrule
+}
+\newglossarystyle{long-name-desc-loc}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraLocationAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraNameDescLocationTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescLocationTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraLocationAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescLocationHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraNameFmt{##1} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraLocationFmt{##1}{##2}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubNameFmt{##1}{##2}&
+ \glslongextraSubDescFmt{##1}{##2}&
+ \glslongextraSubLocationFmt{##1}{##2}{##3}%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newcommand{\glslongextraDescNameHeader}{%
+ \glslongextraDescNameTabularHeader\endhead
+ \glslongextraDescNameTabularFooter\endfoot
+}
+\newcommand{\glslongextraDescNameTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\descriptionname&
+ \glslongextraHeaderFmt\entryname \tabularnewline
+ \midrule
+}
+\newcommand{\glslongextraDescNameTabularFooter}{%
+ \bottomrule
+}
+\newglossarystyle{long-desc-name}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign}}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraDescNameTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraDescNameTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign}}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraDescNameHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{2}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraDescFmt{##1} &
+ \glslongextraNameFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubNameFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newcommand{\glslongextraLocationDescNameHeader}{%
+ \glslongextraLocationDescNameTabularHeader\endhead
+ \glslongextraLocationDescNameTabularFooter\endfoot
+}
+\newcommand{\glslongextraLocationDescNameTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\pagelistname&
+ \glslongextraHeaderFmt\descriptionname&
+ \glslongextraHeaderFmt\entryname \tabularnewline
+ \midrule
+}
+\newcommand{\glslongextraLocationDescNameTabularFooter}{%
+ \bottomrule
+}
+\newglossarystyle{long-loc-desc-name}%
+{%
+ \ifGlsLongExtraUseTabular
+ {%
+ \glslongextraLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraLocationAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign}}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraLocationDescNameTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraLocationDescNameTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraLocationAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign}}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraLocationDescNameHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraLocationFmt{##1}{##2} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraNameFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubLocationFmt{##1}{##2}{##3} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubNameFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newcommand{\glslongextraNameDescSymHeader}{%
+ \glslongextraNameDescSymTabularHeader\endhead
+ \glslongextraNameDescSymTabularFooter\endfoot
+}
+\newcommand{\glslongextraNameDescSymTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\entryname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\symbolname\tabularnewline
+ \midrule
+}
+\newcommand{\glslongextraNameDescSymTabularFooter}{%
+ \bottomrule
+}
+\newglossarystyle{long-name-desc-sym}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraNameDescSymTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescSymTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescSymHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraNameFmt{##1} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraSymbolFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubNameFmt{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubSymbolFmt{##1}{##2}%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newcommand{\glslongextraNameDescSymLocationHeader}{%
+ \glslongextraNameDescSymLocationTabularHeader\endhead
+ \glslongextraNameDescSymLocationTabularFooter\endfoot
+}
+\newcommand{\glslongextraNameDescSymLocationTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\entryname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\pagelistname\tabularnewline
+ \midrule
+}
+\newcommand{\glslongextraNameDescSymLocationTabularFooter}{%
+ \bottomrule
+}
+\newglossarystyle{long-name-desc-sym-loc}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraLocationAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraNameDescSymLocationTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescSymLocationTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraLocationAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescSymLocationHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraNameFmt{##1} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraSymbolFmt{##1}&
+ \glslongextraLocationFmt{##1}{##2}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubNameFmt{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubSymbolFmt{##1}{##2}&
+ \glslongextraSubLocationFmt{##1}{##2}{##3}%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newcommand{\glslongextraNameSymDescHeader}{%
+ \glslongextraNameSymDescTabularHeader\endhead
+ \glslongextraNameSymDescTabularFooter\endfoot
+}
+\newcommand{\glslongextraNameSymDescTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\entryname &
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\descriptionname\tabularnewline
+ \midrule
+}
+\newcommand{\glslongextraNameSymDescTabularFooter}{%
+ \bottomrule
+}
+\newglossarystyle{long-name-sym-desc}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraNameSymDescTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraNameSymDescTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraNameSymDescHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraNameFmt{##1} &
+ \glslongextraSymbolFmt{##1} &
+ \glslongextraDescFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubNameFmt{##1}{##2} &
+ \glslongextraSubSymbolFmt{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newcommand{\glslongextraNameSymDescLocationHeader}{%
+ \glslongextraNameSymDescLocationTabularHeader\endhead
+ \glslongextraNameSymDescLocationTabularFooter\endfoot
+}
+\newcommand{\glslongextraNameSymDescLocationTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\entryname &
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\pagelistname\tabularnewline
+ \midrule
+}
+\newcommand{\glslongextraNameSymDescLocationTabularFooter}{%
+ \bottomrule
+}
+\newglossarystyle{long-name-sym-desc-loc}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraLocationAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraNameSymDescLocationTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraNameSymDescLocationTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraLocationAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraNameSymDescLocationHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraNameFmt{##1} &
+ \glslongextraSymbolFmt{##1} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraLocationFmt{##1}{##2}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubNameFmt{##1}{##2} &
+ \glslongextraSubSymbolFmt{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubLocationFmt{##1}{##2}{##3}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newcommand{\glslongextraSymDescNameHeader}{%
+ \glslongextraSymDescNameTabularHeader\endhead
+ \glslongextraSymDescNameTabularFooter\endfoot
+}
+\newcommand{\glslongextraSymDescNameTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\entryname\tabularnewline
+ \midrule
+}
+\newcommand{\glslongextraSymDescNameTabularFooter}{%
+ \bottomrule
+}
+\newglossarystyle{long-sym-desc-name}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraSymDescNameTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraSymDescNameTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraSymDescNameHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraSymbolFmt{##1} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraNameFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubSymbolFmt{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubNameFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newcommand{\glslongextraLocationSymDescNameHeader}{%
+ \glslongextraLocationSymDescNameTabularHeader\endhead
+ \glslongextraLocationSymDescNameTabularFooter\endfoot
+}
+\newcommand{\glslongextraLocationSymDescNameTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\pagelistname &
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\entryname\tabularnewline
+ \midrule
+}
+\newcommand{\glslongextraLocationSymDescNameTabularFooter}{%
+ \bottomrule
+}
+\newglossarystyle{long-loc-sym-desc-name}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraLocationAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraLocationSymDescNameTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraLocationSymDescNameTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraLocationAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraLocationSymDescNameHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraLocationFmt{##1}{##2} &
+ \glslongextraSymbolFmt{##1} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraNameFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubLocationFmt{##1}{##2}{##3} &
+ \glslongextraSubSymbolFmt{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubNameFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newcommand{\glslongextraDescSymNameHeader}{%
+ \glslongextraDescSymNameTabularHeader\endhead
+ \glslongextraDescSymNameTabularFooter\endfoot
+}
+\newcommand{\glslongextraDescSymNameTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\entryname\tabularnewline
+ \midrule
+}
+\newcommand{\glslongextraDescSymNameTabularFooter}{%
+ \bottomrule
+}
+\newglossarystyle{long-desc-sym-name}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraDescSymNameTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraDescSymNameTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraDescSymNameHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraDescFmt{##1} &
+ \glslongextraSymbolFmt{##1} &
+ \glslongextraNameFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubSymbolFmt{##1}{##2} &
+ \glslongextraSubNameFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newcommand{\glslongextraLocationDescSymNameHeader}{%
+ \glslongextraLocationDescSymNameTabularHeader\endhead
+ \glslongextraLocationDescSymNameTabularFooter\endfoot
+}
+\newcommand{\glslongextraLocationDescSymNameTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\pagelistname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\entryname\tabularnewline
+ \midrule
+}
+\newcommand{\glslongextraLocationDescSymNameTabularFooter}{%
+ \bottomrule
+}
+\newglossarystyle{long-loc-desc-sym-name}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraLocationAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraLocationDescSymNameTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraLocationDescSymNameTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraLocationAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraLocationDescSymNameHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraLocationFmt{##1}{##2} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraSymbolFmt{##1} &
+ \glslongextraNameFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubLocationFmt{##1}{##2}{##3} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubSymbolFmt{##1}{##2} &
+ \glslongextraSubNameFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-longextra-2021-11-22.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-topic-2021-11-22.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v1.48 (glossary-topic-2021-11-22.sty)}
+% Version 1.48 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossary-topic}[2021/11/22 v1.48 (NLCT)]
+\RequirePackage{multicol}
+\newglossarystyle{topic}{%
+ \renewenvironment{theglossary}%
+ {%
+ \glstopicInit
+ \def\glstopic@prechildren{}%
+ \def\glstopic@prevlevel{-1}%
+ }%
+ {\par}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \def\glstopic@prevlevel{-1}%
+ \glstopicGroupHeading{##1}%
+ }%
+ \renewcommand{\glossentry}[2]{%
+ \hangindent0pt\relax
+ \parindent\glstopicParIndent\relax
+ \glstopicItem{##1}{##2}%
+ \ifglshasdesc{##1}%
+ {%
+ \def\glstopic@prechildren{}%
+ }%
+ {%
+ \def\glstopic@prechildren{\nopagebreak}%
+ }%
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifnum\glstopic@prevlevel=0\relax\glstopic@prechildren\fi
+ \def\glstopic@prevlevel{##1}%
+ \begingroup
+ \glstopicAssignSubIndent{##1}%
+ \glstopicSubItem{##1}{##2}{##3}%
+ \par
+ \endgroup
+ }%
+ \renewcommand*{\glsgroupskip}{}%
+}
+\newcommand*{\glstopicGroupHeading}[1]{}
+\newcommand*{\glstopicItem}[2]{%
+ \glspar\glstopicPreSkip\glspar\noindent
+ \glstopicMarker{#1}%
+ \glstopicTitleFont
+ {%
+ \glsentryitem{#1}\glstarget{#1}{\glstopicTitle{#1}}%
+ }%
+ \ifglshasdesc{#1}%
+ {\glspar\nobreak\glstopicMidSkip\glspar\nobreak
+ \@afterheading\glstopicDesc{#1}\glspar\glstopicPostSkip}%
+ {\glspar\nobreak\glstopicPostSkip}%
+ \glstopicLoc{#1}{#2}%
+}
+\newcommand*{\glstopicMarker}[1]{}
+\newcommand*{\glstopicTitle}[1]{\Glossentryname{#1}%
+ \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}%
+}
+\newcommand*{\glstopicTitleFont}[1]{\textbf{\large #1}}
+\newcommand*{\glstopicDesc}[1]{\Glossentrydesc{#1}\glspostdescription}
+\newcommand*{\glstopicLoc}[2]{}
+\newlength\glstopicParIndent
+\setlength\glstopicParIndent{20pt}
+\newlength\glstopicSubIndent
+\setlength\glstopicSubIndent{20pt}
+\newcommand{\glstopicInit}{}
+\newcommand*{\glstopicAssignSubIndent}[1]{%
+ \par
+ \parindent\dimexpr#1\glstopicSubIndent-\glstopicSubIndent\relax
+ \glstopicAssignWidest{#1}%
+ \glstopicsubitemhangindent=\dimexpr\parindent+\glstopicwidest\relax
+ \hangindent\glstopicsubitemhangindent\relax
+ \everypar{\hangindent\glstopicsubitemhangindent\relax
+ \parindent\dimexpr\glstopicSubItemParIndent+\glstopicsubitemhangindent\relax}%
+}
+\newlength\glstopicsubitemhangindent
+\newlength\glstopicSubItemParIndent
+\glstopicSubItemParIndent\parindent
+\newlength\glstopicwidest
+\newcommand*{\glstopicAssignWidest}[1]{%
+ \ifcsundef{@glswidestlength\romannumeral#1}%
+ {%
+ \ifcsdef{@glswidestname\romannumeral#1}%
+ {%
+ \settowidth{\glstopicwidest}{%
+ \glstopicSubNameFont{\csuse{@glswidestname\romannumeral#1}}%
+ \glstopicSubItemSep
+ }%
+ }%
+ {\setlength{\glstopicwidest}{0pt}}%
+ \csedef{@glswidestlength\romannumeral#1}{\the\glstopicwidest}%
+ }%
+ {\setlength{\glstopicwidest}{\csuse{@glswidestlength\romannumeral#1}}}%
+}
+\newcommand*{\glstopicPreSkip}{\medskip}
+\newcommand*{\glstopicMidSkip}{\smallskip}
+\newcommand*{\glstopicPostSkip}{\smallskip}
+\newcommand*{\glstopicSubItem}[3]{%
+ \glstopicSubItemBox{#1}{\glstopicSubNameFont{\glsentryitem{#2}%
+ \glstarget{#2}{\glossentryname{#2}}}%
+ \glstopicSubItemSep
+ }%
+ \ifglshassymbol{#2}{(\glossentrysymbol{#2})\space}{}%
+ \ifglshasdesc{#2}%
+ {\glossentrydesc{#2}\glspostdescription\glstopicSubPreLocSep}{}%
+ \glstopicSubLoc{#2}{#3}%
+}
+\newcommand*{\glstopicSubItemSep}{\quad}
+\newcommand*{\glstopicSubItemBox}[2]{%
+ \ifdim\glstopicwidest>0pt\relax\makebox[\glstopicwidest][l]{#2}\else#2\fi
+}
+\newcommand*{\glstopicSubNameFont}[1]{\textbf{#1}}
+\newcommand*{\glstopicSubPreLocSep}{\space}
+\newcommand*{\glstopicSubLoc}[2]{#2}
+\newcommand*{\glstopicCols}{2}
+\newcommand*{\glstopicColsEnv}{multicols}
+\newglossarystyle{topicmcols}{%
+ \renewenvironment{theglossary}%
+ {%
+ \glstopicInit
+ \def\glstopic@prechildren{}%
+ \def\glstopic@postchildren{}%
+ \def\glstopic@prevlevel{-1}%
+ }%
+ {%
+ \ifnum\glstopic@prevlevel>0\relax\glstopic@postchildren\fi
+ \par
+ }%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \ifnum\glstopic@prevlevel>0\relax\glstopic@postchildren\fi
+ \def\glstopic@prevlevel{-1}%
+ \glstopicGroupHeading{##1}%
+ }%
+ \renewcommand{\glossentry}[2]{%
+ \ifnum\glstopic@prevlevel>0\relax\glstopic@postchildren\fi
+ \def\glstopic@prevlevel{0}%
+ \hangindent0pt\relax
+ \parindent\glstopicParIndent\relax
+ \glstopicItem{##1}{##2}%
+ \ifnum\glstopicCols>1\relax
+ \ifglshasdesc{##1}%
+ {%
+ \edef\glstopic@prechildren{%
+ \noexpand\begin{\glstopicColsEnv}{\glstopicCols}%
+ }%
+ }%
+ {%
+ \edef\glstopic@prechildren{%
+ \noexpand\nopagebreak
+ \noexpand\begin{\glstopicColsEnv}{\glstopicCols}%
+ }%
+ }%
+ \edef\glstopic@postchildren{\noexpand\end{\glstopicColsEnv}}%
+ \fi
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifnum\glstopic@prevlevel=0\relax\glstopic@prechildren\fi
+ \def\glstopic@prevlevel{##1}%
+ \glstopicAssignSubIndent{##1}%
+ \glstopicSubItem{##1}{##2}{##3}%
+ }%
+ \renewcommand*{\glsgroupskip}{}%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-topic-2021-11-22.sty>
+% \end{macrocode}
+%\fi
%\Finale
\endinput