summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-01-26 22:52:39 +0000
committerKarl Berry <karl@freefriends.org>2016-01-26 22:52:39 +0000
commit8d88e6714a570bf2b598132718ae2beb4641c80b (patch)
tree6d627fdd2263e73984a523aeaacd6b0aca1c358e /Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty
parent9b9abe02f86c766295512f6699dac2b40de6968c (diff)
glossaries-extra (24jan15)
git-svn-id: svn://tug.org/texlive/trunk@39487 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty')
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty4853
1 files changed, 4853 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty
new file mode 100644
index 00000000000..fc0517ef5de
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty
@@ -0,0 +1,4853 @@
+%%
+%% This is file `glossaries-extra.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% glossaries-extra.dtx (with options: `glossaries-extra.sty,package')
+%%
+%% glossaries-extra.dtx
+%% Copyright 2016 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license of (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files glossaries-extra.dtx and glossaries-extra.ins and the derived file glossaries-extra.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-extra}[2016/01/24 v1.0 (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}{}
+\define@choicekey{glossaries-extra.sty}{undefaction}[\val\nr]%
+ {warn,error}%
+ {%
+ \ifcase\nr\relax
+ \renewcommand*{\glsxtrundefaction}[2]{%
+ \@glsxtrundeftag\GlossariesExtraWarning{##1}%
+ }%
+ \renewcommand*{\glsxtr@warnonexistsordo}[1]{%
+ \GlossariesExtraWarning{glossaries-extra}{%
+ \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.)}%
+ }%
+ \or
+ \renewcommand*{\glsxtrundefaction}[2]{%
+ \@glsxtrundeftag\PackageError{glossaries-extra}{##1}{##2}%
+ }%
+ \renewcommand*{\glsxtr@warnonexistsordo}[1]{}%
+ \fi
+ }
+\define@boolkey{glossaries-extra.sty}[@glsxtr]{docdef}[true]{}
+\define@boolkey{glossaries-extra.sty}[@glsxtr]{indexcrossrefs}[true]{%
+ \if@glsxtrindexcrossrefs
+ \else
+ \renewcommand*{\@glsxtr@autoindexcrossrefs}{}%
+ \fi
+}
+\@glsxtrindexcrossrefsfalse
+\newcommand*{\@glsxtr@autoindexcrossrefs}{\@glsxtrindexcrossrefstrue}
+\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*{\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}%
+ \newcommand*{\newabbr}{\newabbreviation}%
+ \let\GlsXtrDefineAbbreviationShortcuts\relax
+}
+\newcommand*{\GlsXtrDefineOtherShortcuts}{%
+ \newcommand*{\newentry}{\newglossaryentry}%
+ \ifdef\printsymbols
+ {%
+ \newcommand*{\newsym}{\glsxtrnewsymbol}%
+ }{}%
+ \ifdef\printnumbers
+ {%
+ \newcommand*{\newnum}{\glsxtrnewnumber}%
+ }{}%
+ \let\GlsXtrDefineOtherShortcuts\relax
+}
+\newcommand*{\@glsxtr@setupshortcuts}{}
+\define@choicekey{glossaries-extra.sty}{shortcuts}[\val\nr]%
+ {acronyms,acro,abbreviations,abbr,other,all,true,none,false}[true]{%
+ \ifcase\nr\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
+ \DefineAcronymSynonyms
+ \GlsXtrDefineAbbreviationShortcuts
+ \GlsXtrDefineOtherShortcuts
+ }%
+ \or % true
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+ \DefineAcronymSynonyms
+ \GlsXtrDefineAbbreviationShortcuts
+ \GlsXtrDefineOtherShortcuts
+ }%
+ \else % none, false
+ \renewcommand*{\@glsxtr@setupshortcuts}{}%
+ \fi
+ }
+\newcommand*{\@glsxtr@doaccsupp}{}
+\@glsxtr@declareoption{accsupp}{%
+ \renewcommand*{\@glsxtr@doaccsupp}{\RequirePackage{glossaries-accsupp}}}
+\newcommand{\glsxtrNoGlossaryWarning}[1]{%
+ \@glsxtr@defaultnoglossarywarning{#1}%
+}
+\define@choicekey{glossaries-extra.sty}{nomissingglstext}[\val\nr]%
+ {true,false}[true]{%
+ \ifcase\nr\relax % true
+ \renewcommand{\glsxtrNoGlossaryWarning}[1]{%
+ \null
+ }%
+ \else % false
+ \renewcommand{\glsxtrNoGlossaryWarning}[1]{%
+ \@glsxtr@defaultnoglossarywarning{#1}%
+ }%
+ \fi
+ }
+\DeclareOptionX*{%
+ \expandafter\glsxtr@dooption\expandafter{\CurrentOption}}
+\ProcessOptionsX
+\RequirePackage{glossaries}
+\@glsxtr@doaccsupp
+\@glsxtr@abbreviationsdef
+\let\@glsxtr@abbreviationsdef\relax
+\@glsxtr@setupshortcuts
+\renewcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}%
+\newcommand*{\glossariesextrasetup}[1]{%
+ \let\@glsxtr@setupshortcuts\relax
+ \setkeys{glossaries-extra.sty}{#1}%
+ \@glsxtr@abbreviationsdef
+ \let\@glsxtr@abbreviationsdef\relax
+ \@glsxtr@setupshortcuts
+}
+\AtBeginDocument{%
+ \disable@keys{glossaries-extra.sty}{abbreviations}%
+ \def\@glsxtrundeftag{\glsxtrundeftag}%
+}
+\newcommand{\glsxtrifemptyglossary}[3]{%
+ \ifglossaryexists{#1}%
+ {%
+ \ifcsstring{glolist@#1}{,}{#2}{#3}%
+ }%
+ {%
+ \glsxtrundefaction{Glossary type `#1' doesn't exist}{}%
+ #2%
+ }%
+}
+\renewcommand{\glsdoifexists}[2]{%
+ \ifglsentryexists{#1}{#2}%
+ {%
+ \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}'
+ 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}%
+ \@glsxtr@autoindexcrossrefs
+ }%
+}
+\appto\@gls@keymap{,{see}{see}}
+\AtEndDocument{\if@glsxtrindexcrossrefs\glsxtraddallcrossrefs\fi}
+\newcommand*{\glsxtraddallcrossrefs}{%
+ \forallglossaries{\@glo@type}%
+ {%
+ \forglsentries[\@glo@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}{\@glsxtr@addunusedxrefs{\@glo@label}}{}%
+ }%
+ }%
+}
+\newcommand*{\@glsxtr@addunusedxrefs}[1]{%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@see}%
+ \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
+ {%
+ \ifglsused{\@glsxtr@label}{}%
+ {%
+ \glsadd[format=glsxtrunusedformat]{\@glsxtr@label}%
+ \glsunset{\@glsxtr@label}%
+ \@glsxtr@addunusedxrefs{\@glsxtr@label}%
+ }%
+ }%
+}
+\newcommand*{\glsxtrunusedformat}[1]{\unskip}
+\let\glsxtr@orgmakenoidxglossaries\makenoidxglossaries
+\renewcommand{\makenoidxglossaries}{%
+ \glsxtr@orgmakenoidxglossaries
+ \@glsxtrdocdeffalse
+ \disable@keys{glossaries-extra.sty}{docdef}%
+}
+\renewcommand*{\gls@defdocnewglossaryentry}{%
+ \if@glsxtrdocdef
+ \let\gls@checkseeallowed\relax
+ \let\newglossaryentry\new@glossaryentry
+ \else
+ \renewcommand*{\newglossaryentry}[2]{%
+ \PackageError{glossaries-extra}{Glossary entries must
+ be \MessageBreak defined in the preamble with \MessageBreak
+ package option `docdef=false'}{Move your glossary definitions to
+ the preamble. You can also put them in a \MessageBreak separate file
+ and load them with \string\loadglsentries.}%
+ }%
+ \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}%
+ }
+ \let\@glsxtr@orgprintglossary\@printglossary
+ \renewcommand\@printglossary[2]{%
+ \@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
+\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]{%
+ \GlsXtrFormatLocationList{#1}\gls@save@numberlist{#1}}%
+ \else
+ \glsnonumberlisttrue
+ \renewcommand*{\glossaryentrynumbers}[1]{\gls@save@numberlist{#1}}%
+ \fi
+\newcommand*{\GlsXtrFormatLocationList}[1]{#1}
+\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{%
+ \GlsXtrFormatLocationList{##1}%
+ \gls@save@numberlist{##1}}%
+ \fi
+ }%
+}
+\renewcommand*{\glsentryfmt}{%
+ \ifglshasshort{\glslabel}{\glssetabbrvfmt{\glscategory{\glslabel}}}{}%
+ \glsifregular{\glslabel}%
+ {\glsgenentryfmt}%
+ {\ifglshasshort{\glslabel}{\glsxtrgenabbrvfmt}{\glsgenentryfmt}}%
+}
+\renewcommand{\@gls@field@link}[4][]{%
+ \glsdoifexists{#3}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glscustomtext{#4}%
+ \@glsxtr@field@linkdefs
+ #1%
+ \@gls@link[#2]{#3}{#4}%
+ }%
+ \glspostlinkhook
+}
+\newcommand*{\@glsxtr@field@linkdefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+}
+\def\@GLStext@#1#2[#3]{%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]{#1}{#2}%
+ {\mfirstucMakeUppercase{\glsentrytext{#2}#3}}%
+}
+\def\@Glstext@#1#2[#3]{%
+ \@gls@field@link[\let\glscapscase\@secondofthree]{#1}{#2}%
+ {\Glsentrytext{#2}#3}%
+}
+\def\@glsfirst@#1#2[#3]{%
+ \@gls@field@link[\let\glsxtrifwasfirstuse\@firstoftwo]{#1}{#2}%
+ {\glsentryfirst{#2}#3}%
+}
+\def\@Glsfirst@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glscapscase\@secondofthree
+ ]%
+ {#1}{#2}{\Glsentryfirst{#2}#3}%
+}
+\def\@GLSfirst@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ ]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentryfirst{#2}#3}}%
+}
+\def\@glsplural#1#2[#3]{%
+ \@gls@field@link[\let\glsifplural\@firstoftwo]{#1}{#2}%
+ {\glsentryplural{#2}#3}%
+}
+\def\@Glsplural#1#2[#3]{%
+ \@gls@field@link
+ [\let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ ]%
+ {#1}{#2}{\Glsentryplural{#2}#3}%
+}
+\def\@GLSplural#1#2[#3]{%
+ \@gls@field@link
+ [\let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ ]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentryplural{#2}#3}}%
+}
+\def\@glsfirstplural@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glsifplural\@firstoftwo
+ ]%
+ {#1}{#2}{\glsentryfirstplural{#2}#3}%
+}
+\def\@glsfirstplural@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ ]%
+ {#1}{#2}{\Glsentryfirstplural{#2}#3}%
+}
+\def\@glsfirstplural@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ ]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentryfirstplural{#2}#3}}%
+}
+\def\@Glsname@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}{\Glsentryname{#2}#3}%
+}
+\def\@GLSname@#1#2[#3]{%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentryname{#2}#3}}%
+}
+\def\@Glsdesc@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}{\Glsentrydesc{#2}#3}%
+}
+\def\@GLSdesc@#1#2[#3]{%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentrydesc{#2}#3}}%
+}
+\def\@glsdescplural@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ ]{#1}{#2}{\glsentrydescplural{#2}#3}%
+}
+\def\@Glsdescplural@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ ]{#1}{#2}{\Glsentrydescplural{#2}#3}%
+}
+\def\@GLSdesc@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@thirdoftwo
+ \let\glsifplural\@firstoftwo
+ ]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentrydescplural{#2}#3}}%
+}
+\def\@Glssymbol@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}{\Glsentrysymbol{#2}#3}%
+}
+\def\@GLSsymbol@#1#2[#3]{%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentrysymbol{#2}#3}}%
+}
+\def\@glssymbolplural@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ ]{#1}{#2}{\glsentrysymbolplural{#2}#3}%
+}
+\def\@Glssymbolplural@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ ]{#1}{#2}{\Glsentrysymbolplural{#2}#3}%
+}
+\def\@GLSsymbol@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@thirdoftwo
+ \let\glsifplural\@firstoftwo
+ ]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentrysymbolplural{#2}#3}}%
+}
+\def\@Glsuseri@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}{\Glsentryuseri{#2}#3}%
+}
+\def\@GLSuseri@#1#2[#3]{%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentryuseri{#2}#3}}%
+}
+\def\@Glsuserii@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}{\Glsentryuserii{#2}#3}%
+}
+\def\@GLSuserii@#1#2[#3]{%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentryuserii{#2}#3}}%
+}
+\def\@Glsuseriii@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}{\Glsentryuseriii{#2}#3}%
+}
+\def\@GLSuseriii@#1#2[#3]{%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentryuseriii{#2}#3}}%
+}
+\def\@Glsuseriv@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}{\Glsentryuseriv{#2}#3}%
+}
+\def\@GLSuseriv@#1#2[#3]{%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentryuseriv{#2}#3}}%
+}
+\def\@Glsuserv@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}{\Glsentryuserv{#2}#3}%
+}
+\def\@GLSuserv@#1#2[#3]{%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentryuserv{#2}#3}}%
+}
+\def\@Glsuservi@#1#2[#3]{%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}{\Glsentryuservi{#2}#3}%
+}
+\def\@GLSuservi@#1#2[#3]{%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\mfirstucMakeUppercase{\glsentryuservi{#2}#3}}%
+}
+\def\@acrshort#1#2[#3]{%
+ \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]{%
+ \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]{%
+ \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]{%
+ \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]{%
+ \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]{%
+ \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]{%
+ \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]{%
+ \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]{%
+ \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]{%
+ \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]{%
+ \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]{%
+ \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
+}
+\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}%
+ \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
+\ifdef\@gls@setdefault@glslink@opts
+{
+ \renewcommand*{\@gls@setdefault@glslink@opts}{%
+ \KV@glslink@noindexfalse
+ }
+}
+{
+ \newcommand*{\@gls@setdefault@glslink@opts}{%
+ \KV@glslink@noindexfalse
+ }
+ \preto\do@glsdisablehyperinlist{\@gls@setdefault@glslink@opts}
+}
+\newcommand*{\GlsXtrSetDefaultGlsOpts}[1]{%
+ \renewcommand*{\@gls@setdefault@glslink@opts}{\setkeys{glslink}{#1}}%
+}
+\newcommand*{\glsxtrifindexing}[2]{%
+ \ifKV@glslink@noindex #2\else #1\fi
+}
+\renewcommand*{\glswriteentry}[2]{%
+ \glsxtrifindexing
+ {%
+ \ifglsindexonlyfirst
+ \ifglsused{#1}
+ {\glsxtrdoautoindexname{#1}{dualindex}}%
+ {#2}%
+ \else
+ \glsifattribute{#1}{indexonlyfirst}{true}%
+ {\ifglsused{#1}
+ {\glsxtrdoautoindexname{#1}{dualindex}}%
+ {#2}}%
+ {#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
+ \def\@gls@alt@hyp@opt@char{#1}%
+ \def\@gls@alt@hyp@opt@keys{#2}%
+}
+\renewcommand*{\glsdohyperlink}[2]{%
+ \hyperlink{#1}{{\glsxtrprotectlinks#2}}}
+\ifundef\glsdonohyperlink
+{%
+ \renewcommand{\glsdisablehyper}{%
+ \KV@glslink@hyperfalse
+ \let\@glslink\glsdonohyperlink
+ \let\@glstarget\@secondoftwo
+ }
+}
+{}
+\def\glsdonohyperlink#1#2{{\glsxtrprotectlinks #2}}
+\ifcsundef{hyperlink}%
+{%
+ \let\@glslink\glsdonohyperlink
+}%
+{%
+ \let\@glslink\glsdohyperlink
+}
+\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{\glsentrylong{#2}#3}}}
+\def\@glsxtr@p@longpl@#1#2[#3]{{\glsentrylongpl{#2}#3}}
+\def\@Glsxtr@p@longpl@#1#2[#3]{{\Glsentrylongpl{#2}#3}}
+\def\@GLSxtr@p@longpl@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\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}}}
+\renewcommand*{\@glsunset}[1]{%
+ \@@glsunset{#1}%
+ \glsxtrpostunset{#1}%
+}%
+\newcommand*{\glsxtrpostunset}[1]{}
+ \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*{\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}{%
+ \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}%
+ {%
+ \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}%
+ {%
+ \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}%
+ {%
+ \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}%
+ {%
+ \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}{%
+ \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
+\newcommand*{\MakeAcronymsAbbreviations}{%
+ \renewcommand*{\newacronym}[4][]{%
+ \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\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}{%
+ \SetGenericNewAcronym
+ \renewcommand{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand{\acronymfont}[1]{##1}%
+ \let\setacronymstyle\@glsxtr@org@setacronymstyle
+ \let\newacronymstyle\@glsxtr@org@newacronymstyle
+ \let\@gls@link@checkfirsthyper\@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
+\renewcommand*{\makeglossaries}[1][]{%
+ \ifblank{#1}%
+ {\@glsxtr@org@makeglossaries}%
+ {%
+ \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}}
+ \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\relax
+ \let\makeglossary\relax
+ \let\makeglossaries\relax
+ \@disable@onlypremakeg
+ \let\gls@checkseeallowed\relax
+ \let\warn@nomakeglossaries\relax
+ \def\warn@noprintglossary{%
+ \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}%
+ }%
+ \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}%
+ }%
+ \renewcommand*{\@printgloss@setsort}{%
+ \renewcommand*{\@glo@assign@sortkey}{%
+ \edef\@glo@type{\@glo@type}%
+ \expandafter\DTLifinlist\expandafter{\@glo@type}{\@glsxtr@reg@glosslist}%
+ {%
+ \@@glo@no@assign@sortkey
+ }%
+ {%
+ \@@glo@assign@sortkey
+ }%
+ }%
+ \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
+ }%
+}
+\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
+ }%
+ {%
+ ??\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}%
+ }%
+ {%
+ ??\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}%
+ }%
+ {%
+ ??\glsdoifexists{#1}%
+ {%
+ \GlossariesWarning{Missing location list for `#1'. Either
+ a rerun is required or you haven't referenced the entry.}%
+ }%
+ }%
+}%
+\let\@glsxtr@idx@entrynumberlist\glsentrynumberlist
+\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 \string"\jobname\string"}
+
+ \item Run the external (Perl) application:
+
+ \texttt{makeglossaries \string"\jobname\string"}
+ \end{itemize}
+
+ Then rerun \LaTeX\ on this document.%
+}
+\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
+}
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \newcommand*{\glsaccessname}[1]{%
+ \glsnameaccessdisplay
+ {%
+ \glsentryname{#1}%
+ }%
+ {#1}%
+ }
+\def\@glsname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsaccessname{#2}#3}%
+}
+ \newcommand*{\Glsaccessname}[1]{%
+ \glsnameaccessdisplay
+ {%
+ \Glsentryname{#1}%
+ }%
+ {#1}%
+ }
+\def\@Glsname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsaccessname{#2}#3}%
+}
+ \newcommand*{\GLSaccessname}[1]{%
+ \glsnameaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryname{#1}}%
+ }%
+ {#1}%
+ }
+\def\@GLSname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\GLSaccessname{#2}#3}%
+}
+ \newcommand*{\glsaccesstext}[1]{%
+ \glstextaccessdisplay
+ {%
+ \glsentrytext{#1}%
+ }%
+ {#1}%
+ }
+\def\@glstext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsaccesstext{#2}#3}%
+}
+ \newcommand*{\Glsaccesstext}[1]{%
+ \glstextaccessdisplay
+ {%
+ \Glsentrytext{#1}%
+ }%
+ {#1}%
+ }
+\def\@Glstext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsaccesstext{#2}#3}%
+}
+ \newcommand*{\GLSaccesstext}[1]{%
+ \glstextaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrytext{#1}}%
+ }%
+ {#1}%
+ }
+\def\@GLStext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\GLSaccesstext{#2}#3}%
+}
+ \newcommand*{\glsaccessplural}[1]{%
+ \glspluralaccessdisplay
+ {%
+ \glsentryplural{#1}%
+ }%
+ {#1}%
+ }
+\def\@glsplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsaccessplural{#2}#3}%
+}
+ \newcommand*{\Glsaccessplural}[1]{%
+ \glspluralaccessdisplay
+ {%
+ \Glsentryplural{#1}%
+ }%
+ {#1}%
+ }
+\def\@glsplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsaccessplural{#2}#3}%
+}
+ \newcommand*{\GLSaccessplural}[1]{%
+ \glspluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryplural{#1}}%
+ }%
+ {#1}%
+ }
+\def\@GLSplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\GLSaccessplural{#2}#3}%
+}
+ \newcommand*{\glsaccessfirst}[1]{%
+ \glsfirstaccessdisplay
+ {%
+ \glsentryfirst{#1}%
+ }%
+ {#1}%
+ }
+\def\@glsfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsaccessfirst{#2}#3}%
+}
+ \newcommand*{\Glsaccessfirst}[1]{%
+ \glsfirstaccessdisplay
+ {%
+ \Glsentryfirst{#1}%
+ }%
+ {#1}%
+ }
+\def\@Glsfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsaccessfirst{#2}#3}%
+}
+ \newcommand*{\GLSaccessfirst}[1]{%
+ \glsfirstaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryfirst{#1}}%
+ }%
+ {#1}%
+ }
+\def\@GLSfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\GLSaccessfirst{#2}#3}%
+}
+ \newcommand*{\glsaccessfirstplural}[1]{%
+ \glsfirstpluralaccessdisplay
+ {%
+ \glsentryfirstplural{#1}%
+ }%
+ {#1}%
+ }
+\def\@glsfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsaccessfirstplural{#2}#3}%
+}
+ \newcommand*{\Glsaccessfirstplural}[1]{%
+ \glsfirstpluralaccessdisplay
+ {%
+ \Glsentryfirstplural{#1}%
+ }%
+ {#1}%
+ }
+\def\@Glsfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsaccessfirstplural{#2}#3}%
+}
+ \newcommand*{\GLSaccessfirstplural}[1]{%
+ \glsfirstpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryfirstplural{#1}}%
+ }%
+ {#1}%
+ }
+\def\@GLSfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\GLSaccessfirstplural{#2}#3}%
+}
+ \newcommand*{\glsaccesssymbol}[1]{%
+ \glssymbolaccessdisplay
+ {%
+ \glsentrysymbol{#1}%
+ }%
+ {#1}%
+ }
+\def\@glssymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsaccesssymbol{#2}#3}%
+}
+ \newcommand*{\Glsaccesssymbol}[1]{%
+ \glssymbolaccessdisplay
+ {%
+ \Glsentrysymbol{#1}%
+ }%
+ {#1}%
+ }
+\def\@Glssymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsaccesssymbol{#2}#3}%
+}
+ \newcommand*{\GLSaccesssymbol}[1]{%
+ \glssymbolaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrysymbol{#1}}%
+ }%
+ {#1}%
+ }
+\def\@GLSsymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\GLSaccesssymbol{#2}#3}%
+}
+ \newcommand*{\glsaccesssymbolplural}[1]{%
+ \glssymbolpluralaccessdisplay
+ {%
+ \glsentrysymbolplural{#1}%
+ }%
+ {#1}%
+ }
+\def\@glssymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsaccesssymbolplural{#2}#3}%
+}
+ \newcommand*{\Glsaccesssymbolplural}[1]{%
+ \glssymbolpluralaccessdisplay
+ {%
+ \Glsentrysymbolplural{#1}%
+ }%
+ {#1}%
+ }
+\def\@Glssymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsaccesssymbolplural{#2}#3}%
+}
+ \newcommand*{\GLSaccesssymbolplural}[1]{%
+ \glssymbolpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrysymbolplural{#1}}%
+ }%
+ {#1}%
+ }
+\def\@GLSsymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\GLSaccesssymbolplural{#2}#3}%
+}
+ \newcommand*{\glsaccessdesc}[1]{%
+ \glsdescriptionaccessdisplay
+ {%
+ \glsentrydesc{#1}%
+ }%
+ {#1}%
+ }
+\def\@glsdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsaccessdesc{#2}#3}%
+}
+ \newcommand*{\Glsaccessdesc}[1]{%
+ \glsdescriptionaccessdisplay
+ {%
+ \Glsentrydesc{#1}%
+ }%
+ {#1}%
+ }
+\def\@Glsdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsaccessdesc{#2}#3}%
+}
+ \newcommand*{\GLSaccessdesc}[1]{%
+ \glsdescriptionaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrydesc{#1}}%
+ }%
+ {#1}%
+ }
+\def\@GLSdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\GLSaccessdesc{#2}#3}%
+}
+ \newcommand*{\glsaccessdescplural}[1]{%
+ \glsdescriptionpluralaccessdisplay
+ {%
+ \glsentrydescplural{#1}%
+ }%
+ {#1}%
+ }
+\def\@glsdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsaccessdescplural{#2}#3}%
+}
+ \newcommand*{\Glsaccessdescplural}[1]{%
+ \glsdescriptionpluralaccessdisplay
+ {%
+ \Glsentrydescplural{#1}%
+ }%
+ {#1}%
+ }
+\def\@Glsdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsaccessdescplural{#2}#3}%
+}
+ \newcommand*{\GLSaccessdescplural}[1]{%
+ \glsdescriptionpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrydescplural{#1}}%
+ }%
+ {#1}%
+ }
+\def\@GLSdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\GLSaccessdescplural{#2}#3}%
+}
+ \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}%
+ }
+}
+{
+ \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}}}
+}
+\glsaddstoragekey{category}{general}{\glscategory}
+\newcommand{\glsifcategory}[4]{%
+ \ifglsfieldeq{#1}{category}{#2}{#3}{#4}%
+}
+\newcommand*{\glssetcategoryattribute}[3]{%
+ \csdef{@glsxtr@categoryattr@@#1@#2}{#3}%
+}
+\newcommand*{\glsgetcategoryattribute}[2]{%
+ \csuse{@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{\glsifregular}[3]{%
+ \glsifregularcategory{\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\xcapitalisewords\expandafter
+ {\csname glo@\glsdetoklabel{#1}@#2\endcsname}%
+}
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \renewcommand*{\glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glsifattribute{#1}{glossdesc}{firstuc}%
+ {%
+ \Glsaccessdesc{#1}%
+ }%
+ {%
+ \glsifattribute{#1}{glossdesc}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \glsdescriptionaccessdisplay
+ {%
+ \glsxtrfieldtitlecase{#1}{desc}%
+ }%
+ {#1}%
+ }%
+ {%
+ \glsaccessdesc{#1}%
+ }%
+ }%
+ }%
+ }
+}
+{
+ \renewcommand*{\glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glsifattribute{#1}{glossdesc}{firstuc}%
+ {%
+ \Glsentrydesc{#1}%
+ }%
+ {%
+ \glsifattribute{#1}{glossdesc}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \glsxtrfieldtitlecase{#1}{desc}%
+ }%
+ {%
+ \glsentrydesc{#1}%
+ }%
+ }%
+ }%
+ }
+}
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \renewcommand*{\glossentryname}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glsifattribute{#1}{glossname}{firstuc}%
+ {%
+ \glsnameaccessdisplay
+ {%
+ \glsnamefont{\Glsentryname{#1}}%
+ }%
+ {#1}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \glsnameaccessdisplay
+ {%
+ \glsnamefont{\glsxtrfieldtitlecase{#1}{name}}%
+ }%
+ {#1}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{uc}%
+ {%
+ \glsnameaccessdisplay
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \glsnamefont{\mfirstucMakeUppercase{\glo@name}}%
+ }%
+ {#1}%
+ }%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \glsnameaccessdisplay
+ {%
+ \expandafter\glsnamefont\expandafter{\glo@name}%
+ }%
+ {#1}%
+ }%
+ }%
+ }%
+ \glsxtrpostnamehook{#1}%
+ }%
+ }
+}
+{
+ \renewcommand*{\glossentryname}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glsifattribute{#1}{glossname}{firstuc}%
+ {%
+ \glsnamefont{\Glsentryname{#1}}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \glsnamefont{\glsxtrfieldtitlecase{#1}{name}}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{uc}%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \glsnamefont{\mfirstucMakeUppercase{\glo@name}}%
+ }%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \expandafter\glsnamefont\expandafter{\glo@name}%
+ }%
+ }%
+ }%
+ }%
+ \glsxtrpostnamehook{#1}%
+ }
+}
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \renewcommand*{\Glossentryname}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glsnameaccessdisplay
+ {%
+ \glsnamefont{\Glsentryname{#1}}%
+ }%
+ {#1}%
+ \glsxtrpostnamehook{#1}%
+ }%
+ }
+}
+{
+ \renewcommand*{\Glossentryname}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glsnamefont{\Glsentryname{#1}}%
+ \glsxtrpostnamehook{#1}%
+ }%
+ }
+}
+\newcommand*{\glsxtrpostnamehook}[1]{%
+ \def\@glsnumberformat{glsnumberformat}%
+ \glsxtrdoautoindexname{#1}{indexname}%
+}
+\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
+ \ifdefstring{\@glsnumberformat}{glsnumberformat}{}%
+ {\let\@glsxtr@attrval\@glsnumberformat}%
+ \fi
+ \ifdefstring{\@glsxtr@attrval}{true}%
+ {}%
+ {\eappto\@glo@name{\@glsxtr@autoindex@encap\@glsxtr@attrval}}%
+ \expandafter\index\expandafter{\@glo@name}%
+ }%
+ {}%
+}
+\newcommand*{\@glsxtr@autoindex@setname}[1]{%
+ \def\@glo@name{\string\glsentryname{#1}}%
+ \glsletentryfield{\@glo@sort}{#1}{sort}%
+ \@gls@checkmkidxchars\@glo@sort
+ \@glsxtr@autoindex@doextra@esc\@glo@sort
+ \epreto\@glo@name{\@glo@sort\@glsxtr@autoindex@at}%
+}
+\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}%
+ }%
+}
+\renewcommand*{\glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glsaccesssymbol{#1}%
+ }%
+}
+\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
+ \let\@glsxtr@org@postdescription\glspostdescription
+ \renewcommand*{\glspostdescription}{%
+ \glsxtrpostdescription
+ \@glsxtr@org@postdescription
+ }%
+ }%
+}
+{}
+\newcommand*{\glsxtrpostdescription}{%
+ \csuse{glsxtrpostdesc\glscategory{\glscurrententrylabel}}%
+}
+\newcommand*{\glsxtrpostdescgeneral}{}
+\newcommand*{\glsxtrpostdescterm}{}
+\newcommand*{\glsxtrpostdescacronym}{}
+\newcommand*{\glsxtrpostdescabbreviation}{}
+\renewcommand*{\glspostlinkhook}{%
+ \ifglsentryexists{\glslabel}{\glsxtrpostlinkhook}{}%
+}
+\newcommand*{\glsxtrpostlinkhook}{%
+ \glsxtrdiscardperiod{\glslabel}%
+ {\glsxtrpostlinkendsentence}%
+ {\glsxtrpostlink}%
+}
+\newcommand*{\glsxtrpostlink}{%
+ \csuse{glsxtrpostlink\glscategory{\glslabel}}%
+}
+\newcommand*{\glsxtrpostlinkendsentence}{%
+ \ifcsdef{glsxtrpostlink\glscategory{\glslabel}}
+ {%
+ \csuse{glsxtrpostlink\glscategory{\glslabel}}%
+ .\spacefactor\sfcode`\. \relax
+ }%
+ {%
+ \spacefactor\sfcode`\. \relax
+ }%
+}
+\newcommand*{\glsxtrpostlinkAddDescOnFirstUse}{%
+ \glsxtrifwasfirstuse{\space(\glsaccessdesc{\glslabel})}{}%
+}
+\newcommand*{\glsxtrpostlinkAddSymbolOnFirstUse}{%
+ \glsxtrifwasfirstuse
+ {%
+ \ifglshassymbol{\glslabel}{\space(\glsaccesssymbol{\glslabel})}{}%
+ }%
+ {}%
+}
+\newcommand*{\glsxtrdiscardperiod}[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}{%
+ \edef\glscategorylabel{#1}%
+ \ifcsdef{@glsabbrv@current@#1}%
+ {%
+ \glsxtr@applyabbrvstyle{\csname @glsabbrv@current@#1\endcsname}%
+ }%
+ {}%
+}
+\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*{\newabbreviation}[4][]{%
+ \glskeylisttok{#1}%
+ \glslabeltok{#2}%
+ \glsshorttok{#3}%
+ \glslongtok{#4}%
+ \def\glscategorylabel{abbreviation}%
+ \glsxtr@applyabbrvstyle{\@glsabbrv@current@abbreviation}%
+ \setkeys*{glsxtrabbrv}[shortplural,longplural]{#1}%
+ \def\@gls@longpl{#4\glspluralsuffix}%
+ \glsifcategoryattribute{\glscategorylabel}{insertdots}{true}%
+ {%
+ \@glsxtr@insertdots\@gls@short{#3}%
+ \expandafter\glsshorttok\expandafter{\@gls@short\spacefactor1000 \relax}%
+ \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}%
+ }%
+ }%
+ }%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{aposplural}{true}%
+ {%
+ \def\@gls@shortpl{#3'\abbrvpluralsuffix}%
+ }%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{noshortplural}{true}%
+ {%
+ \def\@gls@shortpl{#3}%
+ }%
+ {%
+ \def\@gls@shortpl{#3\abbrvpluralsuffix}%
+ }%
+ }%
+ }%
+ \glsxtrnewabbrevpresetkeyhook{#1}{#2}{#3}%
+ \setkeys*{glsxtrabbrv}[category]{#1}%
+ \expandafter\glsshortpltok\expandafter{\@gls@shortpl}%
+ \expandafter\glslongpltok\expandafter{\@gls@longpl}%
+ \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,%
+ \the\glskeylisttok
+ }%
+ }%
+ \@do@newglossaryentry
+ \GlsXtrPostNewAbbreviation
+}
+\newcommand*{\glsxtrnewabbrevpresetkeyhook}[3]{}
+\newcommand*{\GlsXtrPostNewAbbreviation}{}
+\newcommand*{\newabbreviationhook}{}
+\newcommand*{\CustomAbbreviationFields}{}
+\newcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{#1}}#2\glsxtrfullsep{#1}%
+ (\protect\glsfirstabbrvfont{\glsaccessshort{#1}})%
+}
+\newcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslong{#1}}#2\glsxtrfullsep{#1}%
+ (\protect\glsfirstabbrvfont{\glsaccessshort{#1}})%
+}
+\newcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}%
+ (\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}})%
+}
+\newcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}%
+ (\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]{\glsabbrvfont{#1}}
+\newcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{#1}}
+\newcommand*{\glsabbrvdefaultfont}[1]{#1}
+\newcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{#1}}
+\newcommand*{\glsfirstlongdefaultfont}[1]{#1}
+\newcommand*{\abbrvpluralsuffix}{\glspluralsuffix}
+\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\@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]{%
+ \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]{%
+ \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]{%
+ \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]{%
+ \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}}#3%
+ }%
+ \@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]{%
+ \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}}#3%
+ }%
+ \@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]{%
+ \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}}#3}%
+ }%
+ \@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]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\glsaccesslong{#2}#3}%
+ \@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]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\Glsaccesslong{#2}#3}%
+ \@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]{%
+ \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{\glsaccesslong{#2}#3}}%
+ \@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]{%
+ \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}}#3%
+ }%
+ \@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]{%
+ \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}}#3%
+ }%
+ \@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]{%
+ \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}}#3}%
+ }%
+ \@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]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\glsaccesslongpl{#2}#3}%
+ \@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]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\Glsaccesslongpl{#2}#3}%
+ \@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]{%
+ \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{\glsaccesslongpl{#2}#3}}%
+ \@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}}%
+}
+\newcommand*{\glsxtrgenabbrvfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \glsabbrvfont{\glsaccessshortpl{\glslabel}}\glsinsert
+ }%
+ {%
+ \glsabbrvfont{\Glsaccessshortpl{\glslabel}}\glsinsert
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\glsabbrvfont{\glsaccessshortpl{\glslabel}}\glsinsert}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \glsabbrvfont{\glsaccessshort{\glslabel}}\glsinsert
+ }%
+ {%
+ \glsabbrvfont{\Glsaccessshort{\glslabel}}\glsinsert
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\glsabbrvfont{\glsaccessshort{\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*{\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}%
+ \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@#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}%
+ #3}%
+ }%
+}
+\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
+ }%
+}
+\newabbreviationstyle{long-short}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\protect\glsabbrvfont{\the\glsshorttok}},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ (\protect\glsfirstabbrvfont{\the\glsshorttok})},%
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ (\protect\glsfirstabbrvfont{\the\glsshortpltok})},%
+ plural={\protect\glsabbvfont{\the\glsshortpltok}},%
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glspluralsuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstabbrvfont{\glsaccessshort{##1}})%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstabbrvfont{\glsaccessshortpl{##1}})%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslong{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstabbrvfont{\glsaccessshort{##1}})%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslongpl{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstabbrvfont{\glsaccessshortpl{##1}})%
+ }%
+}
+\setabbreviationstyle{long-short}
+\newabbreviationstyle{long-short-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\protect\glsxtrfullformat{\the\glslabeltok}{}},
+ sort={\the\glsshorttok},%
+ first={\protect\glsfirstlongfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ (\protect\glsfirstabbrvfont{\the\glsshorttok})},%
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ (\protect\glsfirstabbrvfont{\the\glsshortpltok})},%
+ plural={\protect\glsabbvfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short}%
+}
+\newabbreviationstyle{short-long}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\protect\glsabbrvfont{\the\glsshorttok}},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ (\protect\glsfirstlongfont{\the\glslongtok})},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ (\protect\glsfirstlongfont{\the\glslongpltok})},%
+ plural={\protect\glsabbvfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glspluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslong{##1}})%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslongpl{##1}})%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslong{##1}})%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslongpl{##1}})%
+ }%
+}
+\newabbreviationstyle{short-long-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\protect\glsxtrfullformat{\the\glslabeltok}{}},
+ sort={\the\glsshorttok},%
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ (\protect\glsfirstlongfont{\the\glslongtok})},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ (\protect\glsfirstlongfont{\the\glslongpltok})},%
+ plural={\protect\glsabbvfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-long}%
+}
+\newabbreviationstyle{footnote}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\protect\glsabbrvfont{\the\glsshorttok}},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ \protect\footnote{\protect\glsfirstlongfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\footnote{\protect\glsfirstlongfont{\the\glslongpltok}}},%
+ plural={\protect\glsabbvfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glspluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}}##2%
+ \protect\footnote{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}}##2%
+ \protect\footnote{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}}##2%
+ \protect\footnote{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}}##2%
+ \protect\footnote{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslong{##1}})%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslongpl{##1}})%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslong{##1}})%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslongpl{##1}})%
+ }%
+}
+\newabbreviationstyle{postfootnote}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\protect\glsabbrvfont{\the\glsshorttok}},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ \protect\footnote{\protect\glsfirstlongfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\footnote{\protect\glsfirstlongfont{\the\glslongpltok}}},%
+ plural={\protect\glsabbvfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse{\glsxtrdopostpunc{\protect\footnote
+ {\glsfirstlongfont{\glsentrylong{\glslabel}}}}}{}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glspluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}}##2%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}}##2%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}}##2%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}}##2%
+ }%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslong{##1}})%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslongpl{##1}})%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslong{##1}})%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslongpl{##1}})%
+ }%
+}
+\newabbreviationstyle{short}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\protect\glsabbrvfont{\the\glsshorttok}},
+ 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}{\glspluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvfont{\glsaccessshort{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslong{##1}})%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslongpl{##1}})%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvfont{\glsaccessshort{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\Glsaccesslong{##1}})%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\Glsaccesslongpl{##1}})%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}}##2%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}}##2%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}}##2%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}}##2%
+ }%
+}
+\setabbreviationstyle[acronym]{short}
+\newabbreviationstyle{short-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\protect\glsextrinlinefullformat{\the\glslabeltok}},
+ 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}{\glspluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslong{##1}})%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslongpl{##1}})%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslong{##1}})%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}}##2\glsxtrfullsep{##1}%
+ (\glsfirstlongfont{\glsaccesslongpl{##1}})%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}}##2%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}}##2%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}}##2%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}}##2%
+ }%
+}
+\newabbreviationstyle{long-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\protect\protect\glsfirstlongfont{\the\glslongtok}},
+ sort={\the\glslongtok},
+ first={\protect\glsfirstlongfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}},
+ text={\the\glslongtok},
+ plural={\the\glslongpltok}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glspluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{##1}}##2\glsxtrfullsep{##1}%
+ (\protect\glsfirstabbrvfont{\glsaccessshort{##1}})%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{##1}}##2\glsxtrfullsep{##1}%
+ (\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}})%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslong{##1}}##2\glsxtrfullsep{##1}%
+ (\protect\glsfirstabbrvfont{\glsaccessshort{##1}})%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslongpl{##1}}##2\glsxtrfullsep{##1}%
+ (\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}})%
+ }%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{##1}}##2%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{##1}}##2%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{##1}}##2%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{##1}}##2%
+ }%
+}
+\newabbreviationstyle{long}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\protect\glsabbrvfont{\the\glsshorttok}},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}},
+ text={\the\glslongtok},
+ plural={\the\glslongpltok},%
+ description={\the\glslongtok}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-desc}%
+}
+\newcommand*{\glsxtrscfont}[1]{\textsc{#1}}
+\newcommand*{\glsxtrscsuffix}{\glstextup{\glspluralsuffix}}
+\newabbreviationstyle{long-short-sc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-short}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrscfont{##1}}%
+}
+\newabbreviationstyle{long-short-sc-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-short-desc}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short-desc}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrscfont{##1}}%
+}
+\newabbreviationstyle{short-sc-long}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-long}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-long}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrscfont{##1}}%
+}
+\newabbreviationstyle{short-sc-long-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-long-desc}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-long-desc}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrscfont{##1}}%
+}
+\newabbreviationstyle{short-sc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrscfont{##1}}%
+}
+\newabbreviationstyle{short-sc-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-desc}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-desc}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrscfont{##1}}%
+}
+\newabbreviationstyle{long-sc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrscfont{##1}}%
+}
+\newabbreviationstyle{long-desc-sc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-desc}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-desc}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrscfont{##1}}%
+}
+\newabbreviationstyle{footnote-sc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{footnote}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{footnote}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrscfont{##1}}%
+}
+\newabbreviationstyle{postfootnote-sc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{postfootnote}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{postfootnote}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrscfont{##1}}%
+}
+\newcommand*{\glsxtrsmfont}[1]{\textsmaller{#1}}
+\newcommand*{\glsxtrsmsuffix}{\glspluralsuffix}
+\newabbreviationstyle{long-short-sm}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-short}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+}
+\newabbreviationstyle{long-short-sm-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-short-desc}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short-desc}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+}
+\newabbreviationstyle{short-sm-long}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-long}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-long}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+}
+\newabbreviationstyle{short-sm-long-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-long-desc}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-long-desc}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+}
+\newabbreviationstyle{short-sm}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+}
+\newabbreviationstyle{short-sm-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-desc}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-desc}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+}
+\newabbreviationstyle{long-sm}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+}
+\newabbreviationstyle{long-desc-sm}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-desc}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-desc}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+}
+\newabbreviationstyle{footnote-sm}%
+{%
+ \GlsXtrUseAbbrStyleSetup{footnote}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{footnote}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+}
+\newabbreviationstyle{postfootnote-sm}%
+{%
+ \GlsXtrUseAbbrStyleSetup{postfootnote}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{postfootnote}%
+ \renewcommand*\glsabbrvfont[1]{\glsxtrsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+}
+\newabbreviationstyle{long-short-em}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-short}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short}%
+ \renewcommand*\glsabbrvfont[1]{\emph{##1}}%
+}
+\newabbreviationstyle{long-short-em-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-short-desc}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short-desc}%
+ \renewcommand*\glsabbrvfont[1]{\emph{##1}}%
+}
+\newabbreviationstyle{short-em-long}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-long}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-long}%
+ \renewcommand*\glsabbrvfont[1]{\emph{##1}}%
+}
+\newabbreviationstyle{short-em-long-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-long-desc}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-long-desc}%
+ \renewcommand*\glsabbrvfont[1]{\emph{##1}}%
+}
+\newabbreviationstyle{short-em}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short}%
+ \renewcommand*\glsabbrvfont[1]{\emph{##1}}%
+}
+\newabbreviationstyle{short-em-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-desc}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-desc}%
+ \renewcommand*\glsabbrvfont[1]{\emph{##1}}%
+}
+\newabbreviationstyle{long-em}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long}%
+ \renewcommand*\glsabbrvfont[1]{\emph{##1}}%
+}
+\newabbreviationstyle{long-desc-em}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-desc}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-desc}%
+ \renewcommand*\glsabbrvfont[1]{\emph{##1}}%
+}
+\newabbreviationstyle{footnote-em}%
+{%
+ \GlsXtrUseAbbrStyleSetup{footnote}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{footnote}%
+ \renewcommand*\glsabbrvfont[1]{\emph{##1}}%
+}
+\newabbreviationstyle{postfootnote-em}%
+{%
+ \GlsXtrUseAbbrStyleSetup{postfootnote}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{postfootnote}%
+ \renewcommand*\glsabbrvfont[1]{\emph{##1}}%
+}
+\let\@glsxtr@org@markright\markright
+\renewcommand*{\markright}[1]{%
+ \glsxtrmarkhook
+ \@glsxtr@org@markright{#1}%
+ \glsxtrrestoremarkhook
+}
+\let\@glsxtr@org@markboth\markboth
+\renewcommand*{\markboth}[2]{%
+ \glsxtrmarkhook
+ \@glsxtr@org@markboth{#1}{#2}%
+ \glsxtrrestoremarkhook
+}
+\newcommand*{\glsxtrRevertMarks}{%
+ \let\markright\@glsxtr@org@markright
+ \let\markboth\@glsxtr@org@markboth
+}
+\newcommand*{\glsxtrmarkhook}{%
+ \let\@glsxtr@org@MakeUppercase\MakeUppercase
+ \let\@glsxtr@org@glsxtrtitleshort\glsxtrtitleshort
+ \let\@glsxtr@org@glsxtrtitleshortpl\glsxtrtitleshortpl
+ \let\@glsxtr@org@Glsxtrtitleshort\Glsxtrtitleshort
+ \let\@glsxtr@org@Glsxtrtitleshortpl\Glsxtrtitleshortpl
+ \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\MakeUppercase\MakeTextUppercase
+ \let\glsxtrtitleshort\glsxtrheadshort
+ \let\glsxtrtitleshortpl\glsxtrheadshortpl
+ \let\Glsxtrtitleshort\Glsxtrheadshort
+ \let\Glsxtrtitleshortpl\Glsxtrheadshortpl
+ \let\glsxtrtitletext\glsxtrheadtext
+ \let\Glsxtrtitletext\Glsxtrheadtext
+ \let\glsxtrtitleplural\glsxtrheadplural
+ \let\Glsxtrtitleplural\Glsxtrheadplural
+ \let\glsxtrtitlefirst\glsxtrheadfirst
+ \let\Glsxtrtitlefirst\Glsxtrheadfirst
+ \let\glsxtrtitlefirstplural\glsxtrheadfirstplural
+ \let\Glsxtrtitlefirstplural\Glsxtrheadfirstplural
+}
+\newcommand*{\glsxtrrestoremarkhook}{%
+ \let\MakeUppercase\@glsxtr@org@MakeUppercase
+ \let\glsxtrtitleshort\@glsxtr@org@glsxtrtitleshort
+ \let\glsxtrtitleshortpl\@glsxtr@org@glsxtrtitleshortpl
+ \let\Glsxtrtitleshort\@glsxtr@org@Glsxtrtitleshort
+ \let\Glsxtrtitleshortpl\@glsxtr@org@Glsxtrtitleshortpl
+ \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
+}
+\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]{%
+ \glsxtrshort[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}[]%
+}
+\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*{\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}[]%
+}
+\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}[]%
+}
+\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}[]%
+}
+\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}[]%
+}
+\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*{\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*{\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}}
+}
+\newcommand*{\RequireGlossariesExtraLang}[1]{%
+ \@ifundefined{ver@glossariesxtr-#1.ldf}{\input{glossariesxtr-#1.ldf}}{}%
+}
+\newcommand*{\ProvidesGlossariesExtraLang}[1]{%
+ \ProvidesFile{glossariesxtr-#1.ldf}%
+}
+\@ifpackageloaded{tracklang}
+{%
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossariesxtr-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesExtraLang{\CurrentTrackedTag}%
+ }%
+ {%
+ }%
+ }%
+ }%
+ {}%
+}
+{}
+\endinput
+%%
+%% End of file `glossaries-extra.sty'.