summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/glossaries/glossaries.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/glossaries/glossaries.dtx')
-rw-r--r--macros/latex/contrib/glossaries/glossaries.dtx8126
1 files changed, 8040 insertions, 86 deletions
diff --git a/macros/latex/contrib/glossaries/glossaries.dtx b/macros/latex/contrib/glossaries/glossaries.dtx
index d2f7f93ac4..641424a982 100644
--- a/macros/latex/contrib/glossaries/glossaries.dtx
+++ b/macros/latex/contrib/glossaries/glossaries.dtx
@@ -1,16 +1,8 @@
%\iffalse
% glossaries.dtx generated using makedtx version 1.2 (c) Nicola Talbot
% Command line args:
-% -codetitle "Main Package Code (glossaries.sty)"
% -macrocode ".*\.tex"
% -macrocode ".*\.l2h"
-% -section "section"
-% -setambles ".*\.tex=>\nopreamble\nopostamble"
-% -setambles ".*\.l2h=>\nopreamble\nopostamble"
-% -doc "glossaries-manual.tex"
-% -comment ".*\.tex"
-% -comment ".*\.l2h"
-% -author "Nicola Talbot"
% -src "(glossaries\.sty)\Z=>\1"
% -src "(glossary-[a-z]+\.sty)\Z=>\1"
% -src "(glossaries-babel\.sty)\Z=>\1"
@@ -21,10 +13,19 @@
% -src "(glossaries-compatible-307\.sty)\Z=>\1"
% -src "(glossar.*-2020-03-19\.sty)\Z=>\1"
% -src "(glossar.*-2021-11-01\.sty)\Z=>\1"
+% -src "(glossar.*-2022-11-03\.sty)\Z=>\1"
% -src "(example-glossaries-.*\.tex)\Z=>\1"
% -src "(glossaries\.l2h)\Z=>\1"
+% -codetitle "Main Package Code (glossaries.sty)"
+% -section "section"
+% -doc "glossaries-manual.tex"
+% -comment ".*\.tex"
+% -comment ".*\.l2h"
+% -author "Nicola Talbot"
+% -setambles ".*\.tex=>\nopreamble\nopostamble"
+% -setambles ".*\.l2h=>\nopreamble\nopostamble"
% glossaries
-% Created on 2022/11/3 9:50
+% Created on 2023/10/1 19:36
%\fi
%\iffalse
%<*package>
@@ -47,7 +48,7 @@
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
-% Copyright (C) 2022 Nicola Talbot, all rights reserved.
+% Copyright (C) 2023 Nicola Talbot, all rights reserved.
% \fi
% \iffalse
%<*driver>
@@ -59,7 +60,7 @@ glossaries.dtx
\documentclass{article}
\usepackage{doc}
-\CheckSum{58650}
+\CheckSum{71623}
\RecordChanges
\PageIndex
@@ -115,12 +116,12 @@ glossaries.dtx
%\DeleteShortVerb{|}
%\MakeShortVerb{"}
%
-% \title{Documented Code For glossaries v4.52}
+% \title{Documented Code For glossaries v4.53}
% \author{Nicola L.C. Talbot\\[10pt]
%Dickimaw Books\\
%\url{http://www.dickimaw-books.com/}}
%
-% \date{2022-11-03}
+% \date{2023-09-29}
% \maketitle
%
%\tableofcontents
@@ -140,7 +141,7 @@ glossaries.dtx
%glossaries package}.
%
%\item[\url{glossaries-user.pdf}]
-%For the main user guide, read \qt{glossaries.sty v4.52:
+%For the main user guide, read \qt{glossaries.sty v4.53:
%\LaTeX2e\ Package to Assist Generating Glossaries}.
%
%\item[\url{mfirstuc-manual.pdf}]
@@ -198,11 +199,12 @@ glossaries.dtx
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareRelease{v4.52}{2022-11-03}{glossaries-2022-11-03.sty}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
% Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossaries}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossaries}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
%\changes{4.18}{2015-09-09}{split mfirstuc into separate bundle}
% Required packages:
@@ -17289,9 +17291,7 @@ you
\ExplSyntaxOn
\newcommand*{\@gls@getgrouptitle}[2]{%
% \end{macrocode}
-% Even if the argument appears to be a single letter, it won't be
-% considered a single letter by \cs{dtl@ifsingle} if it's an active
-% character.
+% Note that \cs{dtl@ifsingle} (provided by \sty{datatool}) is being phased out.
% \begin{macrocode}
\def#2{#1}%
\regex_match:nnT { ^\A(.|glsnumbers|glssymbols)\Z } { #1 }
@@ -19944,11 +19944,12 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossary-hypernav-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-hypernav-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareRelease{v4.52}{2022-11-03}{glossary-hypernav-2022-11-03.sty}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
% Package Definition:
% \begin{macrocode}
-\ProvidesPackage{glossary-hypernav}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossary-hypernav}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
%
% The commands defined in this package are provided to
@@ -19996,6 +19997,74 @@ you
% \end{macrocode}
%\end{macro}
%
+%Version 4.53: reimplemented list of hypertarget groups as a
+%sequence. Previously, the targets where stored as comma-separated
+%lists in \cs{@gls@hypergrouplist@\meta{glossary}} (where
+%\meta{glossary} is the glossary label). They are now stored in a
+%sequence \cs{g\_glossaries\_\meta{glossary}\_hypergroups\_seq}.
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%\begin{definition}
+%\cs{glossaries\_add\_hypergroup:nn}\marg{glossary}\marg{target}
+%\end{definition}
+% Add a target to the sequence unless it's already contained in it:
+% \begin{macrocode}
+\cs_new:Npn \glossaries_add_hypergroup:nn #1 #2
+{
+ \seq_if_exist:cTF
+ { g_glossaries_ #1 _hypergroups_seq }
+ {
+ \seq_if_in:cnF
+ { g_glossaries_ #1 _hypergroups_seq } { #2 }
+ {
+ \seq_gput_right:cn
+ { g_glossaries_ #1 _hypergroups_seq }
+ { #2 }
+ }
+ }
+ {
+ \seq_new:c { g_glossaries_ #1 _hypergroups_seq }
+ \seq_gput_right:cn
+ { g_glossaries_ #1 _hypergroups_seq }
+ { #2 }
+ }
+}
+\cs_generate_variant:Nn \glossaries_add_hypergroup:nn { nx }
+% \end{macrocode}
+%Check if the given target has been added to the sequence to avoid
+%duplicates.
+% \begin{macrocode}
+\cs_new:Npn \glossaries_if_hypergroup:nnTF #1 #2 #3 #4
+{
+ \seq_if_exist:cTF
+ { g_glossaries_ #1 _hypergroups_seq }
+ {
+ \seq_if_in:cnTF
+ { g_glossaries_ #1 _hypergroups_seq } { #2 }
+ { #3 } { #4 }
+ }
+ { #4 }
+}
+\cs_generate_variant:Nn \glossaries_if_hypergroup:nnTF { nxTF }
+% \end{macrocode}
+%Only true part:
+% \begin{macrocode}
+\cs_new:Npn \glossaries_if_hypergroup:nnT #1 #2 #3
+{
+ \glossaries_if_hypergroup:nnTF { #1 } { #2 } { #3 } { }
+}
+\cs_generate_variant:Nn \glossaries_if_hypergroup:nnT { nxT }
+% \end{macrocode}
+%Only false part:
+% \begin{macrocode}
+\cs_new:Npn \glossaries_if_hypergroup:nnF #1 #2 #3
+{
+ \glossaries_if_hypergroup:nnTF { #1 } { #2 } { } { #3 }
+}
+\cs_generate_variant:Nn \glossaries_if_hypergroup:nnF { nxF }
+% \end{macrocode}
+%
%\begin{macro}{\glsnavhypertarget}
%\begin{definition}
% \cs{glsnavhypertarget}\oarg{type}\marg{label}\marg{text}
@@ -20023,6 +20092,17 @@ you
}
% \end{macrocode}
%\end{macro}
+%
+%\begin{macro}{\glsnavhypergroupdotarget}
+%\changes{4.53}{2023-09-29}{new}
+%Provided to make it easier for \sty{glossaries-extra} to adjust the
+%target.
+% \begin{macrocode}
+\newcommand{\glsnavhypergroupdotarget}[3]{
+ \@glstarget{\glsnavhyperlinkname{#1}{#2}}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
%The actual code is now in an internal command that doesn't have an
%optional argument, which makes it easier to save and restore the
%original behaviour.
@@ -20037,31 +20117,21 @@ you
% \end{macrocode}
% Add the target.
% \begin{macrocode}
- \@glstarget{\glsnavhyperlinkname{#1}{#2}}{#3}%
+ \glsnavhypergroupdotarget { #1 } { #2 } { #3 }
% \end{macrocode}
% Check list of known groups to determine if a re-run is required.
% \begin{macrocode}
- \expandafter\let
- \expandafter\@gls@list\csname @gls@hypergrouplist@#1\endcsname
-% \end{macrocode}
-% Iterate through list and terminate loop if this group is found.
-% \begin{macrocode}
- \@for\@gls@elem:=\@gls@list\do{%
- \ifthenelse{\equal{\@gls@elem}{#2}}{\@endfortrue}{}}%
-% \end{macrocode}
-% Check if list terminated prematurely.
-% \begin{macrocode}
- \if@endfor
- \else
+ \glossaries_if_hypergroup:nxF { #1 } { #2 }
+ {
% \end{macrocode}
% This group was not included in the list, so issue a warning.
% \begin{macrocode}
- \GlossariesWarningNoLine{Navigation panel
- for glossary type `#1'^^Jmissing group `#2'}%
+ \GlossariesWarningNoLine{Navigation ~ panel ~
+ for ~ glossary ~ type ~ `#1'^^Jmissing ~ group ~ `#2'}%
\gdef\gls@hypergrouprerun{%
- \GlossariesWarningNoLine{Navigation panel
- has changed. Rerun LaTeX}}%
- \fi
+ \GlossariesWarningNoLine{Navigation ~ panel ~
+ has ~ changed. ~ Rerun ~ LaTeX}}%
+ }
}
% \end{macrocode}
%\end{macro}
@@ -20082,11 +20152,10 @@ you
% up-to-date.
%\changes{1.14}{2008-06-17}{new}
%\changes{4.50}{2022-10-14}{updated to use \sty{etoolbox}}
+%\changes{4.53}{2023-09-29}{rewritten in \LaTeX3}
% \begin{macrocode}
-\newcommand*{\@gls@hypergroup}[2]{%
- \ifcsdef{@gls@hypergrouplist@#1}%
- {\protected@csxappto{@gls@hypergrouplist@#1}{,#2}}%
- {\protected@csxdef{@gls@hypergrouplist@#1}{#2}}%
+\newcommand*{\@gls@hypergroup}[2]{
+ \glossaries_add_hypergroup:nx { #1 } { #2 }
}
% \end{macrocode}
%\end{macro}
@@ -20108,29 +20177,29 @@ you
% \begin{macrocode}
\newcommand*{\glsnavigation}{%
\def\@gls@between{}%
- \ifcsundef{@gls@hypergrouplist@\currentglossary}%
- {%
- \def\@gls@list{}%
- }%
- {%
-% \end{macrocode}
-%\changes{4.50}{2022-10-14}{switched to \cs{letcs}}
-% \begin{macrocode}
- \letcs\@gls@list{@gls@hypergrouplist@\currentglossary}%
- }%
- \@for\@gls@tmp:=\@gls@list\do{%
+ \seq_map_inline:cn { g_glossaries_ \currentglossary _hypergroups_seq }
+ {
\@gls@between
% \end{macrocode}
%\changes{3.11a}{2013-10-15}{switched to using
%\cs{@gls@getgrouptitle}}
% \begin{macrocode}
- \@gls@getgrouptitle{\@gls@tmp}{\@gls@grptitle}%
- \expandafter\glsnavhyperlink\expandafter{\@gls@tmp}{\@gls@grptitle}%
+ \glsnavigationitem { ##1 }
\let\@gls@between\glshypernavsep
}%
}
% \end{macrocode}
%\end{macro}
+%
+%\begin{macro}{\glsnavigationitem}
+%\changes{4.53}{2023-09-29}{new}
+% \begin{macrocode}
+\newcommand{\glsnavigationitem}[1]{%
+ \@gls@getgrouptitle { #1 } { \@gls@grptitle }
+ \exp_args:Nno \glsnavhyperlink { #1 } { \@gls@grptitle }
+}
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{\glshypernavsep}
% Separator for the hyper navigation bar.
% \begin{macrocode}
@@ -20150,6 +20219,11 @@ you
}
% \end{macrocode}
%\end{macro}
+%
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
%\iffalse
% \begin{macrocode}
%</glossary-hypernav.sty>
@@ -20170,11 +20244,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossary-inline-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-inline-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
%Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossary-inline}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossary-inline}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
%
%\begin{style}{inline}
@@ -20380,11 +20454,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossary-list-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-list-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
%Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossary-list}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossary-list}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
%\begin{macro}{\indexspace}
%\changes{4.13}{2015-02-03}{new}
@@ -20705,11 +20779,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossary-long-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-long-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
%Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossary-long}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossary-long}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
% Requires the \sty{longtable} package:
% \begin{macrocode}
@@ -21212,11 +21286,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossary-longbooktabs-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-longbooktabs-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
%Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossary-longbooktabs}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossary-longbooktabs}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
% Requires \sty{booktabs} package:
% \begin{macrocode}
@@ -21562,11 +21636,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossary-longragged-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-longragged-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
%Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossary-longragged}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossary-longragged}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
% Requires the \sty{array} package:
% \begin{macrocode}
@@ -22005,11 +22079,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossary-mcols-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-mcols-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
%Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossary-mcols}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossary-mcols}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
% Required packages:
% \begin{macrocode}
@@ -22454,11 +22528,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossary-super-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-super-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
%Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossary-super}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossary-super}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
% Requires the \sty{supertabular} package:
% \begin{macrocode}
@@ -22997,11 +23071,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossary-superragged-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-superragged-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
%Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossary-superragged}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossary-superragged}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
% Requires the \sty{array} package:
% \begin{macrocode}
@@ -23447,11 +23521,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossary-tree-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-tree-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
%Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossary-tree}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossary-tree}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
%
%\begin{macro}{\indexspace}
@@ -24185,11 +24259,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-babel-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-babel-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
% Declare package
% \begin{macrocode}
-\ProvidesPackage{glossaries-babel}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossaries-babel}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
% Load \sty{tracklang} to obtain language settings.
% \begin{macrocode}
@@ -24238,11 +24312,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-polyglossia-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-polyglossia-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
% Declare package
% \begin{macrocode}
-\ProvidesPackage{glossaries-polyglossia}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossaries-polyglossia}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
% Load \sty{tracklang} to obtain language settings.
% \begin{macrocode}
@@ -24295,11 +24369,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-prefix-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-prefix-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
%Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossaries-prefix}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossaries-prefix}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
% Pass all options to \sty{glossaries}:
% \begin{macrocode}
@@ -24796,11 +24870,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-accsupp-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-accsupp-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
% Package version number now in line with main glossaries package number.
% \begin{macrocode}
-\ProvidesPackage{glossaries-accsupp}[2022/11/03 v4.52 (NLCT)
+\ProvidesPackage{glossaries-accsupp}[2023/09/29 v4.53 (NLCT)
Experimental glossaries accessibility]
% \end{macrocode}
% Pass all options to \sty{glossaries}:
@@ -27651,11 +27725,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-compatible-207-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-compatible-207-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
%Identify package.
% \begin{macrocode}
-\ProvidesPackage{glossaries-compatible-207}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossaries-compatible-207}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
%Trigger error and that's it.
% \begin{macrocode}
@@ -27684,11 +27758,11 @@ you
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-compatible-307-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-compatible-307-2021-11-01.sty}
-\DeclareCurrentRelease{v4.52}{2022-11-03}
+\DeclareCurrentRelease{v4.53}{2023-09-29}
% \end{macrocode}
%Identify package.
% \begin{macrocode}
-\ProvidesPackage{glossaries-compatible-307}[2022/11/03 v4.52 (NLCT)]
+\ProvidesPackage{glossaries-compatible-307}[2023/09/29 v4.53 (NLCT)]
% \end{macrocode}
%Trigger error and that's it.
% \begin{macrocode}
@@ -53167,6 +53241,7760 @@ you
%\fi
%\iffalse
% \begin{macrocode}
+%<*glossaries-2022-11-03.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.52 (glossaries-2022-11-03.sty)}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\DeclareRelease{v4.46}{2020-03-19}{glossaries-2020-03-19.sty}
+\DeclareRelease{v4.49}{2021-11-01}{glossaries-2021-11-01.sty}
+\DeclareCurrentRelease{v4.52}{2022-11-03}
+\ProvidesPackage{glossaries}[2022/11/03 v4.52 (NLCT)]
+\RequirePackage{ifthen}
+\RequirePackage{xkeyval}[2006/11/18]
+\RequirePackage{mfirstuc}
+\newcommand{\glssentencecase}[1]{\makefirstuc{#1}}
+\ExplSyntaxOn
+\newcommand{\glslowercase}[1]{\text_lowercase:n{#1}}
+\newcommand{\glsuppercase}[1]{\text_uppercase:n{#1}}
+\ifdef\MFUsentencecase
+{%
+ \newcommand{\glsmfuexcl}[1]{\MFUexcl{#1}}
+ \newcommand{\glsmfublocker}[1]{\MFUblocker{#1}}
+ \newcommand{\glsmfuaddmap}[2]{\MFUaddmap{#1}{#2}}
+}
+{
+ \RequirePackage{textcase}
+ \providecommand{\MFUsentencecase}[1]{\text_titlecase_first:n{#1}}
+ \providecommand{\glsmfuexcl}[1]{
+ \tl_if_in:NnF \l_text_case_exclude_arg_tl {#1}
+ {
+ \tl_put_right:Nn \l_text_case_exclude_arg_tl {#1}
+ }
+ }
+ \renewcommand*{\mfirstucMakeUppercase}{\MakeTextUppercase}
+ \newcommand{\glsmfublocker}[1]{\glsmfuexcl{#1}}
+ \newcommand{\glsmfuaddmap}[2]{\glsmfuexcl{#1}\glsmfublocker{#2}}
+}
+\ExplSyntaxOff
+\RequirePackage{xfor}
+\RequirePackage{datatool-base}
+\RequirePackage{amsgen}
+\RequirePackage{etoolbox}
+\newif\if@gls@docloaded
+\@ifpackageloaded{doc}%
+{%
+ \@gls@docloadedtrue
+}%
+{%
+ \@ifclassloaded{nlctdoc}{\@gls@docloadedtrue}{\@gls@docloadedfalse}%
+}
+\if@gls@docloaded
+ \let\glsorg@theglossary\theglossary
+ \let\glsorg@endtheglossary\endtheglossary
+ \let\glsorg@PrintChanges\PrintChanges
+ \renewcommand{\PrintChanges}{%
+ \begingroup
+ \let\theglossary\glsorg@theglossary
+ \let\endtheglossary\glsorg@endtheglossary
+ \glsorg@PrintChanges
+ \endgroup
+ }
+\fi
+\newif\if@gls@debug
+\define@choicekey{glossaries.sty}{debug}[\gls@debug@val\gls@debug@nr]%
+ {true,false,showtargets,showaccsupp}[true]{%
+ \ifcase\gls@debug@nr\relax
+ % debug=true
+ \@gls@debugtrue
+ \renewcommand*{\GlossariesWarning}[1]{%
+ \PackageWarning{glossaries}{##1}%
+ }%
+ \renewcommand*{\GlossariesWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries}{##1}%
+ }%
+ \let\@glsshowtarget\@gobble
+ \PackageInfo{glossaries}{debug mode ON (nowarn option disabled)}%
+ \or
+ % debug=false
+ \@gls@debugfalse
+ \let\@glsshowtarget\@gobble
+ \let\@glsshowaccsupp\@gobblethree
+ \PackageInfo{glossaries}{debug mode OFF}%
+ \or
+ % debug=showtargets
+ \@gls@debugtrue
+ \renewcommand*{\GlossariesWarning}[1]{%
+ \PackageWarning{glossaries}{##1}%
+ }%
+ \renewcommand*{\GlossariesWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries}{##1}%
+ }%
+ \PackageInfo{glossaries}{debug mode ON (nowarn option disabled)}%
+ \renewcommand{\@glsshowtarget}{\@@glsshowtarget}%
+ \or
+ % debug=showaccsupp
+ \@gls@debugtrue
+ \renewcommand*{\GlossariesWarning}[1]{%
+ \PackageWarning{glossaries}{##1}%
+ }%
+ \renewcommand*{\GlossariesWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries}{##1}%
+ }%
+ \PackageInfo{glossaries}{debug mode ON (nowarn option disabled)}%
+ \renewcommand{\@glsshowaccsupp}{\glsshowaccsupp}%
+ \fi
+}
+\newcommand*{\glsshowtarget}[1]{%
+ \ifmmode
+ \glsshowtargetinner{#1}%
+ \else
+ \ifinner
+ \glsshowtargetinner{#1}%
+ \else
+ \glsshowtargetouter{#1}%
+ \fi
+ \fi
+}
+\newcommand*{\glsshowtargetfonttext}[1]{%
+ \ifmmode \nfss@text{\glsshowtargetfont #1}\else {\glsshowtargetfont #1}\fi
+}
+\newcommand*{\glsshowtargetinner}[1]{\glsshowtargetfonttext{[#1]}}
+\newcommand*{\glsshowtargetouter}[1]{%
+ \glsshowtargetsymbol\marginpar{\glsshowtargetsymbol\glsshowtargetfont #1}}
+\newcommand*{\glsshowtargetsymbol}{{\tiny$\triangleright$}}
+\newcommand*{\glsshowtargetfont}{\ttfamily\footnotesize}
+\newcommand*{\@glsshowtarget}[1]{}
+\newcommand*{\glsdoshowtarget}[2]{\@glsshowtarget{#1}#2}
+\newrobustcmd*{\@@glsshowtarget}[1]{%
+ \begingroup
+ \protected@edef\@gls@tmp{#1}%
+ \@onelevel@sanitize\@gls@tmp
+ \expandafter\glsshowtarget\expandafter{\@gls@tmp}%
+ \endgroup
+}
+\newcommand*{\@glsshowaccsupp}[3]{}
+\newrobustcmd*{\glsshowaccsupp}[3]{%
+ \ifstrempty{#1}%
+ {\@@glsshowtarget{/#2 (#3)}}%
+ {\@@glsshowtarget{/#2 (#3) [#1]}}%
+}
+\newcommand*{\@gls@see@noindex}{%
+ \PackageError{glossaries}%
+ {`\gls@xr@key' key may only be used after \string\makeglossaries\space
+ or \string\makenoidxglossaries\space (or move
+ \string\newglossaryentry\space
+ definitions into the preamble)}%
+ {You must use \string\makeglossaries\space
+ or \string\makenoidxglossaries\space before defining
+ any entries that have a `\gls@xr@key' key. It may
+ be that the `see' key has been written to the .glsdefs
+ file from the previous run, in which case you need to
+ move your definitions
+ to the preamble if you don't want to use
+ \string\makeglossaries\space
+ or \string\makenoidxglossaries}%
+}
+\define@choicekey{glossaries.sty}{seenoindex}%
+ [\gls@seenoindex@val\gls@seenoindex@nr]{error,warn,ignore}{%
+ \ifcase\gls@seenoindex@nr
+ \renewcommand*{\@gls@see@noindex}{%
+ \PackageError{glossaries}%
+ {`\gls@xr@key' key may only be used after \string\makeglossaries\space
+ or \string\makenoidxglossaries}%
+ {You must use \string\makeglossaries\space
+ or \string\makenoidxglossaries\space before defining
+ any entries that have a `\gls@xr@key' key}%
+ }%
+ \or
+ \renewcommand*{\@gls@see@noindex}{%
+ \GlossariesWarning{`\gls@xr@key' key ignored}%
+ }%
+ \or
+ \renewcommand*{\@gls@see@noindex}{}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[gls]{toc}[true]{}
+\define@boolkey{glossaries.sty}[gls]{numberline}[true]{}
+\ifcsundef{chapter}%
+ {\newcommand*{\@@glossarysec}{section}}%
+ {\newcommand*{\@@glossarysec}{chapter}}
+\define@choicekey{glossaries.sty}{section}{part,chapter,section,%
+subsection,subsubsection,paragraph,subparagraph}[section]{%
+ \renewcommand*{\@@glossarysec}{#1}}
+\newcommand*{\@@glossarysecstar}{*}
+\newcommand*{\@@glossaryseclabel}{}
+\newcommand*{\glsautoprefix}{}
+\define@choicekey{glossaries.sty}{numberedsection}%
+ [\gls@numberedsection@val\gls@numberedsection@nr]{%
+false,nolabel,autolabel,nameref}[nolabel]{%
+ \ifcase\gls@numberedsection@nr\relax
+ \renewcommand*{\@@glossarysecstar}{*}%
+ \renewcommand*{\@@glossaryseclabel}{}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{}%
+ \renewcommand*{\@@glossaryseclabel}{}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{}%
+ \renewcommand*{\@@glossaryseclabel}{%
+ \label{\glsautoprefix\@glo@type}}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{*}%
+ \renewcommand*{\@@glossaryseclabel}{%
+ \protected@edef\@currentlabelname{\glossarytoctitle}%
+ \label{\glsautoprefix\@glo@type}}%
+ \fi
+}
+\@ifpackageloaded{classicthesis}
+{\newcommand*{\@glossary@default@style}{index}}
+{\newcommand*{\@glossary@default@style}{list}}
+\define@key{glossaries.sty}{style}{%
+ \def\@glossary@default@style{#1}%
+}
+\newcommand*{\@gls@declareoption}[2]{%
+ \DeclareOptionX{#1}{#2}%
+ \DeclareOption{#1}{#2}%
+}
+\newcommand*{\glossaryentrynumbers}[1]{#1\gls@save@numberlist{#1}}
+\@gls@declareoption{nonumberlist}{%
+ \renewcommand*{\glossaryentrynumbers}[1]{\gls@save@numberlist{#1}}%
+}
+\define@boolkey{glossaries.sty}[gls]{savenumberlist}[true]{}
+\glssavenumberlistfalse
+\newcommand*\@glo@seeautonumberlist{}
+\@gls@declareoption{seeautonumberlist}{%
+ \renewcommand*{\@glo@seeautonumberlist}{%
+ \def\@glo@prefix{\glsnextpages}%
+ }%
+}
+\define@boolkey{glossaries.sty}[gls]{esclocations}[true]{}
+\glsesclocationsfalse
+\newcommand*{\@gls@loadlong}{\RequirePackage{glossary-long}}
+\@gls@declareoption{nolong}{\renewcommand*{\@gls@loadlong}{}}
+\IfFileExists{supertabular.sty}{%
+ \newcommand*{\@gls@loadsuper}{\RequirePackage{glossary-super}}}{%
+ \newcommand*{\@gls@loadsuper}{}}
+\@ifpackageloaded{xtab}{\renewcommand*{\@gls@loadsuper}{}}{}
+\@gls@declareoption{nosuper}{\renewcommand*{\@gls@loadsuper}{}}
+\newcommand*{\@gls@loadlist}{\RequirePackage{glossary-list}}
+\@gls@declareoption{nolist}{%
+ \renewcommand*{\@gls@loadlist}{%
+ \ifdefstring{\@glossary@default@style}{list}%
+ {\let\@glossary@default@style\relax}%
+ {}%
+ }%
+}
+\newcommand*{\@gls@loadtree}{\RequirePackage{glossary-tree}}
+\@gls@declareoption{notree}{\renewcommand*{\@gls@loadtree}{}}
+\@gls@declareoption{nostyles}{%
+ \renewcommand*{\@gls@loadlong}{}%
+ \renewcommand*{\@gls@loadsuper}{}%
+ \renewcommand*{\@gls@loadlist}{}%
+ \renewcommand*{\@gls@loadtree}{}%
+ \let\@glossary@default@style\relax
+}
+\newcommand*{\glspostdescription}{%
+ \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi
+}
+\define@boolkey{glossaries.sty}[gls]{nopostdot}[true]{}
+\glsnopostdotfalse
+\define@boolkey{glossaries.sty}[gls]{nogroupskip}[true]{}
+\glsnogroupskipfalse
+\define@boolkey{glossaries.sty}[gls]{ucmark}[true]{}
+\@ifclassloaded{memoir}
+{%
+ \glsucmarktrue
+}%
+{%
+ \glsucmarkfalse
+}
+\newcommand*{\@gls@define@glossaryentrycounter}{%
+ \ifglsentrycounter
+ \ifundef\c@glossaryentry
+ {%
+ \ifx\@gls@counterwithin\@empty
+ \newcounter{glossaryentry}%
+ \else
+ \newcounter{glossaryentry}[\@gls@counterwithin]%
+ \fi
+ \def\theHglossaryentry{\currentglossary.\theglossaryentry}%
+ }%
+ {}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[gls]{entrycounter}[true]{}
+\glsentrycounterfalse
+\define@key{glossaries.sty}{counterwithin}{%
+ \renewcommand*{\@gls@counterwithin}{#1}%
+ \glsentrycountertrue
+ \@gls@define@glossaryentrycounter
+}
+\newcommand*{\@gls@counterwithin}{}
+\newcommand{\@gls@define@glossarysubentrycounter}{%
+ \ifundef\c@glossarysubentry
+ {%
+ \ifglssubentrycounter
+ \ifglsentrycounter
+ \newcounter{glossarysubentry}[glossaryentry]%
+ \else
+ \newcounter{glossarysubentry}%
+ \fi
+ \def\theHglossarysubentry{\currentglossary.\currentglssubentry.\theglossarysubentry}%
+ \fi
+ }%
+ {}%
+}
+\define@boolkey{glossaries.sty}[gls]{subentrycounter}[true]{}
+\glssubentrycounterfalse
+\newcommand{\glsindexingsetting}{\ifglsxindy xindy\else makeindex\fi}
+\newcommand*{\@glo@default@sorttype}{standard}
+\define@choicekey{glossaries.sty}{sort}{standard,def,use,none,clear}{%
+ \renewcommand*{\@glo@default@sorttype}{#1}%
+ \csname @gls@setupsort@#1\endcsname
+}
+\newcommand*{\glsprestandardsort}[3]{%
+ \glsdosanitizesort
+}
+\newcommand*{\@glo@check@sortallowed}[1]{}
+\newcommand*{\@gls@setupsort@standard}{%
+ \def\do@glo@storeentry{\@glo@storeentry}%
+ \def\@gls@defsortcount##1{}%
+ \def\@gls@defsort##1##2{%
+ \ifx\@glo@sort\@glsdefaultsort
+ \let\@glo@sort\@glo@name
+ \fi
+ \let\glsdosanitizesort\@gls@sanitizesort
+ \glsprestandardsort{\@glo@sort}{##1}{##2}%
+ \expandafter\protected@xdef\csname glo@##2@sort\endcsname{\@glo@sort}%
+ }%
+ \def\@gls@setsort##1{}%
+ \let\@glo@check@sortallowed\@gobble
+}
+\@gls@setupsort@standard
+\newcommand*\glssortnumberfmt[1]{%
+ \ifnum#1<100000 0\fi
+ \ifnum#1<10000 0\fi
+ \ifnum#1<1000 0\fi
+ \ifnum#1<100 0\fi
+ \ifnum#1<10 0\fi
+ \number#1%
+}
+\newcommand*{\@gls@setupsort@def}{%
+ \def\do@glo@storeentry{\@glo@storeentry}%
+ \def\@gls@defsortcount##1{%
+ \expandafter\global
+ \expandafter\newcount\csname glossary@##1@sortcount\endcsname
+ }%
+ \def\@gls@defsort##1##2{%
+ \ifcsundef{glossary@##1@sortcount}%
+ {\@gls@defsortcount{##1}}%
+ {}%
+ \expandafter\global\expandafter
+ \advance\csname glossary@##1@sortcount\endcsname by 1\relax
+ \expandafter\protected@xdef\csname glo@##2@sort\endcsname{%
+ \expandafter\glssortnumberfmt
+ {\csname glossary@##1@sortcount\endcsname}}%
+ }%
+ \def\@gls@setsort##1{}%
+ \let\@glo@check@sortallowed\@gobble
+}
+\newcommand*{\@gls@setupsort@use}{%
+ \let\do@glo@storeentry\@gobble
+ \def\@gls@defsortcount##1{%
+ \expandafter\global
+ \expandafter\newcount\csname glossary@##1@sortcount\endcsname
+ }%
+ \def\@gls@defsort##1##2{%
+ \expandafter\gdef\csname glo@##2@sort\endcsname{}%
+ }%
+ \def\@gls@setsort##1{%
+ \protected@edef\@glo@parent{\csname glo@##1@parent\endcsname}%
+ \ifx\@glo@parent\@empty
+ \else
+ \expandafter\@gls@setsort\expandafter{\@glo@parent}%
+ \fi
+ \protected@edef\@glo@type{\csname glo@##1@type\endcsname}%
+ \protected@edef\@gls@tmp{\csname glo@##1@sort\endcsname}%
+ \ifx\@gls@tmp\@empty
+ \expandafter\global\expandafter
+ \advance\csname glossary@\@glo@type @sortcount\endcsname by 1\relax
+ \expandafter\protected@xdef\csname glo@##1@sort\endcsname{%
+ \expandafter\glssortnumberfmt
+ {\csname glossary@\@glo@type @sortcount\endcsname}}%
+ \@glo@storeentry{##1}%
+ \fi
+ }%
+ \let\@glo@check@sortallowed\@gobble
+}
+\newcommand*{\@gls@setupsort@none}{%
+ \def\glsindexingsetting{none}%
+ \def\do@glo@storeentry##1{}%
+ \def\@gls@defsortcount##1{}%
+ \def\@gls@defsort##1##2{%
+ \expandafter\global\expandafter\let\csname glo@##2@sort\endcsname\@glo@sort
+ }%
+ \def\@gls@setsort##1{}%
+ \renewcommand\@glo@check@sortallowed[1]{\PackageError{glossaries}
+ {Option sort=none not allowed with \string##1}%
+ {(Use sort=def instead)}}%
+}
+\newcommand*{\@gls@setupsort@clear}{%
+ \def\glsindexingsetting{none}%
+ \def\do@glo@storeentry##1{}%
+ \def\@gls@defsortcount##1{}%
+ \def\@gls@defsort##1##2{\csgdef{glo@##2@sort}{}}%
+ \def\@gls@setsort##1{}%
+ \renewcommand\@glo@check@sortallowed[1]{\PackageError{glossaries}
+ {Option sort=clear not allowed with \string##1}%
+ {(Use sort=def instead)}}%
+}
+\newcommand*{\glsdefmain}{%
+ \if@gls@docloaded
+ \newglossary[glg2]{main}{gls2}{glo2}{\glossaryname}%
+ \else
+ \newglossary{main}{gls}{glo}{\glossaryname}%
+ \fi
+ \newcommand*{\gls@tr@set@main@toctitle}{%
+ \translatelet{\glossarytoctitle}{Glossary}%
+ }%
+}
+\newcommand*{\glsdefaulttype}{main}
+\newcommand*{\acronymtype}{\glsdefaulttype}
+\@gls@declareoption{nomain}{%
+ \let\glsdefaulttype\relax
+ \renewcommand*{\glsdefmain}{}%
+}
+\define@boolkey{glossaries.sty}[gls]{acronym}[true]{%
+ \ifglsacronym
+ \renewcommand{\@gls@do@acronymsdef}{%
+ \DeclareAcronymList{acronym}%
+ \newglossary[alg]{acronym}{acr}{acn}{\acronymname}%
+ \renewcommand*{\acronymtype}{acronym}%
+ \newcommand*{\gls@tr@set@acronym@toctitle}{%
+ \translatelet{\glossarytoctitle}{Acronyms}%
+ }%
+ }%
+ \else
+ \let\@gls@do@acronymsdef\relax
+ \fi
+}
+\AtBeginDocument{%
+ \ifglsacronym
+ \providecommand*{\printacronyms}[1][]{%
+ \printglossary[type=\acronymtype,#1]}%
+ \fi
+}
+\newcommand*{\@gls@do@acronymsdef}{}
+\@gls@declareoption{acronyms}{%
+ \glsacronymtrue
+ \def\@gls@do@acronymsdef{%
+ \DeclareAcronymList{acronym}%
+ \newglossary[alg]{acronym}{acr}{acn}{\acronymname}%
+ \renewcommand*{\acronymtype}{acronym}%
+ \newcommand*{\gls@tr@set@acronym@toctitle}{%
+ \translatelet{\glossarytoctitle}{Acronyms}%
+ }%
+ }%
+}
+\newcommand*{\@glsacronymlists}{}
+\newcommand*{\@addtoacronymlists}[1]{%
+ \ifx\@glsacronymlists\@empty
+ \protected@xdef\@glsacronymlists{#1}%
+ \else
+ \protected@xdef\@glsacronymlists{\@glsacronymlists,#1}%
+ \fi
+}
+\newcommand*{\DeclareAcronymList}[1]{%
+ \glsIfListOfAcronyms{#1}{}{\@addtoacronymlists{#1}}%
+}
+\newcommand{\glsIfListOfAcronyms}[1]{%
+ \protected@edef\@do@gls@islistofacronyms{%
+ \noexpand\@gls@islistofacronyms{#1}{\@glsacronymlists}}%
+ \@do@gls@islistofacronyms
+}
+\newcommand{\@gls@islistofacronyms}[4]{%
+ \def\gls@islistofacronyms##1,#1,##2\end@gls@islistofacronyms{%
+ \def\@gls@before{##1}\def\@gls@after{##2}}%
+ \gls@islistofacronyms,#2,#1,\@nil\end@gls@islistofacronyms
+ \ifx\@gls@after\@nnil
+ #4%
+ \else
+ #3%
+ \fi
+}
+\newif\if@glsisacronymlist
+\newcommand*{\gls@checkisacronymlist}[1]{%
+ \glsIfListOfAcronyms{#1}%
+ {\@glsisacronymlisttrue}{\@glsisacronymlistfalse}%
+}
+\newcommand*{\SetAcronymLists}[1]{%
+ \renewcommand*{\@glsacronymlists}{#1}%
+}
+\define@key{glossaries.sty}{acronymlists}{%
+ \DeclareAcronymList{#1}%
+}
+\newcommand{\glscounter}{page}
+\define@key{glossaries.sty}{counter}{%
+ \renewcommand*{\glscounter}{#1}%
+}
+\newcommand*{\@gls@nohyperlist}{}
+\newcommand*{\GlsDeclareNoHyperList}[1]{%
+ \ifdefempty\@gls@nohyperlist
+ {%
+ \renewcommand*{\@gls@nohyperlist}{#1}%
+ }%
+ {%
+ \appto\@gls@nohyperlist{,#1}%
+ }%
+}
+\define@key{glossaries.sty}{nohypertypes}{%
+ \GlsDeclareNoHyperList{#1}%
+}
+\newcommand*{\GlossariesWarning}[1]{%
+ \PackageWarning{glossaries}{#1}%
+}
+\newcommand*{\GlossariesWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries}{#1}%
+}
+\newcommand{\glosortentrieswarning}{%
+ \typeout{Using TeX to sort glossary entries---this may
+ take a while}%
+}
+\@gls@declareoption{nowarn}{%
+ \if@gls@debug
+ \GlossariesWarning{Warnings can't be suppressed in debug mode}%
+ \else
+ \renewcommand*{\GlossariesWarning}[1]{}%
+ \renewcommand*{\GlossariesWarningNoLine}[1]{}%
+ \renewcommand*{\glosortentrieswarning}{}%
+ \renewcommand*{\@gls@missinglang@warn}[2]{}%
+ \fi
+}
+\newcommand*{\@gls@missinglang@warn}[2]{%
+ \PackageWarningNoLine{glossaries}%
+ {No language module detected for `#1'.\MessageBreak
+ Language modules need to be installed separately.\MessageBreak
+ Please check on CTAN for a bundle called\MessageBreak
+ `glossaries-#2' or similar}%
+}
+\@gls@declareoption{nolangwarn}{%
+ \renewcommand*{\@gls@missinglang@warn}[2]{}%
+}
+\newcommand*{\@gls@warnonglossdefined}{%
+ \GlossariesWarning{Overriding \string\printglossary}%
+}
+\newcommand*{\@gls@warnontheglossdefined}{%
+ \GlossariesWarning{Overriding `theglossary' environment}%
+}
+\@gls@declareoption{noredefwarn}{%
+ \renewcommand*{\@gls@warnonglossdefined}{}%
+ \renewcommand*{\@gls@warnontheglossdefined}{}%
+}
+\newcommand*{\glssetexpandfield}[1]{%
+ \csdef{gls@assign@#1@field}##1##2{%
+ \@@gls@expand@field{##1}{#1}{##2}%
+ }%
+}
+\newcommand*{\glssetnoexpandfield}[1]{%
+ \csdef{gls@assign@#1@field}##1##2{%
+ \@@gls@noexpand@field{##1}{#1}{##2}%
+ }%
+}
+\glssetexpandfield{type}
+\glssetnoexpandfield{desc}
+\glssetnoexpandfield{descplural}
+\newcommand*{\@gls@sanitizename}{}
+\glssetnoexpandfield{name}
+\newcommand*{\@gls@sanitizesymbol}{}
+\glssetnoexpandfield{symbol}
+\glssetnoexpandfield{symbolplural}
+\newcommand*{\@gls@sanitizesort}{%
+ \ifglssanitizesort
+ \@@gls@sanitizesort
+ \else
+ \@@gls@nosanitizesort
+ \fi
+}
+\newcommand*\@@gls@sanitizesort{%
+ \@onelevel@sanitize\@glo@sort
+}
+\newcommand*{\@@gls@nosanitizesort}{}
+\newcommand*\@gls@noidx@sanitizesort{%
+ \ifdefvoid\@glo@sort
+ {}%
+ {%
+ \expandafter\@@gls@noidx@sanitizesort\@glo@sort\gls@end@sanitizesort
+ }%
+}
+\def\@@gls@noidx@sanitizesort#1#2\gls@end@sanitizesort{%
+ \def\@glo@sort{#1#2}%
+ \@onelevel@sanitize\@glo@sort
+}
+\newcommand*{\@@gls@noidx@nosanitizesort}{%
+ \ifdefvoid\@glo@sort
+ {}%
+ {%
+ \expandafter\@@gls@noidx@no@sanitizesort\@glo@sort\gls@end@sanitizesort
+ }%
+}
+\def\@@gls@noidx@no@sanitizesort#1#2\gls@end@sanitizesort{%
+ \bgroup
+ \glsnoidxstripaccents
+ \protected@xdef\@@glo@sort{#1#2}%
+ \egroup
+ \let\@glo@sort\@@glo@sort
+}
+\newcommand*\glsnoidxstripaccents{%
+ \let\IeC\@firstofone
+ \let\add@accent@\@secondoftwo
+ \let\@text@composite@x\@secondoftwo
+ \let\@tabacckludge\@secondoftwo
+ \expandafter\def\csname \encodingdefault-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname OT1-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname T1-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname PD1-cmd\endcsname##1##2##3{##3}%
+ \let\'\@firstofone
+ \let\`\@firstofone
+ \let\^\@firstofone
+ \let\"\@firstofone
+ \let\u\@firstofone
+ \let\t\@firstofone
+ \let\d\@firstofone
+ \let\r\@firstofone
+ \let\=\@firstofone
+ \let\.\@firstofone
+ \let\~\@firstofone
+ \let\v\@firstofone
+ \let\H\@firstofone
+ \let\c\@firstofone
+ \let\b\@firstofone
+ \let\a\@secondoftwo
+ \def\AE{AE}%
+ \def\ae{ae}%
+ \def\OE{OE}%
+ \def\oe{oe}%
+ \def\AA{AA}%
+ \def\aa{aa}%
+ \def\L{L}%
+ \def\l{l}%
+ \def\O{O}%
+ \def\o{o}%
+ \def\SS{SS}%
+ \def\ss{ss}%
+ \def\th{th}%
+ \def\TH{TH}%
+ \def\dh{dh}%
+ \def\DH{DH}%
+}
+\@ifl@t@r\fmtversion{2019/10/01}
+{%
+ \appto\glsnoidxstripaccents{\let\UTFviii@two@octets\UTFviii@two@octets@combine}%
+}
+{}
+\newcommand{\@gls@removedoption}[1]{%
+ \PackageError{glossaries}{obsolete package option `#1' has been
+removed. Rollback required or use a newer alternative}
+{Try \string\usepackage[#1]{glossaries}[=v4.46]}%
+}
+\define@boolkey[gls]{sanitize}{description}[true]{%
+ \GlossariesWarning{sanitize={description} package option deprecated}%
+ \ifgls@sanitize@description
+ \glssetnoexpandfield{desc}%
+ \glssetnoexpandfield{descplural}%
+ \else
+ \glssetexpandfield{desc}%
+ \glssetexpandfield{descplural}%
+ \fi
+}
+\define@boolkey[gls]{sanitize}{name}[true]{%
+ \GlossariesWarning{sanitize={name} package option deprecated}%
+ \ifgls@sanitize@name
+ \glssetnoexpandfield{name}%
+ \else
+ \glssetexpandfield{name}%
+ \fi
+}
+\define@boolkey[gls]{sanitize}{symbol}[true]{%
+ \GlossariesWarning{sanitize={symbol} package option deprecated}%
+ \ifgls@sanitize@symbol
+ \glssetnoexpandfield{symbol}%
+ \glssetnoexpandfield{symbolplural}%
+ \else
+ \glssetexpandfield{symbol}%
+ \glssetexpandfield{symbolplural}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[gls]{sanitizesort}[true]{%
+ \ifglssanitizesort
+ \glssetnoexpandfield{sortvalue}%
+ \renewcommand*{\@gls@noidx@setsanitizesort}{%
+ \glssanitizesorttrue
+ \glssetnoexpandfield{sortvalue}%
+ }%
+ \else
+ \glssetexpandfield{sortvalue}%
+ \renewcommand*{\@gls@noidx@setsanitizesort}{%
+ \glssanitizesortfalse
+ \glssetexpandfield{sortvalue}%
+ }%
+ \fi
+}
+\glssanitizesorttrue
+\glssetnoexpandfield{sortvalue}%
+\newcommand*{\@gls@noidx@setsanitizesort}{%
+ \glssanitizesortfalse
+ \glssetexpandfield{sortvalue}%
+}
+\define@choicekey[gls]{sanitize}{sort}{true,false}[true]{%
+ \setbool{glssanitizesort}{#1}%
+ \ifglssanitizesort
+ \glssetnoexpandfield{sortvalue}%
+ \else
+ \glssetexpandfield{sortvalue}%
+ \fi
+ \GlossariesWarning{sanitize={sort} package option
+ deprecated. Use sanitizesort instead}%
+}
+\define@key{glossaries.sty}{sanitize}[description=true,symbol=true,name=true]{%
+ \ifthenelse{\equal{#1}{none}}%
+ {%
+ \GlossariesWarning{sanitize package option deprecated}%
+ \glssetexpandfield{name}%
+ \glssetexpandfield{symbol}%
+ \glssetexpandfield{symbolplural}%
+ \glssetexpandfield{desc}%
+ \glssetexpandfield{descplural}%
+ }%
+ {%
+ \setkeys[gls]{sanitize}{#1}%
+ }%
+}
+\newif\ifglstranslate
+\newcommand*\@gls@usetranslator{%
+ \@ifpackageloaded{polyglossia}%
+ {%
+ \let\glsifusetranslator\@secondoftwo
+ }%
+ {%
+ \@ifpackageloaded{babel}%
+ {%
+ \IfFileExists{translator.sty}%
+ {%
+ \RequirePackage{translator}%
+ \let\glsifusetranslator\@firstoftwo
+ }%
+ {}%
+ }%
+ {}%
+ }%
+}
+\newcommand{\glsifusedtranslatordict}[3]{%
+ \glsifusetranslator
+ {\ifcsdef{ver@glossaries-dictionary-#1.dict}{#2}{#3}}%
+ {#3}%
+}
+\@gls@declareoption{notranslate}{%
+ \glstranslatefalse
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+}
+\define@choicekey{glossaries.sty}{translate}%
+ [\gls@translate@val\gls@translate@nr]%
+ {true,false,babel}[true]%
+ {%
+ \ifcase\gls@translate@nr\relax
+ \glstranslatetrue
+ \renewcommand*\@gls@usetranslator{%
+ \@ifpackageloaded{polyglossia}%
+ {%
+ \let\glsifusetranslator\@secondoftwo
+ }%
+ {%
+ \@ifpackageloaded{babel}%
+ {%
+ \IfFileExists{translator.sty}%
+ {%
+ \RequirePackage{translator}%
+ \let\glsifusetranslator\@firstoftwo
+ }%
+ {}%
+ }%
+ {}%
+ }%
+ }%
+ \or
+ \glstranslatefalse
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+ \or
+ \glstranslatetrue
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+ \fi
+ }
+\glstranslatefalse
+\let\glsifusetranslator\@secondoftwo
+\@ifpackageloaded{translator}%
+{%
+ \glstranslatetrue
+ \let\glsifusetranslator\@firstoftwo
+}%
+{%
+ \@for\gls@thissty:=tracklang,babel,ngerman,polyglossia\do
+ {
+ \@ifpackageloaded{\gls@thissty}%
+ {%
+ \glstranslatetrue
+ \@endfortrue
+ }%
+ {}%
+ }
+}
+\newcommand{\@gls@requested@languages}{}
+\define@key{glossaries.sty}{languages}{%
+ \renewcommand{\@gls@requested@languages}{#1}%
+ \glstranslatetrue
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+}
+\define@boolkey{glossaries.sty}[gls]{indexonlyfirst}[true]{}
+\glsindexonlyfirstfalse
+\define@boolkey{glossaries.sty}[gls]{hyperfirst}[true]{}
+\glshyperfirsttrue
+\newcommand*{\@gls@setacrstyle}{}
+\define@boolkey{glossaries.sty}[glsacr]{footnote}[true]{%
+ \ifglsacrfootnote
+ \@gls@removedoption{footnote}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[glsacr]{description}[true]{%
+ \ifglsacrdescription
+ \@gls@removedoption{description}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[glsacr]{smallcaps}[true]{%
+ \ifglsacrsmallcaps
+ \@gls@removedoption{smallcaps}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[glsacr]{smaller}[true]{%
+ \ifglsacrsmaller
+ \@gls@removedoption{smaller}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[glsacr]{dua}[true]{%
+ \ifglsacrdua
+ \@gls@removedoption{dua}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[glsacr]{shortcuts}[true]{}
+\newcommand*{\glsorder}{word}
+\newcommand*{\@glsorder}[1]{}
+\define@choicekey{glossaries.sty}{order}{word,letter}{%
+ \def\glsorder{#1}}
+\newif\ifglsxindy
+\glsxindyfalse
+\@gls@declareoption{makeindex}{\glsxindyfalse}
+\define@boolkey[gls]{xindy}{glsnumbers}[true]{}
+\gls@xindy@glsnumberstrue
+\def\@xdy@main@language{\languagename}%
+\newcommand*{\gls@xdy@set@lang}[1]{%
+ \ifcsundef{@xdy@#1@language}%
+ {%
+ \ifcsundef{@xdy@\glsdefaulttype @language}
+ {\let\@gls@langmod\@xdy@main@language}%
+ {\letcs\@gls@langmod{@xdy@\glsdefaulttype @language}}%
+ }%
+ {\letcs\@gls@langmod{@xdy@#1@language}}%
+}
+\define@key[gls]{xindy}{language}{\def\@xdy@main@language{#1}}
+\ifdefvoid\inputencodingname
+ {\def\gls@codepage{utf8}}%
+ {\def\gls@codepage{\inputencodingname}}
+\define@key[gls]{xindy}{codepage}{\def\gls@codepage{#1}}
+\define@key{glossaries.sty}{xindy}[]{%
+ \glsxindytrue
+ \setkeys[gls]{xindy}{#1}%
+}
+\@gls@declareoption{xindygloss}{%
+ \glsxindytrue
+}
+\@gls@declareoption{xindynoglsnumbers}{%
+ \glsxindytrue
+ \gls@xindy@glsnumbersfalse
+}
+\providecommand{\@domakeglossaries}[1]{\if@filesw #1\fi}
+\@gls@declareoption{disablemakegloss}{%
+ \ifdefequal\makeglossaries\@no@makeglossaries
+ {%
+ \GlossariesWarning{Option `disablemakegloss' has no effect
+ (\string\makenoidxglossaries\space has already been used)}%
+ }%
+ {%
+ \ifdefequal\@makeglossary\@gobble
+ {%
+ \GlossariesWarning{Option `disablemakegloss' has no effect
+ (\string\makeglossaries\space has already been used)}%
+ }%
+ {%
+ \renewcommand{\@domakeglossaries}[1]{%
+ \PackageInfo{glossaries}{\string\makeglossaries\space and
+ \string\makenoidxglossaries\space have been disabled}%
+ }%
+ }%
+ }%
+}
+\@gls@declareoption{restoremakegloss}{%
+ \ifdefequal\makeglossaries\@no@makeglossaries
+ {%
+ \GlossariesWarning{Option `restoremakegloss' has no effect
+ (\string\makenoidxglossaries\space has already been used)}%
+ }%
+ {%
+ \ifdefequal\@makeglossary\@gobble
+ {%
+ \GlossariesWarning{Option `restoremakegloss' has no effect
+ (\string\makeglossaries\space has already been used)}%
+ }%
+ {%
+ \PackageInfo{glossaries}{\string\makeglossaries\space and
+ \string\makenoidxglossaries\space have been restored}%
+ \let\@domakeglossaries\@firstofone
+ }%
+ }%
+}
+\newcommand*{\@do@write@glslabels}{%
+ \AtEndDocument{\@@do@write@glslabels}%
+ \let\@do@write@glslabels\relax
+}
+\newcommand*{\@@do@write@glslabels}{%
+ \newwrite\@gls@labelsfile
+ \immediate\openout\@gls@labelsfile=\jobname.glslabels
+ \protected@edef\@gls@fulllist{\@glo@types}%
+ \ifdefempty{\@ignored@glossaries}{}%
+ {\protected@eappto\@gls@fulllist{,\@ignored@glossaries}}%
+ \forallglsentries[\@gls@fulllist]{\@glsentry}%
+ {%
+ \ifdefempty{\@glsentry}{}%
+ {%
+ \ifx\do@write@glslabelsname\@gobble
+ \def\@gls@thisentryname{}%
+ \else
+ \letcs{\@gls@thisentryname}{glo@\glsdetoklabel{\@glsentry}@name}%
+ \@onelevel@sanitize\@gls@thisentryname
+ \fi
+ \immediate\write\@gls@labelsfile
+ {\@glsentry\do@write@glslabelsname{\@gls@thisentryname}}%
+ }%
+ }%
+ \immediate\closeout\@gls@labelsfile
+}
+\newcommand*{\do@write@glslabelsname}[1]{}
+\begingroup
+\catcode`\^^I12
+\gdef\@write@glslabelsname#1{^^I#1}
+\endgroup
+\@gls@declareoption{writeglslabels}{\@do@write@glslabels
+ \let\do@write@glslabelsname\@gobble}
+\@gls@declareoption{writeglslabelnames}{\@do@write@glslabels
+ \let\do@write@glslabelsname\@write@glslabelsname}
+\newif\ifglsautomake
+\newcommand{\gls@automake@nr}{1}
+\newcommand{\gls@automake@makegloss}{}
+\newcommand{\gls@automake@option}{automake=\gls@automake@val}
+\newcommand*{\@gls@do@automake@err}{%
+ \PackageError{glossaries}{You must use
+ \string\makeglossaries\space with \gls@automake@option}
+ {%
+ Either remove the \gls@automake@option\space setting or
+ add \string\makeglossaries\space to your document preamble.%
+ }%
+}%
+\define@choicekey{glossaries.sty}{automake}%
+ [\gls@automake@val\gls@automake@nr]{true,false,immediate,makegloss,lite,delayed}[immediate]{%
+ \ifcase\gls@automake@nr\relax
+ \GlossariesWarning{automake=true deprecated. Use automake=delayed for a delayed write}%
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{}%
+ \or
+ \glsautomakefalse
+ \renewcommand{\gls@automake@makegloss}{}%
+ \or
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{}%
+ \or
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{makeglossaries}%
+ \or
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{makeglossaries-lite}%
+ \or
+ \def\gls@automake@nr{0}%
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{}%
+ \fi
+ \renewcommand{\gls@automake@option}{automake=\gls@automake@val}%
+ \ifglsautomake
+ \let\@gls@doautomake\@gls@do@automake@err
+ \else
+ \renewcommand*{\@gls@doautomake}{}%
+ \fi
+}
+\glsautomakefalse
+\newcommand*{\@gls@doautomake}{}
+\AtEndDocument{\@gls@doautomake}
+\@gls@declareoption{automakegloss}{%
+ \glsautomaketrue
+ \renewcommand{\gls@automake@option}{automakegloss}%
+ \def\gls@automake@val{makegloss}%
+ \def\gls@automake@nr{3}%
+ \renewcommand{\gls@automake@makegloss}{makeglossaries}%
+ \let\@gls@doautomake\@gls@do@automake@err
+}
+\@gls@declareoption{automakeglosslite}{%
+ \glsautomaketrue
+ \renewcommand{\gls@automake@option}{automakeglosslite}%
+ \def\gls@automake@val{lite}%
+ \def\gls@automake@nr{4}%
+ \renewcommand{\gls@automake@makegloss}{makeglossaries-lite}%
+ \let\@gls@doautomake\@gls@do@automake@err
+}
+\define@boolkey{glossaries.sty}[gls]{savewrites}[true]{%
+ \ifglssavewrites
+ \renewcommand*{\glswritefiles}{\@glswritefiles}%
+ \else
+ \let\glswritefiles\@empty
+ \fi
+}
+\glssavewritesfalse
+\let\glswritefiles\@empty
+\define@boolkey{glossaries.sty}[gls]{compatible-3.07}[true]{%
+ \ifbool{glscompatible-3.07}%
+ {%
+ \@gls@removedoption{compatible-3.07}%
+ }%
+ {}%
+}
+\boolfalse{glscompatible-3.07}
+\define@boolkey{glossaries.sty}[gls]{compatible-2.07}[true]{%
+ \ifbool{glscompatible-2.07}%
+ {%
+ \@gls@removedoption{compatible-2.07}%
+ }%
+ {}%
+}
+\boolfalse{glscompatible-2.07}
+\let\gls@original@makeglossary\makeglossary
+\let\gls@original@glossary\glossary
+\newcommand*{\@gls@override@glossary}[1][main]{%
+ \GlossariesWarning{Use of \string\glossary\space with
+ glossaries.sty is deprecated. \MessageBreak Indexing should be performed
+ with the user level \MessageBreak commands, such as \string\gls\space or
+ \string\glsadd. If you need the \MessageBreak original definition of
+ \string\glossary\space use the package \MessageBreak options
+ kernelglossredefs=false (to restore the \MessageBreak former definition of
+ \string\glossary) and nomain (if the \MessageBreak file extensions cause a
+ conflict)}%
+ \gls@glossary{#1}%
+}
+\define@choicekey{glossaries.sty}{kernelglossredefs}%
+ [\gls@kernelglossredefs@val\gls@kernelglossredefs@nr]{true,false,nowarn}[true]%
+{%
+ \ifcase\gls@kernelglossredefs@nr\relax
+ \def\glossary{\@gls@override@glossary}%
+ \def\makeglossary{%
+ \GlossariesWarning{Use of \string\makeglossary\space with
+ glossaries.sty is deprecated. Use \string\makeglossaries\space
+ instead. If you need the original definition of
+ \string\makeglossary\space use the package options
+ kernelglossredefs=false (to prevent redefinition of
+ \string\makeglossary) and nomain (if the file extensions cause a
+ conflict)}%
+ \makeglossaries
+ }%
+ \or
+ \let\glossary\gls@original@glossary
+ \let\makeglossary\gls@original@makeglossary
+ \or
+ \def\makeglossary{\makeglossaries}%
+ \renewcommand*{\@gls@override@glossary}[1][main]{%
+ \gls@glossary{##1}%
+ }%
+ \fi
+}
+\@gls@declareoption{symbols}{%
+ \let\@gls@do@symbolsdef\@gls@symbolsdef
+}
+\newcommand*{\@gls@do@symbolsdef}{}
+\newcommand*{\@gls@symbolsdef}{%
+ \newglossary[slg]{symbols}{sls}{slo}{\glssymbolsgroupname}%
+ \newcommand*{\printsymbols}[1][]{\printglossary[type=symbols,##1]}%
+ \newcommand*{\gls@tr@set@symbols@toctitle}{%
+ \translatelet{\glossarytoctitle}{Symbols (glossaries)}%
+ }%
+}%
+\@gls@declareoption{numbers}{%
+ \let\@gls@do@numbersdef\@gls@numbersdef
+}
+\newcommand*{\@gls@do@numbersdef}{}
+\newcommand*{\@gls@numbersdef}{%
+ \newglossary[nlg]{numbers}{nls}{nlo}{\glsnumbersgroupname}%
+ \newcommand*{\printnumbers}[1][]{\printglossary[type=numbers,##1]}%
+ \newcommand*{\gls@tr@set@numbers@toctitle}{%
+ \translatelet{\glossarytoctitle}{Numbers (glossaries)}%
+ }%
+}%
+\@gls@declareoption{index}{%
+ \ifx\@gls@do@indexdef\@empty
+ \let\@gls@do@indexdef\@gls@indexdef
+ \fi
+}
+\@gls@declareoption{noglossaryindex}{%
+ \let\@gls@do@indexdef\relax
+}
+\newcommand*{\@gls@do@indexdef}{}
+\newcommand*{\@gls@indexdef}{%
+ \newglossary[ilg]{index}{ind}{idx}{\indexname}%
+ \newcommand*{\printindex}[1][]{\printglossary[type=index,##1]}%
+ \newcommand*{\newterm}[2][]{%
+ \newglossaryentry{##2}%
+ {type={index},name={##2},description={\nopostdesc},##1}}
+ \let\@gls@do@indexdef\relax
+}%
+\define@choicekey{glossaries.sty}{mfirstuc}%
+ [\gls@mfirstuc@val\gls@mfirstuc@nr]%
+ {expanded,unexpanded}%
+ {%
+ \ifcase\gls@mfirstuc@nr
+ % expanded
+ \renewcommand*{\glsmakefirstuc}[1]{\MFUsentencecase{#1}}%
+ \or
+ % unexpanded
+ \renewcommand*{\glsmakefirstuc}[1]{\MFUsentencecase{\unexpanded{#1}}}%
+ \fi
+ }
+\@for\CurrentOption :=\@declaredoptions\do{%
+ \ifx\CurrentOption\@empty
+ \else
+ \@expandtwoargs
+ \in@ {,\CurrentOption ,}{,\@classoptionslist,\@curroptions,}%
+ \ifin@
+ \@use@ption
+ \expandafter \let\csname ds@\CurrentOption\endcsname\@empty
+ \fi
+ \fi
+}
+\ProcessOptionsX
+\ifglsautomake
+ \ifdef\directlua{\RequirePackage{shellesc}}{}
+\fi
+\disable@keys{glossaries.sty}{compatible-2.07,%
+ xindy,xindygloss,xindynoglsnumbers,makeindex,%
+ acronym,translate,notranslate,languages,nolong,nosuper,notree,nostyles,%
+ nomain,noglossaryindex}
+\newcommand*{\setupglossaries}[1]{%
+ \renewcommand*{\@gls@setacrstyle}{}%
+ \ifglsacrshortcuts
+ \def\@gls@setupshortcuts{\glsacrshortcutstrue}%
+ \else
+ \def\@gls@setupshortcuts{%
+ \ifglsacrshortcuts
+ \DefineAcronymSynonyms
+ \fi
+ }%
+ \fi
+ \glsacrshortcutsfalse
+ \let\@gls@do@numbersdef\relax
+ \let\@gls@do@symbolssdef\relax
+ \let\@gls@do@indexdef\relax
+ \let\@gls@do@acronymsdef\relax
+ \ifglsentrycounter
+ \let\@gls@doentrycounterdef\relax
+ \else
+ \let\@gls@doentrycounterdef\@gls@define@glossaryentrycounter
+ \fi
+ \ifglssubentrycounter
+ \let\@gls@dosubentrycounterdef\relax
+ \else
+ \let\@gls@dosubentrycounterdef\@gls@define@glossarysubentrycounter
+ \fi
+ \setkeys{glossaries.sty}{#1}%
+ \@gls@setacrstyle
+ \@gls@setupshortcuts
+ \@gls@do@acronymsdef
+ \@gls@do@numbersdef
+ \@gls@do@symbolssdef
+ \@gls@do@indexdef
+ \@gls@doentrycounterdef
+ \@gls@dosubentrycounterdef
+}
+\ifthenelse{\equal{\glscounter}{section}}%
+{%
+ \ifcsundef{chapter}{}%
+ {%
+ \let\@gls@old@chapter\@chapter
+ \def\@chapter[#1]#2{\@gls@old@chapter[{#1}]{#2}%
+ \ifcsundef{hyperdef}{}{\hyperdef{section}{\thesection}{}}}%
+ }%
+}%
+{}
+\newcommand*{\@gls@onlypremakeg}{}
+\newcommand*{\@onlypremakeg}[1]{%
+ \ifx\@gls@onlypremakeg\@empty
+ \def\@gls@onlypremakeg{#1}%
+ \else
+ \expandafter\toks@\expandafter{\@gls@onlypremakeg}%
+ \edef\@gls@onlypremakeg{\the\toks@,\noexpand#1}%
+ \fi
+}
+\newcommand*{\@disable@onlypremakeg}{%
+\@for\@thiscs:=\@gls@onlypremakeg\do{%
+ \expandafter\@disable@premakecs\@thiscs%
+}}
+\newcommand*{\@disable@premakecs}[1]{%
+ \def#1{\PackageError{glossaries}{\string#1\space may only be
+ used before \string\makeglossaries}{You can't use
+ \string#1\space after \string\makeglossaries}}%
+}
+\providecommand*{\glossaryname}{Glossary}
+\providecommand*{\acronymname}{Acronyms}
+\newcommand*{\glssettoctitle}[1]{%
+ \def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}
+\providecommand*{\entryname}{Notation}
+\providecommand*{\descriptionname}{Description}
+\providecommand*{\symbolname}{Symbol}
+\providecommand*{\pagelistname}{Page List}
+\providecommand*{\glssymbolsgroupname}{Symbols}
+\providecommand*{\glsnumbersgroupname}{Numbers}
+\newcommand*{\glspluralsuffix}{s}
+\newcommand*{\glsacrpluralsuffix}{\glspluralsuffix}
+\newcommand*{\glsupacrpluralsuffix}{\glstextup{\glsacrpluralsuffix}}
+\providecommand*{\seename}{see}
+\providecommand*{\andname}{\&}
+\newcommand*{\RequireGlossariesLang}[1]{%
+ \@ifundefined{ver@glossaries-#1.ldf}{\input{glossaries-#1.ldf}}{}%
+}
+\newcommand*{\ProvidesGlossariesLang}[1]{%
+ \ProvidesFile{glossaries-#1.ldf}%
+}
+\newcommand*{\addglossarytocaptions}[1]{}
+\ifglstranslate
+ \RequirePackage{tracklang}[2019/11/30]
+ \ifdefvoid\@gls@requested@languages{}%
+ {%
+ \@for\@gls@thislang:=\@gls@requested@languages\do{%
+ \TrackIfKnownLanguage{\@gls@thislang}{}%
+ {\GlossariesWarning{unknown language `\@gls@thislang'}}%
+ }%
+ }%
+ \@gls@usetranslator
+ \@ifpackageloaded{translator}
+ {%
+ \ifboolexpr
+ {
+ test {\ifdefstring{\trans@languages}{English}}
+ and not
+ test {\ifdefstring{bbl@loaded}{english}}
+ }
+ {%
+ \let\glsifusetranslator\@secondoftwo
+ }%
+ {%
+ \usedictionary{glossaries-dictionary}%
+ \renewcommand*{\addglossarytocaptions}[1]{%
+ \ifcsundef{captions#1}{}%
+ {%
+ \expandafter\let\expandafter\@gls@tmp\csname captions#1\endcsname
+ \expandafter\toks@\expandafter{\@gls@tmp
+ \renewcommand*{\glossaryname}{\translate{Glossary}}%
+ }%
+ \expandafter\edef\csname captions#1\endcsname{\the\toks@}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossaries-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesLang{\CurrentTrackedTag}%
+ }%
+ {%
+ \@gls@missinglang@warn\this@dialect\CurrentTrackedLanguage
+ }%
+ }%
+ }%
+ {}%
+ \glsifusetranslator
+ {%
+ \renewcommand*{\glssettoctitle}[1]{%
+ \ifcsdef{gls@tr@set@#1@toctitle}%
+ {%
+ \csuse{gls@tr@set@#1@toctitle}%
+ }%
+ {%
+ \def\glossarytoctitle{\csname @glotype@#1@title\endcsname}%
+ }%
+ }%
+ \renewcommand*{\glossaryname}{\translate{Glossary}}%
+ \renewcommand*{\acronymname}{\translate{Acronyms}}%
+ \renewcommand*{\entryname}{\translate{Notation (glossaries)}}%
+ \renewcommand*{\descriptionname}{%
+ \translate{Description (glossaries)}}%
+ \renewcommand*{\symbolname}{\translate{Symbol (glossaries)}}%
+ \renewcommand*{\pagelistname}{%
+ \translate{Page List (glossaries)}}%
+ \renewcommand*{\glssymbolsgroupname}{%
+ \translate{Symbols (glossaries)}}%
+ \renewcommand*{\glsnumbersgroupname}{%
+ \translate{Numbers (glossaries)}}%
+ }{}%
+\fi
+\DeclareRobustCommand*{\nopostdesc}{}
+\newcommand*{\@nopostdesc}{%
+ \let\org@glspostdescription\glspostdescription
+ \def\glspostdescription{%
+ \let\glspostdescription\org@glspostdescription}%
+}
+\newcommand*{\@no@post@desc}{\nopostdesc}
+\newcommand{\glspar}{\par}
+\newcommand{\setStyleFile}[1]{%
+ \renewcommand*{\gls@istfilebase}{#1}%
+ \ifglsxindy
+ \def\istfilename{\gls@istfilebase.xdy}
+ \else
+ \def\istfilename{\gls@istfilebase.ist}
+ \fi
+}
+\@onlypremakeg\setStyleFile
+\ifglsxindy
+ \def\istfilename{\gls@istfilebase.xdy}
+\else
+ \def\istfilename{\gls@istfilebase.ist}
+\fi
+\newcommand*{\gls@istfilebase}{\jobname}
+\newcommand*{\@istfilename}[1]{}
+\newcommand*{\glscompositor}{.}
+\newcommand*{\glsSetCompositor}[1]{%
+ \renewcommand*{\glscompositor}{#1}}
+\@onlypremakeg\glsSetCompositor
+\newcommand*{\@glsAlphacompositor}{\glscompositor}
+\ifglsxindy
+ \newcommand*\glsSetAlphaCompositor[1]{%
+ \renewcommand*\@glsAlphacompositor{#1}}
+\else
+ \newcommand*\glsSetAlphaCompositor[1]{%
+ \glsnoxindywarning\glsSetAlphaCompositor}
+\fi
+\@onlypremakeg\glsSetAlphaCompositor
+\newcommand*{\gls@suffixF}{}
+\newcommand*{\glsSetSuffixF}[1]{%
+ \renewcommand*{\gls@suffixF}{#1}}
+\@onlypremakeg\glsSetSuffixF
+\newcommand*{\gls@suffixFF}{}
+\newcommand*{\glsSetSuffixFF}[1]{%
+ \renewcommand*{\gls@suffixFF}{#1}%
+}
+\ifcsundef{hyperlink}%
+{%
+ \newcommand*{\glsnumberformat}[1]{#1}%
+}%
+{%
+ \newcommand*{\glsnumberformat}[1]{\glshypernumber{#1}}%
+}
+\newcommand{\glslocationcstoencap}[3]{\csuse{#2}{\csuse{#1}{#3}}}
+\newcommand{\delimN}{, }
+\newcommand{\delimR}{--}
+\newcommand*{\glossarypreamble}{%
+ \csuse{@glossarypreamble@\currentglossary}%
+}
+\newcommand{\setglossarypreamble}[2][\glsdefaulttype]{%
+ \ifglossaryexists*{#1}%
+ {\csgdef{@glossarypreamble@#1}{#2}}%
+ {\GlossariesWarning{Glossary `#1' is not defined}}%
+}
+\newcommand*{\glossarypostamble}{}
+\newcommand*{\glossarysection}[2][\@gls@title]{%
+ \def\@gls@title{#2}%
+ \ifcsundef{phantomsection}%
+ {%
+ \@glossarysection{#1}{#2}%
+ }%
+ {%
+ \@p@glossarysection{#1}{#2}%
+ }%
+ \glsglossarymark{\glossarytoctitle}%
+}
+\ifcsundef{glossarymark}%
+{%
+ \newcommand{\glsglossarymark}[1]{\glossarymark{#1}}
+}%
+{%
+ \@ifclassloaded{memoir}
+ {%
+ \newcommand{\glsglossarymark}[1]{%
+ \ifglsucmark
+ \markboth{\memUChead{#1}}{\memUChead{#1}}%
+ \else
+ \markboth{#1}{#1}%
+ \fi
+ }
+ }%
+ {%
+ \newcommand{\glsglossarymark}[1]{%
+ \ifglsucmark
+ \@mkboth{\glsuppercase{#1}}{\glsuppercase{#1}}%
+ \else
+ \@mkboth{#1}{#1}%
+ \fi
+ }
+ }
+}
+\providecommand{\glossarymark}[1]{%
+ \ifglsucmark
+ \@mkboth{\glsuppercase{#1}}{\glsuppercase{#1}}%
+ \else
+ \@mkboth{#1}{#1}%
+ \fi
+}
+\newcommand*{\setglossarysection}[1]{%
+\setkeys{glossaries.sty}{section=#1}}
+\newcommand*{\@glossarysection}[2]{%
+ \ifdefempty\@@glossarysecstar
+ {%
+ \csname\@@glossarysec\endcsname[#1]{#2}%
+ }%
+ {%
+ \csname\@@glossarysec\endcsname*{#2}%
+ \@gls@toc{#1}{\@@glossarysec}%
+ }%
+ \@@glossaryseclabel
+}
+\newcommand*{\@p@glossarysection}[2]{%
+ \glsclearpage
+ \phantomsection
+ \ifdefempty\@@glossarysecstar
+ {%
+ \csname\@@glossarysec\endcsname{#2}%
+ }%
+ {%
+ \@gls@toc{#1}{\@@glossarysec}%
+ \csname\@@glossarysec\endcsname*{#2}%
+ }%
+ \@@glossaryseclabel
+}
+\newcommand*{\gls@doclearpage}{%
+ \ifthenelse{\equal{\@@glossarysec}{chapter}}%
+ {%
+ \ifcsundef{cleardoublepage}%
+ {%
+ \clearpage
+ }%
+ {%
+ \ifcsdef{if@openright}%
+ {%
+ \if@openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ }%
+ {%
+ \cleardoublepage
+ }%
+ }%
+ }%
+ {}%
+}
+\newcommand*{\glsclearpage}{\gls@doclearpage}
+\newcommand*{\@gls@toc}[2]{%
+ \ifglstoc
+ \ifglsnumberline
+ \addcontentsline{toc}{#2}{\protect\numberline{}#1}%
+ \else
+ \addcontentsline{toc}{#2}{#1}%
+ \fi
+ \fi
+}
+\newcommand*{\glsnoxindywarning}[1]{%
+ \GlossariesWarning{Not in xindy mode --- ignoring \string#1}%
+}
+\newcommand*{\glsnomakeindexwarning}[1]{%
+ \GlossariesWarning{Not in makeindex mode --- ignoring \string#1}%
+}
+\ifglsxindy
+ \edef\@xdyattributes{\string"default\string"}%
+\fi
+\ifglsxindy
+ \edef\@xdyattributelist{}%
+\fi
+\ifglsxindy
+ \def\@xdylocref{}
+\fi
+\newcommand*{\@gls@ifinlist}[4]{%
+ \def\@do@ifinlist##1,#1,##2\end@doifinlist{%
+ \def\@gls@listsuffix{##2}%
+ \ifx\@gls@listsuffix\@empty
+ #4%
+ \else
+ #3%
+ \fi
+ }%
+ \@do@ifinlist,#2,#1,\end@doifinlist
+}
+\ifglsxindy
+ \newcommand*{\@xdycounters}{\glscounter}
+ \newcommand*\GlsAddXdyCounters[1]{%
+ \@for\@gls@ctr:=#1\do{%
+ \edef\@do@addcounter{%
+ \noexpand\@gls@ifinlist{\@gls@ctr}{\@xdycounters}{}%
+ {%
+ \noexpand\edef\noexpand\@xdycounters{\@xdycounters,%
+ \noexpand\@gls@ctr}%
+ }%
+ }%
+ \@do@addcounter
+ }
+ }
+ \@onlypremakeg\GlsAddXdyCounters
+\else
+ \newcommand*\GlsAddXdyCounters[1]{%
+ \glsnoxindywarning\GlsAddXdyAttribute
+ }
+\fi
+\newcommand*\@disabled@glsaddxdycounters{%
+ \PackageError{glossaries}{\string\GlsAddXdyCounters\space
+ can't be used after \string\GlsAddXdyAttribute}{Move all
+ occurrences of \string\GlsAddXdyCounters\space before the first
+ instance of \string\GlsAddXdyAttribute}%
+}
+\ifglsxindy
+ \newcommand*\@glsaddxdyattribute[2]{%
+ \edef\@xdyattributes{\@xdyattributes ^^J
+ \string"#2#1\string"}%
+ \expandafter\toks@\expandafter{\@xdylocref}%
+ \edef\@xdylocref{\the\toks@ ^^J%
+ (markup-locref
+ :open \string"\glstildechar n%
+ \expandafter\string\csname glsX#2X#1\endcsname
+ \string" ^^J
+ :close \string"\string" ^^J
+ :attr \string"#2#1\string")}%
+ \expandafter\gdef\csname glsX#2X#1\endcsname##1##2{%
+ \setentrycounter[##1]{#2}\csname #1\endcsname{##2}%
+ }%
+ }
+ \newcommand*\GlsAddXdyAttribute[1]{%
+ \ifx\@xdyattributelist\@empty
+ \edef\@xdyattributelist{#1}%
+ \else
+ \edef\@xdyattributelist{\@xdyattributelist,#1}%
+ \fi
+ \edef\@xdyattributes{\@xdyattributes ^^J
+ \string"#1\string"}%
+ \@for\@this@counter:=\@xdycounters\do{%
+ \protected@edef\gls@do@addxdyattribute{%
+ \noexpand\@glsaddxdyattribute{#1}{\@this@counter}%
+ }
+ \gls@do@addxdyattribute
+ }%
+ \let\GlsAddXdyCounters\@disabled@glsaddxdycounters
+ }
+ \@onlypremakeg\GlsAddXdyAttribute
+\else
+ \newcommand*\GlsAddXdyAttribute[1]{%
+ \glsnoxindywarning\GlsAddXdyAttribute}
+\fi
+\ifglsxindy
+\newcommand*{\@gls@addpredefinedattributes}{%
+ \GlsAddXdyAttribute{glsnumberformat}
+ \GlsAddXdyAttribute{textrm}
+ \GlsAddXdyAttribute{textsf}
+ \GlsAddXdyAttribute{texttt}
+ \GlsAddXdyAttribute{textbf}
+ \GlsAddXdyAttribute{textmd}
+ \GlsAddXdyAttribute{textit}
+ \GlsAddXdyAttribute{textup}
+ \GlsAddXdyAttribute{textsl}
+ \GlsAddXdyAttribute{textsc}
+ \GlsAddXdyAttribute{emph}
+ \GlsAddXdyAttribute{glshypernumber}
+ \GlsAddXdyAttribute{hyperrm}
+ \GlsAddXdyAttribute{hypersf}
+ \GlsAddXdyAttribute{hypertt}
+ \GlsAddXdyAttribute{hyperbf}
+ \GlsAddXdyAttribute{hypermd}
+ \GlsAddXdyAttribute{hyperit}
+ \GlsAddXdyAttribute{hyperup}
+ \GlsAddXdyAttribute{hypersl}
+ \GlsAddXdyAttribute{hypersc}
+ \GlsAddXdyAttribute{hyperemph}
+ \GlsAddXdyAttribute{glsignore}
+}
+\else
+ \let\@gls@addpredefinedattributes\relax
+\fi
+\def\@xdyuseralphabets{}
+\ifglsxindy
+ \newcommand*{\GlsAddXdyAlphabet}[2]{%
+ \edef\@xdyuseralphabets{%
+ \@xdyuseralphabets ^^J
+ (define-alphabet "#1" (#2))}}
+\else
+ \newcommand*{\GlsAddXdyAlphabet}[2]{%
+ \glsnoxindywarning\GlsAddXdyAlphabet}
+\fi
+\ifglsxindy
+ \newcommand*{\@gls@xdy@locationlist}{%
+ roman-page-numbers,%
+ Roman-page-numbers,%
+ arabic-page-numbers,%
+ alpha-page-numbers,%
+ Alpha-page-numbers,%
+ Appendix-page-numbers,%
+ arabic-section-numbers%
+ }
+ \protected@edef\@gls@roman{\@roman{0\string"
+ \string"roman-numbers-lowercase\string" :sep \string"}}%
+ \@onelevel@sanitize\@gls@roman
+ \edef\@gls@tmp{\string" \string"roman-numbers-lowercase\string"
+ :sep \string"}%
+ \@onelevel@sanitize\@gls@tmp
+ \ifx\@gls@tmp\@gls@roman
+ \expandafter
+ \edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{%
+ \string"roman-numbers-lowercase\string"%
+ }%
+ \else
+ \expandafter
+ \edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{
+ :sep \string"\@gls@roman\string"%
+ }%
+ \fi
+ \expandafter\def\csname @gls@xdy@Lclass@Roman-page-numbers\endcsname{%
+ \string"roman-numbers-uppercase\string"%
+ }%
+ \expandafter\def\csname @gls@xdy@Lclass@arabic-page-numbers\endcsname{%
+ \string"arabic-numbers\string"%
+ }%
+ \expandafter\def\csname @gls@xdy@Lclass@alpha-page-numbers\endcsname{%
+ \string"alpha\string"%
+ }%
+ \expandafter\def\csname @gls@xdy@Lclass@Alpha-page-numbers\endcsname{%
+ \string"ALPHA\string"%
+ }%
+ \expandafter\def\csname @gls@xdy@Lclass@Appendix-page-numbers\endcsname{%
+ \string"ALPHA\string"
+ :sep \string"\@glsAlphacompositor\string"
+ \string"arabic-numbers\string"%
+ }
+ \expandafter\def\csname @gls@xdy@Lclass@arabic-section-numbers\endcsname{%
+ \string"arabic-numbers\string"
+ :sep \string"\glscompositor\string"
+ \string"arabic-numbers\string"%
+ }%
+ \def\@xdyuserlocationdefs{}
+ \def\@xdyuserlocationnames{}
+\fi
+\ifglsxindy
+ \newcommand\@xdycrossrefhook{}
+\fi
+\ifglsxindy
+ \newcommand*{\GlsAddXdyLocation}[3][]{%
+ \def\@gls@tmp{#1}%
+ \ifx\@gls@tmp\@empty
+ \edef\@xdyuserlocationdefs{%
+ \@xdyuserlocationdefs ^^J%
+ (define-location-class \string"#2\string"^^J\space\space
+ \space(:sep \string"{}\glsopenbrace\string" #3
+ :sep \string"\glsclosebrace\string"))
+ }%
+ \else
+ \edef\@xdyuserlocationdefs{%
+ \@xdyuserlocationdefs ^^J%
+ (define-location-class \string"#2\string"^^J\space\space
+ \space(:sep "\glsopenbrace"
+ #1
+ :sep "\glsclosebrace\glsopenbrace" #3
+ :sep "\glsclosebrace"))
+ }%
+ \fi
+ \edef\@xdyuserlocationnames{%
+ \@xdyuserlocationnames^^J\space\space\space
+ \string"#2\string"}%
+ }
+ \@onlypremakeg\GlsAddXdyLocation
+\else
+ \newcommand*{\GlsAddXdyLocation}[2]{%
+ \glsnoxindywarning\GlsAddXdyLocation}
+\fi
+\ifglsxindy
+ \def\@xdylocationclassorder{^^J\space\space\space
+ \string"roman-page-numbers\string"^^J\space\space\space
+ \string"arabic-page-numbers\string"^^J\space\space\space
+ \string"arabic-section-numbers\string"^^J\space\space\space
+ \string"alpha-page-numbers\string"^^J\space\space\space
+ \string"Roman-page-numbers\string"^^J\space\space\space
+ \string"Alpha-page-numbers\string"^^J\space\space\space
+ \string"Appendix-page-numbers\string"
+ \@xdyuserlocationnames^^J\space\space\space
+ \string"see\string"
+ }
+\fi
+\ifglsxindy
+ \newcommand*\GlsSetXdyLocationClassOrder[1]{%
+ \def\@xdylocationclassorder{#1}}
+\else
+ \newcommand*\GlsSetXdyLocationClassOrder[1]{%
+ \glsnoxindywarning\GlsSetXdyLocationClassOrder}
+\fi
+\ifglsxindy
+ \def\@xdysortrules{}
+\fi
+\ifglsxindy
+ \newcommand*\GlsAddSortRule[2]{%
+ \expandafter\toks@\expandafter{\@xdysortrules}%
+ \protected@edef\@xdysortrules{\the\toks@ ^^J
+ (sort-rule \string"#1\string" \string"#2\string")}%
+ }
+\else
+ \newcommand*\GlsAddSortRule[2]{%
+ \glsnoxindywarning\GlsAddSortRule}
+\fi
+\ifglsxindy
+ \def\@xdyrequiredstyles{tex}
+\fi
+\ifglsxindy
+ \newcommand*\GlsAddXdyStyle[1]{%
+ \edef\@xdyrequiredstyles{\@xdyrequiredstyles,#1}}%
+\else
+ \newcommand*\GlsAddXdyStyle[1]{%
+ \glsnoxindywarning\GlsAddXdyStyle}
+\fi
+\ifglsxindy
+ \newcommand*\GlsSetXdyStyles[1]{%
+ \edef\@xdyrequiredstyles{#1}}
+\else
+ \newcommand*\GlsSetXdyStyles[1]{%
+ \glsnoxindywarning\GlsSetXdyStyles}
+\fi
+\def\@xdylanguage#1#2{}
+\ifglsxindy
+ \newcommand*\GlsSetXdyLanguage[2][\glsdefaulttype]{%
+ \ifglossaryexists{#1}{%
+ \expandafter\def\csname @xdy@#1@language\endcsname{#2}%
+ }{%
+ \PackageError{glossaries}{Can't set language type for
+ glossary type `#1' --- no such glossary}{%
+ You have specified a glossary type that doesn't exist}}}
+\else
+ \newcommand*\GlsSetXdyLanguage[2][]{%
+ \glsnoxindywarning\GlsSetXdyLanguage}
+\fi
+\def\@gls@codepage#1#2{}
+\ifglsxindy
+ \newcommand*{\GlsSetXdyCodePage}[1]{%
+ \renewcommand*{\gls@codepage}{#1}%
+ }
+ \AtBeginDocument{%
+ \ifx\gls@codepage\@empty
+ \@ifpackageloaded{fontspec}{\def\gls@codepage{utf8}}{}%
+ \fi
+ }
+\else
+ \newcommand*{\GlsSetXdyCodePage}[1]{%
+ \glsnoxindywarning\GlsSetXdyCodePage}
+\fi
+\ifglsxindy
+ \ifgls@xindy@glsnumbers
+ \def\@xdylettergroups{(define-letter-group
+ \string"glsnumbers\string"^^J\space\space\space
+ :prefixes (\string"0\string" \string"1\string"
+ \string"2\string" \string"3\string" \string"4\string"
+ \string"5\string" \string"6\string" \string"7\string"
+ \string"8\string" \string"9\string")^^J\space\space\space
+ \@xdynumbergrouporder)}
+ \else
+ \def\@xdylettergroups{}
+ \fi
+\fi
+ \newcommand*\GlsAddLetterGroup[2]{%
+ \expandafter\toks@\expandafter{\@xdylettergroups}%
+ \protected@edef\@xdylettergroups{\the\toks@^^J%
+ (define-letter-group \string"#1\string"^^J\space\space\space#2)}%
+ }%
+\newcommand*{\forallglossaries}[3][\@glo@types]{%
+ \@for#2:=#1\do{\ifx#2\@empty\else#3\fi}%
+}
+
+\newcommand*{\forallacronyms}[2]{%
+ \@for#1:=\@glsacronymlists\do{\ifx#1\@empty\else#2\fi}%
+}
+\newcommand*{\forglsentries}[3][\glsdefaulttype]{%
+ \protected@edef\@@glo@list{\csname glolist@#1\endcsname}%
+ \@for#2:=\@@glo@list\do
+ {%
+ \ifdefempty{#2}{}{#3}%
+ }%
+}
+\newcommand*{\forallglsentries}[3][\@glo@types]{%
+ \expandafter\forallglossaries\expandafter[#1]{\@@this@glo@}%
+ {%
+ \forglsentries[\@@this@glo@]{#2}{#3}%
+ }%
+}
+\newcommand{\ifglossaryexists}{%
+ \@ifstar\s@ifglossaryexists\@ifglossaryexists
+}
+\newcommand{\@ifglossaryexists}[3]{%
+ \ifcsundef{@glotype@#1@out}{#3}{#2}%
+}
+\newcommand{\s@ifglossaryexists}[3]{%
+ \ifcsundef{glolist@#1}{#3}{#2}%
+}
+\newcommand*{\glsdetoklabel}[1]{#1}
+\newcommand{\ifglsentryexists}[3]{%
+ \ifcsundef{glo@\glsdetoklabel{#1}@name}{#3}{#2}%
+}
+\newcommand*{\ifglsused}[3]{%
+ \ifbool{glo@\glsdetoklabel{#1}@flag}{#2}{#3}%
+}
+\newcommand{\glsdoifexists}[2]{%
+ \ifglsentryexists{#1}{#2}{%
+ \PackageError{glossaries}{Glossary entry `\glsdetoklabel{#1}'
+ has not been defined}{You need to define a glossary entry before you
+ can use it.}}%
+}
+\newcommand{\glsdoifnoexists}[2]{%
+ \ifglsentryexists{#1}{%
+ \PackageError{glossaries}{Glossary entry `\glsdetoklabel{#1}' has already
+ been defined}{}}{#2}%
+}
+\newcommand{\glsdoifexistsorwarn}[2]{%
+ \ifglsentryexists{#1}{#2}{%
+ \GlossariesWarning{Glossary entry `\glsdetoklabel{#1}'
+ has not been defined}%
+ }%
+}
+\newcommand{\glsdoifexistsordo}[3]{%
+ \ifglsentryexists{#1}{#2}{%
+ \PackageError{glossaries}{Glossary entry `\glsdetoklabel{#1}'
+ has not been defined}{You need to define a glossary entry before you
+ can use it.}%
+ #3%
+ }%
+}
+\newcommand{\doifglossarynoexistsordo}[3]{%
+ \ifglossaryexists*{#1}%
+ {%
+ \PackageError{glossaries}{Glossary type `#1' already exists}{}%
+ #3%
+ }%
+ {#2}%
+}
+\newrobustcmd{\ifglshaschildren}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \def\do@glshaschildren{#3}%
+ \protected@edef\@gls@thislabel{\glsdetoklabel{#1}}%
+ \expandafter\forglsentries\expandafter
+ [\csname glo@\@gls@thislabel @type\endcsname]
+ {\glo@label}%
+ {%
+ \letcs\glo@parent{glo@\glo@label @parent}%
+ \ifdefequal\@gls@thislabel\glo@parent
+ {%
+ \def\do@glshaschildren{#2}%
+ \@endfortrue
+ }%
+ {}%
+ }%
+ \do@glshaschildren
+ }%
+}
+\newcommand{\ifglshasparent}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \ifcsempty{glo@\glsdetoklabel{#1}@parent}{#3}{#2}%
+ }%
+}
+\newcommand*{\ifglshasdesc}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@desc}%
+ {#3}%
+ {#2}%
+}
+\newcommand*{\ifglsdescsuppressed}[3]{%
+ \ifcsequal{glo@\glsdetoklabel{#1}@desc}{@no@post@desc}%
+ {#2}%
+ {#3}%
+}
+\newrobustcmd*{\ifglshassymbol}[3]{%
+ \letcs{\@glo@symbol}{glo@\glsdetoklabel{#1}@symbol}%
+ \ifdefempty\@glo@symbol
+ {#3}%
+ {%
+ \ifdefequal\@glo@symbol\@gls@default@value
+ {#3}%
+ {#2}%
+ }%
+}
+\newrobustcmd*{\ifglshaslong}[3]{%
+ \letcs{\@glo@long}{glo@\glsdetoklabel{#1}@long}%
+ \ifdefempty\@glo@long
+ {#3}%
+ {%
+ \ifdefequal\@glo@long\@gls@default@value
+ {#3}%
+ {#2}%
+ }%
+}
+\newrobustcmd*{\ifglshasshort}[3]{%
+ \letcs{\@glo@short}{glo@\glsdetoklabel{#1}@short}%
+ \ifdefempty\@glo@short
+ {#3}%
+ {%
+ \ifdefequal\@glo@short\@gls@default@value
+ {#3}%
+ {#2}%
+ }%
+}
+\newcommand{\ifglsfieldvoid}[4]{\ifcsvoid{glo@\glsdetoklabel{#2}@#1}{#3}{#4}}
+\newrobustcmd*{\ifglshasfield}[4]{%
+ \glsdoifexists{#2}%
+ {%
+ \letcs{\@glo@thisvalue}{glo@\glsdetoklabel{#2}@#1}%
+ \ifdef\@glo@thisvalue
+ {%
+ \ifdefempty\@glo@thisvalue
+ {%
+ #4%
+ }%
+ {%
+ \ifdefequal\@glo@thisvalue\@gls@default@value
+ {%
+ #4%
+ }%
+ {%
+ \let\glscurrentfieldvalue\@glo@thisvalue
+ #3%
+ }%
+ }%
+ }%
+ {%
+ \@gls@fetchfield{\@gls@thisfield}{#1}%
+ \ifdef\@gls@thisfield
+ {%
+ \letcs{\@glo@thisvalue}{glo@\glsdetoklabel{#2}@\@gls@thisfield}%
+ \ifdefempty\@glo@thisvalue
+ {%
+ #4%
+ }%
+ {%
+ \ifdefequal\@glo@thisvalue\@gls@default@value
+ {%
+ #4%
+ }%
+ {%
+ \let\glscurrentfieldvalue\@glo@thisvalue
+ #3%
+ }%
+ }%
+ }%
+ {%
+ \GlossariesWarning{Unknown entry field `#1'}%
+ #4%
+ }%
+ }%
+ }%
+}
+\newcommand*{\glscurrentfieldvalue}{}
+\newcommand*{\@glo@types}{,}
+\newcommand*\@gls@provide@newglossary{%
+ \protected@write\@auxout{}{\string\providecommand\string\@newglossary[4]{}}%
+ \let\@gls@provide@newglossary\relax
+}
+\newcommand*{\@gls@defaulttype}{\glsdefaulttype}
+\newcommand*{\defglsentryfmt}[2][\glsdefaulttype]{%
+ \protected@edef\@glo@tmp{#1}%
+ \ifx\@glo@tmp\@gls@defaulttype
+ \GlossariesWarning{\string\defglsentryfmt\space attempting to set
+ a display style for \string\glsdefaulttype\space but there
+ doesn't seem to be a default glossary. If you have used
+ `nomain', you need to define an alternative glossary}%
+ \else
+ \csgdef{gls@\@glo@tmp @entryfmt}{#2}%
+ \fi
+}
+\newcommand*{\gls@doentryfmt}[1]{\csuse{gls@#1@entryfmt}}
+\newcommand*{\@gls@forbidtexext}[1]{%
+ \ifboolexpr{test {\ifdefstring{#1}{tex}}
+ or test {\ifdefstring{#1}{TEX}}}
+ {%
+ \def#1{nottex}%
+ \PackageError{glossaries}%
+ {Forbidden `.tex' extension replaced with `.nottex'}%
+ {I'm sorry, I can't allow you to do something so reckless.\MessageBreak
+ Don't use `.tex' as an extension for a temporary file.}%
+ }%
+ {%
+ }%
+}
+\newcommand*{\gls@gobbleopt}{\new@ifnextchar[{\@gls@gobbleopt}{}}
+\def\@gls@gobbleopt[#1]{}
+\newcommand*{\newglossary}{\@ifstar\s@newglossary\ns@newglossary}
+\newcommand*{\s@newglossary}[2]{%
+ \ns@newglossary[#1-glg]{#1}{#1-gls}{#1-glo}{#2}%
+}
+\newcommand*{\ns@newglossary}[5][glg]{%
+ \doifglossarynoexistsordo{#2}%
+ {%
+ \ifundef\glsdefaulttype
+ {%
+ \gdef\glsdefaulttype{#2}%
+ }{}%
+ \toks@{#2}\protected@edef\@glo@types{\@glo@types\the\toks@,}%
+ \expandafter\gdef\csname glolist@#2\endcsname{,}%
+ \expandafter\edef\csname @glotype@#2@log\endcsname{#1}%
+ \expandafter\edef\csname @glotype@#2@in\endcsname{#3}%
+ \expandafter\edef\csname @glotype@#2@out\endcsname{#4}%
+ \expandafter\@gls@forbidtexext\csname @glotype@#2@log\endcsname
+ \expandafter\@gls@forbidtexext\csname @glotype@#2@in\endcsname
+ \expandafter\@gls@forbidtexext\csname @glotype@#2@out\endcsname
+ \expandafter\def\csname @glotype@#2@title\endcsname{#5}%
+ \@gls@provide@newglossary
+ \protected@write\@auxout{}{\string\@newglossary{#2}{#1}{#3}{#4}}%
+ \ifcsundef{gls@#2@entryfmt}%
+ {%
+ \defglsentryfmt[#2]{\glsentryfmt}%
+ }%
+ {}%
+ \@gls@defsortcount{#2}%
+ \@ifnextchar[{\@gls@setcounter{#2}}%
+ {\@gls@setcounter{#2}[\glscounter]}%
+ }%
+ {%
+ \gls@gobbleopt
+ }%
+}
+\newcommand*{\altnewglossary}[3]{%
+ \newglossary[#2-glg]{#1}{#2-gls}{#2-glo}{#3}%
+}
+\@onlypreamble{\newglossary}
+\@onlypremakeg\newglossary
+\newcommand*{\@newglossary}[4]{}
+\def\@gls@setcounter#1[#2]{%
+ \expandafter\def\csname @glotype@#1@counter\endcsname{#2}%
+ \ifglsxindy
+ \GlsAddXdyCounters{#2}%
+ \fi
+}
+\newcommand*{\@gls@getcounter}[1]{%
+ \csname @glotype@#1@counter\endcsname
+}
+\glsdefmain
+\@gls@do@acronymsdef
+\@gls@do@symbolsdef
+\@gls@do@numbersdef
+\@gls@do@indexdef
+\newcommand*{\newignoredglossary}[1]{%
+ \ifdefempty\@ignored@glossaries
+ {%
+ \protected@edef\@ignored@glossaries{#1}%
+ }%
+ {%
+ \protected@eappto\@ignored@glossaries{,#1}%
+ }%
+ \csgdef{glolist@#1}{,}%
+ \ifcsundef{gls@#1@entryfmt}%
+ {%
+ \defglsentryfmt[#1]{\glsentryfmt}%
+ }%
+ {}%
+ \ifdefempty\@gls@nohyperlist
+ {%
+ \renewcommand*{\@gls@nohyperlist}{#1}%
+ }%
+ {%
+ \protected@eappto\@gls@nohyperlist{,#1}%
+ }%
+}
+\newcommand*{\@ignored@glossaries}{}
+\newcommand*{\ifignoredglossary}[3]{%
+ \protected@edef\@gls@igtype{#1}%
+ \expandafter\DTLifinlist\expandafter
+ {\@gls@igtype}{\@ignored@glossaries}{#2}{#3}%
+}
+\define@key{glossentry}{name}{%
+\def\@glo@name{#1}%
+}
+\define@key{glossentry}{description}{%
+\def\@glo@desc{#1}%
+}
+\define@key{glossentry}{descriptionplural}{%
+\def\@glo@descplural{#1}%
+}
+\define@key{glossentry}{sort}{%
+\def\@glo@sort{#1}}
+\define@key{glossentry}{text}{%
+\def\@glo@text{#1}%
+}
+\define@key{glossentry}{plural}{%
+\def\@glo@plural{#1}%
+}
+\define@key{glossentry}{first}{%
+\def\@glo@first{#1}%
+}
+\define@key{glossentry}{firstplural}{%
+\def\@glo@firstplural{#1}%
+}
+\newcommand*{\@gls@default@value}{\relax}
+\define@key{glossentry}{symbol}{%
+\def\@glo@symbol{#1}%
+}
+\define@key{glossentry}{symbolplural}{%
+\def\@glo@symbolplural{#1}%
+}
+\define@key{glossentry}{type}{%
+\def\@glo@type{#1}}
+\define@key{glossentry}{counter}{%
+ \ifcsundef{c@#1}%
+ {%
+ \PackageError{glossaries}%
+ {There is no counter called `#1'}%
+ {%
+ The counter key should have the name of a valid counter
+ as its value%
+ }%
+ }%
+ {%
+ \def\@glo@counter{#1}%
+ }%
+}
+\define@key{glossentry}{see}{%
+ \gls@set@xr@key{see}{\@glo@see}{#1}%
+}
+\newcommand*{\gls@set@xr@key}[3]{%
+ \renewcommand*{\gls@xr@key}{#1}%
+ \gls@checkseeallowed
+ \def#2{#3}%
+ \@glo@seeautonumberlist
+}
+\newcommand*{\gls@xr@key}{see}
+\newcommand*{\gls@checkseeallowed}{%
+ \@gls@see@noindex
+}
+\newcommand*{\gls@checkseeallowed@preambleonly}{%
+ \GlossariesWarning
+ {`\gls@xr@key' key doesn't have any effect when used in the document
+ environment. Move the definition to the preamble
+ after \string\makeglossaries\space
+ or \string\makenoidxglossaries}%
+}
+\define@key{glossentry}{parent}{%
+\def\@glo@parent{#1}}
+\define@choicekey{glossentry}{nonumberlist}%
+ [\gls@nonumberlist@val\gls@nonumberlist@nr]{true,false}[true]%
+{%
+ \ifcase\gls@nonumberlist@nr\relax
+ \def\@glo@prefix{\glsnonextpages}%
+ \@gls@savenonumberlist{true}%
+ \else
+ \def\@glo@prefix{\glsnextpages}%
+ \@gls@savenonumberlist{false}%
+ \fi
+}
+\newcommand*{\gls@noidx@nonumberlist}[1]{%
+ \cslet{glo@\@glo@label @prenumberlist}\@glo@prefix
+}%
+\newcommand{\glsnoidxprenumberlist}[1]{%
+ \csuse{glo@\glsdetoklabel{#1}@prenumberlist}}
+\newcommand*{\@gls@savenonumberlist}[1]{}
+\newcommand*{\@gls@initnonumberlist}{}%
+\newcommand*{\@gls@storenonumberlist}[1]{}
+\newcommand*{\@gls@enablesavenonumberlist}{%
+ \renewcommand*{\@gls@initnonumberlist}{%
+ \undef\@glo@nonumberlist
+ }%
+ \renewcommand*{\@gls@savenonumberlist}[1]{%
+ \def\@glo@nonumberlist{##1}%
+ }%
+ \renewcommand*{\@gls@storenonumberlist}[1]{%
+ \ifdef\@glo@nonumberlist
+ {%
+ \cslet{glo@\glsdetoklabel{##1}@nonumberlist}{\@glo@nonumberlist}%
+ }%
+ {}%
+ }%
+ \appto\@gls@keymap{,{nonumberlist}{nonumberlist}}%
+}
+\define@key{glossentry}{user1}{%
+ \def\@glo@useri{#1}%
+}
+\define@key{glossentry}{user2}{%
+ \def\@glo@userii{#1}%
+}
+\define@key{glossentry}{user3}{%
+ \def\@glo@useriii{#1}%
+}
+\define@key{glossentry}{user4}{%
+ \def\@glo@useriv{#1}%
+}
+\define@key{glossentry}{user5}{%
+ \def\@glo@userv{#1}%
+}
+\define@key{glossentry}{user6}{%
+ \def\@glo@uservi{#1}%
+}
+\define@key{glossentry}{short}{%
+ \def\@glo@short{#1}%
+}
+\define@key{glossentry}{shortplural}{%
+ \def\@glo@shortpl{#1}%
+}
+\define@key{glossentry}{long}{%
+ \def\@glo@long{#1}%
+}
+\define@key{glossentry}{longplural}{%
+ \def\@glo@longpl{#1}%
+}
+\newcommand*{\@glsnoname}{%
+ \PackageError{glossaries}{name key required in
+ \string\newglossaryentry\space for entry `\@glo@label'}{You
+ haven't specified the entry name}}
+\newcommand*\@glsnodesc{%
+ \PackageError{glossaries}
+ {%
+ description key required in \string\newglossaryentry\space
+ for entry `\@glo@label'%
+ }%
+ {%
+ You haven't specified the entry description%
+ }%
+}%
+\newcommand*{\@gls@missingnumberlist}[1]{%
+ ??%
+ \ifglssavenumberlist
+ \GlossariesWarning{Missing number list for entry `#1'.
+ Maybe makeglossaries + rerun required}%
+ \else
+ \PackageError{glossaries}%
+ {Package option `savenumberlist=true' required}%
+ {%
+ You must use the `savenumberlist' package option
+ to reference location lists.%
+ }%
+ \fi
+}
+\newcommand*{\@glsdefaultsort}{\@glo@name}
+\newcount\gls@level
+\newcommand{\@@gls@noexpand@field}[3]{%
+ \expandafter\global\expandafter
+ \let\csname glo@#1@#2\endcsname#3%
+}
+\newcommand{\@gls@noexpand@fields}[4]{%
+ \ifcsdef{gls@assign@#3@field}
+ {%
+ \ifdefequal{#4}{\@gls@default@value}%
+ {%
+ \edef\@gls@value{\expandonce{#1}}%
+ \csuse{gls@assign@#3@field}{#2}{\@gls@value}%
+ }%
+ {%
+ \csuse{gls@assign@#3@field}{#2}{#4}%
+ }%
+ }%
+ {%
+ \ifdefequal{#4}{\@gls@default@value}%
+ {%
+ \edef\@gls@value{\expandonce{#1}}%
+ \@@gls@noexpand@field{#2}{#3}{\@gls@value}%
+ }%
+ {%
+ \@@gls@noexpand@field{#2}{#3}{#4}%
+ }%
+ }%
+}
+\newcommand{\@@gls@expand@field}[3]{%
+ \expandafter
+ \protected@xdef\csname glo@#1@#2\endcsname{#3}%
+}
+\newcommand{\@gls@expand@fields}[4]{%
+ \ifcsdef{gls@assign@#3@field}
+ {%
+ \ifdefequal{#4}{\@gls@default@value}%
+ {%
+ \edef\@gls@value{\expandonce{#1}}%
+ \csuse{gls@assign@#3@field}{#2}{\@gls@value}%
+ }%
+ {%
+ \expandafter\@gls@startswithexpandonce#4\relax\relax\gls@endcheck
+ {%
+ \@@gls@expand@field{#2}{#3}{#4}%
+ }%
+ {%
+ \csuse{gls@assign@#3@field}{#2}{#4}%
+ }%
+ }%
+ }%
+ {%
+ \ifdefequal{#4}{\@gls@default@value}%
+ {%
+ \@@gls@expand@field{#2}{#3}{#1}%
+ }%
+ {%
+ \@@gls@expand@field{#2}{#3}{#4}%
+ }%
+ }%
+}
+\def\@gls@expandonce{\expandonce}
+\def\@gls@startswithexpandonce#1#2\gls@endcheck#3#4{%
+ \def\@gls@tmp{#1}%
+ \ifdefequal{\@gls@expandonce}{\@gls@tmp}{#3}{#4}%
+}
+\let\gls@assign@field\@gls@expand@fields
+\newcommand*{\glsexpandfields}{%
+ \let\gls@assign@field\@gls@expand@fields
+}
+\newcommand*{\glsnoexpandfields}{%
+ \let\gls@assign@field\@gls@noexpand@fields
+}
+\newrobustcmd{\newglossaryentry}[2]{%
+ \glsdoifnoexists{#1}%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ }%
+}
+\newcommand*{\gls@defdocnewglossaryentry}{%
+ \let\newglossaryentry\new@glossaryentry
+}
+\newrobustcmd{\provideglossaryentry}[2]{%
+ \ifglsentryexists{#1}%
+ {}%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ }%
+}
+\@onlypreamble{\provideglossaryentry}
+\newcommand*{\gls@glsdefs@labellist}{}
+\newcommand*{\gls@glsdefs@addlabel}[1]{\listxadd{\gls@glsdefs@labellist}{#1}}
+\newcommand*{\gls@docdef@labellist}{}
+\newcommand*{\gls@docdef@addlabel}[1]{\listxadd{\gls@docdef@labellist}{#1}}
+\newrobustcmd{\new@glossaryentry}[2]{%
+ \ifundef\@gls@deffile
+ {%
+ \global\newwrite\@gls@deffile
+ \immediate\openout\@gls@deffile=\jobname.glsdefs
+ }%
+ {}%
+ \ifglsentryexists{#1}%
+ {%
+ \xifinlist{#1}{\gls@docdef@labellist}%
+ {%
+ \GlossariesWarning{Entry `#1' has already been defined in the
+ document environment (ignoring new definition)}%
+ }%
+ {%
+ \xifinlist{#1}{\gls@glsdefs@labellist}%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ \gls@docdef@addlabel{#1}%
+ \@gls@writedef{#1}%
+ }%
+ {%
+ \GlossariesWarning{Entry `#1' has already been defined in
+ the preamble (in which case remove the duplicate definition)
+ or you have just updated to glossaries.sty
+ v4.47 (in which case delete `\jobname.glsdefs')}%
+ }%
+ }%
+ }%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ \gls@docdef@addlabel{#1}%
+ \@gls@writedef{#1}%
+ }%
+}
+\AtBeginDocument{\gls@begindocdefs}
+\AtEndDocument{\ifdef\@gls@deffile{\closeout\@gls@deffile}{}}
+\newcommand*{\gls@begindocdefs}{%
+ \@gls@enablesavenonumberlist
+ \edef\@gls@restoreat{\noexpand\catcode`\noexpand\@=\number\catcode`\@\relax}%
+ \makeatletter
+ \InputIfFileExists{\jobname.glsdefs}{}{}%
+ \@gls@restoreat
+ \undef\@gls@restoreat
+ \gls@defdocnewglossaryentry
+}
+\newcommand*{\glsdefs@newdocentry}[2]{%
+ \ifglsentryexists{#1}%
+ {\GlossariesWarning{entry `#1' has already been defined in the preamble
+ (if you have moved the definition there from the document
+ environment, delete \jobname.glsdefs)}}%
+ {%
+ \gls@glsdefs@addlabel{#1}%
+ \gls@defglossaryentry{#1}{#2}%
+ }%
+}
+\newcommand*{\@gls@writedef}[1]{%
+ \immediate\write\@gls@deffile
+ {%
+ \string\glsdefs@newdocentry{\glsdetoklabel{#1}}\glspercentchar^^J%
+ \expandafter\@gobble\string\{\glspercentchar%
+ }%
+ \@for\@gls@map:=\@gls@keymap\do
+ {%
+ \letcs\glo@value{glo@\glsdetoklabel{#1}@\expandafter\@secondoftwo\@gls@map}%
+ \ifdef\glo@value
+ {%
+ \@onelevel@sanitize\glo@value
+ \immediate\write\@gls@deffile
+ {%
+ \expandafter\@firstoftwo\@gls@map
+ =\expandafter\@gobble\string\{\glo@value\expandafter\@gobble\string\},%
+ \glspercentchar
+ }%
+ }%
+ {}%
+ }%
+ \glswritedefhook
+ \immediate\write\@gls@deffile
+ {%
+ \glspercentchar^^J%
+ \expandafter\@gobble\string\}\glspercentchar^^J%
+ }%
+}
+\newcommand*{\@gls@keymap}{%
+ {name}{name},%
+ {sort}{sortvalue},% unescaped sort value
+ {type}{type},%
+ {first}{first},%
+ {firstplural}{firstpl},%
+ {text}{text},%
+ {plural}{plural},%
+ {description}{desc},%
+ {descriptionplural}{descplural},%
+ {symbol}{symbol},%
+ {symbolplural}{symbolplural},%
+ {user1}{useri},%
+ {user2}{userii},%
+ {user3}{useriii},%
+ {user4}{useriv},%
+ {user5}{userv},%
+ {user6}{uservi},%
+ {long}{long},%
+ {longplural}{longpl},%
+ {short}{short},%
+ {shortplural}{shortpl},%
+ {counter}{counter},%
+ {parent}{parent}%
+}
+\newcommand*{\@gls@fetchfield}[2]{%
+ \edef\@gls@thisval{#2}%
+ \@for\@gls@map:=\@gls@keymap\do{%
+ \edef\@this@key{\expandafter\@firstoftwo\@gls@map}%
+ \ifdefequal{\@this@key}{\@gls@thisval}%
+ {%
+ \edef#1{\expandafter\@secondoftwo\@gls@map}%
+ \@endfortrue
+ }%
+ {}%
+ }%
+}
+\newcommand*{\glsaddstoragekey}{\@ifstar\@sglsaddstoragekey\@glsaddstoragekey}
+\newcommand*{\@sglsaddstoragekey}[1]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname gls@assign@#1@field\endcsname}[2]{%
+ \@@gls@expand@field{##1}{#1}{##2}%
+ }%
+ }%
+ {}%
+ \@glsaddstoragekey{#1}%
+}
+\newcommand*{\@glsaddstoragekey}[3]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}%
+ \appto\@gls@keymap{,{#1}{#1}}%
+ \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}%
+ \appto\@newglossaryentryposthook{%
+ \letcs{\@glo@tmp}{@glo@#1}%
+ \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}%
+ }%
+ \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#1' already exists}{}%
+ }%
+}
+\newcommand*{\glsaddkey}{\@ifstar\@sglsaddkey\@glsaddkey}
+\newcommand*{\@sglsaddkey}[1]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname gls@assign@#1@field\endcsname}[2]{%
+ \@@gls@expand@field{##1}{#1}{##2}%
+ }%
+ }%
+ {}%
+ \@glsaddkey{#1}%
+}
+\newcommand*{\@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]{\@Glsentryfield{##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{##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{##1}{##2}{\glsuppercase{#3{##2}##3}}%
+ }%
+ \newrobustcmd*{#7}{%
+ \expandafter\@gls@hyp@opt\csname @GLS@user@#1\endcsname}%
+ }%
+ \glsmfuaddmap{#3}{#4}%
+ \glsmfuaddmap{#5}{#6}%
+ \glsmfublocker{#7}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#1' already exists}{}%
+ }%
+}
+\newrobustcmd{\glsfieldxdef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \protected@csxdef{glo@\@glo@label @#2}{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newrobustcmd{\glsfieldedef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \protected@csedef{glo@\@glo@label @#2}{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newrobustcmd{\glsfieldgdef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \expandafter\gdef\csname glo@\@glo@label @#2\endcsname{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newrobustcmd{\glsfielddef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \expandafter\def\csname glo@\@glo@label @#2\endcsname{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newrobustcmd{\glsfieldfetch}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \letcs#3{glo@\@glo@label @#2}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand*{\glsunexpandedfieldvalue}[2]{%
+ \ifcsname glo@\glsdetoklabel{#1}@#2\endcsname
+ \expandafter\expandonce\csname glo@\glsdetoklabel{#1}@#2\expandafter\endcsname
+ \fi
+}
+\newrobustcmd{\ifglsfieldeq}[5]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \ifcsstring{glo@\@glo@label @#2}{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newrobustcmd{\ifglsfielddefeq}[5]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \expandafter\ifdefstrequal\csname glo@\@glo@label @#2\endcsname{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand{\ifglsfieldcseq}[5]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \ifcsstrequal{glo@\@glo@label @#2}{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand*{\glswritedefhook}{}
+\newcommand*{\gls@assign@desc}[1]{%
+ \gls@assign@field{}{#1}{desc}{\@glo@desc}%
+ \gls@assign@field{\@glo@desc}{#1}{descplural}{\@glo@descplural}%
+}
+\newcommand{\longnewglossaryentry}[3]{%
+ \glsdoifnoexists{#1}%
+ {%
+ \bgroup
+ \let\@org@newglossaryentryprehook\@newglossaryentryprehook
+ \long\def\@newglossaryentryprehook{%
+ \long\def\@glo@desc{#3\leavevmode\unskip\nopostdesc}%
+ \@org@newglossaryentryprehook
+ }%
+ \renewcommand*{\gls@assign@desc}[1]{%
+ \global\cslet{glo@\glsdetoklabel{#1}@desc}{\@glo@desc}%
+ \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@desc}%
+ }
+ \gls@defglossaryentry{#1}{#2}%
+ \egroup
+ }
+}
+\@onlypreamble{\longnewglossaryentry}
+\newcommand{\longprovideglossaryentry}[3]{%
+ \ifglsentryexists{#1}{}%
+ {\longnewglossaryentry{#1}{#2}{#3}}%
+}
+\@onlypreamble{\longprovideglossaryentry}
+\newcommand{\gls@defglossaryentry}[2]{%
+ \let\GlsSetQuote\gls@nosetquote
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \let\glslabel\@glo@label
+ \let\@glo@name\@glsnoname
+ \let\@glo@desc\@glsnodesc
+ \let\@glo@descplural\@gls@default@value
+ \let\@glo@type\@gls@default@value
+ \let\@glo@symbol\@gls@default@value
+ \let\@glo@symbolplural\@gls@default@value
+ \let\@glo@text\@gls@default@value
+ \let\@glo@plural\@gls@default@value
+ \let\@glo@first\@gls@default@value
+ \let\@glo@firstplural\@gls@default@value
+ \let\@glo@sort\@gls@default@value
+ \let\@glo@counter\@gls@default@value
+ \def\@glo@see{}%
+ \def\@glo@parent{}%
+ \def\@glo@prefix{}%
+ \@gls@initnonumberlist
+ \def\@glo@useri{}%
+ \def\@glo@userii{}%
+ \def\@glo@useriii{}%
+ \def\@glo@useriv{}%
+ \def\@glo@userv{}%
+ \def\@glo@uservi{}%
+ \def\@glo@short{}%
+ \def\@glo@shortpl{}%
+ \def\@glo@long{}%
+ \def\@glo@longpl{}%
+ \@newglossaryentryprehook
+ \setkeys{glossentry}{#2}%
+ \ifundef\glsdefaulttype
+ {%
+ \PackageError{glossaries}%
+ {No default glossary type (have you used `nomain' by mistake?)}%
+ {If you use package option `nomain' you must define
+ a new glossary before you can define entries}%
+ }%
+ {}%
+ \gls@assign@field{\glsdefaulttype}{\@glo@label}{type}{\@glo@type}%
+ \protected@edef\@glo@type{\glsentrytype{\@glo@label}}%
+ \ifcsundef{glolist@\@glo@type}%
+ {%
+ \PackageError{glossaries}%
+ {Glossary type `\@glo@type' has not been defined}%
+ {You need to define a new glossary type, before making entries
+ in it}%
+ }%
+ {%
+ \ifignoredglossary\@glo@type
+ {%
+ \ifx\@glo@desc\@glsnodesc
+ \let\@glo@desc\@empty
+ \fi
+ }%
+ {%
+ }%
+ \protected@edef\@glolist@{\csname glolist@\@glo@type\endcsname}%
+ \expandafter\protected@xdef\csname glolist@\@glo@type\endcsname{%
+ \@glolist@{\@glo@label},}%
+ }%
+ \gls@level=0\relax
+ \ifx\@glo@parent\@empty
+ \expandafter\gdef\csname glo@\@glo@label @parent\endcsname{}%
+ \else
+ \ifdefequal\@glo@label\@glo@parent%
+ {%
+ \PackageError{glossaries}{Entry `\@glo@label' can't be its own parent}{}%
+ \def\@glo@parent{}%
+ \expandafter\gdef\csname glo@\@glo@label @parent\endcsname{}%
+ }%
+ {%
+ \ifglsentryexists{\@glo@parent}%
+ {%
+ \expandafter\protected@xdef\csname glo@\@glo@label @parent\endcsname{%
+ \@glo@parent}%
+ \gls@level=\csname glo@\@glo@parent @level\endcsname\relax
+ \advance\gls@level by 1\relax
+ \ifx\@glo@name\@glsnoname
+ \expandafter\let\expandafter\@glo@name
+ \csname glo@\@glo@parent @name\endcsname
+ \ifx\@glo@plural\@gls@default@value
+ \expandafter\let\expandafter\@glo@plural
+ \csname glo@\@glo@parent @plural\endcsname
+ \fi
+ \fi
+ }%
+ {%
+ \PackageError{glossaries}%
+ {%
+ Invalid parent `\@glo@parent'
+ for entry `\@glo@label' - parent doesn't exist%
+ }%
+ {%
+ Parent entries must be defined before their children%
+ }%
+ \def\@glo@parent{}%
+ \expandafter\gdef\csname glo@\@glo@label @parent\endcsname{}%
+ }%
+ }%
+ \fi
+ \expandafter\xdef\csname glo@\@glo@label @level\endcsname{\number\gls@level}%
+ \gls@assign@field{\@glo@name}{\@glo@label}{sortvalue}{\@glo@sort}%
+ \letcs\@glo@sort{glo@\@glo@label @sortvalue}%
+ \gls@assign@field{\@glo@name}{\@glo@label}{text}{\@glo@text}%
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @text\endcsname\glspluralsuffix}%
+ {\@glo@label}{plural}{\@glo@plural}%
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @text\endcsname}%
+ {\@glo@label}{first}{\@glo@first}%
+ \ifx\@glo@first\@gls@default@value
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @plural\endcsname}%
+ {\@glo@label}{firstpl}{\@glo@firstplural}%
+ \else
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @first\endcsname\glspluralsuffix}%
+ {\@glo@label}{firstpl}{\@glo@firstplural}%
+ \fi
+ \ifcsundef{@glotype@\@glo@type @counter}%
+ {%
+ \def\@glo@defaultcounter{\glscounter}%
+ }%
+ {%
+ \letcs\@glo@defaultcounter{@glotype@\@glo@type @counter}%
+ }%
+ \gls@assign@field{\@glo@defaultcounter}{\@glo@label}{counter}{\@glo@counter}%
+ \gls@assign@field{}{\@glo@label}{useri}{\@glo@useri}%
+ \gls@assign@field{}{\@glo@label}{userii}{\@glo@userii}%
+ \gls@assign@field{}{\@glo@label}{useriii}{\@glo@useriii}%
+ \gls@assign@field{}{\@glo@label}{useriv}{\@glo@useriv}%
+ \gls@assign@field{}{\@glo@label}{userv}{\@glo@userv}%
+ \gls@assign@field{}{\@glo@label}{uservi}{\@glo@uservi}%
+ \gls@assign@field{}{\@glo@label}{short}{\@glo@short}%
+ \gls@assign@field{}{\@glo@label}{shortpl}{\@glo@shortpl}%
+ \gls@assign@field{}{\@glo@label}{long}{\@glo@long}%
+ \gls@assign@field{}{\@glo@label}{longpl}{\@glo@longpl}%
+ \ifx\@glo@name\@glsnoname
+ \@glsnoname
+ \let\@gloname\@gls@default@value
+ \fi
+ \gls@assign@field{}{\@glo@label}{name}{\@glo@name}%
+ \ifcsundef{glo@\@glo@label @numberlist}%
+ {%
+ \csxdef{glo@\@glo@label @numberlist}{%
+ \noexpand\@gls@missingnumberlist{\@glo@label}}%
+ }%
+ {}%
+ \@gls@storenonumberlist{\@glo@label}%
+ \def\@glo@@desc{\@glo@first}%
+ \ifx\@glo@desc\@glo@@desc
+ \let\@glo@desc\@glo@first
+ \fi
+ \ifx\@glo@desc\@glsnodesc
+ \@glsnodesc
+ \let\@glodesc\@gls@default@value
+ \fi
+ \gls@assign@desc{\@glo@label}%
+ \@gls@defsort{\@glo@type}{\@glo@label}%
+ \def\@glo@@symbol{\@glo@text}%
+ \ifx\@glo@symbol\@glo@@symbol
+ \let\@glo@symbol\@glo@text
+ \fi
+ \gls@assign@field{\relax}{\@glo@label}{symbol}{\@glo@symbol}%
+ \expandafter
+ \gls@assign@field\expandafter
+ {\csname glo@\@glo@label @symbol\endcsname}
+ {\@glo@label}{symbolplural}{\@glo@symbolplural}%
+ \expandafter\protected@xdef\csname glo@\@glo@label @flagfalse\endcsname{%
+ \noexpand\global
+ \noexpand\let\expandafter\noexpand
+ \csname ifglo@\@glo@label @flag\endcsname\noexpand\iffalse
+ }%
+ \expandafter\protected@xdef\csname glo@\@glo@label @flagtrue\endcsname{%
+ \noexpand\global
+ \noexpand\let\expandafter\noexpand
+ \csname ifglo@\@glo@label @flag\endcsname\noexpand\iftrue
+ }%
+ \csname glo@\@glo@label @flagfalse\endcsname
+ \@glo@autosee
+ \ifignoredglossary\@glo@type
+ {%
+ \csdef{glo@\@glo@label @index}{}%
+ }
+ {%
+ \do@glo@storeentry{\@glo@label}%
+ }%
+ \@newglossaryentry@defcounters
+ \@newglossaryentryposthook
+}
+\newcommand*{\@glo@autosee}{%
+ \ifdefvoid\@glo@see{}%
+ {%
+ \protected@edef\@do@glssee{%
+ \noexpand\@gls@fixbraces\noexpand\@glo@list\@glo@see\noexpand\@nil
+ \noexpand\expandafter\noexpand\@glssee\noexpand\@glo@list{\@glo@label}}%
+ \@do@glssee
+ }%
+ \@glo@autoseehook
+}%
+\newcommand*{\@glo@autoseehook}{}
+\newcommand*{\@newglossaryentryprehook}{}
+\newcommand*{\@newglossaryentryposthook}{}
+\newcommand*{\@newglossaryentry@defcounters}{}
+\newcommand*{\glsmoveentry}[2]{%
+ \protected@edef\@glo@thislabel{\glsdetoklabel{#1}}%
+ \protected@edef\glo@type{\csname glo@\@glo@thislabel @type\endcsname}%
+ \def\glo@list{,}%
+ \forglsentries[\glo@type]{\glo@label}%
+ {%
+ \ifdefequal\@glo@thislabel\glo@label
+ {}{\protected@eappto\glo@list{\glo@label,}}%
+ }%
+ \cslet{glolist@\glo@type}{\glo@list}%
+ \csdef{glo@\@glo@thislabel @type}{#2}%
+}
+\ifglsxindy
+ \newcommand*{\@glossaryentryfield}{\string\\glossentry}
+\else
+ \newcommand*{\@glossaryentryfield}{\string\glossentry}
+\fi
+\ifglsxindy
+ \newcommand*{\@glossarysubentryfield}{%
+ \string\\subglossentry}
+\else
+ \newcommand*{\@glossarysubentryfield}{%
+ \string\subglossentry}
+\fi
+\newcommand{\@glo@storeentry}[1]{%
+ \protected@edef\@glo@esclabel{#1}%
+ \@gls@checkmkidxchars\@glo@esclabel
+ \protected@edef\@glo@sort{\csname glo@#1@sort\endcsname}%
+ \@gls@checkmkidxchars\@glo@sort
+ \@gls@checkmkidxchars\@glo@prefix
+ \protected@edef\@glo@parent{\csname glo@#1@parent\endcsname}%
+ \ifglsxindy
+ \ifx\@glo@parent\@empty
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ (\string"\@glo@sort\string" %
+ \string"\@glo@prefix\@glossaryentryfield{\@glo@esclabel}\string") %
+ }%
+ \else
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ \csname glo@\@glo@parent @index\endcsname
+ (\string"\@glo@sort\string" %
+ \string"\@glo@prefix\@glossarysubentryfield
+ {\csname glo@#1@level\endcsname}{\@glo@esclabel}\string") %
+ }%
+ \fi
+ \else
+ \ifx\@glo@parent\@empty
+ \@onelevel@sanitize\@glo@prefix
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ \@glo@sort\@gls@actualchar\@glo@prefix
+ \@glossaryentryfield{\@glo@esclabel}%
+ }%
+ \else
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ \csname glo@\@glo@parent @index\endcsname\@gls@levelchar
+ \@glo@sort\@gls@actualchar\@glo@prefix
+ \@glossarysubentryfield
+ {\csname glo@#1@level\endcsname}{\@glo@esclabel}%
+ }%
+ \fi
+ \fi
+}
+\newcommand*{\@gls@if@measuring}[2]{%
+ \ifmeasuring@
+ #1%
+ \else
+ #2%
+ \fi
+}
+\let\gls@org@refstepcounter\refstepcounter
+\let\gls@org@label\label
+\newcommand{\gls@if@measuring}[2]{#2}
+\AtBeginDocument{%
+ \@ifpackageloaded{amsmath}%
+ {\let\gls@if@measuring\@gls@if@measuring}%
+ {}%
+ \let\gls@org@refstepcounter\refstepcounter
+ \let\gls@org@label\label
+}
+\newcommand*\gls@ifnotmeasuring[1]{\glsifmeasuring{}{#1}}
+\newcommand*{\glsifmeasuring}{\gls@if@measuring}
+\newcommand*{\gls@local@stepcounter}[1]{%
+ \ifcsdef{c@#1}%
+ {%
+ \epreto\gls@measuring@reset{\noexpand\setcounter{#1}{\number\value{#1}}}%
+ \expandafter\advance\csname c@#1\endcsname by \@ne
+ }%
+ {}%
+}
+\newcommand{\gls@start@measuring}{%
+ \ifx\glsifmeasuring\@firstoftwo
+ \else
+ \let\gls@org@target\glstarget
+ \let\gls@org@link\@glslink
+ \def\gls@measuring@reset{}%
+ \fi
+ \let\glsifmeasuring\@firstoftwo
+ \let\refstepcounter\gls@local@stepcounter
+ \let\label\@gobble
+ \let\glstarget\@secondoftwo
+ \let\@glslink\@secondoftwo
+}
+\newcommand{\gls@stop@measuring}{%
+ \renewcommand*{\glsifmeasuring}{\gls@if@measuring}%
+ \let\refstepcounter\gls@org@refstepcounter
+ \let\label\gls@org@label
+ \let\glstarget\gls@org@target
+ \let\@glslink\gls@org@link
+ \gls@measuring@reset
+ \def\gls@measuring@reset{}%
+}
+\newcommand{\glsmeasureheight}[2]{%
+ \settoheight{#1}{\gls@start@measuring#2\gls@stop@measuring}%
+}
+\newcommand{\glsmeasuredepth}[2]{%
+ \settodepth{#1}{\gls@start@measuring#2\gls@stop@measuring}%
+}
+\newcommand{\glsmeasurewidth}[2]{%
+ \settowidth{#1}{\gls@start@measuring#2\gls@stop@measuring}%
+}
+\def\@gls@patchtabularx#1\hbox#2#3!!{%
+ \def\TX@trial##1{#1\hbox{\gls@start@measuring#2\gls@stop@measuring}#3}%
+}
+\newcommand*\glspatchtabularx{%
+ \ifdef\TX@trial
+ {%
+ \expandafter\@gls@patchtabularx\TX@trial{##1}!!%
+ \let\glspatchtabularx\relax
+ }%
+ {}%
+}
+\newcommand*{\glsreset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \@glsreset{#1}%
+ }%
+ }%
+}
+\newcommand*{\glslocalreset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \@glslocalreset{#1}%
+ }%
+ }%
+}
+\newcommand*{\glsunset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \@glsunset{#1}%
+ }%
+ }%
+}
+\newcommand*{\glslocalunset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \@glslocalunset{#1}%
+ }%
+ }%
+}
+\newcommand*{\@glslocalunset}{\@@glslocalunset}
+\newcommand*{\@@glslocalunset}[1]{%
+ \expandafter\let\csname ifglo@\glsdetoklabel{#1}@flag\endcsname\iftrue
+}
+\newcommand*{\@glsunset}{\@@glsunset}
+\newcommand*{\@@glsunset}[1]{%
+ \expandafter\global\csname glo@\glsdetoklabel{#1}@flagtrue\endcsname
+}
+\newcommand*{\@glslocalreset}{\@@glslocalreset}
+\newcommand*{\@@glslocalreset}[1]{%
+ \expandafter\let\csname ifglo@\glsdetoklabel{#1}@flag\endcsname\iffalse
+}
+\newcommand*{\@glsreset}{\@@glsreset}
+\newcommand*{\@@glsreset}[1]{%
+ \expandafter\global\csname glo@\glsdetoklabel{#1}@flagfalse\endcsname
+}
+\newcommand*{\glsresetall}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glsentry}%
+ {%
+ \glsreset{\@glsentry}%
+ }%
+}
+\newcommand*{\glslocalresetall}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glsentry}%
+ {%
+ \glslocalreset{\@glsentry}%
+ }%
+}
+\newcommand*{\glsunsetall}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glsentry}%
+ {%
+ \glsunset{\@glsentry}%
+ }%
+}
+\newcommand*{\glslocalunsetall}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glsentry}%
+ {%
+ \glslocalunset{\@glsentry}%
+ }%
+}
+\newcommand*{\@@newglossaryentry@defcounters}{%
+ \csdef{glo@\@glo@label @currcount}{0}%
+ \csdef{glo@\@glo@label @prevcount}{0}%
+}
+\newif\ifglsresetcurrcount
+\glsresetcurrcountfalse
+\newcommand*{\glsenableentrycount}{%
+ \let\@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}}%
+ }%
+ \renewcommand*{\@glsunset}[1]{%
+ \@@glsunset{##1}%
+ \@gls@increment@currcount{##1}%
+ }%
+ \renewcommand*{\@glslocalunset}[1]{%
+ \@@glslocalunset{##1}%
+ \@gls@local@increment@currcount{##1}%
+ }%
+ \renewcommand*{\@glsreset}[1]{%
+ \@@glsreset{##1}%
+ \ifglsresetcurrcount\csgdef{glo@\glsdetoklabel{##1}@currcount}{0}\fi
+ }%
+ \renewcommand*{\@glslocalreset}[1]{%
+ \@@glslocalreset{##1}%
+ \ifglsresetcurrcount\csdef{glo@\glsdetoklabel{##1}@currcount}{0}\fi
+ }%
+ \def\@cgls@##1##2[##3]{%
+ \ifnum\glsentryprevcount{##2}=1\relax
+ \cglsformat{##2}{##3}%
+ \glsunset{##2}%
+ \else
+ \@gls@{##1}{##2}[##3]%
+ \fi
+ }%
+ \def\@cglspl@##1##2[##3]{%
+ \ifnum\glsentryprevcount{##2}=1\relax
+ \cglsplformat{##2}{##3}%
+ \glsunset{##2}%
+ \else
+ \@glspl@{##1}{##2}[##3]%
+ \fi
+ }%
+ \def\@cGls@##1##2[##3]{%
+ \ifnum\glsentryprevcount{##2}=1\relax
+ \cGlsformat{##2}{##3}%
+ \glsunset{##2}%
+ \else
+ \@Gls@{##1}{##2}[##3]%
+ \fi
+ }%
+ \def\@cGlspl@##1##2[##3]{%
+ \ifnum\glsentryprevcount{##2}=1\relax
+ \cGlsplformat{##2}{##3}%
+ \glsunset{##2}%
+ \else
+ \@Glspl@{##1}{##2}[##3]%
+ \fi
+ }%
+ \AtEndDocument{\@gls@write@entrycounts}%
+ \renewcommand*{\@gls@entry@count}[2]{%
+ \csgdef{glo@\glsdetoklabel{##1}@prevcount}{##2}%
+ }%
+ \let\glsenableentrycount\relax
+}
+\@onlypreamble\glsenableentrycount
+\newcommand*{\@gls@increment@currcount}[1]{%
+ \csxdef{glo@\glsdetoklabel{#1}@currcount}{%
+ \number\numexpr\glsentrycurrcount{#1}+1}%
+}
+\newcommand*{\@gls@local@increment@currcount}[1]{%
+ \csedef{glo@\glsdetoklabel{#1}@currcount}{%
+ \number\numexpr\glsentrycurrcount{#1}+1}%
+}
+\newcommand*{\@gls@write@entrycounts}{%
+ \immediate\write\@auxout
+ {\string\providecommand*{\string\@gls@entry@count}[2]{}}%
+ \forallglsentries{\@glsentry}{%
+ \ifglsused{\@glsentry}%
+ {\immediate\write\@auxout
+ {\string\@gls@entry@count{\@glsentry}{\glsentrycurrcount{\@glsentry}}}}%
+ {}%
+ }%
+}
+\newcommand*{\@gls@entry@count}[2]{}
+\newrobustcmd*{\cgls}{\@gls@hyp@opt\@cgls}
+\newcommand*{\@cgls}[2][]{%
+ \new@ifnextchar[{\@cgls@{#1}{#2}}{\@cgls@{#1}{#2}[]}%
+}
+\def\@cgls@#1#2[#3]{%
+ \GlossariesWarning{\string\cgls\space is defaulting to
+ \string\gls\space since you haven't enabled entry counting}%
+ \@gls@{#1}{#2}[#3]%
+}
+\newcommand*{\cglsformat}[2]{%
+ \ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}#2%
+}
+\newrobustcmd*{\cGls}{\@gls@hyp@opt\@cGls}
+\glsmfuaddmap{\cgls}{\cGls}
+\newcommand*{\@cGls}[2][]{%
+ \new@ifnextchar[{\@cGls@{#1}{#2}}{\@cGls@{#1}{#2}[]}%
+}
+\def\@cGls@#1#2[#3]{%
+ \GlossariesWarning{\string\cGls\space is defaulting to
+ \string\Gls\space since you haven't enabled entry counting}%
+ \@Gls@{#1}{#2}[#3]%
+}
+\newcommand*{\cGlsformat}[2]{%
+ \ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}#2%
+}
+\newrobustcmd*{\cglspl}{\@gls@hyp@opt\@cglspl}
+\newcommand*{\@cglspl}[2][]{%
+ \new@ifnextchar[{\@cglspl@{#1}{#2}}{\@cglspl@{#1}{#2}[]}%
+}
+\def\@cglspl@#1#2[#3]{%
+ \GlossariesWarning{\string\cglspl\space is defaulting to
+ \string\glspl\space since you haven't enabled entry counting}%
+ \@glspl@{#1}{#2}[#3]%
+}
+\newcommand*{\cglsplformat}[2]{%
+ \ifglshaslong{#1}{\glsentrylongpl{#1}}{\glsentryfirstplural{#1}}#2%
+}
+\newrobustcmd*{\cGlspl}{\@gls@hyp@opt\@cGlspl}
+\glsmfuaddmap{\cglspl}{\cGlspl}
+\newcommand*{\@cGlspl}[2][]{%
+ \new@ifnextchar[{\@cGlspl@{#1}{#2}}{\@cGlspl@{#1}{#2}[]}%
+}
+\def\@cGlspl@#1#2[#3]{%
+ \GlossariesWarning{\string\cGlspl\space is defaulting to
+ \string\Glspl\space since you haven't enabled entry counting}%
+ \@Glspl@{#1}{#2}[#3]%
+}
+\newcommand*{\cGlsplformat}[2]{%
+ \ifglshaslong{#1}{\Glsentrylongpl{#1}}{\Glsentryfirstplural{#1}}#2%
+}
+\newcommand*{\loadglsentries}[2][\@gls@default]{%
+ \let\@gls@default\glsdefaulttype
+ \def\glsdefaulttype{#1}\input{#2}%
+ \let\glsdefaulttype\@gls@default
+}
+\@onlypreamble{\loadglsentries}
+\newcommand*{\glstextformat}[1]{#1}
+\newcommand*{\glsentryfmt}{\glsgenentryfmt}
+\newcommand*{\glsgenentryfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsentryplural{\glslabel}\glsinsert
+ }%
+ {%
+ \glsentryfirstplural{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \Glsentryplural{\glslabel}\glsinsert
+ }%
+ {%
+ \Glsentryfirstplural{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsuppercase{\glsentryplural{\glslabel}\glsinsert}%
+ }%
+ {%
+ \glsuppercase{\glsentryfirstplural{\glslabel}\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsentrytext{\glslabel}\glsinsert
+ }%
+ {%
+ \glsentryfirst{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \Glsentrytext{\glslabel}\glsinsert
+ }%
+ {%
+ \Glsentryfirst{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsuppercase{\glsentrytext{\glslabel}\glsinsert}%
+ }%
+ {%
+ \glsuppercase{\glsentryfirst{\glslabel}\glsinsert}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \glscustomtext\glsinsert
+ }%
+}
+\newcommand*{\glsgenacfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \acronymfont{\glsentryshortpl{\glslabel}}\glsinsert
+ }%
+ {%
+ \acronymfont{\Glsentryshortpl{\glslabel}}\glsinsert
+ }%
+ {%
+ \glsuppercase
+ {\acronymfont{\glsentryshortpl{\glslabel}}\glsinsert}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \acronymfont{\glsentryshort{\glslabel}}\glsinsert
+ }%
+ {%
+ \acronymfont{\Glsentryshort{\glslabel}}\glsinsert
+ }%
+ {%
+ \glsuppercase
+ {\acronymfont{\glsentryshort{\glslabel}}\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \glsuppercase
+ {\genplacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \glsuppercase
+ {\genacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \glscustomtext
+ }%
+}
+\newcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{#1}#2\space
+ (\protect\firstacronymfont{\glsentryshort{#1}})%
+}
+\newcommand*{\Genacrfullformat}[2]{%
+ \protected@edef\gls@text{\genacrfullformat{#1}{#2}}%
+ \expandafter\glssentencecase\expandafter{\gls@text}%
+}
+\newcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{#1}#2\space
+ (\protect\firstacronymfont{\glsentryshortpl{#1}})%
+}
+\newcommand*{\Genplacrfullformat}[2]{%
+ \protected@edef\gls@text{\genplacrfullformat{#1}{#2}}%
+ \expandafter\glssentencecase\expandafter{\gls@text}%
+}
+\define@key{glslink}{counter}{%
+ \ifcsundef{c@#1}%
+ {%
+ \PackageError{glossaries}%
+ {There is no counter called `#1'}%
+ {%
+ The counter key should have the name of a valid counter
+ as its value%
+ }%
+ }%
+ {%
+ \def\@gls@counter{#1}%
+ }%
+}
+\define@key{glslink}{format}{%
+ \def\@glsnumberformat{#1}}
+\newcommand*{\@gls@glslink@hyper@update@hook}{}
+\define@boolkey{glslink}{hyper}[true]{\@gls@glslink@hyper@update@hook}
+\ifdef{\hyperlink}{\KV@glslink@hypertrue}{\KV@glslink@hyperfalse}
+\newcommand*{\@gls@save@glslocal}{%
+ \let\if@org@KV@glslink@local\ifKV@glslink@local
+}
+\newcommand*{\@gls@restore@glslocal}{%
+ \ifKV@glslink@local
+ \let\@gls@do@glsunset\glslocalunset
+ \else
+ \let\@gls@do@glsunset\glsunset
+ \fi
+ \let\ifKV@glslink@local\if@org@KV@glslink@local
+}
+\newcommand*{\@gls@do@glsunset}[1]{\glsunset{#1}}
+\define@boolkey{glslink}{local}[true]{}
+\@gls@save@glslocal
+\newcommand*{\glslinkvar}[3]{#1}
+\newcommand*{\@gls@hyp@opt}[1]{%
+ \let\glslinkvar\@firstofthree
+ \let\@gls@hyp@opt@cs#1\relax
+ \@ifstar{\s@gls@hyp@opt}%
+ {\@ifnextchar+{\@firstoftwo{\p@gls@hyp@opt}}{#1}}%
+}
+\newcommand*{\s@gls@hyp@opt}[1][]{%
+ \let\glslinkvar\@secondofthree
+ \@gls@hyp@opt@cs[hyper=false,#1]}
+\newcommand*{\p@gls@hyp@opt}[1][]{%
+ \let\glslinkvar\@thirdofthree
+ \@gls@hyp@opt@cs[hyper=true,#1]}
+\newrobustcmd*{\glslink}{%
+ \@gls@hyp@opt\@gls@@link
+}
+\newcommand*{\@gls@@link}[3][]{%
+ \glsdoifexistsordo{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \@gls@link[#1]{#2}{#3}%
+ }{%
+ \glstextformat{#3}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Glslink}{%
+ \@gls@hyp@opt\@Gls@@link
+}
+\newcommand*{\@Gls@@link}[3][]{%
+ \@gls@@link[#1]{#2}{\glssentencecase{#3}}%
+}
+\glsmfuaddmap{\glslink}{\Glslink}
+\newcommand*{\glspostlinkhook}{}
+\newcommand*{\@gls@link@checkfirsthyper}{%
+ \ifglsused{\glslabel}%
+ {%
+ }%
+ {%
+ \gls@checkisacronymlist\glstype
+ \ifglshyperfirst
+ \if@glsisacronymlist
+ \ifglsacrfootnote
+ \KV@glslink@hyperfalse
+ \fi
+ \fi
+ \else
+ \KV@glslink@hyperfalse
+ \fi
+ }%
+ \glslinkcheckfirsthyperhook
+}
+\newcommand*{\glslinkcheckfirsthyperhook}{}
+\newcommand*{\glslinkpostsetkeys}{}
+\newcommand{\glsifhyperon}[2]{\ifKV@glslink@hyper#1\else#2\fi}
+\newcommand*{\do@glsdisablehyperinlist}{%
+ \expandafter\DTLifinlist\expandafter{\glstype}{\@gls@nohyperlist}%
+ {\KV@glslink@hyperfalse}{}%
+}
+\newcommand*{\@gls@setdefault@glslink@opts}{}
+\def\@gls@link[#1]#2#3{%
+ \leavevmode
+ \protected@edef\glslabel{\glsdetoklabel{#2}}%
+ \def\@gls@link@opts{#1}%
+ \let\@gls@link@label\glslabel
+ \def\@glsnumberformat{glsnumberformat}%
+ \protected@edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}%
+ \protected@edef\glstype{\csname glo@\glslabel @type\endcsname}%
+ \let\org@ifKV@glslink@hyper\ifKV@glslink@hyper
+ \@gls@save@glslocal
+ \@gls@setdefault@glslink@opts
+ \do@glsdisablehyperinlist
+ \do@gls@link@checkfirsthyper
+ \setkeys{glslink}{#1}%
+ \glslinkpostsetkeys
+ \@gls@saveentrycounter
+ \@gls@setsort{\glslabel}%
+ \glsencapwrcontent{\@do@wrglossary{#2}}%
+ \ifKV@glslink@hyper
+ \@glslink{\glolinkprefix\glslabel}{\glstextformat{#3}}%
+ \else
+ \glsdonohyperlink{\glolinkprefix\glslabel}{\glstextformat{#3}}%
+ \fi
+ \let\ifKV@glslink@hyper\org@ifKV@glslink@hyper
+ \@gls@restore@glslocal
+}
+\newcommand*{\glsencapwrcontent}[1]{{#1}}
+\newcommand*{\glolinkprefix}{glo:}
+\def\glsentrycounter{\glscounter}%
+\newcommand*{\@gls@saveentrycounter}{%
+ \def\@gls@Hcounter{}%
+ \ifthenelse{\equal{\@gls@counter}{equation}}%
+ {
+ \ifcsundef{xatlevel@}%
+ {%
+ \edef\theglsentrycounter{\expandafter\noexpand
+ \csname the\@gls@counter\endcsname}%
+ }%
+ {%
+ \ifx\xatlevel@\@empty
+ \edef\theglsentrycounter{\expandafter\noexpand
+ \csname the\@gls@counter\endcsname}%
+ \else
+ \savecounters@
+ \advance\c@equation by 1\relax
+ \edef\theglsentrycounter{\csname the\@gls@counter\endcsname}%
+ \ifcsundef{theH\@gls@counter}%
+ {%
+ \def\@gls@Hcounter{\theglsentrycounter}%
+ }%
+ {%
+ \def\@gls@Hcounter{\csname theH\@gls@counter\endcsname}%
+ }%
+ \protected@edef\theHglsentrycounter{\@gls@Hcounter}%
+ \restorecounters@
+ \fi
+ }%
+ }%
+ {%
+ \edef\theglsentrycounter{\expandafter\noexpand
+ \csname the\@gls@counter\endcsname}%
+ }%
+ \ifx\@gls@Hcounter\@empty
+ \ifcsundef{theH\@gls@counter}%
+ {%
+ \def\theHglsentrycounter{\theglsentrycounter}%
+ }%
+ {%
+ \protected@edef\theHglsentrycounter{\expandafter\noexpand
+ \csname theH\@gls@counter\endcsname}%
+ }%
+ \fi
+}
+\def\@set@glo@numformat#1#2#3#4{%
+ \expandafter\@glo@check@mkidxrangechar#3\@nil
+ \protected@edef#1{%
+ \@glo@prefix setentrycounter[#4]{#2}%
+ \expandafter\string\csname\@glo@suffix\endcsname
+ }%
+ \@gls@checkmkidxchars#1%
+}
+\def\@glo@check@mkidxrangechar#1#2\@nil{%
+\if#1(\relax
+ \def\@glo@prefix{(}%
+ \if\relax#2\relax
+ \def\@glo@suffix{glsnumberformat}%
+ \else
+ \def\@glo@suffix{#2}%
+ \fi
+\else
+ \if#1)\relax
+ \def\@glo@prefix{)}%
+ \if\relax#2\relax
+ \def\@glo@suffix{glsnumberformat}%
+ \else
+ \def\@glo@suffix{#2}%
+ \fi
+ \else
+ \def\@glo@prefix{}\def\@glo@suffix{#1#2}%
+ \fi
+\fi}
+\newcommand*{\@gls@escbsdq}[1]{%
+ \def\@gls@checkedmkidx{}%
+ \let\gls@xdystring=#1\relax
+ \@onelevel@sanitize\gls@xdystring
+ \edef\do@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash\gls@xdystring\noexpand\@nil
+ \@backslashchar\@backslashchar\noexpand\null}%
+ \do@gls@xdycheckbackslash
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@xdycheckquote\gls@xdystring\@nil""\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}%
+ \ifglsesclocations
+ \@for\@gls@tmp:=\gls@protected@pagefmts\do
+ {%
+ \edef\@gls@sanitized@tmp{\expandafter\@gobble\string\\\expandonce\@gls@tmp}%
+ \@onelevel@sanitize\@gls@sanitized@tmp
+ \edef\gls@dosubst{%
+ \noexpand\DTLsubstituteall\noexpand\gls@xdystring
+ {\@gls@sanitized@tmp}{\expandonce\@gls@tmp}%
+ }%
+ \gls@dosubst
+ }%
+ \fi
+ \let#1=\gls@xdystring
+}
+\newcommand{\@gls@checkmkidxchars}[1]{%
+ \ifglsxindy
+ \@gls@escbsdq{#1}%
+ \else
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkquote#1\@nil""\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkescquote#1\@nil\"\"\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkescactual#1\@nil\?\?\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkactual#1\@nil??\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkbar#1\@nil||\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkescbar#1\@nil\|\|\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checklevel#1\@nil!!\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkesclevel#1\@nil\!\!\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \edef\@do@gls@checkesc{%
+ \noexpand\@gls@checkesc\expandonce{#1}\noexpand\@nil
+ \@backslashchar\@backslashchar\noexpand\null
+ }%
+ \@do@gls@checkesc
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \fi
+}
+\def\@gls@updatechecked#1\@nil#2{\def#2{#1}}
+\newtoks\@gls@tmpb
+\def\@gls@checkquote#1"#2"#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkquote{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@quotechar\@gls@quotechar\@gls@quotechar}%
+ \def\@@gls@checkquote{\@gls@checkquote#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@quotechar}%
+ \ifx\null#3\null
+ \def\@@gls@checkquote{\@gls@checkquote#2""\null}%
+ \else
+ \def\@@gls@checkquote{\@gls@checkquote#2"#3\null}%
+ \fi
+ \fi
+ \@@gls@checkquote
+}
+\def\@gls@checkescquote#1\"#2\"#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkescquote{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@quotechar
+ \@gls@quotechar\string\"\@gls@quotechar}%
+ \def\@@gls@checkescquote{\@gls@checkescquote#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@quotechar}%
+ \ifx\null#3\null
+ \def\@@gls@checkescquote{\@gls@checkescquote#2\"\"\null}%
+ \else
+ \def\@@gls@checkescquote{\@gls@checkescquote#2\"#3\null}%
+ \fi
+ \fi
+\@@gls@checkescquote
+}
+\def\@gls@checkescactual#1\?#2\?#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkescactual{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@actualchar
+ \@gls@quotechar\string\"\@gls@actualchar}%
+ \def\@@gls@checkescactual{\@gls@checkescactual#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@actualchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkescactual{\@gls@checkescactual#2\?\?\null}%
+ \else
+ \def\@@gls@checkescactual{\@gls@checkescactual#2\?#3\null}%
+ \fi
+ \fi
+\@@gls@checkescactual
+}
+\def\@gls@checkescbar#1\|#2\|#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkescbar{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@encapchar
+ \@gls@quotechar\string\"\@gls@encapchar}%
+ \def\@@gls@checkescbar{\@gls@checkescbar#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@encapchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkescbar{\@gls@checkescbar#2\|\|\null}%
+ \else
+ \def\@@gls@checkescbar{\@gls@checkescbar#2\|#3\null}%
+ \fi
+ \fi
+\@@gls@checkescbar
+}
+\def\@gls@checkesclevel#1\!#2\!#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkesclevel{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@levelchar
+ \@gls@quotechar\string\"\@gls@levelchar}%
+ \def\@@gls@checkesclevel{\@gls@checkesclevel#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@levelchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkesclevel{\@gls@checkesclevel#2\!\!\null}%
+ \else
+ \def\@@gls@checkesclevel{\@gls@checkesclevel#2\!#3\null}%
+ \fi
+ \fi
+\@@gls@checkesclevel
+}
+\def\@gls@checkbar#1|#2|#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkbar{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@encapchar\@gls@quotechar\@gls@encapchar}%
+ \def\@@gls@checkbar{\@gls@checkbar#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@encapchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkbar{\@gls@checkbar#2||\null}%
+ \else
+ \def\@@gls@checkbar{\@gls@checkbar#2|#3\null}%
+ \fi
+ \fi
+ \@@gls@checkbar
+}
+\def\@gls@checklevel#1!#2!#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checklevel{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@levelchar\@gls@quotechar\@gls@levelchar}%
+ \def\@@gls@checklevel{\@gls@checklevel#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@levelchar}%
+ \ifx\null#3\null
+ \def\@@gls@checklevel{\@gls@checklevel#2!!\null}%
+ \else
+ \def\@@gls@checklevel{\@gls@checklevel#2!#3\null}%
+ \fi
+ \fi
+ \@@gls@checklevel
+}
+\def\@gls@checkactual#1?#2?#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkactual{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@actualchar\@gls@quotechar\@gls@actualchar}%
+ \def\@@gls@checkactual{\@gls@checkactual#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@actualchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkactual{\@gls@checkactual#2??\null}%
+ \else
+ \def\@@gls@checkactual{\@gls@checkactual#2?#3\null}%
+ \fi
+ \fi
+ \@@gls@checkactual
+}
+\bgroup
+\catcode`\|0\relax
+\catcode`\\12\relax
+|gdef|@gls@checkesc#1\#2\#3|null{%
+ |@gls@tmpb=|expandafter{|@gls@checkedmkidx}%
+ |toks@={#1}%
+ |ifx|null#2|null
+ |ifx|null#3|null
+ |edef|@gls@checkedmkidx{|the|@gls@tmpb|the|toks@}%
+ |def|@@gls@checkesc{|relax}%
+ |else
+ |edef|@gls@checkedmkidx{|the|@gls@tmpb|the|toks@
+ |@gls@quotechar|@backslashchar|@gls@quotechar|@backslashchar}%
+ |def|@@gls@checkesc{|@gls@checkesc#3|null}%
+ |fi
+ |else
+ |edef|@gls@checkedmkidx{|the|@gls@tmpb|the|toks@
+ |@gls@quotechar|@backslashchar}%
+ |ifx|null#3|null
+ |def|@@gls@checkesc{|@gls@checkesc#2\\|null}%
+ |else
+ |def|@@gls@checkesc{|@gls@checkesc#2\#3|null}%
+ |fi
+ |fi
+ |@@gls@checkesc
+}
+|egroup
+\def\@gls@xdycheckquote#1"#2"#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@xdycheckquote{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \string\"\string\"}%
+ \def\@@gls@xdycheckquote{\@gls@xdycheckquote#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \string\"}%
+ \ifx\null#3\null
+ \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2""\null}%
+ \else
+ \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2"#3\null}%
+ \fi
+ \fi
+ \@@gls@xdycheckquote
+}
+\edef\def@gls@xdycheckbackslash{%
+ \noexpand\def\noexpand\@gls@xdycheckbackslash##1\@backslashchar
+ ##2\@backslashchar##3\noexpand\null{%
+ \noexpand\@gls@tmpb=\noexpand\expandafter
+ {\noexpand\@gls@checkedmkidx}%
+ \noexpand\toks@={##1}%
+ \noexpand\ifx\noexpand\null##2\noexpand\null
+ \noexpand\ifx\noexpand\null##3\noexpand\null
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}%
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{\relax}%
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \@backslashchar\@backslashchar\@backslashchar\@backslashchar}%
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash##3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \@backslashchar\@backslashchar}%
+ \noexpand\ifx\noexpand\null##3\noexpand\null
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash##2\@backslashchar
+ \@backslashchar\noexpand\null}%
+ \noexpand\else
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash##2\@backslashchar
+ ##3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\@@gls@xdycheckbackslash
+ }%
+}
+\def@gls@xdycheckbackslash
+
+\newlength\gls@tmplen
+\newcommand*{\glsdohypertarget}[2]{%
+ \glsdoshowtarget{#1}%
+ {%
+ \glsmeasureheight{\gls@tmplen}{#2}%
+ \raisebox{\gls@tmplen}{\hypertarget{#1}{}}%
+ #2%
+ }%
+}
+\newcommand*{\glsdohyperlink}[2]{%
+ \glsdoshowtarget{#1}{\hyperlink{#1}{#2}}%
+}
+\newcommand*{\glsdonohyperlink}[2]{#2}
+\ifcsundef{hyperlink}%
+{%
+ \let\@glslink\glsdonohyperlink
+}%
+{%
+ \let\@glslink\glsdohyperlink
+}
+\ifcsundef{hypertarget}%
+{%
+ \let\@glstarget\@secondoftwo
+}%
+{%
+ \let\@glstarget\glsdohypertarget
+}
+\newcommand{\glsdisablehyper}{%
+ \KV@glslink@hyperfalse
+ \let\@glslink\glsdonohyperlink
+ \let\@glstarget\@secondoftwo
+}
+\newcommand{\glsenablehyper}{%
+ \KV@glslink@hypertrue
+ \let\@glslink\glsdohyperlink
+ \let\@glstarget\glsdohypertarget
+}
+\providecommand{\@firstofthree}[3]{#1}
+\providecommand{\@secondofthree}[3]{#2}
+\newrobustcmd*{\gls}{\@gls@hyp@opt\@gls}
+\newcommand*{\@gls}[2][]{%
+ \new@ifnextchar[{\@gls@{#1}{#2}}{\@gls@{#1}{#2}[]}%
+}
+\def\@gls@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Gls}{\@gls@hyp@opt\@Gls}
+\glsmfuaddmap{\gls}{\Gls}
+\newcommand*{\@Gls}[2][]{%
+ \new@ifnextchar[{\@Gls@{#1}{#2}}{\@Gls@{#1}{#2}[]}%
+}
+\def\@Gls@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\GLS}{\@gls@hyp@opt\@GLS}
+\glsmfublocker{\GLS}
+\newcommand*{\@GLS}[2][]{%
+ \new@ifnextchar[{\@GLS@{#1}{#2}}{\@GLS@{#1}{#2}[]}%
+}
+\def\@GLS@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\glspl}{\@gls@hyp@opt\@glspl}
+\newcommand*{\@glspl}[2][]{%
+ \new@ifnextchar[{\@glspl@{#1}{#2}}{\@glspl@{#1}{#2}[]}%
+}
+\def\@glspl@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Glspl}{\@gls@hyp@opt\@Glspl}
+\glsmfuaddmap{\glspl}{\Glspl}
+\newcommand*{\@Glspl}[2][]{%
+ \new@ifnextchar[{\@Glspl@{#1}{#2}}{\@Glspl@{#1}{#2}[]}%
+}
+\def\@Glspl@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\GLSpl}{\@gls@hyp@opt\@GLSpl}
+\glsmfublocker{\GLSpl}
+\newcommand*{\@GLSpl}[2][]{%
+ \new@ifnextchar[{\@GLSpl@{#1}{#2}}{\@GLSpl@{#1}{#2}[]}%
+}
+\def\@GLSpl@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\glsdisp}{\@gls@hyp@opt\@glsdisp}
+\newcommand*{\@glsdisp}[3][]{%
+ \glsdoifexists{#2}{%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \def\glscustomtext{#3}%
+ \def\glsinsert{}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Glsdisp}{\@gls@hyp@opt\@Glsdisp}
+\newcommand*{\@Glsdisp}[3][]{%
+ \@glsdisp[#1]{#2}{\glssentencecase{#3}}%
+}
+\glsmfuaddmap{\glsdisp}{\Glsdisp}
+\newcommand*{\@gls@link@nocheckfirsthyper}{}
+\newcommand{\@gls@field@link}[3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \@gls@link[#1]{#2}{#3}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\glstext}{\@gls@hyp@opt\@glstext}
+\newcommand*{\@glstext}[2][]{%
+ \new@ifnextchar[{\@glstext@{#1}{#2}}{\@glstext@{#1}{#2}[]}}
+\def\@glstext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrytext{#2}#3}%
+}
+\newrobustcmd*{\GLStext}{\@gls@hyp@opt\@GLStext}
+\glsmfublocker{\GLStext}
+\newcommand*{\@GLStext}[2][]{%
+ \new@ifnextchar[{\@GLStext@{#1}{#2}}{\@GLStext@{#1}{#2}[]}}
+\def\@GLStext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrytext{#2}#3}}%
+}
+\newrobustcmd*{\Glstext}{\@gls@hyp@opt\@Glstext}
+\glsmfuaddmap{\glstext}{\Glstext}
+\newcommand*{\@Glstext}[2][]{%
+ \new@ifnextchar[{\@Glstext@{#1}{#2}}{\@Glstext@{#1}{#2}[]}}
+\def\@Glstext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrytext{#2}#3}%
+}
+\newrobustcmd*{\glsfirst}{\@gls@hyp@opt\@glsfirst}
+\newcommand*{\@glsfirst}[2][]{%
+ \new@ifnextchar[{\@glsfirst@{#1}{#2}}{\@glsfirst@{#1}{#2}[]}}
+\def\@glsfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryfirst{#2}#3}%
+}
+\newrobustcmd*{\Glsfirst}{\@gls@hyp@opt\@Glsfirst}
+\glsmfuaddmap{\glsfirst}{\Glsfirst}
+\newcommand*{\@Glsfirst}[2][]{%
+ \new@ifnextchar[{\@Glsfirst@{#1}{#2}}{\@Glsfirst@{#1}{#2}[]}}
+\def\@Glsfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryfirst{#2}#3}%
+}
+\newrobustcmd*{\GLSfirst}{\@gls@hyp@opt\@GLSfirst}
+\glsmfublocker{\GLSfirst}
+\newcommand*{\@GLSfirst}[2][]{%
+ \new@ifnextchar[{\@GLSfirst@{#1}{#2}}{\@GLSfirst@{#1}{#2}[]}}
+\def\@GLSfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryfirst{#2}#3}}%
+}
+\newrobustcmd*{\glsplural}{\@gls@hyp@opt\@glsplural}
+\newcommand*{\@glsplural}[2][]{%
+ \new@ifnextchar[{\@glsplural@{#1}{#2}}{\@glsplural@{#1}{#2}[]}}
+\def\@glsplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryplural{#2}#3}%
+}
+\newrobustcmd*{\Glsplural}{\@gls@hyp@opt\@Glsplural}
+\glsmfuaddmap{\glsplural}{\Glsplural}
+\newcommand*{\@Glsplural}[2][]{%
+ \new@ifnextchar[{\@Glsplural@{#1}{#2}}{\@Glsplural@{#1}{#2}[]}}
+\def\@Glsplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryplural{#2}#3}%
+}
+\newrobustcmd*{\GLSplural}{\@gls@hyp@opt\@GLSplural}
+\glsmfublocker{\GLSplural}
+\newcommand*{\@GLSplural}[2][]{%
+ \new@ifnextchar[{\@GLSplural@{#1}{#2}}{\@GLSplural@{#1}{#2}[]}}
+\def\@GLSplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryplural{#2}#3}}%
+}
+\newrobustcmd*{\glsfirstplural}{\@gls@hyp@opt\@glsfirstplural}
+\newcommand*{\@glsfirstplural}[2][]{%
+ \new@ifnextchar[{\@glsfirstplural@{#1}{#2}}{\@glsfirstplural@{#1}{#2}[]}}
+\def\@glsfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryfirstplural{#2}#3}%
+}
+\newrobustcmd*{\Glsfirstplural}{\@gls@hyp@opt\@Glsfirstplural}
+\glsmfuaddmap{\glsfirstplural}{\Glsfirstplural}
+\newcommand*{\@Glsfirstplural}[2][]{%
+ \new@ifnextchar[{\@Glsfirstplural@{#1}{#2}}{\@Glsfirstplural@{#1}{#2}[]}}
+\def\@Glsfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryfirstplural{#2}#3}%
+}
+\newrobustcmd*{\GLSfirstplural}{\@gls@hyp@opt\@GLSfirstplural}
+\glsmfublocker{\GLSfirstplural}
+\newcommand*{\@GLSfirstplural}[2][]{%
+ \new@ifnextchar[{\@GLSfirstplural@{#1}{#2}}{\@GLSfirstplural@{#1}{#2}[]}}
+\def\@GLSfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryfirstplural{#2}#3}}%
+}
+\newrobustcmd*{\glsname}{\@gls@hyp@opt\@glsname}
+\newcommand*{\@glsname}[2][]{%
+ \new@ifnextchar[{\@glsname@{#1}{#2}}{\@glsname@{#1}{#2}[]}}
+\def\@glsname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryname{#2}#3}%
+}
+\newrobustcmd*{\Glsname}{\@gls@hyp@opt\@Glsname}
+\glsmfuaddmap{\glsname}{\Glsname}
+\newcommand*{\@Glsname}[2][]{%
+ \new@ifnextchar[{\@Glsname@{#1}{#2}}{\@Glsname@{#1}{#2}[]}}
+\def\@Glsname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryname{#2}#3}%
+}
+\newrobustcmd*{\GLSname}{\@gls@hyp@opt\@GLSname}
+\glsmfublocker{\GLSname}
+\newcommand*{\@GLSname}[2][]{%
+ \new@ifnextchar[{\@GLSname@{#1}{#2}}{\@GLSname@{#1}{#2}[]}}
+\def\@GLSname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryname{#2}#3}}%
+}
+\newrobustcmd*{\glsdesc}{\@gls@hyp@opt\@glsdesc}
+\newcommand*{\@glsdesc}[2][]{%
+ \new@ifnextchar[{\@glsdesc@{#1}{#2}}{\@glsdesc@{#1}{#2}[]}}
+\def\@glsdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrydesc{#2}#3}%
+}
+\newrobustcmd*{\Glsdesc}{\@gls@hyp@opt\@Glsdesc}
+\glsmfuaddmap{\glsdesc}{\Glsdesc}
+\newcommand*{\@Glsdesc}[2][]{%
+ \new@ifnextchar[{\@Glsdesc@{#1}{#2}}{\@Glsdesc@{#1}{#2}[]}}
+\def\@Glsdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrydesc{#2}#3}%
+}
+\newrobustcmd*{\GLSdesc}{\@gls@hyp@opt\@GLSdesc}
+\glsmfublocker{\GLSdesc}
+\newcommand*{\@GLSdesc}[2][]{%
+ \new@ifnextchar[{\@GLSdesc@{#1}{#2}}{\@GLSdesc@{#1}{#2}[]}}
+\def\@GLSdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrydesc{#2}#3}}%
+}
+\newrobustcmd*{\glsdescplural}{\@gls@hyp@opt\@glsdescplural}
+\newcommand*{\@glsdescplural}[2][]{%
+ \new@ifnextchar[{\@glsdescplural@{#1}{#2}}{\@glsdescplural@{#1}{#2}[]}}
+\def\@glsdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrydescplural{#2}#3}%
+}
+\newrobustcmd*{\Glsdescplural}{\@gls@hyp@opt\@Glsdescplural}
+\glsmfuaddmap{\glsdescplural}{\Glsdescplural}
+\newcommand*{\@Glsdescplural}[2][]{%
+ \new@ifnextchar[{\@Glsdescplural@{#1}{#2}}{\@Glsdescplural@{#1}{#2}[]}}
+\def\@Glsdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrydescplural{#2}#3}%
+}
+\newrobustcmd*{\GLSdescplural}{\@gls@hyp@opt\@GLSdescplural}
+\glsmfublocker{\GLSdescplural}
+\newcommand*{\@GLSdescplural}[2][]{%
+ \new@ifnextchar[{\@GLSdescplural@{#1}{#2}}{\@GLSdescplural@{#1}{#2}[]}}
+\def\@GLSdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrydescplural{#2}#3}}%
+}
+\newrobustcmd*{\glssymbol}{\@gls@hyp@opt\@glssymbol}
+\newcommand*{\@glssymbol}[2][]{%
+ \new@ifnextchar[{\@glssymbol@{#1}{#2}}{\@glssymbol@{#1}{#2}[]}}
+\def\@glssymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrysymbol{#2}#3}%
+}
+\newrobustcmd*{\Glssymbol}{\@gls@hyp@opt\@Glssymbol}
+\glsmfuaddmap{\glssymbol}{\Glssymbol}
+\newcommand*{\@Glssymbol}[2][]{%
+ \new@ifnextchar[{\@Glssymbol@{#1}{#2}}{\@Glssymbol@{#1}{#2}[]}}
+\def\@Glssymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrysymbol{#2}#3}%
+}
+\newrobustcmd*{\GLSsymbol}{\@gls@hyp@opt\@GLSsymbol}
+\glsmfublocker{\GLSsymbol}
+\newcommand*{\@GLSsymbol}[2][]{%
+ \new@ifnextchar[{\@GLSsymbol@{#1}{#2}}{\@GLSsymbol@{#1}{#2}[]}}
+\def\@GLSsymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrysymbol{#2}#3}}%
+}
+\newrobustcmd*{\glssymbolplural}{\@gls@hyp@opt\@glssymbolplural}
+\newcommand*{\@glssymbolplural}[2][]{%
+ \new@ifnextchar[{\@glssymbolplural@{#1}{#2}}{\@glssymbolplural@{#1}{#2}[]}}
+\def\@glssymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrysymbolplural{#2}#3}%
+}
+\newrobustcmd*{\Glssymbolplural}{\@gls@hyp@opt\@Glssymbolplural}
+\glsmfuaddmap{\glssymbolplural}{\Glssymbolplural}
+\newcommand*{\@Glssymbolplural}[2][]{%
+ \new@ifnextchar[{\@Glssymbolplural@{#1}{#2}}{\@Glssymbolplural@{#1}{#2}[]}}
+\def\@Glssymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrysymbolplural{#2}#3}%
+}
+\newrobustcmd*{\GLSsymbolplural}{\@gls@hyp@opt\@GLSsymbolplural}
+\glsmfublocker{\GLSsymbolplural}
+\newcommand*{\@GLSsymbolplural}[2][]{%
+ \new@ifnextchar[{\@GLSsymbolplural@{#1}{#2}}{\@GLSsymbolplural@{#1}{#2}[]}}
+\def\@GLSsymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrysymbolplural{#2}#3}}%
+}
+\newrobustcmd*{\glsuseri}{\@gls@hyp@opt\@glsuseri}
+\newcommand*{\@glsuseri}[2][]{%
+ \new@ifnextchar[{\@glsuseri@{#1}{#2}}{\@glsuseri@{#1}{#2}[]}}
+\def\@glsuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuseri{#2}#3}%
+}
+\newrobustcmd*{\Glsuseri}{\@gls@hyp@opt\@Glsuseri}
+\glsmfuaddmap{\glsuseri}{\Glsuseri}
+\newcommand*{\@Glsuseri}[2][]{%
+ \new@ifnextchar[{\@Glsuseri@{#1}{#2}}{\@Glsuseri@{#1}{#2}[]}}
+\def\@Glsuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuseri{#2}#3}%
+}
+\newrobustcmd*{\GLSuseri}{\@gls@hyp@opt\@GLSuseri}
+\glsmfublocker{\GLSuseri}
+\newcommand*{\@GLSuseri}[2][]{%
+ \new@ifnextchar[{\@GLSuseri@{#1}{#2}}{\@GLSuseri@{#1}{#2}[]}}
+\def\@GLSuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuseri{#2}#3}}%
+}
+\newrobustcmd*{\glsuserii}{\@gls@hyp@opt\@glsuserii}
+\newcommand*{\@glsuserii}[2][]{%
+ \new@ifnextchar[{\@glsuserii@{#1}{#2}}{\@glsuserii@{#1}{#2}[]}}
+\def\@glsuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuserii{#2}#3}%
+}
+\newrobustcmd*{\Glsuserii}{\@gls@hyp@opt\@Glsuserii}
+\glsmfuaddmap{\glsuserii}{\Glsuserii}
+\newcommand*{\@Glsuserii}[2][]{%
+ \new@ifnextchar[{\@Glsuserii@{#1}{#2}}{\@Glsuserii@{#1}{#2}[]}}
+\def\@Glsuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuserii{#2}#3}%
+}
+\newrobustcmd*{\GLSuserii}{\@gls@hyp@opt\@GLSuserii}
+\glsmfublocker{\GLSuserii}
+\newcommand*{\@GLSuserii}[2][]{%
+ \new@ifnextchar[{\@GLSuserii@{#1}{#2}}{\@GLSuserii@{#1}{#2}[]}}
+\def\@GLSuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuserii{#2}#3}}%
+}
+\newrobustcmd*{\glsuseriii}{\@gls@hyp@opt\@glsuseriii}
+\newcommand*{\@glsuseriii}[2][]{%
+ \new@ifnextchar[{\@glsuseriii@{#1}{#2}}{\@glsuseriii@{#1}{#2}[]}}
+\def\@glsuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuseriii{#2}#3}%
+}
+\newrobustcmd*{\Glsuseriii}{\@gls@hyp@opt\@Glsuseriii}
+\glsmfuaddmap{\glsuseriii}{\Glsuseriii}
+\newcommand*{\@Glsuseriii}[2][]{%
+ \new@ifnextchar[{\@Glsuseriii@{#1}{#2}}{\@Glsuseriii@{#1}{#2}[]}}
+\def\@Glsuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuseriii{#2}#3}%
+}
+\newrobustcmd*{\GLSuseriii}{\@gls@hyp@opt\@GLSuseriii}
+\glsmfublocker{\GLSuseriii}
+\newcommand*{\@GLSuseriii}[2][]{%
+ \new@ifnextchar[{\@GLSuseriii@{#1}{#2}}{\@GLSuseriii@{#1}{#2}[]}}
+\def\@GLSuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuseriii{#2}#3}}%
+}
+\newrobustcmd*{\glsuseriv}{\@gls@hyp@opt\@glsuseriv}
+\newcommand*{\@glsuseriv}[2][]{%
+ \new@ifnextchar[{\@glsuseriv@{#1}{#2}}{\@glsuseriv@{#1}{#2}[]}}
+\def\@glsuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuseriv{#2}#3}%
+}
+\newrobustcmd*{\Glsuseriv}{\@gls@hyp@opt\@Glsuseriv}
+\glsmfuaddmap{\glsuseriv}{\Glsuseriv}
+\newcommand*{\@Glsuseriv}[2][]{%
+ \new@ifnextchar[{\@Glsuseriv@{#1}{#2}}{\@Glsuseriv@{#1}{#2}[]}}
+\def\@Glsuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuseriv{#2}#3}%
+}
+\newrobustcmd*{\GLSuseriv}{\@gls@hyp@opt\@GLSuseriv}
+\glsmfublocker{\GLSuseriv}
+\newcommand*{\@GLSuseriv}[2][]{%
+ \new@ifnextchar[{\@GLSuseriv@{#1}{#2}}{\@GLSuseriv@{#1}{#2}[]}}
+\def\@GLSuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuseriv{#2}#3}}%
+}
+\newrobustcmd*{\glsuserv}{\@gls@hyp@opt\@glsuserv}
+\newcommand*{\@glsuserv}[2][]{%
+ \new@ifnextchar[{\@glsuserv@{#1}{#2}}{\@glsuserv@{#1}{#2}[]}}
+\def\@glsuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuserv{#2}#3}%
+}
+\newrobustcmd*{\Glsuserv}{\@gls@hyp@opt\@Glsuserv}
+\glsmfuaddmap{\glsuserv}{\Glsuserv}
+\newcommand*{\@Glsuserv}[2][]{%
+\new@ifnextchar[{\@Glsuserv@{#1}{#2}}{\@Glsuserv@{#1}{#2}[]}}
+\def\@Glsuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuserv{#2}#3}%
+}
+\newrobustcmd*{\GLSuserv}{\@gls@hyp@opt\@GLSuserv}
+\glsmfublocker{\GLSuserv}
+\newcommand*{\@GLSuserv}[2][]{%
+\new@ifnextchar[{\@GLSuserv@{#1}{#2}}{\@GLSuserv@{#1}{#2}[]}}
+\def\@GLSuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuserv{#2}#3}}%
+}
+\newrobustcmd*{\glsuservi}{\@gls@hyp@opt\@glsuservi}
+\newcommand*{\@glsuservi}[2][]{%
+ \new@ifnextchar[{\@glsuservi@{#1}{#2}}{\@glsuservi@{#1}{#2}[]}}
+\def\@glsuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuservi{#2}#3}%
+}
+\newrobustcmd*{\Glsuservi}{\@gls@hyp@opt\@Glsuservi}
+\glsmfuaddmap{\glsuservi}{\Glsuservi}
+\newcommand*{\@Glsuservi}[2][]{%
+ \new@ifnextchar[{\@Glsuservi@{#1}{#2}}{\@Glsuservi@{#1}{#2}[]}}
+\def\@Glsuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuservi{#2}#3}%
+}
+\newrobustcmd*{\GLSuservi}{\@gls@hyp@opt\@GLSuservi}
+\glsmfublocker{\GLSuservi}
+\newcommand*{\@GLSuservi}[2][]{%
+ \new@ifnextchar[{\@GLSuservi@{#1}{#2}}{\@GLSuservi@{#1}{#2}[]}}
+\def\@GLSuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuservi{#2}#3}}%
+}
+\newrobustcmd*{\acrshort}{\@gls@hyp@opt\ns@acrshort}
+\newcommand*{\ns@acrshort}[2][]{%
+ \new@ifnextchar[{\@acrshort{#1}{#2}}{\@acrshort{#1}{#2}[]}%
+}
+\def\@acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsentryshort{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Acrshort}{\@gls@hyp@opt\ns@Acrshort}
+\glsmfuaddmap{\Acrshort}{\Acrshort}
+\newcommand*{\ns@Acrshort}[2][]{%
+ \new@ifnextchar[{\@Acrshort{#1}{#2}}{\@Acrshort{#1}{#2}[]}%
+}
+\def\@Acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsentryshort{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\ACRshort}{\@gls@hyp@opt\ns@ACRshort}
+\glsmfublocker{\ACRshort}
+\newcommand*{\ns@ACRshort}[2][]{%
+ \new@ifnextchar[{\@ACRshort{#1}{#2}}{\@ACRshort{#1}{#2}[]}%
+}
+\def\@ACRshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsuppercase{\acronymfont{\glsentryshort{#2}}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\acrshortpl}{\@gls@hyp@opt\ns@acrshortpl}
+\newcommand*{\ns@acrshortpl}[2][]{%
+ \new@ifnextchar[{\@acrshortpl{#1}{#2}}{\@acrshortpl{#1}{#2}[]}%
+}
+\def\@acrshortpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsentryshortpl{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Acrshortpl}{\@gls@hyp@opt\ns@Acrshortpl}
+\glsmfuaddmap{\Acrshortpl}{\Acrshortpl}
+\newcommand*{\ns@Acrshortpl}[2][]{%
+ \new@ifnextchar[{\@Acrshortpl{#1}{#2}}{\@Acrshortpl{#1}{#2}[]}%
+}
+\def\@Acrshortpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsentryshortpl{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\ACRshortpl}{\@gls@hyp@opt\ns@ACRshortpl}
+\glsmfublocker{\ACRshortpl}
+\newcommand*{\ns@ACRshortpl}[2][]{%
+ \new@ifnextchar[{\@ACRshortpl{#1}{#2}}{\@ACRshortpl{#1}{#2}[]}%
+}
+\def\@ACRshortpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsuppercase{\acronymfont{\glsentryshortpl{#2}}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\acrlong}{\@gls@hyp@opt\ns@acrlong}
+\newcommand*{\ns@acrlong}[2][]{%
+ \new@ifnextchar[{\@acrlong{#1}{#2}}{\@acrlong{#1}{#2}[]}%
+}
+\def\@acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsentrylong{#2}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Acrlong}{\@gls@hyp@opt\ns@Acrlong}
+\glsmfuaddmap{\Acrlong}{\Acrlong}
+\newcommand*{\ns@Acrlong}[2][]{%
+ \new@ifnextchar[{\@Acrlong{#1}{#2}}{\@Acrlong{#1}{#2}[]}%
+}
+\def\@Acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \Glsentrylong{#2}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\ACRlong}{\@gls@hyp@opt\ns@ACRlong}
+\glsmfublocker{\ACRlong}
+\newcommand*{\ns@ACRlong}[2][]{%
+ \new@ifnextchar[{\@ACRlong{#1}{#2}}{\@ACRlong{#1}{#2}[]}%
+}
+\def\@ACRlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsuppercase{\glsentrylong{#2}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\acrlongpl}{\@gls@hyp@opt\ns@acrlongpl}
+\newcommand*{\ns@acrlongpl}[2][]{%
+ \new@ifnextchar[{\@acrlongpl{#1}{#2}}{\@acrlongpl{#1}{#2}[]}%
+}
+\def\@acrlongpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsentrylongpl{#2}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Acrlongpl}{\@gls@hyp@opt\ns@Acrlongpl}
+\glsmfuaddmap{\Acrlongpl}{\Acrlongpl}
+\newcommand*{\ns@Acrlongpl}[2][]{%
+ \new@ifnextchar[{\@Acrlongpl{#1}{#2}}{\@Acrlongpl{#1}{#2}[]}%
+}
+\def\@Acrlongpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \Glsentrylongpl{#2}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\ACRlongpl}{\@gls@hyp@opt\ns@ACRlongpl}
+\glsmfublocker{\ACRlongpl}
+\newcommand*{\ns@ACRlongpl}[2][]{%
+ \new@ifnextchar[{\@ACRlongpl{#1}{#2}}{\@ACRlongpl{#1}{#2}[]}%
+}
+\def\@ACRlongpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsuppercase{\glsentrylongpl{#2}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newcommand*{\@gls@entry@field}[2]{%
+ \csuse{glo@\glsdetoklabel{#1}@#2}%
+}
+\newcommand*{\glsletentryfield}[3]{%
+ \letcs{#1}{glo@\glsdetoklabel{#2}@#3}%
+}
+\newrobustcmd*{\@Gls@entry@field}[2]{%
+ \glsdoifexistsordo{#1}%
+ {%
+ \letcs\@glo@text{glo@\glsdetoklabel{#1}@#2}%
+ \ifdef\@glo@text
+ {%
+ \expandafter\glssentencecase\expandafter{\@glo@text}%
+ }%
+ {%
+ ??\PackageError{glossaries}{The field `#2' doesn't exist for glossary
+ entry `\glsdetoklabel{#1}'}{Check you have correctly spelt the entry
+ label and the field name}%
+ }%
+ }%
+ {%
+ ??%
+ }%
+}
+\newcommand{\@Glsentryfield}[2]{%
+ \glstexorpdfstring{\@Gls@entry@field{#1}{#2}}%
+ {\MFUsentencecase{\@gls@entry@field{#1}{#2}}}%
+}
+\ifdef\texorpdfstring
+{\newcommand{\glstexorpdfstring}{\texorpdfstring}}
+{\newcommand{\glstexorpdfstring}[2]{#1}}
+\newcommand*{\glsentryname}[1]{\@gls@entry@field{#1}{name}}
+\newcommand*{\Glsentryname}[1]{%
+ \glstexorpdfstring{\protect\@Gls@entryname{#1}}%
+ {\MFUsentencecase{\@gls@entry@field{#1}{name}}}%
+}
+\glsmfuaddmap{\glsentryname}{\Glsentryname}
+\newcommand*{\@Gls@entryname}[1]{%
+ \@Gls@entry@field{#1}{name}%
+}
+\newrobustcmd*{\@Gls@acrentryname}[1]{%
+ \ifglshaslong{#1}%
+ {%
+ \protected@edef\@glo@text{\@gls@entry@field{#1}{name}}%
+ \expandafter\glssentencecase\expandafter{\@glo@text}%
+ }%
+ {%
+ \@Gls@entry@field{#1}{name}%
+ }%
+}
+\newcommand*{\@org@Gls@acrentryname}[1]{%
+ \ifglshaslong{#1}%
+ {%
+ \letcs\@glo@text{glo@\glsdetoklabel{#1}@name}%
+ \expandafter\@gls@getbody\@glo@text{}\@nil
+ \expandafter\ifx\@gls@body\glsentrylong\relax
+ \expandafter\Glsentrylong\@gls@rest
+ \else
+ \expandafter\ifx\@gls@body\glsentryshort\relax
+ \expandafter\Glsentryshort\@gls@rest
+ \else
+ \expandafter\ifx\@gls@body\acronymfont\relax
+ {%
+ \let\glsentryshort\Glsentryshort
+ \@glo@text
+ }%
+ \else
+ \expandafter\ifx\@gls@body\glsshortaccessdisplay\relax
+ {%
+ \let\glsentryshort\Glsentryshort
+ \@glo@text
+ }%
+ \else
+ \expandafter\glssentencecase\expandafter{\@glo@text}%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ {%
+ \@Gls@entry@field{#1}{name}%
+ }%
+}
+\newcommand*{\glsentrydesc}[1]{\@gls@entry@field{#1}{desc}}
+\newcommand*{\Glsentrydesc}[1]{\@Glsentryfield{#1}{desc}}
+\glsmfuaddmap{\glsentrydesc}{\Glsentrydesc}
+\newcommand*{\glsentrydescplural}[1]{%
+ \@gls@entry@field{#1}{descplural}%
+}
+\newcommand*{\Glsentrydescplural}[1]{%
+ \@Glsentryfield{#1}{descplural}%
+}
+\glsmfuaddmap{\glsentrydescplural}{\Glsentrydescplural}
+\newcommand*{\glsentrytext}[1]{\@gls@entry@field{#1}{text}}
+\newcommand*{\Glsentrytext}[1]{%
+ \@Glsentryfield{#1}{text}%
+}
+\glsmfuaddmap{\glsentrytext}{\Glsentrytext}
+\newcommand*{\glsentryplural}[1]{%
+ \@gls@entry@field{#1}{plural}%
+}
+\newcommand*{\Glsentryplural}[1]{%
+ \@Glsentryfield{#1}{plural}%
+}
+\glsmfuaddmap{\glsentryplural}{\Glsentryplural}
+\newcommand*{\glsentrysymbol}[1]{%
+ \@gls@entry@field{#1}{symbol}%
+}
+\newcommand*{\Glsentrysymbol}[1]{%
+ \@Glsentryfield{#1}{symbol}%
+}
+\glsmfuaddmap{\glsentrysymbol}{\Glsentrysymbol}
+\newcommand*{\glsentrysymbolplural}[1]{%
+ \@gls@entry@field{#1}{symbolplural}%
+}
+\newcommand*{\Glsentrysymbolplural}[1]{%
+ \@Glsentryfield{#1}{symbolplural}%
+}
+\glsmfuaddmap{\glsentrysymbolplural}{\Glsentrysymbolplural}
+\newcommand*{\glsentryfirst}[1]{%
+ \@gls@entry@field{#1}{first}%
+}
+\newcommand*{\Glsentryfirst}[1]{%
+ \@Glsentryfield{#1}{first}%
+}
+\glsmfuaddmap{\glsentryfirst}{\Glsentryfirst}
+\newcommand*{\glsentryfirstplural}[1]{%
+ \@gls@entry@field{#1}{firstpl}%
+}
+\newcommand*{\Glsentryfirstplural}[1]{%
+ \@Glsentryfield{#1}{firstpl}%
+}
+\glsmfuaddmap{\glsentryfirstplural}{\Glsentryfirstplural}
+\newcommand{\glscapitalisewords}[1]{%
+ \capitalisewords{#1}%
+}
+\newcommand*{\glsentrytitlecase}[2]{%
+ \glstexorpdfstring
+ {\@glsentrytitlecase{#1}{#2}}%
+ {\MFUsentencecase{\@gls@entry@field{#1}{#2}}}%
+}
+\newrobustcmd*{\@glsentrytitlecase}[2]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsfieldfetch{#1}{#2}{\@gls@value}%
+ \expandafter\glscapitalisewords\expandafter{\@gls@value}%
+ }%
+}
+\newcommand*{\glsentrytype}[1]{\@gls@entry@field{#1}{type}}
+\newcommand*{\glsentrysort}[1]{%
+ \@gls@entry@field{#1}{sort}%
+}
+\newcommand*{\glsentryparent}[1]{%
+ \@gls@entry@field{#1}{parent}%
+}
+\newcommand*{\glsentryuseri}[1]{%
+ \@gls@entry@field{#1}{useri}%
+}
+\newcommand*{\Glsentryuseri}[1]{%
+ \@Glsentryfield{#1}{useri}%
+}
+\glsmfuaddmap{\glsentryuseri}{\Glsentryuseri}
+\newcommand*{\glsentryuserii}[1]{%
+ \@gls@entry@field{#1}{userii}%
+}
+\newcommand*{\Glsentryuserii}[1]{%
+ \@Glsentryfield{#1}{userii}%
+}
+\glsmfuaddmap{\glsentryuserii}{\Glsentryuserii}
+\newcommand*{\glsentryuseriii}[1]{%
+ \@gls@entry@field{#1}{useriii}%
+}
+\newcommand*{\Glsentryuseriii}[1]{%
+ \@Glsentryfield{#1}{useriii}%
+}
+\glsmfuaddmap{\glsentryuseriii}{\Glsentryuseriii}
+\newcommand*{\glsentryuseriv}[1]{%
+ \@gls@entry@field{#1}{useriv}%
+}
+\newcommand*{\Glsentryuseriv}[1]{%
+ \@Glsentryfield{#1}{useriv}%
+}
+\glsmfuaddmap{\glsentryuseriv}{\Glsentryuseriv}
+\newcommand*{\glsentryuserv}[1]{%
+ \@gls@entry@field{#1}{userv}%
+}
+\newcommand*{\Glsentryuserv}[1]{%
+ \@Glsentryfield{#1}{userv}%
+}
+\glsmfuaddmap{\glsentryuserv}{\Glsentryuserv}
+\newcommand*{\glsentryuservi}[1]{%
+ \@gls@entry@field{#1}{uservi}%
+}
+\newcommand*{\Glsentryuservi}[1]{%
+ \@Glsentryfield{#1}{uservi}%
+}
+\glsmfuaddmap{\glsentryuservi}{\Glsentryuservi}
+\newcommand*{\glsentryshort}[1]{\@gls@entry@field{#1}{short}}
+\newcommand*{\Glsentryshort}[1]{%
+ \@Glsentryfield{#1}{short}%
+}
+\glsmfuaddmap{\glsentryshort}{\Glsentryshort}
+\newcommand*{\glsentryshortpl}[1]{\@gls@entry@field{#1}{shortpl}}
+\newcommand*{\Glsentryshortpl}[1]{%
+ \@Glsentryfield{#1}{shortpl}%
+}
+\glsmfuaddmap{\glsentryshortpl}{\Glsentryshortpl}
+\newcommand*{\glsentrylong}[1]{\@gls@entry@field{#1}{long}}
+\newcommand*{\Glsentrylong}[1]{%
+ \@Glsentryfield{#1}{long}%
+}
+\glsmfuaddmap{\glsentrylong}{\Glsentrylong}
+\newcommand*{\glsentrylongpl}[1]{\@gls@entry@field{#1}{longpl}}
+\newcommand*{\Glsentrylongpl}[1]{%
+ \@Glsentryfield{#1}{longpl}%
+}
+\glsmfuaddmap{\glsentrylongpl}{\Glsentrylongpl}
+\newcommand*{\glsentryfull}[1]{%
+ \glsentrylong{#1} (\glsentryshort{#1})%
+}
+\newcommand*{\Glsentryfull}[1]{%
+ \Glsentrylong{#1} (\glsentryshort{#1})%
+}
+\glsmfuaddmap{\glsentryfull}{\Glsentryfull}
+\newcommand*{\glsentryfullpl}[1]{%
+ \acrfullformat{\glsentrylongpl{#1}}{\acronymfont{\glsentryshortpl{#1}}}%
+}
+\newcommand*{\Glsentryfullpl}[1]{%
+ \Glsentrylongpl{#1} (\glsentryshortpl{#1})%
+}
+\glsmfuaddmap{\glsentryfullpl}{\Glsentryfullpl}
+\newcommand*{\glsentrynumberlist}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \@gls@entry@field{#1}{numberlist}%
+ }%
+}
+\@ifpackageloaded{hyperref} {%
+ \newcommand*{\glsdisplaynumberlist}[1]{%
+ \GlossariesWarning
+ {%
+ \string\glsdisplaynumberlist\space
+ doesn't work with hyperref.^^JUsing
+ \string\glsentrynumberlist\space instead%
+ }%
+ \glsentrynumberlist{#1}%
+ }%
+}%
+{%
+ \newcommand*{\glsdisplaynumberlist}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \bgroup
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \let\@org@glsnumberformat\glsnumberformat
+ \def\glsnumberformat##1{##1}%
+ \protected@edef\the@numberlist{%
+ \csname glo@\@glo@label @numberlist\endcsname}%
+ \def\@gls@numlist@sep{}%
+ \def\@gls@numlist@nextsep{}%
+ \def\@gls@numlist@lastsep{}%
+ \def\@gls@thislist{}%
+ \def\@gls@donext@def{}%
+ \renewcommand\do[1]{%
+ \protected@edef\@gls@thislist{%
+ \@gls@thislist
+ \noexpand\@gls@numlist@sep
+ ##1%
+ }%
+ \let\@gls@numlist@sep\@gls@numlist@nextsep
+ \def\@gls@numlist@nextsep{\glsnumlistsep}%
+ \@gls@donext@def
+ \def\@gls@donext@def{%
+ \def\@gls@numlist@lastsep{\glsnumlistlastsep}%
+ }%
+ }%
+ \expandafter \glsnumlistparser \expandafter{\the@numberlist}%
+ \let\@gls@numlist@sep\@gls@numlist@lastsep
+ \@gls@thislist
+ \egroup
+ }%
+ }
+}
+\newcommand*{\glsnumlistsep}{, }
+\newcommand*{\glsnumlistlastsep}{ \& }
+\newcommand*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{%
+ \def\@glo@label{#2}%
+ \@glslink{\glolinkprefix\glsdetoklabel{#2}}{#1}}
+\define@key{glossadd}{counter}{\def\@gls@counter{#1}}
+\define@key{glossadd}{format}{\def\@glsnumberformat{#1}}
+\define@key{glossadd}{types}{\def\@glo@type{#1}}
+\newrobustcmd*{\glsadd}[2][]{%
+ \@gls@adjustmode
+ \glsdoifexists{#2}%
+ {%
+ \def\@glsnumberformat{glsnumberformat}%
+ \protected@edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}%
+ \setkeys{glossadd}{#1}%
+ \@gls@saveentrycounter
+ \@gls@setsort{#2}%
+ \@@do@wrglossary{#2}%
+ }%
+}
+\glsmfuexcl{\glsadd}
+\newcommand*{\@gls@adjustmode}{}
+\AtBeginDocument{\renewcommand*{\@gls@adjustmode}{\ifvmode\mbox{}\fi}}
+\newrobustcmd*{\glsaddall}[1][]{%
+ \protected@edef\@glo@type{\@glo@types}%
+ \setkeys{glossadd}{#1}%
+ \forallglsentries[\@glo@type]{\@glo@entry}{%
+ \glsadd[#1]{\@glo@entry}%
+ }%
+}
+\newrobustcmd*{\glsaddallunused}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glo@entry}%
+ {%
+ \ifglsused{\@glo@entry}{}{\glsadd[format=glsignore]{\@glo@entry}}%
+ }%
+}
+\newcommand*{\glsignore}[1]{}
+\edef\glsopenbrace{\expandafter\@gobble\string\{}
+\edef\glsclosebrace{\expandafter\@gobble\string\}}
+\edef\glsbackslash{\expandafter\@gobble\string\\}
+\edef\glsquote#1{\string"#1\string"}
+\edef\glspercentchar{\expandafter\@gobble\string\%}
+\edef\glstildechar{\string~}
+\ifglsxindy
+ \newcommand*{\@glsfirstletter}{A}
+\fi
+\newcommand*{\GlsSetXdyFirstLetterAfterDigits}{%
+ \@ifstar\s@GlsSetXdyFirstLetterAfterDigits\@GlsSetXdyFirstLetterAfterDigits}
+\ifglsxindy
+ \newcommand*{\@GlsSetXdyFirstLetterAfterDigits}[1]{%
+ \renewcommand*{\@glsfirstletter}{#1}}
+ \newcommand*{\s@GlsSetXdyFirstLetterAfterDigits}[1]{%
+ \renewcommand*{\@glsfirstletter}{#1}%
+ \@onelevel@sanitize\@glsfirstletter
+ }
+\else
+ \newcommand*{\@GlsSetXdyFirstLetterAfterDigits}[1]{%
+ \glsnoxindywarning\GlsSetXdyFirstLetterAfterDigits}
+ \newcommand*{\s@GlsSetXdyFirstLetterAfterDigits}{%
+ \@GlsSetXdyFirstLetterAfterDigits
+ }
+\fi
+\ifglsxindy
+ \newcommand*{\@xdynumbergrouporder}{:before \string"\@glsfirstletter\string"}
+\fi
+\newcommand*{\GlsSetXdyNumberGroupOrder}[1]{%
+ \@ifstar\s@GlsSetXdyNumberGroupOrder\@GlsSetXdyNumberGroupOrder
+}
+\ifglsxindy
+ \newcommand*{\@GlsSetXdyNumberGroupOrder}[1]{%
+ \renewcommand*{\@xdynumbergrouporder}{#1}%
+ }
+ \newcommand*{\s@GlsSetXdyNumberGroupOrder}[1]{%
+ \renewcommand*{\@xdynumbergrouporder}{#1}%
+ \@onelevel@sanitize\@xdynumbergrouporder
+ }
+\else
+ \newcommand*{\@GlsSetXdyNumberGroupOrder}[1]{%
+ \glsnoxindywarning\GlsSetXdyNumberGroupOrder}
+ \newcommand*{\s@GlsSetXdyNumberGroupOrder}{%
+ \@GlsSetXdyNumberGroupOrder}
+\fi
+\newcommand*{\@glsminrange}{2}
+\ifglsxindy
+ \newcommand*{\GlsSetXdyMinRangeLength}[1]{%
+ \renewcommand*{\@glsminrange}{#1}}
+\else
+ \newcommand*{\GlsSetXdyMinRangeLength}[1]{%
+ \glsnoxindywarning\GlsSetXdyMinRangeLength}
+\fi
+
+\ifglsxindy
+ \def\writeist{%
+ \ifundef{\glswrite}{\newwrite\glswrite}{}%
+ \@gls@addpredefinedattributes
+ \openout\glswrite=\istfilename
+ \write\glswrite{;; xindy style file created by the glossaries
+ package}%
+ \write\glswrite{;; for document '\jobname' on
+ \the\year-\the\month-\the\day}%
+ \write\glswrite{^^J; required styles^^J}
+ \@for\@xdystyle:=\@xdyrequiredstyles\do{%
+ \ifx\@xdystyle\@empty
+ \else
+ \protected@write\glswrite{}{(require
+ \string"\@xdystyle.xdy\string")}%
+ \fi
+ }%
+ \write\glswrite{^^J%
+ ; list of allowed attributes (number formats)^^J}%
+ \write\glswrite{(define-attributes ((\@xdyattributes)))}%
+ \write\glswrite{^^J; user defined alphabets^^J}%
+ \write\glswrite{\@xdyuseralphabets}%
+ \write\glswrite{^^J; location class definitions^^J}%
+ \@for\@gls@classI:=\@gls@xdy@locationlist\do{%
+ \protected@write\glswrite{}{(define-location-class
+ \string"\@gls@classI\string"^^J\space\space\space
+ (
+ :sep "{}{"
+ \csname @gls@xdy@Lclass@\@gls@classI\endcsname\space
+ :sep "}"
+ )
+ ^^J\space\space\space
+ :min-range-length \@glsminrange^^J%
+ )
+ }%
+ {%
+ \@for\@gls@classII:=\@gls@xdy@locationlist\do{%
+ \protected@write\glswrite{}{(define-location-class
+ \string"\@gls@classII-\@gls@classI\string"
+ ^^J\space\space\space
+ (
+ :sep "{"
+ \csname @gls@xdy@Lclass@\@gls@classII\endcsname\space
+ :sep "}{"
+ \csname @gls@xdy@Lclass@\@gls@classI\endcsname\space
+ :sep "}"
+ )
+ ^^J\space\space\space
+ :min-range-length \@glsminrange^^J%
+ )
+ }%
+ }%
+ }%
+ }%
+ \write\glswrite{^^J; user defined location classes}%
+ \write\glswrite{\@xdyuserlocationdefs}%
+ \write\glswrite{^^J; define cross-reference class^^J}%
+ \write\glswrite{(define-crossref-class \string"see\string"
+ :unverified )}%
+ \write\glswrite{(markup-crossref-list
+ :class \string"see\string"^^J\space\space\space
+ :open \string"\string\glsseeformat\string"
+ :close \string"{}\string")}%
+ \@xdycrossrefhook
+ \write\glswrite{^^J; define the order of the location classes}%
+ \write\glswrite{(define-location-class-order
+ (\@xdylocationclassorder))}%
+ \write\glswrite{^^J; define the glossary markup^^J}%
+ \write\glswrite{(markup-index^^J\space\space\space
+ :open \string"\string
+ \glossarysection[\string\glossarytoctitle]{\string
+ \glossarytitle}\string\glossarypreamble}%
+ \@for\@this@ctr:=\@xdycounters\do{%
+ {%
+ \@for\@this@attr:=\@xdyattributelist\do{%
+ \protected@write\glswrite{}{\string\providecommand*%
+ \expandafter\string
+ \csname glsX\@this@ctr X\@this@attr\endcsname[2]%
+ {%
+ \string\setentrycounter
+ [\expandafter\@gobble\string\#1]{\@this@ctr}%
+ \expandafter\string
+ \csname\@this@attr\endcsname
+ {\expandafter\@gobble\string\#2}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \write\glswrite{%
+ \string\begin
+ {theglossary}\string\glossaryheader\glstildechar n\string" ^^J\space
+ \space\space:close \string"\glspercentchar\glstildechar n\string
+ \end{theglossary}\string\glossarypostamble
+ \glstildechar n\string" ^^J\space\space\space
+ :tree)}%
+ \write\glswrite{(markup-letter-group-list
+ :sep \string"\string\glsgroupskip\glstildechar n\string")}%
+ \write\glswrite{(markup-indexentry
+ :open \string"\string\relax \string\glsresetentrylist
+ \glstildechar n\string")}%
+ \write\glswrite{(markup-locclass-list :open
+ \string"\glsopenbrace\string\glossaryentrynumbers
+ \glsopenbrace\string\relax\space \string"^^J\space\space\space
+ :sep \string", \string"
+ :close \string"\glsclosebrace\glsclosebrace\string")}%
+ \write\glswrite{(markup-locref-list
+ :sep \string"\string\delimN\space\string")}%
+ \write\glswrite{(markup-range
+ :sep \string"\string\delimR\space\string")}%
+ \@onelevel@sanitize\gls@suffixF
+ \@onelevel@sanitize\gls@suffixFF
+ \ifx\gls@suffixF\@empty
+ \else
+ \write\glswrite{(markup-range
+ :close "\gls@suffixF" :length 1 :ignore-end)}%
+ \fi
+ \ifx\gls@suffixFF\@empty
+ \else
+ \write\glswrite{(markup-range
+ :close "\gls@suffixFF" :length 2 :ignore-end)}%
+ \fi
+ \write\glswrite{^^J; define format to use for locations^^J}%
+ \write\glswrite{\@xdylocref}%
+ \write\glswrite{^^J; define letter group list format^^J}%
+ \write\glswrite{(markup-letter-group-list
+ :sep \string"\string\glsgroupskip\glstildechar n\string")}%
+ \write\glswrite{^^J; letter group headings^^J}%
+ \write\glswrite{(markup-letter-group
+ :open-head \string"\string\glsgroupheading
+ \glsopenbrace\string"^^J\space\space\space
+ :close-head \string"\glsclosebrace\string")}%
+ \write\glswrite{^^J; additional letter groups^^J}%
+ \write\glswrite{\@xdylettergroups}%
+ \write\glswrite{^^J; additional sort rules^^J}
+ \write\glswrite{\@xdysortrules}%
+ \@gls@writeisthook
+ \closeout\glswrite
+ \let\writeist\relax
+ \let\noist\@gls@noist@toolate
+ }
+\else
+ \edef\@gls@actualchar{\string?}
+ \edef\@gls@encapchar{\string|}
+ \edef\@gls@levelchar{\string!}
+ \edef\@gls@quotechar{\string"}%
+ \let\GlsSetQuote\gls@nosetquote
+ \def\writeist{\relax
+ \ifundef{\glswrite}{\newwrite\glswrite}{}\relax
+ \openout\glswrite=\istfilename
+ \write\glswrite{\glspercentchar\space makeindex style file
+ created by the glossaries package}
+ \write\glswrite{\glspercentchar\space for document
+ '\jobname' on \the\year-\the\month-\the\day}
+ \write\glswrite{actual '\@gls@actualchar'}
+ \write\glswrite{encap '\@gls@encapchar'}
+ \write\glswrite{level '\@gls@levelchar'}
+ \write\glswrite{quote '\@gls@quotechar'}
+ \write\glswrite{keyword \string"\string\\glossaryentry\string"}
+ \write\glswrite{preamble \string"\string\\glossarysection[\string
+ \\glossarytoctitle]{\string\\glossarytitle}\string
+ \\glossarypreamble\string\n\string\\begin{theglossary}\string
+ \\glossaryheader\string\n\string"}
+ \write\glswrite{postamble \string"\string\%\string\n\string
+ \\end{theglossary}\string\\glossarypostamble\string\n
+ \string"}
+ \write\glswrite{group_skip \string"\string\\glsgroupskip\string\n
+ \string"}
+ \write\glswrite{item_0 \string"\string\%\string\n\string"}
+ \write\glswrite{item_1 \string"\string\%\string\n\string"}
+ \write\glswrite{item_2 \string"\string\%\string\n\string"}
+ \write\glswrite{item_01 \string"\string\%\string\n\string"}
+ \write\glswrite{item_x1
+ \string"\string\\relax \string\\glsresetentrylist\string\n
+ \string"}
+ \write\glswrite{item_12 \string"\string\%\string\n\string"}
+ \write\glswrite{item_x2
+ \string"\string\\relax \string\\glsresetentrylist\string\n
+ \string"}
+ \write\glswrite{delim_0 \string"\string\{\string
+ \\glossaryentrynumbers\string\{\string\\relax \string"}
+ \write\glswrite{delim_1 \string"\string\{\string
+ \\glossaryentrynumbers\string\{\string\\relax \string"}
+ \write\glswrite{delim_2 \string"\string\{\string
+ \\glossaryentrynumbers\string\{\string\\relax \string"}
+ \write\glswrite{delim_t \string"\string\}\string\}\string"}
+ \write\glswrite{delim_n \string"\string\\delimN \string"}
+ \write\glswrite{delim_r \string"\string\\delimR \string"}
+ \write\glswrite{headings_flag 1}
+ \write\glswrite{heading_prefix
+ \string"\string\\glsgroupheading\string\{\string"}
+ \write\glswrite{heading_suffix
+ \string"\string\}\string\\relax
+ \string\\glsresetentrylist \string"}
+ \write\glswrite{symhead_positive \string"glssymbols\string"}
+ \write\glswrite{numhead_positive \string"glsnumbers\string"}
+ \write\glswrite{page_compositor \string"\glscompositor\string"}
+ \@gls@escbsdq\gls@suffixF
+ \@gls@escbsdq\gls@suffixFF
+ \ifx\gls@suffixF\@empty
+ \else
+ \write\glswrite{suffix_2p \string"\gls@suffixF\string"}
+ \fi
+ \ifx\gls@suffixFF\@empty
+ \else
+ \write\glswrite{suffix_3p \string"\gls@suffixFF\string"}
+ \fi
+ \@gls@writeisthook
+ \closeout\glswrite
+ \let\writeist\relax
+ \let\noist\@gls@noist@toolate
+ }
+\fi
+\newcommand*{\GlsSetWriteIstHook}[1]{\renewcommand*{\@gls@writeisthook}{#1}}
+\@onlypremakeg\GlsSetWriteIstHook
+\newcommand*{\@gls@writeisthook}{}
+\ifglsxindy
+ \newcommand*{\GlsSetQuote}[1]{\glsnomakeindexwarning\GlsSetQuote}
+ \newcommand*{\gls@nosetquote}[1]{\glsnomakeindexwarning\GlsSetQuote}
+\else
+ \newcommand*{\GlsSetQuote}[1]{\edef\@gls@quotechar{\string#1}%
+ \@ifpackageloaded{tracklang}%
+ {%
+ \IfTrackedLanguage{german}%
+ {%
+ \def\@@gls@extramakeindexopts{-g}%
+ }%
+ {}%
+ }%
+ {}%
+ \edef\@gls@docheckquotedef{%
+ \noexpand\def\noexpand\@gls@checkquote####1#1####2#1####3\noexpand\null{%
+ \noexpand\@gls@tmpb=\noexpand\expandafter{\noexpand\@gls@checkedmkidx}%
+ \noexpand\toks@={####1}%
+ \noexpand\ifx\noexpand\null####2\noexpand\null
+ \noexpand\ifx\noexpand\null####3\noexpand\null
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}%
+ \noexpand\def\noexpand\@@gls@checkquote{\noexpand\relax}%
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \noexpand\@gls@quotechar\noexpand\@gls@quotechar
+ \noexpand\@gls@quotechar\noexpand\@gls@quotechar}%
+ \noexpand\def\noexpand\@@gls@checkquote{%
+ \noexpand\@gls@checkquote####3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \noexpand\@gls@quotechar\noexpand\@gls@quotechar}%
+ \noexpand\ifx\noexpand\null####3\noexpand\null
+ \noexpand\def\noexpand\@@gls@checkquote{%
+ \noexpand\@gls@checkquote####2#1#1\noexpand\null}%
+ \noexpand\else
+ \noexpand\def\noexpand\@@gls@checkquote{%
+ \noexpand\@gls@checkquote####2#1####3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\@@gls@checkquote
+ }%
+ }%
+ \@gls@docheckquotedef
+ \edef\@gls@docheckquotedef{%
+ \noexpand\renewcommand{\noexpand\@gls@checkmkidxchars}[1]{%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkquote####1\noexpand\@nil
+ #1#1\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkescquote####1\noexpand\@nil
+ \expandonce{\csname#1\endcsname}\expandonce{\csname#1\endcsname}%
+ \noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkescactual####1\noexpand\@nil
+ \noexpand\?\noexpand\?\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkactual####1\noexpand\@nil
+ \noexpand?\noexpand?\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkbar####1\noexpand\@nil
+ \noexpand|\noexpand|\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkescbar####1\noexpand\@nil
+ \noexpand\|\noexpand\|\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checklevel####1\noexpand\@nil
+ \noexpand!\noexpand!\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkesclevel####1\noexpand\@nil
+ \noexpand\!\noexpand\!\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkesc####1\noexpand\@nil
+ \@backslashchar\@backslashchar\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ }%
+ }%
+ \@gls@docheckquotedef
+ \edef\@gls@docheckquotedef{%
+ \noexpand\def\noexpand\@gls@checkescquote####1%
+ \expandonce{\csname#1\endcsname}####2\expandonce{\csname#1\endcsname}%
+ ####3\noexpand\null{%
+ \noexpand\@gls@tmpb=\noexpand\expandafter{\noexpand\@gls@checkedmkidx}%
+ \noexpand\toks@={####1}%
+ \noexpand\ifx\noexpand\null####2\noexpand\null
+ \noexpand\ifx\noexpand\null####3\noexpand\null
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}%
+ \noexpand\def\noexpand\@@gls@checkescquote{\noexpand\relax}%
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \noexpand\@gls@quotechar\noexpand\string\expandonce{%
+ \csname#1\endcsname}\noexpand\@gls@quotechar
+ \noexpand\@gls@quotechar\noexpand\string\expandonce{%
+ \csname#1\endcsname}\noexpand\@gls@quotechar}%
+ \noexpand\def\noexpand\@@gls@checkescquote{%
+ \noexpand\@gls@checkescquote####3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \noexpand\@gls@quotechar\noexpand\string
+ \expandonce{\csname#1\endcsname}\noexpand\@gls@quotechar}%
+ \noexpand\ifx\noexpand\null####3\noexpand\null
+ \noexpand\def\noexpand\@@gls@checkescquote{%
+ \noexpand\@gls@checkescquote####2\expandonce{\csname#1\endcsname}%
+ \expandonce{\csname#1\endcsname}\noexpand\null}%
+ \noexpand\else
+ \noexpand\def\noexpand\@@gls@checkescquote{%
+ \noexpand\@gls@checkescquote####2\expandonce{\csname#1\endcsname}%
+ ####3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\@@gls@checkescquote
+ }%
+ }%
+ \@gls@docheckquotedef
+ }
+ \newcommand*{\gls@nosetquote}[1]{\PackageError{glossaries}%
+ {\string\GlsSetQuote\space not permitted here}%
+ {Move \string\GlsSetQuote\space earlier in the preamble, as
+ soon as possible after glossaries.sty has been loaded}}
+\fi
+\newcommand*{\@gls@extramakeindexopts}[1]{}
+\newcommand{\noist}{%
+ \@gls@addpredefinedattributes
+ \let\writeist\relax
+}
+\newcommand{\@gls@noist@toolate}{%
+ \GlossariesWarning{too late to use \string\noist. The style file
+has already been written}%
+}
+\newcommand*{\@makeglossary}[1]{%
+ \ifglossaryexists{#1}%
+ {%
+ \ifglssavewrites
+ \expandafter\newtoks\csname glo@#1@filetok\endcsname
+ \else
+ \expandafter\newwrite\csname glo@#1@file\endcsname
+ \expandafter\@glsopenfile\csname glo@#1@file\endcsname{#1}%
+ \fi
+ \@gls@renewglossary
+ \writeist
+ }%
+ {%
+ \PackageError{glossaries}%
+ {Glossary type `#1' not defined}%
+ {New glossaries must be defined before using \string\makeglossaries}%
+ }%
+}
+\newcommand*{\@glsopenfile}[2]{%
+ \immediate\openout#1=\jobname.\csname @glotype@#2@out\endcsname
+ \PackageInfo{glossaries}{Writing glossary file
+ \jobname.\csname @glotype@#2@out\endcsname}%
+}
+\newcommand*{\@closegls}[1]{%
+ \closeout\csname glo@#1@file\endcsname
+}
+\ifglsxindy
+ \newcommand*{\@gls@automake}[1]{%
+ \ifglossaryexists{#1}
+ {%
+ \@closegls{#1}%
+ \ifdefstring{\glsorder}{letter}%
+ {\def\@gls@order{-M ord/letorder }}%
+ {\let\@gls@order\@empty}%
+ \gls@xdy@set@lang{#1}%
+ \ifdefvoid\gls@codepage
+ {\let\@@gls@codepage\@empty}%
+ {\def\@@gls@codepage{-C \gls@codepage\space}}%
+ \edef\@gls@dothiswrite{\noexpand\write18{xindy
+ -I xindy
+ \@gls@order
+ -L \@gls@langmod\space
+ -M \gls@istfilebase\space
+ \@@gls@codepage
+ -t \jobname.\csuse{@glotype@#1@log}
+ -o \jobname.\csuse{@glotype@#1@in}
+ \jobname.\csuse{@glotype@#1@out}}%
+ }%
+ \@gls@dothiswrite
+ }%
+ {%
+ \GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
+ }%
+ }
+\else
+ \newcommand*{\@gls@automake}[1]{%
+ \ifglossaryexists{#1}
+ {%
+ \@closegls{#1}%
+ \ifdefstring{\glsorder}{letter}%
+ {\def\@gls@order{-l }}%
+ {\let\@gls@order\@empty}%
+ \edef\@gls@dothiswrite{\noexpand\write18{makeindex \@gls@order
+ -s \istfilename\space
+ -t \jobname.\csuse{@glotype@#1@log}
+ -o \jobname.\csuse{@glotype@#1@in}
+ \jobname.\csuse{@glotype@#1@out}}%
+ }%
+ \@gls@dothiswrite
+ }%
+ {%
+ \GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
+ }%
+ }
+\fi
+\ifglsxindy
+ \newcommand*{\@gls@automake@immediate}[1]{%
+ \ifglossaryexists{#1}
+ {%
+ \IfFileExists{\jobname.\csuse{@glotype@#1@out}}%
+ {%
+ \ifdefstring{\glsorder}{letter}%
+ {\def\@gls@order{-M ord/letorder }}%
+ {\let\@gls@order\@empty}%
+ \gls@xdy@set@lang{#1}%
+ \ifdefvoid\gls@codepage
+ {\let\@@gls@codepage\@empty}%
+ {\def\@@gls@codepage{-C \gls@codepage\space}}%
+ \edef\@gls@dothiswrite{\noexpand\immediate\noexpand\write18{xindy
+ -I xindy
+ \@gls@order
+ -L \@gls@langmod\space
+ -M \gls@istfilebase\space
+ \@@gls@codepage
+ -t \jobname.\csuse{@glotype@#1@log}
+ -o \jobname.\csuse{@glotype@#1@in}
+ \jobname.\csuse{@glotype@#1@out}}%
+ }%
+ \@gls@dothiswrite
+ }%
+ {\GlossariesWarning{can't automake `#1': \jobname.\csuse{@glotype@#1@out}
+ doesn't exist. Rerun may be required}}%
+ }%
+ {%
+ \GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
+ }%
+ }
+\else
+ \newcommand*{\@gls@automake@immediate}[1]{%
+ \ifglossaryexists{#1}
+ {%
+ \IfFileExists{\jobname.\csuse{@glotype@#1@out}}%
+ {%
+ \ifdefstring{\glsorder}{letter}%
+ {\def\@gls@order{-l }}%
+ {\let\@gls@order\@empty}%
+ \edef\@gls@dothiswrite{\noexpand\immediate\noexpand\write18{makeindex \@gls@order
+ -s \istfilename\space
+ -t \jobname.\csuse{@glotype@#1@log}
+ -o \jobname.\csuse{@glotype@#1@in}
+ \jobname.\csuse{@glotype@#1@out}}%
+ }%
+ \@gls@dothiswrite
+ }%
+ {\GlossariesWarning{can't automake `#1': \jobname.\csuse{@glotype@#1@out}
+ doesn't exist. Rerun may be required}}%
+ }%
+ {%
+ \GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
+ }%
+ }
+\fi
+\newcommand*{\@warn@nomakeglossaries}{}
+\newcommand*{\warn@nomakeglossaries}{\@warn@nomakeglossaries}
+\newcommand{\@gls@automake@types}{\@glo@types}
+\newcommand{\@gls@@automake@immediate}{%
+ \ifnum\gls@automake@nr=2\relax
+ \protected@edef\gls@tmp{\@gls@automake@types}%
+ \@for\@gls@type:=\gls@tmp\do{%
+ \ifdefempty{\@gls@type}{}%
+ {\@gls@automake@immediate{\@gls@type}}%
+ }%
+ \glsautomakefalse
+ \renewcommand*{\@gls@doautomake}{}%
+ \else
+ \ifdefempty\gls@automake@makegloss{}%
+ {%
+ \IfFileExists{\jobname.aux}%
+ {\immediate\write18{\gls@automake@makegloss\space \jobname}}{}%
+ \glsautomakefalse
+ \renewcommand*{\@gls@doautomake}{}%
+ }%
+ \fi
+}
+\newcommand*{\makeglossaries}{%
+ \ifglsxindy
+ \def\glsindexingsetting{xindy}%
+ \else
+ \def\glsindexingsetting{makeindex}%
+ \fi
+ \@domakeglossaries
+ {%
+ \@gls@@automake@immediate
+ \ifundef{\glswrite}{\newwrite\glswrite}{}%
+ \protected@write\@auxout{}{\string\providecommand\string\@glsorder[1]{}}
+ \protected@write\@auxout{}{\string\providecommand\string\@istfilename[1]{}}
+ \ifundef\@@gls@extramakeindexopts
+ {}%
+ {%
+ \protected@write\@auxout{}{\string\providecommand
+ \string\@gls@extramakeindexopts[1]{}}
+ \protected@write\@auxout{}{\string\@gls@extramakeindexopts
+ {\@@gls@extramakeindexopts}}%
+ }%
+ \protected@write\@auxout{}{\string\@istfilename{\istfilename}}%
+ \protected@write\@auxout{}{\string\@glsorder{\glsorder}}
+ \@for\@glo@type:=\@glo@types\do{%
+ \ifthenelse{\equal{\@glo@type}{}}{}{%
+ \@makeglossary{\@glo@type}}%
+ }%
+ \renewcommand*\newglossary[4][]{%
+ \PackageError{glossaries}{New glossaries
+ must be created before \string\makeglossaries}{You need
+ to move \string\makeglossaries\space after all your
+ \string\newglossary\space commands}}%
+ \let\@makeglossary\@gobble
+ \let\makeglossaries\relax
+ \@disable@onlypremakeg
+ \let\gls@checkseeallowed\relax
+ \let\warn@nomakeglossaries\relax
+ \let\warn@noprintglossary\@makeglossaries@warn@noprintglossary
+ \ifglssavenumberlist
+ \edef\@gls@dodeflistparser{\noexpand\DeclareListParser
+ {\noexpand\glsnumlistparser}{\delimN}}%
+ \@gls@dodeflistparser
+ \fi
+ \let\makenoidxglossaries\@no@makeglossaries
+ \renewcommand*{\@printgloss@setsort}{%
+ \let\@glo@assign@sortkey\@glo@no@assign@sortkey
+ }%
+ \ifglsautomake
+ \renewcommand*{\@gls@doautomake}{%
+ \protected@edef\gls@tmp{\@gls@automake@types}%
+ \@for\@gls@type:=\gls@tmp\do{%
+ \ifdefempty{\@gls@type}{}%
+ {\@gls@automake{\@gls@type}}%
+ }%
+ }%
+ \fi
+ \@glo@check@sortallowed\makeglossaries
+ }%
+}
+\@onlypreamble{\makeglossaries}
+\newcommand\@makeglossaries@warn@noprintglossary{%
+ \ifdefstring{\@glo@types}{,}%
+ {%
+ \GlossariesWarningNoLine{No glossaries have been defined}%
+ }%
+ {%
+ \GlossariesWarningNoLine{No \string\printglossary\space
+ or \string\printglossaries\space
+ found. ^^J(Remove \string\makeglossaries\space if you
+ don't want any glossaries.) ^^JThis document will not
+ have a glossary}%
+ }%
+}%
+\AtEndDocument{%
+ \warn@nomakeglossaries
+ \warn@noprintglossary
+}
+\newcommand*{\makenoidxglossaries}{%
+ \def\glsindexingsetting{noidx}%
+ \@domakeglossaries
+ {%
+ \renewcommand{\@gls@noref@warn}[1]{%
+ \GlossariesWarning{Empty glossary for
+ \string\printnoidxglossary[type={##1}].
+ Rerun may be required (or you may have forgotten to use
+ commands like \string\gls)}%
+ }%
+ \let\@gls@checkmkidxchars\@gobble
+ \glsesclocationsfalse
+ \let\@@do@@wrglossary\gls@noidxglossary
+ \let\@gls@getgrouptitle\@gls@noidx@getgrouptitle
+ \let\gls@checkseeallowed\relax
+ \renewcommand{\@do@seeglossary}[2]{%
+ \protected@edef\@gls@label{\glsdetoklabel{##1}}%
+ \protected@write\@auxout{}{%
+ \string\@gls@reference
+ {\csname glo@\@gls@label @type\endcsname}%
+ {\@gls@label}%
+ {%
+ \string\glsseeformat##2{}%
+ }%
+ }%
+ }%
+ \AtBeginDocument
+ {%
+ \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}%
+ }%
+ \def\warn@noprintglossary{%
+ \GlossariesWarningNoLine{No \string\printnoidxglossary\space
+ or \string\printnoidxglossaries ^^J
+ found. (Remove \string\makenoidxglossaries\space if you
+ don't want any glossaries.)^^JThis document will not have a glossary}%
+ }%
+ \let\warn@nomakeglossaries\relax
+ \let\makeglossaries\@no@makeglossaries
+ \renewcommand*{\@printgloss@setsort}{%
+ \let\@glo@assign@sortkey\@@glo@assign@sortkey
+ \def\@glo@sorttype{\@glo@default@sorttype}%
+ }%
+ \renewcommand*\new@glossaryentry[2]{%
+ \PackageError{glossaries}{Glossary entries must be
+ defined in the preamble^^Jwhen you use
+ \string\makenoidxglossaries}%
+ {Either move your definitions to the preamble or use
+ \string\makeglossaries}%
+ }%
+ \renewcommand*{\glsentrynumberlist}[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}%
+ }%
+ }%
+ }%
+ \renewcommand*{\glsdisplaynumberlist}[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}%
+ }%
+ }%
+ }%
+ \renewcommand*{\glsnumberlistloop}[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
+ }%
+ \let\@@gls@sanitizesort\@gls@noidx@sanitizesort
+ \let\@@gls@nosanitizesort\@@gls@noidx@nosanitizesort
+ \@gls@noidx@setsanitizesort
+ \@glo@check@sortallowed\makenoidxglossaries
+ \let\@gls@savenonumberlist\gls@noidx@nonumberlist
+ }%
+}
+\@onlypreamble{\makenoidxglossaries}
+\newcommand*{\glsnumberlistloop}[3]{%
+ \PackageError{glossaries}{\string\glsnumberlistloop\space
+ only works with \string\makenoidxglossaries}{}%
+}
+\newcommand*{\glsnoidxnumberlistloophandler}[1]{%
+ #1%
+}
+\newcommand*{\@no@makeglossaries}{%
+ \PackageError{glossaries}{You can't use both
+ \string\makeglossaries\space and \string\makenoidxglossaries}%
+ {Either use one or other (or none) of those commands but not both
+ together.}%
+}
+\newcommand{\@gls@noref@warn}[1]{%
+ \GlossariesWarning{\string\makenoidxglossaries\space
+ is required to make \string\printnoidxglossary[type={#1}] work}%
+}
+\newcommand*{\gls@noidxglossary}{%
+ \protected@write\@auxout{\glswrglossdisablelocationcmds}{%
+ \string\@gls@reference
+ {\csname glo@\@gls@label @type\endcsname}%
+ {\@gls@label}%
+ {\string\glsnoidxdisplayloc
+ {\@glo@counterprefix}%
+ {\@gls@counter}%
+ {\@glsnumberformat}%
+ {\@glslocref}%
+ }%
+ }%
+}
+\AtEndDocument{%
+ \glswritefiles
+}
+\newcommand*{\@glswritefiles}{%
+ \forallglossaries{\@glo@type}{%
+ \ifcsundef{glo@\@glo@type @filetok}%
+ {%
+ \def\gls@tmp{}%
+ }%
+ {%
+ \edef\gls@tmp{\expandafter\the
+ \csname glo@\@glo@type @filetok\endcsname}%
+ }%
+ \ifx\gls@tmp\@empty
+ \ifx\@glo@type\glsdefaulttype
+ \GlossariesWarningNoLine{Glossary `\@glo@type' has no
+ entries.^^JRemember to use package option `nomain' if
+you
+ don't want to^^Juse the main glossary}%
+ \else
+ \GlossariesWarningNoLine{Glossary `\@glo@type' has no
+ entries}%
+ \fi
+ \else
+ \@glsopenfile{\glswrite}{\@glo@type}%
+ \immediate\write\glswrite{%
+ \expandafter\the
+ \csname glo@\@glo@type @filetok\endcsname}%
+ \immediate\closeout\glswrite
+ \fi
+ }%
+}
+\newcommand*{\gls@glossary}[1]{%
+ \@gls@glossary{#1}%
+}
+\newcommand*{\@gls@glossary}[2]{%
+ \if@gls@debug
+ \PackageInfo{glossaries}{wrglossary(#1)(#2)}%
+ \fi
+}
+\newcommand{\@gls@renewglossary}{%
+ \gdef\@gls@glossary##1{\@bsphack\begingroup\gls@wrglossary{##1}}%
+ \let\@gls@renewglossary\@empty
+}
+\newcommand*{\gls@wrglossary}[2]{%
+ \ifglssavewrites
+ \protected@edef\@gls@tmp{\the\csname glo@#1@filetok\endcsname#2}%
+ \expandafter\global\expandafter\csname glo@#1@filetok\endcsname
+ \expandafter{\@gls@tmp^^J}%
+ \else
+ \ifcsdef{glo@#1@file}%
+ {%
+ \expandafter\protected@write\csname glo@#1@file\endcsname{%
+ \gls@disablepagerefexpansion}{#2}%
+ }%
+ {%
+ \ifignoredglossary{#1}{}%
+ {%
+ \GlossariesWarning{No file defined for glossary `#1'}%
+ }%
+ }%
+ \fi
+ \endgroup\@esphack
+}
+\newcommand*{\@do@wrglossary}[1]{%
+ \gls@ifnotmeasuring{\glswriteentry{#1}{\@@do@wrglossary{#1}}}%
+}
+\newcommand*{\glswriteentry}[2]{%
+ \ifglsindexonlyfirst
+ \ifglsused{#1}{}{#2}%
+ \else
+ #2%
+ \fi
+}
+\newcommand{\gls@protected@pagefmts}{\gls@numberpage,\gls@alphpage,%
+ \gls@Alphpage,\gls@romanpage,\gls@Romanpage,\gls@arabicpage}
+\newcommand*{\gls@disablepagerefexpansion}{%
+ \glswrglossdisablelocationcmds
+ \ifglsesclocations
+ \@for\@gls@this:=\gls@protected@pagefmts\do
+ {%
+ \expandafter\let\@gls@this\relax
+ }%
+ \fi
+}
+\newcommand{\glswrglossdisablelocationcmds}{}
+\newcommand*{\gls@alphpage}{\@alph\c@page}
+\newcommand*{\gls@Alphpage}{\@Alph\c@page}
+\newcommand*{\gls@numberpage}{\number\c@page}
+\newcommand*{\gls@arabicpage}{\@arabic\c@page}
+\newcommand*{\gls@romanpage}{\romannumeral\c@page}
+\newcommand*{\gls@Romanpage}{\@Roman\c@page}
+\newcommand*{\glsaddprotectedpagefmt}[1]{%
+ \ifglsesclocations
+ \protected@eappto\gls@protected@pagefmts{,\expandonce{\csname gls#1page\endcsname}}%
+ \csedef{gls#1page}{\expandonce{\csname#1\endcsname}\noexpand\c@page}%
+ \protected@eappto\@wrglossarynumberhook{%
+ \noexpand\let\expandonce{\csname org@gls#1\endcsname}%
+ \expandonce{\csname#1\endcsname}%
+ \noexpand\def\expandonce{\csname#1\endcsname}{%
+ \noexpand\@wrglossary@pageformat
+ \expandonce{\csname gls#1page\endcsname}%
+ \expandonce{\csname org@gls#1\endcsname}%
+ }%
+ }%
+ \else
+ \GlsWarnAddProtectedPageFmt
+ \fi
+}
+\newcommand{\GlsWarnAddProtectedPageFmt}{%
+ \GlossariesWarning{\string\glsaddprotectedpagefmt\space has no
+ effect with esclocations=false}%
+}
+\newcommand*\@wrglossarynumberhook{}
+\newcommand{\@wrglossary@pageformat}[3]{%
+ \ifx#3\c@page #1\else #2#3\fi
+}
+\newcommand*{\@@do@wrglossary}[1]{%
+ \ifglsesclocations
+ \@@do@esc@wrglossary{#1}%
+ \else
+ \@@do@noesc@wrglossary{#1}%
+ \fi
+}
+\newcommand{\glswrglossdisableanchorcmds}{\let\glstexorpdfstring\@secondoftwo}
+\ifdef\texorpdfstring
+ {\appto\glswrglossdisableanchorcmds{\let\texorpdfstring\@secondoftwo}}{}
+\ifdef\pdfstringdefPreHook
+ {\appto\glswrglossdisableanchorcmds{\pdfstringdefPreHook}}{}
+\newcommand{\glswrglosslocationtarget}[1]{#1}
+\newcommand{\glswrglosslocationtextfmt}[1]{#1}
+\newcommand*{\@@do@noesc@wrglossary}[1]{%
+ \expandafter\def\expandafter\@glslocref\expandafter{\theglsentrycounter}%
+ \expandafter\def\expandafter\@glsHlocref\expandafter{\theHglsentrycounter}%
+ \ifx\@glsHlocref\@glslocref
+ \def\@glo@counterprefix{}%
+ \else
+ \@xp@gls@getcounterprefix{\@glslocref}{\@glsHlocref}%
+ \fi
+ \protected@edef\@gls@label{\glsdetoklabel{#1}}%
+ \@@do@@wrglossary
+}
+\newif\ifglswrallowprimitivemods
+\glswrallowprimitivemodsfalse
+\newcommand*{\@@do@esc@wrglossary}[1]{% please read documented code!
+ \begingroup
+ \let\gls@orgthe\the
+ \let\gls@orgnumber\number
+ \let\gls@orgarabic\@arabic
+ \let\gls@orgromannumeral\romannumeral
+ \let\gls@orgalph\@alph
+ \let\gls@orgAlph\@Alph
+ \let\gls@orgRoman\@Roman
+ \ifglswrallowprimitivemods
+ \def\gls@the##1{%
+ \ifx##1\c@page \gls@numberpage\else\gls@orgthe##1\fi}%
+ \def\the{\expandafter\gls@the}%
+ \def\gls@number##1{%
+ \ifx##1\c@page \gls@numberpage\else\gls@orgnumber##1\fi}%
+ \def\number{\expandafter\gls@number}%
+ \def\romannumeral##1{%
+ \ifx##1\c@page \gls@romanpage \else \gls@orgromannumeral##1\fi}%
+ \fi
+ \def\@arabic##1{%
+ \ifx##1\c@page \gls@arabicpage\else\gls@orgarabic##1\fi}%
+ \def\@Roman##1{%
+ \ifx##1\c@page \gls@Romanpage\else\gls@orgRoman##1\fi}%
+ \def\@alph##1{%
+ \ifx##1\c@page \gls@alphpage\else\gls@orgalph##1\fi}%
+ \def\@Alph##1{%
+ \ifx##1\c@page \gls@Alphpage\else\gls@orgAlph##1\fi}%
+ \@wrglossarynumberhook
+ \gls@disablepagerefexpansion
+ \protected@xdef\@glslocref{\theglsentrycounter}%
+ \endgroup
+ \@gls@checkmkidxchars\@glslocref
+ \expandafter\ifx\theHglsentrycounter\theglsentrycounter\relax
+ \def\@glo@counterprefix{}%
+ \else
+ \protected@edef\@glsHlocref{\theHglsentrycounter}%
+ \@gls@checkmkidxchars\@glsHlocref
+ \@xp@gls@getcounterprefix{\@glslocref}{\@glsHlocref}%
+ \fi
+ \protected@edef\@gls@label{\glsdetoklabel{#1}}%
+ \@@do@@wrglossary
+}
+\newcommand*{\@@do@@wrglossary}{%
+ \ifglsxindy
+ \expandafter\@glo@check@mkidxrangechar\@glsnumberformat\@nil
+ \def\@glo@range{}%
+ \expandafter\if\@glo@prefix(\relax
+ \def\@glo@range{:open-range}%
+ \else
+ \expandafter\if\@glo@prefix)\relax
+ \def\@glo@range{:close-range}%
+ \fi
+ \fi
+ \gls@glossary{\csname glo@\@gls@label @type\endcsname}{%
+ (indexentry :tkey (\csname glo@\@gls@label @index\endcsname)
+ :locref \string"{\@glo@counterprefix}{\@glslocref}\string" %
+ :attr \string"\@gls@counter\@glo@suffix\string"
+ \@glo@range
+ )
+ }%
+ \else
+ \@set@glo@numformat{\@glo@numfmt}{\@gls@counter}{\@glsnumberformat}%
+ {\@glo@counterprefix}%
+ \gls@glossary{\csname glo@\@gls@label @type\endcsname}{%
+ \string\glossaryentry{\csname glo@\@gls@label @index\endcsname
+ \@gls@encapchar\@glo@numfmt}{\@glslocref}}%
+ \fi
+}
+\newcommand*\@xp@gls@getcounterprefix[2]{%
+ \bgroup
+ \glswrglossdisableanchorcmds
+ \protected@edef\@do@gls@getcounterprefix{%
+ \noexpand\egroup
+ \noexpand\@gls@getcounterprefix{#1}{#2}%
+ }%
+ \@do@gls@getcounterprefix
+}
+\newcommand*\@gls@getcounterprefix[2]{%
+ \def\@gls@thisloc{#1}\def\@gls@thisHloc{#2}%
+ \ifx\@gls@thisloc\@gls@thisHloc
+ \def\@glo@counterprefix{}%
+ \else
+ \def\@gls@get@counterprefix##1.#1##2\end@getprefix{%
+ \def\@glo@tmp{##2}%
+ \ifx\@glo@tmp\@empty
+ \def\@glo@counterprefix{}%
+ \else
+ \def\@glo@counterprefix{##1}%
+ \fi
+ }%
+ \@gls@get@counterprefix#2.#1\end@getprefix
+ \ifx\@glo@counterprefix\@empty
+ \GlossariesWarning{Hyper target `#2' can't be formed by
+ prefixing^^Jlocation `#1'. You need to modify the
+ definition of \string\theH\@gls@counter^^Jotherwise you
+ will get the warning: "`name{\@gls@counter.#1}' has been^^J
+ referenced but does not exist"}%
+ \fi
+ \fi
+}
+\newcommand{\@do@seeglossary}[2]{%
+\def\@gls@xref{#2}%
+\@onelevel@sanitize\@gls@xref
+\@gls@checkmkidxchars\@gls@xref
+\ifglsxindy
+ \gls@glossary{\csname glo@#1@type\endcsname}{%
+ (indexentry
+ :tkey (\csname glo@#1@index\endcsname)
+ :xref (\string"\@gls@xref\string")
+ :attr \string"see\string"
+ )
+ }%
+\else
+ \gls@glossary{\csname glo@#1@type\endcsname}{%
+ \string\glossaryentry{\csname glo@#1@index\endcsname
+ \@gls@encapchar glsseeformat\@gls@xref}{Z}}%
+\fi
+}
+\def\@gls@fixbraces#1#2#3\@nil{%
+ \ifx#2[\relax
+ \@@gls@fixbraces#1#2#3\@end@fixbraces
+ \else
+ \def#1{{#2#3}}%
+ \fi
+}
+\def\@@gls@fixbraces#1[#2]#3\@end@fixbraces{%
+ \def#1{[#2]{#3}}%
+}
+\newrobustcmd*{\glssee}[3][\seename]{%
+ \@do@seeglossary{#2}{[#1]{#3}}}
+\newcommand*{\@glssee}[3][\seename]{%
+ \glssee[#1]{#3}{#2}}
+\newrobustcmd*{\glsseeformat}[3][\seename]{%
+ \emph{#1} \glsseelist{#2}}
+\newrobustcmd*{\glsseelist}[1]{%
+ \let\@gls@dolast\relax
+ \let\@gls@donext\relax
+ \@for\@gls@thislabel:=#1\do{%
+ \ifx\@xfor@nextelement\@nnil
+ \@gls@dolast
+ \else
+ \@gls@donext
+ \fi
+ \expandafter\glsseeitem\expandafter{\@gls@thislabel}%
+ \let\@gls@dolast\glsseelastsep
+ \let\@gls@donext\glsseesep
+ }%
+}
+\newcommand*{\glsseelastsep}{\space\andname\space}
+\newcommand*{\glsseesep}{, }
+\newrobustcmd*{\glsseeitem}[1]{\glshyperlink[\glsseeitemformat{#1}]{#1}}
+\newcommand*{\glsseeitemformat}[1]{%
+ \ifglshasshort{#1}{\glsentrytext{#1}}{\glsentryname{#1}}%
+}
+\newcommand*{\gls@save@numberlist}[1]{%
+ \ifglssavenumberlist
+ \toks@{#1}%
+ \protected@edef\@do@writeaux@info{%
+ \noexpand\csgdef{glo@\glscurrententrylabel @numberlist}{\the\toks@}%
+ }%
+ \@onelevel@sanitize\@do@writeaux@info
+ \protected@write\@auxout{}{\@do@writeaux@info}%
+ \fi
+}
+\newcommand*{\warn@noprintglossary}{}%
+\ifcsundef{printglossary}{}%
+{%
+ \@gls@warnonglossdefined
+ \undef\printglossary
+}
+\newcommand*{\@printgloss@checkexists@noignored}[2]{%
+ \@ifglossaryexists{#1}%
+ {#2}%
+ {%
+ \ifignoredglossary{#1}%
+ {\GlossariesWarning{Glossary `#1' is an ignored glossary}}%
+ {\GlossariesWarning{Glossary `#1' doesn't exist}}%
+ }%
+}
+\newcommand*{\@printgloss@checkexists@allowignored}[2]{%
+ \s@ifglossaryexists{#1}%
+ {#2}%
+ {\GlossariesWarning{Glossary `#1' doesn't exist}}%
+}
+\let\@printgloss@checkexists\@printgloss@checkexists@noignored
+\newcommand*{\printglossary}[1][type=\glsdefaulttype]{%
+ \let\@printgloss@checkexists\@printgloss@checkexists@noignored
+ \@printglossary{#1}{\@print@glossary}%
+}
+\newcommand*{\printglossaries}{%
+ \forallglossaries{\@@glo@type}{\printglossary[type=\@@glo@type]}%
+}
+\newcommand*{\printnoidxglossary}[1][type=\glsdefaulttype]{%
+ \let\@printgloss@checkexists\@printgloss@checkexists@noignored
+ \@printglossary{#1}{\@print@noidx@glossary}%
+}
+\newcommand*{\printnoidxglossaries}{%
+ \forallglossaries{\@@glo@type}{\printnoidxglossary[type=\@@glo@type]}%
+}
+\newcommand*{\@printgloss@setsort}{}
+\newcommand*{\@gls@preglossaryhook}{}
+\newcommand{\@printglossary}[2]{%
+ \def\@glo@type{\glsdefaulttype}%
+ \def\glossarytitle{\csname @glotype@\@glo@type @title\endcsname}%
+ \def\glossarytoctitle{\glossarytitle}%
+ \let\org@glossarytitle\glossarytitle
+ \def\@glossarystyle{%
+ \ifx\@glossary@default@style\relax
+ \GlossariesWarning{No default glossary style provided \MessageBreak
+ for the glossary `\@glo@type'. \MessageBreak
+ Using fallback. \MessageBreak
+ To fix this set the style with \MessageBreak
+ \string\setglossarystyle\space or use the \MessageBreak
+ style key=value option}%
+ \fi
+ }%
+ \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}%
+ \let\@org@glossaryentrynumbers\glossaryentrynumbers
+ \bgroup
+ \@printgloss@setsort
+ \setkeys{printgloss}{#1}%
+ \@printgloss@checkexists{\@glo@type}%
+ {%
+ \ifx\glossarytitle\org@glossarytitle
+ \else
+ \expandafter\let\csname @glotype@\@glo@type @title\endcsname
+ \glossarytitle
+ \fi
+ \let\currentglossary\@glo@type
+ \let\org@glossaryentrynumbers\glossaryentrynumbers
+ \let\glsnonextpages\@glsnonextpages
+ \let\glsnextpages\@glsnextpages
+ \let\nopostdesc\@nopostdesc
+ \gls@dotoctitle
+ \@glossarystyle
+ \let\gls@org@glossaryentryfield\glossentry
+ \let\gls@org@glossarysubentryfield\subglossentry
+ \renewcommand{\glossentry}[1]{%
+ \protected@xdef\glscurrententrylabel{\glsdetoklabel{##1}}%
+ \gls@org@glossaryentryfield{##1}%
+ }%
+ \renewcommand{\subglossentry}[2]{%
+ \protected@xdef\glscurrententrylabel{\glsdetoklabel{##2}}%
+ \gls@org@glossarysubentryfield{##1}{##2}%
+ }%
+ \@gls@preglossaryhook
+ #2%
+ }%
+ \egroup
+ \global\let\glossaryentrynumbers\@org@glossaryentrynumbers
+ \global\let\warn@noprintglossary\relax
+}
+\newcommand{\@print@glossary}{%
+ \makeatletter
+ \@input@{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
+ \IfFileExists{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
+ {}%
+ {\null}%
+ \ifglsxindy
+ \gls@xdy@set@lang{\@glo@type}%
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\providecommand\string\@xdylanguage[2]{}}%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\@xdylanguage{\@glo@type}{\@gls@langmod}}%
+ }%
+ }%
+ \@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*{\@glo@sortentries}[2]{%
+ \glosortentrieswarning
+ \def\@glo@sortinglist{}%
+ \def\@glo@sortinghandler{#1}%
+ \protected@edef\@glo@type{#2}%
+ \forlistcsloop{\@glo@do@sortentries}{@glsref@#2}%
+ \csdef{@glsref@#2}{}%
+ \@for\@this@label:=\@glo@sortinglist\do{%
+ \xifinlistcs{\@this@label}{@glsref@#2}%
+ {}%
+ {%
+ \listcsxadd{@glsref@#2}{\@this@label}%
+ }%
+ \ifcsdef{@glo@sortingchildren@\@this@label}%
+ {%
+ \@glo@addchildren{#2}{\@this@label}%
+ }%
+ {}%
+ }%
+}
+\newcommand*{\@glo@addchildren}[2]{%
+ \bgroup
+ \letcs{\@glo@childlist}{@glo@sortingchildren@#2}%
+ \@for\@this@childlabel:=\@glo@childlist\do
+ {%
+ \xifinlistcs{\@this@childlabel}{@glsref@#1}%
+ {}%
+ {%
+ \listcsxadd{@glsref@#1}{\@this@childlabel}%
+ }%
+ \ifcsdef{@glo@sortingchildren@\@this@childlabel}%
+ {%
+ \@glo@addchildren{#1}{\@this@childlabel}%
+ }%
+ {%
+ }%
+ }%
+ \egroup
+}
+\newcommand*{\@glo@do@sortentries}[1]{%
+ \ifglshasparent{#1}%
+ {%
+ \protected@edef\@glo@parent{\csuse{glo@\glsdetoklabel{#1}@parent}}%
+ \ifcsundef{@glo@sortingchildren@\@glo@parent}%
+ {%
+ \csdef{@glo@sortingchildren@\@glo@parent}{}%
+ }%
+ {}%
+ \expandafter\@glo@sortedinsert
+ \csname @glo@sortingchildren@\@glo@parent\endcsname{#1}%
+ \xifinlistcs{\@glo@parent}{@glsref@\@glo@type}%
+ {%
+ }%
+ {%
+ \expandafter\@glo@do@sortentries\expandafter{\@glo@parent}%
+ }%
+ }%
+ {%
+ \@glo@sortedinsert{\@glo@sortinglist}{#1}%
+ }%
+}
+\newcommand*{\@glo@sortedinsert}[2]{%
+ \dtl@insertinto{#2}{#1}{\@glo@sortinghandler}%
+}%
+\newcommand*{\@glo@sorthandler@word}[2]{%
+ \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}%
+ \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}%
+ \edef\glo@do@compare{%
+ \noexpand\dtlwordindexcompare{\noexpand\dtl@sortresult}%
+ {\expandonce\@gls@sort@B}%
+ {\expandonce\@gls@sort@A}%
+ }%
+ \glo@do@compare
+}
+\newcommand*{\@glo@sorthandler@letter}[2]{%
+ \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}%
+ \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}%
+ \edef\glo@do@compare{%
+ \noexpand\dtlletterindexcompare{\noexpand\dtl@sortresult}%
+ {\expandonce\@gls@sort@B}%
+ {\expandonce\@gls@sort@A}%
+ }%
+ \glo@do@compare
+}
+\newcommand*{\@glo@sorthandler@case}[2]{%
+ \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}%
+ \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}%
+ \edef\glo@do@compare{%
+ \noexpand\dtlcompare{\noexpand\dtl@sortresult}%
+ {\expandonce\@gls@sort@B}%
+ {\expandonce\@gls@sort@A}%
+ }%
+ \glo@do@compare
+}
+\newcommand*{\@glo@sorthandler@nocase}[2]{%
+ \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}%
+ \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}%
+ \edef\glo@do@compare{%
+ \noexpand\dtlicompare{\noexpand\dtl@sortresult}%
+ {\expandonce\@gls@sort@B}%
+ {\expandonce\@gls@sort@A}%
+ }%
+ \glo@do@compare
+}
+\newcommand*{\@glo@sortmacro@word}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \@glo@sortentries{\@glo@sorthandler@word}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=word]}{}%
+ }%
+}
+\newcommand*{\@glo@sortmacro@letter}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \@glo@sortentries{\@glo@sorthandler@letter}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=letter]}{}%
+ }%
+}
+\newcommand*{\@glo@sortmacro@standard}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \ifcsdef{@glo@sorthandler@\glsorder}%
+ {%
+ \@glo@sortentries{\csuse{@glo@sorthandler@\glsorder}}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Unknown sort handler `\glsorder'}{}%
+ }%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=standard]}{}%
+ }%
+}
+\newcommand*{\@glo@sortmacro@case}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \@glo@sortentries{\@glo@sorthandler@case}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=case]}{}%
+ }%
+}
+\newcommand*{\@glo@sortmacro@nocase}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \@glo@sortentries{\@glo@sorthandler@nocase}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=nocase]}{}%
+ }%
+}
+\newcommand*{\@glo@sortmacro@def}[1]{%
+ \def\@glo@sortinglist{}%
+ \forglsentries[#1]{\@gls@thislabel}%
+ {%
+ \xifinlistcs{\@gls@thislabel}{@glsref@#1}%
+ {%
+ \listeadd{\@glo@sortinglist}{\@gls@thislabel}%
+ }%
+ {%
+ }%
+ }%
+ \cslet{@glsref@#1}{\@glo@sortinglist}%
+}
+\newcommand*{\@glo@sortmacro@def@do}[1]{%
+ \ifinlistcs{#1}{@glsref@\@glo@type}%
+ {}%
+ {%
+ \listcsadd{@glsref@\@glo@type}{#1}%
+ }%
+ \ifcsdef{@glo@sortingchildren@#1}%
+ {%
+ \@glo@addchildren{\@glo@type}{#1}%
+ }%
+ {}%
+}
+\newcommand*{\@glo@sortmacro@use}[1]{}
+\newcommand*{\@print@noidx@glossary}{%
+ \ifcsdef{@glsref@\@glo@type}%
+ {%
+ \ifcsdef{@glo@sortmacro@\@glo@sorttype}%
+ {%
+ \csuse{@glo@sortmacro@\@glo@sorttype}{\@glo@type}%
+ }%
+ {%
+ \PackageError{glossaries}{Unknown sort handler `\@glo@sorttype'}{}%
+ }%
+ \glossarysection[\glossarytoctitle]{\glossarytitle}%
+ \glossarypreamble
+ \def\@gls@currentlettergroup{}%
+ \begin{theglossary}%
+ \glossaryheader
+ \glsresetentrylist
+ \forlistcsloop{\@gls@noidx@do}{@glsref@\@glo@type}%
+ \end{theglossary}%
+ \glossarypostamble
+ }%
+ {%
+ \@gls@noref@warn{\@glo@type}%
+ }%
+}
+\def\glo@grabfirst#1#2\@nil{%
+ \def\@gls@firsttok{#1}%
+ \ifdefempty\@gls@firsttok
+ {%
+ \def\@glo@thislettergrp{0}%
+ }%
+ {%
+ \@onelevel@sanitize\@gls@firsttok
+ \expandafter\@glo@grabfirst\@gls@firsttok{}{}\@nil
+ }%
+}
+\def\@glo@grabfirst#1#2\@nil{%
+ \ifdefempty\@glo@thislettergrp
+ {%
+ \def\@glo@thislettergrp{glssymbols}%
+ }%
+ {%
+ \count@=\uccode`#1\relax
+ \ifnum\count@=0\relax
+ \def\@glo@thislettergrp{glssymbols}%
+ \else
+ \ifdefstring\@glo@sorttype{case}%
+ {%
+ \count@=`#1\relax
+ }%
+ {%
+ }%
+ \edef\@glo@thislettergrp{\the\count@}%
+ \fi
+ }%
+}
+\newcommand{\@gls@noidx@do}[1]{%
+ \global\letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}%
+ \ifglshasparent{#1}%
+ {%
+ \gls@level=\csuse{glo@\glsdetoklabel{#1}@level}\relax
+ \ifdefvoid{\@gls@loclist}
+ {%
+ \subglossentry{\gls@level}{#1}{}%
+ }%
+ {%
+ \subglossentry{\gls@level}{#1}%
+ {%
+ \glsnoidxprenumberlist{#1}%
+ \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ }%
+ }%
+ }%
+ {%
+ \letcs{\@gls@sort}{glo@\glsdetoklabel{#1}@sort}%
+ \expandafter\glo@grabfirst\@gls@sort{}{}\@nil
+ \ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}%
+ {}%
+ {%
+ \ifdefempty{\@gls@currentlettergroup}{}%
+ {%
+ \global\let\@glo@thislettergrp\@glo@thislettergrp
+ \glsgroupskip
+ }%
+ \glsgroupheading{\@glo@thislettergrp}%
+ }%
+ \global\let\@gls@currentlettergroup\@glo@thislettergrp
+ \ifdefvoid{\@gls@loclist}
+ {%
+ \glossentry{#1}{}%
+ }%
+ {%
+ \glossentry{#1}%
+ {%
+ \glsnoidxprenumberlist{#1}%
+ \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\glsnoidxloclist}[1]{%
+ \def\@gls@noidxloclist@sep{}%
+ \def\@gls@noidxloclist@prev{}%
+ \forlistloop{\glsnoidxloclisthandler}{#1}%
+}
+\newcommand*{\glsnoidxloclisthandler}[1]{%
+ \ifdefstring{\@gls@noidxloclist@prev}{#1}%
+ {%
+ }%
+ {%
+ \@gls@noidxloclist@sep
+ #1%
+ \def\@gls@noidxloclist@sep{\delimN}%
+ \def\@gls@noidxloclist@prev{#1}%
+ }%
+}
+\newcommand*{\glsnoidxdisplayloclisthandler}[1]{%
+ \ifdefstring{\@gls@noidxloclist@prev}{#1}%
+ {%
+ }%
+ {%
+ \@gls@noidxloclist@sep
+ \@gls@noidxloclist@prev
+ \def\@gls@noidxloclist@prev{#1}%
+ }%
+}
+\newcommand*\glsnoidxdisplayloc[4]{%
+ \setentrycounter[#1]{#2}%
+ \csuse{#3}{#4}%
+}
+\newcommand*{\@gls@reference}[3]{%
+ \glsdoifexistsorwarn{#2}%
+ {%
+ \ifcsundef{@glsref@#1}{\csgdef{@glsref@#1}{}}{}%
+ \ifinlistcs{#2}{@glsref@#1}%
+ {}%
+ {\listcsgadd{@glsref@#1}{#2}}%
+ \ifcsundef{glo@\glsdetoklabel{#2}@loclist}%
+ {\csgdef{glo@\glsdetoklabel{#2}@loclist}{}}%
+ {}%
+ \listcsgadd{glo@\glsdetoklabel{#2}@loclist}{#3}%
+ }%
+}
+\define@key{printgloss}{type}{\def\@glo@type{#1}}
+\define@key{printgloss}{title}{%
+ \def\glossarytitle{#1}%
+ \let\gls@dotoctitle\relax
+}
+\define@key{printgloss}{toctitle}{%
+ \def\glossarytoctitle{#1}%
+ \let\gls@dotoctitle\relax
+}
+\define@key{printgloss}{style}{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries}%
+ {Glossary style `#1' undefined}{}%
+ }%
+ {%
+ \def\@glossarystyle{\setglossarystyle{#1}}%
+ }%
+}
+\define@choicekey{printgloss}{numberedsection}%
+ [\gls@numberedsection@val\gls@numberedsection@nr]%
+ {false,nolabel,autolabel,nameref}[nolabel]%
+{%
+ \ifcase\gls@numberedsection@nr\relax
+ \renewcommand*{\@@glossarysecstar}{*}%
+ \renewcommand*{\@@glossaryseclabel}{}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{}%
+ \renewcommand*{\@@glossaryseclabel}{}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{}%
+ \renewcommand*{\@@glossaryseclabel}{\label{\glsautoprefix\@glo@type}}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{*}%
+ \renewcommand*{\@@glossaryseclabel}{%
+ \protected@edef\@currentlabelname{\glossarytoctitle}%
+ \label{\glsautoprefix\@glo@type}}%
+ \fi
+}
+\define@choicekey{printgloss}{nogroupskip}{true,false}[true]{%
+ \csuse{glsnogroupskip#1}%
+}
+\define@choicekey{printgloss}{nopostdot}{true,false}[true]{%
+ \csuse{glsnopostdot#1}%
+}
+\newcommand*{\GlsEntryCounterLabelPrefix}{glsentry-}
+\define@choicekey{printgloss}{entrycounter}{true,false}[true]{%
+ \csuse{glsentrycounter#1}%
+ \@gls@define@glossaryentrycounter
+}
+\define@choicekey{printgloss}{subentrycounter}{true,false}[true]{%
+ \csuse{glssubentrycounter#1}%
+ \@gls@define@glossarysubentrycounter
+}
+\define@boolkey{printgloss}[gls]{nonumberlist}[true]{%
+\ifglsnonumberlist
+ \def\glossaryentrynumbers##1{}%
+\else
+ \def\glossaryentrynumbers##1{##1}%
+\fi}
+\define@key{printgloss}{sort}{\@glo@assign@sortkey{#1}}
+\newcommand*{\@glo@no@assign@sortkey}[1]{%
+ \PackageError{glossaries}{`sort' key not permitted with
+ \string\printglossary}%
+ {The `sort' key may only be used with \string\printnoidxglossary}%
+}
+\newcommand*{\@@glo@assign@sortkey}[1]{%
+ \def\@glo@sorttype{#1}%
+}
+\newcommand*{\@glsnonextpages}{%
+ \gdef\glossaryentrynumbers##1{%
+ \glsresetentrylist
+ }%
+}
+\newcommand*{\@glsnextpages}{%
+ \gdef\glossaryentrynumbers##1{%
+ ##1\glsresetentrylist}}
+\newcommand*{\glsresetentrylist}{%
+ \global\let\glossaryentrynumbers\org@glossaryentrynumbers}
+\newcommand*{\glsnonextpages}{}
+\newcommand*{\glsnextpages}{}
+\@gls@define@glossaryentrycounter
+\@gls@define@glossarysubentrycounter
+\newcommand*{\glsresetsubentrycounter}{%
+ \ifglssubentrycounter
+ \setcounter{glossarysubentry}{0}%
+ \fi
+}
+\newcommand*{\glsresetentrycounter}{%
+ \ifglsentrycounter
+ \setcounter{glossaryentry}{0}%
+ \fi
+}
+\newcommand*{\glsstepentry}[1]{%
+ \ifglsentrycounter
+ \refstepcounter{glossaryentry}%
+ \label{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \fi
+}
+\newcommand*{\glsstepsubentry}[1]{%
+ \ifglssubentrycounter
+ \protected@edef\currentglssubentry{\glsdetoklabel{#1}}%
+ \refstepcounter{glossarysubentry}%
+ \label{\GlsEntryCounterLabelPrefix\currentglssubentry}%
+ \fi
+}
+\newcommand*{\glsrefentry}[1]{%
+ \ifglsentrycounter
+ \ref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \else
+ \ifglssubentrycounter
+ \ref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \else
+ \gls{#1}%
+ \fi
+ \fi
+}
+\newcommand*{\glsentrycounterlabel}{%
+ \ifglsentrycounter
+ \theglossaryentry.\space
+ \fi
+}
+\newcommand*{\glssubentrycounterlabel}{%
+ \ifglssubentrycounter
+ \theglossarysubentry)\space
+ \fi
+}
+\newcommand*{\glsentryitem}[1]{%
+ \ifglsentrycounter
+ \glsstepentry{#1}\glsentrycounterlabel
+ \else
+ \glsresetsubentrycounter
+ \fi
+}
+\newcommand*{\glssubentryitem}[1]{%
+ \ifglssubentrycounter
+ \glsstepsubentry{#1}\glssubentrycounterlabel
+ \fi
+}
+\ifcsundef{theglossary}%
+{%
+ \newenvironment{theglossary}{}{}%
+}%
+{%
+ \@gls@warnontheglossdefined
+ \renewenvironment{theglossary}{}{}%
+}
+\newcommand*{\glossaryheader}{}
+\newcommand*{\glstarget}[2]{\@glstarget{\glolinkprefix#1}{#2}}
+\newcommand{\glossentry}[2]{\glossentryname{#1} #2}
+\newcommand*{\glossentryname}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \expandafter\glsnamefont\expandafter{\glo@name}%
+ }%
+}
+\newcommand*{\Glossentryname}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glsnamefont{\Glsentryname{#1}}%
+ }%
+}
+\glsmfuaddmap{\glossentryname}{\Glossentryname}
+\newcommand*{\glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glsentrydesc{#1}%
+ }%
+}
+\newcommand*{\Glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \Glsentrydesc{#1}%
+ }%
+}
+\glsmfuaddmap{\glossentrydesc}{\Glossentrydesc}
+\newcommand*{\glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glsentrysymbol{#1}%
+ }%
+}
+\newcommand*{\Glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \Glsentrysymbol{#1}%
+ }%
+}
+\glsmfuaddmap{\glossentrysymbol}{\Glossentrysymbol}
+\newcommand{\subglossentry}[3]{\glossentryname{#2} #3}
+\newcommand*{\glsgroupskip}{}
+\newcommand*{\glsgroupheading}[1]{}
+\newrobustcmd*{\glsgetgrouptitle}[1]{%
+ \@gls@getgrouptitle{#1}{\@gls@grptitle}%
+ \@gls@grptitle
+}
+\ExplSyntaxOn
+\newcommand*{\@gls@getgrouptitle}[2]{%
+ \def#2{#1}%
+ \regex_match:nnT { ^\A(.|glsnumbers|glssymbols)\Z } { #1 }
+ { \ifcsundef{#1groupname}{}{\letcs#2{#1groupname}} }
+}
+\ExplSyntaxOff
+\newcommand*{\@gls@noidx@getgrouptitle}[2]{%
+ \DTLifint{#1}%
+ {\edef#2{\char#1\relax}}%
+ {%
+ \ifcsundef{#1groupname}{\def#2{#1}}{\letcs#2{#1groupname}}%
+ }%
+}
+\ExplSyntaxOn
+\newcommand*{\glsgetgrouplabel}[1]{%
+ \str_if_eq:eeTF {#1} { \glssymbolsgroupname }
+ { glssymbols }
+ {
+ \str_if_eq:eeTF {#1} { \glsnumbersgroupname }
+ { glsnumbers }
+ { #1 }
+ }
+}
+\ExplSyntaxOff
+\newcommand*{\setentrycounter}[2][]{%
+ \def\@glo@counterprefix{#1}%
+ \ifx\@glo@counterprefix\@empty
+ \def\@glo@counterprefix{.}%
+ \else
+ \def\@glo@counterprefix{.#1.}%
+ \fi
+ \def\glsentrycounter{#2}%
+}
+\newcommand*{\setglossarystyle}[1]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries}{Glossary style `#1' undefined}{}%
+ }%
+ {%
+ \csname @glsstyle@#1\endcsname
+ }%
+ \ifx\@glossary@default@style\relax
+ \protected@edef\@glossary@default@style{#1}%
+ \fi
+}
+\newcommand{\newglossarystyle}[2]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \expandafter\def\csname @glsstyle@#1\endcsname{#2}%
+ }%
+ {%
+ \PackageError{glossaries}{Glossary style `#1' is already defined}{}%
+ }%
+}
+\newcommand{\renewglossarystyle}[2]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries}{Glossary style `#1' isn't already defined}{}%
+ }%
+ {%
+ \csdef{@glsstyle@#1}{#2}%
+ }%
+}
+\newcommand*{\glsnamefont}[1]{#1}
+\ifcsundef{hyperlink}%
+{%
+ \def\glshypernumber#1{#1}%
+}%
+{%
+ \def\glshypernumber#1{\@xp@glshypernumber{#1}}
+}
+\newrobustcmd{\@xp@glshypernumber}[1]{%
+ \@glshypernumber#1\nohyperpage{}\@nil
+}
+\def\@glshypernumber#1\nohyperpage#2#3\@nil{%
+ \ifx\\#1\\%
+ \else
+ \gls@delimR#1\delimR\delimR\\%
+ \fi
+ \ifx\\#2\\%
+ \else
+ #2%
+ \fi
+ \ifx\\#3\\%
+ \else
+ \@glshypernumber#3\@nil
+ \fi
+}
+\def\gls@delimR#1\delimR #2\delimR #3\\{%
+ \ifx\\#2\\%
+ \gls@delimN{#1}%
+ \else
+ \@gls@numberlink{#1}\delimR\@gls@numberlink{#2}%
+ \fi
+}
+\def\gls@delimN#1{\gls@@delimN#1\delimN \delimN\\}
+\def\gls@@delimN#1\delimN #2\delimN#3\\{%
+ \ifx\\#3\\%
+ \@gls@numberlink{#1}%
+ \else
+ \@gls@numberlink{#1}\delimN\@gls@numberlink{#2}%
+ \fi
+}
+\def\@gls@numberlink#1{%
+ \begingroup
+ \toks@={}%
+ \@gls@removespaces#1 \@nil
+ \endgroup
+}
+\def\@gls@removespaces#1 #2\@nil{%
+ \toks@=\expandafter{\the\toks@#1}%
+ \ifx\\#2\\%
+ \edef\@gls@x{\the\toks@}%
+ \ifx\@gls@x\empty
+ \else
+ \bgroup
+ \glswrglossdisableanchorcmds
+ \protected@edef\@gls@tmp{\glsentrycounter\@glo@counterprefix
+ \glswrglosslocationtarget{\@gls@x}}%
+ \@onelevel@sanitize\@gls@tmp
+ \edef\@gls@x{\noexpand\egroup
+ \noexpand\hyperlink{\@gls@tmp}%
+ {\noexpand\glswrglosslocationtextfmt{\the\toks@}}%
+ }%
+ \@gls@x
+ \fi
+ \else
+ \@gls@ReturnAfterFi{%
+ \@gls@removespaces#2\@nil
+ }%
+ \fi
+}
+\long\def\@gls@ReturnAfterFi#1\fi{\fi#1}
+\newcommand*{\hyperrm}[1]{\textrm{\glshypernumber{#1}}}
+\newcommand*{\hypersf}[1]{\textsf{\glshypernumber{#1}}}
+\newcommand*{\hypertt}[1]{\texttt{\glshypernumber{#1}}}
+\newcommand*{\hyperbf}[1]{\textbf{\glshypernumber{#1}}}
+\newcommand*{\hypermd}[1]{\textmd{\glshypernumber{#1}}}
+\newcommand*{\hyperit}[1]{\textit{\glshypernumber{#1}}}
+\newcommand*{\hypersl}[1]{\textsl{\glshypernumber{#1}}}
+\newcommand*{\hyperup}[1]{\textup{\glshypernumber{#1}}}
+\newcommand*{\hypersc}[1]{\textsc{\glshypernumber{#1}}}
+\newcommand*{\hyperemph}[1]{\emph{\glshypernumber{#1}}}
+\newcommand{\oldacronym}[4][\gls@label]{%
+ \def\gls@label{#2}%
+ \newacronym[#4]{#1}{#2}{#3}%
+ \ifcsundef{xspace}%
+ {%
+ \expandafter\edef\csname#1\endcsname{%
+ \noexpand\@ifstar{\noexpand\Gls{#1}}{\noexpand\gls{#1}}%
+ }%
+ }%
+ {%
+ \expandafter\edef\csname#1\endcsname{%
+ \noexpand\@ifstar{\noexpand\Gls{#1}\noexpand\xspace}{%
+ \noexpand\gls{#1}\noexpand\xspace}%
+ }%
+ }%
+}
+\newcommand{\newacronym}[4][]{%
+ \gls@newacronym{#1}{#2}{#3}{#4}%
+}
+\newcommand{\gls@newacronym}[4]{%
+ \renewcommand{\gls@newacronym}[4]{%
+ \PackageError{glossaries}{incompatible acronym style:
+ rollback may be required}%
+ {something has gone wrong with \string\newacronym. Try
+ \string\usepackage{glossaries}[=v4.49]}%
+ }%
+ \setacronymstyle{long-short}%
+ \newacronym[#1]{#2}{#3}{#4}%
+}
+\newcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}
+\newrobustcmd*{\glstextup}[1]{\ifdef\textulc{\textulc{#1}}{\textup{#1}}}
+\newcommand*{\glsshortkey}{short}
+\newcommand*{\glsshortpluralkey}{shortplural}
+\newcommand*{\glslongkey}{long}
+\newcommand*{\glslongpluralkey}{longplural}
+\newcommand{\acrlinkfullformat}[5]{%
+ \acrfullformat{#1{#3}{#4}[#5]}{#2{#3}{#4}[]}%
+}
+\newcommand{\acrfullformat}[2]{#1\glsspace(#2)}
+\newrobustcmd{\glsspace}{\space}
+\newcommand*{\acrfullfmt}[3]{%
+ \acrlinkfullformat{\@acrlong}{\@acrshort}{#1}{#2}{#3}%
+}
+\newcommand*{\Acrfullfmt}[3]{%
+ \acrlinkfullformat{\@Acrlong}{\@acrshort}{#1}{#2}{#3}%
+}
+\newcommand*{\ACRfullfmt}[3]{%
+ \acrlinkfullformat{\@ACRlong}{\@ACRshort}{#1}{#2}{#3}%
+}
+\newcommand*{\acrfullplfmt}[3]{%
+ \acrlinkfullformat{\@acrlongpl}{\@acrshortpl}{#1}{#2}{#3}%
+}
+\newcommand*{\Acrfullplfmt}[3]{%
+ \acrlinkfullformat{\@Acrlongpl}{\@acrshortpl}{#1}{#2}{#3}%
+}
+\newcommand*{\ACRfullplfmt}[3]{%
+ \acrlinkfullformat{\@ACRlongpl}{\@ACRshortpl}{#1}{#2}{#3}%
+}
+\newrobustcmd*{\acrfull}{\@gls@hyp@opt\ns@acrfull}
+\newcommand*\ns@acrfull[2][]{%
+ \new@ifnextchar[{\@acrfull{#1}{#2}}%
+ {\@acrfull{#1}{#2}[]}%
+}
+\def\@acrfull#1#2[#3]{%
+ \acrfullfmt{#1}{#2}{#3}%
+}
+\newrobustcmd*{\Acrfull}{\@gls@hyp@opt\ns@Acrfull}
+\glsmfuaddmap{\acrfull}{\Acrfull}
+\newcommand*\ns@Acrfull[2][]{%
+ \new@ifnextchar[{\@Acrfull{#1}{#2}}%
+ {\@Acrfull{#1}{#2}[]}%
+}
+\def\@Acrfull#1#2[#3]{%
+ \Acrfullfmt{#1}{#2}{#3}%
+}
+\newrobustcmd*{\ACRfull}{\@gls@hyp@opt\ns@ACRfull}
+\newcommand*\ns@ACRfull[2][]{%
+ \new@ifnextchar[{\@ACRfull{#1}{#2}}%
+ {\@ACRfull{#1}{#2}[]}%
+}
+\def\@ACRfull#1#2[#3]{%
+ \ACRfullfmt{#1}{#2}{#3}%
+}
+\newrobustcmd*{\acrfullpl}{\@gls@hyp@opt\ns@acrfullpl}
+\newcommand*\ns@acrfullpl[2][]{%
+ \new@ifnextchar[{\@acrfullpl{#1}{#2}}%
+ {\@acrfullpl{#1}{#2}[]}%
+}
+\def\@acrfullpl#1#2[#3]{%
+ \acrfullplfmt{#1}{#2}{#3}%
+}
+\newrobustcmd*{\Acrfullpl}{\@gls@hyp@opt\ns@Acrfullpl}
+\glsmfuaddmap{\acrfullpl}{\Acrfullpl}
+\newcommand*\ns@Acrfullpl[2][]{%
+ \new@ifnextchar[{\@Acrfullpl{#1}{#2}}%
+ {\@Acrfullpl{#1}{#2}[]}%
+}
+\def\@Acrfullpl#1#2[#3]{%
+ \Acrfullplfmt{#1}{#2}{#3}%
+}
+\newrobustcmd*{\ACRfullpl}{\@gls@hyp@opt\ns@ACRfullpl}
+\newcommand*\ns@ACRfullpl[2][]{%
+ \new@ifnextchar[{\@ACRfullpl{#1}{#2}}%
+ {\@ACRfullpl{#1}{#2}[]}%
+}
+\def\@ACRfullpl#1#2[#3]{%
+ \ACRfullplfmt{#1}{#2}{#3}%
+}
+\newcommand{\acronymfont}[1]{#1}
+\newcommand{\firstacronymfont}[1]{\acronymfont{#1}}
+\newcommand*{\acrnameformat}[2]{\acronymfont{#1}}
+\newtoks\glskeylisttok
+\newtoks\glslabeltok
+\newtoks\glsshorttok
+\newtoks\glslongtok
+\newcommand*{\newacronymhook}{}
+\newcommand*{\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\glspluralsuffix},%
+ \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}{%
+ \glsuppercase{\genacrfullformat{##2}{##3}}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\genplacrfullformat{##2}{##3}}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\Genplacrfullformat{##2}{##3}}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsuppercase{\genplacrfullformat{##2}{##3}}}}%
+ \renewcommand*{\glsentryfull}[1]{\genacrfullformat{##1}{}}%
+ \renewcommand*{\Glsentryfull}[1]{\Genacrfullformat{##1}{}}%
+ \renewcommand*{\glsentryfullpl}[1]{\genplacrfullformat{##1}{}}%
+ \renewcommand*{\Glsentryfullpl}[1]{\Genplacrfullformat{##1}{}}%
+}
+\newcommand*{\GenericAcronymFields}{description={\the\glslongtok}}
+\newcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{#1}}}
+\newcommand*{\acronymsort}[2]{#1}
+\newcommand*{\setacronymstyle}[1]{%
+ \ifcsundef{@glsacr@dispstyle@#1}
+ {%
+ \PackageError{glossaries}{Undefined acronym style `#1'}{}%
+ }%
+ {%
+ \ifdefempty{\@glsacronymlists}%
+ {%
+ \DeclareAcronymList{\acronymtype}%
+ }%
+ {}%
+ \SetGenericNewAcronym
+ \GlsUseAcrStyleDefs{#1}%
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \defglsentryfmt[\@gls@type]{\GlsUseAcrEntryDispStyle{#1}}%
+ }%
+ }%
+}
+\newcommand*{\newacronymstyle}[3]{%
+ \ifcsdef{@glsacr@dispstyle@#1}%
+ {%
+ \PackageError{glossaries}{Acronym style `#1' already exists}{}%
+ }%
+ {%
+ \csdef{@glsacr@dispstyle@#1}{#2}%
+ \csdef{@glsacr@styledefs@#1}{#3}%
+ }%
+}
+\newcommand*{\renewacronymstyle}[3]{%
+ \ifcsdef{@glsacr@dispstyle@#1}%
+ {%
+ \csdef{@glsacr@dispstyle@#1}{#2}%
+ \csdef{@glsacr@styledefs@#1}{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Acronym style `#1' doesn't exist}{}%
+ }%
+}
+\newcommand*{\GlsUseAcrEntryDispStyle}[1]{\csuse{@glsacr@dispstyle@#1}}
+\newcommand*{\GlsUseAcrStyleDefs}[1]{\csuse{@glsacr@styledefs@#1}}
+\newacronymstyle{long-short}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \Glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \Glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+\newacronymstyle{long-sp-short}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{##1}##2\glsacspace{##1}%
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \Glsentrylong{##1}##2\glsacspace{##1}%
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{##1}##2\glsacspace{##1}%
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \Glsentrylongpl{##1}##2\glsacspace{##1}%
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+\newcommand*{\glsacspace}[1]{%
+ \settowidth{\dimen@}{(\firstacronymfont{\glsentryshort{#1}})}%
+ \ifdim\dimen@<3em~\else\space\fi
+}
+\newacronymstyle{short-long}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \protect\firstacronymfont{\Glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2\space
+ (\glsentrylongpl{##1})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2\space
+ (\glsentrylongpl{##1})%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+\newacronymstyle{long-sc-short}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+}
+\newacronymstyle{long-sm-short}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand{\acronymfont}[1]{\textsmaller{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}
+\newacronymstyle{sc-short-long}%
+{%
+ \GlsUseAcrEntryDispStyle{short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+}
+\newacronymstyle{sm-short-long}%
+{%
+ \GlsUseAcrEntryDispStyle{short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand{\acronymfont}[1]{\textsmaller{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}
+\newacronymstyle{long-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{long-sp-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sp-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sp-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\glsacspace{##1}(\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{long-sc-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sc-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sc-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{long-sm-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sm-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sm-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{sc-short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{sc-short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{sc-short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{sm-short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{sm-short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{sm-short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{dua}%
+{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglshaslong{\glslabel}%
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \glsentrylongpl{\glslabel}\glsinsert
+ }%
+ {%
+ \Glsentrylongpl{\glslabel}\glsinsert
+ }%
+ {%
+ \glsuppercase
+ {\glsentrylongpl{\glslabel}\glsinsert}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \glsentrylong{\glslabel}\glsinsert
+ }%
+ {%
+ \Glsentrylong{\glslabel}\glsinsert
+ }%
+ {%
+ \glsuppercase
+ {\glsentrylong{\glslabel}\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glsgenentryfmt
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\Glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsuppercase{\glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\Glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsuppercase{\glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})}}}%
+ \renewcommand*{\glsentryfull}[1]{%
+ \glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \Glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glsentrylongpl{##1}\space(\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \Glsentrylongpl{##1}\space(\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}
+\newacronymstyle{dua-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{dua}%
+}%
+{%
+ \GlsUseAcrStyleDefs{dua}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymentry}[1]{\glsentrylong{##1}}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+}%
+\newacronymstyle{footnote}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \glshyperfirstfalse
+ \renewcommand*{\genacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshort{##1}}##2%
+ \protect\footnote{\glsentrylong{##1}}%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshort{##1}}##2%
+ \protect\footnote{\glsentrylong{##1}}%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2%
+ \protect\footnote{\glsentrylongpl{##1}}%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2%
+ \protect\footnote{\glsentrylongpl{##1}}%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\acronymfont{\glsentryshort{##2}}##3\space
+ (\glsentrylong{##2})}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\acronymfont{\Glsentryshort{##2}}##3\space
+ (\glsentrylong{##2})}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsuppercase{\acronymfont{\glsentryshort{##2}}##3\space
+ (\glsentrylong{##2})}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\acronymfont{\glsentryshortpl{##2}}##3\space
+ (\glsentrylongpl{##2})}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\acronymfont{\Glsentryshortpl{##2}}##3\space
+ (\glsentrylongpl{##2})}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsuppercase{\acronymfont{\glsentryshortpl{##2}}##3\space
+ (\glsentrylongpl{##2})}}}%
+ \renewcommand*{\glsentryfull}[1]{%
+ \acronymfont{\glsentryshort{##1}}\space(\glsentrylong{##1})}%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \acronymfont{\Glsentryshort{##1}}\space(\glsentrylong{##1})}%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \acronymfont{\glsentryshortpl{##1}}\space(\glsentrylongpl{##1})}%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \acronymfont{\Glsentryshortpl{##1}}\space(\glsentrylongpl{##1})}%
+}
+\newacronymstyle{footnote-sc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+}%
+\newacronymstyle{footnote-sm}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}
+ \renewcommand{\acronymfont}[1]{\textsmaller{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}%
+\newacronymstyle{footnote-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{footnote-sc-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote-sc}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote-sc}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{footnote-sm-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote-sm}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote-sm}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newcommand*{\DefineAcronymSynonyms}{%
+ \let\acs\acrshort
+ \let\Acs\Acrshort
+ \let\acsp\acrshortpl
+ \let\Acsp\Acrshortpl
+ \let\acl\acrlong
+ \let\aclp\acrlongpl
+ \let\Acl\Acrlong
+ \let\Aclp\Acrlongpl
+ \let\acf\acrfull
+ \let\acfp\acrfullpl
+ \let\Acf\Acrfull
+ \let\Acfp\Acrfullpl
+ \let\ac\gls
+ \let\Ac\Gls
+ \let\acp\glspl
+ \let\Acp\Glspl
+}
+\ifglsacrshortcuts
+ \DefineAcronymSynonyms
+\fi
+\newcommand*{\SetDefaultAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{\glsgenentryfmt}%
+}
+\newcommand*{\acrfootnote}[3]{\acrlinkfootnote{#1}{#2}{#3}}
+\newcommand*{\acrlinkfootnote}[3]{%
+ \footnote{\glslink[#1]{#2}{#3}}%
+}
+\newcommand*{\acrnolinkfootnote}[3]{%
+ \footnote{#3}%
+}
+\newrobustcmd*{\glsdoparenifnotempty}[2]{%
+ \protected@edef\gls@tmp{#1}%
+ \ifdefempty\gls@tmp
+ {}%
+ {%
+ \ifx\gls@tmp\@gls@default@value
+ \else
+ \space (#2{#1})%
+ \fi
+ }%
+}
+\newcommand*{\@gls@deprecated@acr@warning}[3]{%
+ \GlossariesWarning{Acronym style option #1 deprecated.
+ Use \string\setacronymstyle{#2} with just glossaries.sty or
+ use \string\setabbreviationstyle[acronym]{#3} with
+ glossaries-extra.sty}%
+}
+\RequirePackage{glossary-hypernav}[=v4.52]
+\@gls@loadlist
+\@gls@loadlong
+\@gls@loadsuper
+\@gls@loadtree
+\ifx\@glossary@default@style\relax
+\else
+ \setglossarystyle{\@glossary@default@style}
+\fi
+\newcommand*{\showgloparent}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@parent\endcsname
+}
+\newcommand*{\showglolevel}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@level\endcsname
+}
+\newcommand*{\showglotext}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@text\endcsname
+}
+\newcommand*{\showgloplural}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@plural\endcsname
+}
+\newcommand*{\showglofirst}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@first\endcsname
+}
+\newcommand*{\showglofirstpl}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@firstpl\endcsname
+}
+\newcommand*{\showglotype}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@type\endcsname
+}
+\newcommand*{\showglocounter}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@counter\endcsname
+}
+\newcommand*{\showglouseri}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@useri\endcsname
+}
+\newcommand*{\showglouserii}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@userii\endcsname
+}
+\newcommand*{\showglouseriii}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@useriii\endcsname
+}
+\newcommand*{\showglouseriv}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@useriv\endcsname
+}
+\newcommand*{\showglouserv}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@userv\endcsname
+}
+\newcommand*{\showglouservi}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@uservi\endcsname
+}
+\newcommand*{\showgloname}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@name\endcsname
+}
+\newcommand*{\showglodesc}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@desc\endcsname
+}
+\newcommand*{\showglodescplural}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@descplural\endcsname
+}
+\newcommand*{\showglosort}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@sort\endcsname
+}
+\newcommand*{\showglosymbol}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@symbol\endcsname
+}
+\newcommand*{\showglosymbolplural}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@symbolplural\endcsname
+}
+\newcommand*{\showgloshort}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@short\endcsname
+}
+\newcommand*{\showglolong}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@long\endcsname
+}
+\newcommand*{\showgloindex}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@index\endcsname
+}
+\newcommand*{\showgloflag}[1]{%
+ \expandafter\show\csname ifglo@\glsdetoklabel{#1}@flag\endcsname
+}
+\newcommand*{\showgloloclist}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@loclist\endcsname
+}
+\newcommand*{\showglofield}[2]{%
+ \csshow{glo@\glsdetoklabel{#1}@#2}%
+}
+\newcommand*{\showacronymlists}{%
+ \show\@glsacronymlists
+}
+\newcommand*{\showglossaries}{%
+ \show\@glo@types
+}
+\newcommand*{\showglossaryin}[1]{%
+ \expandafter\show\csname @glotype@#1@in\endcsname
+}
+\newcommand*{\showglossaryout}[1]{%
+ \expandafter\show\csname @glotype@#1@out\endcsname
+}
+\newcommand*{\showglossarytitle}[1]{%
+ \expandafter\show\csname @glotype@#1@title\endcsname
+}
+\newcommand*{\showglossarycounter}[1]{%
+ \expandafter\show\csname @glotype@#1@counter\endcsname
+}
+\newcommand*{\showglossaryentries}[1]{%
+ \expandafter\show\csname glolist@#1\endcsname
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-2022-11-03.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-hypernav-2022-11-03.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.52 (glossary-hypernav-2022-11-03.sty)}
+% Version 4.52 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossary-hypernav}[2022/11/03 v4.52 (NLCT)]
+\newcommand*{\glsnavhyperlink}[3][\currentglossary]{%
+ \protected@edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}%
+ \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}%
+}
+\newcommand*{\glsnavhyperlinkname}[2]{glsn:#1@#2}
+\newcommand*{\glsnavhypertarget}{\protect\@@gls@navhypertarget}
+\newcommand*{\@@gls@navhypertarget}[3][\currentglossary]{%
+ \@glsnavhypertarget{#1}{#2}{#3}%
+}
+\newcommand*{\@glsnavhypertarget}[3]{%
+ \protected@write\@auxout{}{\string\@gls@hypergroup{#1}{#2}}%
+ \@glstarget{\glsnavhyperlinkname{#1}{#2}}{#3}%
+ \expandafter\let
+ \expandafter\@gls@list\csname @gls@hypergrouplist@#1\endcsname
+ \@for\@gls@elem:=\@gls@list\do{%
+ \ifthenelse{\equal{\@gls@elem}{#2}}{\@endfortrue}{}}%
+ \if@endfor
+ \else
+ \GlossariesWarningNoLine{Navigation panel
+ for glossary type `#1'^^Jmissing group `#2'}%
+ \gdef\gls@hypergrouprerun{%
+ \GlossariesWarningNoLine{Navigation panel
+ has changed. Rerun LaTeX}}%
+ \fi
+}
+\let\gls@hypergrouprerun\relax
+\AtEndDocument{\gls@hypergrouprerun}
+\newcommand*{\@gls@hypergroup}[2]{%
+ \ifcsdef{@gls@hypergrouplist@#1}%
+ {\protected@csxappto{@gls@hypergrouplist@#1}{,#2}}%
+ {\protected@csxdef{@gls@hypergrouplist@#1}{#2}}%
+}
+\newcommand*{\glsnavigation}{%
+ \def\@gls@between{}%
+ \ifcsundef{@gls@hypergrouplist@\currentglossary}%
+ {%
+ \def\@gls@list{}%
+ }%
+ {%
+ \letcs\@gls@list{@gls@hypergrouplist@\currentglossary}%
+ }%
+ \@for\@gls@tmp:=\@gls@list\do{%
+ \@gls@between
+ \@gls@getgrouptitle{\@gls@tmp}{\@gls@grptitle}%
+ \expandafter\glsnavhyperlink\expandafter{\@gls@tmp}{\@gls@grptitle}%
+ \let\@gls@between\glshypernavsep
+ }%
+}
+\newcommand*{\glshypernavsep}{\space\textbar\space}
+\newcommand*{\glssymbolnav}{%
+ \glsnavhyperlink{glssymbols}{\glsgetgrouptitle{glssymbols}}%
+ \glshypernavsep
+ \glsnavhyperlink{glsnumbers}{\glsgetgrouptitle{glsnumbers}}%
+ \glshypernavsep
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-hypernav-2022-11-03.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
%<*example-glossaries-acronym-desc.tex>
% \end{macrocode}
%\fi
@@ -55001,6 +62829,132 @@ amet, libero},
%\fi
%\iffalse
% \begin{macrocode}
+%<*example-glossaries-utf8.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+% This file is part of the glossaries bundle
+% These are test glossary entries containing UTF-8 characters
+% in the label and name with brief descriptions.
+%COMMENT
+
+\newglossaryentry{lórem}{name={lórem},description={ipsum}}
+
+\newglossaryentry{ðolor}{name={ðolor},description={sit}}
+
+\newglossaryentry{amèt}{name={amèt},description={consectetuer}}
+
+\newglossaryentry{ádipiscing}{name={ádipiscing},description={elit}}
+
+\newglossaryentry{üt}{name={üt},description={purus}}
+
+\newglossaryentry{ełit}{name={ełit},description={vestibulum}}
+
+\newglossaryentry{placeràt}{name={placeràt},description={ac}}
+
+\newglossaryentry{vitæ}{name={vitæ},description={felis}}
+
+\newglossaryentry{curabítur}{name={curabítur},description={gravida}}
+
+\newglossaryentry{maüris}{name={maüris},description={nam}}
+
+\newglossaryentry{arçu}{name={arçu},description={libero}}
+
+\newglossaryentry{nonummÿ}{name={nonummÿ},description={eget}}
+
+\newglossaryentry{çonsectetuer}{name={çonsectetuer},description={id}}
+
+\newglossaryentry{vulputâte}{name={vulputâte},description={a magna}}
+
+\newglossaryentry{donéc}{name={donéc},description={vehicula}}
+
+\newglossaryentry{aügue}{name={aügue},description={eu neque}}
+
+\newglossaryentry{pellentesqué}{name={pellentesqué},description={habitant}}
+
+\newglossaryentry{morbí}{name={morbí},description={tristique}}
+
+\newglossaryentry{sénectus}{name={sénectus},description={et netus}}
+
+\newglossaryentry{ét}{name={ét},description={malesuada}}
+
+\newglossaryentry{famés}{name={famés},description={ac}}
+
+\newglossaryentry{türpis}{name={türpis},description={egestas}}
+
+\newglossaryentry{léo}{name={léo},description={cras}}
+
+\newglossaryentry{vîverra}{name={vîverra},description={metus}}
+
+\newglossaryentry{rhonçus}{name={rhonçus},description={sem}}
+
+\newglossaryentry{nullá}{name={nullá},description={et}}
+
+\newglossaryentry{lectùs}{name={lectùs},description={vestibulum}}
+
+\newglossaryentry{ürna}{name={ürna},description={fringilla}}
+
+\newglossaryentry{ultrïces}{name={ultrïces},description={phasellus}}
+
+\newglossaryentry{eû}{name={eû},description={tellus}}
+
+\newglossaryentry{sït}{name={sït},description={amet}}
+
+\newglossaryentry{tôrtor}{name={tôrtor},description={gravida}}
+
+\newglossaryentry{intéger}{name={intéger},description={sapien}}
+
+\newglossaryentry{ést}{name={ést},description={iaculis}}
+
+\newglossaryentry{ïn}{name={ïn},description={pretium}}
+
+\newglossaryentry{quiß}{name={quiß},description={viverra}}
+
+\newglossaryentry{aç}{name={aç},description={nunc}}
+
+\newglossaryentry{præsent}{name={præsent},description={eget}}
+
+\newglossaryentry{sêm}{name={sêm},description={vel leo}}
+
+\newglossaryentry{bîbendum}{name={bîbendum},description={ultrices}}
+
+\newglossaryentry{ænean}{name={ænean},description={faucibus}}
+
+\newglossaryentry{mælesuada}{name={mælesuada},description={eu}}
+
+\newglossaryentry{pülvinar}{name={pülvinar},description={at}}
+
+\newglossaryentry{mollïs}{name={mollïs},description={ac nulla}}
+
+\newglossaryentry{áuctor}{name={áuctor},description={semper}}
+
+\newglossaryentry{variüs}{name={variüs},description={orci}}
+
+\newglossaryentry{éget}{name={éget},description={risus}}
+
+\newglossaryentry{duïs}{name={duïs},description={nibh}}
+
+\newglossaryentry{mï}{name={mï},description={congue}}
+
+\newglossaryentry{accumsàn}{name={accumsàn},description={eleifend}}
+
+\newglossaryentry{sagittïs}{name={sagittïs},description={quis}}
+
+\newglossaryentry{dïam}{name={dïam},description={duis}}
+
+\newglossaryentry{orçi}{name={orçi},description={dignissim}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-utf8.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
%<*glossaries.l2h>
% \end{macrocode}
%\fi