summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/glossaries/glossaries.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-10-18 03:01:49 +0000
committerNorbert Preining <norbert@preining.info>2022-10-18 03:01:49 +0000
commit0b311348359e1406b173d9c0de4974af3e90f836 (patch)
treed054509baef05d9c3f452f88e3a011219350d9cf /macros/latex/contrib/glossaries/glossaries.dtx
parent95ebee51840c21223810acf500805000a2c5c0df (diff)
CTAN sync 202210180301
Diffstat (limited to 'macros/latex/contrib/glossaries/glossaries.dtx')
-rw-r--r--macros/latex/contrib/glossaries/glossaries.dtx27741
1 files changed, 21745 insertions, 5996 deletions
diff --git a/macros/latex/contrib/glossaries/glossaries.dtx b/macros/latex/contrib/glossaries/glossaries.dtx
index 5c71fbc95a..1d44c808c2 100644
--- a/macros/latex/contrib/glossaries/glossaries.dtx
+++ b/macros/latex/contrib/glossaries/glossaries.dtx
@@ -1,29 +1,30 @@
%\iffalse
% glossaries.dtx generated using makedtx version 1.2 (c) Nicola Talbot
% Command line args:
-% -comment ".*\.perl"
+% -section "section"
+% -author "Nicola Talbot"
+% -setambles ".*\.tex=>\nopreamble\nopostamble"
+% -setambles ".*\.l2h=>\nopreamble\nopostamble"
% -comment ".*\.tex"
-% -src "glossaries\.sty\Z=>glossaries.sty"
-% -src "glossaries-prefix.sty\Z=>glossaries-prefix.sty"
-% -src "(glossary-.+)\.(sty)\Z=>\1.\2"
-% -src "(glossaries-compatible-207)\.(sty)\Z=>\1.\2"
-% -src "(glossaries-compatible-307)\.(sty)\Z=>\1.\2"
-% -src "(glossaries-accsupp)\.(sty)\Z=>\1.\2"
-% -src "(glossaries-babel)\.(sty)\Z=>\1.\2"
-% -src "(glossaries-polyglossia)\.(sty)\Z=>\1.\2"
+% -comment ".*\.l2h"
+% -doc "glossaries-manual.tex"
+% -codetitle "Main Package Code (glossaries.sty)"
+% -src "(glossaries\.sty)\Z=>\1"
+% -src "(glossary-[a-z]+\.sty)\Z=>\1"
+% -src "(glossaries-babel\.sty)\Z=>\1"
+% -src "(glossaries-polyglossia\.sty)\Z=>\1"
+% -src "(glossaries-prefix.sty)\Z=>\1"
+% -src "(glossaries-accsupp\.sty)\Z=>\1"
+% -src "(glossaries-compatible-207\.sty)\Z=>\1"
+% -src "(glossaries-compatible-307\.sty)\Z=>\1"
+% -src "(glossar.*-2020-03-19\.sty)\Z=>\1"
+% -src "(glossar.*-2021-11-01\.sty)\Z=>\1"
% -src "(example-glossaries-.*\.tex)\Z=>\1"
-% -src "(glossaries-2020-03-19\.sty)\Z=>\1"
-% -src "(.*\.perl)\Z=>\1"
-% -codetitle "Main Package Code"
-% -macrocode ".*\.perl"
+% -src "(glossaries\.l2h)\Z=>\1"
% -macrocode ".*\.tex"
-% -author "Nicola Talbot"
-% -doc "glossaries-manual.tex"
-% -setambles ".*\.perl=>\nopreamble\nopostamble"
-% -setambles ".*\.tex=>\nopreamble\nopostamble"
-% -section "chapter"
+% -macrocode ".*\.l2h"
% glossaries
-% Created on 2021/11/1 18:45
+% Created on 2022/10/17 16:00
%\fi
%\iffalse
%<*package>
@@ -46,133 +47,87 @@
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
-% Copyright (C) 2021 Nicola Talbot, all rights reserved.
+% Copyright (C) 2022 Nicola Talbot, all rights reserved.
% \fi
% \iffalse
%<*driver>
-\documentclass[report]{nlctdoc}
-
-\DeleteShortVerb{|}
-
\iffalse
glossaries-manual.tex is a stub file used by makedtx to create
glossaries.dtx
\fi
-\usepackage{alltt}
-\usepackage{pifont}
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage[colorlinks,
- bookmarks,
- hyperindex=false,
- pdfauthor={Nicola L.C. Talbot},
- pdftitle={glossaries.sty: LaTeX2e Package to Assist Generating Glossaries},
- pdfkeywords={LaTeX,package,glossary,acronyms}]{hyperref}
-\usepackage{glossaries-extra}
-
-\RecordChanges
-\setlength\IndexMin{100pt}
-
-\makeglossaries
+\documentclass{article}
-\renewcommand*{\main}[1]{\underline{\hyperpage{#1}}}
-\renewcommand*{\usage}[1]{\textit{\hyperpage{#1}}}
-\newcommand*{\htextbf}[1]{\textbf{\hyperpage{#1}}}
-\newcommand*{\itermdef}[1]{\index{#1|htextbf}}
-
-\newglossaryentry{xindy}{
- name={\appfmt{xindy}\index{xindy|htextbf}},
- sort={xindy},
- text={\protect\app{xindy}},
- description={An flexible indexing application with multilingual
- support written in Perl}
-}
-
-\newglossaryentry{makeindex}{%
- name={\appfmt{makeindex}\index{makeindex|htextbf}},%
- sort={makeindex},%
- text={\protect\app{makeindex}},%
- description={An indexing application},
-}
-
-\let\glsd\glsuseri
-\let\glsation\glsuserii
-
-\newglossaryentry{firstuse}{%
- name={First use\ifirstuse},
- sort={first use},%
- text={first use},%
- user1={first used},
- description={The first time a glossary entry is used (from the start
- of the document or after a reset) with one of the
- following commands: \ics{gls}, \ics{Gls}, \ics{GLS}, \ics{glspl},
- \ics{Glspl}, \ics{GLSpl} or \ics{glsdisp}.
- \glsseeformat{firstuseflag,firstusetext}{}\nopostdesc}%
-}
-
-\newglossaryentry{firstuseflag}{%
-name={First use flag\ifirstuseflag},
-sort={first use flag},%
-text={first use flag},%
-description={A conditional that determines whether or not the entry
-has been used according to the rules of \gls{firstuse}}%
-}
-
-\newglossaryentry{firstusetext}{%
-name={First use text\ifirstusetext},
-sort={first use text},%
-text={first use text},%
-description={The text that is displayed on \gls{firstuse}, which is
-governed by the \gloskey{first} and \gloskey{firstplural} keys of
-\ics{newglossaryentry}. (May be overridden by
-\ics{glsdisp}.)\nopostdesc}%
-}
-
-\doxitem{Option}{option}{package options}
-\doxitem{GlsKey}{key}{glossary keys}
-\doxitem{Style}{style}{glossary styles}
-\doxitem{Counter}{counter}{glossary counters}
-\doxitem{AcrStyle}{acrstyle}{acronym styles}
+\usepackage{doc}
+\CheckSum{58550}
+\RecordChanges
+\PageIndex
+\SetupDoc{reportchangedates}
\setcounter{IndexColumns}{2}
-\CheckSum{34319}
-
-\newcommand*{\ifirstuse}{\iterm{first use}}
-\newcommand*{\firstuse}{\gls{firstuse}}
-\newcommand*{\firstuseflag}{\gls{firstuseflag}}
-\newcommand*{\firstusetext}{\gls{firstusetext}}
-
-\newcommand*{\ifirstuseflag}{\iterm{first use>flag}}
-\newcommand*{\ifirstusetext}{\iterm{first use>text}}
-
-\newcommand*{\istkey}[1]{\appfmt{#1}\index{makeindex=\appfmt{makeindex}>#1=\texttt{#1}|hyperpage}}
-\newcommand*{\locfmt}[1]{\texttt{#1}\SpecialMainIndex{#1}}
-\newcommand*{\mkidxspch}{\index{makeindex=\appfmt{makeindex}>special characters|hyperpage}}
-
-\newcommand*{\igloskey}[2][newglossaryentry]{\icsopt{#1}{#2}}
-\newcommand*{\gloskey}[2][newglossaryentry]{\csopt{#1}{#2}}
-
-\newcommand*{\glostyle}[1]{\textsf{#1}\index{glossary styles:>#1={\protect\ttfamily#1}|main}}
-
+\usepackage[T1]{fontenc}
+\usepackage{tcolorbox}
+
+\definecolor{defbackground}{rgb}{1,1,0.75}
+
+\newtcolorbox{definition}{halign=flush left,
+ colframe=black,colback=defbackground,
+ fontupper=\ttfamily,
+ before upper={\frenchspacing\obeylines},
+ after={\par\noindent\ignorespacesafterend}
+}
+
+\NewDocElement{Option}{option}
+\NewDocElement{AcrStyle}{acrstyle}
+\NewDocElement{Style}{style}
+\NewDocElement{Counter}{counter}
+\NewDocElement{Key}{key}
+
+\newcommand{\sty}[1]{\textsf{#1}}
+\newcommand{\cls}[1]{\textsf{#1}}
+\newcommand{\app}[1]{\texttt{#1}}
+\newcommand{\ctr}[1]{\textsf{#1}}
+\newcommand{\env}[1]{\textsf{#1}}
+\newcommand{\glostyle}[1]{\textsf{#1}}
+\newcommand{\pkgoptfmt}[1]{\textsf{#1}}
+\newcommand{\pkgopt}[2][]{\pkgoptfmt{#2\ifstrempty{#1}{}{=#1}}}
+\newcommand{\gloskey}[2][]{\textsf{#2}}
+\newcommand{\filetype}[1]{\texttt{#1}}
+\newcommand{\istkey}[1]{\texttt{#1}}
+\newcommand{\term}[1]{\emph{#1}}
+\newcommand{\qt}[1]{``#1''}
+
+\providecommand\marg[1]{%
+ \texorpdfstring{\allowbreak{\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
+ {\{#1\}}}
+\providecommand\oarg[1]{%
+ \texorpdfstring{\allowbreak{\ttfamily[}\meta{#1}{\ttfamily]}}
+ {[#1]}}
+
+\providecommand\parg[1]{\texorpdfstring{(\meta{#1})}{(#1)}}
\begin{document}
\DocInput{glossaries.dtx}
\end{document}
%</driver>
%\fi
+%\DeleteShortVerb{|}
%\MakeShortVerb{"}
%
-% \title{Documented Code For glossaries v4.49}
+% \title{Documented Code For glossaries v4.50}
% \author{Nicola L.C. Talbot\\[10pt]
%Dickimaw Books\\
%\url{http://www.dickimaw-books.com/}}
%
-% \date{2021-11-01}
+% \date{2022-10-14}
% \maketitle
%
-%This is the documented code for the \styfmt{glossaries} package.
+%\tableofcontents
+%
+%\section{Introduction}
+%
+%This is the documented code for the \sty{glossaries} package.
%This bundle comes with the following documentation:
%\begin{description}
%\item[\url{glossariesbegin.pdf}]
@@ -185,7 +140,7 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of
%glossaries package}.
%
%\item[\url{glossaries-user.pdf}]
-%For the main user guide, read \qt{glossaries.sty v4.49:
+%For the main user guide, read \qt{glossaries.sty v4.50:
%\LaTeX2e\ Package to Assist Generating Glossaries}.
%
%\item[\url{mfirstuc-manual.pdf}]
@@ -194,7 +149,7 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of
%
%\item[glossaries-code.pdf]
%This document is for advanced users wishing to know more about the
-%inner workings of the \styfmt{glossaries} package.
+%inner workings of the \sty{glossaries} package.
%
%\item[INSTALL] Installation instructions.
%
@@ -205,7 +160,7 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of
%\end{description}
%
%The user level commands described in the user manual
-%(glossaries-user.pdf) may be considered ``future-proof''. Even if
+%(glossaries-user.pdf) may be considered \qt{future-proof}. Even if
%they become deprecated, they should still work for
%old documents (although they may not work in a document that also
%contains new commands introduced since the old commands were
@@ -216,39 +171,38 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of
%change. If you want a new user level command, you can post a feature
%request at \url{http://www.dickimaw-books.com/feature-request.html}.
%If you are a package writer wanting to integrate your package with
-%\styfmt{glossaries}, it's better to request a new user level command
+%\sty{glossaries}, it's better to request a new user level command
%than to hack these internals.
%
-%\tableofcontents
-%
%\StopEventually{%
-% \printglossaries
+% \clearpage
% \PrintChanges
+% \clearpage
% \PrintIndex
%}
%
%
%
-%\chapter{Main Package Code}
+%\section{Main Package Code (glossaries.sty)}
%\iffalse
% \begin{macrocode}
%<*glossaries.sty>
% \end{macrocode}
%\fi
%\label{sec:code}
-% \section{Package Definition}
-% This package requires \LaTeXe.
+%\subsection{Package Definition}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
% \end{macrocode}
% Rollback releases:
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-2020-03-19.sty}
-\DeclareCurrentRelease{v4.49}{2021-11-01}
+\DeclareRelease{v4.49}{2021-11-01}{glossaries-2021-11-01.sty}
+\DeclareCurrentRelease{v4.50}{2022-10-14}
% \end{macrocode}
% Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossaries}[2021/11/01 v4.49 (NLCT)]
+\ProvidesPackage{glossaries}[2022/10/14 v4.50 (NLCT)]
% \end{macrocode}
%\changes{4.18}{2015-09-09}{split mfirstuc into separate bundle}
% Required packages:
@@ -257,13 +211,123 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of
\RequirePackage{xkeyval}[2006/11/18]
\RequirePackage{mfirstuc}
% \end{macrocode}
+%\begin{macro}{\glssentencecase}
+%\changes{4.50}{2022-10-14}{new}
+%Provided to allow user to switch to \cs{MFUsentencecase} if
+%preferred. Don't redefine \cs{glsmakefirstuc} to \cs{makefirstuc}
+%as it will result in infinite recursion.
+% \begin{macrocode}
+\newcommand{\glssentencecase}[1]{\makefirstuc{#1}}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%\begin{macro}{\glslowercase}
+%\changes{4.50}{2022-10-14}{new}
+%Provided to make it easier for user to use \LaTeX3 lowercase
+%command without switching to exp3 syntax. For example, to redefine
+%\cs{acronymfont} to automatically convert to lowercase.
+% \begin{macrocode}
+\newcommand{\glslowercase}[1]{\text_lowercase:n{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsuppercase}
+%\changes{4.50}{2022-10-14}{new}
+%Note that this isn't using \cs{mfirstucMakeUppercase}, which will be
+%defined to use the robust \cs{MakeUppercase} if an old version of
+%\sty{mfirstuc} is installed.
+% \begin{macrocode}
+\newcommand{\glsuppercase}[1]{\text_uppercase:n{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%Check if we have \sty{mfirstuc} v2.08+. In which case, don't
+%redefine \cs{mfirstucMakeUppercase}. Since \cs{MFUsentencecase} was
+%new in v2.08, the simplest check is to test for the existence of that
+%command.
+% \begin{macrocode}
+\ifdef\MFUsentencecase
+{%
+% \end{macrocode}
+% Automatically identify exclusions, blockers and mappings.
+%\begin{macro}{\glsmfuexcl}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand{\glsmfuexcl}[1]{\MFUexcl{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsmfublocker}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand{\glsmfublocker}[1]{\MFUblocker{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsmfuaddmap}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+ \newcommand{\glsmfuaddmap}[2]{\MFUaddmap{#1}{#2}}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+}
+{
+% \end{macrocode}
%\changes{3.11a}{2013-10-15}{Now requires textcase}
-% The \sty{textcase} package has much better case changing handling,
-% so use \cs{MakeTextUppercase} instead of \cs{MakeUppercase}
+%\changes{4.50}{2022-10-14}{No longer requires textcase with mfirstuc 2.08+}
+% The \sty{textcase} package is now deprecated, so only load it with
+% old versions of \sty{mfirstuc}. (From 2022, \sty{textcase} simply defines
+% \cs{MakeTextUppercase} to \cs{MakeUppercase}.)
% \begin{macrocode}
-\RequirePackage{textcase}
-\renewcommand*{\mfirstucMakeUppercase}{\MakeTextUppercase}%
+ \RequirePackage{textcase}
+% \end{macrocode}
+%Provide \cs{MFUsentencecase} for use where expandable contexts are
+%required.
+%\begin{macro}{\MFUsentencecase}
+% \begin{macrocode}
+ \providecommand{\MFUsentencecase}[1]{\text_titlecase_first:n{#1}}
% \end{macrocode}
+%\end{macro}
+%Provide support for exclusions with \cs{MFUsentencecase}.
+%\begin{macro}{\glsmfuexcl}
+% \begin{macrocode}
+ \providecommand{\glsmfuexcl}[1]{
+ \tl_if_in:NnF \l_text_case_exclude_arg_tl {#1}
+ {
+ \tl_put_right:Nn \l_text_case_exclude_arg_tl {#1}
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\mfirstucMakeUppercase}
+%We have an old version of \sty{mfirstuc} that is still using this
+%command in the definition of \cs{makefirstuc}, in which case,
+%continue to use \cs{MakeTextUppercase} as in previous versions, in
+%case there is also an old version of \sty{textcase} installed.
+%However, note that the all-caps commands like \cs{GLS} now use
+%\cs{glsuppercase} instead.
+% \begin{macrocode}
+ \renewcommand*{\mfirstucMakeUppercase}{\MakeTextUppercase}
+% \end{macrocode}
+%\end{macro}
+%Just treat blockers and mappings as exclusions.
+%\begin{macro}{\glsmfublocker}
+% \begin{macrocode}
+ \newcommand{\glsmfublocker}[1]{\glsmfuexcl{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsmfuaddmap}
+% \begin{macrocode}
+ \newcommand{\glsmfuaddmap}[2]{\glsmfuexcl{#1}\glsmfublocker{#2}}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+}
+\ExplSyntaxOff
+% \end{macrocode}
+%
% \begin{macrocode}
\RequirePackage{xfor}
% \end{macrocode}
@@ -274,8 +338,8 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of
% \end{macrocode}
%\changes{1.1}{2008-02-22}{amsgen now loaded (\cs{new@ifnextchar} needed)}
% Need to use \cs{new@ifnextchar} instead of \cs{@ifnextchar} in
-% commands that have a final optional argument (such as \ics{gls})
-% so require \isty{amsgen}.
+% commands that have a final optional argument (such as \cs{gls})
+% so require \sty{amsgen}.
% Thanks to Morten~H\o gholm for suggesting this. (This has
% replaced using the \sty{xspace} package.)
% \begin{macrocode}
@@ -343,7 +407,7 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of
\fi
% \end{macrocode}
%
-% \section{Package Options}\label{sec:pkgopt}
+%\subsection{Package Options}\label{sec:pkgopt}
%\begin{option}{debug}
%\changes{4.24}{2016-05-27}{new}
% Switch on debug mode. This will also cancel the \pkgopt{nowarn}
@@ -406,15 +470,10 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of
% \begin{macrocode}
\newcommand*{\glsshowtarget}[1]{%
\ifmmode
- \nfss@text{\glsshowtargetfont [#1]}%
+ \glsshowtargetinner{#1}%
\else
\ifinner
-% \end{macrocode}
-% Grouping no longer required as new \cs{@@glsshowtarget} adds
-% scoping but retained here in case any existing documents are using
-% \cs{glsshowtarget} elsewhere.
-% \begin{macrocode}
- {\glsshowtargetfont [#1]}%
+ \glsshowtargetinner{#1}%
\else
\glsshowtargetouter{#1}%
\fi
@@ -422,6 +481,25 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of
}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\glsshowtargetfonttext}
+%\changes{4.50}{2022-10-14}{new}
+%Text-block command that checks for math-mode.
+% \begin{macrocode}
+\newcommand*{\glsshowtargetfonttext}[1]{%
+ \ifmmode \nfss@text{\glsshowtargetfont #1}\else {\glsshowtargetfont #1}\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsshowtargetinner}
+%\changes{4.50}{2022-10-14}{new}
+% Grouping no longer required as new \cs{@@glsshowtarget} adds
+% scoping but retained here in case any existing documents are using
+% \begin{macrocode}
+\newcommand*{\glsshowtargetinner}[1]{\glsshowtargetfonttext{[#1]}}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsshowtargetouter}
%\changes{4.45}{2020-02-13}{new}
% \begin{macrocode}
@@ -452,6 +530,14 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsdoshowtarget}
+%\changes{4.50}{2022-10-14}{new}
+%Make it easier to customise.
+% \begin{macrocode}
+\newcommand*{\glsdoshowtarget}[2]{\@glsshowtarget{#1}#2}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@@glsshowtarget}
%\changes{4.45}{2020-02-13}{new}
%Need to detokenize the label in the event that it contains awkward
@@ -576,7 +662,7 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of
% The starred form of the named sectional unit will be used.
% If you want some other way to start the glossary section (e.g.\
% a numbered section) you will have to redefined
-% \ics{glossarysection}.
+% \cs{glossarysection}.
% \begin{macrocode}
\define@choicekey{glossaries.sty}{section}{part,chapter,section,%
subsection,subsubsection,paragraph,subparagraph}[section]{%
@@ -634,7 +720,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% The default glossary style is stored in
% \cs{@glossary@default@style}. This is initialised to
% \texttt{list}. (The \glostyle{list} style is
-% defined in the accompanying \isty{glossary-list} package
+% defined in the accompanying \sty{glossary-list} package
% described in \autoref{sec:code:styles}.) Note that the
% \glostyle{list} style is incompatible with \sty{classicthesis}
% so change the default to \glostyle{index} if that package has been
@@ -733,18 +819,20 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{option}
%
%\begin{option}{esclocations}
-% When using \gls{makeindex} or \gls{xindy}, the locations may need
+% When using \app{makeindex} or \app{xindy}, the locations may need
% to be adjusted to ensure they're in a format that's allowed by the
% indexing application. This involves a bit of hackery and isn't
% needed if the locations are all guaranteed to be in the correct
% form (or if the user is prepared to post-process the glossary file before
-% calling the relevant indexing application) so \pkgopt[false]{esclocations}
+% calling the relevant indexing application, which
+% \app{makeglossaries} can do) so \pkgopt[false]{esclocations}
% will switch off this mechanism allowing for a faster and more
-% stable approach.
+% stable approach. As from v4.50, the default is now false.
%\changes{4.33}{2017-09-20}{new}
+%\changes{4.50}{2022-10-14}{default now false}
% \begin{macrocode}
\define@boolkey{glossaries.sty}[gls]{esclocations}[true]{}
-\glsesclocationstrue
+\glsesclocationsfalse
% \end{macrocode}
%\end{option}
%
@@ -756,7 +844,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%\begin{option}{nolong}
%\changes{1.18}{2009-01-14}{new}
-% This option prevents \isty{glossary-long} from being loaded.
+% This option prevents \sty{glossary-long} from being loaded.
% This means that the glossary styles that use the
% \env{longtable} environment will not be available. This option
% is provided to reduce overhead caused by loading unrequired
@@ -768,17 +856,24 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{macro}{\@gls@loadsuper}
%\changes{1.18}{2009-01-14}{new}
-% The \isty{glossary-super} package isn't loaded if
-% \isty{supertabular} isn't installed.
+% The \sty{glossary-super} package isn't loaded if
+% \sty{supertabular} isn't installed.
% \begin{macrocode}
\IfFileExists{supertabular.sty}{%
\newcommand*{\@gls@loadsuper}{\RequirePackage{glossary-super}}}{%
\newcommand*{\@gls@loadsuper}{}}
% \end{macrocode}
%\end{macro}
+%Don't load super styles if \sty{xtab} has been loaded as it causes
+%a conflict.
+%\changes{4.50}{2022-10-14}{don't load \sty{glossary-super} if \sty{xtab}
+%has been loaded}
+% \begin{macrocode}
+\@ifpackageloaded{xtab}{\renewcommand*{\@gls@loadsuper}{}}{}
+% \end{macrocode}
%\begin{option}{nosuper}
%\changes{1.18}{2009-01-14}{new}
-% This option prevents \isty{glossary-super} from being loaded.
+% This option prevents \sty{glossary-super} from being loaded.
% This means that the glossary styles that use the
% \env{supertabular} environment will not be available. This option
% is provided to reduce overhead caused by loading unrequired
@@ -796,9 +891,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%\begin{option}{nolist}
%\changes{1.18}{2009-01-14}{new}
-% This option prevents \isty{glossary-list} from being loaded
+% This option prevents \sty{glossary-list} from being loaded
% (to reduce overheads if required). Naturally, the styles defined
-% in \isty{glossary-list} will not be available if this option
+% in \sty{glossary-list} will not be available if this option
% is used. If the style is still set to \glostyle{list}, the default
% must be set to \cs{relax}.
%\changes{4.31}{2017-08-10}{added check for \qt{list} style}
@@ -821,9 +916,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%\begin{option}{notree}
%\changes{1.18}{2009-01-14}{new}
-% This option prevents \isty{glossary-tree} from being loaded
+% This option prevents \sty{glossary-tree} from being loaded
% (to reduce overheads if required). Naturally, the styles defined
-% in \isty{glossary-tree} will not be available if this option
+% in \sty{glossary-tree} will not be available if this option
% is used.
% \begin{macrocode}
\@gls@declareoption{notree}{\renewcommand*{\@gls@loadtree}{}}
@@ -879,7 +974,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{option}{ucmark}
% Boolean option to determine whether or not to use
-% use upper case in definition of \ics{glsglossarymark}
+% use upper case in definition of \cs{glsglossarymark}
%\changes{3.02}{2012-05-21}{new}
% \begin{macrocode}
\define@boolkey{glossaries.sty}[gls]{ucmark}[true]{}
@@ -1005,6 +1100,16 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{option}
%
+%\begin{macro}{\glsindexingsetting}
+%\changes{4.50}{2022-10-14}{new}
+%Provide a way of finding out what the current indexing setting is.
+%This won't pick up the noidx option until \cs{makenoidxglossaries}
+%is encountered.
+% \begin{macrocode}
+\newcommand{\glsindexingsetting}{\ifglsxindy xindy\else makeindex\fi}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@glo@default@sorttype}
% Initialise default sort for \cs{printnoidxglossary}
% \begin{macrocode}
@@ -1014,12 +1119,13 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{option}{sort}
%\changes{3.0}{2011-04-02}{new}
+%\changes{4.50}{2022-10-14}{added clear}
% Define the sort method: \pkgopt[standard]{sort} (default),
% \pkgopt[def]{sort} (order of definition) or
% \pkgopt[use]{sort} (order of use). If no indexing required, use
-% \pkgopt[none]{sort}.
+% \pkgopt[none]{sort} or \pkgopt[clear]{sort}.
% \begin{macrocode}
-\define@choicekey{glossaries.sty}{sort}{standard,def,use,none}{%
+\define@choicekey{glossaries.sty}{sort}{standard,def,use,none,clear}{%
\renewcommand*{\@glo@default@sorttype}{#1}%
\csname @gls@setupsort@#1\endcsname
}
@@ -1034,7 +1140,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Allow user to hook into sort mechanism. The first argument
% \meta{sort cs} is the temporary control sequence containing the
% sort value before it has been sanitized and had
-% \gls{makeindex}\slash\gls{xindy} special characters escaped.
+% \app{makeindex}\slash\app{xindy} special characters escaped.
% \begin{macrocode}
\newcommand*{\glsprestandardsort}[3]{%
\glsdosanitizesort
@@ -1229,6 +1335,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% required.
% \begin{macrocode}
\newcommand*{\@gls@setupsort@none}{%
+ \def\glsindexingsetting{none}%
% \end{macrocode}
% Don't store entry index information.
% \begin{macrocode}
@@ -1258,11 +1365,44 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@gls@setupsort@clear}
+%\changes{4.50}{2022-10-14}{new}
+% Like sort=none but sets the sort value to empty.
+% \begin{macrocode}
+\newcommand*{\@gls@setupsort@clear}{%
+ \def\glsindexingsetting{none}%
+% \end{macrocode}
+% Don't store entry index information.
+% \begin{macrocode}
+ \def\do@glo@storeentry##1{}%
+% \end{macrocode}
+% No count register required for standard sort.
+% \begin{macrocode}
+ \def\@gls@defsortcount##1{}%
+% \end{macrocode}
+% Clear sort value.
+% \begin{macrocode}
+ \def\@gls@defsort##1##2{\csgdef{glo@##2@sort}{}}%
+% \end{macrocode}
+% Don't need to do anything when the entry is used.
+% \begin{macrocode}
+ \def\@gls@setsort##1{}%
+% \end{macrocode}
+% This sort option isn't allowed with \cs{makeglossaries} or
+% \cs{makenoidxglossaries}.
+% \begin{macrocode}
+ \renewcommand\@glo@check@sortallowed[1]{\PackageError{glossaries}
+ {Option sort=clear not allowed with \string##1}%
+ {(Use sort=def instead)}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsdefmain}
%\changes{2.01}{2009 May 30}{new}
%\changes{3.04}{2012-11-18}{added check for doc package}
% Define the main glossary. This will be the first glossary to
-% be displayed when using \ics{printglossaries}. The default
+% be displayed when using \cs{printglossaries}. The default
% extensions conflict if used with \sty{doc}, so provide different
% extensions if \sty{doc} loaded. (If these extensions are
% inappropriate, use \pkgopt{nomain} and manually define the main
@@ -1290,9 +1430,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% you want to make a secondary glossary the main glossary. This
% affects any commands that can optionally take a glossary name
% as an argument (or as the value of the
-% \gloskey{type}\igloskey[printglossary]{type} key in
+% \gloskey{type} key in
%a key-value list). This was mainly done so that
-% \ics{loadglsentries} can temporarily change
+% \cs{loadglsentries} can temporarily change
% \cs{glsdefaulttype} while it loads a file containing
% new glossary entries (see \autoref{sec:load}).
%\begin{macro}{\glsdefaulttype}
@@ -1348,17 +1488,13 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{option}
%\begin{macro}{\printacronyms}
% Define \cs{printacronyms} at the start of the document if
-% \pkgopt{acronym} is set and compatibility mode isn't on and
+% \pkgopt{acronym} is set and
% \cs{printacronyms} hasn't already been defined.
% \begin{macrocode}
\AtBeginDocument{%
\ifglsacronym
- \ifbool{glscompatible-3.07}%
- {}%
- {%
- \providecommand*{\printacronyms}[1][]{%
- \printglossary[type=\acronymtype,#1]}%
- }%
+ \providecommand*{\printacronyms}[1][]{%
+ \printglossary[type=\acronymtype,#1]}%
\fi
}
% \end{macrocode}
@@ -1399,8 +1535,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\@glsacronymlists}
%\changes{2.04}{2009-11-10}{new}
% Comma-separated list of glossary labels indicating which
-% glossaries contain acronyms. Note that \ics{SetAcronymStyle}
-% must be used after adding labels to this macro.
+% glossaries contain acronyms.
% \begin{macrocode}
\newcommand*{\@glsacronymlists}{}
% \end{macrocode}
@@ -1420,8 +1555,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{2.04}{2009-11-10}{new}%
% Identifies the named glossary as a list of acronyms and adds
% to the list. (Doesn't check if the glossary exists, but checks
-% if label already in list. Use \ics{SetAcronymStyle} after
-% identifying all the acronym lists.)
+% if label already in list.)
% \begin{macrocode}
\newcommand*{\DeclareAcronymList}[1]{%
\glsIfListOfAcronyms{#1}{}{\@addtoacronymlists{#1}}%
@@ -1505,7 +1639,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% is stored in \cs{glscounter}. This is initialised to the
% page counter. This is used as the default counter when a
% new glossary is defined, unless a different counter is specified
-% in the optional argument to \ics{newglossary} (see
+% in the optional argument to \cs{newglossary} (see
% \autoref{sec:newglos}).
%\begin{macro}{\glscounter}
% \begin{macrocode}
@@ -1657,10 +1791,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \pkgopt{sanitizesort} option.
%
%\begin{macro}{\@gls@sanitizedesc}
-% \begin{macrocode}
-\newcommand*{\@gls@sanitizedesc}{%
-}
-% \end{macrocode}
+%\changes{3.08a}{2013-09-28}{deprecated}
+%\changes{4.50}{2022-10-14}{removed}
+%\cs{@gls@sanitizedesc} was deprecated in v3.08a and removed in
+%v4.50.
%\end{macro}
%
%\begin{macro}{\glssetexpandfield}
@@ -1888,6 +2022,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@gls@removedoption}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\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]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
% Before defining the \pkgopt{sanitize} package option, The
% key-value list for the \pkgopt{sanitize} value needs to be defined.
% These are all boolean keys. If they are not given a value, assume
@@ -1954,7 +2099,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{option}
%
%\begin{macro}{\@gls@noidx@setsanitizesort}
-% Default behaviour for \ics{makenoidxglossaries} is
+% Default behaviour for \cs{makenoidxglossaries} is
% sanitizesort=false.
% \begin{macrocode}
\newcommand*{\@gls@noidx@setsanitizesort}{%
@@ -2129,6 +2274,27 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
+%\begin{macro}{\@gls@requested@languages}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\@gls@requested@languages}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{languages}
+%\changes{4.50}{2022-10-14}{new}
+%Identify required languages independently of any language packages
+%and switches off automatic loading of \sty{translator}.
+% \begin{macrocode}
+\define@key{glossaries.sty}{languages}{%
+ \renewcommand{\@gls@requested@languages}{#1}%
+ \glstranslatetrue
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+}
+% \end{macrocode}
+%\end{option}
+%
%\begin{option}{indexonlyfirst}
%\changes{3.02}{2012-05-21}{new}
% Set whether to only index on first use.
@@ -2158,57 +2324,58 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Set the long form of the acronym in footnote on first use.
% \begin{macrocode}
\define@boolkey{glossaries.sty}[glsacr]{footnote}[true]{%
- \ifbool{glsacrdescription}%
- {}%
- {%
- \renewcommand*{\@gls@sanitizedesc}{}%
- }%
- \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+ \ifglsacrfootnote
+ \@gls@removedoption{footnote}%
+ \fi
}
% \end{macrocode}
%\end{option}
%\begin{option}{description}
% Allow acronyms to have a description (needs to be set using
% the \gloskey{description} key in the optional argument of
-% \ics{newacronym}).
+% \cs{newacronym}).
% \begin{macrocode}
\define@boolkey{glossaries.sty}[glsacr]{description}[true]{%
- \renewcommand*{\@gls@sanitizesymbol}{}%
- \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+ \ifglsacrdescription
+ \@gls@removedoption{description}%
+ \fi
}
% \end{macrocode}
%\end{option}
%\begin{option}{smallcaps}
-% Define \ics{newacronym} to set the short form in small capitals.
+% Define \cs{newacronym} to set the short form in small capitals.
% \begin{macrocode}
\define@boolkey{glossaries.sty}[glsacr]{smallcaps}[true]{%
- \renewcommand*{\@gls@sanitizesymbol}{}%
- \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+ \ifglsacrsmallcaps
+ \@gls@removedoption{smallcaps}%
+ \fi
}
% \end{macrocode}
%\end{option}
%\begin{option}{smaller}
-% Define \ics{newacronym} to set the short form using \cs{smaller}
+% Define \cs{newacronym} to set the short form using \cs{smaller}
% which obviously needs to be defined by loading the appropriate
% package.
% \begin{macrocode}
\define@boolkey{glossaries.sty}[glsacr]{smaller}[true]{%
- \renewcommand*{\@gls@sanitizesymbol}{}%
- \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+ \ifglsacrsmaller
+ \@gls@removedoption{smaller}%
+ \fi
}
% \end{macrocode}
%\end{option}
%\begin{option}{dua}
-% Define \ics{newacronym} to always use the long forms
+% Define \cs{newacronym} to always use the long forms
% (i.e.\ don't use acronyms)
% \begin{macrocode}
\define@boolkey{glossaries.sty}[glsacr]{dua}[true]{%
- \renewcommand*{\@gls@sanitizesymbol}{}%
- \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+ \ifglsacrdua
+ \@gls@removedoption{dua}%
+ \fi
}
% \end{macrocode}
%\end{option}
-%\begin{option}{shotcuts}
+%\begin{option}{shortcuts}
% Define acronym shortcuts.
% \begin{macrocode}
\define@boolkey{glossaries.sty}[glsacr]{shortcuts}[true]{}
@@ -2243,8 +2410,8 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{1.17}{2008-12-26}{added xindy support}
%\begin{macro}{\ifglsxindy}
%\changes{1.17}{2008-12-26}{new}
-% Provide boolean to determine whether \gls{xindy} or
-% \gls{makeindex} will be used to sort the glossaries.
+% Provide boolean to determine whether \app{xindy} or
+% \app{makeindex} will be used to sort the glossaries.
% \begin{macrocode}
\newif\ifglsxindy
% \end{macrocode}
@@ -2280,21 +2447,41 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\def\@xdy@main@language{\languagename}%
% \end{macrocode}
%\end{macro}
+%
+%\begin{macro}{\gls@xdy@set@lang}
+%\changes{4.50}{2022-10-14}{new}
+%If the nomain option has been used, need to check
+%\cs{glsdefaulttype} before falling back on main.
+%This will set \cs{@gls@langmod} for the given glossary.
+% \begin{macrocode}
+\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}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
% Define key to set the language
% \begin{macrocode}
\define@key[gls]{xindy}{language}{\def\@xdy@main@language{#1}}
% \end{macrocode}
%
%\begin{macro}{\gls@codepage}
-% Define the code page. If \ics{inputencodingname} is defined
-% use that, otherwise have initialise with no codepage.
+% Define the code page. If \cs{inputencodingname} is defined
+% use that, otherwise initialise to utf8.
%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
%\cs{ifcsundef}}
+%\changes{4.50}{2022-10-14}{set default codepage to utf8 if
+%\cs{inputencodingname} not defined and switched to \cs{ifdefvoid}}
% \begin{macrocode}
-\ifcsundef{inputencodingname}{%
- \def\gls@codepage{}}{%
- \def\gls@codepage{\inputencodingname}
-}
+\ifdefvoid\inputencodingname
+ {\def\gls@codepage{utf8}}%
+ {\def\gls@codepage{\inputencodingname}}
% \end{macrocode}
% Define a key to set the code page.
% \begin{macrocode}
@@ -2338,8 +2525,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{macro}{\@domakeglossaries}
%\changes{4.45}{2020-02-13}{new}
+%\changes{4.50}{2022-10-14}{added check for \cs{nofiles}}
% \begin{macrocode}
-\providecommand{\@domakeglossaries}[1]{#1}
+\providecommand{\@domakeglossaries}[1]{\if@filesw #1\fi}
% \end{macrocode}
%\end{macro}
%
@@ -2490,31 +2678,92 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\gls@automake@makegloss}
+%\changes{4.50}{2022-10-14}{new}
+%Provide a way to allow makeglossaries or makeglossaries-lite run
+%via automake instead of explicit calls to makeindex or xindy.
+% \begin{macrocode}
+\newcommand{\gls@automake@makegloss}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@automake@option}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\gls@automake@option}{automake=\gls@automake@val}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@do@automake@err}
+%\changes{4.50}{2022-10-14}{new}
+%NB \sty{glossaries-extra} v1.14 defines similar command
+%\cs{@gls@doautomake@err}.
+% \begin{macrocode}
+\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.%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
%\begin{option}{automake}
%\changes{4.08}{2014-07-30}{new}
%\changes{4.42}{2019-01-06}{switch from boolean to choice}
+%\changes{4.50}{2022-10-14}{added makegloss and lite options}
% If this setting is on, automatically run
-% \gls{makeindex}\slash\gls{xindy} at the end of the document.
-% Must be used with \ics{makeglossaries}.
+% \app{makeindex}\slash\app{xindy} at the end of the document.
+% Must be used with \cs{makeglossaries}.
% Default is false. As from v4.42, this is now a choice rather than
% boolean key.
% \begin{macrocode}
\define@choicekey{glossaries.sty}{automake}%
- [\gls@automake@val\gls@automake@nr]{true,false,immediate}[true]{%
- \ifnum\gls@automake@nr=1\relax
+ [\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}%
+% \end{macrocode}
+% case 0: true
+% \begin{macrocode}
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{}%
+ \or
+% \end{macrocode}
+% case 1: false
+% \begin{macrocode}
\glsautomakefalse
- \else
+ \renewcommand{\gls@automake@makegloss}{}%
+ \or
+% \end{macrocode}
+% case 2: immediate
+% \begin{macrocode}
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{}%
+ \or
+% \end{macrocode}
+% case 3: makegloss
+% \begin{macrocode}
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{makeglossaries}%
+ \or
+% \end{macrocode}
+% case 4: lite
+% \begin{macrocode}
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{makeglossaries-lite}%
+ \or
+% \end{macrocode}
+% case 5: delayed
+% \begin{macrocode}
+ \def\gls@automake@nr{0}%
\glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{}%
\fi
+ \renewcommand{\gls@automake@option}{automake=\gls@automake@val}%
\ifglsautomake
- \renewcommand*{\@gls@doautomake}{%
- \PackageError{glossaries}{You must use
- \string\makeglossaries\space with automake=true}
- {%
- Either remove the automake=true setting or
- add \string\makeglossaries\space to your document preamble.%
- }%
- }%
+ \let\@gls@doautomake\@gls@do@automake@err
\else
\renewcommand*{\@gls@doautomake}{}%
\fi
@@ -2530,6 +2779,38 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{option}{automakegloss}
+%\changes{4.50}{2022-10-14}{new}
+%Provide a synonym for \pkgopt[makegloss]{automake} that can be
+%passed via the document class options.
+% \begin{macrocode}
+\@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
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{automakeglosslite}
+%\changes{4.50}{2022-10-14}{new}
+%Provide a synonym for \pkgopt[lite]{automake} that can be
+%passed via the document class options.
+% \begin{macrocode}
+\@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
+}
+% \end{macrocode}
+%\end{option}
+%
%\begin{option}{savewrites}
%\changes{3.0}{2011-04-02}{new}
% The \pkgopt{savewrites} package option is provided to save on
@@ -2553,25 +2834,34 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%
%\begin{option}{compatible-3.07}
-%\changes{3.11a}{2013-10-15}{cnew}
+%\changes{3.11a}{2013-10-15}{new}
+%\changes{4.50}{2022-10-14}{deprecated}
+%Rollback should now be used for backward-compatibility.
% \begin{macrocode}
-\define@boolkey{glossaries.sty}[gls]{compatible-3.07}[true]{}
+\define@boolkey{glossaries.sty}[gls]{compatible-3.07}[true]{%
+ \ifbool{glscompatible-3.07}%
+ {%
+ \@gls@removedoption{compatible-3.07}%
+ }%
+ {}%
+}
\boolfalse{glscompatible-3.07}
% \end{macrocode}
%\end{option}
%
%\begin{option}{compatible-2.07}
%\changes{3.0}{2011-04-02}{compatible-2.07 option added}
+%\changes{4.50}{2022-10-14}{deprecated}
+%Rollback should now be used for backward-compatibility.
% \begin{macrocode}
\define@boolkey{glossaries.sty}[gls]{compatible-2.07}[true]{%
% \end{macrocode}
-% Also set 3.07 compatibility if this option is set.
%\changes{3.14a}{2013-11-12}{added check for 2.07 before setting 3.07
%compatibility}
% \begin{macrocode}
\ifbool{glscompatible-2.07}%
{%
- \booltrue{glscompatible-3.07}%
+ \@gls@removedoption{compatible-2.07}%
}%
{}%
}
@@ -2600,20 +2890,11 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% identical to \cs{makeglossaries}. (This is done partly to
% reinforce the message that you must either use
% \cs{@makeglossary} for all the glossaries or for none
-% of them, but is also a legacy from the old \styfmt{glossary} package.)
+% of them, but is also a legacy from the old \sty{glossary} package.)
%\changes{4.41}{2018-07-23}{added warning}
-% \begin{macrocode}
-\def\makeglossary{%
- \GlossariesWarning{Use of \string\makeglossary\space with
- glossaries.sty is \MessageBreak deprecated. Use \string\makeglossaries\space
- instead. If you \MessageBreak need the original definition of
- \string\makeglossary\space use \MessageBreak the package options
- kernelglossredefs=false (to \MessageBreak restore the former definition of
- \string\makeglossary) and \MessageBreak nomain (if the file extensions cause a
- conflict)}%
- \makeglossaries
-}
-% \end{macrocode}
+%As from v4.50 this command will only be redefined if
+%\pkgopt{kernelglossredefs} is used.
+%\changes{4.50}{2022-10-14}{removed}
%\end{macro}
%
%\begin{macro}{\@gls@override@glossary}
@@ -2636,21 +2917,18 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% In v4.10, the redefinition of \cs{glossary} was removed since it
% was never intended as a user level command (and wasn't documented
% in the user manual), however it seems there are packages that have
-% hacked the internal macros used by \styfmt{glossaries} and no longer
+% hacked the internal macros used by \sty{glossaries} and no longer
% work with this redefinition removed, so it's been restored in v4.11
-% but is not used at all by \styfmt{glossaries}.
+% but is not used at all by \sty{glossaries}.
% (This may be removed or moved to a compatibility mode in future.)
% As from v4.41, the use of \cs{glossary} now triggers a warning.
% The package option \pkgopt[nowarn]{kernelglossredefs} may be used to
% remove the warning, but it's better not to use \cs{glossary}.
%\begin{macro}{\glossary}
%\changes{4.41}{2018-07-23}{added warning}
-% \begin{macrocode}
-\if@gls@docloaded
-\else
- \def\glossary{\@gls@override@glossary}
-\fi
-% \end{macrocode}
+%As from v4.50 this command will only be redefined if
+%\pkgopt{kernelglossredefs} is used.
+%\changes{4.50}{2022-10-14}{removed}
%\end{macro}
%
%\begin{option}{kernelglossredefs}
@@ -2664,11 +2942,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%and their use is not encouraged. The preferred commands are
%\cs{makeglossaries} (to open all associated glossary files) and
%\cs{gls}, \cs{glstext} etc or \cs{glsadd} for indexing.
+%\changes{4.50}{2022-10-14}{corrected names of choice variables}
+%
+%As from v4.50, the default is kernelglossredefs=false.
% \begin{macrocode}
\define@choicekey{glossaries.sty}{kernelglossredefs}%
- [\gls@debug@val\gls@debug@nr]{true,false,nowarn}[true]%
+ [\gls@kernelglossredefs@val\gls@kernelglossredefs@nr]{true,false,nowarn}[true]%
{%
- \ifcase\gls@debug@nr\relax
+ \ifcase\gls@kernelglossredefs@nr\relax
\def\glossary{\@gls@override@glossary}%
\def\makeglossary{%
\GlossariesWarning{Use of \string\makeglossary\space with
@@ -2795,6 +3076,26 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{option}{mfirstuc}
+%\changes{4.50}{2022-10-14}{new}
+%Similar to \sty{mfirstuc}'s expanded and unexpanded package options.
+%Not providing the other option.
+% \begin{macrocode}
+\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
+ }
+% \end{macrocode}
+%\end{option}
+%
% Process package options. First process any options that have been
% passed via the document class.
% \begin{macrocode}
@@ -2814,9 +3115,16 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \begin{macrocode}
\ProcessOptionsX
% \end{macrocode}
-% Load backward compatibility stuff:
+%No longer load backward compatibility stuff as from v4.50.
+%\changes{4.50}{2022-10-14}{removed automatic loading of
+%\sty{glossaries-compatible-307}}
+%If LuaLaTeX and automake set, need to load \sty{shellesc}.
+%Note that if automake is passed to \cs{setupglossaries} instead,
+%then \sty{shellesc} will need to be loaded explicitly.
% \begin{macrocode}
-\RequirePackage{glossaries-compatible-307}
+\ifglsautomake
+ \ifdef\directlua{\RequirePackage{shellesc}}{}
+\fi
% \end{macrocode}
%
%\begin{macro}{\setupglossaries}
@@ -2827,7 +3135,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \begin{macrocode}
\disable@keys{glossaries.sty}{compatible-2.07,%
xindy,xindygloss,xindynoglsnumbers,makeindex,%
- acronym,translate,notranslate,nolong,nosuper,notree,nostyles,%
+ acronym,translate,notranslate,languages,nolong,nosuper,notree,nostyles,%
nomain,noglossaryindex}
% \end{macrocode}
%Now define \cs{setupglossaries}:
@@ -2901,15 +3209,15 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{macro}{\@gls@onlypremakeg}
% Some commands only have an effect when used before
-% \ics{makeglossaries}. So define a list of commands that
-% should be disabled after \ics{makeglossaries}
+% \cs{makeglossaries}. So define a list of commands that
+% should be disabled after \cs{makeglossaries}
% \begin{macrocode}
\newcommand*{\@gls@onlypremakeg}{}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@onlypremakeg}
% Adds the specified control sequence to the list of commands that
-% must be disabled after \ics{makeglossaries}.
+% must be disabled after \cs{makeglossaries}.
% \begin{macrocode}
\newcommand*{\@onlypremakeg}[1]{%
\ifx\@gls@onlypremakeg\@empty
@@ -2941,10 +3249,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-%\section{Predefined Text}\label{sec:predefinednames}
+%\subsection{Predefined Text}\label{sec:predefinednames}
% Set up default textual tags that are used by this
% package. Some of the names may already be defined (e.g.\ by
-% \isty{babel}) so \cs{providecommand} is used.
+% \sty{babel}) so \cs{providecommand} is used.
%
% Main glossary title:
%\begin{macro}{\glossaryname}
@@ -3068,18 +3376,30 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \begin{macrocode}
\ifglstranslate
% \end{macrocode}
-% Load \sty{tracklang}
+% Load \sty{tracklang}:
% \begin{macrocode}
\RequirePackage{tracklang}
% \end{macrocode}
+%Track any languages explicitly requested via the \pkgopt{languages}
+%option.
+% \begin{macrocode}
+ \ifdefvoid\@gls@requested@languages{}%
+ {%
+ \@for\@gls@thislang:=\@gls@requested@languages\do{%
+ \ifcsdef{@tracklang@add@\@gls@thislang}%
+ {\csuse{@tracklang@add@\@gls@thislang}}%
+ {\expandafter\TrackLanguageTag{\@gls@thislang}}%
+ }%
+ }%
+% \end{macrocode}
% Load \sty{translator} if required.
% \begin{macrocode}
\@gls@usetranslator
% \end{macrocode}
-% If using \isty{translator}, \ics{glossaryname} should be defined
-% in terms of \ics{translate}, but if babel is also loaded, it will
+% If using \sty{translator}, \cs{glossaryname} should be defined
+% in terms of \cs{translate}, but if babel is also loaded, it will
% redefine \cs{glossaryname} whenever the language is set, so
-% override it. (Don't use \ics{addto} as \isty{polyglossia} doesn't
+% override it. (Don't use \cs{addto} as \sty{polyglossia} doesn't
% define it.)
%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
%\cs{ifcsundef}}
@@ -3217,7 +3537,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
% This command only has an effect prior to using
-% \ics{makeglossaries}.
+% \cs{makeglossaries}.
% \begin{macrocode}
\@onlypremakeg\setStyleFile
% \end{macrocode}
@@ -3225,11 +3545,11 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
% The name of the \app{makeindex} or \app{xindy} style file
% is given by \cs{istfilename}. This file is
-% created by \ics{writeist} (which is used by
-% \ics{makeglossaries}) so
+% created by \cs{writeist} (which is used by
+% \cs{makeglossaries}) so
% redefining this command will only have an effect if it is
% done \emph{before} \cs{makeglossaries}. As from v1.17, use
-% \ics{setStyleFile} instead of directly redefining \cs{istfilename}.
+% \cs{setStyleFile} instead of directly redefining \cs{istfilename}.
%\begin{macro}{\istfilename}
%\changes{1.17}{2008-12-26}{added xindy support}
% \begin{macrocode}
@@ -3260,7 +3580,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% This command is the value of the \istkey{page\_compositor}
% \app{makeindex} key. Again, any redefinition of this command
% must take place \emph{before} \cs{writeist} otherwise it
-% will have no effect. As from 1.17, use \ics{glsSetCompositor}
+% will have no effect. As from 1.17, use \cs{glsSetCompositor}
% instead of directly redefining \cs{glscompositor}.
%\begin{macro}{\glscompositor}
% \begin{macrocode}
@@ -3273,7 +3593,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand*{\glsSetCompositor}[1]{%
\renewcommand*{\glscompositor}{#1}}
% \end{macrocode}
-% Only use before \ics{makeglossaries}
+% Only use before \cs{makeglossaries}
% \begin{macrocode}
\@onlypremakeg\glsSetCompositor
% \end{macrocode}
@@ -3308,7 +3628,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\glsnoxindywarning\glsSetAlphaCompositor}
\fi
% \end{macrocode}
-% Can only be used before \ics{makeglossaries}
+% Can only be used before \cs{makeglossaries}
% \begin{macrocode}
\@onlypremakeg\glsSetAlphaCompositor
% \end{macrocode}
@@ -3330,7 +3650,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand*{\glsSetSuffixF}[1]{%
\renewcommand*{\gls@suffixF}{#1}}
% \end{macrocode}
-% Only has an effect when used before \ics{makeglossaries}
+% Only has an effect when used before \cs{makeglossaries}
% \begin{macrocode}
\@onlypremakeg\glsSetSuffixF
% \end{macrocode}
@@ -3358,10 +3678,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\glsnumberformat}
% The command \cs{glsnumberformat} indicates the default
% format for the page numbers in the glossary. (Note that this
-% is not the same as \ics{glossaryentrynumbers}, but applies
+% is not the same as \cs{glossaryentrynumbers}, but applies
% to individual numbers or groups of numbers within an entry's
% associated number list.) If hyperlinks are defined, it will use
-% \ics{glshypernumber}, otherwise it will simply display its
+% \cs{glshypernumber}, otherwise it will simply display its
% argument ``as is''.
%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
%\cs{ifcsundef}}
@@ -3376,6 +3696,16 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glslocationcstoencap}
+%\changes{4.50}{2022-10-14}{new}
+%Used by \app{makeglossaries} to move commands out of the location
+%numbers into the encap. The actual encap needs to be closest to the
+%location in the event that hyperlinks are required.
+% \begin{macrocode}
+\newcommand{\glslocationcstoencap}[3]{\csuse{#2}{\csuse{#1}{#3}}}
+% \end{macrocode}
+%\end{macro}
+%
% Individual numbers in an entry's associated number list are
% delimited using \cs{delimN} (which corresponds to the
% \istkey{delim\_n} \app{makeindex} keyword). The default value
@@ -3405,9 +3735,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% change \cs{glossarypreamble}.) The preamble is empty by
% default. If you have multiple glossaries, and you want a
% different preamble for each glossary, you will need to use
-% \ics{printglossary} for each glossary type, instead of
-% \ics{printglossaries}, and redefine \cs{glossarypreamble}
-% before each \ics{printglossary}.
+% \cs{printglossary} for each glossary type, instead of
+% \cs{printglossaries}, and redefine \cs{glossarypreamble}
+% before each \cs{printglossary}.
%\begin{macro}{\glossarypreamble}
%\changes{3.07}{2013-07-05}{modified to work with
%\cs{setglossarypreamble}}
@@ -3439,7 +3769,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% add something after the end of the \env{theglossary}
% environment (again, this shouldn't be affected by the
% glossary style). It is, of course, possible to simply add the
-% text after \ics{printglossary}, but if you only want the
+% text after \cs{printglossary}, but if you only want the
% postamble to appear after the first glossary, but not after
% subsequent glossaries, you can do something like:
%\begin{verbatim}
@@ -3456,7 +3786,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% The sectioning command that starts a glossary is given by
% \cs{glossarysection}. (This does not form part of the
% glossary style, and so should not be changed by a glossary
-% style.) If \ics{phantomsection}
+% style.) If \cs{phantomsection}
% is defined, it uses \cs{\@p@glossarysection}, otherwise it
% uses \cs{@glossarysection}.
%\changes{1.05}{2007-08-10}{added \cs{@mkboth} to
@@ -3492,8 +3822,11 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\cs{mfirstucMakeUppercase}}
%\changes{3.13a}{2013-11-05}{renamed \cs{glossarymark} to
%\cs{glsglossarymark} to avoid conflict with memoir}
+%\changes{4.50}{2022-10-14}{switched to \cs{glsuppercase}}
% Sets the header mark for the glossary. Takes the glossary short
-% (TOC) title as the argument.
+% (TOC) title as the argument. If \cs{glossarymark} hasn't been
+% defined, it will be defined shortly, so use that. Otherwise don't
+% use it as it may not be compatible.
% \begin{macrocode}
\ifcsundef{glossarymark}%
{%
@@ -3513,7 +3846,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
{%
\newcommand{\glsglossarymark}[1]{%
\ifglsucmark
- \@mkboth{\mfirstucMakeUppercase{#1}}{\mfirstucMakeUppercase{#1}}%
+ \@mkboth{\glsuppercase{#1}}{\glsuppercase{#1}}%
\else
\@mkboth{#1}{#1}%
\fi
@@ -3524,10 +3857,11 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%\begin{macro}{\glossarymark}
% Provided for backward compatibility:
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\providecommand{\glossarymark}[1]{%
\ifglsucmark
- \@mkboth{\mfirstucMakeUppercase{#1}}{\mfirstucMakeUppercase{#1}}%
+ \@mkboth{\glsuppercase{#1}}{\glsuppercase{#1}}%
\else
\@mkboth{#1}{#1}%
\fi
@@ -3550,7 +3884,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%
%The command \cs{@glossarysection} indicates how to start
-% the glossary section if \ics{phantomsection} is not defined.
+% the glossary section if \cs{phantomsection} is not defined.
%\begin{macro}{\@glossarysection}
%\changes{1.1}{2008-02-22}{numbered sections and auto label added}
%\changes{4.07}{2014-04-04}{added optional argument when using unstarred
@@ -3574,7 +3908,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%
% As \cs{@glossarysection}, but put in
-% \ics{phantomsection}, and swap where \cs{@gls@toc} goes.
+% \cs{phantomsection}, and swap where \cs{@gls@toc} goes.
% If using chapters do a \cs{clearpage}. This ensures that
% the hyper link from the table of contents leads to the line above
% the heading, rather than the line below it.
@@ -3664,7 +3998,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-%\section{Xindy}
+%\subsection{Xindy}
% This section defines commands that only have an effect if
% \app{xindy} is used to sort the glossaries.
%\begin{macro}{\glsnoxindywarning}
@@ -3755,7 +4089,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
}
% \end{macrocode}
-% Only has an effect before \ics{writeist}:
+% Only has an effect before \cs{writeist}:
% \begin{macrocode}
\@onlypremakeg\GlsAddXdyCounters
\else
@@ -3788,8 +4122,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand*\@glsaddxdyattribute[2]{%
% \end{macrocode}
% Add to xindy attribute list
+%\changes{4.50}{2022-10-14}{remove duplicate counterless attribute definitions}
% \begin{macrocode}
- \edef\@xdyattributes{\@xdyattributes ^^J \string"#1\string" ^^J
+ \edef\@xdyattributes{\@xdyattributes ^^J
\string"#2#1\string"}%
% \end{macrocode}
% Add to xindy markup location.
@@ -3823,6 +4158,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\edef\@xdyattributelist{\@xdyattributelist,#1}%
\fi
% \end{macrocode}
+% First add the attribute without the counter name:
+%\changes{4.50}{2022-10-14}{remove duplicate counterless attribute definitions}
+% \begin{macrocode}
+ \edef\@xdyattributes{\@xdyattributes ^^J
+ \string"#1\string"}%
+% \end{macrocode}
% Iterate through all specified counters and add counter-dependent
% attributes:
% \begin{macrocode}
@@ -3839,7 +4180,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\let\GlsAddXdyCounters\@disabled@glsaddxdycounters
}
% \end{macrocode}
-% Only has an effect before \ics{writeist}:
+% Only has an effect before \cs{writeist}:
% \begin{macrocode}
\@onlypremakeg\GlsAddXdyAttribute
\else
@@ -3936,7 +4277,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{macro}{\@gls@xdy@Lclass@roman-page-numbers}
% Lower case Roman numerals (i, ii, \ldots). In the event that
-% \ics{roman} has been redefined to produce a fancy form of
+% \cs{roman} has been redefined to produce a fancy form of
% roman numerals, attempt to work out how it will be written
% to the output file.
% \begin{macrocode}
@@ -3998,7 +4339,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{macro}{\@gls@xdy@Lclass@Appendix-page-numbers}
% Appendix style locations (e.g.\ A-1, A-2, \ldots, B-1, B-2,
-% \ldots). The separator is given by \ics{@glsAlphacompositor}.
+% \ldots). The separator is given by \cs{@glsAlphacompositor}.
% \begin{macrocode}
\expandafter\def\csname @gls@xdy@Lclass@Appendix-page-numbers\endcsname{%
\string"ALPHA\string"
@@ -4010,7 +4351,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{macro}{\@gls@xdy@Lclass@arabic-section-numbers}
% Section number style locations (e.g.\ 1.1, 1.2, \ldots). The
-% compositor is given by \ics{glscompositor}.
+% compositor is given by \cs{glscompositor}.
% \begin{macrocode}
\expandafter\def\csname @gls@xdy@Lclass@arabic-section-numbers\endcsname{%
\string"arabic-numbers\string"
@@ -4084,7 +4425,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\string"#2\string"}%
}
% \end{macrocode}
-% Only has an effect before \ics{writeist}:
+% Only has an effect before \cs{writeist}:
% \begin{macrocode}
\@onlypremakeg\GlsAddXdyLocation
\else
@@ -4186,15 +4527,11 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{macro}{\findrootlanguage}
%\changes{3.06}{2013/06/17}{Obsoleted}
-% This used to determine the root language, using a~bit of trickery
-% since \sty{babel} doesn't supply the information, but now that
-% \sty{babel} is once again actively maintained, we can't do this
-% any more, so \cs{findrootlanguage} is no longer available. Now
-% provide a command that does nothing (in case it's been patched),
-% but this may be removed completely in the future.
-% \begin{macrocode}
-\newcommand*{\findrootlanguage}{}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% The command \cs{findrootlanguage} was used to determine the root
+% language, using a~bit of trickery. This has been deferred to
+% \sty{tracklang}.
+%Removed in v4.50.
%\end{macro}
%
%\begin{macro}{\@xdylanguage}
@@ -4296,7 +4633,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-%\section{Loops and conditionals}
+%\subsection{Loops and conditionals}
%\begin{macro}{\forallglossaries}
% To iterate through all glossaries (or comma-separated list of
% glossary names given in optional argument) use:
@@ -4404,17 +4741,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
% Since the label is used to form the name of control sequences, by
% default UTF8 etc characters can't be used in the label. A possible
-% workaround is to use \ics{scantokens}, but commands such as
-% \ics{glsentrytext} will no longer be usable in sectioning, caption
+% workaround is to use \cs{scantokens}, but commands such as
+% \cs{glsentrytext} will no longer be usable in sectioning, caption
% etc commands. If the user really wants to be able to construct a
% label with UTF8 characters, allow them the means to do so (but on
-% their own head be it, if they then use entries in \ics{section}
+% their own head be it, if they then use entries in \cs{section}
% etc). This can be done via:
%\begin{verbatim}
%\renewcommand*{\glsdetoklabel}[1]{\scantokens{#1\noexpand}}
%\end{verbatim}
-% (Note, don't use \ics{detokenize} or it will cause commands like
-% \ics{glsaddall} to fail.)
+% (Note, don't use \cs{detokenize} or it will cause commands like
+% \cs{glsaddall} to fail.)
% Since redefining \cs{glsdetoklabel} can cause things to go
% badly wrong, I'm not going to mention it in the main user guide.
% Only advanced users who know what they're doing ought to attempt
@@ -4696,6 +5033,19 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\ifglsfieldvoid}
+%\changes{4.50}{2022-10-14}{new}
+%\begin{definition}
+%\cs{ifglsfieldvoid}\marg{field}\marg{label}\marg{true part}\marg{false
+%part}
+%\end{definition}
+%Provide an expandable way of testing if a field is undefined or
+%empty.
+% \begin{macrocode}
+\newcommand{\ifglsfieldvoid}[4]{\ifcsvoid{glo@\glsdetoklabel{#2}@#1}{#3}{#4}}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\ifglshasfield}
%\changes{4.03}{2014-01-20}{new}
%\begin{definition}
@@ -4809,12 +5159,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-%\section{Defining new glossaries}\label{sec:newglos}
+%\subsection{Defining new glossaries}\label{sec:newglos}
% A comma-separated list of glossary names is stored
% in \cs{@glo@types}. When a new glossary type
% is created, its identifying name is added to this list.
% This is used by commands that iterate through all glossaries
-% (such as \ics{makeglossaries} and \ics{printglossaries}).
+% (such as \cs{makeglossaries} and \cs{printglossaries}).
%\begin{macro}{\@glo@types}
% \begin{macrocode}
\newcommand*{\@glo@types}{,}
@@ -4837,12 +5187,32 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@gls@defaulttype}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@defaulttype}{\glsdefaulttype}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\defglsentryfmt}
%\changes{3.11a}{2013-10-15}{new}
% Allow different glossaries to have different display styles.
% \begin{macrocode}
\newcommand*{\defglsentryfmt}[2][\glsdefaulttype]{%
- \csgdef{gls@#1@entryfmt}{#2}%
+ \protected@edef\@glo@tmp{#1}%
+ \ifx\@glo@tmp\@gls@defaulttype
+% \end{macrocode}
+% Argument was \cs{glsdefaulttype} but it hasn't expanded, which
+% probably means nomain was used and no alternative glossary has
+% been defined.
+% \begin{macrocode}
+ \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
}
% \end{macrocode}
%\end{macro}
@@ -4895,12 +5265,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{definition}
% where \meta{log-ext} is the extension of the \app{makeindex}
% transcript file, \meta{in-ext} is the extension of the glossary
-% input file (read in by \ics{printglossary} and created by
+% input file (read in by \cs{printglossary} and created by
% \app{makeindex}), \meta{out-ext} is the extension of the
% glossary output file which is read in by \app{makeindex}
-% (lines are written to this file by the \ics{glossary} command),
+% (lines are written to this file by the \cs{glossary} command),
% \meta{title} is the title of the glossary that is used in
-% \ics{glossarysection} and
+% \cs{glossarysection} and
% \meta{counter} is the default counter to be used by entries
% belonging to this glossary. The \app{makeglossaries} Perl
% script reads in the relevant extensions from the auxiliary file,
@@ -4971,7 +5341,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% How to display this entry in the document text (uses
% \cs{glsentry} by
% default). This can be redefined by the user later if required
-% (see \ics{defglsentry}). This
+% (see \cs{defglsentry}). This
% may already have been defined if this has been specified as
% a list of acronyms.
%\changes{2.04}{2009-11-10}{added check to determine if
@@ -4995,7 +5365,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Find out if the final optional argument has been specified, and
% use it to set the counter associated with this glossary. (Uses
-% \ics{glscounter} if no optional argument is present.)
+% \cs{glscounter} if no optional argument is present.)
% \begin{macrocode}
\@ifnextchar[{\@gls@setcounter{#2}}%
{\@gls@setcounter{#2}[\glscounter]}%
@@ -5018,13 +5388,13 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \begin{macrocode}
\@onlypreamble{\newglossary}
% \end{macrocode}
-% Only define new glossaries before \ics{makeglossaries}
+% Only define new glossaries before \cs{makeglossaries}
% \begin{macrocode}
\@onlypremakeg\newglossary
% \end{macrocode}
%\cs{@newglossary} is used to specify the file extensions
% for the \app{makeindex} input, output and transcript files.
-% It is written to the auxiliary file by \ics{newglossary}.
+% It is written to the auxiliary file by \cs{newglossary}.
% Since it is not used by \LaTeX, \cs{@newglossary} simply
% ignores its arguments.
%\begin{macro}{\@newglossary}
@@ -5059,7 +5429,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%
% Define the main glossary. This will be the first glossary to
-% be displayed when using \ics{printglossaries}.
+% be displayed when using \cs{printglossaries}.
% \begin{macrocode}
\glsdefmain
% \end{macrocode}
@@ -5077,8 +5447,8 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\newignoredglossary}
% Creates a new glossary that doesn't have associated files.
% This glossary is ignored by any commands that iterate over
-% glossaries, such as \ics{printglossaries}, and won't work with
-% commands like \ics{printglossary}. It's intended for entries that
+% glossaries, such as \cs{printglossaries}, and won't work with
+% commands like \cs{printglossary}. It's intended for entries that
% are so commonly-known they don't require a glossary.
%\changes{4.08}{2014-07-30}{new}
%\changes{4.47}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
@@ -5131,7 +5501,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-%\section{Defining new entries}\label{sec:newentry}
+%\subsection{Defining new entries}\label{sec:newentry}
% New glossary entries are defined using \cs{newglossaryentry}.
% This command requires a label and a key-value list that defines
% the relevant information for that entry. The definition for these
@@ -5158,10 +5528,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{key}{description}
% The \gloskey{description} key is usually only used in
% the glossary, but can be made to appear in the text by redefining
-% \ics{glsentryfmt} or using \ics{defglsentryfmt}. The
+% \cs{glsentryfmt} or using \cs{defglsentryfmt}. The
% \gloskey{description} key is required when
% defining a new glossary entry. If a long description is required,
-% use \ics{longnewglossaryentry} instead of \ics{newglossaryentry}.
+% use \cs{longnewglossaryentry} instead of \cs{newglossaryentry}.
% \begin{macrocode}
\define@key{glossentry}{description}{%
\def\@glo@desc{#1}%
@@ -5205,7 +5575,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{key}{plural}
% The \gloskey{plural} key determines how the plural form of the term
% should be displayed in the document. If omitted, the plural is
-% constructed by appending \ics{glspluralsuffix} to the value of the
+% constructed by appending \cs{glspluralsuffix} to the value of the
% \gloskey{text} key.
% \begin{macrocode}
\define@key{glossentry}{plural}{%
@@ -5229,7 +5599,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% The \gloskey{firstplural} key is used to set the plural form for
% first use, in the event that the plural is required the first
% time the term is used. If omitted, it is constructed by
-% appending \ics{glspluralsuffix} to the value of the \gloskey{first} key.
+% appending \cs{glspluralsuffix} to the value of the \gloskey{first} key.
% \begin{macrocode}
\define@key{glossentry}{firstplural}{%
\def\@glo@firstplural{#1}%
@@ -5249,10 +5619,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% It is provided for glossary styles that require an associated
% symbol, as well as a name and description. To make this value
% appear in the glossary, you need to redefine
-% \ics{glossentry}.
+% \cs{glossentry}.
% If you want this value to appear in the text when the term is used
-% by commands like \ics{gls}, you will need to change
-% \ics{glsentryfmt} (or use for \ics{defglsentryfmt} individual glossaries).
+% by commands like \cs{gls}, you will need to change
+% \cs{glsentryfmt} (or use for \cs{defglsentryfmt} individual glossaries).
% \begin{macrocode}
\define@key{glossentry}{symbol}{%
\def\@glo@symbol{#1}%
@@ -5389,6 +5759,24 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{key}
%
+%\begin{macro}{\gls@noidx@nonumberlist}
+%\changes{4.50}{2022-10-14}{new}
+%\cs{makenoidxglossaries} sets \cs{@gls@savenonumberlist} to this.
+% \begin{macrocode}
+\newcommand*{\gls@noidx@nonumberlist}[1]{%
+ \cslet{glo@\@glo@label @prenumberlist}\@glo@prefix
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnoidxprenumberlist}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glsnoidxprenumberlist}[1]{%
+ \csuse{glo@\glsdetoklabel{#1}@prenumberlist}}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@gls@savenonumberlist}
%\changes{4.25}{2016-06-09}{new}
%The \gloskey{nonumberlist} option isn't saved by default (as it
@@ -5488,7 +5876,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{key}{short}
%\changes{3.0}{2011-04-02}{new}
-% This key is provided for use by \ics{newacronym}. It's not
+% This key is provided for use by \cs{newacronym}. It's not
% designed for general purpose use, so isn't described in the user
% manual.
% \begin{macrocode}
@@ -5500,7 +5888,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{key}{shortplural}
%\changes{3.0}{2011-04-02}{new}
-% This key is provided for use by \ics{newacronym}.
+% This key is provided for use by \cs{newacronym}.
% \begin{macrocode}
\define@key{glossentry}{shortplural}{%
\def\@glo@shortpl{#1}%
@@ -5510,7 +5898,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{key}{long}
%\changes{3.0}{2011-04-02}{new}
-% This key is provided for use by \ics{newacronym}.
+% This key is provided for use by \cs{newacronym}.
% \begin{macrocode}
\define@key{glossentry}{long}{%
\def\@glo@long{#1}%
@@ -5520,7 +5908,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{key}{longplural}
%\changes{3.0}{2011-04-02}{new}
-% This key is provided for use by \ics{newacronym}.
+% This key is provided for use by \cs{newacronym}.
% \begin{macrocode}
\define@key{glossentry}{longplural}{%
\def\@glo@longpl{#1}%
@@ -5558,10 +5946,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\@glsdefaultplural}
% \changes{1.17}{2008-12-26}{new}
%\changes{3.10a}{2013-10-13}{Obsolete}
-% Now obsolete. Don't use.
-% \begin{macrocode}
-\newcommand*{\@glsdefaultplural}{}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{Removed}
+% \cs{@glsdefaultplural} was obsoleted in v3.10a (2013-10-13) and
+% removed in v4.50.
%\end{macro}
%
%\begin{macro}{\@gls@missingnumberlist}
@@ -6149,9 +6536,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}%
% \end{macrocode}
% Define the no-link commands.
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
\newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}%
- \newcommand*{#4}[1]{\@Gls@entry@field{##1}{#1}}%
+ \newcommand*{#4}[1]{\@Glsentryfield{##1}{#1}}%
% \end{macrocode}
% Now for the commands with links. First the version with no case
% change:
@@ -6221,6 +6609,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLS@user@\meta{key}}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\expandafter\newcommand\expandafter*\expandafter
{\csname @GLS@user@#1\endcsname}[2][]{%
@@ -6228,11 +6617,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
{\csuse{@GLS@user@#1@}{##1}{##2}}%
{\csuse{@GLS@user@#1@}{##1}{##2}[]}}%
\csdef{@GLS@user@#1@}##1##2[##3]{%
- \@gls@field@link{##1}{##2}{\mfirstucMakeUppercase{#3{##2}##3}}%
+ \@gls@field@link{##1}{##2}{\glsuppercase{#3{##2}##3}}%
}%
\newrobustcmd*{#7}{%
\expandafter\@gls@hyp@opt\csname @GLS@user@#1\endcsname}%
}%
+% \end{macrocode}
+%Add mappings.
+% \begin{macrocode}
+ \glsmfuaddmap{#3}{#4}%
+ \glsmfuaddmap{#5}{#6}%
+ \glsmfublocker{#7}%
}%
{%
\PackageError{glossaries}{Key `#1' already exists}{}%
@@ -6248,8 +6643,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{4.16}{2015-07-08}{new}
%\changes{4.42}{2019-01-06}{changed from \cs{edef} to \cs{protected@csxdef}}
%\changes{4.47}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
+%\changes{4.50}{2022-10-14}{made robust}
% \begin{macrocode}
-\newcommand{\glsfieldxdef}[3]{%
+\newrobustcmd{\glsfieldxdef}[3]{%
\glsdoifexists{#1}%
{%
\protected@edef\@glo@label{\glsdetoklabel{#1}}%
@@ -6258,7 +6654,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\protected@csxdef{glo@\@glo@label @#2}{#3}%
}%
{%
- \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
}%
}%
}
@@ -6272,8 +6668,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{4.16}{2015-07-08}{new}
%\changes{4.42}{2019-01-06}{changed from \cs{edef} to \cs{protected@csedef}}
%\changes{4.47}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
+%\changes{4.50}{2022-10-14}{made robust}
% \begin{macrocode}
-\newcommand{\glsfieldedef}[3]{%
+\newrobustcmd{\glsfieldedef}[3]{%
\glsdoifexists{#1}%
{%
\protected@edef\@glo@label{\glsdetoklabel{#1}}%
@@ -6282,7 +6679,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\protected@csedef{glo@\@glo@label @#2}{#3}%
}%
{%
- \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
}%
}%
}
@@ -6295,8 +6692,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{definition}
%\changes{4.16}{2015-07-08}{new}
%\changes{4.47}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
+%\changes{4.50}{2022-10-14}{made robust}
% \begin{macrocode}
-\newcommand{\glsfieldgdef}[3]{%
+\newrobustcmd{\glsfieldgdef}[3]{%
\glsdoifexists{#1}%
{%
\protected@edef\@glo@label{\glsdetoklabel{#1}}%
@@ -6305,7 +6703,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\expandafter\gdef\csname glo@\@glo@label @#2\endcsname{#3}%
}%
{%
- \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
}%
}%
}
@@ -6318,8 +6716,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{definition}
%\changes{4.16}{2015-07-08}{new}
%\changes{4.47}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
+%\changes{4.50}{2022-10-14}{made robust}
% \begin{macrocode}
-\newcommand{\glsfielddef}[3]{%
+\newrobustcmd{\glsfielddef}[3]{%
\glsdoifexists{#1}%
{%
\protected@edef\@glo@label{\glsdetoklabel{#1}}%
@@ -6328,7 +6727,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\expandafter\def\csname glo@\@glo@label @#2\endcsname{#3}%
}%
{%
- \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
}%
}%
}
@@ -6343,8 +6742,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Fetches the value of the given field and stores in the given
% control sequence.
%\changes{4.47}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
+%\changes{4.50}{2022-10-14}{made robust}
% \begin{macrocode}
-\newcommand{\glsfieldfetch}[3]{%
+\newrobustcmd{\glsfieldfetch}[3]{%
\glsdoifexists{#1}%
{%
\protected@edef\@glo@label{\glsdetoklabel{#1}}%
@@ -6353,7 +6753,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\letcs#3{glo@\@glo@label @#2}%
}%
{%
- \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
}%
}%
}
@@ -6382,10 +6782,11 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\cs{ifglsfieldeq}\marg{label}\marg{field}\marg{string}\marg{true}\marg{false}
%\end{definition}
%\changes{4.16}{2015-07-08}{new}
+%\changes{4.50}{2022-10-14}{made robust}
% Tests if the value of the given field is equal to the given
% string.
% \begin{macrocode}
-\newcommand{\ifglsfieldeq}[5]{%
+\newrobustcmd{\ifglsfieldeq}[5]{%
\glsdoifexists{#1}%
{%
\protected@edef\@glo@label{\glsdetoklabel{#1}}%
@@ -6394,7 +6795,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\ifcsstring{glo@\@glo@label @#2}{#3}{#4}{#5}%
}%
{%
- \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
}%
}%
}
@@ -6406,20 +6807,24 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\cs{ifglsfielddefeq}\marg{label}\marg{field}\marg{command}\marg{true}\marg{false}
%\end{definition}
%\changes{4.16}{2015-07-08}{new}
+%\changes{4.50}{2022-10-14}{made robust}
% Tests if the value of the given field is equal to the replacement
% text of the given command.
% \begin{macrocode}
-\newcommand{\ifglsfielddefeq}[5]{%
+\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}%
+% \end{macrocode}
+%Use \cs{ifdefstrequal} not \cs{ifcsstrequal} as the \verb|#3|
+%argument should be a command.
+% \begin{macrocode}
+ \expandafter\ifdefstrequal\csname glo@\@glo@label @#2\endcsname{#3}{#4}{#5}%
}%
{%
- \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
}%
}%
}
@@ -6433,6 +6838,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{4.16}{2015-07-08}{new}
%As above but uses \cs{ifcsstrequal} instead of \cs{ifdefstrequal}
%\changes{4.47}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
+%\changes{4.50}{2022-10-14}{made robust}
% \begin{macrocode}
\newcommand{\ifglsfieldcseq}[5]{%
\glsdoifexists{#1}%
@@ -7109,11 +7515,11 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-%\section{Resetting and unsetting entry flags}
+%\subsection{Resetting and unsetting entry flags}
% Each glossary entry is assigned a conditional of the form
%\cs{ifglo@}\meta{label}\texttt{@flag} which determines
% whether or not the entry has been used (see also
-% \ics{ifglsused} defined below). These flags can
+% \cs{ifglsused} defined below). These flags can
% be set and unset using the following macros, but first we need to
% know if we're in \sty{amsmath}'s \env{align} environment's
% measuring pass.
@@ -7352,7 +7758,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-%\section{Keeping Track of How Many Times an Entry Has Been Unset}
+%\subsection{Keeping Track of How Many Times an Entry Has Been Unset}
%Version 4.14 introduced \cs{glsenableentrycount} that keeps track
%of how many times an entry is marked as used. The counter is reset
%back to zero when the first use flag is reset. Note that although
@@ -7375,6 +7781,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\ifglsresetcurrcount}
+%\changes{4.50}{2022-10-14}{new}
+%A conditional to determine whether or not to reset the entry count
+%to zero if the first use flag is reset. The default is now not to
+%do this, which changes the implementation for v4.49 and below.
+% \begin{macrocode}
+\newif\ifglsresetcurrcount
+\glsresetcurrcountfalse
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsenableentrycount}
%\changes{4.14}{2015-02-28}{new}
% Enables tracking of how many times an entry has been marked as
@@ -7398,7 +7815,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}%
}%
% \end{macrocode}
-% Define commands \ics{glsentrycurrcount} and \ics{glsentryprevcount} to
+% Define commands \cs{glsentrycurrcount} and \cs{glsentryprevcount} to
% access these new fields. Default to zero if undefined.
% \begin{macrocode}
\newcommand*{\glsentrycurrcount}[1]{%
@@ -7423,11 +7840,11 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}%
\renewcommand*{\@glsreset}[1]{%
\@@glsreset{##1}%
- \csgdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ \ifglsresetcurrcount\csgdef{glo@\glsdetoklabel{##1}@currcount}{0}\fi
}%
\renewcommand*{\@glslocalreset}[1]{%
\@@glslocalreset{##1}%
- \csdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ \ifglsresetcurrcount\csdef{glo@\glsdetoklabel{##1}@currcount}{0}\fi
}%
% \end{macrocode}
% Alter behaviour of \cs{cgls}. (Only global unset is used if
@@ -7600,6 +8017,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\cGls}{\@gls@hyp@opt\@cGls}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\cgls}{\cGls}
+% \end{macrocode}
%\begin{macro}{\@cGls}
%\changes{4.14}{2015-02-28}{new}
% Defined the un-starred form. Need to determine if there is
@@ -7688,6 +8109,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\cGlspl}{\@gls@hyp@opt\@cGlspl}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\cglspl}{\cGlspl}
+% \end{macrocode}
%\begin{macro}{\@cglspl}
%\changes{4.14}{2015-02-28}{new}
% Defined the un-starred form. Need to determine if there is
@@ -7723,11 +8148,11 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-% \section{Loading files containing glossary entries}
+%\subsection{Loading files containing glossary entries}
%\label{sec:load}
% Glossary entries can be defined in an external file.
-% These external files can contain \ics{newglossaryentry}
-% and \ics{newacronym} commands.\footnote{and any other valid
+% These external files can contain \cs{newglossaryentry}
+% and \cs{newacronym} commands.\footnote{and any other valid
%\LaTeX\ code that can be used in the preamble.}
%\begin{definition}
% \cs{loadglsentries}\oarg{type}\marg{filename}
@@ -7737,8 +8162,8 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% entries should be assigned if they haven't used the \gloskey{type}
% key. If the optional argument is not specified, the default
% glossary is used. Only those entries used in the document (via
-% \ics{glslink}, \ics{gls}, \ics{glspl} and uppercase
-% variants or \ics{glsadd} and \ics{glsaddall}
+% \cs{glslink}, \cs{gls}, \cs{glspl} and uppercase
+% variants or \cs{glsadd} and \cs{glsaddall}
% will appear in the glossary). The mandatory argument is
% the filename (with or without .tex extension).
%\begin{macro}{\loadglsentries}
@@ -7755,18 +8180,18 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\@onlypreamble{\loadglsentries}
% \end{macrocode}
%
-%\section{Using glossary entries in the text}
+%\subsection{Using glossary entries in the text}
%\label{sec:code:glslink}
%
-% Any term that has been defined using \ics{newglossaryentry}
-% (or \ics{newacronym}) can be displayed in the text
+% Any term that has been defined using \cs{newglossaryentry}
+% (or \cs{newacronym}) can be displayed in the text
% (i.e.\ outside of the glossary) using
% one of the commands defined in this section. Unless you use
-% \ics{glslink}, the way the term appears in the text is
-% determined by \ics{glsdisplayfirst} (if it is the first
-% time the term has been used) or \ics{glsdisplay} (for
+% \cs{glslink}, the way the term appears in the text is
+% determined by \cs{glsdisplayfirst} (if it is the first
+% time the term has been used) or \cs{glsdisplay} (for
% subsequent use). Any formatting commands (such as \cs{textbf}
-% is governed by \ics{glstextformat}. By default this just
+% is governed by \cs{glstextformat}. By default this just
% displays the \term{link text} ``as is''.
%\changes{1.04}{2007-08-03}{Added \cs{glstextformat}}%
%\begin{macro}{\glstextformat}
@@ -7779,230 +8204,13 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% As from version 3.11a, the way in which an entry is displayed is now
% governed by \cs{glsentryfmt}. This doesn't take any arguments. The
% required information is set by commands like \cs{gls}.
-% To ensure backward compatibility, the default use the old
-% \cs{glsdisplay} and \cs{glsdisplayfirst} style of commands
-% \begin{macrocode}
-\newcommand*{\glsentryfmt}{%
- \@@gls@default@entryfmt\glsdisplayfirst\glsdisplay
-}
-% \end{macrocode}
-% Format that provides backwards compatibility:
-% \begin{macrocode}
-\newcommand*{\@@gls@default@entryfmt}[2]{%
- \ifdefempty\glscustomtext
- {%
- \glsifplural
- {%
-% \end{macrocode}
-% Plural form
-% \begin{macrocode}
- \glscapscase
- {%
-% \end{macrocode}
-% Don't adjust case
-% \begin{macrocode}
- \ifglsused\glslabel
- {%
-% \end{macrocode}
-% Subsequent use
-% \begin{macrocode}
- #2{\glsentryplural{\glslabel}}%
- {\glsentrydescplural{\glslabel}}%
- {\glsentrysymbolplural{\glslabel}}{\glsinsert}%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- #1{\glsentryfirstplural{\glslabel}}%
- {\glsentrydescplural{\glslabel}}%
- {\glsentrysymbolplural{\glslabel}}{\glsinsert}%
- }%
- }%
- {%
-% \end{macrocode}
-% Make first letter upper case
-% \begin{macrocode}
- \ifglsused\glslabel
- {%
-% \end{macrocode}
-% Subsequent use. (Expansion was used in version 3.07 and below
-% in case the name wasn't the first thing to be displayed, but now
-% the user can sort out the upper casing in \ics{defglsentryfmt},
-% which avoids the issues caused by fragile commands.)
-% \begin{macrocode}
- \ifbool{glscompatible-3.07}%
- {%
- \protected@edef\@glo@etext{%
- #2{\glsentryplural{\glslabel}}%
- {\glsentrydescplural{\glslabel}}%
- {\glsentrysymbolplural{\glslabel}}{\glsinsert}}%
- \xmakefirstuc\@glo@etext
- }%
- {%
- #2{\Glsentryplural{\glslabel}}%
- {\glsentrydescplural{\glslabel}}%
- {\glsentrysymbolplural{\glslabel}}{\glsinsert}%
- }%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- \ifbool{glscompatible-3.07}%
- {%
- \protected@edef\@glo@etext{%
- #1{\glsentryfirstplural{\glslabel}}%
- {\glsentrydescplural{\glslabel}}%
- {\glsentrysymbolplural{\glslabel}}{\glsinsert}}%
- \xmakefirstuc\@glo@etext
- }%
- {%
- #1{\Glsentryfirstplural{\glslabel}}%
- {\glsentrydescplural{\glslabel}}%
- {\glsentrysymbolplural{\glslabel}}{\glsinsert}%
- }%
- }%
- }%
- {%
-% \end{macrocode}
-% Make all upper case
-% \begin{macrocode}
- \ifglsused\glslabel
- {%
-% \end{macrocode}
-% Subsequent use
-% \begin{macrocode}
- \mfirstucMakeUppercase{#2{\glsentryplural{\glslabel}}%
- {\glsentrydescplural{\glslabel}}%
- {\glsentrysymbolplural{\glslabel}}{\glsinsert}}%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- \mfirstucMakeUppercase{#1{\glsentryfirstplural{\glslabel}}%
- {\glsentrydescplural{\glslabel}}%
- {\glsentrysymbolplural{\glslabel}}{\glsinsert}}%
- }%
- }%
- }%
- {%
-% \end{macrocode}
-% Singular form
-% \begin{macrocode}
- \glscapscase
- {%
-% \end{macrocode}
-% Don't adjust case
+% This used to use the now deprecated
+% \cs{glsdisplay} and \cs{glsdisplayfirst}. Replaced with
+% \cs{glsgenentryfmt} in v4.50.
+%\changes{4.50}{2022-10-14}{obsolete commands replaced with
+%\cs{glsgenentryfmt}}
% \begin{macrocode}
- \ifglsused\glslabel
- {%
-% \end{macrocode}
-% Subsequent use
-% \begin{macrocode}
- #2{\glsentrytext{\glslabel}}%
- {\glsentrydesc{\glslabel}}%
- {\glsentrysymbol{\glslabel}}{\glsinsert}%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- #1{\glsentryfirst{\glslabel}}%
- {\glsentrydesc{\glslabel}}%
- {\glsentrysymbol{\glslabel}}{\glsinsert}%
- }%
- }%
- {%
-% \end{macrocode}
-% Make first letter upper case
-% \begin{macrocode}
- \ifglsused\glslabel
- {%
-% \end{macrocode}
-% Subsequent use
-% \begin{macrocode}
- \ifbool{glscompatible-3.07}%
- {%
- \protected@edef\@glo@etext{%
- #2{\glsentrytext{\glslabel}}%
- {\glsentrydesc{\glslabel}}%
- {\glsentrysymbol{\glslabel}}{\glsinsert}}%
- \xmakefirstuc\@glo@etext
- }%
- {%
- #2{\Glsentrytext{\glslabel}}%
- {\glsentrydesc{\glslabel}}%
- {\glsentrysymbol{\glslabel}}{\glsinsert}%
- }%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- \ifbool{glscompatible-3.07}%
- {%
- \protected@edef\@glo@etext{%
- #1{\glsentryfirst{\glslabel}}%
- {\glsentrydesc{\glslabel}}%
- {\glsentrysymbol{\glslabel}}{\glsinsert}}%
- \xmakefirstuc\@glo@etext
- }%
- {%
- #1{\Glsentryfirst{\glslabel}}%
- {\glsentrydesc{\glslabel}}%
- {\glsentrysymbol{\glslabel}}{\glsinsert}%
- }%
- }%
- }%
- {%
-% \end{macrocode}
-% Make all upper case
-% \begin{macrocode}
- \ifglsused\glslabel
- {%
-% \end{macrocode}
-% Subsequent use
-% \begin{macrocode}
- \mfirstucMakeUppercase{#2{\glsentrytext{\glslabel}}%
- {\glsentrydesc{\glslabel}}%
- {\glsentrysymbol{\glslabel}}{\glsinsert}}%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- \mfirstucMakeUppercase{#1{\glsentryfirst{\glslabel}}%
- {\glsentrydesc{\glslabel}}%
- {\glsentrysymbol{\glslabel}}{\glsinsert}}%
- }%
- }%
- }%
- }%
- {%
-% \end{macrocode}
-% Custom text provided in \cs{glsdisp}
-% \begin{macrocode}
- \ifglsused{\glslabel}%
- {%
-% \end{macrocode}
-% Subsequent use
-% \begin{macrocode}
- #2{\glscustomtext}%
- {\glsentrydesc{\glslabel}}%
- {\glsentrysymbol{\glslabel}}{}%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- #1{\glscustomtext}%
- {\glsentrydesc{\glslabel}}%
- {\glsentrysymbol{\glslabel}}{}%
- }%
- }%
-}
+\newcommand*{\glsentryfmt}{\glsgenentryfmt}
% \end{macrocode}
%\end{macro}
%
@@ -8064,16 +8272,15 @@ false,nolabel,autolabel,nameref}[nolabel]{%
{%
% \end{macrocode}
% Subsequent use
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
- \mfirstucMakeUppercase
- {\glsentryplural{\glslabel}\glsinsert}%
+ \glsuppercase{\glsentryplural{\glslabel}\glsinsert}%
}%
{%
% \end{macrocode}
% First use
% \begin{macrocode}
- \mfirstucMakeUppercase
- {\glsentryfirstplural{\glslabel}\glsinsert}%
+ \glsuppercase{\glsentryfirstplural{\glslabel}\glsinsert}%
}%
}%
}%
@@ -8127,13 +8334,13 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Subsequent use
% \begin{macrocode}
- \mfirstucMakeUppercase{\glsentrytext{\glslabel}\glsinsert}%
+ \glsuppercase{\glsentrytext{\glslabel}\glsinsert}%
}%
{%
% \end{macrocode}
% First use
% \begin{macrocode}
- \mfirstucMakeUppercase{\glsentryfirst{\glslabel}\glsinsert}%
+ \glsuppercase{\glsentryfirst{\glslabel}\glsinsert}%
}%
}%
}%
@@ -8152,8 +8359,8 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\glsgenacfmt}
%\changes{4.02}{2013-12-05}{new}
% Define a generic acronym format that uses the \gloskey{long} and
-% \gloskey{short} keys (or their plurals) and \ics{acrfullformat},
-% \ics{firstacronymfont} and \ics{acronymfont}.
+% \gloskey{short} keys (or their plurals) and \cs{acrfullformat},
+% \cs{firstacronymfont} and \cs{acronymfont}.
% \begin{macrocode}
\newcommand*{\glsgenacfmt}{%
\ifdefempty\glscustomtext
@@ -8184,8 +8391,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
{%
% \end{macrocode}
% Subsequent plural form, all caps:
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
- \mfirstucMakeUppercase
+ \glsuppercase
{\acronymfont{\glsentryshortpl{\glslabel}}\glsinsert}%
}%
}%
@@ -8210,7 +8418,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Subsequent singular form, all caps:
% \begin{macrocode}
- \mfirstucMakeUppercase
+ \glsuppercase
{\acronymfont{\glsentryshort{\glslabel}}\glsinsert}%
}%
}%
@@ -8241,7 +8449,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% First use plural form, all caps:
% \begin{macrocode}
- \mfirstucMakeUppercase
+ \glsuppercase
{\genplacrfullformat{\glslabel}{\glsinsert}}%
}%
}%
@@ -8266,7 +8474,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% First use singular form, all caps:
% \begin{macrocode}
- \mfirstucMakeUppercase
+ \glsuppercase
{\genacrfullformat{\glslabel}{\glsinsert}}%
}%
}%
@@ -8303,7 +8511,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \begin{macrocode}
\newcommand*{\Genacrfullformat}[2]{%
\protected@edef\gls@text{\genacrfullformat{#1}{#2}}%
- \xmakefirstuc\gls@text
+ \expandafter\glssentencecase\expandafter{\gls@text}%
}
% \end{macrocode}
%\end{macro}
@@ -8329,84 +8537,41 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \begin{macrocode}
\newcommand*{\Genplacrfullformat}[2]{%
\protected@edef\gls@text{\genplacrfullformat{#1}{#2}}%
- \xmakefirstuc\gls@text
+ \expandafter\glssentencecase\expandafter{\gls@text}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\glsdisplayfirst}
-% Deprecated. Kept for backward compatibility.
%\changes{3.11a}{2013-10-15}{obsoleted}
-% \begin{macrocode}
-\newcommand*{\glsdisplayfirst}[4]{#1#4}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+%\cs{glsdisplayfirst} deprecated in v3.11a (2013-10-15) and removed in
+%v4.50.
+%Use rollback if required.
%\end{macro}
%
%\begin{macro}{\glsdisplay}
-% Deprecated. Kept for backward compatibility.
%\changes{3.11a}{2013-10-15}{obsoleted}
-% \begin{macrocode}
-\newcommand*{\glsdisplay}[4]{#1#4}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+%\cs{glsdisplay} deprecated in v3.11a (2013-10-15) and removed in
+%v4.50.
+%Use rollback if required.
%\end{macro}
%
%\begin{macro}{\defglsdisplay}
%\changes{3.11a}{2013-10-15}{obsoleted}
-% Deprecated. Kept for backward compatibility.
-% \begin{macrocode}
-\newcommand*{\defglsdisplay}[2][\glsdefaulttype]{%
- \GlossariesWarning{\string\defglsdisplay\space is now obsolete.^^J
- Use \string\defglsentryfmt\space instead}%
- \expandafter\def\csname gls@#1@display\endcsname##1##2##3##4{#2}%
- \edef\@gls@doentrydef{%
- \noexpand\defglsentryfmt[#1]{%
- \noexpand\ifcsdef{gls@#1@displayfirst}%
- {%
- \noexpand\@@gls@default@entryfmt
- {\noexpand\csuse{gls@#1@displayfirst}}%
- {\noexpand\csuse{gls@#1@display}}%
- }%
- {%
- \noexpand\@@gls@default@entryfmt
- {\noexpand\glsdisplayfirst}%
- {\noexpand\csuse{gls@#1@display}}%
- }%
- }%
- }%
- \@gls@doentrydef
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+%\cs{defglsdisplay} deprecated in v3.11a (2013-10-15) and removed in
+%v4.50.
+%Use rollback if required.
%\end{macro}
%
%\begin{macro}{\defglsdisplayfirst}
-% Deprecated. Kept for backward compatibility.
%\changes{3.11a}{2013-10-15}{obsoleted}
-% \begin{macrocode}
-\newcommand*{\defglsdisplayfirst}[2][\glsdefaulttype]{%
- \GlossariesWarning{\string\defglsdisplayfirst\space is now obsolete.^^J
- Use \string\defglsentryfmt\space instead}%
- \expandafter\def\csname gls@#1@displayfirst\endcsname##1##2##3##4{#2}%
- \edef\@gls@doentrydef{%
- \noexpand\defglsentryfmt[#1]{%
- \noexpand\ifcsdef{gls@#1@display}%
- {%
- \noexpand\@@gls@default@entryfmt
- {\noexpand\csuse{gls@#1@displayfirst}}%
- {\noexpand\csuse{gls@#1@display}}%
- }%
- {%
-% \end{macrocode}
-%\changes{4.04}{2014-03-06}{fixed unwanted space}
-% \begin{macrocode}
- \noexpand\@@gls@default@entryfmt
- {\noexpand\csuse{gls@#1@displayfirst}}%
- {\noexpand\glsdisplay}%
- }%
- }%
- }%
- \@gls@doentrydef
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+%\cs{defglsdisplayfirst} deprecated in v3.11a (2013-10-15) and removed in
+%v4.50.
+%Use rollback if required.
%\end{macro}
%
%\subsubsection{Links to glossary entries}
@@ -8417,7 +8582,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% the commands like \cs{gls} have a final optional
% argument that can be used to insert additional text in the
% link (this will usually be appended, but can be redefined using
-% \ics{defglsentryfmt}).
+% \cs{defglsentryfmt}).
% It goes against the \LaTeX\ norm to have an optional
% argument after the mandatory arguments, but it makes more
% sense to write, say, \verb|\gls{label}['s]| rather than, say,
@@ -8426,7 +8591,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% will be ignored after them. This is likely to lead to
% confusion as most users would not expect, say, "\gls{"\meta{label}"}"
% to ignore following spaces, so \cs{new@ifnextchar} from the
-% \isty{amsgen} package is required.
+% \sty{amsgen} package is required.
%
% The following keys can be used in the first optional
% argument. The \gloskey[glslink]{counter} key checks that the
@@ -8457,32 +8622,74 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\define@key{glslink}{format}{%
\def\@glsnumberformat{#1}}
% \end{macrocode}
+%
+%\begin{macro}{\@gls@glslink@hyper@update@hook}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@glslink@hyper@update@hook}{}
+% \end{macrocode}
+%\end{macro}
+%
% The \gloskey[glslink]{hyper} key is a boolean key, it can either have the
% value true or false, and indicates whether or not to make a
% hyperlink to the relevant glossary entry. If hyper is false, an
% entry will still be made in the glossary, but the given text
% won't be a hyperlink.
% \begin{macrocode}
-\define@boolkey{glslink}{hyper}[true]{}
+\define@boolkey{glslink}{hyper}[true]{\@gls@glslink@hyper@update@hook}
% \end{macrocode}
%\changes{4.08}{2014-07-30}{explicitly initialise hyper key}
% Initialise hyper key.
% \begin{macrocode}
\ifdef{\hyperlink}{\KV@glslink@hypertrue}{\KV@glslink@hyperfalse}
% \end{macrocode}
+%
+%Commands like \cs{gls} and \cs{glsdisp} unset the first use flag
+%afterwards. Provide a way to localise this.
+%\begin{macro}{\@gls@save@glslocal}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@save@glslocal}{%
+ \let\if@org@KV@glslink@local\ifKV@glslink@local
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@restore@glslocal}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@do@glsunset}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@do@glsunset}[1]{\glsunset{#1}}
+% \end{macrocode}
+%\end{macro}
+%
%\changes{3.04}{2012-11-18}{added local key}
% The \gloskey[glslink]{local} key is a boolean key. If true this
-% indicates that commands such as \ics{gls} should only do a local
+% indicates that commands such as \cs{gls} should only do a local
% reset rather than a global one.
% \begin{macrocode}
\define@boolkey{glslink}{local}[true]{}
+\@gls@save@glslocal
% \end{macrocode}
%
% The original \cs{glsifhyper} command isn't particularly useful
% as it makes more sense to check the actual hyperlink setting
% rather than testing whether the starred or unstarred version
% has been used. Therefore, as from version 4.08, \cs{glsifhyper}
-% is deprecated in favour of \ics{glsifhyperon}. In case there is
+% is deprecated in favour of \cs{glsifhyperon}. In case there is
% a particular need to know whether the starred or unstarred version
% was used, provide a new command that determines whether the
% *-version, +-version or unmodified version was used.
@@ -8497,15 +8704,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%\begin{macro}{\glsifhyper}
-% Now deprecated.
+% \cs{glsifhyper} deprecated in v4.08 (2014-07-30) and removed in
+% v4.50.
%\changes{4.08}{2014-07-30}{deprecated}
-% \begin{macrocode}
-\newcommand*{\glsifhyper}[2]{%
- \glslinkvar{#1}{#2}{#1}%
- \GlossariesWarning{\string\glsifhyper\space is deprecated. Did
- you mean \string\glsifhyperon\space or \string\glslinkvar?}%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
%\end{macro}
%
%\begin{macro}{\@gls@hyp@opt}
@@ -8593,6 +8795,22 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glslink}
+%\changes{4.50}{2022-10-14}{new}
+%Provide a sentence-case version in order to set up a map.
+% \begin{macrocode}
+\newrobustcmd*{\Glslink}{%
+ \@gls@hyp@opt\@Gls@@link
+}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+\newcommand*{\@Gls@@link}[3][]{%
+ \@gls@@link[#1]{#2}{\glssentencecase{#3}}%
+}
+\glsmfuaddmap{\glslink}{\Glslink}
+% \end{macrocode}
+%
%\begin{macro}{\glspostlinkhook}
%\changes{4.16}{2015-07-08}{new}
% \begin{macrocode}
@@ -8635,7 +8853,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%
%\begin{macro}{\glslinkcheckfirsthyperhook}
-% Allow used to hook into the \cs{@gls@link@checkfirsthyper} macro
+% Allow user to hook into the \cs{@gls@link@checkfirsthyper} macro
%\changes{4.08}{2014-07-30}{new}
% \begin{macrocode}
\newcommand*{\glslinkcheckfirsthyperhook}{}
@@ -8717,6 +8935,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \begin{macrocode}
\let\org@ifKV@glslink@hyper\ifKV@glslink@hyper
% \end{macrocode}
+%Save original setting of local key.
+% \begin{macrocode}
+ \@gls@save@glslocal
+% \end{macrocode}
% Set defaults:
%\changes{4.20}{2015-11-30}{added \cs{@gls@setdefault@glslink@opts}}
% \begin{macrocode}
@@ -8756,7 +8978,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% to prevent unwanted whatsit}
% (De-tok'ing done by \cs{@@do@wrglossary})
% \begin{macrocode}
- \@do@wrglossary{#2}%
+ \glsencapwrcontent{\@do@wrglossary{#2}}%
\ifKV@glslink@hyper
\@glslink{\glolinkprefix\glslabel}{\glstextformat{#3}}%
\else
@@ -8771,10 +8993,21 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Restore original setting
% \begin{macrocode}
\let\ifKV@glslink@hyper\org@ifKV@glslink@hyper
+ \@gls@restore@glslocal
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glsencapwrcontent}
+%\changes{4.50}{2022-10-14}{new}
+%This command is also provided by \sty{glossaries-extra} v1.49.
+%It's purpose is to resolve
+%\href{https://www.dickimaw-books.com/bugtracker.php?key=189}{issue \#189}.
+% \begin{macrocode}
+\newcommand*{\glsencapwrcontent}[1]{{#1}}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glolinkprefix}
% \begin{macrocode}
\newcommand*{\glolinkprefix}{glo:}
@@ -8929,17 +9162,21 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Unsanitize \cs{gls@numberpage}, \cs{gls@alphpage},
% \cs{gls@Alphpage} and \cs{glsromanpage} (thanks to David~Carlise
% for the suggestion.)
+%\changes{4.50}{2022-10-14}{check esclocations setting}
+%Skip if esclocations=false.
% \begin{macrocode}
- \@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}%
+ \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
}%
- \gls@dosubst
- }%
+ \fi
% \end{macrocode}
% Assign to required control sequence
% \begin{macrocode}
@@ -8947,7 +9184,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%\end{macro}
-% Catch special characters\mkidxspch\ (argument must be a
+% Catch special characters (argument must be a
% control sequence):
%\begin{macro}{\@gls@checkmkidxchars}
% \begin{macrocode}
@@ -9008,7 +9245,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%\begin{macro}{\@gls@checkquote}
% Replace \verb|"| with \verb|""| since \verb|"| is a makeindex
-% special character\mkidxspch.
+% special character.
% \begin{macrocode}
\def\@gls@checkquote#1"#2"#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
@@ -9351,9 +9588,11 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \begin{macrocode}
\newlength\gls@tmplen
\newcommand*{\glsdohypertarget}[2]{%
- \@glsshowtarget{#1}%
- \settoheight{\gls@tmplen}{#2}%
- \raisebox{\gls@tmplen}{\hypertarget{#1}{}}#2%
+ \glsdoshowtarget{#1}%
+ {%
+ \settoheight{\gls@tmplen}{#2}%
+ \raisebox{\gls@tmplen}{\hypertarget{#1}{}}#2%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -9361,8 +9600,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{4.08}{2014-07-30}{new}
% \begin{macrocode}
\newcommand*{\glsdohyperlink}[2]{%
- \@glsshowtarget{#1}%
- \hyperlink{#1}{#2}%
+ \glsdoshowtarget{#1}{\hyperlink{#1}{#2}}%
}
% \end{macrocode}
%\end{macro}
@@ -9375,9 +9613,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%
%\begin{macro}{\@glslink}
-% If \ics{hyperlink} is not defined \cs{@glslink}
+% If \cs{hyperlink} is not defined \cs{@glslink}
% ignores its first argument and just does the second argument,
-% otherwise it is equivalent to \ics{hyperlink}.
+% otherwise it is equivalent to \cs{hyperlink}.
%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
%\cs{ifcsundef}}
% \begin{macrocode}
@@ -9394,9 +9632,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% to \cs{hyperlink} (memoir defines \cs{hyperlink} but not
% \cs{hypertarget})}
%\begin{macro}{\@glstarget}
-% If \ics{hypertarget} is not defined, \cs{@glstarget}
+% If \cs{hypertarget} is not defined, \cs{@glstarget}
% ignores its first argument and just does the second argument,
-% otherwise it is equivalent to \ics{hypertarget}.
+% otherwise it is equivalent to \cs{hypertarget}.
%\changes{1.16}{2008-08-27}{raised the hypertarget so the target text doesn't
% scroll off the top of the page}
% \begin{macrocode}
@@ -9454,12 +9692,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% keys used when the entry was defined.
%
% The first optional argument is a key-value list, the same as
-% \ics{glslink}\igloskey[glslink]{hyper}\igloskey[glslink]{format}\igloskey[glslink]{counter},
+% \cs{glslink},
% the mandatory argument is the entry label.
% After the mandatory argument, there is another optional argument
% to insert extra text in the link text (the location of the inserted
-% text is governed by \ics{glsdisplay} and
-% \ics{glsdisplayfirst}). As with \cs{glslink}
+% text is governed by \cs{glsdisplay} and
+% \cs{glsdisplayfirst}). As with \cs{glslink}
% there is a starred version which is the same as the unstarred
% version but with the \gloskey[glslink]{hyper} key set to \texttt{false}.
% (Additional options can also be specified
@@ -9528,11 +9766,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Indicate that this entry has now been used
% \begin{macrocode}
- \ifKV@glslink@local
- \glslocalunset{#2}%
- \else
- \glsunset{#2}%
- \fi
+ \@gls@do@glsunset{#2}%
}%
% \end{macrocode}
%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
@@ -9554,8 +9788,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Gls}{\@gls@hyp@opt\@Gls}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\gls}{\Gls}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGls}}
-% Defined the un-starred form. Need to determine if there is
+% Define the un-starred form. Need to determine if there is
% a final optional argument
% \begin{macrocode}
\newcommand*{\@Gls}[2][]{%
@@ -9610,11 +9848,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Indicate that this entry has now been used
% \begin{macrocode}
- \ifKV@glslink@local
- \glslocalunset{#2}%
- \else
- \glsunset{#2}%
- \fi
+ \@gls@do@glsunset{#2}%
}%
% \end{macrocode}
%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
@@ -9624,13 +9858,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-% \cs{GLS} behaves like \ics{gls}, but the link
+% \cs{GLS} behaves like \cs{gls}, but the link
% text is converted to uppercase:
%\changes{3.01}{2011-04-12}{made robust}
%\begin{macro}{\GLS}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLS}{\@gls@hyp@opt\@GLS}
+\glsmfublocker{\GLS}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLS}}
@@ -9689,11 +9924,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Indicate that this entry has now been used
% \begin{macrocode}
- \ifKV@glslink@local
- \glslocalunset{#2}%
- \else
- \glsunset{#2}%
- \fi
+ \@gls@do@glsunset{#2}%
}%
% \end{macrocode}
%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
@@ -9703,7 +9934,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-% \cs{glspl} behaves in the same way as \ics{gls} except
+% \cs{glspl} behaves in the same way as \cs{gls} except
% it uses the plural form.
%\begin{macro}{\glspl}
%\changes{3.01}{2011-04-12}{made robust}
@@ -9769,11 +10000,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Indicate that this entry has now been used
% \begin{macrocode}
- \ifKV@glslink@local
- \glslocalunset{#2}%
- \else
- \glsunset{#2}%
- \fi
+ \@gls@do@glsunset{#2}%
}%
% \end{macrocode}
%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
@@ -9783,9 +10010,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-% \cs{Glspl} behaves in the same way as \ics{glspl}, except
+% \cs{Glspl} behaves in the same way as \cs{glspl}, except
% that the first letter of the link text is converted to uppercase
-% (as with \ics{Gls}, if the first letter has an accent, it
+% (as with \cs{Gls}, if the first letter has an accent, it
% will need to be grouped).
%\begin{macro}{\Glspl}
%\changes{3.01}{2011-04-12}{made robust}
@@ -9794,8 +10021,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glspl}{\@gls@hyp@opt\@Glspl}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glspl}{\Glspl}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlspl}}
-% Defined the un-starred form. Need to determine if there is
+% Define the un-starred form. Need to determine if there is
% a final optional argument
% \begin{macrocode}
\newcommand*{\@Glspl}[2][]{%
@@ -9854,11 +10085,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Indicate that this entry has now been used
% \begin{macrocode}
- \ifKV@glslink@local
- \glslocalunset{#2}%
- \else
- \glsunset{#2}%
- \fi
+ \@gls@do@glsunset{#2}%
}%
% \end{macrocode}
%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
@@ -9868,17 +10095,18 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-% \cs{GLSpl} behaves like \ics{glspl} except that all the
+% \cs{GLSpl} behaves like \cs{glspl} except that all the
% link text is converted to uppercase.
%\begin{macro}{\GLSpl}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSpl}{\@gls@hyp@opt\@GLSpl}
+\glsmfublocker{\GLSpl}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSpl}}
-% Defined the un-starred form. Need to determine if there is
+% Define the un-starred form. Need to determine if there is
% a final optional argument
% \begin{macrocode}
\newcommand*{\@GLSpl}[2][]{%
@@ -9936,11 +10164,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Indicate that this entry has now been used
% \begin{macrocode}
- \ifKV@glslink@local
- \glslocalunset{#2}%
- \else
- \glsunset{#2}%
- \fi
+ \@gls@do@glsunset{#2}%
}%
% \end{macrocode}
%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
@@ -10014,11 +10238,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Indicate that this entry has now been used
%\changes{2.05}{2010-02-06}{Removed spurious brace. Patch provided by Sergiu Dotenco}
% \begin{macrocode}
- \ifKV@glslink@local
- \glslocalunset{#2}%
- \else
- \glsunset{#2}%
- \fi
+ \@gls@do@glsunset{#2}%
}%
% \end{macrocode}
%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
@@ -10028,6 +10248,23 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\Glsdisp}
+%\changes{4.50}{2022-10-14}{new}
+%Provide a sentence-case version to make it easier to map.
+% \begin{macrocode}
+\newrobustcmd*{\Glsdisp}{\@gls@hyp@opt\@Glsdisp}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@Glsdisp}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@Glsdisp}[3][]{%
+ \@glsdisp[#1]{#2}{\glssentencecase{#3}}%
+}
+\glsmfuaddmap{\glsdisp}{\Glsdisp}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@gls@link@nocheckfirsthyper}
%\changes{4.19}{2015-11-22}{new}
% Instead of just setting \cs{do@gls@link@checkfirsthyper} to
@@ -10040,6 +10277,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%
%\begin{macro}{\@gls@field@link}
+%\begin{definition}
+%\cs{@gls@field@link}\marg{options}\marg{label}\marg{link text}
+%\end{definition}
%\changes{4.03}{2014-01-20}{new}
%\changes{4.08}{2014-07-30}{added assignment of \cs{do@gls@link@checkfirsthyper}}
% \begin{macrocode}
@@ -10057,7 +10297,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-% \cs{glstext} behaves like \ics{gls} except it always uses the value
+% \cs{glstext} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{text} key and it doesn't mark the entry as
% used.
%\begin{macro}{\glstext}
@@ -10089,6 +10329,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLStext}{\@gls@hyp@opt\@GLStext}
+\glsmfublocker{\GLStext}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLStext}}
@@ -10100,9 +10341,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Read in the final optional argument:
% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLStext@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentrytext{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrytext{#2}#3}}%
}
% \end{macrocode}
%
@@ -10115,8 +10357,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glstext}{\@gls@hyp@opt\@Glstext}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glstext}{\Glstext}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlstext}}
-% Defined the un-starred form. Need to determine if there is
+% Define the un-starred form. Need to determine if there is
% a final optional argument
% \begin{macrocode}
\newcommand*{\@Glstext}[2][]{%
@@ -10131,7 +10377,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{glsfirst} behaves like \ics{gls} except it always uses the value
+% \cs{glsfirst} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{first} key and it doesn't mark the entry as
% used.
%\begin{macro}{\glsfirst}
@@ -10157,7 +10403,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glsfirst} behaves like \ics{glsfirst} except it displays the
+% \cs{Glsfirst} behaves like \cs{glsfirst} except it displays the
% first letter in uppercase.
%\begin{macro}{\Glsfirst}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
@@ -10165,8 +10411,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsfirst}{\@gls@hyp@opt\@Glsfirst}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsfirst}{\Glsfirst}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlsfirst}}
-% Defined the un-starred form. Need to determine if there is
+% Define the un-starred form. Need to determine if there is
% a final optional argument
% \begin{macrocode}
\newcommand*{\@Glsfirst}[2][]{%
@@ -10181,12 +10431,13 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSfirst} behaves like \ics{Glsfirst} except it displays the
+% \cs{GLSfirst} behaves like \cs{Glsfirst} except it displays the
% text in uppercase.
%\begin{macro}{\GLSfirst}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSfirst}{\@gls@hyp@opt\@GLSfirst}
+\glsmfublocker{\GLSfirst}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSfirst}}
@@ -10199,13 +10450,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Read in the final optional argument:
% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryfirst}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSfirst@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryfirst{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryfirst{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glsplural} behaves like \ics{gls} except it always uses the value
+% \cs{glsplural} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{plural} key and it doesn't mark the entry as
% used.
%\begin{macro}{\glsplural}
@@ -10230,7 +10482,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glsplural} behaves like \ics{glsplural} except that the first
+% \cs{Glsplural} behaves like \cs{glsplural} except that the first
% letter is converted to uppercase.
%\begin{macro}{\Glsplural}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
@@ -10238,8 +10490,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsplural}{\@gls@hyp@opt\@Glsplural}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsplural}{\Glsplural}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlsplural}}
-% Defined the un-starred form. Need to determine if there is
+% Define the un-starred form. Need to determine if there is
% a final optional argument
% \begin{macrocode}
\newcommand*{\@Glsplural}[2][]{%
@@ -10254,17 +10510,18 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSplural} behaves like \ics{glsplural} except that the
+% \cs{GLSplural} behaves like \cs{glsplural} except that the
% text is converted to uppercase.
%\begin{macro}{\GLSplural}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSplural}{\@gls@hyp@opt\@GLSplural}
+\glsmfublocker{\GLSplural}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSplural}}
-% Defined the un-starred form. Need to determine if there is
+% Define the un-starred form. Need to determine if there is
% a final optional argument
% \begin{macrocode}
\newcommand*{\@GLSplural}[2][]{%
@@ -10273,13 +10530,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Read in the final optional argument:
% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryplural}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSplural@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryplural{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryplural{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glsfirstplural} behaves like \ics{gls} except it always uses the value
+% \cs{glsfirstplural} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{firstplural} key and it doesn't mark the entry as
% used.
%\begin{macro}{\glsfirstplural}
@@ -10306,7 +10564,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glsfirstplural} behaves like \ics{glsfirstplural} except that the
+% \cs{Glsfirstplural} behaves like \cs{glsfirstplural} except that the
% first letter is converted to uppercase.
%\begin{macro}{\Glsfirstplural}
%\changes{3.01}{2011-04-12}{made robust}
@@ -10315,6 +10573,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsfirstplural}{\@gls@hyp@opt\@Glsfirstplural}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsfirstplural}{\Glsfirstplural}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlsfirstplural}}
% Defined the un-starred form. Need to determine if there is
% a final optional argument
@@ -10332,13 +10594,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSfirstplural} behaves like \ics{glsfirstplural} except that the
+% \cs{GLSfirstplural} behaves like \cs{glsfirstplural} except that the
% link text is converted to uppercase.
%\begin{macro}{\GLSfirstplural}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSfirstplural}{\@gls@hyp@opt\@GLSfirstplural}
+\glsmfublocker{\GLSfirstplural}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSfirstplural}}
@@ -10352,13 +10615,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
%\changes{3.11a}{2013-10-15}{changed to just use
%\cs{glsentryfirstplural}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSfirstplural@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryfirstplural{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryfirstplural{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glsname} behaves like \ics{gls} except it always uses the value
+% \cs{glsname} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{name} key and it doesn't mark the entry as
% used.
%\begin{macro}{\glsname}
@@ -10384,7 +10648,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glsname} behaves like \ics{glsname} except that the
+% \cs{Glsname} behaves like \cs{glsname} except that the
% first letter is converted to uppercase.
%\begin{macro}{\Glsname}
%\changes{3.01}{2011-04-12}{made robust}
@@ -10393,8 +10657,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsname}{\@gls@hyp@opt\@Glsname}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsname}{\Glsname}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlsname}}
-% Defined the un-starred form. Need to determine if there is
+% Define the un-starred form. Need to determine if there is
% a final optional argument
% \begin{macrocode}
\newcommand*{\@Glsname}[2][]{%
@@ -10409,13 +10677,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSname} behaves like \ics{glsname} except that the
+% \cs{GLSname} behaves like \cs{glsname} except that the
% link text is converted to uppercase.
%\begin{macro}{\GLSname}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSname}{\@gls@hyp@opt\@GLSname}
+\glsmfublocker{\GLSname}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSname}}
@@ -10428,13 +10697,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Read in the final optional argument:
% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryname}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSname@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryname{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryname{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glsdesc} behaves like \ics{gls} except it always uses the value
+% \cs{glsdesc} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{description} key and it doesn't mark the entry
% as used.
%\begin{macro}{\glsdesc}
@@ -10460,7 +10730,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glsdesc} behaves like \ics{glsdesc} except that the
+% \cs{Glsdesc} behaves like \cs{glsdesc} except that the
% first letter is converted to uppercase.
%\begin{macro}{\Glsdesc}
%\changes{3.01}{2011-04-12}{made robust}
@@ -10469,6 +10739,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsdesc}{\@gls@hyp@opt\@Glsdesc}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsdesc}{\Glsdesc}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlsdesc}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -10485,13 +10759,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSdesc} behaves like \ics{glsdesc} except that the
+% \cs{GLSdesc} behaves like \cs{glsdesc} except that the
% link text is converted to uppercase.
%\begin{macro}{\GLSdesc}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSdesc}{\@gls@hyp@opt\@GLSdesc}
+\glsmfublocker{\GLSdesc}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSdesc}}
@@ -10504,13 +10779,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Read in the final optional argument:
%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentrydesc}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSdesc@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentrydesc{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrydesc{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glsdescplural} behaves like \ics{gls} except it always uses the value
+% \cs{glsdescplural} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{descriptionplural} key and it doesn't mark the entry
% as used.
%\begin{macro}{\glsdescplural}
@@ -10537,7 +10813,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glsdescplural} behaves like \ics{glsdescplural} except that the
+% \cs{Glsdescplural} behaves like \cs{glsdescplural} except that the
% first letter is converted to uppercase.
%\begin{macro}{\Glsdescplural}
%\changes{3.01}{2011-04-12}{made robust}
@@ -10546,6 +10822,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsdescplural}{\@gls@hyp@opt\@Glsdescplural}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsdescplural}{\Glsdescplural}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlsdescplural}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -10563,13 +10843,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSdescplural} behaves like \ics{glsdescplural} except that the
+% \cs{GLSdescplural} behaves like \cs{glsdescplural} except that the
% link text is converted to uppercase.
%\begin{macro}{\GLSdescplural}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSdescplural}{\@gls@hyp@opt\@GLSdescplural}
+\glsmfublocker{\GLSdescplural}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSdescplural}}
@@ -10583,13 +10864,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
%\changes{3.11a}{2013-10-15}{changed to just use
%\cs{glsentrydescplural}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSdescplural@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentrydescplural{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrydescplural{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glssymbol} behaves like \ics{gls} except it always uses the value
+% \cs{glssymbol} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{symbol} key and it doesn't mark the entry as
% used.
%\begin{macro}{\glssymbol}
@@ -10615,7 +10897,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glssymbol} behaves like \ics{glssymbol} except that the
+% \cs{Glssymbol} behaves like \cs{glssymbol} except that the
% first letter is converted to uppercase.
%\begin{macro}{\Glssymbol}
%\changes{3.01}{2011-04-12}{made robust}
@@ -10624,6 +10906,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glssymbol}{\@gls@hyp@opt\@Glssymbol}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glssymbol}{\Glssymbol}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlssymbol}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -10640,13 +10926,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSsymbol} behaves like \ics{glssymbol} except that the
+% \cs{GLSsymbol} behaves like \cs{glssymbol} except that the
% link text is converted to uppercase.
%\begin{macro}{\GLSsymbol}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSsymbol}{\@gls@hyp@opt\@GLSsymbol}
+\glsmfublocker{\GLSsymbol}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSsymbol}}
@@ -10659,13 +10946,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Read in the final optional argument:
%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentrysymbol}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSsymbol@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentrysymbol{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrysymbol{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glssymbolplural} behaves like \ics{gls} except it always uses the value
+% \cs{glssymbolplural} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{symbolplural} key and it doesn't mark the entry as
% used.
%\begin{macro}{\glssymbolplural}
@@ -10692,7 +10980,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glssymbolplural} behaves like \ics{glssymbolplural} except that the
+% \cs{Glssymbolplural} behaves like \cs{glssymbolplural} except that the
% first letter is converted to uppercase.
%\begin{macro}{\Glssymbolplural}
%\changes{3.01}{2011-04-12}{made robust}
@@ -10701,6 +10989,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glssymbolplural}{\@gls@hyp@opt\@Glssymbolplural}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glssymbolplural}{\Glssymbolplural}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlssymbolplural}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -10718,13 +11010,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSsymbolplural} behaves like \ics{glssymbolplural} except that the
+% \cs{GLSsymbolplural} behaves like \cs{glssymbolplural} except that the
% link text is converted to uppercase.
%\begin{macro}{\GLSsymbolplural}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSsymbolplural}{\@gls@hyp@opt\@GLSsymbolplural}
+\glsmfublocker{\GLSsymbolplural}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSsymbolplural}}
@@ -10738,13 +11031,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
%\changes{3.11a}{2013-10-15}{changed to just use
%\cs{glsentrysymbolplural}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSsymbolplural@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentrysymbolplural{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrysymbolplural{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glsuseri} behaves like \ics{gls} except it always uses the value
+% \cs{glsuseri} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{user1} key and it doesn't mark the entry
% as used.
%\begin{macro}{\glsuseri}
@@ -10769,7 +11063,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glsuseri} behaves like \ics{glsuseri} except that the
+% \cs{Glsuseri} behaves like \cs{glsuseri} except that the
% first letter is converted to uppercase.
%\begin{macro}{\Glsuseri}
%\changes{3.01}{2011-04-12}{made robust}
@@ -10778,6 +11072,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsuseri}{\@gls@hyp@opt\@Glsuseri}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsuseri}{\Glsuseri}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlsuseri}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -10793,13 +11091,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSuseri} behaves like \ics{glsuseri} except that the
+% \cs{GLSuseri} behaves like \cs{glsuseri} except that the
% link text is converted to uppercase.
%\begin{macro}{\GLSuseri}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSuseri}{\@gls@hyp@opt\@GLSuseri}
+\glsmfublocker{\GLSuseri}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSuseri}}
@@ -10811,13 +11110,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Read in the final optional argument:
%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuseri}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSuseri@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryuseri{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuseri{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glsuserii} behaves like \ics{gls} except it always uses the value
+% \cs{glsuserii} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{user2} key and it doesn't mark the entry
% as used.
%\begin{macro}{\glsuserii}
@@ -10842,7 +11142,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glsuserii} behaves like \ics{glsuserii} except that the
+% \cs{Glsuserii} behaves like \cs{glsuserii} except that the
% first letter is converted to uppercase.
%\begin{macro}{\Glsuserii}
%\changes{3.01}{2011-04-12}{made robust}
@@ -10851,6 +11151,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsuserii}{\@gls@hyp@opt\@Glsuserii}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsuserii}{\Glsuserii}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlsuserii}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -10866,13 +11170,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSuserii} behaves like \ics{glsuserii} except that the
+% \cs{GLSuserii} behaves like \cs{glsuserii} except that the
% link text is converted to uppercase.
%\begin{macro}{\GLSuserii}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSuserii}{\@gls@hyp@opt\@GLSuserii}
+\glsmfublocker{\GLSuserii}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSuserii}}
@@ -10884,13 +11189,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Read in the final optional argument:
%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuserii}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSuserii@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryuserii{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuserii{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glsuseriii} behaves like \ics{gls} except it always uses the value
+% \cs{glsuseriii} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{user3} key and it doesn't mark the entry
% as used.
%\begin{macro}{\glsuseriii}
@@ -10915,7 +11221,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glsuseriii} behaves like \ics{glsuseriii} except that the
+% \cs{Glsuseriii} behaves like \cs{glsuseriii} except that the
% first letter is converted to uppercase.
%\begin{macro}{\Glsuseriii}
%\changes{3.01}{2011-04-12}{made robust}
@@ -10924,6 +11230,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsuseriii}{\@gls@hyp@opt\@Glsuseriii}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsuseriii}{\Glsuseriii}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlsuseriii}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -10939,13 +11249,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSuseriii} behaves like \ics{glsuseriii} except that the
+% \cs{GLSuseriii} behaves like \cs{glsuseriii} except that the
% link text is converted to uppercase.
%\begin{macro}{\GLSuseriii}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSuseriii}{\@gls@hyp@opt\@GLSuseriii}
+\glsmfublocker{\GLSuseriii}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSuseriii}}
@@ -10957,13 +11268,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Read in the final optional argument:
%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuseriii}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSuseriii@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryuseriii{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuseriii{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glsuseriv} behaves like \ics{gls} except it always uses the value
+% \cs{glsuseriv} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{user4} key and it doesn't mark the entry
% as used.
%\begin{macro}{\glsuseriv}
@@ -10988,7 +11300,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glsuseriv} behaves like \ics{glsuseriv} except that the
+% \cs{Glsuseriv} behaves like \cs{glsuseriv} except that the
% first letter is converted to uppercase.
%\begin{macro}{\Glsuseriv}
%\changes{3.01}{2011-04-12}{made robust}
@@ -10997,6 +11309,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsuseriv}{\@gls@hyp@opt\@Glsuseriv}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsuseriv}{\Glsuseriv}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlsuseriv}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -11012,13 +11328,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSuseriv} behaves like \ics{glsuseriv} except that the
+% \cs{GLSuseriv} behaves like \cs{glsuseriv} except that the
% link text is converted to uppercase.
%\begin{macro}{\GLSuseriv}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSuseriv}{\@gls@hyp@opt\@GLSuseriv}
+\glsmfublocker{\GLSuseriv}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSuseriv}}
@@ -11030,13 +11347,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Read in the final optional argument:
%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuseriv}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSuseriv@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryuseriv{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuseriv{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glsuserv} behaves like \ics{gls} except it always uses the value
+% \cs{glsuserv} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{user5} key and it doesn't mark the entry
% as used.
%\begin{macro}{\glsuserv}
@@ -11061,7 +11379,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glsuserv} behaves like \ics{glsuserv} except that the
+% \cs{Glsuserv} behaves like \cs{glsuserv} except that the
% first letter is converted to uppercase.
%\begin{macro}{\Glsuserv}
%\changes{3.01}{2011-04-12}{made robust}
@@ -11070,6 +11388,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsuserv}{\@gls@hyp@opt\@Glsuserv}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsuserv}{\Glsuserv}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlsuserv}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -11085,13 +11407,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSuserv} behaves like \ics{glsuserv} except that the
+% \cs{GLSuserv} behaves like \cs{glsuserv} except that the
% link text is converted to uppercase.
%\begin{macro}{\GLSuserv}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSuserv}{\@gls@hyp@opt\@GLSuserv}
+\glsmfublocker{\GLSuserv}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSuserv}}
@@ -11103,13 +11426,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Read in the final optional argument:
%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuserv}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSuserv@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryuserv{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuserv{#2}#3}}%
}
% \end{macrocode}
%
-% \cs{glsuservi} behaves like \ics{gls} except it always uses the value
+% \cs{glsuservi} behaves like \cs{gls} except it always uses the value
% given by the \gloskey{user6} key and it doesn't mark the entry
% as used.
%\begin{macro}{\glsuservi}
@@ -11134,7 +11458,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{Glsuservi} behaves like \ics{glsuservi} except that the
+% \cs{Glsuservi} behaves like \cs{glsuservi} except that the
% first letter is converted to uppercase.
%\begin{macro}{\Glsuservi}
%\changes{3.01}{2011-04-12}{made robust}
@@ -11143,6 +11467,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsuservi}{\@gls@hyp@opt\@Glsuservi}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsuservi}{\Glsuservi}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sGlsuservi}}
% Defined the un-starred form. Need to determine if there is
% a final optional argument
@@ -11158,13 +11486,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \cs{GLSuservi} behaves like \ics{glsuservi} except that the
+% \cs{GLSuservi} behaves like \cs{glsuservi} except that the
% link text is converted to uppercase.
%\begin{macro}{\GLSuservi}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\GLSuservi}{\@gls@hyp@opt\@GLSuservi}
+\glsmfublocker{\GLSuservi}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sGLSuservi}}
@@ -11176,9 +11505,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Read in the final optional argument:
%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuservi}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\@GLSuservi@#1#2[#3]{%
- \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryuservi{#2}#3}}%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuservi{#2}#3}}%
}
% \end{macrocode}
%
@@ -11241,6 +11571,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Acrshort}{\@gls@hyp@opt\ns@Acrshort}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\Acrshort}{\Acrshort}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sAcrshort}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -11289,6 +11623,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\ACRshort}{\@gls@hyp@opt\ns@ACRshort}
+\glsmfublocker{\ACRshort}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sACRshort}}
@@ -11311,13 +11646,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\glslabel{#2}%
\let\glsifplural\@secondoftwo
\let\glscapscase\@thirdofthree
\let\glsinsert\@empty
\def\glscustomtext{%
- \mfirstucMakeUppercase{\acronymfont{\glsentryshort{#2}}#3}%
+ \glsuppercase{\acronymfont{\glsentryshort{#2}}#3}%
}%
% \end{macrocode}
%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
@@ -11392,6 +11728,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Acrshortpl}{\@gls@hyp@opt\ns@Acrshortpl}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\Acrshortpl}{\Acrshortpl}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sAcrshortpl}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -11440,6 +11780,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\ACRshortpl}{\@gls@hyp@opt\ns@ACRshortpl}
+\glsmfublocker{\ACRshortpl}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sACRshortpl}}
@@ -11462,13 +11803,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\glslabel{#2}%
\let\glsifplural\@firstoftwo
\let\glscapscase\@thirdofthree
\let\glsinsert\@empty
\def\glscustomtext{%
- \mfirstucMakeUppercase{\acronymfont{\glsentryshortpl{#2}}#3}%
+ \glsuppercase{\acronymfont{\glsentryshortpl{#2}}#3}%
}%
% \end{macrocode}
%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
@@ -11547,6 +11889,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Acrlong}{\@gls@hyp@opt\ns@Acrlong}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\Acrlong}{\Acrlong}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sAcrlong}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -11600,6 +11946,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\ACRlong}{\@gls@hyp@opt\ns@ACRlong}
+\glsmfublocker{\ACRlong}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sACRlong}}
@@ -11632,9 +11979,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Bug fix v4.02 removed \cs{acronymfont} from \cs{glscustomtext}
% (\cs{acronymfont} only designed for short form).
% \changes{4.02}{2013-12-05}{Removed \cs{acronymfont}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\glscustomtext{%
- \mfirstucMakeUppercase{\glsentrylong{#2}#3}%
+ \glsuppercase{\glsentrylong{#2}#3}%
}%
% \end{macrocode}
%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
@@ -11713,6 +12061,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Acrlongpl}{\@gls@hyp@opt\ns@Acrlongpl}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\Acrlongpl}{\Acrlongpl}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{@sAcrlongpl}}
% Define the un-starred form. Need to determine if there is
% a final optional argument
@@ -11767,6 +12119,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
% \begin{macrocode}
\newrobustcmd*{\ACRlongpl}{\@gls@hyp@opt\ns@ACRlongpl}
+\glsmfublocker{\ACRlongpl}
% \end{macrocode}
%\end{macro}
%\changes{4.08}{2014-07-30}{removed \cs{@sACRlongpl}}
@@ -11799,9 +12152,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Bug fix v4.02 removed \cs{acronymfont} from \cs{glscustomtext}
% (\cs{acronymfont} only designed for short form).
% \changes{4.02}{2013-12-05}{Removed \cs{acronymfont}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\def\glscustomtext{%
- \mfirstucMakeUppercase{\glsentrylongpl{#2}#3}%
+ \glsuppercase{\glsentrylongpl{#2}#3}%
}%
% \end{macrocode}
%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
@@ -11817,7 +12171,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%
-% \subsubsection{Displaying entry details without adding
+%\subsubsection{Displaying entry details without adding
% information to the glossary}
%\label{sec:code:glsnolink}
%
@@ -11827,12 +12181,15 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\@gls@entry@field}
% Generic version.
%\changes{4.03}{2014-01-20}{new}
+%\changes{4.50}{2022-10-14}{switched to \cs{csuse}}
%\begin{definition}
%\cs{@gls@entry@field}\marg{label}\marg{field}
%\end{definition}
+%Now using \cs{csuse} instead of \cs{csname} to expand to nothing
+%rather than \cs{relax} if undefined.
% \begin{macrocode}
\newcommand*{\@gls@entry@field}[2]{%
- \csname glo@\glsdetoklabel{#1}@#2\endcsname
+ \csuse{glo@\glsdetoklabel{#1}@#2}%
}
% \end{macrocode}
%\end{macro}
@@ -11855,14 +12212,15 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{definition}
%\cs{@Gls@entry@field}\marg{label}\marg{field}
%\end{definition}
+%Check for PDF bookmarks performed by \cs{@Glsentryfield}.
% \begin{macrocode}
-\newcommand*{\@Gls@entry@field}[2]{%
+\newrobustcmd*{\@Gls@entry@field}[2]{%
\glsdoifexistsordo{#1}%
{%
\letcs\@glo@text{glo@\glsdetoklabel{#1}@#2}%
\ifdef\@glo@text
{%
- \xmakefirstuc{\@glo@text}%
+ \expandafter\glssentencecase\expandafter{\@glo@text}%
}%
{%
??\PackageError{glossaries}{The field `#2' doesn't exist for glossary
@@ -11877,6 +12235,33 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%Aside from \cs{Glsentryname}, the \cs{Glsentry\ldots} sentence case commands can
+%all follow the same format.
+%\begin{macro}{\@Glsentryfield}
+%\changes{4.50}{2022-10-14}{new}
+%\begin{definition}
+%\cs{@Glsentryfield}\marg{entry-label}\marg{field-label}
+%\end{definition}
+% \begin{macrocode}
+\newcommand{\@Glsentryfield}[2]{%
+ \glstexorpdfstring{\@Gls@entry@field{#1}{#2}}%
+ {\MFUsentencecase{\@gls@entry@field{#1}{#2}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstexorpdfstring}
+%\changes{4.50}{2022-10-14}{new}
+%Provide a command that will use \cs{texorpdfstring} if it has been
+%defined. (Remove all the cumbersome tests to determine whether or
+%not that command has been defined.)
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{\newcommand{\glstexorpdfstring}{\texorpdfstring}}
+{\newcommand{\glstexorpdfstring}[2]{#1}}
+% \end{macrocode}
+%\end{macro}
+%
% Get the entry name (as specified by the \gloskey{name} key
% when the entry was defined). The argument
% is the label associated with the entry. Note that unless you
@@ -11888,19 +12273,33 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand*{\glsentryname}[1]{\@gls@entry@field{#1}{name}}
% \end{macrocode}
%\end{macro}
+%The sentence-case equivalents were made robust since they use the
+%non-expandable \cs{makefirstuc}. These will now expand in the PDF
+%bookmarks to sentence case using \cs{MFUsentencecase} (which is
+%expandable). Obviously, if any of the fields contain non-expandable
+%content (such as acronym font changing commands) then that will
+%cause a problem (which can be dealt with by using \sty{hyperref}'s
+%\cs{pdfstringdefDisableCommands}).
%\begin{macro}{\Glsentryname}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentryname}[1]{%
- \@Gls@entryname{#1}%
+\newcommand*{\Glsentryname}[1]{%
+ \glstexorpdfstring{\protect\@Gls@entryname{#1}}%
+ {\MFUsentencecase{\@gls@entry@field{#1}{name}}}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryname}{\Glsentryname}
+% \end{macrocode}
%
%\begin{macro}{\@Gls@entryname}
%\changes{4.10}{2014-08-27}{new}
% This is a workaround in the event that the user defies the warning
% in the manual about not using \cs{Glsname} or \cs{Glsentryname} with acronyms.
+% The check for PDF bookmarks is in \cs{Glsentryname}.
% First the default behaviour:
% \begin{macrocode}
\newcommand*{\@Gls@entryname}[1]{%
@@ -11910,15 +12309,45 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%\begin{macro}{\@Gls@acrentryname}
%\changes{4.10}{2014-08-27}{new}
-% Now the behaviour when \cs{setacronymstyle} is used:
+%\changes{4.50}{2022-10-14}{removed \sty{mfirstuc} internal commands}
+% Now the behaviour when \cs{setacronymstyle} is used. The original
+% definition of this command used \sty{mfirstuc} internal commands that are now
+% being deprecated.
% \begin{macrocode}
-\newcommand*{\@Gls@acrentryname}[1]{%
+\newrobustcmd*{\@Gls@acrentryname}[1]{%
+ \ifglshaslong{#1}%
+ {%
+% \end{macrocode}
+%Just need to ensure that \cs{acrnameformat} is expanded, which may
+%cause problems as non-robust semantic commands may expand to
+%content that interferes with sentence-casing.
+% \begin{macrocode}
+ \protected@edef\@glo@text{\@gls@entry@field{#1}{name}}%
+ \expandafter\glssentencecase\expandafter{\@glo@text}%
+ }%
+ {%
+% \end{macrocode}
+% Not an acronym
+% \begin{macrocode}
+ \@Gls@entry@field{#1}{name}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@org@Gls@acrentryname}
+%Original definition of \cs{@Gls@acrentryname}. This will be removed
+%in a later version.
+%\changes{4.50}{2022-10-14}{saved original definition of
+%\cs{@Gls@acrentryname}}
+% \begin{macrocode}
+\newcommand*{\@org@Gls@acrentryname}[1]{%
\ifglshaslong{#1}%
{%
\letcs\@glo@text{glo@\glsdetoklabel{#1}@name}%
% \end{macrocode}
%\cs{@gls@getbody} is defined by \sty{mfirstuc} (which used to be
-%part of \styfmt{glossaries}).
+%part of \sty{glossaries}).
% \begin{macrocode}
\expandafter\@gls@getbody\@glo@text{}\@nil
\expandafter\ifx\@gls@body\glsentrylong\relax
@@ -11949,7 +12378,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\@glo@text
}%
\else
- \xmakefirstuc{\@glo@text}%
+ \expandafter\glssentencecase\expandafter{\@glo@text}%
\fi
\fi
\fi
@@ -11976,14 +12405,18 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand*{\glsentrydesc}[1]{\@gls@entry@field{#1}{desc}}
% \end{macrocode}
%\end{macro}
+%
%\begin{macro}{\Glsentrydesc}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentrydesc}[1]{%
- \@Gls@entry@field{#1}{desc}%
-}
+\newcommand*{\Glsentrydesc}[1]{\@Glsentryfield{#1}{desc}}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentrydesc}{\Glsentrydesc}
+% \end{macrocode}
% Plural form:
%\begin{macro}{\glsentrydescplural}
%\changes{1.12}{2008-03-08}{New}
@@ -11996,12 +12429,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\Glsentrydescplural}
%\changes{1.12}{2008-03-08}{New}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentrydescplural}[1]{%
- \@Gls@entry@field{#1}{descplural}%
+\newcommand*{\Glsentrydescplural}[1]{%
+ \@Glsentryfield{#1}{descplural}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentrydescplural}{\Glsentrydescplural}
+% \end{macrocode}
%
% Get the entry text, as specified by the \gloskey{text} key when
% the entry was defined. The argument
@@ -12013,12 +12451,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%\begin{macro}{\Glsentrytext}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentrytext}[1]{%
- \@Gls@entry@field{#1}{text}%
+\newcommand*{\Glsentrytext}[1]{%
+ \@Glsentryfield{#1}{text}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentrytext}{\Glsentrytext}
+% \end{macrocode}
%
% Get the plural form:
%\begin{macro}{\glsentryplural}
@@ -12030,12 +12473,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%\begin{macro}{\Glsentryplural}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentryplural}[1]{%
- \@Gls@entry@field{#1}{plural}%
+\newcommand*{\Glsentryplural}[1]{%
+ \@Glsentryfield{#1}{plural}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryplural}{\Glsentryplural}
+% \end{macrocode}
%
% Get the symbol associated with this entry. The argument
% is the label associated with the entry.
@@ -12048,12 +12496,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%\begin{macro}{\Glsentrysymbol}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentrysymbol}[1]{%
- \@Gls@entry@field{#1}{symbol}%
+\newcommand*{\Glsentrysymbol}[1]{%
+ \@Glsentryfield{#1}{symbol}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentrysymbol}{\Glsentrysymbol}
+% \end{macrocode}
% Plural form:
%\begin{macro}{\glsentrysymbolplural}
%\changes{1.12}{2008-03-08}{New}
@@ -12066,12 +12519,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\Glsentrysymbolplural}
%\changes{1.12}{2008-03-08}{New}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentrysymbolplural}[1]{%
- \@Gls@entry@field{#1}{symbolplural}%
+\newcommand*{\Glsentrysymbolplural}[1]{%
+ \@Glsentryfield{#1}{symbolplural}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentrysymbolplural}{\Glsentrysymbolplural}
+% \end{macrocode}
%
% Get the entry text to be used when the entry is first used in
% the document (as specified by the \gloskey{first} key when
@@ -12085,12 +12543,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%\begin{macro}{\Glsentryfirst}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentryfirst}[1]{%
- \@Gls@entry@field{#1}{first}%
+\newcommand*{\Glsentryfirst}[1]{%
+ \@Glsentryfield{#1}{first}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryfirst}{\Glsentryfirst}
+% \end{macrocode}
%
% Get the plural form (as specified by the \gloskey{firstplural}
% key when the entry was defined).
@@ -12104,12 +12567,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%\begin{macro}{\Glsentryfirstplural}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentryfirstplural}[1]{%
- \@Gls@entry@field{#1}{firstpl}%
+\newcommand*{\Glsentryfirstplural}[1]{%
+ \@Glsentryfield{#1}{firstpl}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryfirstplural}{\Glsentryfirstplural}
+% \end{macrocode}
%
%\begin{macro}{\glscapitalisewords}
%\changes{4.48}{2021-10-19}{new}
@@ -12125,6 +12593,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\glsentrytitlecase}
%\changes{4.22}{2016-04-19}{new}
%\changes{4.45}{2020-02-13}{added existence check}
+%\changes{4.50}{2022-10-14}{use sentence case for PDF bookmark}
+%Now uses sentence case in PDF bookmark.
+% \begin{macrocode}
+\newcommand*{\glsentrytitlecase}[2]{%
+ \glstexorpdfstring
+ {\@glsentrytitlecase{#1}{#2}}%
+ {\MFUsentencecase{\@gls@entry@field{#1}{#2}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsentrytitlecase}
% \begin{macrocode}
\newrobustcmd*{\@glsentrytitlecase}[2]{%
\glsdoifexists{#1}%
@@ -12133,23 +12612,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\expandafter\glscapitalisewords\expandafter{\@gls@value}%
}%
}
-\ifdef\texorpdfstring
-{
- \newcommand*{\glsentrytitlecase}[2]{%
- \texorpdfstring
- {\@glsentrytitlecase{#1}{#2}}%
- {\@gls@entry@field{#1}{#2}}%
- }
-}
-{
- \newcommand*{\glsentrytitlecase}[2]{\@glsentrytitlecase{#1}{#2}}
-}
% \end{macrocode}
%\end{macro}
%
+%
% Display the glossary type with which this entry is associated
% (as specified by the \gloskey{type} key used when the entry was
-% defined)
+% defined). This expands to a label so isn't intended to produce
+% text in the document.
%\begin{macro}{\glsentrytype}
% \begin{macrocode}
\newcommand*{\glsentrytype}[1]{\@gls@entry@field{#1}{type}}
@@ -12159,6 +12629,8 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Display the sort text used for this entry. Note that the
% \gloskey{sort} key is sanitize, so unexpected results may
% occur if the \gloskey{sort} key contained commands.
+% This is likewise not intended to produce text in the document,
+% other than for debugging purposes.
%\begin{macro}{\glsentrysort}
% \begin{macrocode}
\newcommand*{\glsentrysort}[1]{%
@@ -12168,7 +12640,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%
%\begin{macro}{\glsentryparent}
-%Expands to the label of the entry's parent.
+%Expands to the label of the entry's parent.
+%This expands to a label so isn't intended to produce
+%text in the document.
%\changes{4.45}{2020-02-13}{new}
% \begin{macrocode}
\newcommand*{\glsentryparent}[1]{%
@@ -12191,12 +12665,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\Glsentryuseri}
%\changes{2.04}{2009-11-10}{new}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentryuseri}[1]{%
- \@Gls@entry@field{#1}{useri}%
+\newcommand*{\Glsentryuseri}[1]{%
+ \@Glsentryfield{#1}{useri}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryuseri}{\Glsentryuseri}
+% \end{macrocode}
%
%\begin{macro}{\glsentryuserii}
% Get the second user key (as specified by the
@@ -12212,12 +12691,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\Glsentryuserii}
%\changes{2.04}{2009-11-10}{new}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentryuserii}[1]{%
- \@Gls@entry@field{#1}{userii}%
+\newcommand*{\Glsentryuserii}[1]{%
+ \@Glsentryfield{#1}{userii}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryuserii}{\Glsentryuserii}
+% \end{macrocode}
%
%\begin{macro}{\glsentryuseriii}
% Get the third user key (as specified by the
@@ -12233,12 +12717,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\Glsentryuseriii}
%\changes{2.04}{2009-11-10}{new}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentryuseriii}[1]{%
- \@Gls@entry@field{#1}{useriii}%
+\newcommand*{\Glsentryuseriii}[1]{%
+ \@Glsentryfield{#1}{useriii}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryuseriii}{\Glsentryuseriii}
+% \end{macrocode}
%
%\begin{macro}{\glsentryuseriv}
% Get the fourth user key (as specified by the
@@ -12254,12 +12743,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\Glsentryuseriv}
%\changes{2.04}{2009-11-10}{new}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentryuseriv}[1]{%
- \@Gls@entry@field{#1}{useriv}%
+\newcommand*{\Glsentryuseriv}[1]{%
+ \@Glsentryfield{#1}{useriv}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryuseriv}{\Glsentryuseriv}
+% \end{macrocode}
%
%\begin{macro}{\glsentryuserv}
% Get the fifth user key (as specified by the
@@ -12275,12 +12769,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\Glsentryuserv}
%\changes{2.04}{2009-11-10}{new}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentryuserv}[1]{%
- \@Gls@entry@field{#1}{userv}%
+\newcommand*{\Glsentryuserv}[1]{%
+ \@Glsentryfield{#1}{userv}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryuserv}{\Glsentryuserv}
+% \end{macrocode}
%
%\begin{macro}{\glsentryuservi}
% Get the sixth user key (as specified by the
@@ -12296,12 +12795,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\Glsentryuservi}
%\changes{2.04}{2009-11-10}{new}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentryuservi}[1]{%
- \@Gls@entry@field{#1}{uservi}%
+\newcommand*{\Glsentryuservi}[1]{%
+ \@Glsentryfield{#1}{uservi}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryuservi}{\Glsentryuservi}
+% \end{macrocode}
%
%\begin{macro}{\glsentryshort}
% Get the short key (as specified by the
@@ -12315,12 +12819,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\Glsentryshort}
%\changes{3.0}{2011-04-02}{new}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentryshort}[1]{%
- \@Gls@entry@field{#1}{short}%
+\newcommand*{\Glsentryshort}[1]{%
+ \@Glsentryfield{#1}{short}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryshort}{\Glsentryshort}
+% \end{macrocode}
%
%\begin{macro}{\glsentryshortpl}
% Get the short plural key (as specified by the
@@ -12334,12 +12843,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\Glsentryshortpl}
%\changes{3.0}{2011-04-02}{new}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentryshortpl}[1]{%
- \@Gls@entry@field{#1}{shortpl}%
+\newcommand*{\Glsentryshortpl}[1]{%
+ \@Glsentryfield{#1}{shortpl}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryshortpl}{\Glsentryshortpl}
+% \end{macrocode}
%
%\begin{macro}{\glsentrylong}
% Get the long key (as specified by the
@@ -12353,12 +12867,17 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\Glsentrylong}
%\changes{3.0}{2011-04-02}{new}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentrylong}[1]{%
- \@Gls@entry@field{#1}{long}%
+\newcommand*{\Glsentrylong}[1]{%
+ \@Glsentryfield{#1}{long}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentrylong}{\Glsentrylong}
+% \end{macrocode}
%
%\begin{macro}{\glsentrylongpl}
% Get the long plural key (as specified by the
@@ -12372,20 +12891,27 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\Glsentrylongpl}
%\changes{3.0}{2011-04-02}{new}
%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\newrobustcmd*{\Glsentrylongpl}[1]{%
- \@Gls@entry@field{#1}{longpl}%
+\newcommand*{\Glsentrylongpl}[1]{%
+ \@Glsentryfield{#1}{longpl}%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentrylongpl}{\Glsentrylongpl}
+% \end{macrocode}
%
% Short cut macros to access full form:
%\begin{macro}{\glsentryfull}
%\changes{3.13a}{2013-11-05}{changed to use \cs{acrfullformat}}
%\changes{4.02}{2013-12-05}{bug fix: added missing \cs{acronymfont}}
+%This definition shouldn't actually be used. This command will be
+%redefined by the acronym style.
% \begin{macrocode}
\newcommand*{\glsentryfull}[1]{%
- \acrfullformat{\glsentrylong{#1}}{\acronymfont{\glsentryshort{#1}}}%
+ \glsentrylong{#1} (\glsentryshort{#1})%
}
% \end{macrocode}
%\end{macro}
@@ -12395,17 +12921,25 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%with \cs{glsentryshort})}
%\changes{3.13a}{2013-11-05}{changed to use \cs{acrfullformat}}
%\changes{4.02}{2013-12-05}{bug fix: added missing \cs{acronymfont}}
+%This definition shouldn't actually be used. This command will be
+%redefined by the acronym style.
% \begin{macrocode}
-\newrobustcmd*{\Glsentryfull}[1]{%
- \acrfullformat{\Glsentrylong{#1}}{\acronymfont{\glsentryshort{#1}}}%
+\newcommand*{\Glsentryfull}[1]{%
+ \Glsentrylong{#1} (\glsentryshort{#1})%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryfull}{\Glsentryfull}
+% \end{macrocode}
%\begin{macro}{\glsentryfullpl}
%\changes{3.02}{2012-05-21}{fixed bug (replaced \cs{glsentryshort}
%with \cs{glsentryshortpl})}
%\changes{3.13a}{2013-11-05}{changed to use \cs{acrfullformat}}
%\changes{4.02}{2013-12-05}{bug fix: added missing \cs{acronymfont}}
+%This definition shouldn't actually be used. This command will be
+%redefined by the acronym style.
% \begin{macrocode}
\newcommand*{\glsentryfullpl}[1]{%
\acrfullformat{\glsentrylongpl{#1}}{\acronymfont{\glsentryshortpl{#1}}}%
@@ -12416,12 +12950,18 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{3.09a}{2013-10-09}{made robust}
%\changes{3.13a}{2013-11-05}{changed to use \cs{acrfullformat}}
%\changes{4.02}{2013-12-05}{bug fix: added missing \cs{acronymfont}}
+%This definition shouldn't actually be used. This command will be
+%redefined by the acronym style.
% \begin{macrocode}
-\newrobustcmd*{\Glsentryfullpl}[1]{%
- \acrfullformat{\Glsentrylongpl{#1}}{\acronymfont{\glsentryshortpl{#1}}}%
+\newcommand*{\Glsentryfullpl}[1]{%
+ \Glsentrylongpl{#1} (\glsentryshortpl{#1})%
}
% \end{macrocode}
%\end{macro}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\glsentryfullpl}{\Glsentryfullpl}
+% \end{macrocode}
%
%\begin{macro}{\glsentrynumberlist}
%\changes{3.02}{2012-05-21}{new}
@@ -12510,7 +13050,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\glshyperlink}
% Provide a hyperlink to a glossary entry without adding information
% to the glossary file. The entry needs to be added using a
-% command like \ics{glslink} or \ics{glsadd} to ensure that
+% command like \cs{glslink} or \cs{glsadd} to ensure that
% the target is defined. The first (optional) argument specifies
% the link text. The entry name is used by default. The second
% argument is the entry label.
@@ -12525,7 +13065,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-%\section{Adding an entry to the glossary without generating
+%\subsection{Adding an entry to the glossary without generating
% text}
% The following keys are provided for \cs{glsadd} and
% \cs{glsaddall}:
@@ -12594,6 +13134,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
% \end{macrocode}
%\end{macro}
+%Identify \cs{glsadd} as an exclusion, but this will only work if
+%the optional argument is omitted. If the optional argument is
+%required, the \cs{glsadd} command with arguments will need to be
+%encapsulated with \cs{MFUskippunc}. See the \sty{mfirstuc} v2.08+
+%manual for further details.
+% \begin{macrocode}
+\glsmfuexcl{\glsadd}
+% \end{macrocode}
%
%\begin{macro}{\@gls@adjustmode}
%\changes{4.12}{2014-11-22}{new}
@@ -12603,6 +13151,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%The following aren't added as exclusions, since there's no reason
+%for them to occur at the start of content that may require a
+%case-change (such as at the start of a description).
%\begin{definition}
%\cs{glsaddall}\oarg{option list}
%\end{definition}
@@ -12624,7 +13175,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%\begin{macro}{\glsaddallunused}
%\begin{definition}
-%\cs{glsaddallunused}\oarg{glossary type}
+%\cs{glsaddallunused}\oarg{glossary types}
%\end{definition}
% Add all used terms defined for the listed glossaries (without displaying
% any text). If optional argument is omitted, apply to all
@@ -12650,7 +13201,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-%\section{Creating associated files}
+%\subsection{Creating associated files}
% The \cs{writeist} command creates the associated
% customized \filetype{.ist} \app{makeindex} style file.
% While defining this command, some characters have their
@@ -12659,7 +13210,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% actual character (usually "@") is redefined to be a "?", to allow
% internal commands to be written to the glossary file output file.
%
-% The special characters\mkidxspch\ are stored in \cs{@gls@actualchar},
+% The special characters are stored in \cs{@gls@actualchar},
% \cs{@gls@encapchar}, \cs{@glsl@levelchar} and
% \cs{@gls@quotechar} to make them easier to use later,
% but don't change these values, because the characters are
@@ -12670,12 +13221,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% The symbols and numbers label for group headings are hardwired into
% the \filetype{.ist} file as \texttt{glssymbols} and
% \texttt{glsnumbers}, the group titles can be translated
-% (so that \ics{glssymbolsgroupname} replaces \texttt{glssymbols}
-% and \ics{glsnumbersgroupname} replaces \texttt{glsnumbers})
-% using the command \ics{glsgetgrouptitle} which is
-% defined in \isty{glossary-hypernav}. This is done to prevent
-% any problem characters in \ics{glssymbolsgroupname}
-% and \ics{glsnumbersgroupname} from breaking hyperlinks.
+% (so that \cs{glssymbolsgroupname} replaces \texttt{glssymbols}
+% and \cs{glsnumbersgroupname} replaces \texttt{glsnumbers})
+% using the command \cs{glsgetgrouptitle} which is
+% defined in \sty{glossary-hypernav}. This is done to prevent
+% any problem characters in \cs{glssymbolsgroupname}
+% and \cs{glsnumbersgroupname} from breaking hyperlinks.
%
%\begin{macro}{\glsopenbrace}
% Define \cs{glsopenbrace} to make it easier to write an opening
@@ -12925,7 +13476,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
% Cross-reference class. (The unverified option is used as the
% cross-references are supplied using the list of labels along with
-% the optional argument for \ics{glsseeformat} which
+% the optional argument for \cs{glsseeformat} which
% \app{xindy} won't recognise.)
% \begin{macrocode}
\write\glswrite{^^J; define cross-reference class^^J}%
@@ -13086,6 +13637,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Suppress any further calls.
% \begin{macrocode}
\let\writeist\relax
+ \let\noist\@gls@noist@toolate
}
\else
% \end{macrocode}
@@ -13171,6 +13723,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \begin{macrocode}
\closeout\glswrite
\let\writeist\relax
+ \let\noist\@gls@noist@toolate
}
\fi
% \end{macrocode}
@@ -13378,17 +13931,27 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@gls@noist@toolate}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\@gls@noist@toolate}{%
+ \GlossariesWarning{too late to use \string\noist. The style file
+has already been written}%
+}
+% \end{macrocode}
+%\end{macro}
+%
% \cs{@makeglossary} is an internal command that takes an
% argument indicating the glossary type. This command will
% create the glossary file required by \app{makeindex} for the
% given glossary type, using the extension supplied by the
-% \meta{out-ext} parameter used in \ics{newglossary}
-% (and it will also activate the \ics{glossary} command,
+% \meta{out-ext} parameter used in \cs{newglossary}
+% (and it will also activate the \cs{glossary} command,
% and create the customized \filetype{.ist} \app{makeindex}
% style file).
%
% Note that you can't use \cs{@makeglossary} for only some of the
-% defined glossaries (with just the base \styfmt{glossaries} package). You either need
+% defined glossaries (with just the base \sty{glossaries} package). You either need
% to have a \cs{makeglossaries} for all glossaries or none (otherwise
% you will end up with a situation where \TeX\ is trying to write to a non-existant
% file). The relevant glossary must be defined prior to using \cs{@makeglossary}.
@@ -13456,15 +14019,19 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\ifdefstring{\glsorder}{letter}%
{\def\@gls@order{-M ord/letorder }}%
{\let\@gls@order\@empty}%
- \ifcsundef{@xdy@#1@language}%
- {\let\@gls@langmod\@xdy@main@language}%
- {\letcs\@gls@langmod{@xdy@#1@language}}%
+ \gls@xdy@set@lang{#1}%
+% \end{macrocode}
+%\changes{4.50}{2022-10-14}{added check for void codepage}
+% \begin{macrocode}
+ \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
- -C \gls@codepage\space
+ \@@gls@codepage
-t \jobname.\csuse{@glotype@#1@log}
-o \jobname.\csuse{@glotype@#1@in}
\jobname.\csuse{@glotype@#1@out}}%
@@ -13503,6 +14070,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\changes{4.42}{2019-01-06}{new}
%Unstarred form of \cs{ifglossaryexists} is used as
%\cs{@gls@automake@immediate} can't be used with an ignored glossary.
+%Note that \qt{out} means the output file from this package's point
+%of view. It will be the input file from the indexing application's
+%point of view.
% \begin{macrocode}
\ifglsxindy
\newcommand*{\@gls@automake@immediate}[1]{%
@@ -13513,15 +14083,22 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\ifdefstring{\glsorder}{letter}%
{\def\@gls@order{-M ord/letorder }}%
{\let\@gls@order\@empty}%
- \ifcsundef{@xdy@#1@language}%
- {\let\@gls@langmod\@xdy@main@language}%
- {\letcs\@gls@langmod{@xdy@#1@language}}%
+% \end{macrocode}
+%Set \cs{@gls@langmod}:
+% \begin{macrocode}
+ \gls@xdy@set@lang{#1}%
+% \end{macrocode}
+%\changes{4.50}{2022-10-14}{added check for void codepage}
+% \begin{macrocode}
+ \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
- -C \gls@codepage\space
+ \@@gls@codepage
-t \jobname.\csuse{@glotype@#1@log}
-o \jobname.\csuse{@glotype@#1@in}
\jobname.\csuse{@glotype@#1@out}}%
@@ -13575,17 +14152,34 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@gls@automake@types}
+%\changes{4.50}{2022-10-14}{new}
+%The list of glossaries to build if automake is on.
+%Provided for \sty{glossaries-extra}'s hybrid option.
+% \begin{macrocode}
+\newcommand{\@gls@automake@types}{\@glo@types}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@gls@@automake@immediate}
%\changes{4.42}{2019-01-06}{new}
% \begin{macrocode}
\newcommand{\@gls@@automake@immediate}{%
\ifnum\gls@automake@nr=2\relax
- \@for\@gls@type:=\@glo@types\do{%
+ \@for\@gls@type:=\@gls@automake@types\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
}
% \end{macrocode}
@@ -13599,6 +14193,11 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\makeglossaries}
% \begin{macrocode}
\newcommand*{\makeglossaries}{%
+ \ifglsxindy
+ \def\glsindexingsetting{xindy}%
+ \else
+ \def\glsindexingsetting{makeindex}%
+ \fi
\@domakeglossaries
{%
% \end{macrocode}
@@ -13646,7 +14245,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}%
% \end{macrocode}
% New glossaries must be created before \cs{makeglossaries}
-% so disable \ics{newglossary}.
+% so disable \cs{newglossary}.
% \begin{macrocode}
\renewcommand*\newglossary[4][]{%
\PackageError{glossaries}{New glossaries
@@ -13704,7 +14303,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \begin{macrocode}
\ifglsautomake
\renewcommand*{\@gls@doautomake}{%
- \@for\@gls@type:=\@glo@types\do{%
+ \@for\@gls@type:=\@gls@automake@types\do{%
\ifdefempty{\@gls@type}{}%
{\@gls@automake{\@gls@type}}%
}%
@@ -13725,7 +14324,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\end{macro}
%
%\begin{macro}{\@makeglossaries@warn@noprintglossary}
-%\changes{4.47}{??}{new}
+%\changes{4.47}{2021-09-20}{new}
% \begin{macrocode}
\newcommand\@makeglossaries@warn@noprintglossary{%
\ifdefstring{\@glo@types}{,}%
@@ -13748,9 +14347,9 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \cs{makeglossaries} so that it's only defined if needed.
%\end{macro}
%
-% If \ics{makeglossaries} hasn't been used, issue a warning.
-% Also issue a warning if neither \ics{printglossaries} nor
-% \ics{printglossary} have been used.
+% If \cs{makeglossaries} hasn't been used, issue a warning.
+% Also issue a warning if neither \cs{printglossaries} nor
+% \cs{printglossary} have been used.
% \begin{macrocode}
\AtEndDocument{%
\warn@nomakeglossaries
@@ -13764,6 +14363,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% needed for \cs{printnoidxglossary}
% \begin{macrocode}
\newcommand*{\makenoidxglossaries}{%
+ \def\glsindexingsetting{noidx}%
\@domakeglossaries
{%
% \end{macrocode}
@@ -13858,7 +14458,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\string\makeglossaries}%
}%
% \end{macrocode}
-% Redefine \ics{glsentrynumberlist}
+% Redefine \cs{glsentrynumberlist}
% \begin{macrocode}
\renewcommand*{\glsentrynumberlist}[1]{%
\letcs{\@gls@loclist}{glo@\glsdetoklabel{##1}@loclist}%
@@ -13875,7 +14475,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}%
}%
% \end{macrocode}
-% Redefine \ics{glsdisplaynumberlist}
+% Redefine \cs{glsdisplaynumberlist}
% \begin{macrocode}
\renewcommand*{\glsdisplaynumberlist}[1]{%
\letcs{\@gls@loclist}{glo@\glsdetoklabel{##1}@loclist}%
@@ -13936,6 +14536,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% Check sort option allowed.
% \begin{macrocode}
\@glo@check@sortallowed\makenoidxglossaries
+% \end{macrocode}
+% Implement nonumberlist
+% \begin{macrocode}
+ \let\@gls@savenonumberlist\gls@noidx@nonumberlist
}%
}
% \end{macrocode}
@@ -13947,10 +14551,11 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%
%\begin{macro}{\glsnumberlistloop}
%\begin{definition}
-%\cs{glsnumberlistloop}\marg{label}\marg{handler}
+%\cs{glsnumberlistloop}\marg{label}\marg{handler}\marg{xr handler cs}
%\end{definition}
+%\changes{4.50}{2022-10-14}{corrected parameter number}
% \begin{macrocode}
-\newcommand*{\glsnumberlistloop}[2]{%
+\newcommand*{\glsnumberlistloop}[3]{%
\PackageError{glossaries}{\string\glsnumberlistloop\space
only works with \string\makenoidxglossaries}{}%
}
@@ -13991,15 +14596,16 @@ false,nolabel,autolabel,nameref}[nolabel]{%
% \end{macrocode}
%\end{macro}
%
-%\section{Writing information to associated files}
+%\subsection{Writing information to associated files}
%\label{sec:wrgloss}
%
%\begin{macro}{\gls@noidxglossary}
% Write the glossary information to the aux file (for the `noidx'
-% method):
+% method).
+%\changes{4.50}{2022-10-14}{added \cs{glswrglossdisablelocationcmds}}
% \begin{macrocode}
\newcommand*{\gls@noidxglossary}{%
- \protected@write\@auxout{}{%
+ \protected@write\@auxout{\glswrglossdisablelocationcmds}{%
\string\@gls@reference
{\csname glo@\@gls@label @type\endcsname}%
{\@gls@label}%
@@ -14017,10 +14623,8 @@ false,nolabel,autolabel,nameref}[nolabel]{%
%\begin{macro}{\istfile}
%\changes{3.0}{2011-04-02}{deprecated}
%\changes{4.40}{2018-06-01}{changed \cs{def} to \cs{providecommand}}
-% Deprecated.
-% \begin{macrocode}
-\providecommand\istfile{\glswrite}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated in v3.0 (2011-04-02). Removed in v4.50.
%\end{macro}
%
% At the end of the document, the files should be created if
@@ -14078,10 +14682,10 @@ you
%\end{macro}
%
% As from v4.10, the \cs{glossary} command isn't
-% used by the \styfmt{glossaries} package. Since the
-% user isn't expected to use this command (as \styfmt{glossaries}
+% used by the \sty{glossaries} package. Since the
+% user isn't expected to use this command (as \sty{glossaries}
% takes care of the particular format required for
-% \gls{makeindex}\slash\gls{xindy}) there's no need for a user level
+% \app{makeindex}\slash\app{xindy}) there's no need for a user level
% command. Using a custom internal command prevents any conflict
% with other packages (and with the \cs{mark} mechanism).
%
@@ -14121,8 +14725,8 @@ you
%The \cs{@index} trick allows for special characters within
%\meta{indexing info} (so you can do, for example, \verb|\index{%@\%}|),
%and the original design of \cs{@glossary} here
-%was actually a legacy from the old \styfmt{glossary} package. With
-%the \styfmt{glossaries} package, the indexing information supplied in
+%was actually a legacy from the old \sty{glossary} package. With
+%the \sty{glossaries} package, the indexing information supplied in
%the second argument is more constrained and just consists of the sort
%value (given by the \gloskey{sort} key), the actual value
%(given by \cs{glossentry}\marg{label} or
@@ -14229,15 +14833,29 @@ you
%\end{macro}
%\begin{macro}{\gls@disablepagerefexpansion}
%\changes{3.04}{2012-11-18}{new}
+%\changes{4.50}{2022-10-14}{added check for esclocations}
+%As from v4.50, this will only do the page protection formats for
+%esclocations=true.
% \begin{macrocode}
\newcommand*{\gls@disablepagerefexpansion}{%
- \@for\@gls@this:=\gls@protected@pagefmts\do
- {%
- \expandafter\let\@gls@this\relax
- }%
+ \glswrglossdisablelocationcmds
+ \ifglsesclocations
+ \@for\@gls@this:=\gls@protected@pagefmts\do
+ {%
+ \expandafter\let\@gls@this\relax
+ }%
+ \fi
}
% \end{macrocode}
%\end{macro}
+%
+%\begin{macro}{\glswrglossdisablelocationcmds}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glswrglossdisablelocationcmds}{}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\gls@alphpage}
%\changes{3.04}{2012-11-18}{new}
% \begin{macrocode}
@@ -14287,17 +14905,31 @@ you
%\changes{1.46}{2021-09-20}{changed \cs{eappto} to \cs{protected@eappto}}
% \begin{macrocode}
\newcommand*{\glsaddprotectedpagefmt}[1]{%
- \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}%
+ \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
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsWarnAddProtectedPageFmt}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\GlsWarnAddProtectedPageFmt}{%
+ \GlossariesWarning{\string\glsaddprotectedpagefmt\space has no
+ effect with esclocations=false}%
}
% \end{macrocode}
%\end{macro}
@@ -14331,6 +14963,34 @@ you
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glswrglossdisableanchorcmds}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glswrglossdisableanchorcmds}{\let\glstexorpdfstring\@secondoftwo}
+\ifdef\texorpdfstring
+ {\appto\glswrglossdisableanchorcmds{\let\texorpdfstring\@secondoftwo}}{}
+\ifdef\pdfstringdefPreHook
+ {\appto\glswrglossdisableanchorcmds{\pdfstringdefPreHook}}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glswrglosslocationtarget}
+%\changes{4.50}{2022-10-14}{new}
+%Must expand. May be used to alter the location suffix in the
+%\cs{glshypernumber} anchor.
+% \begin{macrocode}
+\newcommand{\glswrglosslocationtarget}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glswrglosslocationtextfmt}
+%\changes{4.50}{2022-10-14}{new}
+%Used to encapsulate the hyperlink text in \cs{glshypernumber}.
+% \begin{macrocode}
+\newcommand{\glswrglosslocationtextfmt}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@@do@noesc@wrglossary}
%\changes{4.33}{2017-09-20}{new}
% Write the glossary entry in the appropriate format.
@@ -14357,10 +15017,7 @@ you
% point, even if it hasn't been updated yet. The page number is not
% expected to occur in the prefix.)
% \begin{macrocode}
- \protected@edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
- {\@glslocref}{\@glsHlocref}%
- }%
- \@do@gls@getcounterprefix
+ \@xp@gls@getcounterprefix{\@glslocref}{\@glsHlocref}%
\fi
% \end{macrocode}
% De-tok label if required.
@@ -14378,12 +15035,13 @@ you
%
%\begin{macro}{\ifglswrallowprimitivemods}
%\changes{4.22}{2016-04-19}{new}
+%\changes{4.50}{2022-10-14}{switch default to false}
% Conditional to determine whether or not \cs{@@do@esc@wrglossary}
% should be allowed to temporarily redefine \cs{the} and
-% \cs{number}.
+% \cs{number}. Version 4.50 switched the default to false.
% \begin{macrocode}
\newif\ifglswrallowprimitivemods
-\glswrallowprimitivemodstrue
+\glswrallowprimitivemodsfalse
% \end{macrocode}
%\end{macro}
%
@@ -14503,11 +15161,15 @@ you
\def\gls@number##1{%
\ifx##1\c@page \gls@numberpage\else\gls@orgnumber##1\fi}%
\def\number{\expandafter\gls@number}%
+% \end{macrocode}
+%\changes{4.50}{2022-10-14}{moved \cs{romannumeral} inside allow primitive
+%mods}
+% \begin{macrocode}
+ \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\romannumeral##1{%
- \ifx##1\c@page \gls@romanpage\else\gls@orgromannumeral##1\fi}%
\def\@Roman##1{%
\ifx##1\c@page \gls@Romanpage\else\gls@orgRoman##1\fi}%
\def\@alph##1{%
@@ -14544,10 +15206,7 @@ you
\else
\protected@edef\@glsHlocref{\theHglsentrycounter}%
\@gls@checkmkidxchars\@glsHlocref
- \edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
- {\@glslocref}{\@glsHlocref}%
- }%
- \@do@gls@getcounterprefix
+ \@xp@gls@getcounterprefix{\@glslocref}{\@glsHlocref}%
\fi
% \end{macrocode}
% De-tok label if required
@@ -14616,17 +15275,35 @@ you
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@xp@gls@getcounterprefix}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*\@xp@gls@getcounterprefix[2]{%
+ \bgroup
+ \glswrglossdisableanchorcmds
+ \protected@edef\@do@gls@getcounterprefix{%
+ \noexpand\egroup
+ \noexpand\@gls@getcounterprefix{#1}{#2}%
+ }%
+ \@do@gls@getcounterprefix
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@gls@getcounterprefix}
% Get the prefix that needs to be prepended to counter in order to
% get the hyper counter. (For example, with the standard
-% \cls{article} class and \sty{hyperref}, \ics{theequation} needs to
+% \cls{article} class and \sty{hyperref}, \cs{theequation} needs to
% be prefixed with \meta{section num}|.| to get the equivalent
-% \ics{theHequation}.) NB this assumes that the prefix ends with a
+% \cs{theHequation}.) NB this assumes that the prefix ends with a
% dot, which is the standard. (Otherwise it makes the xindy location
% classes more complicated.)
+%
+%\changes{4.50}{2022-10-14}{changed \cs{edef} to \cs{def}}
+%The expansion has been moved to \cs{@xp@gls@getcounterprefix}.
% \begin{macrocode}
\newcommand*\@gls@getcounterprefix[2]{%
- \edef\@gls@thisloc{#1}\edef\@gls@thisHloc{#2}%
+ \def\@gls@thisloc{#1}\def\@gls@thisHloc{#2}%
\ifx\@gls@thisloc\@gls@thisHloc
\def\@glo@counterprefix{}%
\else
@@ -14655,7 +15332,7 @@ you
% \end{macrocode}
%\end{macro}
%
-%\section{Glossary Entry Cross-References}
+%\subsection{Glossary Entry Cross-References}
%\begin{macro}{\@do@seeglossary}
%\changes{1.17}{2008-12-26}{new}
% Write the glossary entry with a cross reference.
@@ -14802,15 +15479,23 @@ you
%\end{macro}
%\begin{macro}{\glsseeitemformat}
%\changes{3.0}{2011-04-02}{new}
-% As from v3.0, default is to use \ics{glsentrytext} instead of
-% \ics{glsentryname}. (To avoid problems with the \gloskey{name} key being
-% sanitized, although this is no longer a problem now.)
+%\changes{4.50}{2022-10-14}{added test for short field}
+%Introduced in v3.0 to replace use of \cs{glsentryname} (originally in
+%\cs{glsseeitem}) with
+%\cs{glsentrytext} to avoid problems with the \gloskey{name} key
+%being sanitized. This ceased being a problem in v3.08a, but
+%\cs{glsentrytext} was retained for backward-compatibility.
+% As from v4.50, the default has reverted back to using
+% \cs{glsentryname} unless the entry is an acronym (which could have
+% a potentially long name).
% \begin{macrocode}
-\newcommand*{\glsseeitemformat}[1]{\glsentrytext{#1}}
+\newcommand*{\glsseeitemformat}[1]{%
+ \ifglshasshort{#1}{\glsentrytext{#1}}{\glsentryname{#1}}%
+}
% \end{macrocode}
%\end{macro}
%
-% \section{Displaying the glossary}\label{sec:code:printglos}
+%\subsection{Displaying the glossary}\label{sec:code:printglos}
% An individual glossary is displayed in the text using
% \cs{printglossary}\oarg{key-val list}. If the
% \gloskey[printglossary]{type} key is omitted, the default glossary is displayed.
@@ -14839,10 +15524,10 @@ you
%\end{macro}
%
%\begin{macro}{\warn@noprintglossary}
-% Warn the user if they have forgotten \ics{printglossaries}
-% or \ics{printglossary}. (Will be suppressed if there is at
-% least one occurrence of \ics{printglossary}. There is no check
-% to ensure that there is a \ics{printglossary} for each defined
+% Warn the user if they have forgotten \cs{printglossaries}
+% or \cs{printglossary}. (Will be suppressed if there is at
+% least one occurrence of \cs{printglossary}. There is no check
+% to ensure that there is a \cs{printglossary} for each defined
% glossary.)
%\changes{4.04}{2014-03-06}{Activate warning in \cs{makeglossaries}}
% \begin{macrocode}
@@ -14875,7 +15560,7 @@ you
% Neither \cs{printglossary} nor \cs{printnoidxglossary} can work
% with an ignored glossary (since ignored glossaries normally
% suppress indexing and there's no associated file for
-% \gls{makeindex}/\gls{xindy} to process). However \cs{printunsrtglossary} can be used
+% \app{makeindex}/\app{xindy} to process). However \cs{printunsrtglossary} can be used
% with an ignored glossary, so provide a command to warn if the
% glossary doesn't exist or is an ignored glossary.
%\begin{macro}{\@printgloss@checkexists@noignored}
@@ -14986,7 +15671,7 @@ you
% \cs{printnoidxglossary}. The first argument is the options list,
% the second argument is the handler macro that
% deals with the actual glossary. This is also used by
-% \sty{glossaries-extra}'s \ics{printunsrtglossary} which may be
+% \sty{glossaries-extra}'s \cs{printunsrtglossary} which may be
% used with an ignored glossary.
% \begin{macrocode}
\newcommand{\@printglossary}[2]{%
@@ -15007,7 +15692,7 @@ you
\ifx\@glossary@default@style\relax
\GlossariesWarning{No default glossary style provided \MessageBreak
for the glossary `\@glo@type'. \MessageBreak
- Using deprecated fallback. \MessageBreak
+ Using fallback. \MessageBreak
To fix this set the style with \MessageBreak
\string\setglossarystyle\space or use the \MessageBreak
style key=value option}%
@@ -15015,7 +15700,7 @@ you
}%
\def\gls@dotoctitle{\glssettoctitle{\@glo@type}}%
% \end{macrocode}
-% Store current value of \ics{glossaryentrynumbers}. (This may
+% Store current value of \cs{glossaryentrynumbers}. (This may
% be changed via the optional argument)
% \begin{macrocode}
\let\@org@glossaryentrynumbers\glossaryentrynumbers
@@ -15108,11 +15793,11 @@ you
% \begin{macrocode}
\egroup
% \end{macrocode}
-% Reset \ics{glossaryentrynumbers}
+% Reset \cs{glossaryentrynumbers}
% \begin{macrocode}
\global\let\glossaryentrynumbers\@org@glossaryentrynumbers
% \end{macrocode}
-% Suppress warning about no \ics{printglossary}
+% Suppress warning about no \cs{printglossary}
%\changes{2.02}{2007-07-13}{suppressed warning globally rather than locally}
% \begin{macrocode}
\global\let\warn@noprintglossary\relax
@@ -15155,9 +15840,11 @@ you
%prevent unwanted whatsit occurring here.}
% \begin{macrocode}
\ifglsxindy
- \ifcsundef{@xdy@\@glo@type @language}%
- {%
- \edef\@do@auxoutstuff{%
+% \end{macrocode}
+%Set \cs{@gls@langmod}:
+% \begin{macrocode}
+ \gls@xdy@set@lang{\@glo@type}%
+ \edef\@do@auxoutstuff{%
\noexpand\AtEndDocument{%
% \end{macrocode}
%\changes{3.10a}{2013-10-13}{Added providecommand code to aux file}
@@ -15168,19 +15855,7 @@ you
\noexpand\immediate\noexpand\write\@auxout{%
\string\providecommand\string\@xdylanguage[2]{}}%
\noexpand\immediate\noexpand\write\@auxout{%
- \string\@xdylanguage{\@glo@type}{\@xdy@main@language}}%
- }%
- }%
- }%
- {%
- \edef\@do@auxoutstuff{%
- \noexpand\AtEndDocument{%
- \noexpand\immediate\noexpand\write\@auxout{%
- \string\providecommand\string\@xdylanguage[2]{}}%
- \noexpand\immediate\noexpand\write\@auxout{%
- \string\@xdylanguage{\@glo@type}{\csname @xdy@\@glo@type
- @language\endcsname}}%
- }%
+ \string\@xdylanguage{\@glo@type}{\@gls@langmod}}%
}%
}%
\@do@auxoutstuff
@@ -15590,7 +16265,7 @@ you
\glossarypreamble
% \end{macrocode}
% \changes{4.29}{2017-01-19}{moved definition of
-% \cs{@gls@currentlettergroup} outside of \envfmt{theglossary} environment}
+% \cs{@gls@currentlettergroup} outside of \env{theglossary} environment}
%The glossary style might use a tabular-like environment, which may
%cause scoping problems when setting the current letter group.
%The predefined tabular-like styles don't support letter group
@@ -15697,6 +16372,7 @@ you
{%
\subglossentry{\gls@level}{#1}%
{%
+ \glsnoidxprenumberlist{#1}%
\glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
}%
}%
@@ -15744,6 +16420,7 @@ you
{%
\glossentry{#1}%
{%
+ \glsnoidxprenumberlist{#1}%
\glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
}%
}%
@@ -15791,7 +16468,7 @@ you
%\begin{macro}{\glsnoidxdisplayloclisthandler}
%\changes{4.04}{2014-03-06}{new}
% Handler for location list iterator when used with
-% \ics{glsdisplaynumberlist}.
+% \cs{glsdisplaynumberlist}.
% \begin{macrocode}
\newcommand*{\glsnoidxdisplayloclisthandler}[1]{%
\ifdefstring{\@gls@noidxloclist@prev}{#1}%
@@ -15854,13 +16531,13 @@ you
%\end{macro}
%
% The keys that can be used in the optional argument to
-% \ics{printglossary} or \ics{printnoidxglossary} are as follows:
+% \cs{printglossary} or \cs{printnoidxglossary} are as follows:
% The \gloskey[printglossary]{type} key sets the glossary type.
% \begin{macrocode}
\define@key{printgloss}{type}{\def\@glo@type{#1}}
% \end{macrocode}
% The \gloskey[printglossary]{title} key sets the title used in the glossary section
-% header. This overrides the title used in \ics{newglossary}.
+% header. This overrides the title used in \cs{newglossary}.
%\changes{3.03}{2012/09/21}{allow title to set toctitle}
% \begin{macrocode}
\define@key{printgloss}{title}{%
@@ -15888,8 +16565,7 @@ you
{Glossary style `#1' undefined}{}%
}%
{%
- \def\@glossarystyle{\setglossentrycompatibility
- \csname @glsstyle@#1\endcsname}%
+ \def\@glossarystyle{\setglossarystyle{#1}}%
}%
}
% \end{macrocode}
@@ -15970,7 +16646,7 @@ you
%\texttt{printgloss} family}
% The \gloskey[printglossary]{subentrycounter} key is the same as the
% package option but localised to the current glossary.
-% Note that this doesn't affect the master/slave counter attributes,
+% Note that this doesn't affect the parent/child counter attributes,
% which occurs if \pkgopt{subentrycounter} and \pkgopt{entrycounter}
% package options are set to true.
% \begin{macrocode}
@@ -16029,7 +16705,7 @@ you
% in the entry's description and 3 column tabular style glossary
% is used.) \cs{org@glossaryentrynumbers} needs to be set at
% the start of each glossary, in the event that
-% \ics{glossaryentrynumber} is redefined.
+% \cs{glossaryentrynumber} is redefined.
% \begin{macrocode}
\newcommand*{\@glsnonextpages}{%
\gdef\glossaryentrynumbers##1{%
@@ -16046,7 +16722,7 @@ you
% in the entry's description and 3 column tabular style glossary
% is used.) \cs{org@glossaryentrynumbers} needs to be set at
% the start of each glossary, in the event that
-% \ics{glossaryentrynumber} is redefined.
+% \cs{glossaryentrynumber} is redefined.
% \begin{macrocode}
\newcommand*{\@glsnextpages}{%
\gdef\glossaryentrynumbers##1{%
@@ -16096,7 +16772,7 @@ you
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\glsresetsubentrycounter}
+%\begin{macro}{\glsresetentrycounter}
%\changes{3.02}{2012-05-21}{new}
%\changes{4.38}{2018-05-10}{bug fix: move conditional inside command}
% Resets the \ctr{glossaryentry} counter.
@@ -16148,7 +16824,7 @@ you
%\begin{macro}{\glsrefentry}
%\changes{3.0}{2011-04-02}{new}
% Reference the entry or sub-entry counter if in use, otherwise just do
-% \ics{gls}.
+% \cs{gls}.
%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
%\changes{4.38}{2018-05-10}{bug fix: move conditional inside command}
% \begin{macrocode}
@@ -16264,30 +16940,30 @@ you
%\end{macro}
%
% As from version 3.08, glossary information is now written to the
-% external files using \ics{glossentry} and \ics{subglossentry}
+% external files using \cs{glossentry} and \cs{subglossentry}
% instead of \cs{glossaryentryfield} and \cs{glossarysubentryfield}.
% The default definition provides backward compatibility for
% glossary styles that use the old forms.
%\begin{macro}{\compatibleglossentry}
%\changes{3.08a}{2013-09-28}{new}
+%\changes{4.50}{2022-10-14}{removed}
+%\begin{definition}
+%\cs{compatibleglossentry}\marg{label}\marg{page-list}
+%\end{definition}
+%Removed in v4.50.
+%\end{macro}
+%
+%\begin{macro}{\glossentry}
%\begin{definition}
% \cs{glossentry}\marg{label}\marg{page-list}
%\end{definition}
+%\changes{3.08a}{2013-09-28}{new}
% \begin{macrocode}
-\providecommand*{\compatibleglossentry}[2]{%
- \toks@{#2}%
- \protected@edef\@do@glossentry{\noexpand\glossaryentryfield{#1}%
- {\noexpand\glsnamefont
- {\expandafter\expandonce\csname glo@#1@name\endcsname}}%
- {\expandafter\expandonce\csname glo@#1@desc\endcsname}%
- {\expandafter\expandonce\csname glo@#1@symbol\endcsname}%
- {\the\toks@}%
- }%
- \@do@glossentry
-}
+\newcommand{\glossentry}[2]{\glossentryname{#1} #2}
% \end{macrocode}
%\end{macro}
%
+%
%\begin{macro}{\glossentryname}
%\changes{3.08a}{2013-09-28}{new}
%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
@@ -16311,6 +16987,7 @@ you
\glsnamefont{\Glsentryname{#1}}%
}%
}
+\glsmfuaddmap{\glossentryname}{\Glossentryname}
% \end{macrocode}
%\end{macro}
%
@@ -16335,6 +17012,7 @@ you
\Glsentrydesc{#1}%
}%
}
+\glsmfuaddmap{\glossentrydesc}{\Glossentrydesc}
% \end{macrocode}
%\end{macro}
%
@@ -16359,40 +17037,23 @@ you
\Glsentrysymbol{#1}%
}%
}
+\glsmfuaddmap{\glossentrysymbol}{\Glossentrysymbol}
% \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{\compatiblesubglossentry}
%\changes{3.08a}{2013-09-28}{new}
+%\changes{4.50}{2022-10-14}{removed}
%\begin{definition}
-% \cs{subglossentry}\marg{level}\marg{label}\marg{page-list}
+% \cs{compatiblesubglossentry}\marg{level}\marg{label}\marg{page-list}
%\end{definition}
-% \begin{macrocode}
-\providecommand*{\compatiblesubglossentry}[3]{%
- \toks@{#3}%
- \protected@edef\@do@subglossentry{\noexpand\glossarysubentryfield{\number#1}%
- {#2}%
- {\noexpand\glsnamefont
- {\expandafter\expandonce\csname glo@#2@name\endcsname}}%
- {\expandafter\expandonce\csname glo@#2@desc\endcsname}%
- {\expandafter\expandonce\csname glo@#2@symbol\endcsname}%
- {\the\toks@}%
- }%
- \@do@subglossentry
-}
-% \end{macrocode}
+%Removed in v4.50
%\end{macro}
%
%\begin{macro}{\setglossentrycompatibility}
%\changes{3.08a}{2013-09-28}{new}
-% \begin{macrocode}
-\newcommand*{\setglossentrycompatibility}{%
- \let\glossentry\compatibleglossentry
- \let\subglossentry\compatiblesubglossentry
-}
-\setglossentrycompatibility
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
%\end{macro}
%
%
@@ -16403,33 +17064,30 @@ you
% This command formerly governed how each entry row should be formatted
% in the glossary. Now deprecated.
%\changes{3.08a}{2013-09-28}{deprecated}
-% \begin{macrocode}
-\newcommand{\glossaryentryfield}[5]{%
- \GlossariesWarning
- {Deprecated use of \string\glossaryentryfield.^^J
- I recommend you change to \string\glossentry.^^J
- If you've just upgraded, try removing your gls auxiliary
- files^^J and recompile}%
- \noindent\textbf{\glstarget{#1}{#2}} #4 #3. #5\par}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+%Removed in v4.50
%\end{macro}
%\begin{macro}{\glossarysubentryfield}
%\begin{definition}
% \cs{glossarysubentryfield}\marg{level}\marg{label}\marg{name}\marg{description}\marg{symbol}\marg{page-list}
%\end{definition}
+%\changes{4.50}{2022-10-14}{removed}
% This command governs how each subentry should be formatted
% in the glossary. Glossary styles need to redefine this command.
% Most of the predefined styles ignore \meta{symbol}. The first
% argument is a number indicating the level. (The level should
% be greater than or equal to 1.)
+%
+%Removed in v4.50.
+%\end{macro}
+%
+%\begin{macro}{\subglossentry}
+%\begin{definition}
+% \cs{subglossentry}\marg{level}\marg{label}\marg{page-list}
+%\end{definition}
+%\changes{3.08a}{2013-09-28}{new}
% \begin{macrocode}
-\newcommand*{\glossarysubentryfield}[6]{%
- \GlossariesWarning
- {Deprecated use of \string\glossarysubentryfield.^^J
- I recommend you change to \string\subglossentry.^^J
- If you've just upgraded, try removing your gls auxiliary
- files^^J and recompile}%
- \glstarget{#2}{\strut}#4. #6\par}
+\newcommand{\subglossentry}[3]{\glossentryname{#2} #3}
% \end{macrocode}
%\end{macro}
%
@@ -16483,8 +17141,8 @@ you
% This command produces the title for the glossary group
% whose label is given by \meta{label}. By default, the group
% labelled \texttt{glssymbols} produces
-% \ics{glssymbolsgroupname}, the group labelled
-% \texttt{glsnumbers} produces \ics{glsnumbersgroupname}
+% \cs{glssymbolsgroupname}, the group labelled
+% \texttt{glsnumbers} produces \cs{glsnumbersgroupname}
% and all the other groups simply produce their label.
% As mentioned above, the group labels are: \texttt{glssymbols}, \texttt{glsnumbers},
% \texttt{A}, \ldots, \texttt{Z}\@. If you want to redefine
@@ -16497,8 +17155,9 @@ you
%\cs{ifcsundef}}
%\changes{3.11a}{2013-10-15}{Added check in case non-Latin alphabet
%in use}
+%\changes{4.50}{2022-10-14}{made robust}
% \begin{macrocode}
-\newcommand*{\glsgetgrouptitle}[1]{%
+\newrobustcmd*{\glsgetgrouptitle}[1]{%
\@gls@getgrouptitle{#1}{\@gls@grptitle}%
\@gls@grptitle
}
@@ -16507,28 +17166,20 @@ you
%\begin{macro}{\@gls@getgrouptitle}
% Gets the group title specified by the label (first argument) and
% stores in the second argument, which must be a control sequence.
+%\changes{4.50}{2022-10-14}{switched to \LaTeX3 syntax}
% \begin{macrocode}
+\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.
% \begin{macrocode}
- \dtl@ifsingle{#1}%
- {%
- \ifcsundef{#1groupname}{\def#2{#1}}{\letcs#2{#1groupname}}%
- }%
- {%
- \ifboolexpr{test{\ifstrequal{#1}{glssymbols}}
- or test{\ifstrequal{#1}{glsnumbers}}}%
- {%
- \ifcsundef{#1groupname}{\def#2{#1}}{\letcs#2{#1groupname}}%
- }%
- {%
- \def#2{#1}%
- }%
- }%
+ \def#2{#1}%
+ \regex_match:nnT { ^\A(.|glsnumbers|glssymbols)\Z } { #1 }
+ { \ifcsundef{#1groupname}{}{\letcs#2{#1groupname}} }
}
+\ExplSyntaxOff
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@gls@noidx@getgrouptitle}
@@ -16554,21 +17205,35 @@ you
% will also need to redefine \cs{glsgetgrouplabel}.
%\begin{macro}{\glsgetgrouplabel}
%\changes{3.05}{2013-04-21}{fixed bug (typo in \cs{equal})}
+%\changes{4.50}{2022-10-14}{converted to use \LaTeX3}
+%This only works for the symbol and number groups, so is best
+%avoided and not documented. However, it has been converted to use
+%\LaTeX3 commands.
% \begin{macrocode}
+\ExplSyntaxOn
\newcommand*{\glsgetgrouplabel}[1]{%
-\ifthenelse{\equal{#1}{\glssymbolsgroupname}}{glssymbols}{%
-\ifthenelse{\equal{#1}{\glsnumbersgroupname}}{glsnumbers}{#1}}}
+ \str_if_eq:eeTF {#1} { \glssymbolsgroupname }
+ { glssymbols }
+ {
+ \str_if_eq:eeTF {#1} { \glsnumbersgroupname }
+ { glsnumbers }
+ { #1 }
+ }
+}
+\ExplSyntaxOff
% \end{macrocode}
%\end{macro}
%
% The command \cs{setentrycounter} sets the entry's
% associated counter (required by
-% \cs{glshypernumber} etc.) \ics{glslink} and
-% \ics{glsadd} encode the
-% \ics{glossary} argument so that the relevant counter is
+% \cs{glshypernumber} etc.) \cs{glslink} and
+% \cs{glsadd} encode the
+% \cs{glossary} argument so that the relevant counter is
% set prior to the formatting command.
%\begin{macro}{\setentrycounter}
%\changes{3.0}{2011-04-02}{added optional argument}
+%The prefix is an optional argument because this command originally
+%only had one argument. The optional argument was added in v3.0.
% \begin{macrocode}
\newcommand*{\setentrycounter}[2][]{%
\def\@glo@counterprefix{#1}%
@@ -16608,37 +17273,9 @@ you
%\begin{macro}{\glossarystyle}
%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
%\cs{ifcsundef}}
-% \begin{macrocode}
-\newcommand*{\glossarystyle}[1]{%
- \ifcsundef{@glsstyle@#1}%
- {%
- \PackageError{glossaries}{Glossary style `#1' undefined}{}%
- }%
- {%
- \GlossariesWarning
- {Deprecated command \string\glossarystyle.^^J
- I recommend you switch to \string\setglossarystyle\space unless
- you want to maintain backward compatibility}%
- \setglossentrycompatibility
- \csname @glsstyle@#1\endcsname
-% \end{macrocode}
-%\changes{3.13a}{2013-11-05}{fixed bug caused by using \cs{ifdef} instead of
-%\cs{ifcsdef}}
-% \begin{macrocode}
- \ifcsdef{@glscompstyle@#1}%
- {\setglossentrycompatibility\csuse{@glscompstyle@#1}}%
- {}%
- }%
-% \end{macrocode}
-%\changes{4.21}{2016-01-24}{set default style if not already set}
-% Set the default style if it isn't already set so that
-% \cs{printglossary} can warn if the fallback style is in use.
-% \begin{macrocode}
- \ifx\@glossary@default@style\relax
- \protected@edef\@glossary@default@style{#1}%
- \fi
-}
-% \end{macrocode}
+%\changes{3.08a}{2013-09-28}{deprecated}
+%\changes{4.50}{2022-10-14}{removed}
+%Deprecated in v3.08a. Removed in v4.50.
%\end{macro}
%
%\begin{macro}{\newglossarystyle}
@@ -16647,12 +17284,12 @@ you
% \cs{newglossarystyle}\marg{name}\marg{definition}
%\end{definition}
% The \meta{definition} argument should redefine
-% \env{theglossary}, \ics{glossaryheader},
-% \ics{glsgroupheading}, \ics{glossaryentryfield} and
-% \ics{glsgroupskip} (see \autoref{sec:code:styles} for the
+% \env{theglossary}, \cs{glossaryheader},
+% \cs{glsgroupheading}, \cs{glossaryentryfield} and
+% \cs{glsgroupskip} (see \autoref{sec:code:styles} for the
% definitions of predefined styles). Glossary styles should not
-% redefine \ics{glossarypreamble} and
-% \ics{glossarypostamble}, as
+% redefine \cs{glossarypreamble} and
+% \cs{glossarypostamble}, as
% the user should be able to switch between styles without affecting
% the pre- and postambles.
%\changes{1.17}{2008-12-26}{made \cs{newglossarystyle} long}
@@ -16688,13 +17325,13 @@ you
%\end{macro}
%
% Glossary entries are encoded so that the second argument
-% to \ics{glossaryentryfield} is always specified as
+% to \cs{glossaryentryfield} is always specified as
% \cs{glsnamefont}\marg{name}. This allows the
% user to change the font used to display the name term
-% without having to redefine \ics{glossaryentryfield}.
+% without having to redefine \cs{glossaryentryfield}.
% The default uses the surrounding font, so in the list type
% styles (which place the name in the optional argument to
-% \ics{item}) the name will appear in bold.
+% \cs{item}) the name will appear in bold.
%\begin{macro}{\glsnamefont}
% \begin{macrocode}
\newcommand*{\glsnamefont}[1]{#1}
@@ -16704,22 +17341,22 @@ you
% Each glossary entry has an associated number list (usually page
% numbers) that indicate where in the document the entry has been
% used. The format for these number lists can be changed using the
-% \gloskey[glslink]{format}\igloskey[glsadd]{format} key in commands like \ics{glslink}.
+% \gloskey[glslink]{format} key in commands like \cs{glslink}.
% The default format is given by \cs{glshypernumber}. This takes
% a single argument which may be a single number, a number range
% or a number list. The number ranges are delimited with
-% \ics{delimR}, the number lists are delimited with
-% \ics{delimN}.
+% \cs{delimR}, the number lists are delimited with
+% \cs{delimN}.
%
% If the document doesn't have hyperlinks, the numbers can be
% displayed just as they are, but if the document supports
% hyperlinks, the numbers should link to the relevant location.
% This means extracting the individual numbers from the list or
-% ranges. The \isty{hyperref} package does this with the
-% \ics{hyperpage} command, but this is encoded for comma and
+% ranges. The \sty{hyperref} package does this with the
+% \cs{hyperpage} command, but this is encoded for comma and
% dash delimiters and only for the page counter, but this code needs
% to be more general. So I have adapted the code used in the
-% \isty{hyperref} package.
+% \sty{hyperref} package.
%\begin{macro}{\glshypernumber}
%\changes{1.17}{2008-12-26}{modified to allow material
% to be attached to location}
@@ -16731,7 +17368,16 @@ you
\def\glshypernumber#1{#1}%
}%
{%
- \def\glshypernumber#1{\@glshypernumber#1\nohyperpage{}\@nil}
+ \def\glshypernumber#1{\@xp@glshypernumber{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xp@glshypernumber}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newrobustcmd{\@xp@glshypernumber}[1]{%
+ \@glshypernumber#1\nohyperpage{}\@nil
}
% \end{macrocode}
%\end{macro}
@@ -16744,7 +17390,7 @@ you
\def\@glshypernumber#1\nohyperpage#2#3\@nil{%
\ifx\\#1\\%
\else
- \@delimR#1\delimR\delimR\\%
+ \gls@delimR#1\delimR\delimR\\%
\fi
\ifx\\#2\\%
\else
@@ -16757,31 +17403,34 @@ you
}
% \end{macrocode}
%\end{macro}
-% \cs{@delimR} displays a range of numbers for the counter
+% \cs{gls@delimR} displays a range of numbers for the counter
% whose name is given by
% \cs{@gls@counter} (which must be set prior to using
% \cs{glshypernumber}).
-%\begin{macro}{\@delimR}
+%\begin{macro}{\gls@delimR}
+%\changes{4.50}{2022-10-14}{renamed \cs{@delimR} to \cs{gls@delimR}}
% \begin{macrocode}
-\def\@delimR#1\delimR #2\delimR #3\\{%
-\ifx\\#2\\%
- \@delimN{#1}%
-\else
- \@gls@numberlink{#1}\delimR\@gls@numberlink{#2}%
-\fi}
+\def\gls@delimR#1\delimR #2\delimR #3\\{%
+ \ifx\\#2\\%
+ \gls@delimN{#1}%
+ \else
+ \@gls@numberlink{#1}\delimR\@gls@numberlink{#2}%
+ \fi
+}
% \end{macrocode}
%\end{macro}
-% \cs{@delimN} displays a list of individual numbers,
+% \cs{gls@delimN} displays a list of individual numbers,
% instead of a range:
-%\begin{macro}{\@delimN}
+%\begin{macro}{\gls@delimN}
+%\changes{4.50}{2022-10-14}{renamed \cs{@delimN} to \cs{gls@delimN}}
% \begin{macrocode}
-\def\@delimN#1{\@@delimN#1\delimN \delimN\\}
-\def\@@delimN#1\delimN #2\delimN#3\\{%
-\ifx\\#3\\%
- \@gls@numberlink{#1}%
-\else
- \@gls@numberlink{#1}\delimN\@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
}
% \end{macrocode}
%\end{macro}
@@ -16791,10 +17440,11 @@ you
% \cs{@gls@counter}.
% \begin{macrocode}
\def\@gls@numberlink#1{%
-\begingroup
- \toks@={}%
- \@gls@removespaces#1 \@nil
-\endgroup}
+ \begingroup
+ \toks@={}%
+ \@gls@removespaces#1 \@nil
+ \endgroup
+}
% \end{macrocode}
% \begin{macrocode}
\def\@gls@removespaces#1 #2\@nil{%
@@ -16809,8 +17459,26 @@ you
% \end{macrocode}
%\changes{3.0}{2011-04-02}{added prefix to hyperlink}
% \begin{macrocode}
- \hyperlink{\glsentrycounter\@glo@counterprefix\the\toks@}%
- {\the\toks@}%
+ \bgroup
+% \end{macrocode}
+%\changes{4.50}{2022-10-14}{allow markup to be stripped from location}
+%Allow any markup to be stripped from the location when forming the
+%target name.
+% \begin{macrocode}
+ \glswrglossdisableanchorcmds
+ \protected@edef\@gls@tmp{\glsentrycounter\@glo@counterprefix
+ \glswrglosslocationtarget{\@gls@x}}%
+% \end{macrocode}
+%If anything hasn't been fully expanded by this point then it will
+%cause a problem, so sanitize to prevent an error, but it's likely
+%the target won't be valid.
+% \begin{macrocode}
+ \@onelevel@sanitize\@gls@tmp
+ \edef\@gls@x{\noexpand\egroup
+ \noexpand\hyperlink{\@gls@tmp}%
+ {\noexpand\glswrglosslocationtextfmt{\the\toks@}}%
+ }%
+ \@gls@x
\fi
\else
\@gls@ReturnAfterFi{%
@@ -16876,33 +17544,33 @@ you
% \end{macrocode}
%\end{macro}
%
-%\section{Acronyms}\label{sec:code:acronym}
+%\subsection{Acronyms}\label{sec:code:acronym}
%\begin{macro}{\oldacronym}
%\begin{definition}
%\cs{oldacronym}\oarg{label}\marg{abbrv}\marg{long}\marg{key-val list}
%\end{definition}
-% This emulates the way the old \isty{glossary} package defined
-% acronyms. It is equivalent to \ics{newacronym}\oarg{key-val
+% This emulates the way the old \sty{glossary} package defined
+% acronyms. It is equivalent to \cs{newacronym}\oarg{key-val
% list}\marg{label}\marg{abbrv}\marg{long} and it additionally
% defines the command \cs{}\meta{label} which is equivalent to
% \cs{gls}\marg{label} (thus \meta{label} must only contain
% alphabetical characters). If \meta{label} is omitted, \meta{abbrv}
-% is used. This only emulates the syntax of the old \isty{glossary}
+% is used. This only emulates the syntax of the old \sty{glossary}
% package. The way the acronyms appear in the list of acronyms is
-% determined by the definition of \ics{newacronym} and the
+% determined by the definition of \cs{newacronym} and the
% glossary style.
%
% Note that \cs{}\meta{label} can't have an optional
-% argument if the \isty{xspace} package is loaded. If
-% \isty{xspace} hasn't been loaded then you can do
+% argument if the \sty{xspace} package is loaded. If
+% \sty{xspace} hasn't been loaded then you can do
% \cs{}\meta{label}\oarg{insert} but you can't do
% \cs{}\meta{label}\oarg{key-val list}. For example if you define the
% acronym svm, then you can do "\svm['s]" but you can't do
-% "\svm[format=textbf]". If the \isty{xspace} package is loaded,
+% "\svm[format=textbf]". If the \sty{xspace} package is loaded,
% "\svm['s]" will appear as "svm ['s]" which is unlikely to be
% the desired result. In this case, you will need to use
% \cs{gls} explicitly, e.g.\ "\gls{svm}['s]". Note that it is
-% up to the user to load \isty{xspace} if desired.
+% up to the user to load \sty{xspace} if desired.
%\changes{1.18}{2009-01-14}{new}
%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
%\cs{ifcsundef}}
@@ -16930,27 +17598,54 @@ you
% \cs{newacronym}\oarg{key-val list}\marg{label}\marg{abbrev}\marg{long}
%\end{definition}
% This is a quick way of defining acronyms,
-% using \ics{newglossaryentry} with the appropriate
+% using \cs{newglossaryentry} with the appropriate
% values. It sets the
-% glossary type to \ics{acronymtype} which will be
+% glossary type to \cs{acronymtype} which will be
% "acronym" if the package option \pkgopt{acronym} has
% been used, otherwise it will be the default glossary.
-% Since \cs{newacronym} merely calls \ics{newglossaryentry},
+% Since \cs{newacronym} merely calls \cs{newglossaryentry},
% the acronym is treated like any other glossary entry.
%
% If you prefer a different format, you
% can redefine \cs{newacronym} as required. The optional
% argument can be used to override any of the settings.
%
-% This is just a stub. It's redefined by commands like
-% \cs{SetDefaultAcronymStyle}.
+% This is just a stub. It's redefined by \cs{SetGenericNewAcronym}
+% and by \sty{glossaries-extra}. It used to also be redefined by the
+% obsolete acronym styles that have now been removed.
+%If it is used then it means that the acronym style hasn't been
+%initialised.
+%\changes{4.50}{2022-10-14}{added initialisation}
%\begin{macro}{\newacronym}
% \begin{macrocode}
- \newcommand{\newacronym}[4][]{}
+\newcommand{\newacronym}[4][]{%
+ \gls@newacronym{#1}{#2}{#3}{#4}%
+}
% \end{macrocode}
%\changes{1.13}{2008-05-10}{Removed restriction on only using
% \cs{newacronym} in the preamble}
%\end{macro}
+%
+%\begin{macro}{\gls@newacronym}
+% \begin{macrocode}
+\newcommand{\gls@newacronym}[4]{%
+% \end{macrocode}
+%Setting the acronym style will redefine \cs{newacronym} because it
+%calls \cs{SetGenericNewAcronym} but if something weird has happened
+%to alter this, redefine \cs{gls@newacronym} now to prevent an infinite
+%loop.
+% \begin{macrocode}
+ \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}%
+}
+% \end{macrocode}
+%\end{macro}
% Set up some convenient short cuts. These need to be changed if
% \cs{newacronym} is changed (or if the \gloskey{description} key
% is changed).
@@ -17001,43 +17696,66 @@ you
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\acrfull}
-% Full form of the acronym.
-%\changes{3.01}{2011-04-12}{made robust}
-%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
-% \begin{macrocode}
-\newrobustcmd*{\acrfull}{\@gls@hyp@opt\ns@acrfull}
-% \end{macrocode}
-%\changes{4.08}{2014-07-30}{removed \cs{@sacrfull}}
-%\changes{3.0}{2011-04-02}{added starred version}
+% Using \cs{acrlinkfullformat} and \cs{acrfullformat} is now
+% deprecated. However, these commands are still used in
+% the initial definition of \cs{acrfull} and \cs{glsentryfull}.
+% The acronym style now redefines \cs{glsentryfull}, and
+% \cs{acrfull} now uses \cs{acrfullfmt}, which is redefined by the
+% acronym style. Similar for the case and plural variants. This
+% means that \cs{acrlinkfullformat} and \cs{acrfullformat} should
+% now longer be used with v4.50, which will ensure that
+% \cs{setacronymstyle} is used on the first instance of
+% \cs{newacronym} if a style hasn't been set.
+%
+%Outlier cases may occur where someone has defined an entry
+%explicitly with \cs{newglossaryentry} and set the long and short
+%keys and is using \cs{glsentryfull} or \cs{acrfull} without a style
+%set. So, for now, the deprecated \cs{acrlinkfullformat} and \cs{acrfullformat} are
+%retained even though the remaining obsolete acronym code has been
+%removed. However, they may be removed in a future version.
+%
+%\begin{macro}{\acrlinkfullformat}
+% Format for full links like \cs{acrfull}. Syntax:
+% \cs{acrlinkfullformat}\marg{long cs}\marg{short
+% cs}\marg{options}\marg{label}\marg{insert}
+%Deprecated.
% \begin{macrocode}
-\newcommand*\ns@acrfull[2][]{%
- \new@ifnextchar[{\@acrfull{#1}{#2}}%
- {\@acrfull{#1}{#2}[]}%
+\newcommand{\acrlinkfullformat}[5]{%
+ \acrfullformat{#1{#3}{#4}[#5]}{#2{#3}{#4}[]}%
}
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\@acrfull}
-%\changes{4.02}{2013-12-05}{now using \cs{acrfullfmt}}
-% Low-level macro:
+%
+%\begin{macro}{\acrfullformat}
+% Default full form is \meta{long} \parg{short}.
+%\changes{3.01}{2011-04-12}{removed \cs{acronymfont} as it should
+%already be set in the second argument.}
+%Deprecated.
% \begin{macrocode}
-\def\@acrfull#1#2[#3]{%
+\newcommand{\acrfullformat}[2]{#1\glsspace(#2)}
% \end{macrocode}
-% Make it easier for acronym styles to change this:
+%\end{macro}
+%
+%\begin{macro}{\glsspace}
+% Robust space to ensure it's written to the \texttt{.glsdefs} file.
+%\changes{4.08}{2014-07-30}{new}
% \begin{macrocode}
- \acrfullfmt{#1}{#2}{#3}%
-}
+\newrobustcmd{\glsspace}{\space}
% \end{macrocode}
%\end{macro}
%
-% Using \cs{acrlinkfullformat} and \cs{acrfullformat} is now
-% deprecated as it can cause complications with the first letter
-% upper case variants, but the package needs to provide backward
-% compatibility support.
+% The following \cs{acrfullfmt} set of commands are used by the
+% corresponding \cs{acrfull} command, and are redefined by the
+% acronym style to match the style's full form.
%
%\begin{macro}{\acrfullfmt}
%\changes{4.02}{2013-12-05}{new}
-% No case change full format.
+% No case change full format. This default will be overridden by the
+% acronym style, so this definition shouldn't actually be used any
+% more, but it still needs to be defined so the it doesn't cause a
+% problem when acronym styles redefine it. This is initialised to
+% use the deprecated \cs{acrlinkfullformat} but will be redefined by
+% the acronym style when it's set.
% \begin{macrocode}
\newcommand*{\acrfullfmt}[3]{%
\acrlinkfullformat{\@acrlong}{\@acrshort}{#1}{#2}{#3}%
@@ -17045,31 +17763,83 @@ you
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\acrlinkfullformat}
-% Format for full links like \ics{acrfull}. Syntax:
-% \cs{acrlinkfullformat}\marg{long cs}\marg{short
-% cs}\marg{options}\marg{label}\marg{insert}
+%\begin{macro}{\Acrfullfmt}
+%\changes{4.02}{2013-12-05}{new}
+% Sentence case full format.
% \begin{macrocode}
-\newcommand{\acrlinkfullformat}[5]{%
- \acrfullformat{#1{#3}{#4}[#5]}{#2{#3}{#4}[]}%
+\newcommand*{\Acrfullfmt}[3]{%
+ \acrlinkfullformat{\@Acrlong}{\@acrshort}{#1}{#2}{#3}%
}
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\acrfullformat}
-% Default full form is \meta{long} \parg{short}.
-%\changes{3.01}{2011-04-12}{removed \cs{acronymfont} as it should
-%already be set in the second argument.}
+%\begin{macro}{\ACRfullfmt}
+%\changes{4.02}{2013-12-05}{new}
+% All upper case full format.
% \begin{macrocode}
-\newcommand{\acrfullformat}[2]{#1\glsspace(#2)}
+\newcommand*{\ACRfullfmt}[3]{%
+ \acrlinkfullformat{\@ACRlong}{\@ACRshort}{#1}{#2}{#3}%
+}
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\glsspace}
-% Robust space to ensure it's written to the \texttt{.glsdefs} file.
-%\changes{4.08}{2014-07-30}{new}
+%\begin{macro}{\acrfullplfmt}
+%\changes{4.02}{2013-12-05}{new}
+% No case change plural full format.
% \begin{macrocode}
-\newrobustcmd{\glsspace}{\space}
+\newcommand*{\acrfullplfmt}[3]{%
+ \acrlinkfullformat{\@acrlongpl}{\@acrshortpl}{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Acrfullplfmt}
+%\changes{4.02}{2013-12-05}{new}
+% Sentence case plural full format.
+%\changes{4.07}{2014-04-04}{fixed no case change bug}
+% \begin{macrocode}
+\newcommand*{\Acrfullplfmt}[3]{%
+ \acrlinkfullformat{\@Acrlongpl}{\@acrshortpl}{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ACRfullplfmt}
+%\changes{4.02}{2013-12-05}{new}
+% All upper case plural full format.
+% \begin{macrocode}
+\newcommand*{\ACRfullplfmt}[3]{%
+ \acrlinkfullformat{\@ACRlongpl}{\@ACRshortpl}{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\acrfull}
+% Full form of the acronym.
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\acrfull}{\@gls@hyp@opt\ns@acrfull}
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{removed \cs{@sacrfull}}
+%\changes{3.0}{2011-04-02}{added starred version}
+% \begin{macrocode}
+\newcommand*\ns@acrfull[2][]{%
+ \new@ifnextchar[{\@acrfull{#1}{#2}}%
+ {\@acrfull{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@acrfull}
+%\changes{4.02}{2013-12-05}{now using \cs{acrfullfmt}}
+% Low-level macro:
+% \begin{macrocode}
+\def\@acrfull#1#2[#3]{%
+% \end{macrocode}
+% Make it easier for acronym styles to change this:
+% \begin{macrocode}
+ \acrfullfmt{#1}{#2}{#3}%
+}
% \end{macrocode}
%\end{macro}
%
@@ -17080,6 +17850,10 @@ you
% \begin{macrocode}
\newrobustcmd*{\Acrfull}{\@gls@hyp@opt\ns@Acrfull}
% \end{macrocode}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\acrfull}{\Acrfull}
+% \end{macrocode}
%\changes{3.0}{2011-04-02}{added starred version}
%\changes{4.08}{2014-07-30}{removed \cs{@sAcrfull}}
% \begin{macrocode}
@@ -17099,16 +17873,6 @@ you
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\Acrfullfmt}
-%\changes{4.02}{2013-12-05}{new}
-% First letter upper case full format.
-% \begin{macrocode}
-\newcommand*{\Acrfullfmt}[3]{%
- \acrlinkfullformat{\@Acrlong}{\@acrshort}{#1}{#2}{#3}%
-}
-% \end{macrocode}
-%\end{macro}
-%
%\begin{macro}{\ACRfull}
%\changes{3.01}{2011-04-12}{made robust}
%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
@@ -17134,17 +17898,6 @@ you
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\ACRfullfmt}
-%\changes{4.02}{2013-12-05}{new}
-% All upper case full format.
-% \begin{macrocode}
-\newcommand*{\ACRfullfmt}[3]{%
- \acrlinkfullformat{\@ACRlong}{\@ACRshort}{#1}{#2}{#3}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%
% Plural:
%\begin{macro}{\acrfullpl}
%\changes{1.13}{2008-05-10}{new}
@@ -17172,16 +17925,6 @@ you
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\acrfullplfmt}
-%\changes{4.02}{2013-12-05}{new}
-% No case change plural full format.
-% \begin{macrocode}
-\newcommand*{\acrfullplfmt}[3]{%
- \acrlinkfullformat{\@acrlongpl}{\@acrshortpl}{#1}{#2}{#3}%
-}
-% \end{macrocode}
-%\end{macro}
-%
%\begin{macro}{\Acrfullpl}
%\changes{1.13}{2008-05-10}{new}
%\changes{3.01}{2011-04-12}{made robust}
@@ -17189,6 +17932,10 @@ you
% \begin{macrocode}
\newrobustcmd*{\Acrfullpl}{\@gls@hyp@opt\ns@Acrfullpl}
% \end{macrocode}
+%Add sentence case mapping.
+% \begin{macrocode}
+\glsmfuaddmap{\acrfullpl}{\Acrfullpl}
+% \end{macrocode}
%\changes{4.08}{2014-07-30}{removed \cs{s@Acrfullpl}}
%\changes{3.0}{2011-04-02}{added starred version}
% \begin{macrocode}
@@ -17208,18 +17955,6 @@ you
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\Acrfullplfmt}
-%\changes{4.02}{2013-12-05}{new}
-% First letter upper case plural full format.
-%\changes{4.07}{2014-04-04}{fixed no case change bug}
-% \begin{macrocode}
-\newcommand*{\Acrfullplfmt}[3]{%
- \acrlinkfullformat{\@Acrlongpl}{\@acrshortpl}{#1}{#2}{#3}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%
%\begin{macro}{\ACRfullpl}
%\changes{1.13}{2008-05-10}{new}
%\changes{3.01}{2011-04-12}{made robust}
@@ -17246,26 +17981,17 @@ you
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\ACRfullplfmt}
-%\changes{4.02}{2013-12-05}{new}
-% All upper case plural full format.
-% \begin{macrocode}
-\newcommand*{\ACRfullplfmt}[3]{%
- \acrlinkfullformat{\@ACRlongpl}{\@ACRshortpl}{#1}{#2}{#3}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\section{Predefined acronym styles}
+%\subsection{Predefined acronym styles}
%\begin{macro}{\acronymfont}
-%This is only used with the additional acronym styles:
+%Used by the acronym styles to apply a font change to the short form.
% \begin{macrocode}
\newcommand{\acronymfont}[1]{#1}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\firstacronymfont}
-%This is only used with the additional acronym styles:
%\changes{1.14}{2008-06-17}{new}
+%Used by the acronym styles to apply a font change to the short form
+% on first use.
% \begin{macrocode}
\newcommand{\firstacronymfont}[1]{\acronymfont{#1}}
% \end{macrocode}
@@ -17343,7 +18069,10 @@ you
short={\the\glsshorttok},%
shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
long={\the\glslongtok},%
- longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+% \end{macrocode}
+%\changes{4.50}{2022-10-14}{corrected long plural suffix}
+% \begin{macrocode}
+ longplural={\the\glslongtok\noexpand\glspluralsuffix},%
\GenericAcronymFields,%
\the\glskeylisttok
}%
@@ -17351,7 +18080,8 @@ you
\@do@newglossaryentry
}%
% \end{macrocode}
-% Make sure that \ics{acrfull} etc reflects the new style:
+% Make sure that \cs{acrfull} etc reflects the new style:
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\renewcommand*{\acrfullfmt}[3]{%
\glslink[##1]{##2}{\genacrfullformat{##2}{##3}}}%
@@ -17359,16 +18089,16 @@ you
\glslink[##1]{##2}{\Genacrfullformat{##2}{##3}}}%
\renewcommand*{\ACRfullfmt}[3]{%
\glslink[##1]{##2}{%
- \mfirstucMakeUppercase{\genacrfullformat{##2}{##3}}}}%
+ \glsuppercase{\genacrfullformat{##2}{##3}}}}%
\renewcommand*{\acrfullplfmt}[3]{%
\glslink[##1]{##2}{\genplacrfullformat{##2}{##3}}}%
\renewcommand*{\Acrfullplfmt}[3]{%
\glslink[##1]{##2}{\Genplacrfullformat{##2}{##3}}}%
\renewcommand*{\ACRfullplfmt}[3]{%
\glslink[##1]{##2}{%
- \mfirstucMakeUppercase{\genplacrfullformat{##2}{##3}}}}%
+ \glsuppercase{\genplacrfullformat{##2}{##3}}}}%
% \end{macrocode}
-% Make sure that \ics{glsentryfull} etc reflects the new style:
+% Make sure that \cs{glsentryfull} etc reflects the new style:
% \begin{macrocode}
\renewcommand*{\glsentryfull}[1]{\genacrfullformat{##1}{}}%
\renewcommand*{\Glsentryfull}[1]{\Genacrfullformat{##1}{}}%
@@ -17700,7 +18430,7 @@ you
%\end{acrstyle}
%
%\begin{acrstyle}{long-sp-short-desc}
-%\changes{4.02}{2013-12-05}{new}
+%\changes{4.16}{2015-07-08}{new}
% \meta{long} (\marg{short}) acronym style that has an
% accompanying description (which the user needs to supply).
% The space between the long and short form is given by
@@ -17849,8 +18579,9 @@ you
{%
% \end{macrocode}
% Plural form, all caps:
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
- \mfirstucMakeUppercase
+ \glsuppercase
{\glsentrylongpl{\glslabel}\glsinsert}%
}%
}%
@@ -17874,8 +18605,9 @@ you
{%
% \end{macrocode}
% Subsequent singular form, all caps:
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
- \mfirstucMakeUppercase
+ \glsuppercase
{\glsentrylong{\glslabel}\glsinsert}%
}%
}%
@@ -17893,6 +18625,7 @@ you
\renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
% \end{macrocode}
%\changes{4.03}{2014-01-20}{fixed bug in \cs{acrfullfmt}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\renewcommand*{\acrfullfmt}[3]{%
\glslink[##1]{##2}{\glsentrylong{##2}##3\space
@@ -17902,7 +18635,7 @@ you
(\acronymfont{\glsentryshort{##2}})}}%
\renewcommand*{\ACRfullfmt}[3]{%
\glslink[##1]{##2}{%
- \mfirstucMakeUppercase{\glsentrylong{##2}##3\space
+ \glsuppercase{\glsentrylong{##2}##3\space
(\acronymfont{\glsentryshort{##2}})}}}%
% \end{macrocode}
%\changes{4.03}{2014-01-20}{fixed bug in \cs{acrfullplfmt}}
@@ -17912,13 +18645,14 @@ you
(\acronymfont{\glsentryshortpl{##2}})}}%
% \end{macrocode}
%\changes{4.03}{2014-01-20}{fixed bug in \cs{Acrfullplfmt}}
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\renewcommand*{\Acrfullplfmt}[3]{%
\glslink[##1]{##2}{\Glsentrylongpl{##2}##3\space
(\acronymfont{\glsentryshortpl{##2}})}}%
\renewcommand*{\ACRfullplfmt}[3]{%
\glslink[##1]{##2}{%
- \mfirstucMakeUppercase{\glsentrylongpl{##2}##3\space
+ \glsuppercase{\glsentrylongpl{##2}##3\space
(\acronymfont{\glsentryshortpl{##2}})}}}%
\renewcommand*{\glsentryfull}[1]{%
\glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})%
@@ -17953,8 +18687,9 @@ you
\renewcommand*{\GenericAcronymFields}{}%
% \end{macrocode}
%\changes{4.03}{2014-01-20}{commented spurious EOL}
+%\changes{4.50}{2022-10-14}{removed \cs{acronymfont} from around long form}
% \begin{macrocode}
- \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentrylong{##1}}}%
+ \renewcommand*{\acronymentry}[1]{\glsentrylong{##1}}%
\renewcommand*{\acronymsort}[2]{##2}%
}%
% \end{macrocode}
@@ -17998,7 +18733,8 @@ you
\renewcommand*{\acronymfont}[1]{##1}%
\renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
% \end{macrocode}
-% Don't use footnotes for \ics{acrfull}:
+% Don't use footnotes for \cs{acrfull}:
+%\changes{4.50}{2022-10-14}{switched to using \cs{glsuppercase}}
% \begin{macrocode}
\renewcommand*{\acrfullfmt}[3]{%
\glslink[##1]{##2}{\acronymfont{\glsentryshort{##2}}##3\space
@@ -18008,7 +18744,7 @@ you
(\glsentrylong{##2})}}%
\renewcommand*{\ACRfullfmt}[3]{%
\glslink[##1]{##2}{%
- \mfirstucMakeUppercase{\acronymfont{\glsentryshort{##2}}##3\space
+ \glsuppercase{\acronymfont{\glsentryshort{##2}}##3\space
(\glsentrylong{##2})}}}%
\renewcommand*{\acrfullplfmt}[3]{%
\glslink[##1]{##2}{\acronymfont{\glsentryshortpl{##2}}##3\space
@@ -18018,10 +18754,10 @@ you
(\glsentrylongpl{##2})}}%
\renewcommand*{\ACRfullplfmt}[3]{%
\glslink[##1]{##2}{%
- \mfirstucMakeUppercase{\acronymfont{\glsentryshortpl{##2}}##3\space
+ \glsuppercase{\acronymfont{\glsentryshortpl{##2}}##3\space
(\glsentrylongpl{##2})}}}%
% \end{macrocode}
-% Similarly for \ics{glsentryfull} etc:
+% Similarly for \cs{glsentryfull} etc:
% \begin{macrocode}
\renewcommand*{\glsentryfull}[1]{%
\acronymfont{\glsentryshort{##1}}\space(\glsentrylong{##1})}%
@@ -18240,155 +18976,70 @@ you
\fi
% \end{macrocode}
%
-% These commands for setting the style are now deprecated but are
-% kept for backward compatibility.
-%
%\begin{macro}{\SetDefaultAcronymDisplayStyle}
% Sets the default acronym display style for given glossary.
%\changes{2.04}{2009-11-10}{new}
%\changes{3.11a}{2013-10-15}{changed to use \cs{defglsentryfmt}}
+% Used by \sty{glossaries-extra} when restoring \cs{newacronym}.
% \begin{macrocode}
\newcommand*{\SetDefaultAcronymDisplayStyle}[1]{%
\defglsentryfmt[#1]{\glsgenentryfmt}%
}
% \end{macrocode}
%\end{macro}
+%
+% The following commands for setting the acronym style are now deprecated.
+%
%\begin{macro}{\DefaultNewAcronymDef}
% Sets up the acronym definition for the default style.
% The information is provided by the tokens \cs{glslabeltok},
% \cs{glsshorttok}, \cs{glslongtok} and \cs{glskeylisttok}.
-% \begin{macrocode}
-\newcommand*{\DefaultNewAcronymDef}{%
- \edef\@do@newglossaryentry{%
- \noexpand\newglossaryentry{\the\glslabeltok}%
- {%
- type=\acronymtype,%
- name={\the\glsshorttok},%
- sort={\the\glsshorttok},%
- text={\the\glsshorttok},%
- first={\acrfullformat{\the\glslongtok}{\the\glsshorttok}},%
- plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
- firstplural={\acrfullformat{\noexpand\expandonce\noexpand\@glo@longpl}%
- {\noexpand\expandonce\noexpand\@glo@shortpl}},%
- short={\the\glsshorttok},%
- shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
- long={\the\glslongtok},%
- longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
- description={\the\glslongtok},%
- descriptionplural={\noexpand\expandonce\noexpand\@glo@longpl},%
-% \end{macrocode}
-% Remaining options specified by the user:
-% \begin{macrocode}
- \the\glskeylisttok
- }%
- }%
- \let\@org@gls@assign@firstpl\gls@assign@firstpl
- \let\@org@gls@assign@plural\gls@assign@plural
- \let\@org@gls@assign@descplural\gls@assign@descplural
- \def\gls@assign@firstpl##1##2{%
- \@@gls@expand@field{##1}{firstpl}{##2}%
- }%
- \def\gls@assign@plural##1##2{%
- \@@gls@expand@field{##1}{plural}{##2}%
- }%
- \def\gls@assign@descplural##1##2{%
- \@@gls@expand@field{##1}{descplural}{##2}%
- }%
- \@do@newglossaryentry
- \let\gls@assign@firstpl\@org@gls@assign@firstpl
- \let\gls@assign@plural\@org@gls@assign@plural
- \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
-% \end{macrocode}
-% If expansion is switched off, the default plurals won't be properly set.
-% \begin{macrocode}
- \@@gls@noexpand@assign@default@plurals
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\@@gls@noexpand@assign@default@plurals}
%\changes{4.47}{2021-09-20}{new}
-% \begin{macrocode}
-\newcommand*{\@@gls@noexpand@assign@default@plurals}{%
- \expandafter\ifx\csname glo@\the\glslabeltok @plural\endcsname\@@gls@@default@acr@plural
- \csxdef{glo@\the\glslabeltok @plural}{\expandonce\@glo@shortpl}%
- \fi
- \expandafter\ifx\csname glo@\the\glslabeltok @firstpl\endcsname\@@gls@@default@acr@firstplural
- \csxdef{glo@\the\glslabeltok @firstpl}{%
- \expandonce\@glo@longpl\glsspace(\expandonce\@glo@shortpl)}%
- \fi
- \expandafter\ifx\csname glo@\the\glslabeltok @descplural\endcsname\@@gls@@default@acr@descplural
- \csxdef{glo@\the\glslabeltok @descplural}{\expandonce\@glo@longpl}%
- \fi
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+%\cs{@@gls@noexpand@assign@default@plurals} was used in \cs{DefaultNewAcronymDef}.
+% Added in v4.47 to fix bug \#162
+% (\url{https://www.dickimaw-books.com/bugtracker.php?key=162}).
+% Removed in v4.50 along with the deprecated styles.
%\end{macro}
%\begin{macro}{\@@gls@@default@acr@plural}
%\changes{4.47}{2021-09-20}{new}
-% \begin{macrocode}
-\newcommand*{\@@gls@@default@acr@plural}{\expandonce\@glo@shortpl}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
%\end{macro}
%\begin{macro}{\@@gls@@default@acr@firstplural}
%\changes{4.47}{2021-09-20}{new}
-% \begin{macrocode}
-\newcommand*{\@@gls@@default@acr@firstplural}{%
- \expandonce\@glo@longpl\glsspace(\expandonce\@glo@shortpl)%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
%\end{macro}
%\begin{macro}{\@@gls@@default@acr@descplural}
%\changes{4.47}{2021-09-20}{new}
-% \begin{macrocode}
-\newcommand*{\@@gls@@default@acr@descplural}{\expandonce\@glo@longpl}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
%\end{macro}
%\begin{macro}{\SetDefaultAcronymStyle}
%\changes{2.04}{2009-11-10}{new}
-% Set up the default acronym style:
-% \begin{macrocode}
-\newcommand*{\SetDefaultAcronymStyle}{%
-% \end{macrocode}
-% Set the display style:
-% \begin{macrocode}
- \@for\@gls@type:=\@glsacronymlists\do{%
- \SetDefaultAcronymDisplayStyle{\@gls@type}%
- }%
-% \end{macrocode}
-% Set up the definition of \cs{newacronym}:
-% \begin{macrocode}
- \renewcommand{\newacronym}[4][]{%
-% \end{macrocode}
-% If user is just using the main glossary and hasn't identified it
-% as a list of acronyms, then update. (This is done to ensure
-% backwards compatibility with versions prior to 2.04).
-% \begin{macrocode}
- \ifx\@glsacronymlists\@empty
- \def\@glo@type{\acronymtype}%
- \setkeys{glossentry}{##1}%
- \DeclareAcronymList{\@glo@type}%
- \SetDefaultAcronymDisplayStyle{\@glo@type}%
- \fi
- \glskeylisttok{##1}%
- \glslabeltok{##2}%
- \glsshorttok{##3}%
- \glslongtok{##4}%
- \newacronymhook
- \DefaultNewAcronymDef
- }%
- \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
%
%\begin{macro}{\acrfootnote}
%\changes{3.0}{2011-04-02}{new}
-% Used by the footnote acronym styles.
+% This was used by the old footnote acronym styles.
+%Since it may have been used outside of those styles, it has been
+%retained.
% \begin{macrocode}
\newcommand*{\acrfootnote}[3]{\acrlinkfootnote{#1}{#2}{#3}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\acrlinkfootnote}
%\changes{3.0}{2011-04-02}{new}
+% This was used by the old footnote acronym styles.
+%Since it may have been used outside of those styles, it has been
+%retained.
% \begin{macrocode}
\newcommand*{\acrlinkfootnote}[3]{%
\footnote{\glslink[#1]{#2}{#3}}%
@@ -18397,6 +19048,9 @@ you
%\end{macro}
%\begin{macro}{\acrnolinkfootnote}
%\changes{3.0}{2011-04-02}{new}
+% This was used by the old footnote acronym styles.
+%Since it may have been used outside of those styles, it has been
+%retained.
% \begin{macrocode}
\newcommand*{\acrnolinkfootnote}[3]{%
\footnote{#3}%
@@ -18410,79 +19064,17 @@ you
%\changes{2.04}{2009-11-10}{new}
%\changes{3.0}{2011-04-02}{expanded options link options}
%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
-% \begin{macrocode}
-\newcommand*{\SetDescriptionFootnoteAcronymDisplayStyle}[1]{%
- \defglsentryfmt[#1]{%
-% \end{macrocode}
-%\changes{4.02}{2013-12-05}{Moved check for empty custom text to prevent
-%unwanted parenthetical material}
-% \begin{macrocode}
- \ifdefempty\glscustomtext
- {%
- \ifglsused{\glslabel}%
- {%
- \acronymfont{\glsgenentryfmt}%
- }%
- {%
- \firstacronymfont{\glsgenentryfmt}%
- \ifglshassymbol{\glslabel}%
- {%
- \expandafter\protect\expandafter\acrfootnote\expandafter
- {\@gls@link@opts}{\@gls@link@label}%
- {%
- \glsifplural
- {\glsentrysymbolplural{\glslabel}}%
- {\glsentrysymbol{\glslabel}}%
- }%
- }%
- }%
- }%
- {\glscustomtext\glsinsert}%
- }%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\DescriptionFootnoteNewAcronymDef}
-% \begin{macrocode}
-\newcommand*{\DescriptionFootnoteNewAcronymDef}{%
- \edef\@do@newglossaryentry{%
- \noexpand\newglossaryentry{\the\glslabeltok}%
- {%
- type=\acronymtype,%
- name={\noexpand\acronymfont{\the\glsshorttok}},%
- sort={\the\glsshorttok},%
- first={\the\glsshorttok},%
- firstplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
- text={\the\glsshorttok},%
- plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
- short={\the\glsshorttok},%
- shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
- long={\the\glslongtok},%
- longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
- symbol={\the\glslongtok},%
- symbolplural={\noexpand\expandonce\noexpand\@glo@longpl},%
- \the\glskeylisttok
- }%
- }%
- \let\@org@gls@assign@firstpl\gls@assign@firstpl
- \let\@org@gls@assign@plural\gls@assign@plural
- \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
- \def\gls@assign@firstpl##1##2{%
- \@@gls@expand@field{##1}{firstpl}{##2}%
- }%
- \def\gls@assign@plural##1##2{%
- \@@gls@expand@field{##1}{plural}{##2}%
- }%
- \def\gls@assign@symbolplural##1##2{%
- \@@gls@expand@field{##1}{symbolplural}{##2}%
- }%
- \@do@newglossaryentry
- \let\gls@assign@plural\@org@gls@assign@plural
- \let\gls@assign@firstpl\@org@gls@assign@firstpl
- \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\SetDescriptionFootnoteAcronymStyle}
% If a description and footnote are both required, store the long form
% in the \gloskey{symbol} key. Store the short form in \gloskey{text}
@@ -18492,72 +19084,9 @@ you
% This style was deprecated with the introduction of
% \cs{newacronymstyle}.
%\changes{4.47}{2021-09-20}{added deprecated warnings}
-% \begin{macrocode}
-\newcommand*{\SetDescriptionFootnoteAcronymStyle}{%
- \ifglsacrsmallcaps
- \@gls@deprecated@acr@warning{footnote,smallcaps,description}%
- {footnote-sc-desc}{short-sc-footnote-desc}%
- \else
- \ifglsacrsmaller
- \@gls@deprecated@acr@warning{footnote,smaller,description}%
- {footnote-sm-desc}{short-sm-footnote-desc}%
- \else
- \@gls@deprecated@acr@warning{footnote,description}%
- {footnote-desc}{short-footnote-desc}%
- \fi
- \fi
- \renewcommand{\newacronym}[4][]{%
- \ifx\@glsacronymlists\@empty
- \def\@glo@type{\acronymtype}%
- \setkeys{glossentry}{##1}%
- \DeclareAcronymList{\@glo@type}%
- \SetDescriptionFootnoteAcronymDisplayStyle{\@glo@type}%
- \fi
- \glskeylisttok{##1}%
- \glslabeltok{##2}%
- \glsshorttok{##3}%
- \glslongtok{##4}%
- \newacronymhook
- \DescriptionFootnoteNewAcronymDef
- }%
-% \end{macrocode}
-%
-% If \pkgopt{footnote} package option is specified, set the first
-% use to append the long form (stored in \gloskey{symbol}) as a
-% footnote.
-%\changes{1.12}{2008-03-08}{Added \cs{protect} before \cs{footnote}
-% and \cs{glslink}}
-% \begin{macrocode}
- \@for\@gls@type:=\@glsacronymlists\do{%
- \SetDescriptionFootnoteAcronymDisplayStyle{\@gls@type}%
- }%
-% \end{macrocode}
-% Redefine \ics{acronymfont} if small caps required. The plural suffix
-% is set in an upright font so that it remains in normal lower case,
-% otherwise it looks as though it's part of the acronym.
-%\changes{1.19}{2009-03-02}{changed \cs{acronymfont} to use
-%\cs{textsmaller} instead
-%of \cs{smaller}}
-% \begin{macrocode}
- \ifglsacrsmallcaps
- \renewcommand*{\acronymfont}[1]{\textsc{##1}}%
-% \end{macrocode}
-% \begin{macrocode}
- \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
- \else
- \ifglsacrsmaller
- \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}%
- \fi
- \fi
-% \end{macrocode}
-% Check for package option clash
-% \begin{macrocode}
- \ifglsacrdua
- \PackageError{glossaries}{Option clash: `footnote' and `dua'
- can't both be set}{}%
- \fi
-}%
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
%
%\begin{macro}{\SetDescriptionDUAAcronymDisplayStyle}
@@ -18565,53 +19094,17 @@ you
% description and dua combination.
%\changes{2.04}{2009-11-10}{new}
%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
-% \begin{macrocode}
-\newcommand*{\SetDescriptionDUAAcronymDisplayStyle}[1]{%
- \defglsentryfmt[#1]{\glsgenentryfmt}%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\DescriptionDUANewAcronymDef}
-% \begin{macrocode}
-\newcommand*{\DescriptionDUANewAcronymDef}{%
- \edef\@do@newglossaryentry{%
- \noexpand\newglossaryentry{\the\glslabeltok}%
- {%
- type=\acronymtype,%
- name={\the\glslongtok},%
- sort={\the\glslongtok},
- text={\the\glslongtok},%
- first={\the\glslongtok},%
- plural={\noexpand\expandonce\noexpand\@glo@longpl},%
- firstplural={\noexpand\expandonce\noexpand\@glo@longpl},%
- short={\the\glsshorttok},%
- shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
- long={\the\glslongtok},%
- longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
- symbol={\the\glsshorttok},%
- symbolplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
- \the\glskeylisttok
- }%
- }%
- \let\@org@gls@assign@firstpl\gls@assign@firstpl
- \let\@org@gls@assign@plural\gls@assign@plural
- \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
- \def\gls@assign@firstpl##1##2{%
- \@@gls@expand@field{##1}{firstpl}{##2}%
- }%
- \def\gls@assign@plural##1##2{%
- \@@gls@expand@field{##1}{plural}{##2}%
- }%
- \def\gls@assign@symbolplural##1##2{%
- \@@gls@expand@field{##1}{symbolplural}{##2}%
- }%
- \@do@newglossaryentry
- \let\gls@assign@firstpl\@org@gls@assign@firstpl
- \let\gls@assign@plural\@org@gls@assign@plural
- \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\SetDescriptionDUAAcronymStyle}
% Description, don't use acronym and no footnote.
% Note that the short form is stored in the \gloskey{symbol} key,
@@ -18620,40 +19113,9 @@ you
% This style was deprecated with the introduction of
% \cs{newacronymstyle}.
%\changes{4.47}{2021-09-20}{added deprecated warning}
-% \begin{macrocode}
-\newcommand*{\SetDescriptionDUAAcronymStyle}{%
- \ifglsacrsmallcaps
- \PackageError{glossaries}{Option clash: `smallcaps' and `dua'
- can't both be set}{}%
- \else
- \ifglsacrsmaller
- \PackageError{glossaries}{Option clash: `smaller' and `dua'
- can't both be set}{}%
- \fi
- \fi
- \@gls@deprecated@acr@warning{dua,description}{dua-desc}{long-noshort-desc}%
- \renewcommand{\newacronym}[4][]{%
- \ifx\@glsacronymlists\@empty
- \def\@glo@type{\acronymtype}%
- \setkeys{glossentry}{##1}%
- \DeclareAcronymList{\@glo@type}%
- \SetDescriptionDUAAcronymDisplayStyle{\@glo@type}%
- \fi
- \glskeylisttok{##1}%
- \glslabeltok{##2}%
- \glsshorttok{##3}%
- \glslongtok{##4}%
- \newacronymhook
- \DescriptionDUANewAcronymDef
- }%
-% \end{macrocode}
-% Set display.
-% \begin{macrocode}
- \@for\@gls@type:=\@glsacronymlists\do{%
- \SetDescriptionDUAAcronymDisplayStyle{\@gls@type}%
- }%
-}%
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
%
%\begin{macro}{\SetDescriptionAcronymDisplayStyle}
@@ -18662,150 +19124,28 @@ you
%\changes{2.04}{2009-11-10}{new}
%\changes{3.07}{2013-07-05}{now using \cs{glsdoparenifnotempty}}
%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
-% \begin{macrocode}
-\newcommand*{\SetDescriptionAcronymDisplayStyle}[1]{%
- \defglsentryfmt[#1]{%
-% \end{macrocode}
-%\changes{4.02}{2013-12-05}{Moved check for empty custom text to prevent
-%unwanted parenthetical material}
-% \begin{macrocode}
- \ifdefempty\glscustomtext
- {%
- \ifglsused{\glslabel}%
- {%
-% \end{macrocode}
-% Move the inserted text outside of \cs{acronymfont}
-% \begin{macrocode}
- \let\gls@org@insert\glsinsert
- \let\glsinsert\@empty
- \acronymfont{\glsgenentryfmt}\gls@org@insert
- }%
- {%
- \glsgenentryfmt
- \ifglshassymbol{\glslabel}%
- {%
- \glsifplural
- {%
- \def\@glo@symbol{\glsentrysymbolplural{\glslabel}}%
- }%
- {%
- \def\@glo@symbol{\glsentrysymbol{\glslabel}}%
- }%
- \space(\protect\firstacronymfont
- {\glscapscase
- {\@glo@symbol}
- {\@glo@symbol}
- {\mfirstucMakeUppercase{\@glo@symbol}}})%
- }%
- {}%
- }%
- }%
- {\glscustomtext\glsinsert}%
- }%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\DescriptionNewAcronymDef}
-% \begin{macrocode}
-\newcommand*{\DescriptionNewAcronymDef}{%
- \edef\@do@newglossaryentry{%
- \noexpand\newglossaryentry{\the\glslabeltok}%
- {%
- type=\acronymtype,%
- name={\noexpand
- \acrnameformat{\the\glsshorttok}{\the\glslongtok}},%
- sort={\the\glsshorttok},%
- first={\the\glslongtok},%
- firstplural={\noexpand\expandonce\noexpand\@glo@longpl},%
- text={\the\glsshorttok},%
- plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
- short={\the\glsshorttok},%
- shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
- long={\the\glslongtok},%
- longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
- symbol={\noexpand\@glo@text},%
- symbolplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
- \the\glskeylisttok}%
- }%
- \let\@org@gls@assign@firstpl\gls@assign@firstpl
- \let\@org@gls@assign@plural\gls@assign@plural
- \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
- \def\gls@assign@firstpl##1##2{%
- \@@gls@expand@field{##1}{firstpl}{##2}%
- }%
- \def\gls@assign@plural##1##2{%
- \@@gls@expand@field{##1}{plural}{##2}%
- }%
- \def\gls@assign@symbolplural##1##2{%
- \@@gls@expand@field{##1}{symbolplural}{##2}%
- }%
- \@do@newglossaryentry
- \let\gls@assign@firstpl\@org@gls@assign@firstpl
- \let\gls@assign@plural\@org@gls@assign@plural
- \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\SetDescriptionAcronymStyle}
% Option \pkgopt{description} is used, but not \pkgopt{dua}
% or \pkgopt{footnote}.
% Store long form in \gloskey{first} key
% and short form in \gloskey{text} and \gloskey{symbol} key.
-% The name is stored using \ics{acrnameformat} to allow the
+% The name is stored using \cs{acrnameformat} to allow the
% user to override the way the name is displayed in the
% list of acronyms.
-% \begin{macrocode}
-\newcommand*{\SetDescriptionAcronymStyle}{%
- \ifglsacrsmallcaps
- \@gls@deprecated@acr@warning{smallcaps,description}%
- {long-sc-short-desc}{long-short-sc-desc}%
- \else
- \ifglsacrsmaller
- \@gls@deprecated@acr@warning{smaller,description}%
- {long-sm-short-desc}{long-short-sm-desc}%
- \else
- \@gls@deprecated@acr@warning{description}%
- {long-short-desc}{long-short-desc}%
- \fi
- \fi
- \renewcommand{\newacronym}[4][]{%
- \ifx\@glsacronymlists\@empty
- \def\@glo@type{\acronymtype}%
- \setkeys{glossentry}{##1}%
- \DeclareAcronymList{\@glo@type}%
- \SetDescriptionAcronymDisplayStyle{\@glo@type}%
- \fi
- \glskeylisttok{##1}%
- \glslabeltok{##2}%
- \glsshorttok{##3}%
- \glslongtok{##4}%
- \newacronymhook
- \DescriptionNewAcronymDef
- }%
-% \end{macrocode}
-% Set display.
-% \begin{macrocode}
- \@for\@gls@type:=\@glsacronymlists\do{%
- \SetDescriptionAcronymDisplayStyle{\@gls@type}%
- }%
-% \end{macrocode}
-% Redefine \ics{acronymfont} if small caps required. The plural suffix
-% is set in an upright font so that it remains in normal lower case,
-% otherwise it looks as though it's part of the acronym.
-%\changes{1.19}{2009-03-02}{changed \cs{acronymfont} to use
-%\cs{textsmaller} instead
-%of \cs{smaller}}
-% \begin{macrocode}
- \ifglsacrsmallcaps
- \renewcommand{\acronymfont}[1]{\textsc{##1}}
- \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
- \else
- \ifglsacrsmaller
- \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}%
- \fi
- \fi
-}%
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
%
%\begin{macro}{\SetFootnoteAcronymDisplayStyle}
@@ -18813,88 +19153,17 @@ you
% footnote setting (but not \pkgopt{description} or \pkgopt{dua}).
%\changes{2.04}{2009-11-10}{new}
%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
-% \begin{macrocode}
-\newcommand*{\SetFootnoteAcronymDisplayStyle}[1]{%
- \defglsentryfmt[#1]{%
-% \end{macrocode}
-%\changes{4.02}{2013-12-05}{Moved check for empty custom text to prevent
-%unwanted parenthetical material}
-% \begin{macrocode}
- \ifdefempty\glscustomtext
- {%
-% \end{macrocode}
-% Move the inserted text outside of \cs{acronymfont}
-% \begin{macrocode}
- \let\gls@org@insert\glsinsert
- \let\glsinsert\@empty
- \ifglsused{\glslabel}%
- {%
- \acronymfont{\glsgenentryfmt}\gls@org@insert
- }%
- {%
- \firstacronymfont{\glsgenentryfmt}\gls@org@insert
- \ifglshaslong{\glslabel}%
- {%
- \expandafter\protect\expandafter\acrfootnote\expandafter
- {\@gls@link@opts}{\@gls@link@label}%
- {%
- \glsifplural
- {\glsentrylongpl{\glslabel}}%
- {\glsentrylong{\glslabel}}%
- }%
- }%
-% \end{macrocode}
-%\changes{3.13a}{2013-11-05}{fixed missing argument bug}
-% \begin{macrocode}
- {}%
- }%
- }%
- {\glscustomtext\glsinsert}%
- }%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\FootnoteNewAcronymDef}
-% \begin{macrocode}
-\newcommand*{\FootnoteNewAcronymDef}{%
- \edef\@do@newglossaryentry{%
- \noexpand\newglossaryentry{\the\glslabeltok}%
- {%
- type=\acronymtype,%
- name={\noexpand\acronymfont{\the\glsshorttok}},%
- sort={\the\glsshorttok},%
- text={\the\glsshorttok},%
- plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
- first={\the\glsshorttok},%
- firstplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
- short={\the\glsshorttok},%
- shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
- long={\the\glslongtok},%
- longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
- description={\the\glslongtok},%
- descriptionplural={\noexpand\expandonce\noexpand\@glo@longpl},%
- \the\glskeylisttok
- }%
- }%
- \let\@org@gls@assign@plural\gls@assign@plural
- \let\@org@gls@assign@firstpl\gls@assign@firstpl
- \let\@org@gls@assign@descplural\gls@assign@descplural
- \def\gls@assign@firstpl##1##2{%
- \@@gls@expand@field{##1}{firstpl}{##2}%
- }%
- \def\gls@assign@plural##1##2{%
- \@@gls@expand@field{##1}{plural}{##2}%
- }%
- \def\gls@assign@descplural##1##2{%
- \@@gls@expand@field{##1}{descplural}{##2}%
- }%
- \@do@newglossaryentry
- \let\gls@assign@plural\@org@gls@assign@plural
- \let\gls@assign@firstpl\@org@gls@assign@firstpl
- \let\gls@assign@descplural\@org@gls@assign@descplural
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\SetFootnoteAcronymStyle}
% If \pkgopt{footnote} package option is specified, set the first
% use to append the long form (stored in \gloskey{description}) as a
@@ -18903,72 +19172,19 @@ you
% This style was deprecated with the introduction of
% \cs{newacronymstyle}.
%\changes{4.47}{2021-09-20}{added deprecated warnings}
-% \begin{macrocode}
-\newcommand*{\SetFootnoteAcronymStyle}{%
- \ifglsacrsmallcaps
- \@gls@deprecated@acr@warning{footnote,smallcaps}{footnote-sc}{short-sc-footnote}%
- \else
- \ifglsacrsmaller
- \@gls@deprecated@acr@warning{footnote,smaller}{footnote-sm}{short-sm-footnote}%
- \else
- \@gls@deprecated@acr@warning{footnote}{footnote}{short-footnote}%
- \fi
- \fi
- \renewcommand{\newacronym}[4][]{%
- \ifx\@glsacronymlists\@empty
- \def\@glo@type{\acronymtype}%
- \setkeys{glossentry}{##1}%
- \DeclareAcronymList{\@glo@type}%
- \SetFootnoteAcronymDisplayStyle{\@glo@type}%
- \fi
- \glskeylisttok{##1}%
- \glslabeltok{##2}%
- \glsshorttok{##3}%
- \glslongtok{##4}%
- \newacronymhook
- \FootnoteNewAcronymDef
- }%
-% \end{macrocode}
-% Set display
-%\changes{1.12}{2008-03-08}{Added \cs{protect} before \cs{footnote} and
-% \cs{glslink}}
-% \begin{macrocode}
- \@for\@gls@type:=\@glsacronymlists\do{%
- \SetFootnoteAcronymDisplayStyle{\@gls@type}%
- }%
-% \end{macrocode}
-% Redefine \ics{acronymfont} if small caps required. The plural suffix
-% is set in an upright font so that it remains in normal lower case,
-% otherwise it looks as though it's part of the acronym.
-%\changes{1.19}{2009-03-02}{changed \cs{acronymfont} to use
-%\cs{textsmaller} instead
-%of \cs{smaller}}
-% \begin{macrocode}
- \ifglsacrsmallcaps
- \renewcommand*{\acronymfont}[1]{\textsc{##1}}%
- \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
- \else
- \ifglsacrsmaller
- \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}%
- \fi
- \fi
-% \end{macrocode}
-% Check for option clash
-% \begin{macrocode}
- \ifglsacrdua
- \PackageError{glossaries}{Option clash: `footnote' and `dua'
- can't both be set}{}%
- \fi
-}%
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
%
%\begin{macro}{\glsdoparenifnotempty}
+%\changes{4.50}{2022-10-14}{replaced \cs{DeclareRobustCommand} with
+%\cs{newrobustcmd}}
% Do a space followed by the argument if the argument doesn't expand
% to empty or \cs{relax}. If argument isn't empty (or \cs{relax}), apply
% the macro to it given in the second argument.
% \begin{macrocode}
-\DeclareRobustCommand*{\glsdoparenifnotempty}[2]{%
+\newrobustcmd*{\glsdoparenifnotempty}[2]{%
\protected@edef\gls@tmp{#1}%
\ifdefempty\gls@tmp
{}%
@@ -18988,107 +19204,17 @@ you
% specified.
%\changes{2.04}{2009-11-10}{new}
%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
-% \begin{macrocode}
-\newcommand*{\SetSmallAcronymDisplayStyle}[1]{%
- \defglsentryfmt[#1]{%
-% \end{macrocode}
-%\changes{4.02}{2013-12-05}{Moved check for empty custom text to prevent
-%unwanted parenthetical material}
-% \begin{macrocode}
- \ifdefempty\glscustomtext
- {%
-% \end{macrocode}
-% Move the inserted text outside of \cs{acronymfont}
-% \begin{macrocode}
- \let\gls@org@insert\glsinsert
- \let\glsinsert\@empty
- \ifglsused{\glslabel}%
- {%
- \acronymfont{\glsgenentryfmt}\gls@org@insert
- }%
- {%
- \glsgenentryfmt
- \ifglshassymbol{\glslabel}%
- {%
- \glsifplural
- {%
- \def\@glo@symbol{\glsentrysymbolplural{\glslabel}}%
- }%
- {%
- \def\@glo@symbol{\glsentrysymbol{\glslabel}}%
- }%
- \space
- (\glscapscase
- {\firstacronymfont{\@glo@symbol}}%
- {\firstacronymfont{\@glo@symbol}}%
- {\firstacronymfont{\mfirstucMakeUppercase{\@glo@symbol}}})%
- }%
- {}%
- }%
- }%
- {\glscustomtext\glsinsert}%
- }%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
%\begin{macro}{\SmallNewAcronymDef}
%\changes{3.02}{2012-05-21}{fixed broken short and long plural}
-% \begin{macrocode}
-\newcommand*{\SmallNewAcronymDef}{%
- \edef\@do@newglossaryentry{%
- \noexpand\newglossaryentry{\the\glslabeltok}%
- {%
- type=\acronymtype,%
- name={\noexpand\acronymfont{\the\glsshorttok}},%
- sort={\the\glsshorttok},%
- text={\the\glsshorttok},%
-% \end{macrocode}
-% Default to the short plural.
-% \begin{macrocode}
- plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
- first={\the\glslongtok},%
-% \end{macrocode}
-% Default to the long plural.
-% \begin{macrocode}
- firstplural={\noexpand\expandonce\noexpand\@glo@longpl},%
- short={\the\glsshorttok},%
- shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
- long={\the\glslongtok},%
- longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
- description={\noexpand\@glo@first},%
- descriptionplural={\noexpand\expandonce\noexpand\@glo@longpl},%
- symbol={\the\glsshorttok},%
-% \end{macrocode}
-% Default to the short plural.
-% \begin{macrocode}
- symbolplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
- \the\glskeylisttok
- }%
- }%
- \let\@org@gls@assign@firstpl\gls@assign@firstpl
- \let\@org@gls@assign@plural\gls@assign@plural
- \let\@org@gls@assign@descplural\gls@assign@descplural
- \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
- \def\gls@assign@firstpl##1##2{%
- \@@gls@expand@field{##1}{firstpl}{##2}%
- }%
- \def\gls@assign@plural##1##2{%
- \@@gls@expand@field{##1}{plural}{##2}%
- }%
- \def\gls@assign@descplural##1##2{%
- \@@gls@expand@field{##1}{descplural}{##2}%
- }%
- \def\gls@assign@symbolplural##1##2{%
- \@@gls@expand@field{##1}{symbolplural}{##2}%
- }%
- \@do@newglossaryentry
- \let\gls@assign@firstpl\@org@gls@assign@firstpl
- \let\gls@assign@plural\@org@gls@assign@plural
- \let\gls@assign@descplural\@org@gls@assign@descplural
- \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\SetSmallAcronymStyle}
% Neither footnote nor description required, but smallcaps or
% smaller specified.
@@ -19097,61 +19223,9 @@ you
% This style was deprecated with the introduction of
% \cs{newacronymstyle}.
%\changes{4.47}{2021-09-20}{added deprecated warnings}
-% \begin{macrocode}
-\newcommand*{\SetSmallAcronymStyle}{%
- \ifglsacrsmallcaps
- \@gls@deprecated@acr@warning{smallcaps}{long-sc-short}{long-short-sc}%
- \else
- \@gls@deprecated@acr@warning{smaller}{long-sm-short}{long-short-sm}%
- \fi
- \renewcommand{\newacronym}[4][]{%
- \ifx\@glsacronymlists\@empty
- \def\@glo@type{\acronymtype}%
- \setkeys{glossentry}{##1}%
- \DeclareAcronymList{\@glo@type}%
- \SetSmallAcronymDisplayStyle{\@glo@type}%
- \fi
- \glskeylisttok{##1}%
- \glslabeltok{##2}%
- \glsshorttok{##3}%
- \glslongtok{##4}%
- \newacronymhook
- \SmallNewAcronymDef
- }%
-% \end{macrocode}
-% Change the display since \gloskey{first} only contains long form.
-% \begin{macrocode}
- \@for\@gls@type:=\@glsacronymlists\do{%
- \SetSmallAcronymDisplayStyle{\@gls@type}%
- }%
-% \end{macrocode}
-% Redefine \ics{acronymfont} if small caps required. The plural suffix
-% is set in an upright font so that it remains in normal lower case,
-% otherwise it looks as though it's part of the acronym.
-%\changes{1.19}{2009-03-02}{changed \cs{acronymfont} to use
-%\cs{textsmaller} instead
-%of \cs{smaller}}
-% \begin{macrocode}
- \ifglsacrsmallcaps
- \renewcommand*{\acronymfont}[1]{\textsc{##1}}
- \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
- \else
- \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}
- \fi
-% \end{macrocode}
-% check for option clash
-% \begin{macrocode}
- \ifglsacrdua
- \ifglsacrsmallcaps
- \PackageError{glossaries}{Option clash: `smallcaps' and `dua'
- can't both be set}{}%
- \else
- \PackageError{glossaries}{Option clash: `smaller' and `dua'
- can't both be set}{}%
- \fi
- \fi
-}%
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
%
%\begin{macro}{\SetDUADisplayStyle}
@@ -19159,89 +19233,25 @@ you
% setting.
%\changes{2.04}{2009-11-10}{new}
%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
-% \begin{macrocode}
-\newcommand*{\SetDUADisplayStyle}[1]{%
- \defglsentryfmt[#1]{\glsgenentryfmt}%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\DUANewAcronymDef}
-% \begin{macrocode}
-\newcommand*{\DUANewAcronymDef}{%
- \edef\@do@newglossaryentry{%
- \noexpand\newglossaryentry{\the\glslabeltok}%
- {%
- type=\acronymtype,%
- name={\the\glsshorttok},%
- text={\the\glslongtok},%
- first={\the\glslongtok},%
- plural={\noexpand\expandonce\noexpand\@glo@longpl},%
- firstplural={\noexpand\expandonce\noexpand\@glo@longpl},%
- short={\the\glsshorttok},%
- shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
- long={\the\glslongtok},%
- longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
- description={\the\glslongtok},%
- descriptionplural={\noexpand\expandonce\noexpand\@glo@longpl},%
- symbol={\the\glsshorttok},%
- symbolplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
- \the\glskeylisttok
- }%
- }%
- \let\@org@gls@assign@firstpl\gls@assign@firstpl
- \let\@org@gls@assign@plural\gls@assign@plural
- \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
- \let\@org@gls@assign@descplural\gls@assign@descplural
- \def\gls@assign@firstpl##1##2{%
- \@@gls@expand@field{##1}{firstpl}{##2}%
- }%
- \def\gls@assign@plural##1##2{%
- \@@gls@expand@field{##1}{plural}{##2}%
- }%
- \def\gls@assign@symbolplural##1##2{%
- \@@gls@expand@field{##1}{symbolplural}{##2}%
- }%
- \def\gls@assign@descplural##1##2{%
- \@@gls@expand@field{##1}{descplural}{##2}%
- }%
- \@do@newglossaryentry
- \let\gls@assign@firstpl\@org@gls@assign@firstpl
- \let\gls@assign@plural\@org@gls@assign@plural
- \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
- \let\gls@assign@descplural\@org@gls@assign@descplural
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\SetDUAStyle}
% Always expand acronyms.
% This style was deprecated with the introduction of
% \cs{newacronymstyle}.
%\changes{4.47}{2021-09-20}{added deprecated warnings}
-% \begin{macrocode}
-\newcommand*{\SetDUAStyle}{%
- \@gls@deprecated@acr@warning{dua}{dua}{long-noshort}%
- \renewcommand{\newacronym}[4][]{%
- \ifx\@glsacronymlists\@empty
- \def\@glo@type{\acronymtype}%
- \setkeys{glossentry}{##1}%
- \DeclareAcronymList{\@glo@type}%
- \SetDUADisplayStyle{\@glo@type}%
- \fi
- \glskeylisttok{##1}%
- \glslabeltok{##2}%
- \glsshorttok{##3}%
- \glslongtok{##4}%
- \newacronymhook
- \DUANewAcronymDef
- }%
-% \end{macrocode}
-% Set the display
-% \begin{macrocode}
- \@for\@gls@type:=\@glsacronymlists\do{%
- \SetDUADisplayStyle{\@gls@type}%
- }%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
%
%\begin{macro}{\@gls@deprecated@acr@warning}
@@ -19257,41 +19267,9 @@ you
%\end{macro}
%
%\begin{macro}{\SetAcronymStyle}
-% \begin{macrocode}
-\newcommand*{\SetAcronymStyle}{%
- \SetDefaultAcronymStyle
- \ifglsacrdescription
- \ifglsacrfootnote
- \SetDescriptionFootnoteAcronymStyle
- \else
- \ifglsacrdua
- \SetDescriptionDUAAcronymStyle
- \else
- \SetDescriptionAcronymStyle
- \fi
- \fi
- \else
- \ifglsacrfootnote
- \SetFootnoteAcronymStyle
- \else
- \ifthenelse{\boolean{glsacrsmallcaps}\OR
- \boolean{glsacrsmaller}}%
- {%
- \SetSmallAcronymStyle
- }%
- {%
- \ifglsacrdua
- \SetDUAStyle
- \fi
- }%
- \fi
- \fi
-}
-% \end{macrocode}
-% Set the acronym style according to the package options
-% \begin{macrocode}
-\SetAcronymStyle
-% \end{macrocode}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
+%\changes{4.50}{2022-10-14}{removed}
%\end{macro}
%
% Allow user to define their own custom acronyms.
@@ -19304,84 +19282,34 @@ you
% Sets the acronym display style.
%\changes{2.06}{2010-06-14}{new}
%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
-% \begin{macrocode}
-\newcommand*{\SetCustomDisplayStyle}[1]{%
- \defglsentryfmt[#1]{\glsgenentryfmt}%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\CustomAcronymFields}
%\changes{2.06}{2010-06-14}{new}
-% \begin{macrocode}
-\newcommand*{\CustomAcronymFields}{%
- name={\the\glsshorttok},%
- description={\the\glslongtok},%
- first={\acrfullformat{\the\glslongtok}{\the\glsshorttok}},%
- firstplural={\acrfullformat
- {\noexpand\glsentrylongpl{\the\glslabeltok}}%
- {\noexpand\glsentryshortpl{\the\glslabeltok}}},%
-% \end{macrocode}
-% \changes{4.01}{2013-11-16}{inserted missing comma}
-% \begin{macrocode}
- text={\the\glsshorttok},%
- plural={\the\glsshorttok\noexpand\acrpluralsuffix}%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\CustomNewAcronymDef}
%\changes{2.06}{2010-06-14}{new}
-% \begin{macrocode}
-\newcommand*{\CustomNewAcronymDef}{%
- \protected@edef\@do@newglossaryentry{%
- \noexpand\newglossaryentry{\the\glslabeltok}%
- {%
- type=\acronymtype,%
- short={\the\glsshorttok},%
- shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
- long={\the\glslongtok},%
- longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
- user1={\the\glsshorttok},%
- user2={\the\glsshorttok\noexpand\acrpluralsuffix},%
- user3={\the\glslongtok},%
- user4={\the\glslongtok\noexpand\acrpluralsuffix},%
- \CustomAcronymFields,%
- \the\glskeylisttok
- }%
- }%
- \@do@newglossaryentry
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
+%
%\begin{macro}{\SetCustomStyle}
%\changes{2.06}{2010-06-14}{new}
-% \begin{macrocode}
-\newcommand*{\SetCustomStyle}{%
- \renewcommand{\newacronym}[4][]{%
- \ifx\@glsacronymlists\@empty
- \def\@glo@type{\acronymtype}%
- \setkeys{glossentry}{##1}%
- \DeclareAcronymList{\@glo@type}%
- \SetCustomDisplayStyle{\@glo@type}%
- \fi
- \glskeylisttok{##1}%
- \glslabeltok{##2}%
- \glsshorttok{##3}%
- \glslongtok{##4}%
- \newacronymhook
- \CustomNewAcronymDef
- }%
-% \end{macrocode}
-% Set the display
-% \begin{macrocode}
- \@for\@gls@type:=\@glsacronymlists\do{%
- \SetCustomDisplayStyle{\@gls@type}%
- }%
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
+% Deprecated following the introduction of \cs{setacronymstyle}.
+% Removed in v4.50.
%\end{macro}
%
%
-% \section{Predefined Glossary Styles}\label{sec:code:styles}
+%\subsection{Predefined Glossary Styles}\label{sec:code:styles}
% The \sty{glossaries} bundle comes with some predefined glossary
% styles. These need to be loaded now for the \pkgopt{style} option
% to use them.
@@ -19402,7 +19330,7 @@ you
% \end{macrocode}
% The styles that use the \env{supertabular} environment. These are
% not loaded if the \pkgopt{nosuper} package option is used or if
-% the \isty{supertabular} package isn't installed.
+% the \sty{supertabular} package isn't installed.
% \begin{macrocode}
\@gls@loadsuper
% \end{macrocode}
@@ -19412,7 +19340,7 @@ you
\@gls@loadtree
% \end{macrocode}
% The default glossary style is set according to the \pkgopt{style} package
-% option, but can be overridden by \ics{glossarystyle}. The
+% option, but can be overridden by \cs{glossarystyle}. The
% required style must be defined at this point.
% \begin{macrocode}
\ifx\@glossary@default@style\relax
@@ -19421,7 +19349,7 @@ you
\fi
% \end{macrocode}
%
-%\section{Debugging Commands}
+%\subsection{Debugging Commands}
%
%\begin{macro}{\showgloparent}
%\changes{3.0}{2011-04-02}{new}
@@ -19851,13 +19779,19 @@ you
% \end{macrocode}
%\end{macro}
%
-%\section{Compatibility with version 2.07 and below}
+%\subsection{Compatibility with version 2.07 and below}
+%
+%The backward-compatibility options have been removed in version
+%4.50. Use the rollback feature instead if backward-compatibility is
+%required. Bear in mind that v2.07 was released 2010-07-10 and
+%v3.07 was released 2013-07-05. Any old documents from that long
+%ago will probably have problems with recent kernels.
%
% In order to fix some bugs in v3.0, it was necessary to change the
% way information is written to the \filetype{glo} file, which also meant
% a change in the format of the Xindy style file. The compatibility
% option is meant for documents that use a customised Xindy style
-% file with \ics{noist}. With the compatibility option, hopefully
+% file with \cs{noist}. With the compatibility option, hopefully
% \app{xindy} will still be able to process the old document, but
% the bugs will remain. The issues in versions 2.07 and below:
%\begin{itemize}
@@ -19869,11 +19803,6 @@ you
% \cs{thecounter}, the link in the location number would be
% undefined.
%\end{itemize}
-% \begin{macrocode}
-\csname ifglscompatible-2.07\endcsname
- \RequirePackage{glossaries-compatible-207}
-\fi
-% \end{macrocode}
%\iffalse
% \begin{macrocode}
%</glossaries.sty>
@@ -19881,490 +19810,31 @@ you
%\fi
%\iffalse
% \begin{macrocode}
-%<*glossaries-prefix.sty>
+%<*glossary-hypernav.sty>
% \end{macrocode}
%\fi
-%\chapter{Prefix Support (glossaries-prefix Code)}
-%\label{sec:code:prefix}
-%\changes{3.14a}{2013-11-12}{new}
-% This package provides a means of adding prefixes to your glossary
-% entries. For example, you may want to use \qt{a
-% \cs{gls}\marg{label}} on first use but use \qt{an
-% \cs{gls}\marg{label}} on subsequent use.
+%\section{Glossary Styles}
+% \subsection{Glossary hyper-navigation definitions
+% (glossary-hypernav.sty)}
+%\label{sec:code:hypernav}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossaries-prefix}[2021/11/01 v4.49 (NLCT)]
-% \end{macrocode}
-% Pass all options to \sty{glossaries}:
-% \begin{macrocode}
-\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{glossaries}}
-% \end{macrocode}
-% Process options:
-% \begin{macrocode}
-\ProcessOptions
-% \end{macrocode}
-% Load \sty{glossaries}:
-% \begin{macrocode}
-\RequirePackage{glossaries}
-% \end{macrocode}
-% Add the new keys:
-% \begin{macrocode}
-\define@key{glossentry}{prefixfirst}{\def\@glo@entryprefixfirst{#1}}%
-\define@key{glossentry}{prefixfirstplural}{\def\@glo@entryprefixfirstplural{#1}}%
-\define@key{glossentry}{prefix}{\def\@glo@entryprefix{#1}}%
-\define@key{glossentry}{prefixplural}{\def\@glo@entryprefixplural{#1}}%
-% \end{macrocode}
-% Add them to \ics{@gls@keymap}:
-% \begin{macrocode}
-\appto\@gls@keymap{,%
- {prefixfirst}{prefixfirst},%
- {prefixfirstplural}{prefixfirstplural},%
- {prefix}{prefix},%
- {prefixplural}{prefixplural}%
- }
-% \end{macrocode}
-% Set the default values:
-% \begin{macrocode}
-\appto\@newglossaryentryprehook{%
- \def\@glo@entryprefix{}%
- \def\@glo@entryprefixplural{}%
- \let\@glo@entryprefixfirst\@gls@default@value
- \let\@glo@entryprefixfirstplural\@gls@default@value
-}
-% \end{macrocode}
-% Set the assignment code:
-% \begin{macrocode}
-\appto\@newglossaryentryposthook{%
- \gls@assign@field{}{\@glo@label}{prefix}{\@glo@entryprefix}%
- \gls@assign@field{}{\@glo@label}{prefixplural}{\@glo@entryprefixplural}%
-% \end{macrocode}
-% If \gloskey{prefixfirst} has not been supplied, make it the same
-% as \gloskey{prefix}.
-% \begin{macrocode}
- \expandafter\gls@assign@field\expandafter
- {\csname glo@\@glo@label @prefix\endcsname}{\@glo@label}{prefixfirst}%
- {\@glo@entryprefixfirst}%
-% \end{macrocode}
-% If \gloskey{prefixfirstplural} has not been supplied, make it the same
-% as \gloskey{prefixplural}.
-% \begin{macrocode}
- \expandafter\gls@assign@field\expandafter
- {\csname glo@\@glo@label @prefixplural\endcsname}{\@glo@label}%
- {prefixfirstplural}{\@glo@entryprefixfirstplural}%
-}
-% \end{macrocode}
-%
-% Define commands to access these fields:
-%\begin{macro}{\glsentryprefixfirst}
-%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
-\newcommand*{\glsentryprefixfirst}[1]{\csuse{glo@\glsdetoklabel{#1}@prefixfirst}}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\glsentryprefixfirstplural}
-%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
-\newcommand*{\glsentryprefixfirstplural}[1]{%
- \csuse{glo@\glsdetoklabel{#1}@prefixfirstplural}}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\glsentryprefix}
-%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
-\newcommand*{\glsentryprefix}[1]{\csuse{glo@\glsdetoklabel{#1}@prefix}}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\glsentryprefixplural}
-%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
-\newcommand*{\glsentryprefixplural}[1]{\csuse{glo@\glsdetoklabel{#1}@prefixplural}}
-% \end{macrocode}
-%\end{macro}
-%
-% Now for the initial upper case variants:
-%\begin{macro}{\Glsentryprefixfirst}
-%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
-\newrobustcmd*{\Glsentryprefixfirst}[1]{%
- \protected@edef\@glo@text{\csname glo@\glsdetoklabel{#1}@prefixfirst\endcsname}%
- \xmakefirstuc\@glo@text
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\Glsentryprefixfirstplural}
-%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
-\newrobustcmd*{\Glsentryprefixfirstplural}[1]{%
- \protected@edef\@glo@text{\csname glo@\glsdetoklabel{#1}@prefixfirstplural\endcsname}%
- \xmakefirstuc\@glo@text
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\Glsentryprefix}
-%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
-\newrobustcmd*{\Glsentryprefix}[1]{%
- \protected@edef\@glo@text{\csname glo@\glsdetoklabel{#1}@prefix\endcsname}%
- \xmakefirstuc\@glo@text
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\Glsentryprefixplural}
-%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
-\newrobustcmd*{\Glsentryprefixplural}[1]{%
- \protected@edef\@glo@text{\csname glo@\glsdetoklabel{#1}@prefixplural\endcsname}%
- \xmakefirstuc\@glo@text
-}
-% \end{macrocode}
-%\end{macro}
-%
-% Define commands to determine if the prefix keys have been set:
-%\begin{macro}{\ifglshasprefix}
-%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
-\newcommand*{\ifglshasprefix}[3]{%
- \ifcsempty{glo@\glsdetoklabel{#1}@prefix}%
- {#3}%
- {#2}%
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\ifglshasprefixplural}
-%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
-\newcommand*{\ifglshasprefixplural}[3]{%
- \ifcsempty{glo@\glsdetoklabel{#1}@prefixplural}%
- {#3}%
- {#2}%
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\ifglshasprefixfirst}
-%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
-\newcommand*{\ifglshasprefixfirst}[3]{%
- \ifcsempty{glo@\glsdetoklabel{#1}@prefixfirst}%
- {#3}%
- {#2}%
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\ifglshasprefixfirstplural}
-%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
-\newcommand*{\ifglshasprefixfirstplural}[3]{%
- \ifcsempty{glo@\glsdetoklabel{#1}@prefixfirstplural}%
- {#3}%
- {#2}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@glsprefix@record@hook}
-%\changes{4.44}{2019-12-06}{new}
-%Need to take into account the possibility that
-%\sty{glossaries-extra} might be loaded with the \pkgopt{record}
-%option.
-% \begin{macrocode}
-\providecommand{\@glsprefix@record@hook}[2]{%
- \ifdef\@glsxtr@record
- {\@glsxtr@record{#1}{#2}{glslink}}%
- {}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\glsprefixsep}
-%\changes{4.45}{2020-02-13}{new}
-%Separator between prefix and term. Does nothing by default.
-% \begin{macrocode}
-\newcommand{\glsprefixsep}{}
-% \end{macrocode}
-%\end{macro}
-%
-% Define commands that insert the prefix before commands like \ics{gls}:
-%\begin{macro}{\pgls}
-%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
-% \begin{macrocode}
-\newrobustcmd{\pgls}{\@gls@hyp@opt\@pgls}
-% \end{macrocode}
-%\end{macro}
-%\changes{4.08}{2014-07-30}{removed \@spgls}
-%\begin{macro}{\@pgls}
-% Unstarred version.
-% \begin{macrocode}
-\newcommand*{\@pgls}[2][]{%
- \new@ifnextchar[%
- {\@pgls@{#1}{#2}}%
- {\@pgls@{#1}{#2}[]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@pgls@}
-% Read in the final optional argument:
-% \begin{macrocode}
-\def\@pgls@#1#2[#3]{%
- \@glsprefix@record@hook{#1}{#2}%
- \glsdoifexists{#2}%
- {%
- \ifglsused{#2}%
- {%
- \ifglshasprefix{#2}{\glsentryprefix{#2}\glsprefixsep}{}%
- }%
- {%
- \ifglshasprefixfirst{#2}{\glsentryprefixfirst{#2}\glsprefixsep}{}%
- }%
- \@gls@{#1}{#2}[#3]%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-% Similarly for the plural version:
-%\begin{macro}{\pglspl}
-%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
-% \begin{macrocode}
-\newrobustcmd{\pglspl}{\@gls@hyp@opt\@pglspl}
-% \end{macrocode}
-%\end{macro}
-%\changes{4.08}{2014-07-30}{removed \@spglspl}
-%\begin{macro}{\@pglspl}
-% Unstarred version.
-% \begin{macrocode}
-\newcommand*{\@pglspl}[2][]{%
- \new@ifnextchar[%
- {\@pglspl@{#1}{#2}}%
- {\@pglspl@{#1}{#2}[]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@pglspl@}
-% Read in the final optional argument:
-% \begin{macrocode}
-\def\@pglspl@#1#2[#3]{%
- \@glsprefix@record@hook{#1}{#2}%
- \glsdoifexists{#2}%
- {%
- \ifglsused{#2}%
- {%
- \ifglshasprefixplural{#2}{\glsentryprefixplural{#2}\glsprefixsep}{}%
- }%
- {%
- \ifglshasprefixfirstplural{#2}%
- {\glsentryprefixfirstplural{#2}\glsprefixsep}{}%
- }%
- \@glspl@{#1}{#2}[#3]%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-% Now for the first letter upper case versions:
-%\begin{macro}{\Pgls}
-%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
-% \begin{macrocode}
-\newrobustcmd{\Pgls}{\@gls@hyp@opt\@Pgls}
-% \end{macrocode}
-%\end{macro}
-%\changes{4.08}{2014-07-30}{removed \@sPgls}
-%\begin{macro}{\@Pgls}
-% Unstarred version.
-% \begin{macrocode}
-\newcommand*{\@Pgls}[2][]{%
- \new@ifnextchar[%
- {\@Pgls@{#1}{#2}}%
- {\@Pgls@{#1}{#2}[]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@Pgls@}
-% Read in the final optional argument:
-% \begin{macrocode}
-\def\@Pgls@#1#2[#3]{%
- \@glsprefix@record@hook{#1}{#2}%
- \glsdoifexists{#2}%
- {%
- \ifglsused{#2}%
- {%
- \ifglshasprefix{#2}%
- {%
- \Glsentryprefix{#2}%
- \glsprefixsep
- \@gls@{#1}{#2}[#3]%
- }%
- {\@Gls@{#1}{#2}[#3]}%
- }%
- {%
- \ifglshasprefixfirst{#2}%
- {%
- \Glsentryprefixfirst{#2}%
- \glsprefixsep
- \@gls@{#1}{#2}[#3]%
- }%
- {\@Gls@{#1}{#2}[#3]}%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-% Similarly for the plural version:
-%\begin{macro}{\Pglspl}
-%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
-% \begin{macrocode}
-\newrobustcmd{\Pglspl}{\@gls@hyp@opt\@Pglspl}
-% \end{macrocode}
-%\end{macro}
-%\changes{4.08}{2014-07-30}{removed \@sPglspl}
-%\begin{macro}{\@Pglspl}
-% Unstarred version.
-% \begin{macrocode}
-\newcommand*{\@Pglspl}[2][]{%
- \new@ifnextchar[%
- {\@Pglspl@{#1}{#2}}%
- {\@Pglspl@{#1}{#2}[]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@Pglspl@}
-% Read in the final optional argument:
-% \begin{macrocode}
-\def\@Pglspl@#1#2[#3]{%
- \@glsprefix@record@hook{#1}{#2}%
- \glsdoifexists{#2}%
- {%
- \ifglsused{#2}%
- {%
- \ifglshasprefixplural{#2}%
- {%
- \Glsentryprefixplural{#2}%
- \glsprefixsep
- \@glspl@{#1}{#2}[#3]%
- }%
- {\@Glspl@{#1}{#2}[#3]}%
- }%
- {%
- \ifglshasprefixfirstplural{#2}%
- {%
- \Glsentryprefixfirstplural{#2}%
- \glsprefixsep
- \@glspl@{#1}{#2}[#3]%
- }%
- {\@Glspl@{#1}{#2}[#3]}%
- }%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-% Finally the all upper case versions:
-%\begin{macro}{\PGLS}
-%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
-% \begin{macrocode}
-\newrobustcmd{\PGLS}{\@gls@hyp@opt\@PGLS}
-% \end{macrocode}
-%\end{macro}
-%\changes{4.08}{2014-07-30}{removed \@sPGLS}
-%\begin{macro}{\@PGLS}
-% Unstarred version.
-% \begin{macrocode}
-\newcommand*{\@PGLS}[2][]{%
- \new@ifnextchar[%
- {\@PGLS@{#1}{#2}}%
- {\@PGLS@{#1}{#2}[]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@PGLS@}
-% Read in the final optional argument:
-% \begin{macrocode}
-\def\@PGLS@#1#2[#3]{%
- \@glsprefix@record@hook{#1}{#2}%
- \glsdoifexists{#2}%
- {%
- \ifglsused{#2}%
- {%
- \ifglshasprefix{#2}%
- {\mfirstucMakeUppercase{\glsentryprefix{#2}\glsprefixsep}}{}%
- }%
- {%
- \ifglshasprefixfirst{#2}%
- {\mfirstucMakeUppercase{\glsentryprefixfirst{#2}\glsprefixsep}}{}%
- }%
- \@GLS@{#1}{#2}[#3]%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-%
-% Plural version:
-%\begin{macro}{\PGLSpl}
-%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
-% \begin{macrocode}
-\newrobustcmd{\PGLSpl}{\@gls@hyp@opt\@PGLSpl}
-% \end{macrocode}
-%\end{macro}
-%\changes{4.08}{2014-07-30}{removed \@sPGLSpl}
-%\begin{macro}{\@PGLSpl}
-% Unstarred version.
-% \begin{macrocode}
-\newcommand*{\@PGLSpl}[2][]{%
- \new@ifnextchar[%
- {\@PGLSpl@{#1}{#2}}%
- {\@PGLSpl@{#1}{#2}[]}%
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@PGLSpl@}
-% Read in the final optional argument:
-% \begin{macrocode}
-\def\@PGLSpl@#1#2[#3]{%
- \@glsprefix@record@hook{#1}{#2}%
- \glsdoifexists{#2}%
- {%
- \ifglsused{#2}%
- {%
- \ifglshasprefixplural{#2}%
- {\mfirstucMakeUppercase{\glsentryprefixplural{#2}\glsprefixsep}}{}%
- }%
- {%
- \ifglshasprefixfirstplural{#2}%
- {\mfirstucMakeUppercase{\glsentryprefixfirstplural{#2}\glsprefixsep}}{}%
- }%
- \@GLSpl@{#1}{#2}[#3]%
- }%
-}
% \end{macrocode}
-%\end{macro}
-%\iffalse
-% \begin{macrocode}
-%</glossaries-prefix.sty>
-% \end{macrocode}
-%\fi
-%\iffalse
+% Rollback releases:
% \begin{macrocode}
-%<*glossary-hypernav.sty>
+\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.50}{2022-10-14}
% \end{macrocode}
-%\fi
-%\chapter{Glossary Styles}
-% \section{Glossary hyper-navigation definitions (glossary-hypernav package)}
-%\label{sec:code:hypernav}
% Package Definition:
% \begin{macrocode}
-\ProvidesPackage{glossary-hypernav}[2021/11/01 v4.49 (NLCT)]
+\ProvidesPackage{glossary-hypernav}[2022/10/14 v4.50 (NLCT)]
% \end{macrocode}
%
% The commands defined in this package are provided to
% help navigate around the groups within a glossary
% (see \autoref{sec:code:printglos}.)
-% \ics{printglossary} (and \ics{printglossaries})
+% \cs{printglossary} (and \cs{printglossaries})
% set \cs{@glo@type} to the label of the current
% glossary. This is used to create a unique hypertarget in
% the event of multiple glossaries.
@@ -20378,13 +19848,23 @@ you
%\changes{1.14}{2008-06-17}{changed \cs{edef} to \cs{protected@edef}}
%\changes{1.17}{2008-12-26}{replaced \cs{hyperlink} to
%\cs{@glslink}}
+%\changes{4.50}{2022-10-14}{changed \cs{@glo@type} to \cs{currentglossary}}
+%The optional argument is the glossary type and can be used to make the
+%group label unique in case the same group occurs in multiple
+%glossaries.
+%The optional argument was \cs{@glo@type} but is now \cs{currentglossary}
+%because that's less likely to change within the glossary.
+%It's unlikely that the optional argument will be used to set it to
+%anything other than \cs{currentglossary} but it makes it
+%possible to hyperlink to the group from outside of the glossary.
% \begin{macrocode}
-\newcommand*{\glsnavhyperlink}[3][\@glo@type]{%
+\newcommand*{\glsnavhyperlink}[3][\currentglossary]{%
% \end{macrocode}
%\changes{4.47}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}}
% \begin{macrocode}
\protected@edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}%
- \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}}
+ \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}%
+}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\glsnavhyperlinkname}
@@ -20403,14 +19883,22 @@ you
% This command makes \meta{text} a hypertarget for the glossary group
% whose label is given by \meta{label} in the glossary given
% by \meta{type}. If \meta{type} is omitted, \cs{@glo@type} is
-% used which is set by \ics{printglossary} to the current
+% used which is set by \cs{printglossary} to the current
% glossary label.
%\changes{1.14}{2008-06-17}{added write to aux file}
%\changes{1.15}{2008-08-15}{added check if rerun required}
%\changes{1.17}{2008-12-26}{replaced \cs{hypertarget} to
%\cs{@glstarget}}
+%\changes{4.50}{2022-10-14}{changed \cs{@glo@type} to \cs{currentglossary}}
+%The optional argument complicates things for \sty{glossaries-extra}.
% \begin{macrocode}
-\newcommand*{\glsnavhypertarget}[3][\@glo@type]{%
+\newcommand*{\glsnavhypertarget}{\protect\@@gls@navhypertarget}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@@gls@navhypertarget}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand*{\@@gls@navhypertarget}[3][\currentglossary]{%
\@glsnavhypertarget{#1}{#2}{#3}%
}
% \end{macrocode}
@@ -20473,16 +19961,12 @@ you
% However it requires at least 2 runs to ensure the information is
% up-to-date.
%\changes{1.14}{2008-06-17}{new}
+%\changes{4.50}{2022-10-14}{updated to use \sty{etoolbox}}
% \begin{macrocode}
\newcommand*{\@gls@hypergroup}[2]{%
-\@ifundefined{@gls@hypergrouplist@#1}{%
- \expandafter\xdef\csname @gls@hypergrouplist@#1\endcsname{#2}%
-}{%
- \expandafter\let\expandafter\@gls@tmp
- \csname @gls@hypergrouplist@#1\endcsname
- \expandafter\xdef\csname @gls@hypergrouplist@#1\endcsname{%
- \@gls@tmp,#2}%
-}%
+ \ifcsdef{@gls@hypergrouplist@#1}%
+ {\protected@csxappto{@gls@hypergrouplist@#1}{,#2}}%
+ {\protected@csxdef{@gls@hypergrouplist@#1}{#2}}%
}
% \end{macrocode}
%\end{macro}
@@ -20500,16 +19984,19 @@ you
%\begin{macro}{\glsnavigation}
% \changes{1.14}{2008-06-17}{changed to only use labels for
% groups that are present}
+%\changes{4.50}{2022-10-14}{changed \cs{@glo@type} to \cs{currentglossary}}
% \begin{macrocode}
\newcommand*{\glsnavigation}{%
\def\@gls@between{}%
- \ifcsundef{@gls@hypergrouplist@\@glo@type}%
+ \ifcsundef{@gls@hypergrouplist@\currentglossary}%
{%
\def\@gls@list{}%
}%
{%
- \expandafter\let\expandafter\@gls@list
- \csname @gls@hypergrouplist@\@glo@type\endcsname
+% \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{%
\@gls@between
@@ -20518,7 +20005,7 @@ you
%\cs{@gls@getgrouptitle}}
% \begin{macrocode}
\@gls@getgrouptitle{\@gls@tmp}{\@gls@grptitle}%
- \glsnavhyperlink{\@gls@tmp}{\@gls@grptitle}%
+ \expandafter\glsnavhyperlink\expandafter{\@gls@tmp}{\@gls@grptitle}%
\let\@gls@between\glshypernavsep
}%
}
@@ -20553,11 +20040,21 @@ you
%<*glossary-inline.sty>
% \end{macrocode}
%\fi
-% \section{In-line Style (glossary-inline.sty)}
+% \subsection{In-line Style (glossary-inline.sty)}
% This defines an in-line style where the entries are
% comma-separated with just the name and description displayed.
% \begin{macrocode}
-\ProvidesPackage{glossary-inline}[2021/11/01 v4.49 (NLCT)]
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% Rollback releases:
+% \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.50}{2022-10-14}
+% \end{macrocode}
+%Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossary-inline}[2022/10/14 v4.50 (NLCT)]
% \end{macrocode}
%
%\begin{style}{inline}
@@ -20581,7 +20078,7 @@ you
\renewcommand*{\glossaryheader}{}%
% \end{macrocode}
% No group headings (if heading is required, add
-% \ics{glsinlinedopostchild} to start definition in case heading
+% \cs{glsinlinedopostchild} to start definition in case heading
% follows a child entry):
% \begin{macrocode}
\renewcommand*{\glsgroupheading}[1]{}%
@@ -20612,7 +20109,7 @@ you
{\glsinlinedescformat{\glossentrydesc{##1}}{\glossentrysymbol{##1}}{##2}}%
{\glsinlineemptydescformat{\glossentrysymbol{##1}}{##2}}%
}%
- \ifglshaschildren{##1}%
+ \glsinlineifhaschildren{##1}%
{%
\glsresetsubentrycounter
\glsinlineparentchildseparator
@@ -20641,6 +20138,15 @@ you
% \end{macrocode}
%\end{style}
%
+%\begin{macro}{\glsinlineifhaschildren}
+%\changes{4.50}{2022-10-14}{new}
+% \begin{macrocode}
+\newcommand{\glsinlineifhaschildren}[3]{%
+ \ifglshaschildren{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\glsinlinedopostchild}
% \begin{macrocode}
\newcommand*{\glsinlinedopostchild}{%
@@ -20738,103 +20244,14 @@ you
%\fi
%\iffalse
% \begin{macrocode}
-%<*glossary-list-2020-03-19.sty>
-% \end{macrocode}
-%\fi
-% \section{Rollback v4.46 (glossary-list-2020-03-19.sty)}
-% Version 4.46 preserved for rollback.
-% \begin{macrocode}
-\ProvidesPackage{glossary-list}[2020/03/19 v4.46 (NLCT)]
-\providecommand{\indexspace}{%
- \par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@ \relax
-}
-\newcommand*{\glslistgroupheaderfmt}[1]{#1}
-\newcommand*{\glslistnavigationitem}[1]{\item[#1]}
-\newglossarystyle{list}{%
- \renewenvironment{theglossary}%
- {\begin{description}}{\end{description}}%
- \renewcommand*{\glossaryheader}{}%
- \renewcommand*{\glsgroupheading}[1]{}%
- \renewcommand*{\glossentry}[2]{%
- \item[\glsentryitem{##1}%
- \glstarget{##1}{\glossentryname{##1}}]
- \glossentrydesc{##1}\glspostdescription\space ##2}%
- \renewcommand*{\subglossentry}[3]{%
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}\space
- \glossentrydesc{##2}\glspostdescription\space ##3.}%
- \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}%
-}
-\newglossarystyle{listgroup}{%
- \setglossarystyle{list}%
- \renewcommand*{\glsgroupheading}[1]{%
- \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]}}
-\newglossarystyle{listhypergroup}{%
- \setglossarystyle{list}%
- \renewcommand*{\glossaryheader}{%
- \glslistnavigationitem{\glsnavigation}}%
- \renewcommand*{\glsgroupheading}[1]{%
- \item[\glslistgroupheaderfmt
- {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]}}
-\newglossarystyle{altlist}{%
- \setglossarystyle{list}%
- \renewcommand*{\glossentry}[2]{%
- \item[\glsentryitem{##1}%
- \glstarget{##1}{\glossentryname{##1}}]%
- \mbox{}\par\nobreak\@afterheading
- \glossentrydesc{##1}\glspostdescription\space ##2}%
- \renewcommand{\subglossentry}[3]{%
- \par
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space ##3}%
-}
-\newglossarystyle{altlistgroup}{%
- \setglossarystyle{altlist}%
- \renewcommand*{\glsgroupheading}[1]{%
- \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]}}
-\newglossarystyle{altlisthypergroup}{%
- \setglossarystyle{altlist}%
- \renewcommand*{\glossaryheader}{%
- \glslistnavigationitem{\glsnavigation}}%
- \renewcommand*{\glsgroupheading}[1]{%
- \item[\glslistgroupheaderfmt
- {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]}}
-\newglossarystyle{listdotted}{%
- \setglossarystyle{list}%
- \renewcommand*{\glossentry}[2]{%
- \item[]\makebox[\glslistdottedwidth][l]{%
- \glsentryitem{##1}%
- \glstarget{##1}{\glossentryname{##1}}%
- \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}\glossentrydesc{##1}}%
- \renewcommand*{\subglossentry}[3]{%
- \item[]\makebox[\glslistdottedwidth][l]{%
- \glssubentryitem{##2}%
- \glstarget{##2}{\glossentryname{##2}}%
- \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}\glossentrydesc{##2}}%
-}
-\newlength\glslistdottedwidth
-\setlength{\glslistdottedwidth}{.5\hsize}
-\newglossarystyle{sublistdotted}{%
- \setglossarystyle{listdotted}%
- \renewcommand*{\glossentry}[2]{%
- \item[\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}}]}%
-}
-% \end{macrocode}
-%\iffalse
-% \begin{macrocode}
-%</glossary-list-2020-03-19.sty>
-% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
%<*glossary-list.sty>
% \end{macrocode}
%\fi
-% \section{List Style (glossary-list.sty)}
-% The \isty{glossary-list} style file defines glossary styles
+% \subsection{List Style (glossary-list.sty)}
+% The \sty{glossary-list} style file defines glossary styles
% that use the \env{description} environment. Note that since
% the entry name is placed in the optional argument to the
-% \ics{item} command, it will appear in a bold font by
+% \cs{item} command, it will appear in a bold font by
% default.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
@@ -20842,11 +20259,12 @@ you
% Rollback releases:
% \begin{macrocode}
\DeclareRelease{v4.46}{2020-03-19}{glossary-list-2020-03-19.sty}
-\DeclareCurrentRelease{v4.49}{2021-11-01}
+\DeclareRelease{v4.49}{2021-11-01}{glossary-list-2021-11-01.sty}
+\DeclareCurrentRelease{v4.50}{2022-10-14}
% \end{macrocode}
%Declare package:
% \begin{macrocode}
-\ProvidesPackage{glossary-list}[2021/11/01 v4.49 (NLCT)]
+\ProvidesPackage{glossary-list}[2022/10/14 v4.50 (NLCT)]
% \end{macrocode}
%\begin{macro}{\indexspace}
%\changes{4.13}{2015-02-03}{new}
@@ -20918,7 +20336,7 @@ you
%\begin{style}{list}
% The \glostyle{list} glossary style
% uses the \env{description} environment. The group separator
-% \ics{glsgroupskip} is redefined as \cs{indexspace}
+% \cs{glsgroupskip} is redefined as \cs{indexspace}
% which produces a gap between groups. The glossary heading
% and the group headings do nothing. Sub-entries immediately
% follow the main entry without the sub-entry name. This style
@@ -21157,23 +20575,32 @@ you
%<*glossary-long.sty>
% \end{macrocode}
%\fi
-% \section{Glossary Styles using longtable (the glossary-long
-% package)}
-% The glossary styles defined in the \isty{glossary-long} package
+% \subsection{Glossary Styles using longtable (glossary-long.sty)}
+% The glossary styles defined in the \sty{glossary-long} package
% used the \env{longtable} environment in the glossary.
% \begin{macrocode}
-\ProvidesPackage{glossary-long}[2021/11/01 v4.49 (NLCT)]
+\NeedsTeXFormat{LaTeX2e}
% \end{macrocode}
-% Requires the \isty{longtable} package:
+% Rollback releases:
+% \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.50}{2022-10-14}
+% \end{macrocode}
+%Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossary-long}[2022/10/14 v4.50 (NLCT)]
+% \end{macrocode}
+% Requires the \sty{longtable} package:
% \begin{macrocode}
\RequirePackage{longtable}
% \end{macrocode}
%\begin{macro}{\glsdescwidth}
% This is a length that governs the width of the description column.
% (There's a chance that the user may specify \pkgopt{nolong}
-% and then load \isty{glossary-long} later, in which case
+% and then load \sty{glossary-long} later, in which case
% \cs{glsdescwidth} may have already been defined by
-% \isty{glossary-super}. The same goes for \cs{glspagelistwidth}.)
+% \sty{glossary-super}. The same goes for \cs{glspagelistwidth}.)
%\changes{2.01}{2009 May 30}{changed \cs{linewidth} to \cs{hsize}}
% \begin{macrocode}
\@ifundefined{glsdescwidth}{%
@@ -21653,13 +21080,23 @@ you
%<*glossary-longbooktabs.sty>
% \end{macrocode}
%\fi
-%\section{Glossary Styles using longtable and booktabs (the
-%glossary-longbooktabs) package}
+%\subsection{Glossary Styles using longtable and booktabs
+%(glossary-longbooktabs.sty)}
% The styles here are based on David Carlisle's patch at
% \url{http://tex.stackexchange.com/a/56890}
%
% \begin{macrocode}
-\ProvidesPackage{glossary-longbooktabs}[2021/11/01 v4.49 (NLCT)]
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% Rollback releases:
+% \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.50}{2022-10-14}
+% \end{macrocode}
+%Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossary-longbooktabs}[2022/10/14 v4.50 (NLCT)]
% \end{macrocode}
% Requires \sty{booktabs} package:
% \begin{macrocode}
@@ -21815,7 +21252,7 @@ you
% \end{macrocode}
%The patch \cs{glspatchLToutput} is already applied in
%\glostyle{long4col-booktabs} and so doesn't need to be here.
-%\changes{4.42}{??}{removed superfluous \cs{glspatchLToutput}}
+%\changes{4.42}{2019-01-06}{removed superfluous \cs{glspatchLToutput}}
% \begin{macrocode}
\glspatchLToutput
% \end{macrocode}
@@ -21994,19 +21431,28 @@ you
%<*glossary-longragged.sty>
% \end{macrocode}
%\fi
-% \section{Glossary Styles using longtable (the glossary-longragged
-% package)}
-% The glossary styles defined in the \isty{glossary-longragged} package
+% \subsection{Glossary Styles using longtable (glossary-longragged.sty)}
+% The glossary styles defined in the \sty{glossary-longragged} package
% used the \env{longtable} environment in the glossary and use
% ragged right formatting for the multiline columns.
% \begin{macrocode}
-\ProvidesPackage{glossary-longragged}[2021/11/01 v4.49 (NLCT)]
+\NeedsTeXFormat{LaTeX2e}
% \end{macrocode}
-% Requires the \isty{array} package:
+% Rollback releases:
+% \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.50}{2022-10-14}
+% \end{macrocode}
+%Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossary-longragged}[2022/10/14 v4.50 (NLCT)]
+% \end{macrocode}
+% Requires the \sty{array} package:
% \begin{macrocode}
\RequirePackage{array}
% \end{macrocode}
-% Requires the \isty{longtable} package:
+% Requires the \sty{longtable} package:
% \begin{macrocode}
\RequirePackage{longtable}
% \end{macrocode}
@@ -22274,7 +21720,7 @@ you
%
%\begin{style}{altlongragged4col}
% The \glostyle{altlongragged4col} style is like the \glostyle{altlong4col}
-% style defined in the \isty{glossary-long} package, except that
+% style defined in the \sty{glossary-long} package, except that
% ragged right formatting is used for the description and page list
% columns.
% \begin{macrocode}
@@ -22427,13 +21873,23 @@ you
%<*glossary-mcols.sty>
% \end{macrocode}
%\fi
-%\section{Glossary Styles using \styfmt{multicol}
+%\subsection{Glossary Styles using \sty{multicol}
%(glossary-mcols.sty)}
-%The \isty{glossary-mcols} style file defines glossary styles that
+%The \sty{glossary-mcols} style file defines glossary styles that
%use the \sty{multicol} package. These use the tree-like glossary
%styles in a multicol environment.
% \begin{macrocode}
-\ProvidesPackage{glossary-mcols}[2021/11/01 v4.49 (NLCT)]
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% Rollback releases:
+% \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.50}{2022-10-14}
+% \end{macrocode}
+%Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossary-mcols}[2022/10/14 v4.50 (NLCT)]
% \end{macrocode}
% Required packages:
% \begin{macrocode}
@@ -22455,6 +21911,7 @@ you
%\begin{macro}{\glsmcols}
% Define macro in which to store the number of columns. (Defaults to
% 2.)
+%\changes{3.05}{2013-04-21}{new}
% \begin{macrocode}
\newcommand*{\glsmcols}{2}
% \end{macrocode}
@@ -22866,19 +22323,30 @@ you
%<*glossary-super.sty>
% \end{macrocode}
%\fi
-% \section{Glossary Styles using supertabular environment (glossary-super package)}
-% The glossary styles defined in the \isty{glossary-super} package
+% \subsection{Glossary Styles using supertabular environment
+% (glossary-super.sty)}
+% The glossary styles defined in the \sty{glossary-super} package
% use the \env{supertabular} environment.
% \begin{macrocode}
-\ProvidesPackage{glossary-super}[2021/11/01 v4.49 (NLCT)]
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% Rollback releases:
+% \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.50}{2022-10-14}
+% \end{macrocode}
+%Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossary-super}[2022/10/14 v4.50 (NLCT)]
% \end{macrocode}
-% Requires the \isty{supertabular} package:
+% Requires the \sty{supertabular} package:
% \begin{macrocode}
\RequirePackage{supertabular}
% \end{macrocode}
%\begin{macro}{\glsdescwidth}
% This is a length that governs the width of the description column.
-% This may already have been defined if \isty{glossary-long}
+% This may already have been defined if \sty{glossary-long}
% has been loaded.\changes{2.01}{2009 May 30}{changed \cs{linewidth}
% to \cs{hsize}}
% \begin{macrocode}
@@ -22891,7 +22359,7 @@ you
%
%\begin{macro}{\glspagelistwidth}
% This is a length that governs the width of the page list column.
-% This may already have been defined if \isty{glossary-long}
+% This may already have been defined if \sty{glossary-long}
% has been loaded.\changes{2.01}{2009 May 30}{changed \cs{linewidth}
% to \cs{hsize}}
% \begin{macrocode}
@@ -22905,7 +22373,7 @@ you
%\begin{style}{super}
% The \glostyle{super} glossary style uses the
% \env{supertabular} environment
-% (it uses lengths defined in the \isty{glossary-long} package.)
+% (it uses lengths defined in the \sty{glossary-long} package.)
% \begin{macrocode}
\newglossarystyle{super}{%
% \end{macrocode}
@@ -23396,19 +22864,30 @@ you
%<*glossary-superragged.sty>
% \end{macrocode}
%\fi
-% \section{Glossary Styles using supertabular environment (glossary-superragged package)}
-% The glossary styles defined in the \isty{glossary-superragged}
+% \subsection{Glossary Styles using supertabular environment
+% (glossary-superragged.sty)}
+% The glossary styles defined in the \sty{glossary-superragged}
% package use the \env{supertabular} environment. These styles
-% are like those provided by the \isty{glossary-super} package,
+% are like those provided by the \sty{glossary-super} package,
% except that the multiline columns have ragged right justification.
% \begin{macrocode}
-\ProvidesPackage{glossary-superragged}[2021/11/01 v4.49 (NLCT)]
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% Rollback releases:
+% \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.50}{2022-10-14}
+% \end{macrocode}
+%Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossary-superragged}[2022/10/14 v4.50 (NLCT)]
% \end{macrocode}
-% Requires the \isty{array} package:
+% Requires the \sty{array} package:
% \begin{macrocode}
\RequirePackage{array}
% \end{macrocode}
-% Requires the \isty{supertabular} package:
+% Requires the \sty{supertabular} package:
% \begin{macrocode}
\RequirePackage{supertabular}
% \end{macrocode}
@@ -23693,7 +23172,7 @@ you
%
%\begin{style}{altsuperragged4col}
% The \glostyle{altsuperragged4col} glossary style is like
-% \glostyle{altsuper4col} style in the \isty{glossary-super}
+% \glostyle{altsuper4col} style in the \sty{glossary-super}
% package but uses ragged right formatting in the description
% and page list columns.
% \begin{macrocode}
@@ -23837,12 +23316,22 @@ you
%<*glossary-tree.sty>
% \end{macrocode}
%\fi
-%\section{Tree Styles (glossary-tree.sty)}
-% The \isty{glossary-tree} style file defines glossary styles
+%\subsection{Tree Styles (glossary-tree.sty)}
+% The \sty{glossary-tree} style file defines glossary styles
% that have a tree-like structure. These are designed for
% hierarchical glossaries.
% \begin{macrocode}
-\ProvidesPackage{glossary-tree}[2021/11/01 v4.49 (NLCT)]
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% Rollback releases:
+% \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.50}{2022-10-14}
+% \end{macrocode}
+%Declare package:
+% \begin{macrocode}
+\ProvidesPackage{glossary-tree}[2022/10/14 v4.50 (NLCT)]
% \end{macrocode}
%
%\begin{macro}{\indexspace}
@@ -23858,7 +23347,7 @@ you
%\begin{macro}{\glstreenamefmt}
%\changes{4.08}{2014-07-30}{new}
% Format used to display the name in the tree styles. (This may be
-% counteracted by \ics{glsnamefont}.) This command was previously also used to
+% counteracted by \cs{glsnamefont}.) This command was previously also used to
% format the group headings.
% \begin{macrocode}
\newcommand*{\glstreenamefmt}[1]{\textbf{#1}}
@@ -23947,7 +23436,7 @@ you
% \begin{macrocode}
\newglossarystyle{index}{%
% \end{macrocode}
-% Set the paragraph indentation and skip and define \ics{item}
+% Set the paragraph indentation and skip and define \cs{item}
% to be the same as that used by \env{theindex}:
% \begin{macrocode}
\renewenvironment{theglossary}%
@@ -23982,10 +23471,10 @@ you
\glstreepredesc \glossentrydesc{##1}\glspostdescription\space ##2%
}%
% \end{macrocode}
-% Sub entries: level 1 entries use \ics{subitem}, levels greater
-% than~1 use \ics{subsubitem}. The level ("##1") shouldn't be 0,
+% Sub entries: level 1 entries use \cs{subitem}, levels greater
+% than~1 use \cs{subsubitem}. The level ("##1") shouldn't be 0,
% as that's catered by \cs{glossentry}, but for completeness,
-% if the level is 0, \ics{item} is used. The name is put in bold,
+% if the level is 0, \cs{item} is used. The name is put in bold,
% followed by the symbol in brackets (if it exists), the description
% and the page list.
% \begin{macrocode}
@@ -24096,7 +23585,7 @@ you
}%
% \end{macrocode}
% Sub entries: level \meta{n} is indented by \meta{n} times
-% \ics{glstreeindent}. The name is in bold, followed by the
+% \cs{glstreeindent}. The name is in bold, followed by the
% symbol in brackets (if it exists), the description and the
% page list.
% \begin{macrocode}
@@ -24211,7 +23700,7 @@ you
}%
% \end{macrocode}
% Sub entries: level \meta{n} is indented by \meta{n} times
-% \ics{glstreeindent}. The name and symbol are omitted. The
+% \cs{glstreeindent}. The name and symbol are omitted. The
% description followed by the page list are displayed.
% \begin{macrocode}
\renewcommand{\subglossentry}[3]{%
@@ -24552,1168 +24041,613 @@ you
%\fi
%\iffalse
% \begin{macrocode}
-%<*glossaries-compatible-207.sty>
+%<*glossaries-babel.sty>
% \end{macrocode}
%\fi
-%\chapter{Backwards Compatibility}
-%\section{glossaries-compatible-207}
-% Provides compatibility with version 2.07 and below. This uses
-% original \sty{glossaries} xindy and makeindex formatting, so can
-% be used with old documents that had customized style files, but
-% hyperlinks may not work properly.
+%\section{Multi-Lingual Support}
+%\subsection{Babel Captions (glossaries-babel.sty)}
+% Many thanks to everyone who contributed to the translations both
+% via email and on comp.text.tex.
+% Language support has now been split off into independent language
+% modules.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossaries-compatible-207}[2021/11/01 v4.49 (NLCT)]
% \end{macrocode}
-%\begin{macro}{\GlsAddXdyAttribute}
-% Adds an attribute in old format.
-% \begin{macrocode}
-\ifglsxindy
- \renewcommand*\GlsAddXdyAttribute[1]{%
- \edef\@xdyattributes{\@xdyattributes ^^J \string"#1\string"}%
- \expandafter\toks@\expandafter{\@xdylocref}%
- \edef\@xdylocref{\the\toks@ ^^J%
- (markup-locref
- :open \string"\string~n\string\setentrycounter
- {\noexpand\glscounter}%
- \expandafter\string\csname#1\endcsname
- \expandafter\@gobble\string\{\string" ^^J
- :close \string"\expandafter\@gobble\string\}\string" ^^J
- :attr \string"#1\string")}}
-% \end{macrocode}
-% Only has an effect before \ics{writeist}:
-% \begin{macrocode}
-\fi
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\GlsAddXdyCounters}
-% \begin{macrocode}
-\renewcommand*\GlsAddXdyCounters[1]{%
- \GlossariesWarning{\string\GlsAddXdyCounters\space not available
- in compatibility mode.}%
-}
-% \end{macrocode}
-%\end{macro}
-% Add predefined attributes
-% \begin{macrocode}
- \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}
-% \end{macrocode}
-%
-%\begin{macro}{\GlsAddXdyLocation}
-% Restore v2.07 definition:
-% \begin{macrocode}
-\ifglsxindy
- \renewcommand*{\GlsAddXdyLocation}[2]{%
- \edef\@xdyuserlocationdefs{%
- \@xdyuserlocationdefs ^^J%
- (define-location-class \string"#1\string"^^J\space\space
- \space(#2))
- }%
- \edef\@xdyuserlocationnames{%
- \@xdyuserlocationnames^^J\space\space\space
- \string"#1\string"}%
- }
-\fi
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\@do@wrglossary}
-% \begin{macrocode}
-\renewcommand{\@do@wrglossary}[1]{%
-% \end{macrocode}
-% Determine whether to use \app{xindy} or \app{makeindex}
-% syntax
-% \begin{macrocode}
-\ifglsxindy
-% \end{macrocode}
-% Need to determine if the formatting information starts with
-% a ( or ) indicating a range.
-% \begin{macrocode}
- \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
-% \end{macrocode}
-% Get the location and escape any special characters
-% \begin{macrocode}
- \protected@edef\@glslocref{\theglsentrycounter}%
- \@gls@checkmkidxchars\@glslocref
-% \end{macrocode}
-% Write to the glossary file using \app{xindy} syntax.
-% \begin{macrocode}
- \glossary[\csname glo@#1@type\endcsname]{%
- (indexentry :tkey (\csname glo@#1@index\endcsname)
- :locref \string"\@glslocref\string" %
- :attr \string"\@glo@suffix\string" \@glo@range
- )
- }%
-\else
-% \end{macrocode}
-% Convert the format information into the format required for
-% \app{makeindex}
+% Rollback releases:
% \begin{macrocode}
- \@set@glo@numformat\@glo@numfmt\@gls@counter\@glsnumberformat
+\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.50}{2022-10-14}
% \end{macrocode}
-% Write to the glossary file using \app{makeindex} syntax.
+% Declare package
% \begin{macrocode}
- \glossary[\csname glo@#1@type\endcsname]{%
- \string\glossaryentry{\csname glo@#1@index\endcsname
- \@gls@encapchar\@glo@numfmt}{\theglsentrycounter}}%
-\fi
-}
+\ProvidesPackage{glossaries-babel}[2022/10/14 v4.50 (NLCT)]
% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\@set@glo@numformat}
-% Only had 3 arguments in v2.07
+% Load \sty{tracklang} to obtain language settings.
% \begin{macrocode}
-\def\@set@glo@numformat#1#2#3{%
- \expandafter\@glo@check@mkidxrangechar#3\@nil
- \protected@edef#1{%
- \@glo@prefix setentrycounter[]{#2}%
- \expandafter\string\csname\@glo@suffix\endcsname
- }%
- \@gls@checkmkidxchars#1%
-}
+\RequirePackage{tracklang}
+\let\glsifusetranslator\@secondoftwo
% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\writeist}
-% Redefine \cs{writeist} back to the way it was in v2.07, but change
-% \cs{istfile} to \cs{glswrite}.
+% Check for tracked languages:
% \begin{macrocode}
-\ifglsxindy
- \def\writeist{%
- \openout\glswrite=\istfilename
- \write\glswrite{;; xindy style file created by the glossaries
- package in compatible-2.07 mode}%
- \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
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossaries-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesLang{\CurrentTrackedTag}%
+ }%
+ {%
+ \PackageWarningNoLine{glossaries}%
+ {No language module detected for `\this@dialect'.\MessageBreak
+ Language modules need to be installed separately.\MessageBreak
+ Please check on CTAN for a bundle called\MessageBreak
+ `glossaries-\CurrentTrackedLanguage' or similar}%
+ }%
}%
- \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}%
- \protected@edef\@gls@roman{\@roman{0\string"
- \string"roman-numbers-lowercase\string" :sep \string"}}%
- \@onelevel@sanitize\@gls@roman
- \edef\@tmp{\string" \string"roman-numbers-lowercase\string"
- :sep \string"}%
- \@onelevel@sanitize\@tmp
- \ifx\@tmp\@gls@roman
- \write\glswrite{(define-location-class
- \string"roman-page-numbers\string"^^J\space\space\space
- (\string"roman-numbers-lowercase\string")
- :min-range-length \@glsminrange)}%
- \else
- \write\glswrite{(define-location-class
- \string"roman-page-numbers\string"^^J\space\space\space
- (:sep "\@gls@roman")
- :min-range-length \@glsminrange)}%
- \fi
- \write\glswrite{(define-location-class
- \string"Roman-page-numbers\string"^^J\space\space\space
- (\string"roman-numbers-uppercase\string")
- :min-range-length \@glsminrange)}%
- \write\glswrite{(define-location-class
- \string"arabic-page-numbers\string"^^J\space\space\space
- (\string"arabic-numbers\string")
- :min-range-length \@glsminrange)}%
- \write\glswrite{(define-location-class
- \string"alpha-page-numbers\string"^^J\space\space\space
- (\string"alpha\string")
- :min-range-length \@glsminrange)}%
- \write\glswrite{(define-location-class
- \string"Alpha-page-numbers\string"^^J\space\space\space
- (\string"ALPHA\string")
- :min-range-length \@glsminrange)}%
- \write\glswrite{(define-location-class
- \string"Appendix-page-numbers\string"^^J\space\space\space
- (\string"ALPHA\string"
- :sep \string"\@glsAlphacompositor\string"
- \string"arabic-numbers\string")
- :min-range-length \@glsminrange)}%
- \write\glswrite{(define-location-class
- \string"arabic-section-numbers\string"^^J\space\space\space
- (\string"arabic-numbers\string"
- :sep \string"\glscompositor\string"
- \string"arabic-numbers\string")
- :min-range-length \@glsminrange)}%
- \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")}%
- \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\string~n\string\begin
- {theglossary}\string\glossaryheader\string~n\string" ^^J\space
- \space\space:close \string"\expandafter\@gobble
- \string\%\string~n\string
- \end{theglossary}\string\glossarypostamble
- \string~n\string" ^^J\space\space\space
- :tree)}%
- \write\glswrite{(markup-letter-group-list
- :sep \string"\string\glsgroupskip\string~n\string")}%
- \write\glswrite{(markup-indexentry
- :open \string"\string\relax \string\glsresetentrylist
- \string~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\string~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}%
- \noist}
-\else
- \edef\@gls@actualchar{\string?}
- \edef\@gls@encapchar{\string|}
- \edef\@gls@levelchar{\string!}
- \edef\@gls@quotechar{\string"}
- \def\writeist{\relax
- \openout\glswrite=\istfilename
- \write\glswrite{\expandafter\@gobble\string\% makeindex style file
- created by the glossaries package}
- \write\glswrite{\expandafter\@gobble\string\% 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
- \noist
- }
-\fi
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\noist}
-% \begin{macrocode}
-\renewcommand*{\noist}{\let\writeist\relax}
+ }%
+ {}%
% \end{macrocode}
-%\end{macro}
%\iffalse
% \begin{macrocode}
-%</glossaries-compatible-207.sty>
+%</glossaries-babel.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*glossaries-compatible-307.sty>
+%<*glossaries-polyglossia.sty>
% \end{macrocode}
%\fi
-%\section{glossaries-compatible-307}
+%\subsection{Polyglossia Captions (glossaries-polyglossia.sty)}
+% Language support has now been split off into independent language
+% modules.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossaries-compatible-307}[2021/11/01 v4.49 (NLCT)]
-% \end{macrocode}
-%
-% Compatibility macros for predefined glossary styles:
-%\begin{macro}{\compatglossarystyle}
-% Defines a compatibility glossary style.
-% \begin{macrocode}
-\newcommand{\compatglossarystyle}[2]{%
- \ifcsundef{@glscompstyle@#1}%
- {%
- \csdef{@glscompstyle@#1}{#2}%
- }%
- {%
- \PackageError{glossaries}{Glossary compatibility style `#1' is already defined}{}%
- }%
-}
-% \end{macrocode}
-%\end{macro}
-% Backward compatible \glostyle{inline} style.
-% \begin{macrocode}
-\compatglossarystyle{inline}{%
- \renewcommand{\glossaryentryfield}[5]{%
- \glsinlinedopostchild
- \gls@inlinesep
- \def\glo@desc{##3}%
- \def\@no@post@desc{\nopostdesc}%
- \glsentryitem{##1}\glsinlinenameformat{##1}{##2}%
- \ifx\glo@desc\@no@post@desc
- \glsinlineemptydescformat{##4}{##5}%
- \else
- \ifstrempty{##3}%
- {\glsinlineemptydescformat{##4}{##5}}%
- {\glsinlinedescformat{##3}{##4}{##5}}%
- \fi
- \ifglshaschildren{##1}%
- {%
- \glsresetsubentrycounter
- \glsinlineparentchildseparator
- \def\gls@inlinesubsep{}%
- \def\gls@inlinepostchild{\glsinlinepostchild}%
- }%
- {}%
- \def\gls@inlinesep{\glsinlineseparator}%
- }%
-% \end{macrocode}
-% Sub-entries display description:
-% \begin{macrocode}
- \renewcommand{\glossarysubentryfield}[6]{%
- \gls@inlinesubsep%
- \glsinlinesubnameformat{##2}{##3}%
- \glssubentryitem{##2}\glsinlinesubdescformat{##4}{##5}{##6}%
- \def\gls@inlinesubsep{\glsinlinesubseparator}%
- }%
-}
-% \end{macrocode}
-% Backward compatible \glostyle{list} style.
-% \begin{macrocode}
-\compatglossarystyle{list}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \item[\glsentryitem{##1}\glstarget{##1}{##2}]
- ##3\glspostdescription\space ##5}%
-% \end{macrocode}
-% Sub-entries continue on the same line:
-% \begin{macrocode}
- \renewcommand*{\glossarysubentryfield}[6]{%
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4\glspostdescription\space ##6.}%
-}
-% \end{macrocode}
-% Backward compatible \glostyle{listgroup} style.
-% \begin{macrocode}
-\compatglossarystyle{listgroup}{%
- \csuse{@glscompstyle@list}%
-}%
% \end{macrocode}
-% Backward compatible \glostyle{listhypergroup} style.
-% \begin{macrocode}
-\compatglossarystyle{listhypergroup}{%
- \csuse{@glscompstyle@list}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{altlist} style.
-% \begin{macrocode}
-\compatglossarystyle{altlist}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \item[\glsentryitem{##1}\glstarget{##1}{##2}]%
- \mbox{}\par\nobreak\@afterheading
- ##3\glspostdescription\space ##5}%
- \renewcommand{\glossarysubentryfield}[6]{%
- \par
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4\glspostdescription\space ##6}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{altlistgroup} style.
-% \begin{macrocode}
-\compatglossarystyle{altlistgroup}{%
- \csuse{@glscompstyle@altlist}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{altlisthypergroup} style.
-% \begin{macrocode}
-\compatglossarystyle{altlisthypergroup}{%
- \csuse{@glscompstyle@altlist}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{listdotted} style.
+% Rollback releases:
% \begin{macrocode}
-\compatglossarystyle{listdotted}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \item[]\makebox[\glslistdottedwidth][l]{%
- \glsentryitem{##1}\glstarget{##1}{##2}%
- \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##3}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- \item[]\makebox[\glslistdottedwidth][l]{%
- \glssubentryitem{##2}%
- \glstarget{##2}{##3}%
- \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##4}%
-}%
+\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.50}{2022-10-14}
% \end{macrocode}
-% Backward compatible \glostyle{sublistdotted} style.
+% Declare package
% \begin{macrocode}
-\compatglossarystyle{sublistdotted}{%
- \csuse{@glscompstyle@listdotted}%
- \renewcommand*{\glossaryentryfield}[5]{%
- \item[\glsentryitem{##1}\glstarget{##1}{##2}]}%
-}%
+\ProvidesPackage{glossaries-polyglossia}[2022/10/14 v4.50 (NLCT)]
% \end{macrocode}
-% Backward compatible \glostyle{long} style.
+% Load \sty{tracklang} to obtain language settings.
% \begin{macrocode}
-\compatglossarystyle{long}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5\\}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- &
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4\glspostdescription\space ##6\\}%
-}%
+\RequirePackage{tracklang}
+\let\glsifusetranslator\@secondoftwo
% \end{macrocode}
-% Backward compatible \glostyle{longborder} style.
+% Check for tracked languages:
% \begin{macrocode}
-\compatglossarystyle{longborder}{%
- \csuse{@glscompstyle@long}%
-}%
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossaries-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesLang{\CurrentTrackedTag}%
+ }%
+ {%
+ \PackageWarningNoLine{glossaries}%
+ {No language module detected for `\this@dialect'.\MessageBreak
+ Language modules need to be installed separately.\MessageBreak
+ Please check on CTAN for a bundle called\MessageBreak
+ `glossaries-\CurrentTrackedLanguage' or similar}%
+ }%
+ }%
+ }%
+ {}%
% \end{macrocode}
-% Backward compatible \glostyle{longheader} style.
+%\iffalse
% \begin{macrocode}
-\compatglossarystyle{longheader}{%
- \csuse{@glscompstyle@long}%
-}%
+%</glossaries-polyglossia.sty>
% \end{macrocode}
-% Backward compatible \glostyle{longheaderborder} style.
+%\fi
+%\iffalse
% \begin{macrocode}
-\compatglossarystyle{longheaderborder}{%
- \csuse{@glscompstyle@long}%
-}%
+%<*glossaries-prefix.sty>
% \end{macrocode}
-% Backward compatible \glostyle{long3col} style.
+%\fi
+%\section{Prefix Support (glossaries-prefix Code)}
+%\label{sec:code:prefix}
+%\changes{3.14a}{2013-11-12}{new}
+% This package provides a means of adding prefixes to your glossary
+% entries. For example, you may want to use \qt{a
+% \cs{gls}\marg{label}} on first use but use \qt{an
+% \cs{gls}\marg{label}} on subsequent use.
% \begin{macrocode}
-\compatglossarystyle{long3col}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\\}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- &
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4 & ##6\\}%
-}%
+\NeedsTeXFormat{LaTeX2e}
% \end{macrocode}
-% Backward compatible \glostyle{long3colborder} style.
+% Rollback releases:
% \begin{macrocode}
-\compatglossarystyle{long3colborder}{%
- \csuse{@glscompstyle@long3col}%
-}%
+\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.50}{2022-10-14}
% \end{macrocode}
-% Backward compatible \glostyle{long3colheader} style.
+%Declare package:
% \begin{macrocode}
-\compatglossarystyle{long3colheader}{%
- \csuse{@glscompstyle@long3col}%
-}%
+\ProvidesPackage{glossaries-prefix}[2022/10/14 v4.50 (NLCT)]
% \end{macrocode}
-% Backward compatible \glostyle{long3colheaderborder} style.
+% Pass all options to \sty{glossaries}:
% \begin{macrocode}
-\compatglossarystyle{long3colheaderborder}{%
- \csuse{@glscompstyle@long3col}%
-}%
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{glossaries}}
% \end{macrocode}
-% Backward compatible \glostyle{long4col} style.
+% Process options:
% \begin{macrocode}
-\compatglossarystyle{long4col}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\\}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- &
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4 & ##5 & ##6\\}%
-}%
+\ProcessOptions
% \end{macrocode}
-% Backward compatible \glostyle{long4colheader} style.
+% Load \sty{glossaries}:
% \begin{macrocode}
-\compatglossarystyle{long4colheader}{%
- \csuse{@glscompstyle@long4col}%
-}%
+\RequirePackage{glossaries}
% \end{macrocode}
-% Backward compatible \glostyle{long4colborder} style.
+% Add the new keys:
% \begin{macrocode}
-\compatglossarystyle{long4colborder}{%
- \csuse{@glscompstyle@long4col}%
-}%
+\define@key{glossentry}{prefixfirst}{\def\@glo@entryprefixfirst{#1}}%
+\define@key{glossentry}{prefixfirstplural}{\def\@glo@entryprefixfirstplural{#1}}%
+\define@key{glossentry}{prefix}{\def\@glo@entryprefix{#1}}%
+\define@key{glossentry}{prefixplural}{\def\@glo@entryprefixplural{#1}}%
% \end{macrocode}
-% Backward compatible \glostyle{long4colheaderborder} style.
+% Add them to \cs{@gls@keymap}:
% \begin{macrocode}
-\compatglossarystyle{long4colheaderborder}{%
- \csuse{@glscompstyle@long4col}%
-}%
+\appto\@gls@keymap{,%
+ {prefixfirst}{prefixfirst},%
+ {prefixfirstplural}{prefixfirstplural},%
+ {prefix}{prefix},%
+ {prefixplural}{prefixplural}%
+ }
% \end{macrocode}
-% Backward compatible \glostyle{altlong4col} style.
+% Set the default values:
% \begin{macrocode}
-\compatglossarystyle{altlong4col}{%
- \csuse{@glscompstyle@long4col}%
-}%
+\appto\@newglossaryentryprehook{%
+ \def\@glo@entryprefix{}%
+ \def\@glo@entryprefixplural{}%
+ \let\@glo@entryprefixfirst\@gls@default@value
+ \let\@glo@entryprefixfirstplural\@gls@default@value
+}
% \end{macrocode}
-% Backward compatible \glostyle{altlong4colheader} style.
+% Set the assignment code:
% \begin{macrocode}
-\compatglossarystyle{altlong4colheader}{%
- \csuse{@glscompstyle@long4col}%
-}%
+\appto\@newglossaryentryposthook{%
+ \gls@assign@field{}{\@glo@label}{prefix}{\@glo@entryprefix}%
+ \gls@assign@field{}{\@glo@label}{prefixplural}{\@glo@entryprefixplural}%
% \end{macrocode}
-% Backward compatible \glostyle{altlong4colborder} style.
+% If \gloskey{prefixfirst} has not been supplied, make it the same
+% as \gloskey{prefix}.
% \begin{macrocode}
-\compatglossarystyle{altlong4colborder}{%
- \csuse{@glscompstyle@long4col}%
-}%
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @prefix\endcsname}{\@glo@label}{prefixfirst}%
+ {\@glo@entryprefixfirst}%
% \end{macrocode}
-% Backward compatible \glostyle{altlong4colheaderborder} style.
+% If \gloskey{prefixfirstplural} has not been supplied, make it the same
+% as \gloskey{prefixplural}.
% \begin{macrocode}
-\compatglossarystyle{altlong4colheaderborder}{%
- \csuse{@glscompstyle@long4col}%
-}%
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @prefixplural\endcsname}{\@glo@label}%
+ {prefixfirstplural}{\@glo@entryprefixfirstplural}%
+}
% \end{macrocode}
%
-% Backward compatible \glostyle{long} style.
+% Define commands to access these fields:
+%\begin{macro}{\glsentryprefixfirst}
+%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
% \begin{macrocode}
-\compatglossarystyle{longragged}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5%
- \tabularnewline}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- &
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4\glspostdescription\space ##6%
- \tabularnewline}%
-}%
+\newcommand*{\glsentryprefixfirst}[1]{\csuse{glo@\glsdetoklabel{#1}@prefixfirst}}
% \end{macrocode}
-% Backward compatible \glostyle{longraggedborder} style.
+%\end{macro}
+%\begin{macro}{\glsentryprefixfirstplural}
+%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
% \begin{macrocode}
-\compatglossarystyle{longraggedborder}{%
- \csuse{@glscompstyle@longragged}%
-}%
+\newcommand*{\glsentryprefixfirstplural}[1]{%
+ \csuse{glo@\glsdetoklabel{#1}@prefixfirstplural}}
% \end{macrocode}
-% Backward compatible \glostyle{longraggedheader} style.
+%\end{macro}
+%\begin{macro}{\glsentryprefix}
+%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
% \begin{macrocode}
-\compatglossarystyle{longraggedheader}{%
- \csuse{@glscompstyle@longragged}%
-}%
+\newcommand*{\glsentryprefix}[1]{\csuse{glo@\glsdetoklabel{#1}@prefix}}
% \end{macrocode}
-% Backward compatible \glostyle{longraggedheaderborder} style.
+%\end{macro}
+%\begin{macro}{\glsentryprefixplural}
+%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
% \begin{macrocode}
-\compatglossarystyle{longraggedheaderborder}{%
- \csuse{@glscompstyle@longragged}%
-}%
+\newcommand*{\glsentryprefixplural}[1]{\csuse{glo@\glsdetoklabel{#1}@prefixplural}}
% \end{macrocode}
-% Backward compatible \glostyle{longragged3col} style.
+%\end{macro}
+%
+% Now for the initial upper case variants:
+%\begin{macro}{\Glsentryprefixfirst}
+%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\compatglossarystyle{longragged3col}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\tabularnewline}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- &
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4 & ##6\tabularnewline}%
-}%
+\newcommand*{\Glsentryprefixfirst}[1]{%
+ \@Glsentryfield{#1}{prefixfirst}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{longragged3colborder} style.
+%\end{macro}
+%Add sentence case mapping.
% \begin{macrocode}
-\compatglossarystyle{longragged3colborder}{%
- \csuse{@glscompstyle@longragged3col}%
-}%
+\glsmfuaddmap{\glsentryprefixfirst}{\Glsentryprefixfirst}
% \end{macrocode}
-% Backward compatible \glostyle{longragged3colheader} style.
+%\begin{macro}{\Glsentryprefixfirstplural}
+%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\compatglossarystyle{longragged3colheader}{%
- \csuse{@glscompstyle@longragged3col}%
-}%
+\newcommand*{\Glsentryprefixfirstplural}[1]{%
+ \@Glsentryfield{#1}{prefixfirstplural}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{longragged3colheaderborder} style.
+%\end{macro}
+%Add sentence case mapping.
% \begin{macrocode}
-\compatglossarystyle{longragged3colheaderborder}{%
- \csuse{@glscompstyle@longragged3col}%
-}%
+\glsmfuaddmap{\glsentryprefixfirstplural}{\Glsentryprefixfirstplural}
% \end{macrocode}
-% Backward compatible \glostyle{altlongragged4col} style.
+%\begin{macro}{\Glsentryprefix}
+%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\compatglossarystyle{altlongragged4col}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\tabularnewline}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- &
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4 & ##5 & ##6\tabularnewline}%
-}%
+\newcommand*{\Glsentryprefix}[1]{%
+ \@Glsentryfield{#1}{prefix}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{altlongragged4colheader} style.
+%\end{macro}
+%Add sentence case mapping.
% \begin{macrocode}
-\compatglossarystyle{altlongragged4colheader}{%
- \csuse{@glscompstyle@altlong4col}%
-}%
+\glsmfuaddmap{\glsentryprefix}{\Glsentryprefix}
% \end{macrocode}
-% Backward compatible \glostyle{altlongragged4colborder} style.
+%\begin{macro}{\Glsentryprefixplural}
+%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
+%\changes{4.50}{2022-10-14}{allow expansion in PDF bookmarks}
% \begin{macrocode}
-\compatglossarystyle{altlongragged4colborder}{%
- \csuse{@glscompstyle@altlong4col}%
-}%
+\newcommand*{\Glsentryprefixplural}[1]{%
+ \@Glsentryfield{#1}{prefixplural}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{altlongragged4colheaderborder} style.
+%\end{macro}
+%Add sentence case mapping.
% \begin{macrocode}
-\compatglossarystyle{altlongragged4colheaderborder}{%
- \csuse{@glscompstyle@altlong4col}%
-}%
+\glsmfuaddmap{\glsentryprefixplural}{\Glsentryprefixplural}
% \end{macrocode}
%
-% Backward compatible \glostyle{index} style.
-% \begin{macrocode}
-\compatglossarystyle{index}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \item\glsentryitem{##1}\textbf{\glstarget{##1}{##2}}%
- \ifx\relax##4\relax
- \else
- \space(##4)%
- \fi
- \space ##3\glspostdescription \space ##5}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- \ifcase##1\relax
- % level 0
- \item
- \or
- % level 1
- \subitem
- \glssubentryitem{##2}%
- \else
- % all other levels
- \subsubitem
- \fi
- \textbf{\glstarget{##2}{##3}}%
- \ifx\relax##5\relax
- \else
- \space(##5)%
- \fi
- \space##4\glspostdescription\space ##6}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{indexgroup} style.
+% Define commands to determine if the prefix keys have been set:
+%\begin{macro}{\ifglshasprefix}
+%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
% \begin{macrocode}
-\compatglossarystyle{indexgroup}{%
- \csuse{@glscompstyle@index}%
-}%
+\newcommand*{\ifglshasprefix}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@prefix}%
+ {#3}%
+ {#2}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{indexhypergroup} style.
+%\end{macro}
+%\begin{macro}{\ifglshasprefixplural}
+%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
% \begin{macrocode}
-\compatglossarystyle{indexhypergroup}{%
- \csuse{@glscompstyle@index}%
-}%
+\newcommand*{\ifglshasprefixplural}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@prefixplural}%
+ {#3}%
+ {#2}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{tree} style.
+%\end{macro}
+%\begin{macro}{\ifglshasprefixfirst}
+%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
% \begin{macrocode}
-\compatglossarystyle{tree}{%
- \renewcommand{\glossaryentryfield}[5]{%
- \hangindent0pt\relax
- \parindent0pt\relax
- \glsentryitem{##1}\textbf{\glstarget{##1}{##2}}%
- \ifx\relax##4\relax
- \else
- \space(##4)%
- \fi
- \space ##3\glspostdescription \space ##5\par}%
- \renewcommand{\glossarysubentryfield}[6]{%
- \hangindent##1\glstreeindent\relax
- \parindent##1\glstreeindent\relax
- \ifnum##1=1\relax
- \glssubentryitem{##2}%
- \fi
- \textbf{\glstarget{##2}{##3}}%
- \ifx\relax##5\relax
- \else
- \space(##5)%
- \fi
- \space##4\glspostdescription\space ##6\par}%
-}%
+\newcommand*{\ifglshasprefixfirst}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@prefixfirst}%
+ {#3}%
+ {#2}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{treegroup} style.
+%\end{macro}
+%\begin{macro}{\ifglshasprefixfirstplural}
+%\changes{4.45}{2020-02-13}{added \cs{glsdetoklabel}}
% \begin{macrocode}
-\compatglossarystyle{treegroup}{%
- \csuse{@glscompstyle@tree}%
-}%
+\newcommand*{\ifglshasprefixfirstplural}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@prefixfirstplural}%
+ {#3}%
+ {#2}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{treehypergroup} style.
+%\end{macro}
+%
+%\begin{macro}{\@glsprefix@record@hook}
+%\changes{4.44}{2019-12-06}{new}
+%Need to take into account the possibility that
+%\sty{glossaries-extra} might be loaded with the \pkgopt{record}
+%option.
% \begin{macrocode}
-\compatglossarystyle{treehypergroup}{%
- \csuse{@glscompstyle@tree}%
-}%
+\providecommand{\@glsprefix@record@hook}[2]{%
+ \ifdef\@glsxtr@record
+ {\@glsxtr@record{#1}{#2}{glslink}}%
+ {}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{treenoname} style.
+%\end{macro}
+%
+%\begin{macro}{\glsprefixsep}
+%\changes{4.45}{2020-02-13}{new}
+%Separator between prefix and term. Does nothing by default.
% \begin{macrocode}
-\compatglossarystyle{treenoname}{%
- \renewcommand{\glossaryentryfield}[5]{%
- \hangindent0pt\relax
- \parindent0pt\relax
- \glsentryitem{##1}\textbf{\glstarget{##1}{##2}}%
- \ifx\relax##4\relax
- \else
- \space(##4)%
- \fi
- \space ##3\glspostdescription \space ##5\par}%
- \renewcommand{\glossarysubentryfield}[6]{%
- \hangindent##1\glstreeindent\relax
- \parindent##1\glstreeindent\relax
- \ifnum##1=1\relax
- \glssubentryitem{##2}%
- \fi
- \glstarget{##2}{\strut}%
- ##4\glspostdescription\space ##6\par}%
-}%
+\newcommand{\glsprefixsep}{}
% \end{macrocode}
-% Backward compatible \glostyle{treenonamegroup} style.
+%\end{macro}
+%
+% Define commands that insert the prefix before commands like \cs{gls}:
+%\begin{macro}{\pgls}
+%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
% \begin{macrocode}
-\compatglossarystyle{treenonamegroup}{%
- \csuse{@glscompstyle@treenoname}%
-}%
+\newrobustcmd{\pgls}{\@gls@hyp@opt\@pgls}
% \end{macrocode}
-% Backward compatible \glostyle{treenonamehypergroup} style.
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \@spgls}
+%\begin{macro}{\@pgls}
+% Unstarred version.
% \begin{macrocode}
-\compatglossarystyle{treenonamehypergroup}{%
- \csuse{@glscompstyle@treenoname}%
-}%
+\newcommand*{\@pgls}[2][]{%
+ \new@ifnextchar[%
+ {\@pgls@{#1}{#2}}%
+ {\@pgls@{#1}{#2}[]}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{alttree} style.
+%\end{macro}
+%
+%\begin{macro}{\@pgls@}
+% Read in the final optional argument:
% \begin{macrocode}
-\compatglossarystyle{alttree}{%
- \renewcommand{\glossaryentryfield}[5]{%
- \ifnum\@gls@prevlevel=0\relax
- \else
- \settowidth{\glstreeindent}{\textbf{\@glswidestname\space}}%
- \hangindent\glstreeindent
- \parindent\glstreeindent
- \fi
- \makebox[0pt][r]{\makebox[\glstreeindent][l]{%
- \glsentryitem{##1}\textbf{\glstarget{##1}{##2}}}}%
- \ifx\relax##4\relax
- \else
- (##4)\space
- \fi
- ##3\glspostdescription \space ##5\par
- \def\@gls@prevlevel{0}%
- }%
- \renewcommand{\glossarysubentryfield}[6]{%
- \ifnum##1=1\relax
- \glssubentryitem{##2}%
- \fi
- \ifnum\@gls@prevlevel=##1\relax
- \else
- \@ifundefined{@glswidestname\romannumeral##1}{%
- \settowidth{\gls@tmplen}{\textbf{\@glswidestname\space}}}{%
- \settowidth{\gls@tmplen}{\textbf{%
- \csname @glswidestname\romannumeral##1\endcsname\space}}}%
- \ifnum\@gls@prevlevel<##1\relax
- \setlength\glstreeindent\gls@tmplen
- \addtolength\glstreeindent\parindent
- \parindent\glstreeindent
- \else
- \@ifundefined{@glswidestname\romannumeral\@gls@prevlevel}{%
- \settowidth{\glstreeindent}{\textbf{%
- \@glswidestname\space}}}{%
- \settowidth{\glstreeindent}{\textbf{%
- \csname @glswidestname\romannumeral\@gls@prevlevel
- \endcsname\space}}}%
- \addtolength\parindent{-\glstreeindent}%
- \setlength\glstreeindent\parindent
- \fi
- \fi
- \hangindent\glstreeindent
- \makebox[0pt][r]{\makebox[\gls@tmplen][l]{%
- \textbf{\glstarget{##2}{##3}}}}%
- \ifx##5\relax\relax
- \else
- (##5)\space
- \fi
- ##4\glspostdescription\space ##6\par
- \def\@gls@prevlevel{##1}%
+\def\@pgls@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefix{#2}{\glsentryprefix{#2}\glsprefixsep}{}%
+ }%
+ {%
+ \ifglshasprefixfirst{#2}{\glsentryprefixfirst{#2}\glsprefixsep}{}%
+ }%
+ \@gls@{#1}{#2}[#3]%
}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{alttreegroup} style.
-% \begin{macrocode}
-\compatglossarystyle{alttreegroup}{%
- \csuse{@glscompstyle@alttree}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{alttreehypergroup} style.
-% \begin{macrocode}
-\compatglossarystyle{alttreehypergroup}{%
- \csuse{@glscompstyle@alttree}%
-}%
+}
% \end{macrocode}
+%\end{macro}
%
-% Backward compatible \glostyle{mcolindex} style.
-% \begin{macrocode}
-\compatglossarystyle{mcolindex}{%
- \csuse{@glscompstyle@index}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{mcolindexgroup} style.
-% \begin{macrocode}
-\compatglossarystyle{mcolindexgroup}{%
- \csuse{@glscompstyle@index}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{mcolindexhypergroup} style.
-% \begin{macrocode}
-\compatglossarystyle{mcolindexhypergroup}{%
- \csuse{@glscompstyle@index}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{mcoltree} style.
-% \begin{macrocode}
-\compatglossarystyle{mcoltree}{%
- \csuse{@glscompstyle@tree}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{mcoltreegroup} style.
-% \begin{macrocode}
-\compatglossarystyle{mcolindextreegroup}{%
- \csuse{@glscompstyle@tree}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{mcoltreehypergroup} style.
-% \begin{macrocode}
-\compatglossarystyle{mcolindextreehypergroup}{%
- \csuse{@glscompstyle@tree}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{mcoltreenoname} style.
-% \begin{macrocode}
-\compatglossarystyle{mcoltreenoname}{%
- \csuse{@glscompstyle@tree}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{mcoltreenonamegroup} style.
-% \begin{macrocode}
-\compatglossarystyle{mcoltreenonamegroup}{%
- \csuse{@glscompstyle@tree}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{mcoltreenonamehypergroup} style.
-% \begin{macrocode}
-\compatglossarystyle{mcoltreenonamehypergroup}{%
- \csuse{@glscompstyle@tree}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{mcolalttree} style.
-% \begin{macrocode}
-\compatglossarystyle{mcolalttree}{%
- \csuse{@glscompstyle@alttree}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{mcolalttreegroup} style.
-% \begin{macrocode}
-\compatglossarystyle{mcolalttreegroup}{%
- \csuse{@glscompstyle@alttree}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{mcolalttreehypergroup} style.
-% \begin{macrocode}
-\compatglossarystyle{mcolalttreehypergroup}{%
- \csuse{@glscompstyle@alttree}%
-}%
-% \end{macrocode}
-
-% Backward compatible \glostyle{superragged} style.
-% \begin{macrocode}
-\compatglossarystyle{superragged}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5%
- \tabularnewline}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- &
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4\glspostdescription\space ##6%
- \tabularnewline}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{superraggedborder} style.
-% \begin{macrocode}
-\compatglossarystyle{superraggedborder}{%
- \csuse{@glscompstyle@superragged}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{superraggedheader} style.
-% \begin{macrocode}
-\compatglossarystyle{superraggedheader}{%
- \csuse{@glscompstyle@superragged}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{superraggedheaderborder} style.
-% \begin{macrocode}
-\compatglossarystyle{superraggedheaderborder}{%
- \csuse{@glscompstyle@superragged}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{superragged3col} style.
-% \begin{macrocode}
-\compatglossarystyle{superragged3col}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\tabularnewline}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- &
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4 & ##6\tabularnewline}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{superragged3colborder} style.
-% \begin{macrocode}
-\compatglossarystyle{superragged3colborder}{%
- \csuse{@glscompstyle@superragged3col}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{superragged3colheader} style.
-% \begin{macrocode}
-\compatglossarystyle{superragged3colheader}{%
- \csuse{@glscompstyle@superragged3col}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{superragged3colheaderborder} style.
-% \begin{macrocode}
-\compatglossarystyle{superragged3colheaderborder}{%
- \csuse{@glscompstyle@superragged3col}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{altsuperragged4col} style.
-% \begin{macrocode}
-\compatglossarystyle{altsuperragged4col}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\tabularnewline}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- &
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4 & ##5 & ##6\tabularnewline}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{altsuperragged4colheader} style.
-% \begin{macrocode}
-\compatglossarystyle{altsuperragged4colheader}{%
- \csuse{@glscompstyle@altsuperragged4col}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{altsuperragged4colborder} style.
+% Similarly for the plural version:
+%\begin{macro}{\pglspl}
+%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
% \begin{macrocode}
-\compatglossarystyle{altsuperragged4colborder}{%
- \csuse{@glscompstyle@altsuperragged4col}%
-}%
+\newrobustcmd{\pglspl}{\@gls@hyp@opt\@pglspl}
% \end{macrocode}
-% Backward compatible \glostyle{altsuperragged4colheaderborder} style.
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \@spglspl}
+%\begin{macro}{\@pglspl}
+% Unstarred version.
% \begin{macrocode}
-\compatglossarystyle{altsuperragged4colheaderborder}{%
- \csuse{@glscompstyle@altsuperragged4col}%
-}%
+\newcommand*{\@pglspl}[2][]{%
+ \new@ifnextchar[%
+ {\@pglspl@{#1}{#2}}%
+ {\@pglspl@{#1}{#2}[]}%
+}
% \end{macrocode}
+%\end{macro}
%
-% Backward compatible \glostyle{super} style.
-% \begin{macrocode}
-\compatglossarystyle{super}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5\\}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- &
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4\glspostdescription\space ##6\\}%
-}%
-% \end{macrocode}
-% Backward compatible \glostyle{superborder} style.
+%\begin{macro}{\@pglspl@}
+% Read in the final optional argument:
% \begin{macrocode}
-\compatglossarystyle{superborder}{%
- \csuse{@glscompstyle@super}%
-}%
+\def\@pglspl@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefixplural{#2}{\glsentryprefixplural{#2}\glsprefixsep}{}%
+ }%
+ {%
+ \ifglshasprefixfirstplural{#2}%
+ {\glsentryprefixfirstplural{#2}\glsprefixsep}{}%
+ }%
+ \@glspl@{#1}{#2}[#3]%
+ }%
+}
% \end{macrocode}
-% Backward compatible \glostyle{superheader} style.
+%\end{macro}
+%
+% Now for the first letter upper case versions:
+%\begin{macro}{\Pgls}
+%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
% \begin{macrocode}
-\compatglossarystyle{superheader}{%
- \csuse{@glscompstyle@super}%
-}%
+\newrobustcmd{\Pgls}{\@gls@hyp@opt\@Pgls}
% \end{macrocode}
-% Backward compatible \glostyle{superheaderborder} style.
+%\end{macro}
+%Add sentence case mapping.
% \begin{macrocode}
-\compatglossarystyle{superheaderborder}{%
- \csuse{@glscompstyle@super}%
-}%
+\glsmfuaddmap{\pgls}{\Pgls}
% \end{macrocode}
-% Backward compatible \glostyle{super3col} style.
+%\changes{4.08}{2014-07-30}{removed \@sPgls}
+%\begin{macro}{\@Pgls}
+% Unstarred version.
% \begin{macrocode}
-\compatglossarystyle{super3col}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\\}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- &
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4 & ##6\\}%
-}%
+\newcommand*{\@Pgls}[2][]{%
+ \new@ifnextchar[%
+ {\@Pgls@{#1}{#2}}%
+ {\@Pgls@{#1}{#2}[]}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{super3colborder} style.
+%\end{macro}
+%
+%\begin{macro}{\@Pgls@}
+% Read in the final optional argument:
% \begin{macrocode}
-\compatglossarystyle{super3colborder}{%
- \csuse{@glscompstyle@super3col}%
-}%
+\def\@Pgls@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefix{#2}%
+ {%
+ \Glsentryprefix{#2}%
+ \glsprefixsep
+ \@gls@{#1}{#2}[#3]%
+ }%
+ {\@Gls@{#1}{#2}[#3]}%
+ }%
+ {%
+ \ifglshasprefixfirst{#2}%
+ {%
+ \Glsentryprefixfirst{#2}%
+ \glsprefixsep
+ \@gls@{#1}{#2}[#3]%
+ }%
+ {\@Gls@{#1}{#2}[#3]}%
+ }%
+ }%
+}
% \end{macrocode}
-% Backward compatible \glostyle{super3colheader} style.
+%\end{macro}
+%
+% Similarly for the plural version:
+%\begin{macro}{\Pglspl}
+%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
% \begin{macrocode}
-\compatglossarystyle{super3colheader}{%
- \csuse{@glscompstyle@super3col}%
-}%
+\newrobustcmd{\Pglspl}{\@gls@hyp@opt\@Pglspl}
% \end{macrocode}
-% Backward compatible \glostyle{super3colheaderborder} style.
+%\end{macro}
+%Add sentence case mapping.
% \begin{macrocode}
-\compatglossarystyle{super3colheaderborder}{%
- \csuse{@glscompstyle@super3col}%
-}%
+\glsmfuaddmap{\pglspl}{\Pglspl}
% \end{macrocode}
-% Backward compatible \glostyle{super4col} style.
+%\changes{4.08}{2014-07-30}{removed \@sPglspl}
+%\begin{macro}{\@Pglspl}
+% Unstarred version.
% \begin{macrocode}
-\compatglossarystyle{super4col}{%
- \renewcommand*{\glossaryentryfield}[5]{%
- \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\\}%
- \renewcommand*{\glossarysubentryfield}[6]{%
- &
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4 & ##5 & ##6\\}%
-}%
+\newcommand*{\@Pglspl}[2][]{%
+ \new@ifnextchar[%
+ {\@Pglspl@{#1}{#2}}%
+ {\@Pglspl@{#1}{#2}[]}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{super4colheader} style.
+%\end{macro}
+%
+%\begin{macro}{\@Pglspl@}
+% Read in the final optional argument:
% \begin{macrocode}
-\compatglossarystyle{super4colheader}{%
- \csuse{@glscompstyle@super4col}%
-}%
+\def\@Pglspl@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefixplural{#2}%
+ {%
+ \Glsentryprefixplural{#2}%
+ \glsprefixsep
+ \@glspl@{#1}{#2}[#3]%
+ }%
+ {\@Glspl@{#1}{#2}[#3]}%
+ }%
+ {%
+ \ifglshasprefixfirstplural{#2}%
+ {%
+ \Glsentryprefixfirstplural{#2}%
+ \glsprefixsep
+ \@glspl@{#1}{#2}[#3]%
+ }%
+ {\@Glspl@{#1}{#2}[#3]}%
+ }%
+ }%
+}
% \end{macrocode}
-% Backward compatible \glostyle{super4colborder} style.
+%\end{macro}
+%
+% Finally the all upper case versions:
+%\begin{macro}{\PGLS}
+%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
% \begin{macrocode}
-\compatglossarystyle{super4colborder}{%
- \csuse{@glscompstyle@super4col}%
-}%
+\newrobustcmd{\PGLS}{\@gls@hyp@opt\@PGLS}
% \end{macrocode}
-% Backward compatible \glostyle{super4colheaderborder} style.
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \@sPGLS}
+%\begin{macro}{\@PGLS}
+% Unstarred version.
% \begin{macrocode}
-\compatglossarystyle{super4colheaderborder}{%
- \csuse{@glscompstyle@super4col}%
-}%
+\newcommand*{\@PGLS}[2][]{%
+ \new@ifnextchar[%
+ {\@PGLS@{#1}{#2}}%
+ {\@PGLS@{#1}{#2}[]}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{altsuper4col} style.
+%\end{macro}
+%
+%\begin{macro}{\@PGLS@}
+% Read in the final optional argument:
% \begin{macrocode}
-\compatglossarystyle{altsuper4col}{%
- \csuse{@glscompstyle@super4col}%
-}%
+\def\@PGLS@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefix{#2}%
+ {\glsuppercase{\glsentryprefix{#2}\glsprefixsep}}{}%
+ }%
+ {%
+ \ifglshasprefixfirst{#2}%
+ {\glsuppercase{\glsentryprefixfirst{#2}\glsprefixsep}}{}%
+ }%
+ \@GLS@{#1}{#2}[#3]%
+ }%
+}
% \end{macrocode}
-% Backward compatible \glostyle{altsuper4colheader} style.
+%\end{macro}
+%
+% Plural version:
+%\begin{macro}{\PGLSpl}
+%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
% \begin{macrocode}
-\compatglossarystyle{altsuper4colheader}{%
- \csuse{@glscompstyle@super4col}%
-}%
+\newrobustcmd{\PGLSpl}{\@gls@hyp@opt\@PGLSpl}
% \end{macrocode}
-% Backward compatible \glostyle{altsuper4colborder} style.
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \@sPGLSpl}
+%\begin{macro}{\@PGLSpl}
+% Unstarred version.
% \begin{macrocode}
-\compatglossarystyle{altsuper4colborder}{%
- \csuse{@glscompstyle@super4col}%
-}%
+\newcommand*{\@PGLSpl}[2][]{%
+ \new@ifnextchar[%
+ {\@PGLSpl@{#1}{#2}}%
+ {\@PGLSpl@{#1}{#2}[]}%
+}
% \end{macrocode}
-% Backward compatible \glostyle{altsuper4colheaderborder} style.
+%\end{macro}
+%
+%\begin{macro}{\@PGLSpl@}
+% Read in the final optional argument:
% \begin{macrocode}
-\compatglossarystyle{altsuper4colheaderborder}{%
- \csuse{@glscompstyle@super4col}%
-}%
+\def\@PGLSpl@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefixplural{#2}%
+ {\glsuppercase{\glsentryprefixplural{#2}\glsprefixsep}}{}%
+ }%
+ {%
+ \ifglshasprefixfirstplural{#2}%
+ {\glsuppercase{\glsentryprefixfirstplural{#2}\glsprefixsep}}{}%
+ }%
+ \@GLSpl@{#1}{#2}[#3]%
+ }%
+}
% \end{macrocode}
+%\end{macro}
%\iffalse
% \begin{macrocode}
-%</glossaries-compatible-307.sty>
+%</glossaries-prefix.sty>
% \end{macrocode}
%\fi
%\iffalse
@@ -25721,18 +24655,24 @@ you
%<*glossaries-accsupp.sty>
% \end{macrocode}
%\fi
-%\chapter{Accessibility Support (glossaries-accsupp Code)}
+%\section{Accessibility Support (glossaries-accsupp Code)}
%\label{sec:code:accsupp}
-% The \isty{glossaries-accsupp} package is experimental. It is
-% intended to provide a means of using the PDF accessibilty support
-% in glossary entries. See the \isty{accsupp} documentation for
+% The \sty{glossaries-accsupp} package is experimental. It is
+% intended to provide a means of using the PDF accessibility support
+% in glossary entries. See the \sty{accsupp} documentation for
% further details about accessibility support.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
% \end{macrocode}
+% Rollback releases:
+% \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.50}{2022-10-14}
+% \end{macrocode}
% Package version number now in line with main glossaries package number.
% \begin{macrocode}
-\ProvidesPackage{glossaries-accsupp}[2021/11/01 v4.49 (NLCT)
+\ProvidesPackage{glossaries-accsupp}[2022/10/14 v4.50 (NLCT)
Experimental glossaries accessibility]
% \end{macrocode}
% Pass all options to \sty{glossaries}:
@@ -25771,41 +24711,14 @@ you
%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
%\changes{4.04}{2014-03-06}{changed \cs{newcommand} to \cs{def} as is may or
%may not be defined}
-% \begin{macrocode}
-\def\compatibleglossentry#1#2{%
- \toks@{#2}%
- \protected@edef\@do@glossentry{%
- \noexpand\accsuppglossaryentryfield{#1}%
- {\noexpand\glsnamefont
- {\expandafter\expandonce\csname glo@\glsdetoklabel{#1}@name\endcsname}}%
- {\expandafter\expandonce\csname glo@\glsdetoklabel{#1}@desc\endcsname}%
- {\expandafter\expandonce\csname glo@\glsdetoklabel{#1}@symbol\endcsname}%
- {\the\toks@}%
- }%
- \@do@glossentry
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
%\end{macro}
%
%\begin{macro}{\compatiblesubglossentry}
%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
%\changes{4.04}{2014-03-06}{changed \cs{newcommand} to \cs{def} as is may or
%may not be defined}
-% \begin{macrocode}
-\def\compatiblesubglossentry#1#2#3{%
- \toks@{#3}%
- \protected@edef\@do@subglossentry{%
- \noexpand\accsuppglossarysubentryfield{\number#1}%
- {#2}%
- {\noexpand\glsnamefont
- {\expandafter\expandonce\csname glo@\glsdetoklabel{#2}@name\endcsname}}%
- {\expandafter\expandonce\csname glo@\glsdetoklabel{#2}@desc\endcsname}%
- {\expandafter\expandonce\csname glo@\glsdetoklabel{#2}@symbol\endcsname}%
- {\the\toks@}%
- }%
- \@do@subglossentry
-}
-% \end{macrocode}
+%\changes{4.50}{2022-10-14}{removed}
%\end{macro}
% Required packages:
% \begin{macrocode}
@@ -25859,7 +24772,7 @@ you
% \end{macrocode}
%\end{macro}
%
-%\section{Defining Replacement Text}
+%\subsection{Defining Replacement Text}
% The version 0.1 stored the replacement text in the
% \gloskey{symbol} key. This has been changed to use the
% new keys defined here. Example of use:
@@ -26044,8 +24957,11 @@ you
{firstpluralaccess}{firstpluralaccess},%
{symbolaccess}{symbolaccess},%
{symbolpluralaccess}{symbolpluralaccess},%
- {descaccess}{descaccess},%
- {descpluralaccess}{descpluralaccess},%
+% \end{macrocode}
+%\changes{4.50}{2022-10-14}{corrected description mapping}
+% \begin{macrocode}
+ {descriptionaccess}{descaccess},%
+ {descriptionpluralaccess}{descpluralaccess},%
{shortaccess}{shortaccess},%
{shortpluralaccess}{shortpluralaccess},%
{longaccess}{longaccess},%
@@ -26169,7 +25085,7 @@ you
}
% \end{macrocode}
%
-%\section{Accessing Replacement Text}
+%\subsection{Accessing Replacement Text}
%\begin{macro}{\glsentryaccess}
% Get the value of the \gloskey{access} key for the entry with
% the given label:
@@ -26474,7 +25390,8 @@ you
%
%\begin{macro}{\@gls@access@display}
%\changes{4.03}{2014-01-20}{new}
-%Deprecated. Use \cs{@gls@fieldaccess@display} instead.
+%\changes{4.45}{2020-02-13}{deprecated}
+%Deprecated in v4.45. Use \cs{@gls@fieldaccess@display} instead.
% \begin{macrocode}
\newcommand*{\@gls@access@display}[2]{%
\protected@edef\@glo@access{#2}%
@@ -26721,7 +25638,7 @@ you
% \end{macrocode}
%\end{macro}
%
-%\changes{4.25}{??}{changed \cs{DeclareRobustCommand} to
+%\changes{4.25}{2016-06-09}{changed \cs{DeclareRobustCommand} to
%\cs{newrobustcmd} and changed \cs{@ifundefined} to \cs{ifcsundef}}
%\begin{macro}{\glsaccessdisplay}
% Gets the replacement text corresponding to the named key given
@@ -26742,239 +25659,9 @@ you
%\end{macro}
%
%\begin{macro}{\@@gls@default@entryfmt}
-% Redefine the default entry format to use accessibility information
-% \begin{macrocode}
-\renewcommand*{\@@gls@default@entryfmt}[2]{%
- \ifdefempty\glscustomtext
- {%
- \glsifplural
- {%
-% \end{macrocode}
-% Plural form
-% \begin{macrocode}
- \glscapscase
- {%
-% \end{macrocode}
-% Don't adjust case
-% \begin{macrocode}
- \ifglsused\glslabel
- {%
-% \end{macrocode}
-% Subsequent use
-% \begin{macrocode}
- #2{\glspluralaccessdisplay
- {\glsentryplural{\glslabel}}{\glslabel}}%
- {\glsdescriptionpluralaccessdisplay
- {\glsentrydescplural{\glslabel}}{\glslabel}}%
- {\glssymbolpluralaccessdisplay
- {\glsentrysymbolplural{\glslabel}}{\glslabel}}
- {\glsinsert}%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- #1{\glsfirstpluralaccessdisplay
- {\glsentryfirstplural{\glslabel}}{\glslabel}}%
- {\glsdescriptionpluralaccessdisplay
- {\glsentrydescplural{\glslabel}}{\glslabel}}%
- {\glssymbolpluralaccessdisplay
- {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
- {\glsinsert}%
- }%
- }%
- {%
-% \end{macrocode}
-% Make first letter upper case
-% \begin{macrocode}
- \ifglsused\glslabel
- {%
-% \end{macrocode}
-% Subsequent use.
-% \begin{macrocode}
- #2{\glspluralaccessdisplay
- {\Glsentryplural{\glslabel}}{\glslabel}}%
- {\glsdescriptionpluralaccessdisplay
- {\glsentrydescplural{\glslabel}}{\glslabel}}%
- {\glssymbolpluralaccessdisplay
- {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
- {\glsinsert}%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- #1{\glsfirstpluralaccessdisplay
- {\Glsentryfirstplural{\glslabel}}{\glslabel}}%
- {\glsdescriptionpluralaccessdisplay
- {\glsentrydescplural{\glslabel}}{\glslabel}}%
- {\glssymbolpluralaccessdisplay
- {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
- {\glsinsert}%
- }%
- }%
- {%
-% \end{macrocode}
-% Make all upper case
-% \begin{macrocode}
- \ifglsused\glslabel
- {%
-% \end{macrocode}
-% Subsequent use
-% \begin{macrocode}
- \MakeUppercase{%
- #2{\glspluralaccessdisplay
- {\glsentryplural{\glslabel}}{\glslabel}}%
- {\glsdescriptionpluralaccessdisplay
- {\glsentrydescplural{\glslabel}}{\glslabel}}%
- {\glssymbolpluralaccessdisplay
- {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
- {\glsinsert}}%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- \MakeUppercase{%
- #1{\glsfirstpluralaccessdisplay
- {\glsentryfirstplural{\glslabel}}{\glslabel}}%
- {\glsdescriptionpluralaccessdisplay
- {\glsentrydescplural{\glslabel}}{\glslabel}}%
- {\glssymbolpluralaccessdisplay
- {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
- {\glsinsert}}%
- }%
- }%
- }%
- {%
-% \end{macrocode}
-% Singular form
-% \begin{macrocode}
- \glscapscase
- {%
-% \end{macrocode}
-% Don't adjust case
-% \begin{macrocode}
- \ifglsused\glslabel
- {%
-% \end{macrocode}
-% Subsequent use
-% \begin{macrocode}
- #2{\glstextaccessdisplay
- {\glsentrytext{\glslabel}}{\glslabel}}%
- {\glsdescriptionaccessdisplay
- {\glsentrydesc{\glslabel}}{\glslabel}}%
- {\glssymbolaccessdisplay
- {\glsentrysymbol{\glslabel}}{\glslabel}}%
- {\glsinsert}%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- #1{\glsfirstaccessdisplay
- {\glsentryfirst{\glslabel}}{\glslabel}}%
- {\glsdescriptionaccessdisplay
- {\glsentrydesc{\glslabel}}{\glslabel}}%
- {\glssymbolaccessdisplay
- {\glsentrysymbol{\glslabel}}{\glslabel}}%
- {\glsinsert}%
- }%
- }%
- {%
-% \end{macrocode}
-% Make first letter upper case
-% \begin{macrocode}
- \ifglsused\glslabel
- {%
-% \end{macrocode}
-% Subsequent use
-% \begin{macrocode}
- #2{\glstextaccessdisplay
- {\Glsentrytext{\glslabel}}{\glslabel}}%
- {\glsdescriptionaccessdisplay
- {\glsentrydesc{\glslabel}}{\glslabel}}%
- {\glssymbolaccessdisplay
- {\glsentrysymbol{\glslabel}}{\glslabel}}%
- {\glsinsert}%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- #1{\glsfirstaccessdisplay
- {\Glsentryfirst{\glslabel}}{\glslabel}}%
- {\glsdescriptionaccessdisplay
- {\glsentrydesc{\glslabel}}{\glslabel}}%
- {\glssymbolaccessdisplay
- {\glsentrysymbol{\glslabel}}{\glslabel}}%
- {\glsinsert}%
- }%
- }%
- {%
-% \end{macrocode}
-% Make all upper case
-% \begin{macrocode}
- \ifglsused\glslabel
- {%
-% \end{macrocode}
-% Subsequent use
-% \begin{macrocode}
- \MakeUppercase{%
- #2{\glstextaccessdisplay
- {\glsentrytext{\glslabel}}{\glslabel}}%
- {\glsdescriptionaccessdisplay
- {\glsentrydesc{\glslabel}}{\glslabel}}%
- {\glssymbolaccessdisplay
- {\glsentrysymbol{\glslabel}}{\glslabel}}%
- {\glsinsert}}%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- \MakeUppercase{%
- #1{\glsfirstaccessdisplay
- {\glsentryfirst{\glslabel}}{\glslabel}}%
- {\glsdescriptionaccessdisplay
- {\glsentrydesc{\glslabel}}{\glslabel}}%
- {\glssymbolaccessdisplay
- {\glsentrysymbol{\glslabel}}{\glslabel}}%
- {\glsinsert}}%
- }%
- }%
- }%
- }%
- {%
-% \end{macrocode}
-% Custom text provided in \cs{glsdisp}
-% \begin{macrocode}
- \ifglsused{\glslabel}%
- {%
-% \end{macrocode}
-% Subsequent use
-% \begin{macrocode}
- #2{\glscustomtext}%
- {\glsdescriptionaccessdisplay
- {\glsentrydesc{\glslabel}}{\glslabel}}%
- {\glssymbolaccessdisplay
- {\glsentrysymbol{\glslabel}}{\glslabel}}%
- {\glsinsert}%
- }%
- {%
-% \end{macrocode}
-% First use
-% \begin{macrocode}
- #1{\glscustomtext}%
- {\glsdescriptionaccessdisplay
- {\glsentrydesc{\glslabel}}{\glslabel}}%
- {\glssymbolaccessdisplay
- {\glsentrysymbol{\glslabel}}{\glslabel}}%
- {\glsinsert}%
- }%
- }%
-}
-% \end{macrocode}
+% Deprecated \cs{@@gls@default@entryfmt} was redefined to use accessibility information
+% but has been removed in v4.50.
+%\changes{4.50}{2022-10-14}{removed}
%\end{macro}
%
%\begin{macro}{\glsgenentryfmt}
@@ -27045,18 +25732,18 @@ you
% Subsequent use
% \begin{macrocode}
\glspluralaccessdisplay
- {\mfirstucMakeUppercase{\glsentryplural{\glslabel}}}%
+ {\glsuppercase{\glsentryplural{\glslabel}}}%
{\glslabel}%
- \mfirstucMakeUppercase{\glsinsert}%
+ \glsuppercase{\glsinsert}%
}%
{%
% \end{macrocode}
% First use
% \begin{macrocode}
\glsfirstpluralacessdisplay
- {\mfirstucMakeUppercase{\glsentryfirstplural{\glslabel}}}%
+ {\glsuppercase{\glsentryfirstplural{\glslabel}}}%
{\glslabel}%
- \mfirstucMakeUppercase{\glsinsert}%
+ \glsuppercase{\glsinsert}%
}%
}%
}%
@@ -27115,16 +25802,16 @@ you
% Subsequent use
% \begin{macrocode}
\glstextaccessdisplay
- {\mfirstucMakeUppercase{\glsentrytext{\glslabel}}}{\glslabel}%
- \mfirstucMakeUppercase{\glsinsert}%
+ {\glsuppercase{\glsentrytext{\glslabel}}}{\glslabel}%
+ \glsuppercase{\glsinsert}%
}%
{%
% \end{macrocode}
% First use
% \begin{macrocode}
\glsfirstaccessdisplay
- {\mfirstucMakeUppercase{\glsentryfirst{\glslabel}}}{\glslabel}%
- \mfirstucMakeUppercase{\glsinsert}%
+ {\glsuppercase{\glsentryfirst{\glslabel}}}{\glslabel}%
+ \glsuppercase{\glsinsert}%
}%
}%
}%
@@ -27182,7 +25869,7 @@ you
% \end{macrocode}
% Subsequent plural form, all caps:
% \begin{macrocode}
- \mfirstucMakeUppercase
+ \glsuppercase
{\acronymfont
{\glsshortpluralaccessdisplay
{\glsentryshortpl{\glslabel}}{\glslabel}}%
@@ -27214,7 +25901,7 @@ you
% \end{macrocode}
% Subsequent singular form, all caps:
% \begin{macrocode}
- \mfirstucMakeUppercase
+ \glsuppercase
{\acronymfont{%
\glsshortaccessdisplay{\glsentryshort{\glslabel}}{\glslabel}}%
\glsinsert}%
@@ -27247,7 +25934,7 @@ you
% \end{macrocode}
% First use plural form, all caps:
% \begin{macrocode}
- \mfirstucMakeUppercase
+ \glsuppercase
{\genplacrfullformat{\glslabel}{\glsinsert}}%
}%
}%
@@ -27272,7 +25959,7 @@ you
% \end{macrocode}
% First use singular form, all caps:
% \begin{macrocode}
- \mfirstucMakeUppercase
+ \glsuppercase
{\genacrfullformat{\glslabel}{\glsinsert}}%
}%
}%
@@ -27421,7 +26108,7 @@ you
\let\glsinsert\@empty
\def\glscustomtext{%
\acronymfont{\glsshortaccessdisplay
- {\MakeUppercase{\glsentryshort{#2}}}{#2}}#3%
+ {\glsuppercase{\glsentryshort{#2}}}{#2}}#3%
}%
% \end{macrocode}
% Call \cs{@gls@link}
@@ -27518,7 +26205,7 @@ you
\let\glsinsert\@empty
\def\glscustomtext{%
\acronymfont{\glslongaccessdisplay{%
- \MakeUppercase{\glsentrylong{#2}}}{#2}#3}%
+ \glsuppercase{\glsentrylong{#2}}}{#2}#3}%
}%
% \end{macrocode}
% Call \cs{@gls@link}
@@ -27556,8 +26243,8 @@ you
% \begin{macrocode}
\def\@GLStext@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glstextaccessdisplay{\mfirstucMakeUppercase{\glsentrytext{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glstextaccessdisplay{\glsuppercase{\glsentrytext{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27585,8 +26272,8 @@ you
% \begin{macrocode}
\def\@GLSfirst@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glsfirstaccessdisplay{\mfirstucMakeUppercase{\glsentryfirst{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glsfirstaccessdisplay{\glsuppercase{\glsentryfirst{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27614,8 +26301,8 @@ you
% \begin{macrocode}
\def\@GLSplural@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glspluralaccessdisplay{\mfirstucMakeUppercase{\glsentryplural{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glspluralaccessdisplay{\glsuppercase{\glsentryplural{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27643,8 +26330,8 @@ you
% \begin{macrocode}
\def\@GLSfirstplural@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glsfirstpluralaccessdisplay{\mfirstucMakeUppercase{\glsentryfirstplural{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glsfirstpluralaccessdisplay{\glsuppercase{\glsentryfirstplural{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27672,8 +26359,8 @@ you
% \begin{macrocode}
\def\@GLSname@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glsnameaccessdisplay{\mfirstucMakeUppercase{\glsentryname{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glsnameaccessdisplay{\glsuppercase{\glsentryname{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27701,8 +26388,8 @@ you
% \begin{macrocode}
\def\@GLSdesc@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glsdescriptionaccessdisplay{\mfirstucMakeUppercase{\glsentrydesc{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glsdescriptionaccessdisplay{\glsuppercase{\glsentrydesc{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27730,8 +26417,8 @@ you
% \begin{macrocode}
\def\@GLSdescplural@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glsdescriptionpluralaccessdisplay{\mfirstucMakeUppercase{\glsentrydescplural{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glsdescriptionpluralaccessdisplay{\glsuppercase{\glsentrydescplural{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27759,8 +26446,8 @@ you
% \begin{macrocode}
\def\@GLSsymbol@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glssymbolaccessdisplay{\mfirstucMakeUppercase{\glsentrysymbol{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glssymbolaccessdisplay{\glsuppercase{\glsentrysymbol{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27788,8 +26475,8 @@ you
% \begin{macrocode}
\def\@GLSsymbolplural@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glssymbolpluralaccessdisplay{\mfirstucMakeUppercase{\glsentrysymbolplural{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glssymbolpluralaccessdisplay{\glsuppercase{\glsentrysymbolplural{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27817,8 +26504,8 @@ you
% \begin{macrocode}
\def\@GLSuseri@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glsuseriaccessdisplay{\mfirstucMakeUppercase{\glsentryuseri{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glsuseriaccessdisplay{\glsuppercase{\glsentryuseri{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27846,8 +26533,8 @@ you
% \begin{macrocode}
\def\@GLSuserii@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glsuseriiaccessdisplay{\mfirstucMakeUppercase{\glsentryuserii{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glsuseriiaccessdisplay{\glsuppercase{\glsentryuserii{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27875,8 +26562,8 @@ you
% \begin{macrocode}
\def\@GLSuseriii@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glsuseriiiaccessdisplay{\mfirstucMakeUppercase{\glsentryuseriii{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glsuseriiiaccessdisplay{\glsuppercase{\glsentryuseriii{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27904,8 +26591,8 @@ you
% \begin{macrocode}
\def\@GLSuseriv@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glsuserivaccessdisplay{\mfirstucMakeUppercase{\glsentryuseriv{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glsuserivaccessdisplay{\glsuppercase{\glsentryuseriv{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27933,8 +26620,8 @@ you
% \begin{macrocode}
\def\@GLSuserv@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glsuservaccessdisplay{\mfirstucMakeUppercase{\glsentryuserv{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glsuservaccessdisplay{\glsuppercase{\glsentryuserv{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
@@ -27962,20 +26649,20 @@ you
% \begin{macrocode}
\def\@GLSuservi@#1#2[#3]{%
\@gls@field@link{#1}{#2}%
- {\glsuserviaccessdisplay{\mfirstucMakeUppercase{\glsentryuservi{#2}}}{#2}%
- \mfirstucMakeUppercase{#3}}%
+ {\glsuserviaccessdisplay{\glsuppercase{\glsentryuservi{#2}}}{#2}%
+ \glsuppercase{#3}}%
}
% \end{macrocode}
%\end{macro}
%
-%\section{Displaying the Glossary}
+%\subsection{Displaying the Glossary}
%\changes{3.08a}{2013-09-28}{removed definition of \cs{@glossaryentryfield}}
%\changes{3.08a}{2013-09-28}{removed definition of \cs{@glossarysubentryfield}}
%
% We need to redefine the way the glossary entries are formatted to
% include the accessibility support. The predefined glossary styles
-% use \ics{glossentryname}, \ics{glossentrydesc} and
-% \ics{glossentrysymbol}, but we need to provide compatibility with
+% use \cs{glossentryname}, \cs{glossentrydesc} and
+% \cs{glossentrysymbol}, but we need to provide compatibility with
% earlier versions in case users have defined their own styles using
% \cs{accsuppglossaryentryfield} and
% \cs{accsuppglossarysubentryfield}.
@@ -28057,8 +26744,8 @@ you
% \end{macrocode}
%\end{macro}
%
-%\section{Acronyms}
-% Redefine acronym styles provided by \styfmt{glossaries}:
+%\subsection{Acronyms}
+% Redefine acronym styles provided by \sty{glossaries}:
%
%\begin{acrstyle}{long-short}
% \meta{long} (\meta{short}) acronym style.
@@ -28314,8 +27001,8 @@ you
% Plural form, all caps:
% \begin{macrocode}
\glslongpluralaccessdisplay
- {\mfirstucMakeUppercase{\glsentrylongpl{\glslabel}}}{\glslabel}%
- \mfirstucMakeUppercase{\glsinsert}%
+ {\glsuppercase{\glsentrylongpl{\glslabel}}}{\glslabel}%
+ \glsuppercase{\glsinsert}%
}%
}%
{%
@@ -28340,9 +27027,9 @@ you
% Subsequent singular form, all caps:
% \begin{macrocode}
\glslongaccessdisplay
- {\mfirstucMakeUppercase
+ {\glsuppercase
{\glsentrylong{\glslabel}\glsinsert}}{\glslabel}%
- \mfirstucMakeUppercase{\glsinsert}%
+ \glsuppercase{\glsinsert}%
}%
}%
}%
@@ -28368,7 +27055,7 @@ you
\renewcommand*{\ACRfullfmt}[3]{%
\glslink[##1]{##2}{%
\glslongaccessdisplay
- {\mfirstucMakeUppercase{\glsentrylong{##2}}{##2}##3\space
+ {\glsuppercase{\glsentrylong{##2}}{##2}##3\space
(\glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2})}}}%
\renewcommand*{\acrfullplfmt}[3]{%
\glslink[##1]{##2}{%
@@ -28385,7 +27072,7 @@ you
\renewcommand*{\ACRfullplfmt}[3]{%
\glslink[##1]{##2}{%
\glslongpluralaccessdisplay
- {\mfirstucMakeUppercase{\glsentrylongpl{##2}}{##2}##3\space
+ {\glsuppercase{\glsentrylongpl{##2}}{##2}##3\space
(\glsshortpluralaccessdisplay
{\acronymfont{\glsentryshortpl{##2}}}{##2})}}}%
\renewcommand*{\glsentryfull}[1]{%
@@ -28476,7 +27163,7 @@ you
\renewcommand*{\acronymfont}[1]{##1}%
\renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
% \end{macrocode}
-% Don't use footnotes for \ics{acrfull}:
+% Don't use footnotes for \cs{acrfull}:
% \begin{macrocode}
\renewcommand*{\acrfullfmt}[3]{%
\glslink[##1]{##2}{%
@@ -28489,7 +27176,7 @@ you
\renewcommand*{\ACRfullfmt}[3]{%
\glslink[##1]{##2}{%
\glsshortaccessdisplay
- {\mfirstucMakeUppercase
+ {\glsuppercase
{\acronymfont{\glsentryshort{##2}}}{##2}##3\space
(\glslongaccessdisplay{\glsentrylong{##2}}{##2})}}}%
\renewcommand*{\acrfullplfmt}[3]{%
@@ -28505,11 +27192,11 @@ you
\renewcommand*{\ACRfullplfmt}[3]{%
\glslink[##1]{##2}{%
\glsshortpluralaccessdisplay
- {\mfirstucMakeUppercase
+ {\glsuppercase
{\acronymfont{\glsentryshortpl{##2}}}{##2}##3\space
(\glslongpluralaccessdisplay{\glsentrylongpl{##2}}{##2})}}}%
% \end{macrocode}
-% Similarly for \ics{glsentryfull} etc:
+% Similarly for \cs{glsentryfull} etc:
% \begin{macrocode}
\renewcommand*{\glsentryfull}[1]{%
\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}\space
@@ -28654,8 +27341,9895 @@ you
}
% \end{macrocode}
%\begin{macro}{\DefaultNewAcronymDef}
-% Modify default style to use access text:
+%Deprecated with the introduction of \cs{setacronymstyle} in v4.02
+%(2013-12-05) and removed in v4.50.
+%\changes{4.50}{2022-10-14}{removed}
+%\end{macro}
+%
+%\begin{macro}{\DescriptionFootnoteNewAcronymDef}
+%Deprecated with the introduction of \cs{setacronymstyle} in v4.02
+%(2013-12-05) and removed in v4.50.
+%\changes{4.50}{2022-10-14}{removed}
+%\end{macro}
+%
+%\begin{macro}{\DescriptionNewAcronymDef}
+%Deprecated with the introduction of \cs{setacronymstyle} in v4.02
+%(2013-12-05) and removed in v4.50.
+%\changes{4.50}{2022-10-14}{removed}
+%\end{macro}
+%\begin{macro}{\FootnoteNewAcronymDef}
+%Deprecated with the introduction of \cs{setacronymstyle} in v4.02
+%(2013-12-05) and removed in v4.50.
+%\changes{4.50}{2022-10-14}{removed}
+%\end{macro}
+%
+%\begin{macro}{\SmallNewAcronymDef}
+%Deprecated with the introduction of \cs{setacronymstyle} in v4.02
+%(2013-12-05) and removed in v4.50.
+%\changes{4.50}{2022-10-14}{removed}
+%\end{macro}
+%
+% The following are kept for compatibility with versions before
+% 3.0:
+%\begin{macro}{\glsshortaccesskey}
+% \begin{macrocode}
+ \newcommand*{\glsshortaccesskey}{\glsshortkey access}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsshortpluralaccesskey}
+% \begin{macrocode}
+ \newcommand*{\glsshortpluralaccesskey}{\glsshortpluralkey access}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslongaccesskey}
+% \begin{macrocode}
+ \newcommand*{\glslongaccesskey}{\glslongkey access}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslongpluralaccesskey}
+% \begin{macrocode}
+ \newcommand*{\glslongpluralaccesskey}{\glslongpluralkey access}%
+% \end{macrocode}
+%\end{macro}
+%\subsection{Debugging Commands}
+%
+%\begin{macro}{\showglonameaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.38}{2018-05-10}{bug fix: corrected field (was showing text access field)}
+% \begin{macrocode}
+\newcommand*{\showglonameaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@access\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglotextaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglotextaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@textaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglopluralaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglopluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@pluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglofirstaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglofirstaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@firstaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglofirstpluralaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglofirstpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@firstpluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglosymbolaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglosymbolaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@symbolaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglosymbolpluralaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglosymbolpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@symbolpluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglodescaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglodescaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@descaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglodescpluralaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglodescpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@descpluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showgloshortaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showgloshortaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@shortaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showgloshortpluralaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showgloshortpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@shortpluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglolongaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglolongaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@longaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglolongpluralaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglolongpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@longpluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-accsupp.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-compatible-207.sty>
+% \end{macrocode}
+%\fi
+%\section{Backwards Compatibility}
+%\subsection{glossaries-compatible-207}
+% Provides compatibility with version 2.07 and below. This uses
+% original \sty{glossaries} xindy and makeindex formatting, so can
+% be used with old documents that had customized style files, but
+% hyperlinks may not work properly.
+%
+%Now only available with rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% Rollback releases:
+% \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.50}{2022-10-14}
+% \end{macrocode}
+%Identify package.
+% \begin{macrocode}
+\ProvidesPackage{glossaries-compatible-207}[2022/10/14 v4.50 (NLCT)]
+% \end{macrocode}
+%Trigger error and that's it.
+% \begin{macrocode}
+\PackageError{glossaries}
+{glossaries-compatible-207.sty no longer available. Use rollback if you need it}%
+{Try \string\usepackage{glossaries}[=v4.46]}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-compatible-207.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-compatible-307.sty>
+% \end{macrocode}
+%\fi
+%\subsection{glossaries-compatible-307}
+% Provides compatibility with version 3.07 and below.
+%
+%Now only available with rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% Rollback releases:
+% \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.50}{2022-10-14}
+% \end{macrocode}
+%Identify package.
+% \begin{macrocode}
+\ProvidesPackage{glossaries-compatible-307}[2022/10/14 v4.50 (NLCT)]
+% \end{macrocode}
+%Trigger error and that's it.
+% \begin{macrocode}
+\PackageError{glossaries}
+{glossaries-compatible-307.sty no longer available. Use rollback if you need it}%
+{Try \string\usepackage{glossaries}[=v4.46]}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-compatible-307.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-2020-03-19.sty>
+% \end{macrocode}
+%\fi
+%\section{Rollback}
+% \subsection{Rollback v4.46 (glossaries-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries}[2020/03/19 v4.46 (NLCT)]
+\RequirePackage{ifthen}
+\RequirePackage{xkeyval}[2006/11/18]
+\RequirePackage{mfirstuc}
+\RequirePackage{textcase}
+\renewcommand*{\mfirstucMakeUppercase}{\MakeTextUppercase}%
+\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
+ \nfss@text{\glsshowtargetfont [#1]}%
+ \else
+ \ifinner
+ {\glsshowtargetfont [#1]}%
+ \else
+ \glsshowtargetouter{#1}%
+ \fi
+ \fi
+}
+\newcommand*{\glsshowtargetouter}[1]{%
+ \glsshowtargetsymbol\marginpar{\glsshowtargetsymbol\glsshowtargetfont #1}}
+\newcommand*{\glsshowtargetsymbol}{{\tiny$\triangleright$}}
+\newcommand*{\glsshowtargetfont}{\ttfamily\footnotesize}
+\newcommand*{\@glsshowtarget}[1]{}
+\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]{}
+\glsesclocationstrue
+\newcommand*{\@gls@loadlong}{\RequirePackage{glossary-long}[=v4.46]}
+\@gls@declareoption{nolong}{\renewcommand*{\@gls@loadlong}{}}
+\IfFileExists{supertabular.sty}{%
+ \newcommand*{\@gls@loadsuper}{\RequirePackage{glossary-super}[=v4.46]}}{%
+ \newcommand*{\@gls@loadsuper}{}}
+\@gls@declareoption{nosuper}{\renewcommand*{\@gls@loadsuper}{}}
+\newcommand*{\@gls@loadlist}{\RequirePackage{glossary-list}[=v4.46]}
+\@gls@declareoption{nolist}{%
+ \renewcommand*{\@gls@loadlist}{%
+ \ifdefstring{\@glossary@default@style}{list}%
+ {\let\@glossary@default@style\relax}%
+ {}%
+ }%
+}
+\newcommand*{\@gls@loadtree}{\RequirePackage{glossary-tree}[=v4.46]}
+\@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*{\@glo@default@sorttype}{standard}
+\define@choicekey{glossaries.sty}{sort}{standard,def,use,none}{%
+ \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{%
+ \edef\@glo@parent{\csname glo@##1@parent\endcsname}%
+ \ifx\@glo@parent\@empty
+ \else
+ \expandafter\@gls@setsort\expandafter{\@glo@parent}%
+ \fi
+ \edef\@glo@type{\csname glo@##1@type\endcsname}%
+ \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\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*{\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
+ \ifbool{glscompatible-3.07}%
+ {}%
+ {%
+ \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]{%
+ \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*{\@gls@sanitizedesc}{%
+}
+\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}%
+}
+{}
+\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
+ }%
+ {}%
+ }
+}
+\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]{%
+ \ifbool{glsacrdescription}%
+ {}%
+ {%
+ \renewcommand*{\@gls@sanitizedesc}{}%
+ }%
+ \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+}
+\define@boolkey{glossaries.sty}[glsacr]{description}[true]{%
+ \renewcommand*{\@gls@sanitizesymbol}{}%
+ \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+}
+\define@boolkey{glossaries.sty}[glsacr]{smallcaps}[true]{%
+ \renewcommand*{\@gls@sanitizesymbol}{}%
+ \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+}
+\define@boolkey{glossaries.sty}[glsacr]{smaller}[true]{%
+ \renewcommand*{\@gls@sanitizesymbol}{}%
+ \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+}
+\define@boolkey{glossaries.sty}[glsacr]{dua}[true]{%
+ \renewcommand*{\@gls@sanitizesymbol}{}%
+ \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+}
+\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}%
+\define@key[gls]{xindy}{language}{\def\@xdy@main@language{#1}}
+\ifcsundef{inputencodingname}{%
+ \def\gls@codepage{}}{%
+ \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]{#1}
+\@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
+ \forallglsentries[\@glo@types,\@ignored@glossaries]{\@glsentry}%
+ {\ifdefempty{\@glsentry}{}{\immediate\write\@gls@labelsfile{\@glsentry}}}%
+ \immediate\closeout\@gls@labelsfile
+}
+\@gls@declareoption{writeglslabels}{\@do@write@glslabels}
+\newif\ifglsautomake
+\newcommand{\gls@automake@nr}{1}
+\define@choicekey{glossaries.sty}{automake}%
+ [\gls@automake@val\gls@automake@nr]{true,false,immediate}[true]{%
+ \ifnum\gls@automake@nr=1\relax
+ \glsautomakefalse
+ \else
+ \glsautomaketrue
+ \fi
+ \ifglsautomake
+ \renewcommand*{\@gls@doautomake}{%
+ \PackageError{glossaries}{You must use
+ \string\makeglossaries\space with automake=true}
+ {%
+ Either remove the automake=true setting or
+ add \string\makeglossaries\space to your document preamble.%
+ }%
+ }%
+ \else
+ \renewcommand*{\@gls@doautomake}{}%
+ \fi
+}
+\glsautomakefalse
+\newcommand*{\@gls@doautomake}{}
+\AtEndDocument{\@gls@doautomake}
+\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]{}
+\boolfalse{glscompatible-3.07}
+\define@boolkey{glossaries.sty}[gls]{compatible-2.07}[true]{%
+ \ifbool{glscompatible-2.07}%
+ {%
+ \booltrue{glscompatible-3.07}%
+ }%
+ {}%
+}
+\boolfalse{glscompatible-2.07}
+\let\gls@original@makeglossary\makeglossary
+\let\gls@original@glossary\glossary
+\def\makeglossary{%
+ \GlossariesWarning{Use of \string\makeglossary\space with
+ glossaries.sty is \MessageBreak deprecated. Use \string\makeglossaries\space
+ instead. If you \MessageBreak need the original definition of
+ \string\makeglossary\space use \MessageBreak the package options
+ kernelglossredefs=false (to \MessageBreak restore the former definition of
+ \string\makeglossary) and \MessageBreak nomain (if the file extensions cause a
+ conflict)}%
+ \makeglossaries
+}
+\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}%
+}
+\if@gls@docloaded
+\else
+ \def\glossary{\@gls@override@glossary}
+\fi
+\define@choicekey{glossaries.sty}{kernelglossredefs}%
+ [\gls@debug@val\gls@debug@nr]{true,false,nowarn}[true]%
+{%
+ \ifcase\gls@debug@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
+}%
+\@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
+\RequirePackage{glossaries-compatible-307}[=v4.46]
+\disable@keys{glossaries.sty}{compatible-2.07,%
+ xindy,xindygloss,xindynoglsnumbers,makeindex,%
+ acronym,translate,notranslate,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}
+ \@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{\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{\mfirstucMakeUppercase{#1}}{\mfirstucMakeUppercase{#1}}%
+ \else
+ \@mkboth{#1}{#1}%
+ \fi
+ }
+ }
+}
+\providecommand{\glossarymark}[1]{%
+ \ifglsucmark
+ \@mkboth{\mfirstucMakeUppercase{#1}}{\mfirstucMakeUppercase{#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"#1\string" ^^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
+ \@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\@tmp{\string" \string"roman-numbers-lowercase\string"
+ :sep \string"}%
+ \@onelevel@sanitize\@tmp
+ \ifx\@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
+\newcommand*{\findrootlanguage}{}
+\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]{%
+ \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}%
+ \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}%
+ }%
+}
+\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*{\defglsentryfmt}[2][\glsdefaulttype]{%
+ \csgdef{gls@#1@entryfmt}{#2}%
+}
+\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}\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
+ {%
+ \edef\@ignored@glossaries{#1}%
+ }%
+ {%
+ \eappto\@ignored@glossaries{,#1}%
+ }%
+ \csgdef{glolist@#1}{,}%
+ \ifcsundef{gls@#1@entryfmt}%
+ {%
+ \defglsentryfmt[#1]{\glsentryfmt}%
+ }%
+ {}%
+ \ifdefempty\@gls@nohyperlist
+ {%
+ \renewcommand*{\@gls@nohyperlist}{#1}%
+ }%
+ {%
+ \eappto\@gls@nohyperlist{,#1}%
+ }%
+}
+\newcommand*{\@ignored@glossaries}{}
+\newcommand*{\ifignoredglossary}[3]{%
+ \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{glossaries}%
+ {`\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@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*{\@glsdefaultplural}{}
+\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\gls@checkseeallowed\gls@checkseeallowed@preambleonly
+ \let\newglossaryentry\new@glossaryentry
+}
+\newrobustcmd{\provideglossaryentry}[2]{%
+ \ifglsentryexists{#1}%
+ {}%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ }%
+}
+\@onlypreamble{\provideglossaryentry}
+\newrobustcmd{\new@glossaryentry}[2]{%
+ \ifundef\@gls@deffile
+ {%
+ \global\newwrite\@gls@deffile
+ \immediate\openout\@gls@deffile=\jobname.glsdefs
+ }%
+ {}%
+ \ifglsentryexists{#1}{}%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ }%
+ \@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*{\@gls@writedef}[1]{%
+ \immediate\write\@gls@deffile
+ {%
+ \string\ifglsentryexists{#1}{}\glspercentchar^^J%
+ \expandafter\@gobble\string\{\glspercentchar^^J%
+ \string\gls@defglossaryentry{\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%
+ \expandafter\@gobble\string\}\glspercentchar%
+ }%
+}
+\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]{\@Gls@entry@field{##1}{#1}}%
+ \ifcsdef{@gls@user@#1@}%
+ {%
+ \PackageError{glossaries}%
+ {Can't define `\string#5' as helper command
+ `\expandafter\string\csname @gls@user@#1@\endcsname' already exists}%
+ {}%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname @gls@user@#1\endcsname}[2][]{%
+ \new@ifnextchar[%
+ {\csuse{@gls@user@#1@}{##1}{##2}}%
+ {\csuse{@gls@user@#1@}{##1}{##2}[]}}%
+ \csdef{@gls@user@#1@}##1##2[##3]{%
+ \@gls@field@link{##1}{##2}{#3{##2}##3}%
+ }%
+ \newrobustcmd*{#5}{%
+ \expandafter\@gls@hyp@opt\csname @gls@user@#1\endcsname}%
+ }%
+ \ifcsdef{@Gls@user@#1@}%
+ {%
+ \PackageError{glossaries}%
+ {Can't define `\string#6' as helper command
+ `\expandafter\string\csname @Gls@user@#1@\endcsname' already exists}%
+ {}%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname @Gls@user@#1\endcsname}[2][]{%
+ \new@ifnextchar[%
+ {\csuse{@Gls@user@#1@}{##1}{##2}}%
+ {\csuse{@Gls@user@#1@}{##1}{##2}[]}}%
+ \csdef{@Gls@user@#1@}##1##2[##3]{%
+ \@gls@field@link{##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}{\mfirstucMakeUppercase{#3{##2}##3}}%
+ }%
+ \newrobustcmd*{#7}{%
+ \expandafter\@gls@hyp@opt\csname @GLS@user@#1\endcsname}%
+ }%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#1' already exists}{}%
+ }%
+}
+\newcommand{\glsfieldxdef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \protected@csxdef{glo@\@glo@label @#2}{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand{\glsfieldedef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \protected@csedef{glo@\@glo@label @#2}{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand{\glsfieldgdef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \expandafter\gdef\csname glo@\@glo@label @#2\endcsname{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand{\glsfielddef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \expandafter\def\csname glo@\@glo@label @#2\endcsname{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand{\glsfieldfetch}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \letcs#3{glo@\@glo@label @#2}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand{\ifglsfieldeq}[5]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \ifcsstring{glo@\@glo@label @#2}{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand{\ifglsfielddefeq}[5]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \expandafter\ifdefstrequal
+ \csname glo@\@glo@label @#2\endcsname{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand{\ifglsfieldcseq}[5]{%
+ \glsdoifexists{#1}%
+ {%
+ \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
+ \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}%
+ \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\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\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\xdef\csname glo@\@glo@label @flagfalse\endcsname{%
+ \noexpand\global
+ \noexpand\let\expandafter\noexpand
+ \csname ifglo@\@glo@label @flag\endcsname\noexpand\iffalse
+ }%
+ \expandafter\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]{%
+ \edef\@glo@thislabel{\glsdetoklabel{#1}}%
+ \edef\glo@type{\csname glo@\@glo@thislabel @type\endcsname}%
+ \def\glo@list{,}%
+ \forglsentries[\glo@type]{\glo@label}%
+ {%
+ \ifdefequal\@glo@thislabel\glo@label
+ {}{\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]{%
+ \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
+ \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
+}
+\AtBeginDocument{%
+ \@ifpackageloaded{amsmath}%
+ {\let\gls@ifnotmeasuring\@gls@ifnotmeasuring}%
+ {}%
+}
+\newcommand*{\@gls@ifnotmeasuring}[1]{%
+ \ifmeasuring@
+ \else
+ #1%
+ \fi
+}
+\newcommand*\gls@ifnotmeasuring[1]{#1}
+\def\@gls@patchtabularx#1\hbox#2#3!!{%
+ \def\TX@trial##1{#1\hbox{\let\glsunset\@gobble#2}#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}%
+}
+\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}%
+ \csgdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ }%
+ \renewcommand*{\@glslocalreset}[1]{%
+ \@@glslocalreset{##1}%
+ \csdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ }%
+ \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}
+\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}
+\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}{%
+ \@@gls@default@entryfmt\glsdisplayfirst\glsdisplay
+}
+\newcommand*{\@@gls@default@entryfmt}[2]{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ #2{\glsentryplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}%
+ }%
+ {%
+ #1{\glsentryfirstplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}%
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \ifbool{glscompatible-3.07}%
+ {%
+ \protected@edef\@glo@etext{%
+ #2{\glsentryplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}}%
+ \xmakefirstuc\@glo@etext
+ }%
+ {%
+ #2{\Glsentryplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}%
+ }%
+ }%
+ {%
+ \ifbool{glscompatible-3.07}%
+ {%
+ \protected@edef\@glo@etext{%
+ #1{\glsentryfirstplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}}%
+ \xmakefirstuc\@glo@etext
+ }%
+ {%
+ #1{\Glsentryfirstplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \mfirstucMakeUppercase{#2{\glsentryplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}}%
+ }%
+ {%
+ \mfirstucMakeUppercase{#1{\glsentryfirstplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}}%
+ }%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ #2{\glsentrytext{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}%
+ }%
+ {%
+ #1{\glsentryfirst{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}%
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \ifbool{glscompatible-3.07}%
+ {%
+ \protected@edef\@glo@etext{%
+ #2{\glsentrytext{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}}%
+ \xmakefirstuc\@glo@etext
+ }%
+ {%
+ #2{\Glsentrytext{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}%
+ }%
+ }%
+ {%
+ \ifbool{glscompatible-3.07}%
+ {%
+ \protected@edef\@glo@etext{%
+ #1{\glsentryfirst{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}}%
+ \xmakefirstuc\@glo@etext
+ }%
+ {%
+ #1{\Glsentryfirst{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \mfirstucMakeUppercase{#2{\glsentrytext{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}}%
+ }%
+ {%
+ \mfirstucMakeUppercase{#1{\glsentryfirst{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \ifglsused{\glslabel}%
+ {%
+ #2{\glscustomtext}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{}%
+ }%
+ {%
+ #1{\glscustomtext}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{}%
+ }%
+ }%
+}
+\newcommand*{\glsgenentryfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsentryplural{\glslabel}\glsinsert
+ }%
+ {%
+ \glsentryfirstplural{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \Glsentryplural{\glslabel}\glsinsert
+ }%
+ {%
+ \Glsentryfirstplural{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \mfirstucMakeUppercase
+ {\glsentryplural{\glslabel}\glsinsert}%
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\glsentryfirstplural{\glslabel}\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsentrytext{\glslabel}\glsinsert
+ }%
+ {%
+ \glsentryfirst{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \Glsentrytext{\glslabel}\glsinsert
+ }%
+ {%
+ \Glsentryfirst{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \mfirstucMakeUppercase{\glsentrytext{\glslabel}\glsinsert}%
+ }%
+ {%
+ \mfirstucMakeUppercase{\glsentryfirst{\glslabel}\glsinsert}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \glscustomtext\glsinsert
+ }%
+}
+\newcommand*{\glsgenacfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \acronymfont{\glsentryshortpl{\glslabel}}\glsinsert
+ }%
+ {%
+ \acronymfont{\Glsentryshortpl{\glslabel}}\glsinsert
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\acronymfont{\glsentryshortpl{\glslabel}}\glsinsert}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \acronymfont{\glsentryshort{\glslabel}}\glsinsert
+ }%
+ {%
+ \acronymfont{\Glsentryshort{\glslabel}}\glsinsert
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\acronymfont{\glsentryshort{\glslabel}}\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\genplacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\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}}%
+ \xmakefirstuc\gls@text
+}
+\newcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{#1}#2\space
+ (\protect\firstacronymfont{\glsentryshortpl{#1}})%
+}
+\newcommand*{\Genplacrfullformat}[2]{%
+ \protected@edef\gls@text{\genplacrfullformat{#1}{#2}}%
+ \xmakefirstuc\gls@text
+}
+\newcommand*{\glsdisplayfirst}[4]{#1#4}
+\newcommand*{\glsdisplay}[4]{#1#4}
+\newcommand*{\defglsdisplay}[2][\glsdefaulttype]{%
+ \GlossariesWarning{\string\defglsdisplay\space is now obsolete.^^J
+ Use \string\defglsentryfmt\space instead}%
+ \expandafter\def\csname gls@#1@display\endcsname##1##2##3##4{#2}%
+ \edef\@gls@doentrydef{%
+ \noexpand\defglsentryfmt[#1]{%
+ \noexpand\ifcsdef{gls@#1@displayfirst}%
+ {%
+ \noexpand\@@gls@default@entryfmt
+ {\noexpand\csuse{gls@#1@displayfirst}}%
+ {\noexpand\csuse{gls@#1@display}}%
+ }%
+ {%
+ \noexpand\@@gls@default@entryfmt
+ {\noexpand\glsdisplayfirst}%
+ {\noexpand\csuse{gls@#1@display}}%
+ }%
+ }%
+ }%
+ \@gls@doentrydef
+}
+\newcommand*{\defglsdisplayfirst}[2][\glsdefaulttype]{%
+ \GlossariesWarning{\string\defglsdisplayfirst\space is now obsolete.^^J
+ Use \string\defglsentryfmt\space instead}%
+ \expandafter\def\csname gls@#1@displayfirst\endcsname##1##2##3##4{#2}%
+ \edef\@gls@doentrydef{%
+ \noexpand\defglsentryfmt[#1]{%
+ \noexpand\ifcsdef{gls@#1@display}%
+ {%
+ \noexpand\@@gls@default@entryfmt
+ {\noexpand\csuse{gls@#1@displayfirst}}%
+ {\noexpand\csuse{gls@#1@display}}%
+ }%
+ {%
+ \noexpand\@@gls@default@entryfmt
+ {\noexpand\csuse{gls@#1@displayfirst}}%
+ {\noexpand\glsdisplay}%
+ }%
+ }%
+ }%
+ \@gls@doentrydef
+}
+\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}}
+\define@boolkey{glslink}{hyper}[true]{}
+\ifdef{\hyperlink}{\KV@glslink@hypertrue}{\KV@glslink@hyperfalse}
+\define@boolkey{glslink}{local}[true]{}
+\newcommand*{\glslinkvar}[3]{#1}
+\newcommand*{\glsifhyper}[2]{%
+ \glslinkvar{#1}{#2}{#1}%
+ \GlossariesWarning{\string\glsifhyper\space is deprecated. Did
+ you mean \string\glsifhyperon\space or \string\glslinkvar?}%
+}
+\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
+}
+\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
+ \edef\glslabel{\glsdetoklabel{#2}}%
+ \def\@gls@link@opts{#1}%
+ \let\@gls@link@label\glslabel
+ \def\@glsnumberformat{glsnumberformat}%
+ \edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}%
+ \edef\glstype{\csname glo@\glslabel @type\endcsname}%
+ \let\org@ifKV@glslink@hyper\ifKV@glslink@hyper
+ \@gls@setdefault@glslink@opts
+ \do@glsdisablehyperinlist
+ \do@gls@link@checkfirsthyper
+ \setkeys{glslink}{#1}%
+ \glslinkpostsetkeys
+ \@gls@saveentrycounter
+ \@gls@setsort{\glslabel}%
+ \@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
+}
+\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}%
+ \@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
+ }%
+ \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}%
+ \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
+}
+\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]{%
+ \@glsshowtarget{#1}%
+ \settoheight{\gls@tmplen}{#2}%
+ \raisebox{\gls@tmplen}{\hypertarget{#1}{}}#2%
+}
+\newcommand*{\glsdohyperlink}[2]{%
+ \@glsshowtarget{#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}%
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+ \glspostlinkhook
+}
+\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\@secondofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+ \glspostlinkhook
+}
+\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\@thirdofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+ \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}%
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+ \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\@secondofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+ \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\@thirdofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+ \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}%
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+ \glspostlinkhook
+}
+\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}
+\newcommand*{\@GLStext}[2][]{%
+ \new@ifnextchar[{\@GLStext@{#1}{#2}}{\@GLStext@{#1}{#2}[]}}
+\def\@GLStext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentrytext{#2}#3}}%
+}
+\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*{\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}
+\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}
+\newcommand*{\@GLSfirst}[2][]{%
+ \new@ifnextchar[{\@GLSfirst@{#1}{#2}}{\@GLSfirst@{#1}{#2}[]}}
+\def\@GLSfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSplural}[2][]{%
+ \new@ifnextchar[{\@GLSplural@{#1}{#2}}{\@GLSplural@{#1}{#2}[]}}
+\def\@GLSplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSfirstplural}[2][]{%
+ \new@ifnextchar[{\@GLSfirstplural@{#1}{#2}}{\@GLSfirstplural@{#1}{#2}[]}}
+\def\@GLSfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSname}[2][]{%
+ \new@ifnextchar[{\@GLSname@{#1}{#2}}{\@GLSname@{#1}{#2}[]}}
+\def\@GLSname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSdesc}[2][]{%
+ \new@ifnextchar[{\@GLSdesc@{#1}{#2}}{\@GLSdesc@{#1}{#2}[]}}
+\def\@GLSdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSdescplural}[2][]{%
+ \new@ifnextchar[{\@GLSdescplural@{#1}{#2}}{\@GLSdescplural@{#1}{#2}[]}}
+\def\@GLSdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSsymbol}[2][]{%
+ \new@ifnextchar[{\@GLSsymbol@{#1}{#2}}{\@GLSsymbol@{#1}{#2}[]}}
+\def\@GLSsymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSsymbolplural}[2][]{%
+ \new@ifnextchar[{\@GLSsymbolplural@{#1}{#2}}{\@GLSsymbolplural@{#1}{#2}[]}}
+\def\@GLSsymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSuseri}[2][]{%
+ \new@ifnextchar[{\@GLSuseri@{#1}{#2}}{\@GLSuseri@{#1}{#2}[]}}
+\def\@GLSuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSuserii}[2][]{%
+ \new@ifnextchar[{\@GLSuserii@{#1}{#2}}{\@GLSuserii@{#1}{#2}[]}}
+\def\@GLSuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSuseriii}[2][]{%
+ \new@ifnextchar[{\@GLSuseriii@{#1}{#2}}{\@GLSuseriii@{#1}{#2}[]}}
+\def\@GLSuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSuseriv}[2][]{%
+ \new@ifnextchar[{\@GLSuseriv@{#1}{#2}}{\@GLSuseriv@{#1}{#2}[]}}
+\def\@GLSuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSuserv}[2][]{%
+\new@ifnextchar[{\@GLSuserv@{#1}{#2}}{\@GLSuserv@{#1}{#2}[]}}
+\def\@GLSuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\newcommand*{\@GLSuservi}[2][]{%
+ \new@ifnextchar[{\@GLSuservi@{#1}{#2}}{\@GLSuservi@{#1}{#2}[]}}
+\def\@GLSuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\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}
+\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}
+\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{%
+ \mfirstucMakeUppercase{\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}
+\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}
+\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{%
+ \mfirstucMakeUppercase{\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}
+\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}
+\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{%
+ \mfirstucMakeUppercase{\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}
+\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}
+\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{%
+ \mfirstucMakeUppercase{\glsentrylongpl{#2}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newcommand*{\@gls@entry@field}[2]{%
+ \csname glo@\glsdetoklabel{#1}@#2\endcsname
+}
+\newcommand*{\glsletentryfield}[3]{%
+ \letcs{#1}{glo@\glsdetoklabel{#2}@#3}%
+}
+\newcommand*{\@Gls@entry@field}[2]{%
+ \glsdoifexistsordo{#1}%
+ {%
+ \letcs\@glo@text{glo@\glsdetoklabel{#1}@#2}%
+ \ifdef\@glo@text
+ {%
+ \xmakefirstuc{\@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*{\glsentryname}[1]{\@gls@entry@field{#1}{name}}
+\newrobustcmd*{\Glsentryname}[1]{%
+ \@Gls@entryname{#1}%
+}
+\newcommand*{\@Gls@entryname}[1]{%
+ \@Gls@entry@field{#1}{name}%
+}
+\newcommand*{\@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
+ \xmakefirstuc{\@glo@text}%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ {%
+ \@Gls@entry@field{#1}{name}%
+ }%
+}
+\newcommand*{\glsentrydesc}[1]{\@gls@entry@field{#1}{desc}}
+\newrobustcmd*{\Glsentrydesc}[1]{%
+ \@Gls@entry@field{#1}{desc}%
+}
+\newcommand*{\glsentrydescplural}[1]{%
+ \@gls@entry@field{#1}{descplural}%
+}
+\newrobustcmd*{\Glsentrydescplural}[1]{%
+ \@Gls@entry@field{#1}{descplural}%
+}
+\newcommand*{\glsentrytext}[1]{\@gls@entry@field{#1}{text}}
+\newrobustcmd*{\Glsentrytext}[1]{%
+ \@Gls@entry@field{#1}{text}%
+}
+\newcommand*{\glsentryplural}[1]{%
+ \@gls@entry@field{#1}{plural}%
+}
+\newrobustcmd*{\Glsentryplural}[1]{%
+ \@Gls@entry@field{#1}{plural}%
+}
+\newcommand*{\glsentrysymbol}[1]{%
+ \@gls@entry@field{#1}{symbol}%
+}
+\newrobustcmd*{\Glsentrysymbol}[1]{%
+ \@Gls@entry@field{#1}{symbol}%
+}
+\newcommand*{\glsentrysymbolplural}[1]{%
+ \@gls@entry@field{#1}{symbolplural}%
+}
+\newrobustcmd*{\Glsentrysymbolplural}[1]{%
+ \@Gls@entry@field{#1}{symbolplural}%
+}
+\newcommand*{\glsentryfirst}[1]{%
+ \@gls@entry@field{#1}{first}%
+}
+\newrobustcmd*{\Glsentryfirst}[1]{%
+ \@Gls@entry@field{#1}{first}%
+}
+\newcommand*{\glsentryfirstplural}[1]{%
+ \@gls@entry@field{#1}{firstpl}%
+}
+\newrobustcmd*{\Glsentryfirstplural}[1]{%
+ \@Gls@entry@field{#1}{firstpl}%
+}
+\newrobustcmd*{\@glsentrytitlecase}[2]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsfieldfetch{#1}{#2}{\@gls@value}%
+ \xcapitalisewords{\@gls@value}%
+ }%
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsentrytitlecase}[2]{%
+ \texorpdfstring
+ {\@glsentrytitlecase{#1}{#2}}%
+ {\@gls@entry@field{#1}{#2}}%
+ }
+}
+{
+ \newcommand*{\glsentrytitlecase}[2]{\@glsentrytitlecase{#1}{#2}}
+}
+\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}%
+}
+\newrobustcmd*{\Glsentryuseri}[1]{%
+ \@Gls@entry@field{#1}{useri}%
+}
+\newcommand*{\glsentryuserii}[1]{%
+ \@gls@entry@field{#1}{userii}%
+}
+\newrobustcmd*{\Glsentryuserii}[1]{%
+ \@Gls@entry@field{#1}{userii}%
+}
+\newcommand*{\glsentryuseriii}[1]{%
+ \@gls@entry@field{#1}{useriii}%
+}
+\newrobustcmd*{\Glsentryuseriii}[1]{%
+ \@Gls@entry@field{#1}{useriii}%
+}
+\newcommand*{\glsentryuseriv}[1]{%
+ \@gls@entry@field{#1}{useriv}%
+}
+\newrobustcmd*{\Glsentryuseriv}[1]{%
+ \@Gls@entry@field{#1}{useriv}%
+}
+\newcommand*{\glsentryuserv}[1]{%
+ \@gls@entry@field{#1}{userv}%
+}
+\newrobustcmd*{\Glsentryuserv}[1]{%
+ \@Gls@entry@field{#1}{userv}%
+}
+\newcommand*{\glsentryuservi}[1]{%
+ \@gls@entry@field{#1}{uservi}%
+}
+\newrobustcmd*{\Glsentryuservi}[1]{%
+ \@Gls@entry@field{#1}{uservi}%
+}
+\newcommand*{\glsentryshort}[1]{\@gls@entry@field{#1}{short}}
+\newrobustcmd*{\Glsentryshort}[1]{%
+ \@Gls@entry@field{#1}{short}%
+}
+\newcommand*{\glsentryshortpl}[1]{\@gls@entry@field{#1}{shortpl}}
+\newrobustcmd*{\Glsentryshortpl}[1]{%
+ \@Gls@entry@field{#1}{shortpl}%
+}
+\newcommand*{\glsentrylong}[1]{\@gls@entry@field{#1}{long}}
+\newrobustcmd*{\Glsentrylong}[1]{%
+ \@Gls@entry@field{#1}{long}%
+}
+\newcommand*{\glsentrylongpl}[1]{\@gls@entry@field{#1}{longpl}}
+\newrobustcmd*{\Glsentrylongpl}[1]{%
+ \@Gls@entry@field{#1}{longpl}%
+}
+\newcommand*{\glsentryfull}[1]{%
+ \acrfullformat{\glsentrylong{#1}}{\acronymfont{\glsentryshort{#1}}}%
+}
+\newrobustcmd*{\Glsentryfull}[1]{%
+ \acrfullformat{\Glsentrylong{#1}}{\acronymfont{\glsentryshort{#1}}}%
+}
+\newcommand*{\glsentryfullpl}[1]{%
+ \acrfullformat{\glsentrylongpl{#1}}{\acronymfont{\glsentryshortpl{#1}}}%
+}
+\newrobustcmd*{\Glsentryfullpl}[1]{%
+ \acrfullformat{\Glsentrylongpl{#1}}{\acronymfont{\glsentryshortpl{#1}}}%
+}
+\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
+ \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}%
+ \edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}%
+ \setkeys{glossadd}{#1}%
+ \@gls@saveentrycounter
+ \@gls@setsort{#2}%
+ \@@do@wrglossary{#2}%
+ }%
+}
+\newcommand*{\@gls@adjustmode}{}
+\AtBeginDocument{\renewcommand*{\@gls@adjustmode}{\ifvmode\mbox{}\fi}}
+\newrobustcmd*{\glsaddall}[1][]{%
+ \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
+ }
+\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
+ }
+\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}%
+ }%
+ }%
+ \@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*{\@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}%
+ \ifcsundef{@xdy@#1@language}%
+ {\let\@gls@langmod\@xdy@main@language}%
+ {\letcs\@gls@langmod{@xdy@#1@language}}%
+ \edef\@gls@dothiswrite{\noexpand\write18{xindy
+ -I xindy
+ \@gls@order
+ -L \@gls@langmod\space
+ -M \gls@istfilebase\space
+ -C \gls@codepage\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}%
+ }%
+ }
+\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}%
+ \ifcsundef{@xdy@#1@language}%
+ {\let\@gls@langmod\@xdy@main@language}%
+ {\letcs\@gls@langmod{@xdy@#1@language}}%
+ \edef\@gls@dothiswrite{\noexpand\immediate\noexpand\write18{xindy
+ -I xindy
+ \@gls@order
+ -L \@gls@langmod\space
+ -M \gls@istfilebase\space
+ -C \gls@codepage\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}%
+ }%
+ }
+\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@immediate}{%
+ \ifnum\gls@automake@nr=2\relax
+ \@for\@gls@type:=\@glo@types\do{%
+ \ifdefempty{\@gls@type}{}%
+ {\@gls@automake@immediate{\@gls@type}}%
+ }%
+ \glsautomakefalse
+ \renewcommand*{\@gls@doautomake}{}%
+ \fi
+}
+\newcommand*{\makeglossaries}{%
+ \@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
+ \def\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}%
+ }%
+ }%
+ \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}{%
+ \@for\@gls@type:=\@glo@types\do{%
+ \ifdefempty{\@gls@type}{}%
+ {\@gls@automake{\@gls@type}}%
+ }%
+ }%
+ \fi
+ \@glo@check@sortallowed\makeglossaries
+ }%
+}
+\@onlypreamble{\makeglossaries}
+\AtEndDocument{%
+ \warn@nomakeglossaries
+ \warn@noprintglossary
+}
+\newcommand*{\makenoidxglossaries}{%
+ \@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]{%
+ \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
+ }%
+}
+\@onlypreamble{\makenoidxglossaries}
+\newcommand*{\glsnumberlistloop}[2]{%
+ \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{}{%
+ \string\@gls@reference
+ {\csname glo@\@gls@label @type\endcsname}%
+ {\@gls@label}%
+ {\string\glsnoidxdisplayloc
+ {\@glo@counterprefix}%
+ {\@gls@counter}%
+ {\@glsnumberformat}%
+ {\@glslocref}%
+ }%
+ }%
+}
+\providecommand\istfile{\glswrite}
+\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]{%
+ \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}{%
+ \@for\@gls@this:=\gls@protected@pagefmts\do
+ {%
+ \expandafter\let\@gls@this\relax
+ }%
+}
+\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]{%
+ \eappto\gls@protected@pagefmts{,\expandonce{\csname gls#1page\endcsname}}%
+ \csedef{gls#1page}{\expandonce{\csname#1\endcsname}\noexpand\c@page}%
+ \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}%
+ }%
+ }%
+}
+\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*{\@@do@noesc@wrglossary}[1]{%
+ \expandafter\def\expandafter\@glslocref\expandafter{\theglsentrycounter}%
+ \expandafter\def\expandafter\@glsHlocref\expandafter{\theHglsentrycounter}%
+ \ifx\@glsHlocref\@glslocref
+ \def\@glo@counterprefix{}%
+ \else
+ \protected@edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
+ {\@glslocref}{\@glsHlocref}%
+ }%
+ \@do@gls@getcounterprefix
+ \fi
+ \edef\@gls@label{\glsdetoklabel{#1}}%
+ \@@do@@wrglossary
+}
+\newif\ifglswrallowprimitivemods
+\glswrallowprimitivemodstrue
+\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}%
+ \fi
+ \def\@arabic##1{%
+ \ifx##1\c@page \gls@arabicpage\else\gls@orgarabic##1\fi}%
+ \def\romannumeral##1{%
+ \ifx##1\c@page \gls@romanpage\else\gls@orgromannumeral##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
+ \edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
+ {\@glslocref}{\@glsHlocref}%
+ }%
+ \@do@gls@getcounterprefix
+ \fi
+ \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*\@gls@getcounterprefix[2]{%
+ \edef\@gls@thisloc{#1}\edef\@gls@thisHloc{#2}%
+ \ifx\@gls@thisloc\@gls@thisHloc
+ \def\@glo@counterprefix{}%
+ \else
+ \def\@gls@get@counterprefix##1.#1##2\end@getprefix{%
+ \def\@glo@tmp{##2}%
+ \ifx\@glo@tmp\@empty
+ \def\@glo@counterprefix{}%
+ \else
+ \def\@glo@counterprefix{##1}%
+ \fi
+ }%
+ \@gls@get@counterprefix#2.#1\end@getprefix
+ \ifx\@glo@counterprefix\@empty
+ \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]{\glsentrytext{#1}}
+\newcommand*{\gls@save@numberlist}[1]{%
+ \ifglssavenumberlist
+ \toks@{#1}%
+ \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 deprecated fallback. \MessageBreak
+ To fix this set the style with \MessageBreak
+ \string\setglossarystyle\space or use the \MessageBreak
+ style key=value option}%
+ \fi
+ }%
+ \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}%
+ \let\@org@glossaryentrynumbers\glossaryentrynumbers
+ \bgroup
+ \@printgloss@setsort
+ \setkeys{printgloss}{#1}%
+ \@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]{%
+ \xdef\glscurrententrylabel{\glsdetoklabel{##1}}%
+ \gls@org@glossaryentryfield{##1}%
+ }%
+ \renewcommand{\subglossentry}[2]{%
+ \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
+ \ifcsundef{@xdy@\@glo@type @language}%
+ {%
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\providecommand\string\@xdylanguage[2]{}}%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\@xdylanguage{\@glo@type}{\@xdy@main@language}}%
+ }%
+ }%
+ }%
+ {%
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\providecommand\string\@xdylanguage[2]{}}%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\@xdylanguage{\@glo@type}{\csname @xdy@\@glo@type
+ @language\endcsname}}%
+ }%
+ }%
+ }%
+ \@do@auxoutstuff
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\providecommand\string\@gls@codepage[2]{}}%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\@gls@codepage{\@glo@type}{\gls@codepage}}%
+ }%
+ }%
+ \@do@auxoutstuff
+ \fi
+ \renewcommand*{\@warn@nomakeglossaries}{%
+ \GlossariesWarningNoLine{\string\makeglossaries\space
+ hasn't been used,^^Jthe glossaries will not be updated}%
+ }%
+}
+\newcommand*{\@glo@sortentries}[2]{%
+ \glosortentrieswarning
+ \def\@glo@sortinglist{}%
+ \def\@glo@sortinghandler{#1}%
+ \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}%
+ {%
+ \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}%
+ {%
+ \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}%
+ {%
+ \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{\setglossentrycompatibility
+ \csname @glsstyle@#1\endcsname}%
+ }%
+}
+\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
+ \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}}
+\providecommand*{\compatibleglossentry}[2]{%
+ \toks@{#2}%
+ \protected@edef\@do@glossentry{\noexpand\glossaryentryfield{#1}%
+ {\noexpand\glsnamefont
+ {\expandafter\expandonce\csname glo@#1@name\endcsname}}%
+ {\expandafter\expandonce\csname glo@#1@desc\endcsname}%
+ {\expandafter\expandonce\csname glo@#1@symbol\endcsname}%
+ {\the\toks@}%
+ }%
+ \@do@glossentry
+}
+\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}}%
+ }%
+}
+\newcommand*{\glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glsentrydesc{#1}%
+ }%
+}
+\newcommand*{\Glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \Glsentrydesc{#1}%
+ }%
+}
+\newcommand*{\glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glsentrysymbol{#1}%
+ }%
+}
+\newcommand*{\Glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \Glsentrysymbol{#1}%
+ }%
+}
+\providecommand*{\compatiblesubglossentry}[3]{%
+ \toks@{#3}%
+ \protected@edef\@do@subglossentry{\noexpand\glossarysubentryfield{\number#1}%
+ {#2}%
+ {\noexpand\glsnamefont
+ {\expandafter\expandonce\csname glo@#2@name\endcsname}}%
+ {\expandafter\expandonce\csname glo@#2@desc\endcsname}%
+ {\expandafter\expandonce\csname glo@#2@symbol\endcsname}%
+ {\the\toks@}%
+ }%
+ \@do@subglossentry
+}
+\newcommand*{\setglossentrycompatibility}{%
+ \let\glossentry\compatibleglossentry
+ \let\subglossentry\compatiblesubglossentry
+}
+\setglossentrycompatibility
+\newcommand{\glossaryentryfield}[5]{%
+ \GlossariesWarning
+ {Deprecated use of \string\glossaryentryfield.^^J
+ I recommend you change to \string\glossentry.^^J
+ If you've just upgraded, try removing your gls auxiliary
+ files^^J and recompile}%
+ \noindent\textbf{\glstarget{#1}{#2}} #4 #3. #5\par}
+\newcommand*{\glossarysubentryfield}[6]{%
+ \GlossariesWarning
+ {Deprecated use of \string\glossarysubentryfield.^^J
+ I recommend you change to \string\subglossentry.^^J
+ If you've just upgraded, try removing your gls auxiliary
+ files^^J and recompile}%
+ \glstarget{#2}{\strut}#4. #6\par}
+\newcommand*{\glsgroupskip}{}
+\newcommand*{\glsgroupheading}[1]{}
+\newcommand*{\glsgetgrouptitle}[1]{%
+ \@gls@getgrouptitle{#1}{\@gls@grptitle}%
+ \@gls@grptitle
+}
+\newcommand*{\@gls@getgrouptitle}[2]{%
+ \dtl@ifsingle{#1}%
+ {%
+ \ifcsundef{#1groupname}{\def#2{#1}}{\letcs#2{#1groupname}}%
+ }%
+ {%
+ \ifboolexpr{test{\ifstrequal{#1}{glssymbols}}
+ or test{\ifstrequal{#1}{glsnumbers}}}%
+ {%
+ \ifcsundef{#1groupname}{\def#2{#1}}{\letcs#2{#1groupname}}%
+ }%
+ {%
+ \def#2{#1}%
+ }%
+ }%
+}
+\newcommand*{\@gls@noidx@getgrouptitle}[2]{%
+ \DTLifint{#1}%
+ {\edef#2{\char#1\relax}}%
+ {%
+ \ifcsundef{#1groupname}{\def#2{#1}}{\letcs#2{#1groupname}}%
+ }%
+}
+\newcommand*{\glsgetgrouplabel}[1]{%
+\ifthenelse{\equal{#1}{\glssymbolsgroupname}}{glssymbols}{%
+\ifthenelse{\equal{#1}{\glsnumbersgroupname}}{glsnumbers}{#1}}}
+\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*{\glossarystyle}[1]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries}{Glossary style `#1' undefined}{}%
+ }%
+ {%
+ \GlossariesWarning
+ {Deprecated command \string\glossarystyle.^^J
+ I recommend you switch to \string\setglossarystyle\space unless
+ you want to maintain backward compatibility}%
+ \setglossentrycompatibility
+ \csname @glsstyle@#1\endcsname
+ \ifcsdef{@glscompstyle@#1}%
+ {\setglossentrycompatibility\csuse{@glscompstyle@#1}}%
+ {}%
+ }%
+ \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{\@glshypernumber#1\nohyperpage{}\@nil}
+}
+\def\@glshypernumber#1\nohyperpage#2#3\@nil{%
+ \ifx\\#1\\%
+ \else
+ \@delimR#1\delimR\delimR\\%
+ \fi
+ \ifx\\#2\\%
+ \else
+ #2%
+ \fi
+ \ifx\\#3\\%
+ \else
+ \@glshypernumber#3\@nil
+ \fi
+}
+\def\@delimR#1\delimR #2\delimR #3\\{%
+\ifx\\#2\\%
+ \@delimN{#1}%
+\else
+ \@gls@numberlink{#1}\delimR\@gls@numberlink{#2}%
+\fi}
+\def\@delimN#1{\@@delimN#1\delimN \delimN\\}
+\def\@@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\x{\the\toks@}%
+ \ifx\x\empty
+ \else
+ \hyperlink{\glsentrycounter\@glo@counterprefix\the\toks@}%
+ {\the\toks@}%
+ \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][]{}
+\newcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}
+\newrobustcmd*{\glstextup}[1]{\ifdef\textulc{\textulc{#1}}{\textup{#1}}}
+\newcommand*{\glsshortkey}{short}
+\newcommand*{\glsshortpluralkey}{shortplural}
+\newcommand*{\glslongkey}{long}
+\newcommand*{\glslongpluralkey}{longplural}
+\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}%
+}
+\newcommand*{\acrfullfmt}[3]{%
+ \acrlinkfullformat{\@acrlong}{\@acrshort}{#1}{#2}{#3}%
+}
+\newcommand{\acrlinkfullformat}[5]{%
+ \acrfullformat{#1{#3}{#4}[#5]}{#2{#3}{#4}[]}%
+}
+\newcommand{\acrfullformat}[2]{#1\glsspace(#2)}
+\newrobustcmd{\glsspace}{\space}
+\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}%
+}
+\newcommand*{\Acrfullfmt}[3]{%
+ \acrlinkfullformat{\@Acrlong}{\@acrshort}{#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}%
+}
+\newcommand*{\ACRfullfmt}[3]{%
+ \acrlinkfullformat{\@ACRlong}{\@ACRshort}{#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*{\acrfullplfmt}[3]{%
+ \acrlinkfullformat{\@acrlongpl}{\@acrshortpl}{#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*{\Acrfullplfmt}[3]{%
+ \acrlinkfullformat{\@Acrlongpl}{\@acrshortpl}{#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*{\ACRfullplfmt}[3]{%
+ \acrlinkfullformat{\@ACRlongpl}{\@ACRshortpl}{#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\acrpluralsuffix},%
+ \GenericAcronymFields,%
+ \the\glskeylisttok
+ }%
+ }%
+ \@do@newglossaryentry
+ }%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\genacrfullformat{##2}{##3}}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\Genacrfullformat{##2}{##3}}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \mfirstucMakeUppercase{\genacrfullformat{##2}{##3}}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\genplacrfullformat{##2}{##3}}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\Genplacrfullformat{##2}{##3}}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \mfirstucMakeUppercase{\genplacrfullformat{##2}{##3}}}}%
+ \renewcommand*{\glsentryfull}[1]{\genacrfullformat{##1}{}}%
+ \renewcommand*{\Glsentryfull}[1]{\Genacrfullformat{##1}{}}%
+ \renewcommand*{\glsentryfullpl}[1]{\genplacrfullformat{##1}{}}%
+ \renewcommand*{\Glsentryfullpl}[1]{\Genplacrfullformat{##1}{}}%
+}
+\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
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\glsentrylongpl{\glslabel}\glsinsert}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \glsentrylong{\glslabel}\glsinsert
+ }%
+ {%
+ \Glsentrylong{\glslabel}\glsinsert
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\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}{%
+ \mfirstucMakeUppercase{\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}{%
+ \mfirstucMakeUppercase{\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]{\acronymfont{\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}{%
+ \mfirstucMakeUppercase{\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}{%
+ \mfirstucMakeUppercase{\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*{\DefaultNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\the\glsshorttok},%
+ sort={\the\glsshorttok},%
+ text={\the\glsshorttok},%
+ first={\acrfullformat{\the\glslongtok}{\the\glsshorttok}},%
+ plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ firstplural={\acrfullformat{\noexpand\expandonce\noexpand\@glo@longpl}%
+ {\noexpand\expandonce\noexpand\@glo@shortpl}},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ description={\the\glslongtok},%
+ descriptionplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+\newcommand*{\SetDefaultAcronymStyle}{%
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetDefaultAcronymDisplayStyle{\@gls@type}%
+ }%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetDefaultAcronymDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \DefaultNewAcronymDef
+ }%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}
+\newcommand*{\acrfootnote}[3]{\acrlinkfootnote{#1}{#2}{#3}}
+\newcommand*{\acrlinkfootnote}[3]{%
+ \footnote{\glslink[#1]{#2}{#3}}%
+}
+\newcommand*{\acrnolinkfootnote}[3]{%
+ \footnote{#3}%
+}
+\newcommand*{\SetDescriptionFootnoteAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglsused{\glslabel}%
+ {%
+ \acronymfont{\glsgenentryfmt}%
+ }%
+ {%
+ \firstacronymfont{\glsgenentryfmt}%
+ \ifglshassymbol{\glslabel}%
+ {%
+ \expandafter\protect\expandafter\acrfootnote\expandafter
+ {\@gls@link@opts}{\@gls@link@label}%
+ {%
+ \glsifplural
+ {\glsentrysymbolplural{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}%
+ }%
+ }%
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+ }%
+}
+\newcommand*{\DescriptionFootnoteNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand\acronymfont{\the\glsshorttok}},%
+ sort={\the\glsshorttok},%
+ first={\the\glsshorttok},%
+ firstplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ text={\the\glsshorttok},%
+ plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ symbol={\the\glslongtok},%
+ symbolplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+\newcommand*{\SetDescriptionFootnoteAcronymStyle}{%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetDescriptionFootnoteAcronymDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \DescriptionFootnoteNewAcronymDef
+ }%
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetDescriptionFootnoteAcronymDisplayStyle{\@gls@type}%
+ }%
+ \ifglsacrsmallcaps
+ \renewcommand*{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+ \else
+ \ifglsacrsmaller
+ \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}%
+ \fi
+ \fi
+ \ifglsacrdua
+ \PackageError{glossaries}{Option clash: `footnote' and `dua'
+ can't both be set}{}%
+ \fi
+}%
+\newcommand*{\SetDescriptionDUAAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{\glsgenentryfmt}%
+}
+\newcommand*{\DescriptionDUANewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\the\glslongtok},%
+ sort={\the\glslongtok},
+ text={\the\glslongtok},%
+ first={\the\glslongtok},%
+ plural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ firstplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ symbol={\the\glsshorttok},%
+ symbolplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+\newcommand*{\SetDescriptionDUAAcronymStyle}{%
+ \ifglsacrsmallcaps
+ \PackageError{glossaries}{Option clash: `smallcaps' and `dua'
+ can't both be set}{}%
+ \else
+ \ifglsacrsmaller
+ \PackageError{glossaries}{Option clash: `smaller' and `dua'
+ can't both be set}{}%
+ \fi
+ \fi
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetDescriptionDUAAcronymDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \DescriptionDUANewAcronymDef
+ }%
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetDescriptionDUAAcronymDisplayStyle{\@gls@type}%
+ }%
+}%
+\newcommand*{\SetDescriptionAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglsused{\glslabel}%
+ {%
+ \let\gls@org@insert\glsinsert
+ \let\glsinsert\@empty
+ \acronymfont{\glsgenentryfmt}\gls@org@insert
+ }%
+ {%
+ \glsgenentryfmt
+ \ifglshassymbol{\glslabel}%
+ {%
+ \glsifplural
+ {%
+ \def\@glo@symbol{\glsentrysymbolplural{\glslabel}}%
+ }%
+ {%
+ \def\@glo@symbol{\glsentrysymbol{\glslabel}}%
+ }%
+ \space(\protect\firstacronymfont
+ {\glscapscase
+ {\@glo@symbol}
+ {\@glo@symbol}
+ {\mfirstucMakeUppercase{\@glo@symbol}}})%
+ }%
+ {}%
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+ }%
+}
+\newcommand*{\DescriptionNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand
+ \acrnameformat{\the\glsshorttok}{\the\glslongtok}},%
+ sort={\the\glsshorttok},%
+ first={\the\glslongtok},%
+ firstplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ text={\the\glsshorttok},%
+ plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ symbol={\noexpand\@glo@text},%
+ symbolplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ \the\glskeylisttok}%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+\newcommand*{\SetDescriptionAcronymStyle}{%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetDescriptionAcronymDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \DescriptionNewAcronymDef
+ }%
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetDescriptionAcronymDisplayStyle{\@gls@type}%
+ }%
+ \ifglsacrsmallcaps
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+ \else
+ \ifglsacrsmaller
+ \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}%
+ \fi
+ \fi
+}%
+\newcommand*{\SetFootnoteAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{%
+ \ifdefempty\glscustomtext
+ {%
+ \let\gls@org@insert\glsinsert
+ \let\glsinsert\@empty
+ \ifglsused{\glslabel}%
+ {%
+ \acronymfont{\glsgenentryfmt}\gls@org@insert
+ }%
+ {%
+ \firstacronymfont{\glsgenentryfmt}\gls@org@insert
+ \ifglshaslong{\glslabel}%
+ {%
+ \expandafter\protect\expandafter\acrfootnote\expandafter
+ {\@gls@link@opts}{\@gls@link@label}%
+ {%
+ \glsifplural
+ {\glsentrylongpl{\glslabel}}%
+ {\glsentrylong{\glslabel}}%
+ }%
+ }%
+ {}%
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+ }%
+}
+\newcommand*{\FootnoteNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand\acronymfont{\the\glsshorttok}},%
+ sort={\the\glsshorttok},%
+ text={\the\glsshorttok},%
+ plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ first={\the\glsshorttok},%
+ firstplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ description={\the\glslongtok},%
+ descriptionplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@descplural\@org@gls@assign@descplural
+}
+\newcommand*{\SetFootnoteAcronymStyle}{%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetFootnoteAcronymDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \FootnoteNewAcronymDef
+ }%
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetFootnoteAcronymDisplayStyle{\@gls@type}%
+ }%
+ \ifglsacrsmallcaps
+ \renewcommand*{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+ \else
+ \ifglsacrsmaller
+ \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}%
+ \fi
+ \fi
+ \ifglsacrdua
+ \PackageError{glossaries}{Option clash: `footnote' and `dua'
+ can't both be set}{}%
+ \fi
+}%
+\DeclareRobustCommand*{\glsdoparenifnotempty}[2]{%
+ \protected@edef\gls@tmp{#1}%
+ \ifdefempty\gls@tmp
+ {}%
+ {%
+ \ifx\gls@tmp\@gls@default@value
+ \else
+ \space (#2{#1})%
+ \fi
+ }%
+}
+\newcommand*{\SetSmallAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{%
+ \ifdefempty\glscustomtext
+ {%
+ \let\gls@org@insert\glsinsert
+ \let\glsinsert\@empty
+ \ifglsused{\glslabel}%
+ {%
+ \acronymfont{\glsgenentryfmt}\gls@org@insert
+ }%
+ {%
+ \glsgenentryfmt
+ \ifglshassymbol{\glslabel}%
+ {%
+ \glsifplural
+ {%
+ \def\@glo@symbol{\glsentrysymbolplural{\glslabel}}%
+ }%
+ {%
+ \def\@glo@symbol{\glsentrysymbol{\glslabel}}%
+ }%
+ \space
+ (\glscapscase
+ {\firstacronymfont{\@glo@symbol}}%
+ {\firstacronymfont{\@glo@symbol}}%
+ {\firstacronymfont{\mfirstucMakeUppercase{\@glo@symbol}}})%
+ }%
+ {}%
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+ }%
+}
+\newcommand*{\SmallNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand\acronymfont{\the\glsshorttok}},%
+ sort={\the\glsshorttok},%
+ text={\the\glsshorttok},%
+ plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ first={\the\glslongtok},%
+ firstplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ description={\noexpand\@glo@first},%
+ descriptionplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ symbol={\the\glsshorttok},%
+ symbolplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@descplural\@org@gls@assign@descplural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+\newcommand*{\SetSmallAcronymStyle}{%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetSmallAcronymDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \SmallNewAcronymDef
+ }%
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetSmallAcronymDisplayStyle{\@gls@type}%
+ }%
+ \ifglsacrsmallcaps
+ \renewcommand*{\acronymfont}[1]{\textsc{##1}}
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+ \else
+ \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}
+ \fi
+ \ifglsacrdua
+ \ifglsacrsmallcaps
+ \PackageError{glossaries}{Option clash: `smallcaps' and `dua'
+ can't both be set}{}%
+ \else
+ \PackageError{glossaries}{Option clash: `smaller' and `dua'
+ can't both be set}{}%
+ \fi
+ \fi
+}%
+\newcommand*{\SetDUADisplayStyle}[1]{%
+ \defglsentryfmt[#1]{\glsgenentryfmt}%
+}
+\newcommand*{\DUANewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\the\glsshorttok},%
+ text={\the\glslongtok},%
+ first={\the\glslongtok},%
+ plural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ firstplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ description={\the\glslongtok},%
+ descriptionplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ symbol={\the\glsshorttok},%
+ symbolplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+ \let\gls@assign@descplural\@org@gls@assign@descplural
+}
+\newcommand*{\SetDUAStyle}{%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetDUADisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \DUANewAcronymDef
+ }%
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetDUADisplayStyle{\@gls@type}%
+ }%
+}
+\newcommand*{\SetAcronymStyle}{%
+ \SetDefaultAcronymStyle
+ \ifglsacrdescription
+ \ifglsacrfootnote
+ \SetDescriptionFootnoteAcronymStyle
+ \else
+ \ifglsacrdua
+ \SetDescriptionDUAAcronymStyle
+ \else
+ \SetDescriptionAcronymStyle
+ \fi
+ \fi
+ \else
+ \ifglsacrfootnote
+ \SetFootnoteAcronymStyle
+ \else
+ \ifthenelse{\boolean{glsacrsmallcaps}\OR
+ \boolean{glsacrsmaller}}%
+ {%
+ \SetSmallAcronymStyle
+ }%
+ {%
+ \ifglsacrdua
+ \SetDUAStyle
+ \fi
+ }%
+ \fi
+ \fi
+}
+\SetAcronymStyle
+\newcommand*{\SetCustomDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{\glsgenentryfmt}%
+}
+\newcommand*{\CustomAcronymFields}{%
+ name={\the\glsshorttok},%
+ description={\the\glslongtok},%
+ first={\acrfullformat{\the\glslongtok}{\the\glsshorttok}},%
+ firstplural={\acrfullformat
+ {\noexpand\glsentrylongpl{\the\glslabeltok}}%
+ {\noexpand\glsentryshortpl{\the\glslabeltok}}},%
+ text={\the\glsshorttok},%
+ plural={\the\glsshorttok\noexpand\acrpluralsuffix}%
+}
+\newcommand*{\CustomNewAcronymDef}{%
+ \protected@edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ user1={\the\glsshorttok},%
+ user2={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ user3={\the\glslongtok},%
+ user4={\the\glslongtok\noexpand\acrpluralsuffix},%
+ \CustomAcronymFields,%
+ \the\glskeylisttok
+ }%
+ }%
+ \@do@newglossaryentry
+}
+\newcommand*{\SetCustomStyle}{%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetCustomDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \CustomNewAcronymDef
+ }%
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetCustomDisplayStyle{\@gls@type}%
+ }%
+}
+\RequirePackage{glossary-hypernav}[=v4.46]
+\@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
+}
+\csname ifglscompatible-2.07\endcsname
+ \RequirePackage{glossaries-compatible-207}[=v4.46]
+\fi
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-2020-03-19.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-accsupp-2020-03-19.sty>
+% \end{macrocode}
+%\fi
+% \subsection{Rollback v4.46 (glossaries-accsupp-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-accsupp}[2020/03/19 v4.46 (NLCT)
+ Experimental glossaries accessibility]
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{glossaries}}
+\ProcessOptions
+\@ifpackageloaded{glossaries-extra}
+{%
+ \ifx\@glsxtr@doaccsupp\empty
+ \GlossariesWarning{The `glossaries-accsupp'
+ package has been loaded\MessageBreak
+ after the `glossaries-extra' package. This\MessageBreak
+ can cause a failure to integrate both packages. \MessageBreak
+ Either use the `accsupp' option when you load\MessageBreak
+ `glossaries-extra' or load `glossaries-accsupp'\MessageBreak
+ before loading `glossaries-extra'}%
+ \fi
+}
+{}
+\def\compatibleglossentry#1#2{%
+ \toks@{#2}%
+ \protected@edef\@do@glossentry{%
+ \noexpand\accsuppglossaryentryfield{#1}%
+ {\noexpand\glsnamefont
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#1}@name\endcsname}}%
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#1}@desc\endcsname}%
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#1}@symbol\endcsname}%
+ {\the\toks@}%
+ }%
+ \@do@glossentry
+}
+\def\compatiblesubglossentry#1#2#3{%
+ \toks@{#3}%
+ \protected@edef\@do@subglossentry{%
+ \noexpand\accsuppglossarysubentryfield{\number#1}%
+ {#2}%
+ {\noexpand\glsnamefont
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#2}@name\endcsname}}%
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#2}@desc\endcsname}%
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#2}@symbol\endcsname}%
+ {\the\toks@}%
+ }%
+ \@do@subglossentry
+}
+\RequirePackage{glossaries}[=v4.46]
+\providecommand{\gls@accsupp@engine}{accsupp}
+\providecommand{\gls@accessibility}[4]{#4}
+\ifdefstring\gls@accsupp@engine{accsupp}
+{
+ \RequirePackage{accsupp}
+ \renewcommand{\gls@accessibility}[4]{%
+ \BeginAccSupp{#1,#2={#3}}#4\EndAccSupp{}%
+ }
+}
+{}
+\newcommand{\glsaccessibility}[4][]{%
+ \@glsshowaccsupp{#1}{#2}{#3}%
+ \gls@accessibility{#1}{#2}{#3}{#4}%
+}
+\define@key{glossentry}{access}{%
+ \def\@glo@access{#1}%
+}
+\define@key{glossentry}{textaccess}{%
+ \def\@glo@textaccess{#1}%
+}
+\define@key{glossentry}{firstaccess}{%
+ \def\@glo@firstaccess{#1}%
+}
+\define@key{glossentry}{pluralaccess}{%
+ \def\@glo@pluralaccess{#1}%
+}
+\define@key{glossentry}{firstpluralaccess}{%
+ \def\@glo@firstpluralaccess{#1}%
+}
+\define@key{glossentry}{symbolaccess}{%
+ \def\@glo@symbolaccess{#1}%
+}
+\define@key{glossentry}{symbolpluralaccess}{%
+ \def\@glo@symbolpluralaccess{#1}%
+}
+\define@key{glossentry}{descriptionaccess}{%
+ \def\@glo@descaccess{#1}%
+}
+\define@key{glossentry}{descriptionpluralaccess}{%
+ \def\@glo@descpluralaccess{#1}%
+}
+\define@key{glossentry}{shortaccess}{%
+ \def\@glo@shortaccess{#1}%
+}
+\define@key{glossentry}{shortpluralaccess}{%
+ \def\@glo@shortpluralaccess{#1}%
+}
+\define@key{glossentry}{longaccess}{%
+ \def\@glo@longaccess{#1}%
+}
+\define@key{glossentry}{longpluralaccess}{%
+ \def\@glo@longpluralaccess{#1}%
+}
+\define@key{glossentry}{user1access}{%
+ \def\@glo@useriaccess{#1}%
+}
+\define@key{glossentry}{user2access}{%
+ \def\@glo@useriiaccess{#1}%
+}
+\define@key{glossentry}{user3access}{%
+ \def\@glo@useriiiaccess{#1}%
+}
+\define@key{glossentry}{user4access}{%
+ \def\@glo@userivaccess{#1}%
+}
+\define@key{glossentry}{user5access}{%
+ \def\@glo@uservaccess{#1}%
+}
+\define@key{glossentry}{user6access}{%
+ \def\@glo@userviaccess{#1}%
+}
+\appto\@gls@keymap{,%
+ {access}{access},%
+ {textaccess}{textaccess},%
+ {firstaccess}{firstaccess},%
+ {pluralaccess}{pluralaccess},%
+ {firstpluralaccess}{firstpluralaccess},%
+ {symbolaccess}{symbolaccess},%
+ {symbolpluralaccess}{symbolpluralaccess},%
+ {descaccess}{descaccess},%
+ {descpluralaccess}{descpluralaccess},%
+ {shortaccess}{shortaccess},%
+ {shortpluralaccess}{shortpluralaccess},%
+ {longaccess}{longaccess},%
+ {longpluralaccess}{longpluralaccess},%
+ {user1access}{useriaccess},%
+ {user2access}{useriiaccess},%
+ {user3access}{useriiiaccess},%
+ {user4access}{userivaccess},%
+ {user5access}{uservaccess},%
+ {user6access}{userviaccess}%
+}
+\def\@gls@noaccess{\relax}
+\let\@gls@oldnewglossaryentryprehook\@newglossaryentryprehook
+\renewcommand*{\@newglossaryentryprehook}{%
+ \@gls@oldnewglossaryentryprehook
+ \def\@glo@access{\relax}%
+ \def\@glo@textaccess{\@glo@access}%
+ \def\@glo@firstaccess{\@glo@access}%
+ \def\@glo@pluralaccess{\@glo@textaccess}%
+ \def\@glo@firstpluralaccess{\@glo@pluralaccess}%
+ \def\@glo@symbolaccess{\relax}%
+ \def\@glo@symbolpluralaccess{\@glo@symbolaccess}%
+ \def\@glo@descaccess{\relax}%
+ \def\@glo@descpluralaccess{\@glo@descaccess}%
+ \def\@glo@shortaccess{\relax}%
+ \def\@glo@shortpluralaccess{\@glo@shortaccess}%
+ \def\@glo@longaccess{\relax}%
+ \def\@glo@longpluralaccess{\@glo@longaccess}%
+ \def\@glo@useriaccess{\relax}%
+ \def\@glo@useriiaccess{\relax}%
+ \def\@glo@useriiiaccess{\relax}%
+ \def\@glo@userivaccess{\relax}%
+ \def\@glo@uservaccess{\relax}%
+ \def\@glo@userviaccess{\relax}%
+}
+\let\@gls@oldnewglossaryentryposthook\@newglossaryentryposthook
+\renewcommand*{\@newglossaryentryposthook}{%
+ \@gls@oldnewglossaryentryposthook
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @access\endcsname{%
+ \@glo@access}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @textaccess\endcsname{%
+ \@glo@textaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @firstaccess\endcsname{%
+ \@glo@firstaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @pluralaccess\endcsname{%
+ \@glo@pluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @firstpluralaccess\endcsname{%
+ \@glo@firstpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @symbolaccess\endcsname{%
+ \@glo@symbolaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @symbolpluralaccess\endcsname{%
+ \@glo@symbolpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @descaccess\endcsname{%
+ \@glo@descaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @descpluralaccess\endcsname{%
+ \@glo@descpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @shortaccess\endcsname{%
+ \@glo@shortaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @shortpluralaccess\endcsname{%
+ \@glo@shortpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @longaccess\endcsname{%
+ \@glo@longaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @longpluralaccess\endcsname{%
+ \@glo@longpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @useriaccess\endcsname{%
+ \@glo@useriaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @useriiaccess\endcsname{%
+ \@glo@useriiaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @useriiiaccess\endcsname{%
+ \@glo@useriiiaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @userivaccess\endcsname{%
+ \@glo@userivaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @uservaccess\endcsname{%
+ \@glo@uservaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @userviaccess\endcsname{%
+ \@glo@userviaccess}%
+}
+\newcommand*{\glsentryaccess}[1]{%
+ \@gls@entry@field{#1}{access}%
+}
+\newcommand*{\glsentrytextaccess}[1]{%
+ \@gls@entry@field{#1}{textaccess}%
+}
+\newcommand*{\glsentryfirstaccess}[1]{%
+ \@gls@entry@field{#1}{firstaccess}%
+}
+\newcommand*{\glsentrypluralaccess}[1]{%
+ \@gls@entry@field{#1}{pluralaccess}%
+}
+\newcommand*{\glsentryfirstpluralaccess}[1]{%
+ \@gls@entry@field{#1}{firstpluralaccess}%
+}
+\newcommand*{\glsentrysymbolaccess}[1]{%
+ \@gls@entry@field{#1}{symbolaccess}%
+}
+\newcommand*{\glsentrysymbolpluralaccess}[1]{%
+ \@gls@entry@field{#1}{symbolpluralaccess}%
+}
+\newcommand*{\glsentrydescaccess}[1]{%
+ \@gls@entry@field{#1}{descaccess}%
+}
+\newcommand*{\glsentrydescpluralaccess}[1]{%
+ \@gls@entry@field{#1}{descpluralaccess}%
+}
+\newcommand*{\glsentryshortaccess}[1]{%
+ \@gls@entry@field{#1}{shortaccess}%
+}
+\newcommand*{\glsentryshortpluralaccess}[1]{%
+ \@gls@entry@field{#1}{shortpluralaccess}%
+}
+\newcommand*{\glsentrylongaccess}[1]{%
+ \@gls@entry@field{#1}{longaccess}%
+}
+\newcommand*{\glsentrylongpluralaccess}[1]{%
+ \@gls@entry@field{#1}{longpluralaccess}%
+}
+\newcommand*{\glsentryuseriaccess}[1]{%
+ \@gls@entry@field{#1}{useriaccess}%
+}
+\newcommand*{\glsentryuseriiaccess}[1]{%
+ \@gls@entry@field{#1}{useriiaccess}%
+}
+\newcommand*{\glsentryuseriiiaccess}[1]{%
+ \@gls@entry@field{#1}{useriiiaccess}%
+}
+\newcommand*{\glsentryuserivaccess}[1]{%
+ \@gls@entry@field{#1}{userivaccess}%
+}
+\newcommand*{\glsentryuservaccess}[1]{%
+ \@gls@entry@field{#1}{uservaccess}%
+}
+\newcommand*{\glsentryuserviaccess}[1]{%
+ \@gls@entry@field{#1}{userviaccess}%
+}
+\newcommand{\glsfieldaccsupp}[4]{%
+ \ifdef\glscategory
+ {%
+ \ifcsdef{glsxtr\glscategory{#4}#3accsupp}%
+ {\csname glsxtr\glscategory{#4}#3accsupp\endcsname{#1}{#2}}%
+ {%
+ \ifcsdef{glsxtr\glscategory{#4}accsupp}%
+ {\csname glsxtr\glscategory{#4}accsupp\endcsname{#1}{#2}}%
+ {%
+ \ifcsdef{gls#3accsupp}%
+ {\csname gls#3accsupp\endcsname{#1}{#2}}%
+ {\glsaccsupp{#1}{#2}}%
+ }%
+ }%
+ }%
+ {%
+ \ifcsdef{gls#3accsupp}%
+ {\csname gls#3accsupp\endcsname{#1}{#2}}%
+ {\glsaccsupp{#1}{#2}}%
+ }%
+}
+\newcommand{\xglsfieldaccsupp}[1]{%
+ \protected@edef\@gls@replacementtext{#1}%
+ \expandafter\glsfieldaccsupp\expandafter{\@gls@replacementtext}%
+}
+\newcommand*{\glsshortaccsupp}[2]{\glsaccessibility{E}{#1}{#2}}
+\newcommand*{\glsshortplaccsupp}{\glsshortaccsupp}
+\newcommand*{\glsaccsupp}[2]{\glsaccessibility{ActualText}{#1}{#2}}
+\newcommand*{\xglsaccsupp}[2]{%
+ \protected@edef\@gls@replacementtext{#1}%
+ \expandafter\glsaccsupp\expandafter{\@gls@replacementtext}{#2}%
+}
+\newcommand*{\@gls@access@display}[2]{%
+ \protected@edef\@glo@access{#2}%
+ \ifx\@glo@access\@gls@noaccess
+ #1%
+ \else
+ \xglsaccsupp{\@glo@access}{#1}%
+ \fi
+}
+\newcommand*{\@gls@fieldaccess@display}[4]{%
+ \protected@edef\@glo@access{#4}%
+ \ifdefequal\@glo@access\@gls@noaccess
+ {#3}%
+ {\expandafter\glsfieldaccsupp\expandafter{\@glo@access}{#3}{#2}{#1}}%
+}
+\newrobustcmd*{\glsnameaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@access}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{name}{#1}{\glsentryaccess{#2}}}%
+}
+\newrobustcmd*{\glstextaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@textaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{text}{#1}{\glsentrytextaccess{#2}}}%
+}
+\newrobustcmd*{\glspluralaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@pluralaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{plural}{#1}{\glsentrypluralaccess{#2}}}%
+}
+\newrobustcmd*{\glsfirstaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@firstaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{first}{#1}{\glsentryfirstaccess{#2}}}%
+}
+\newrobustcmd*{\glsfirstpluralaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@firstpluralaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{firstpl}{#1}{\glsentryfirstpluralaccess{#2}}}%
+}
+\newrobustcmd*{\glssymbolaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@symbolaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{symbol}{#1}{\glsentrysymbolaccess{#2}}}%
+}
+\newrobustcmd*{\glssymbolpluralaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@symbolpluralaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{symbolplural}{#1}{\glsentrysymbolpluralaccess{#2}}}%
+}
+\newrobustcmd*{\glsdescriptionaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@descaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{desc}{#1}{\glsentrydescaccess{#2}}}%
+}
+\newrobustcmd*{\glsdescriptionpluralaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@descpluralaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{descplural}{#1}{\glsentrydescpluralaccess{#2}}}%
+}
+\newrobustcmd*{\glsshortaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@shortaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{short}{#1}{\glsentryshortaccess{#2}}}%
+}
+\newrobustcmd*{\glsshortpluralaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@shortpluralaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{shortpl}{#1}{\glsentryshortpluralaccess{#2}}}%
+}
+\newrobustcmd*{\glslongaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@longaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{long}{#1}{\glsentrylongaccess{#2}}}%
+}
+\newrobustcmd*{\glslongpluralaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@longpluralaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{longpl}{#1}{\glsentrylongpluralaccess{#2}}}%
+}
+\newrobustcmd*{\glsuseriaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@useriaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{useri}{#1}{\glsentryuseriaccess{#2}}}%
+}
+\newrobustcmd*{\glsuseriiaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@useriiaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{userii}{#1}{\glsentryuseriiaccess{#2}}}%
+}
+\newrobustcmd*{\glsuseriiiaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@useriiiaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{useriii}{#1}{\glsentryuseriiiaccess{#2}}}%
+}
+\newrobustcmd*{\glsuserivaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@userivaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{useriv}{#1}{\glsentryuserivaccess{#2}}}%
+}
+\newrobustcmd*{\glsuservaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@uservaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{userv}{#1}{\glsentryuservaccess{#2}}}%
+}
+\newrobustcmd*{\glsuserviaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@userviaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{uservi}{#1}{\glsentryuserviaccess{#2}}}%
+}
+\newrobustcmd*{\glsaccessdisplay}[3]{%
+ \ifcsundef{gls#1accessdisplay}%
+ {%
+ \PackageError{glossaries-accsupp}{No accessibility support
+ for key `#1'}{}%
+ }%
+ {%
+ \csname gls#1accessdisplay\endcsname{#2}{#3}%
+ }%
+}
+\renewcommand*{\@@gls@default@entryfmt}[2]{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ #2{\glspluralaccessdisplay
+ {\glsentryplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}
+ {\glsinsert}%
+ }%
+ {%
+ #1{\glsfirstpluralaccessdisplay
+ {\glsentryfirstplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ #2{\glspluralaccessdisplay
+ {\Glsentryplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ {%
+ #1{\glsfirstpluralaccessdisplay
+ {\Glsentryfirstplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \MakeUppercase{%
+ #2{\glspluralaccessdisplay
+ {\glsentryplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}}%
+ }%
+ {%
+ \MakeUppercase{%
+ #1{\glsfirstpluralaccessdisplay
+ {\glsentryfirstplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}}%
+ }%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ #2{\glstextaccessdisplay
+ {\glsentrytext{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ {%
+ #1{\glsfirstaccessdisplay
+ {\glsentryfirst{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ #2{\glstextaccessdisplay
+ {\Glsentrytext{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ {%
+ #1{\glsfirstaccessdisplay
+ {\Glsentryfirst{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \MakeUppercase{%
+ #2{\glstextaccessdisplay
+ {\glsentrytext{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}}%
+ }%
+ {%
+ \MakeUppercase{%
+ #1{\glsfirstaccessdisplay
+ {\glsentryfirst{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \ifglsused{\glslabel}%
+ {%
+ #2{\glscustomtext}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ {%
+ #1{\glscustomtext}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+}
+\renewcommand*{\glsgenentryfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ \glspluralaccessdisplay
+ {\glsentryplural{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+ \glsfirstpluralaccessdisplay
+ {\glsentryfirstplural{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \glspluralaccessdisplay
+ {\Glsentryplural{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+ \glsfirstpluralaccessdisplay
+ {\Glsentryfirstplural{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \glspluralaccessdisplay
+ {\mfirstucMakeUppercase{\glsentryplural{\glslabel}}}%
+ {\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ {%
+ \glsfirstpluralacessdisplay
+ {\mfirstucMakeUppercase{\glsentryfirstplural{\glslabel}}}%
+ {\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ \glstextaccessdisplay{\glsentrytext{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+ \glsfirstaccessdisplay{\glsentryfirst{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \glstextaccessdisplay{\Glsentrytext{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+ \glsfirstaccessdisplay{\Glsentryfirst{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \glstextaccessdisplay
+ {\mfirstucMakeUppercase{\glsentrytext{\glslabel}}}{\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ {%
+ \glsfirstaccessdisplay
+ {\mfirstucMakeUppercase{\glsentryfirst{\glslabel}}}{\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \glscustomtext\glsinsert
+ }%
+}
+\renewcommand*{\glsgenacfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \acronymfont
+ {\glsshortpluralaccessdisplay
+ {\glsentryshortpl{\glslabel}}{\glslabel}}%
+ \glsinsert
+ }%
+ {%
+ \acronymfont
+ {\glsshortpluralaccessdisplay
+ {\Glsentryshortpl{\glslabel}}{\glslabel}}%
+ \glsinsert
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\acronymfont
+ {\glsshortpluralaccessdisplay
+ {\glsentryshortpl{\glslabel}}{\glslabel}}%
+ \glsinsert}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \acronymfont
+ {\glsshortaccessdisplay{\glsentryshort{\glslabel}}{\glslabel}}%
+ \glsinsert
+ }%
+ {%
+ \acronymfont
+ {\glsshortaccessdisplay{\Glsentryshort{\glslabel}}{\glslabel}}%
+ \glsinsert
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\acronymfont{%
+ \glsshortaccessdisplay{\glsentryshort{\glslabel}}{\glslabel}}%
+ \glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\genplacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\genacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \glscustomtext
+ }%
+}
+\renewcommand*{\genacrfullformat}[2]{%
+ \glslongaccessdisplay{\glsentrylong{#1}}{#1}#2\space
+ (\glsshortaccessdisplay{\protect\firstacronymfont{\glsentryshort{#1}}}{#1})%
+}
+\renewcommand*{\Genacrfullformat}[2]{%
+ \glslongaccessdisplay{\Glsentrylong{#1}}{#1}#2\space
+ (\glsshortaccessdisplay{\protect\firstacronymfont{\Glsentryshort{#1}}}{#1})%
+}
+\renewcommand*{\genplacrfullformat}[2]{%
+ \glslongpluralaccessdisplay{\glsentrylongpl{#1}}{#1}#2\space
+ (\glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{#1}}}{#1})%
+}
+\renewcommand*{\Genplacrfullformat}[2]{%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{#1}}{#1}#2\space
+ (\glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{#1}}}{#1})%
+}
+\def\@acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsshortaccessdisplay{\glsentryshort{#2}}{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@Acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsshortaccessdisplay{\Glsentryshort{#2}}{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@ACRshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsshortaccessdisplay
+ {\MakeUppercase{\glsentryshort{#2}}}{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glslongaccessdisplay{\glsentrylong{#2}}{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@Acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glslongaccessdisplay{\Glsentrylong{#2}}{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@ACRlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glslongaccessdisplay{%
+ \MakeUppercase{\glsentrylong{#2}}}{#2}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@glstext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glstextaccessdisplay{\glsentrytext{#2}}{#2}#3}%
+}
+\def\@Glstext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glstextaccessdisplay{\Glsentrytext{#2}}{#2}#3}%
+}
+\def\@GLStext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glstextaccessdisplay{\mfirstucMakeUppercase{\glsentrytext{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsfirstaccessdisplay{\glsentryfirst{#2}}{#2}#3}%
+}
+\def\@Glsfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsfirstaccessdisplay{\Glsentryfirst{#2}}{#2}#3}%
+}
+\def\@GLSfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsfirstaccessdisplay{\mfirstucMakeUppercase{\glsentryfirst{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glspluralaccessdisplay{\glsentryplural{#2}}{#2}#3}%
+}
+\def\@Glsplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glspluralaccessdisplay{\Glsentryplural{#2}}{#2}#3}%
+}
+\def\@GLSplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glspluralaccessdisplay{\mfirstucMakeUppercase{\glsentryplural{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsfirstpluralaccessdisplay{\glsentryfirstplural{#2}}{#2}#3}%
+}
+\def\@glsfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsfirstpluralaccessdisplay{\Glsentryfirstplural{#2}}{#2}#3}%
+}
+\def\@GLSfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsfirstpluralaccessdisplay{\mfirstucMakeUppercase{\glsentryfirstplural{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsnameaccessdisplay{\glsentryname{#2}}{#2}#3}%
+}
+\def\@Glsname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsnameaccessdisplay{\Glsentryname{#2}}{#2}#3}%
+}
+\def\@GLSname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsnameaccessdisplay{\mfirstucMakeUppercase{\glsentryname{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsdescriptionaccessdisplay{\glsentrydesc{#2}}{#2}#3}%
+}
+\def\@Glsdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsdescriptionaccessdisplay{\Glsentrydesc{#2}}{#2}#3}%
+}
+\def\@GLSdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsdescriptionaccessdisplay{\mfirstucMakeUppercase{\glsentrydesc{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsdescriptionpluralaccessdisplay{\glsentrydescplural{#2}}{#2}#3}%
+}
+\def\@Glsdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsdescriptionpluralaccessdisplay{\Glsentrydescplural{#2}}{#2}#3}%
+}
+\def\@GLSdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsdescriptionpluralaccessdisplay{\mfirstucMakeUppercase{\glsentrydescplural{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glssymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glssymbolaccessdisplay{\glsentrysymbol{#2}}{#2}#3}%
+}
+\def\@Glssymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glssymbolaccessdisplay{\Glsentrysymbol{#2}}{#2}#3}%
+}
+\def\@GLSsymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glssymbolaccessdisplay{\mfirstucMakeUppercase{\glsentrysymbol{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glssymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glssymbolpluralaccessdisplay{\glsentrysymbolplural{#2}}{#2}#3}%
+}
+\def\@Glssymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glssymbolpluralaccessdisplay{\Glsentrysymbolplural{#2}}{#2}#3}%
+}
+\def\@GLSsymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glssymbolpluralaccessdisplay{\mfirstucMakeUppercase{\glsentrysymbolplural{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuseriaccessdisplay{\glsentryuseri{#2}}{#2}#3}%
+}
+\def\@Glsuser@i#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuseriaccessdisplay{\Glsentryuseri{#2}}{#2}#3}%
+}
+\def\@GLSuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsuseriaccessdisplay{\mfirstucMakeUppercase{\glsentryuseri{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuseriiaccessdisplay{\glsentryuserii{#2}}{#2}#3}%
+}
+\def\@Glsuser@i#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuseriiaccessdisplay{\Glsentryuserii{#2}}{#2}#3}%
+}
+\def\@GLSuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsuseriiaccessdisplay{\mfirstucMakeUppercase{\glsentryuserii{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuseriiiaccessdisplay{\glsentryuseriii{#2}}{#2}#3}%
+}
+\def\@Glsuser@i#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuseriiiaccessdisplay{\Glsentryuseriii{#2}}{#2}#3}%
+}
+\def\@GLSuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsuseriiiaccessdisplay{\mfirstucMakeUppercase{\glsentryuseriii{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuserivaccessdisplay{\glsentryuseriv{#2}}{#2}#3}%
+}
+\def\@Glsuser@i#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuserivaccessdisplay{\Glsentryuseriv{#2}}{#2}#3}%
+}
+\def\@GLSuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsuserivaccessdisplay{\mfirstucMakeUppercase{\glsentryuseriv{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuservaccessdisplay{\glsentryuserv{#2}}{#2}#3}%
+}
+\def\@Glsuser@i#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuservaccessdisplay{\Glsentryuserv{#2}}{#2}#3}%
+}
+\def\@GLSuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsuservaccessdisplay{\mfirstucMakeUppercase{\glsentryuserv{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuserviaccessdisplay{\glsentryuservi{#2}}{#2}#3}%
+}
+\def\@Glsuser@i#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuserviaccessdisplay{\Glsentryuservi{#2}}{#2}#3}%
+}
+\def\@GLSuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsuserviaccessdisplay{\mfirstucMakeUppercase{\glsentryuservi{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\renewcommand*{\glossentryname}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsnamefont{\glsnameaccessdisplay{\glsentryname{#1}}{#1}}%
+ }%
+}
+\renewcommand*{\glossentryname}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsnamefont{\glsnameaccessdisplay{\Glsentryname{#1}}{#1}}%
+ }%
+}
+\renewcommand*{\glossentrydesc}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsdescriptionaccessdisplay{\glsentrydesc{#1}}{#1}%
+ }%
+}
+\renewcommand*{\Glossentrydesc}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsdescriptionaccessdisplay{\Glsentrydesc{#1}}{#1}%
+ }%
+}
+\renewcommand*{\glossentrysymbol}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glssymbolaccessdisplay{\glsentrysymbol{#1}}{#1}%
+ }%
+}
+\renewcommand*{\Glossentrysymbol}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glssymbolaccessdisplay{\Glsentrysymbol{#1}}{#1}%
+ }%
+}
+\newcommand*{\accsuppglossaryentryfield}[5]{%
+ \glossaryentryfield{#1}%
+ {\glsnameaccessdisplay{#2}{#1}}%
+ {\glsdescriptionaccessdisplay{#3}{#1}}%
+ {\glssymbolaccessdisplay{#4}{#1}}{#5}%
+}
+\newcommand*{\accsuppglossarysubentryfield}[6]{%
+ \glossarysubentryfield{#1}{#2}%
+ {\glsnameaccessdisplay{#3}{#2}}%
+ {\glsdescriptionaccessdisplay{#4}{#2}}%
+ {\glssymbolaccessdisplay{#5}{#2}}{#6}%
+}
+\renewacronymstyle{long-short}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}##2\space
+ (\glsshortaccessdisplay
+ {\protect\firstacronymfont{\glsentryshort{##1}}}{##1})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \glslongaccessdisplay{\Glsentrylong{##1}}{##1}##2\space
+ (\glsshortaccessdisplay
+ {\protect\firstacronymfont{\glsentryshort{##1}}}{##1})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1}##2\space
+ (\glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{##1}}}{##1})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{##1}}{##1}##2\space
+ (\glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{##1}}}{##1})%
+ }%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+\renewacronymstyle{short-long}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsshortaccessdisplay
+ {\protect\firstacronymfont{\glsentryshort{##1}}}{##1}##2\space
+ (\glslongaccessdisplay{\glsentrylong{##1}}{##1})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \glsshortaccessdisplay
+ {\protect\firstacronymfont{\Glsentryshort{##1}}}{##1}##2\space
+ (\glslongaccessdisplay{\glsentrylong{##1}}{##1})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{##1}}}{##1}##2\space
+ (\glslongpluralaccessdisplay
+ {\glsentrylongpl{##1}}{##1})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\Glsentryshortpl{##1}}}{##1}##2\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1})%
+ }%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+\renewacronymstyle{long-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{long-sc-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sc-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sc-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{long-sm-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sm-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sm-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{sc-short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{sc-short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{sc-short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{sm-short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{sm-short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{sm-short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{dua}%
+{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglshaslong{\glslabel}%
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \glslongpluralaccessdisplay{\glsentrylongpl{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+ \glslongpluralaccessdisplay
+ {\mfirstucMakeUppercase{\glsentrylongpl{\glslabel}}}{\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \glslongaccessdisplay{\glsentrylong{\glslabel}}{\glslabel}\glsinsert
+ }%
+ {%
+ \glslongaccessdisplay{\Glsentrylong{\glslabel}}{\glslabel}\glsinsert
+ }%
+ {%
+ \glslongaccessdisplay
+ {\mfirstucMakeUppercase
+ {\glsentrylong{\glslabel}\glsinsert}}{\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glsgenentryfmt
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongaccessdisplay{\glsentrylong{##2}}{##2}##3\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2})}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongaccessdisplay{\Glsentrylong{##2}}{##2}##3\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2})}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongaccessdisplay
+ {\mfirstucMakeUppercase{\glsentrylong{##2}}{##2}##3\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2})}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongpluralaccessdisplay
+ {\glsentrylongpl{##2}}{##2}##3\space
+ (\glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##2}}}{##2})}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongpluralaccessdisplay
+ {\Glsentrylongpl{##2}}{##2}##3\space
+ (\glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##2}}}{##2})}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongpluralaccessdisplay
+ {\mfirstucMakeUppercase{\glsentrylongpl{##2}}{##2}##3\space
+ (\glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##2}}}{##2})}}}%
+ \renewcommand*{\glsentryfull}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})%
+ }%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \glslongaccessdisplay{\Glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})%
+ }%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1}\space
+ (\glsshortpluralaccessdisplay{\acronymfont{\glsentryshortpl{##1}}}{##1})%
+ }%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{##1}}{##1}\space
+ (\glsshortpluralaccessdisplay{\acronymfont{\glsentryshortpl{##1}}}{##1})%
+ }%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+\renewacronymstyle{dua-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{dua}%
+}%
+{%
+ \GlsUseAcrStyleDefs{dua}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\acronymfont{\glsentrylong{##1}}}{##1}}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+}%
+\renewacronymstyle{footnote}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \glshyperfirstfalse
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsshortaccessdisplay
+ {\protect\firstacronymfont{\glsentryshort{##1}}}{##1}##2%
+ \protect\footnote{\glslongaccessdisplay{\glsentrylong{##1}}{##1}}%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \glsshortaccessdisplay
+ {\firstacronymfont{\Glsentryshort{##1}}}{##1}##2%
+ \protect\footnote{\glslongaccessdisplay{\glsentrylong{##1}}{##1}}%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{##1}}}{##1}##2%
+ \protect\footnote{\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1}}%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\Glsentryshortpl{##1}}}{##1}##2%
+ \protect\footnote{\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1}}%
+ }%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2}##3\space
+ (\glslongaccessdisplay{\glsentrylong{##2}}{##2})}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortaccessdisplay{\acronymfont{\Glsentryshort{##2}}}{##2}##3\space
+ (\glslongaccessdisplay{\glsentrylong{##2}}{##2})}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortaccessdisplay
+ {\mfirstucMakeUppercase
+ {\acronymfont{\glsentryshort{##2}}}{##2}##3\space
+ (\glslongaccessdisplay{\glsentrylong{##2}}{##2})}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##2}}}{##2}##3\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##2}}{##2})}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortpluralaccessdisplay
+ {\acronymfont{\Glsentryshortpl{##2}}}{##2}##3\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##2}})}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortpluralaccessdisplay
+ {\mfirstucMakeUppercase
+ {\acronymfont{\glsentryshortpl{##2}}}{##2}##3\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##2}}{##2})}}}%
+ \renewcommand*{\glsentryfull}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}\space
+ (\glslongaccessdisplay{\glsentrylong{##1}}{##1})}%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\Glsentryshort{##1}}}{##1}\space
+ (\glslongaccessdisplay{\glsentrylong{##1}}{##1})}%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##1}}}{##1}\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1})}%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \glsshortpluralaccessdisplay
+ {\acronymfont{\Glsentryshortpl{##1}}}{##1}\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1})}%
+}
+\renewacronymstyle{footnote-sc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}%
+}%
+\renewacronymstyle{footnote-sm}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}
+ \renewcommand{\acronymfont}[1]{\textsmaller{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}%
+\renewacronymstyle{footnote-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{footnote-sc-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote-sc}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote-sc}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{footnote-sm-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote-sm}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote-sm}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\newcommand*{\glsdefaultshortaccess}[2]{#1}
+\renewcommand*{\newacronymhook}{%
+ \edef\@gls@keylist{%
+ shortaccess={\glsdefaultshortaccess{\the\glslongtok}{\the\glsshorttok}},%
+ shortpluralaccess={\glsdefaultshortaccess{\the\glslongtok}{\the\glsshorttok}},%
+ \the\glskeylisttok}%
+ \expandafter\glskeylisttok\expandafter{\@gls@keylist}%
+}
\renewcommand*{\DefaultNewAcronymDef}{%
\edef\@do@newglossaryentry{%
\noexpand\newglossaryentry{\the\glslabeltok}%
@@ -28704,12 +37278,7 @@ you
\let\gls@assign@firstpl\@org@gls@assign@firstpl
\let\gls@assign@plural\@org@gls@assign@plural
\let\gls@assign@symbolplural\@org@gls@assign@symbolplural
- \@@gls@noexpand@assign@default@plurals
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\DescriptionFootnoteNewAcronymDef}
-% \begin{macrocode}
\renewcommand*{\DescriptionFootnoteNewAcronymDef}{%
\edef\@do@newglossaryentry{%
\noexpand\newglossaryentry{\the\glslabeltok}%
@@ -28749,10 +37318,6 @@ you
\let\gls@assign@firstpl\@org@gls@assign@firstpl
\let\gls@assign@symbolplural\@org@gls@assign@symbolplural
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\DescriptionNewAcronymDef}
-% \begin{macrocode}
\renewcommand*{\DescriptionNewAcronymDef}{%
\edef\@do@newglossaryentry{%
\noexpand\newglossaryentry{\the\glslabeltok}%
@@ -28797,10 +37362,6 @@ you
\let\gls@assign@plural\@org@gls@assign@plural
\let\gls@assign@symbolplural\@org@gls@assign@symbolplural
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\FootnoteNewAcronymDef}
-% \begin{macrocode}
\renewcommand*{\FootnoteNewAcronymDef}{%
\edef\@do@newglossaryentry{%
\noexpand\newglossaryentry{\the\glslabeltok}%
@@ -28838,10 +37399,6 @@ you
\let\gls@assign@firstpl\@org@gls@assign@firstpl
\let\gls@assign@descplural\@org@gls@assign@descplural
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\SmallNewAcronymDef}
-% \begin{macrocode}
\renewcommand*{\SmallNewAcronymDef}{%
\edef\@do@newglossaryentry{%
\noexpand\newglossaryentry{\the\glslabeltok}%
@@ -28891,164 +37448,67 @@ you
\let\gls@assign@descplural\@org@gls@assign@descplural
\let\gls@assign@symbolplural\@org@gls@assign@symbolplural
}
-% \end{macrocode}
-%\end{macro}
-%
-% The following are kept for compatibility with versions before
-% 3.0:
-%\begin{macro}{\glsshortaccesskey}
-% \begin{macrocode}
\newcommand*{\glsshortaccesskey}{\glsshortkey access}%
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\glsshortpluralaccesskey}
-% \begin{macrocode}
\newcommand*{\glsshortpluralaccesskey}{\glsshortpluralkey access}%
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\glslongaccesskey}
-% \begin{macrocode}
\newcommand*{\glslongaccesskey}{\glslongkey access}%
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\glslongpluralaccesskey}
-% \begin{macrocode}
\newcommand*{\glslongpluralaccesskey}{\glslongpluralkey access}%
-% \end{macrocode}
-%\end{macro}
-%\section{Debugging Commands}
-%
-%\begin{macro}{\showglonameaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-%\changes{4.38}{2018-05-10}{bug fix: corrected field (was showing text access field)}
-% \begin{macrocode}
\newcommand*{\showglonameaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@access\endcsname
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\showglotextaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
\newcommand*{\showglotextaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@textaccess\endcsname
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\showglopluralaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
\newcommand*{\showglopluralaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@pluralaccess\endcsname
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\showglofirstaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
\newcommand*{\showglofirstaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@firstaccess\endcsname
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\showglofirstpluralaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
\newcommand*{\showglofirstpluralaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@firstpluralaccess\endcsname
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\showglosymbolaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
\newcommand*{\showglosymbolaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@symbolaccess\endcsname
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\showglosymbolpluralaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
\newcommand*{\showglosymbolpluralaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@symbolpluralaccess\endcsname
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\showglodescaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
\newcommand*{\showglodescaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@descaccess\endcsname
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\showglodescpluralaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
\newcommand*{\showglodescpluralaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@descpluralaccess\endcsname
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\showgloshortaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
\newcommand*{\showgloshortaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@shortaccess\endcsname
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\showgloshortpluralaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
\newcommand*{\showgloshortpluralaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@shortpluralaccess\endcsname
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\showglolongaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
\newcommand*{\showglolongaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@longaccess\endcsname
}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\showglolongpluralaccess}
-%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
-% \begin{macrocode}
\newcommand*{\showglolongpluralaccess}[1]{%
\expandafter\show\csname glo@\glsdetoklabel{#1}@longpluralaccess\endcsname
}
% \end{macrocode}
-%\end{macro}
%\iffalse
% \begin{macrocode}
-%</glossaries-accsupp.sty>
+%</glossaries-accsupp-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*glossaries-babel.sty>
+%<*glossaries-babel-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\chapter{Multi-Lingual Support}
-% Many thanks to everyone who contributed to the translations both
-% via email and on comp.text.tex.
-% Language support has now been split off into independent language
-% modules.
+% \subsection{Rollback v4.46 (glossaries-babel-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossaries-babel}[2021/11/01 v4.49 (NLCT)]
-% \end{macrocode}
-% Load \sty{tracklang} to obtain language settings.
-% \begin{macrocode}
+\ProvidesPackage{glossaries-babel}[2020/03/19 v4.46 (NLCT)]
\RequirePackage{tracklang}
\let\glsifusetranslator\@secondoftwo
-% \end{macrocode}
-% Check for tracked languages:
-% \begin{macrocode}
\AnyTrackedLanguages
{%
\ForEachTrackedDialect{\this@dialect}{%
@@ -29071,28 +37531,837 @@ you
% \end{macrocode}
%\iffalse
% \begin{macrocode}
-%</glossaries-babel.sty>
+%</glossaries-babel-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*glossaries-polyglossia.sty>
+%<*glossaries-compatible-207-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\section{Polyglossia Captions}
-% Language support has now been split off into independent language
-% modules.
+% \subsection{Rollback v4.46 (glossaries-compatible-207-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossaries-polyglossia}[2021/11/01 v4.49 (NLCT)]
+\ProvidesPackage{glossaries-compatible-207}[2020/03/19 v4.46 (NLCT)]
+\ifglsxindy
+ \renewcommand*\GlsAddXdyAttribute[1]{%
+ \edef\@xdyattributes{\@xdyattributes ^^J \string"#1\string"}%
+ \expandafter\toks@\expandafter{\@xdylocref}%
+ \edef\@xdylocref{\the\toks@ ^^J%
+ (markup-locref
+ :open \string"\string~n\string\setentrycounter
+ {\noexpand\glscounter}%
+ \expandafter\string\csname#1\endcsname
+ \expandafter\@gobble\string\{\string" ^^J
+ :close \string"\expandafter\@gobble\string\}\string" ^^J
+ :attr \string"#1\string")}}
+\fi
+\renewcommand*\GlsAddXdyCounters[1]{%
+ \GlossariesWarning{\string\GlsAddXdyCounters\space not available
+ in compatibility mode.}%
+}
+ \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}
+\ifglsxindy
+ \renewcommand*{\GlsAddXdyLocation}[2]{%
+ \edef\@xdyuserlocationdefs{%
+ \@xdyuserlocationdefs ^^J%
+ (define-location-class \string"#1\string"^^J\space\space
+ \space(#2))
+ }%
+ \edef\@xdyuserlocationnames{%
+ \@xdyuserlocationnames^^J\space\space\space
+ \string"#1\string"}%
+ }
+\fi
+\renewcommand{\@do@wrglossary}[1]{%
+\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
+ \protected@edef\@glslocref{\theglsentrycounter}%
+ \@gls@checkmkidxchars\@glslocref
+ \glossary[\csname glo@#1@type\endcsname]{%
+ (indexentry :tkey (\csname glo@#1@index\endcsname)
+ :locref \string"\@glslocref\string" %
+ :attr \string"\@glo@suffix\string" \@glo@range
+ )
+ }%
+\else
+ \@set@glo@numformat\@glo@numfmt\@gls@counter\@glsnumberformat
+ \glossary[\csname glo@#1@type\endcsname]{%
+ \string\glossaryentry{\csname glo@#1@index\endcsname
+ \@gls@encapchar\@glo@numfmt}{\theglsentrycounter}}%
+\fi
+}
+\def\@set@glo@numformat#1#2#3{%
+ \expandafter\@glo@check@mkidxrangechar#3\@nil
+ \protected@edef#1{%
+ \@glo@prefix setentrycounter[]{#2}%
+ \expandafter\string\csname\@glo@suffix\endcsname
+ }%
+ \@gls@checkmkidxchars#1%
+}
+\ifglsxindy
+ \def\writeist{%
+ \openout\glswrite=\istfilename
+ \write\glswrite{;; xindy style file created by the glossaries
+ package in compatible-2.07 mode}%
+ \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}%
+ \protected@edef\@gls@roman{\@roman{0\string"
+ \string"roman-numbers-lowercase\string" :sep \string"}}%
+ \@onelevel@sanitize\@gls@roman
+ \edef\@tmp{\string" \string"roman-numbers-lowercase\string"
+ :sep \string"}%
+ \@onelevel@sanitize\@tmp
+ \ifx\@tmp\@gls@roman
+ \write\glswrite{(define-location-class
+ \string"roman-page-numbers\string"^^J\space\space\space
+ (\string"roman-numbers-lowercase\string")
+ :min-range-length \@glsminrange)}%
+ \else
+ \write\glswrite{(define-location-class
+ \string"roman-page-numbers\string"^^J\space\space\space
+ (:sep "\@gls@roman")
+ :min-range-length \@glsminrange)}%
+ \fi
+ \write\glswrite{(define-location-class
+ \string"Roman-page-numbers\string"^^J\space\space\space
+ (\string"roman-numbers-uppercase\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"arabic-page-numbers\string"^^J\space\space\space
+ (\string"arabic-numbers\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"alpha-page-numbers\string"^^J\space\space\space
+ (\string"alpha\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"Alpha-page-numbers\string"^^J\space\space\space
+ (\string"ALPHA\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"Appendix-page-numbers\string"^^J\space\space\space
+ (\string"ALPHA\string"
+ :sep \string"\@glsAlphacompositor\string"
+ \string"arabic-numbers\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"arabic-section-numbers\string"^^J\space\space\space
+ (\string"arabic-numbers\string"
+ :sep \string"\glscompositor\string"
+ \string"arabic-numbers\string")
+ :min-range-length \@glsminrange)}%
+ \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")}%
+ \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\string~n\string\begin
+ {theglossary}\string\glossaryheader\string~n\string" ^^J\space
+ \space\space:close \string"\expandafter\@gobble
+ \string\%\string~n\string
+ \end{theglossary}\string\glossarypostamble
+ \string~n\string" ^^J\space\space\space
+ :tree)}%
+ \write\glswrite{(markup-letter-group-list
+ :sep \string"\string\glsgroupskip\string~n\string")}%
+ \write\glswrite{(markup-indexentry
+ :open \string"\string\relax \string\glsresetentrylist
+ \string~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\string~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}%
+ \noist}
+\else
+ \edef\@gls@actualchar{\string?}
+ \edef\@gls@encapchar{\string|}
+ \edef\@gls@levelchar{\string!}
+ \edef\@gls@quotechar{\string"}
+ \def\writeist{\relax
+ \openout\glswrite=\istfilename
+ \write\glswrite{\expandafter\@gobble\string\% makeindex style file
+ created by the glossaries package}
+ \write\glswrite{\expandafter\@gobble\string\% 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
+ \noist
+ }
+\fi
+\renewcommand*{\noist}{\let\writeist\relax}
% \end{macrocode}
-% Load \sty{tracklang} to obtain language settings.
+%\iffalse
% \begin{macrocode}
-\RequirePackage{tracklang}
-\let\glsifusetranslator\@secondoftwo
+%</glossaries-compatible-207-2020-03-19.sty>
% \end{macrocode}
-% Check for tracked languages:
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-compatible-307-2020-03-19.sty>
+% \end{macrocode}
+%\fi
+% \subsection{Rollback v4.46 (glossaries-compatible-307-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-compatible-307}[2020/03/19 v4.46 (NLCT)]
+\newcommand{\compatglossarystyle}[2]{%
+ \ifcsundef{@glscompstyle@#1}%
+ {%
+ \csdef{@glscompstyle@#1}{#2}%
+ }%
+ {%
+ \PackageError{glossaries}{Glossary compatibility style `#1' is already defined}{}%
+ }%
+}
+\compatglossarystyle{inline}{%
+ \renewcommand{\glossaryentryfield}[5]{%
+ \glsinlinedopostchild
+ \gls@inlinesep
+ \def\glo@desc{##3}%
+ \def\@no@post@desc{\nopostdesc}%
+ \glsentryitem{##1}\glsinlinenameformat{##1}{##2}%
+ \ifx\glo@desc\@no@post@desc
+ \glsinlineemptydescformat{##4}{##5}%
+ \else
+ \ifstrempty{##3}%
+ {\glsinlineemptydescformat{##4}{##5}}%
+ {\glsinlinedescformat{##3}{##4}{##5}}%
+ \fi
+ \ifglshaschildren{##1}%
+ {%
+ \glsresetsubentrycounter
+ \glsinlineparentchildseparator
+ \def\gls@inlinesubsep{}%
+ \def\gls@inlinepostchild{\glsinlinepostchild}%
+ }%
+ {}%
+ \def\gls@inlinesep{\glsinlineseparator}%
+ }%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \gls@inlinesubsep%
+ \glsinlinesubnameformat{##2}{##3}%
+ \glssubentryitem{##2}\glsinlinesubdescformat{##4}{##5}{##6}%
+ \def\gls@inlinesubsep{\glsinlinesubseparator}%
+ }%
+}
+\compatglossarystyle{list}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item[\glsentryitem{##1}\glstarget{##1}{##2}]
+ ##3\glspostdescription\space ##5}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6.}%
+}
+\compatglossarystyle{listgroup}{%
+ \csuse{@glscompstyle@list}%
+}%
+\compatglossarystyle{listhypergroup}{%
+ \csuse{@glscompstyle@list}%
+}%
+\compatglossarystyle{altlist}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item[\glsentryitem{##1}\glstarget{##1}{##2}]%
+ \mbox{}\par\nobreak\@afterheading
+ ##3\glspostdescription\space ##5}%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \par
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6}%
+}%
+\compatglossarystyle{altlistgroup}{%
+ \csuse{@glscompstyle@altlist}%
+}%
+\compatglossarystyle{altlisthypergroup}{%
+ \csuse{@glscompstyle@altlist}%
+}%
+\compatglossarystyle{listdotted}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glsentryitem{##1}\glstarget{##1}{##2}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##3}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{##3}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##4}%
+}%
+\compatglossarystyle{sublistdotted}{%
+ \csuse{@glscompstyle@listdotted}%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item[\glsentryitem{##1}\glstarget{##1}{##2}]}%
+}%
+\compatglossarystyle{long}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6\\}%
+}%
+\compatglossarystyle{longborder}{%
+ \csuse{@glscompstyle@long}%
+}%
+\compatglossarystyle{longheader}{%
+ \csuse{@glscompstyle@long}%
+}%
+\compatglossarystyle{longheaderborder}{%
+ \csuse{@glscompstyle@long}%
+}%
+\compatglossarystyle{long3col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##6\\}%
+}%
+\compatglossarystyle{long3colborder}{%
+ \csuse{@glscompstyle@long3col}%
+}%
+\compatglossarystyle{long3colheader}{%
+ \csuse{@glscompstyle@long3col}%
+}%
+\compatglossarystyle{long3colheaderborder}{%
+ \csuse{@glscompstyle@long3col}%
+}%
+\compatglossarystyle{long4col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##5 & ##6\\}%
+}%
+\compatglossarystyle{long4colheader}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{long4colborder}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{long4colheaderborder}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{altlong4col}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{altlong4colheader}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{altlong4colborder}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{altlong4colheaderborder}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{longragged}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5%
+ \tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6%
+ \tabularnewline}%
+}%
+\compatglossarystyle{longraggedborder}{%
+ \csuse{@glscompstyle@longragged}%
+}%
+\compatglossarystyle{longraggedheader}{%
+ \csuse{@glscompstyle@longragged}%
+}%
+\compatglossarystyle{longraggedheaderborder}{%
+ \csuse{@glscompstyle@longragged}%
+}%
+\compatglossarystyle{longragged3col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##6\tabularnewline}%
+}%
+\compatglossarystyle{longragged3colborder}{%
+ \csuse{@glscompstyle@longragged3col}%
+}%
+\compatglossarystyle{longragged3colheader}{%
+ \csuse{@glscompstyle@longragged3col}%
+}%
+\compatglossarystyle{longragged3colheaderborder}{%
+ \csuse{@glscompstyle@longragged3col}%
+}%
+\compatglossarystyle{altlongragged4col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##5 & ##6\tabularnewline}%
+}%
+\compatglossarystyle{altlongragged4colheader}{%
+ \csuse{@glscompstyle@altlong4col}%
+}%
+\compatglossarystyle{altlongragged4colborder}{%
+ \csuse{@glscompstyle@altlong4col}%
+}%
+\compatglossarystyle{altlongragged4colheaderborder}{%
+ \csuse{@glscompstyle@altlong4col}%
+}%
+\compatglossarystyle{index}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item\glsentryitem{##1}\textbf{\glstarget{##1}{##2}}%
+ \ifx\relax##4\relax
+ \else
+ \space(##4)%
+ \fi
+ \space ##3\glspostdescription \space ##5}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ \ifcase##1\relax
+ % level 0
+ \item
+ \or
+ % level 1
+ \subitem
+ \glssubentryitem{##2}%
+ \else
+ % all other levels
+ \subsubitem
+ \fi
+ \textbf{\glstarget{##2}{##3}}%
+ \ifx\relax##5\relax
+ \else
+ \space(##5)%
+ \fi
+ \space##4\glspostdescription\space ##6}%
+}%
+\compatglossarystyle{indexgroup}{%
+ \csuse{@glscompstyle@index}%
+}%
+\compatglossarystyle{indexhypergroup}{%
+ \csuse{@glscompstyle@index}%
+}%
+\compatglossarystyle{tree}{%
+ \renewcommand{\glossaryentryfield}[5]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\textbf{\glstarget{##1}{##2}}%
+ \ifx\relax##4\relax
+ \else
+ \space(##4)%
+ \fi
+ \space ##3\glspostdescription \space ##5\par}%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \textbf{\glstarget{##2}{##3}}%
+ \ifx\relax##5\relax
+ \else
+ \space(##5)%
+ \fi
+ \space##4\glspostdescription\space ##6\par}%
+}%
+\compatglossarystyle{treegroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{treehypergroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{treenoname}{%
+ \renewcommand{\glossaryentryfield}[5]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\textbf{\glstarget{##1}{##2}}%
+ \ifx\relax##4\relax
+ \else
+ \space(##4)%
+ \fi
+ \space ##3\glspostdescription \space ##5\par}%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstarget{##2}{\strut}%
+ ##4\glspostdescription\space ##6\par}%
+}%
+\compatglossarystyle{treenonamegroup}{%
+ \csuse{@glscompstyle@treenoname}%
+}%
+\compatglossarystyle{treenonamehypergroup}{%
+ \csuse{@glscompstyle@treenoname}%
+}%
+\compatglossarystyle{alttree}{%
+ \renewcommand{\glossaryentryfield}[5]{%
+ \ifnum\@gls@prevlevel=0\relax
+ \else
+ \settowidth{\glstreeindent}{\textbf{\@glswidestname\space}}%
+ \hangindent\glstreeindent
+ \parindent\glstreeindent
+ \fi
+ \makebox[0pt][r]{\makebox[\glstreeindent][l]{%
+ \glsentryitem{##1}\textbf{\glstarget{##1}{##2}}}}%
+ \ifx\relax##4\relax
+ \else
+ (##4)\space
+ \fi
+ ##3\glspostdescription \space ##5\par
+ \def\@gls@prevlevel{0}%
+ }%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \ifnum\@gls@prevlevel=##1\relax
+ \else
+ \@ifundefined{@glswidestname\romannumeral##1}{%
+ \settowidth{\gls@tmplen}{\textbf{\@glswidestname\space}}}{%
+ \settowidth{\gls@tmplen}{\textbf{%
+ \csname @glswidestname\romannumeral##1\endcsname\space}}}%
+ \ifnum\@gls@prevlevel<##1\relax
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+ \@ifundefined{@glswidestname\romannumeral\@gls@prevlevel}{%
+ \settowidth{\glstreeindent}{\textbf{%
+ \@glswidestname\space}}}{%
+ \settowidth{\glstreeindent}{\textbf{%
+ \csname @glswidestname\romannumeral\@gls@prevlevel
+ \endcsname\space}}}%
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+ \hangindent\glstreeindent
+ \makebox[0pt][r]{\makebox[\gls@tmplen][l]{%
+ \textbf{\glstarget{##2}{##3}}}}%
+ \ifx##5\relax\relax
+ \else
+ (##5)\space
+ \fi
+ ##4\glspostdescription\space ##6\par
+ \def\@gls@prevlevel{##1}%
+ }%
+}%
+\compatglossarystyle{alttreegroup}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+\compatglossarystyle{alttreehypergroup}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+\compatglossarystyle{mcolindex}{%
+ \csuse{@glscompstyle@index}%
+}%
+\compatglossarystyle{mcolindexgroup}{%
+ \csuse{@glscompstyle@index}%
+}%
+\compatglossarystyle{mcolindexhypergroup}{%
+ \csuse{@glscompstyle@index}%
+}%
+\compatglossarystyle{mcoltree}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{mcolindextreegroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{mcolindextreehypergroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{mcoltreenoname}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{mcoltreenonamegroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{mcoltreenonamehypergroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{mcolalttree}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+\compatglossarystyle{mcolalttreegroup}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+\compatglossarystyle{mcolalttreehypergroup}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+
+\compatglossarystyle{superragged}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5%
+ \tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6%
+ \tabularnewline}%
+}%
+\compatglossarystyle{superraggedborder}{%
+ \csuse{@glscompstyle@superragged}%
+}%
+\compatglossarystyle{superraggedheader}{%
+ \csuse{@glscompstyle@superragged}%
+}%
+\compatglossarystyle{superraggedheaderborder}{%
+ \csuse{@glscompstyle@superragged}%
+}%
+\compatglossarystyle{superragged3col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##6\tabularnewline}%
+}%
+\compatglossarystyle{superragged3colborder}{%
+ \csuse{@glscompstyle@superragged3col}%
+}%
+\compatglossarystyle{superragged3colheader}{%
+ \csuse{@glscompstyle@superragged3col}%
+}%
+\compatglossarystyle{superragged3colheaderborder}{%
+ \csuse{@glscompstyle@superragged3col}%
+}%
+\compatglossarystyle{altsuperragged4col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##5 & ##6\tabularnewline}%
+}%
+\compatglossarystyle{altsuperragged4colheader}{%
+ \csuse{@glscompstyle@altsuperragged4col}%
+}%
+\compatglossarystyle{altsuperragged4colborder}{%
+ \csuse{@glscompstyle@altsuperragged4col}%
+}%
+\compatglossarystyle{altsuperragged4colheaderborder}{%
+ \csuse{@glscompstyle@altsuperragged4col}%
+}%
+\compatglossarystyle{super}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6\\}%
+}%
+\compatglossarystyle{superborder}{%
+ \csuse{@glscompstyle@super}%
+}%
+\compatglossarystyle{superheader}{%
+ \csuse{@glscompstyle@super}%
+}%
+\compatglossarystyle{superheaderborder}{%
+ \csuse{@glscompstyle@super}%
+}%
+\compatglossarystyle{super3col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##6\\}%
+}%
+\compatglossarystyle{super3colborder}{%
+ \csuse{@glscompstyle@super3col}%
+}%
+\compatglossarystyle{super3colheader}{%
+ \csuse{@glscompstyle@super3col}%
+}%
+\compatglossarystyle{super3colheaderborder}{%
+ \csuse{@glscompstyle@super3col}%
+}%
+\compatglossarystyle{super4col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##5 & ##6\\}%
+}%
+\compatglossarystyle{super4colheader}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+\compatglossarystyle{super4colborder}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+\compatglossarystyle{super4colheaderborder}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+\compatglossarystyle{altsuper4col}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+\compatglossarystyle{altsuper4colheader}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+\compatglossarystyle{altsuper4colborder}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+\compatglossarystyle{altsuper4colheaderborder}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-compatible-307-2020-03-19.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
% \begin{macrocode}
+%<*glossaries-polyglossia-2020-03-19.sty>
+% \end{macrocode}
+%\fi
+% \subsection{Rollback v4.46 (glossaries-polyglossia-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-polyglossia}[2020/03/19 v4.46 (NLCT)]
+\RequirePackage{tracklang}
+\let\glsifusetranslator\@secondoftwo
\AnyTrackedLanguages
{%
\ForEachTrackedDialect{\this@dialect}{%
@@ -29115,1700 +38384,1840 @@ you
% \end{macrocode}
%\iffalse
% \begin{macrocode}
-%</glossaries-polyglossia.sty>
+%</glossaries-polyglossia-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*example-glossaries-acronym-desc.tex>
+%<*glossaries-prefix-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\iffalse
-% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test acronym entries with descriptions.
-%COMMENT
-
-\newacronym[type=\glsdefaulttype,description={fringilla a, euismod sodales,
- sollicitudin vel, wisi}]{ndl}{NDL}{nam dui ligula}
-
-\newacronym[type=\glsdefaulttype,description={non justo}]{mal}{MAL}{morbi auctor lorem}
-
-\newacronym[type=\glsdefaulttype,description={pretium at, lobortis vitae, ultricies et,
-tellus}]{nll}{NLL}{name lacus libero}
-
-\newacronym[type=\glsdefaulttype,description={tortor sed accumsan bibendum, erat ligula
-aliquet magna, vitae ornare odio metus a mi}]{da}{DA}{donec aliquet}
-
-\newacronym[type=\glsdefaulttype,description={et nisl hendrerit mollis}]{mao}{MAO}{morbi ac orci}
-
-\newacronym[type=\glsdefaulttype,description={cras nec ante}]{sum}{SUM}{suspendisse ut massa}
-
-\newacronym[type=\glsdefaulttype,description={cum sociis natoque penatibus et magnis dis
-parturient montes, nascetur ridiculus mus}]{pan}{PAN}{pellentesque a nulla}
-
-\newacronym[type=\glsdefaulttype,description={nulla ullamcorper vestibulum
-turpis}]{atu}{ATU}{aliquam tincidunt urna}
-
-\newacronym[type=\glsdefaulttype,description={nulla malesuada porttitor diam}]%
- {pclm}{PCLM}{pellentesque cursus luctus mauris}
-
-% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
-%</example-glossaries-acronym-desc.tex>
-% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
-%<*example-glossaries-acronym.tex>
-% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test acronym entries
-%COMMENT
-
-\newacronym[type=\glsdefaulttype]{lid}{LID}{lorem ipsum dolor}
-
-\newacronym[type=\glsdefaulttype]{stc}{STC}{sit amet consectetuer}
-
-\newacronym[type=\glsdefaulttype]{aeu}{AEU}{adipiscing elit ut}
-
-\newacronym[type=\glsdefaulttype]{pev}{PEV}{purus elit vestibulum}
-
-\newacronym[type=\glsdefaulttype]{upa}{UPA}{ut placerat ac}
-
-\newacronym[type=\glsdefaulttype]{avf}{AVF}{adipiscing vitae felis}
-
-\newacronym[type=\glsdefaulttype]{cdg}{CDG}{curabitur dictum gravida}
-
-\newacronym[type=\glsdefaulttype]{mna}{MNA}{mauris nam arcu}
-
-\newacronym[type=\glsdefaulttype]{lne}{LNE}{libero nonummy eget}
-
-\newacronym[type=\glsdefaulttype]{civ}{CIV}{consectetuer id vulputate}
-
-\newacronym[type=\glsdefaulttype]{amd}{AMD}{a magna donec}
-
-\newacronym[type=\glsdefaulttype]{vae}{VAE}{vehicula augue eu}
-
-\newacronym[type=\glsdefaulttype]{nph}{NPH}{neque pellentesque habitant}
-
-\newacronym[type=\glsdefaulttype]{mts}{MTS}{morbi tristique senectus}
-
-\newacronym[type=\glsdefaulttype]{ene}{ENE}{et netus et}
-
-\newacronym[type=\glsdefaulttype]{mfa}{MFA}{malesuada fames ac}
-
-\newacronym[type=\glsdefaulttype]{tem}{TEM}{turpis egestas mauris}
-
-\newacronym[type=\glsdefaulttype]{ulc}{ULC}{ut leo cras}
-
-\newacronym[type=\glsdefaulttype]{vmr}{VMR}{viverra metus rhoncus}
-
-\newacronym[type=\glsdefaulttype]{sne}{SNE}{sem nulla et}
-
-\newacronym[type=\glsdefaulttype]{lvu}{LVU}{lectus vestibulum urna}
-
-\newacronym[type=\glsdefaulttype]{fup}{FUP}{fringilla ultrices phasellus}
-
-\newacronym[type=\glsdefaulttype]{ets}{ETS}{eu tellus sit}
-
-\newacronym[type=\glsdefaulttype]{atg}{ATG}{amet tortor gravida}
-
-\newacronym[type=\glsdefaulttype]{pis}{PIS}{placerat integer sapien}
-
-\newacronym[type=\glsdefaulttype]{eii}{EII}{est iaculis in}
-
-\newacronym[type=\glsdefaulttype]{pqv}{PQV}{pretium quis viverra}
-
-\newacronym[type=\glsdefaulttype]{anp}{ANP}{ac nunc praesent}
-
-\newacronym[type=\glsdefaulttype]{esv}{ESV}{eget sem vel}
-
-\newacronym[type=\glsdefaulttype]{lub}{LUB}{leo ultrices bibendum}
-
-\newacronym[type=\glsdefaulttype]{afm}{AFM}{aenean faucibus morbi}
-
-\newacronym[type=\glsdefaulttype]{dnm}{DNM}{dolor nulla malesuada}
-
-\newacronym[type=\glsdefaulttype]{epa}{EPA}{eu pulvinar at}
-
-\newacronym[type=\glsdefaulttype]{man}{MAC}{mollis ac nulla}
-
-\newacronym[type=\glsdefaulttype]{cas}{CAS}{curabitur auctor semper}
-
-\newacronym[type=\glsdefaulttype]{ndv}{NDV}{nulla donec varius}
-
-\newacronym[type=\glsdefaulttype]{oer}{OER}{orci eget risus}
-
-\newacronym[type=\glsdefaulttype]{dnmc}{DNMC}{duis nibh mi congue}
-
-\newacronym[type=\glsdefaulttype]{cea}{CEA}{congue eu accumsan}
-
-\newacronym[type=\glsdefaulttype]{esq}{ESQ}{eleifend sagittis quis}
-
-\newacronym[type=\glsdefaulttype]{dia}{DIA}{duis eget orci}
-
-\newacronym[type=\glsdefaulttype]{sao}{SAO}{sit amet orci}
-
-\newacronym[type=\glsdefaulttype]{drn}{DRN}{dignissim rutrum nam}
-% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
-%</example-glossaries-acronym.tex>
-% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
-%<*example-glossaries-acronyms-lang.tex>
-% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test acronym entries where some are provided with
-% "translations", which are stored in the user1 key.
-%COMMENT
-
-\newacronym[type=\glsdefaulttype,user1={love itself}]{li}{LI}{lorem ipsum}
-
-\newacronym[type=\glsdefaulttype,user1={produces none}]{np}{NP}{nulla pariatur}
-
-\newacronym[type=\glsdefaulttype,user1={blame belongs}]{sic}{SIC}{sunt in culpa}
-
-\newacronym[type=\glsdefaulttype,user1={blinded by
-desire}]{esoc}{ESOC}{excepturi sint obcaecati cupiditat}
-
-\newacronym[type=\glsdefaulttype]{nmruu}{NMRUU}{nulla malesuada
-risus ut urna}
-
-\newacronym[type=\glsdefaulttype]{di}{DI}{duis iaculi}
-% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
-%</example-glossaries-acronyms-lang.tex>
-% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
-%<*example-glossaries-brief.tex>
-% \end{macrocode}
-%\fi
-%\iffalse
+% \subsection{Rollback v4.46 (glossaries-prefix-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test glossary entries with brief descriptions.
-%COMMENT
-
-\newglossaryentry{lorem}{name={lorem},description={ipsum}}
-
-\newglossaryentry{dolor}{name={dolor},description={sit}}
-
-\newglossaryentry{amet}{name={amet},description={consectetuer}}
-
-\newglossaryentry{adipiscing}{name={adipiscing},description={elit}}
-
-\newglossaryentry{ut}{name={ut},description={purus}}
-
-\newglossaryentry{elit}{name={elit},description={vestibulum}}
-
-\newglossaryentry{placerat}{name={placerat},description={ac}}
-
-\newglossaryentry{vitae}{name={vitae},description={felis}}
-
-\newglossaryentry{curabitur}{name={curabitur},description={gravida}}
-
-\newglossaryentry{mauris}{name={mauris},description={nam}}
-
-\newglossaryentry{arcu}{name={arcu},description={libero}}
-
-\newglossaryentry{nonummy}{name={nonummy},description={eget}}
-
-\newglossaryentry{consectetuer}{name={consectetuer},description={id}}
-
-\newglossaryentry{vulputate}{name={vulputate},description={a magna}}
-
-\newglossaryentry{donec}{name={donec},description={vehicula}}
-
-\newglossaryentry{augue}{name={augue},description={eu neque}}
-
-\newglossaryentry{pellentesque}{name={pellentesque},description={habitant}}
-
-\newglossaryentry{morbi}{name={morbi},description={tristique}}
-
-\newglossaryentry{senectus}{name={senectus},description={et netus}}
-
-\newglossaryentry{et}{name={et},description={malesuada}}
-
-\newglossaryentry{fames}{name={fames},description={ac}}
-
-\newglossaryentry{turpis}{name={turpis},description={egestas}}
-
-\newglossaryentry{leo}{name={leo},description={cras}}
-
-\newglossaryentry{viverra}{name={viverra},description={metus}}
-
-\newglossaryentry{rhoncus}{name={rhoncus},description={sem}}
-
-\newglossaryentry{nulla}{name={nulla},description={et}}
-
-\newglossaryentry{lectus}{name={lectus},description={vestibulum}}
-
-\newglossaryentry{urna}{name={urna},description={fringilla}}
-
-\newglossaryentry{ultrices}{name={ultrices},description={phasellus}}
-
-\newglossaryentry{eu}{name={eu},description={tellus}}
-
-\newglossaryentry{sit}{name={sit},description={amet}}
-
-\newglossaryentry{tortor}{name={tortor},description={gravida}}
-
-\newglossaryentry{integer}{name={integer},description={sapien}}
-
-\newglossaryentry{est}{name={est},description={iaculis}}
-
-\newglossaryentry{in}{name={in},description={pretium}}
-
-\newglossaryentry{quis}{name={quis},description={viverra}}
-
-\newglossaryentry{ac}{name={ac},description={nunc}}
-
-\newglossaryentry{praesent}{name={praesent},description={eget}}
-
-\newglossaryentry{sem}{name={sem},description={vel leo}}
-
-\newglossaryentry{bibendum}{name={bibendum},description={ultrices}}
-
-\newglossaryentry{aenean}{name={aenean},description={faucibus}}
-
-\newglossaryentry{malesuada}{name={malesuada},description={eu}}
-
-\newglossaryentry{pulvinar}{name={pulvinar},description={at}}
-
-\newglossaryentry{mollis}{name={mollis},description={ac nulla}}
-
-\newglossaryentry{auctor}{name={auctor},description={semper}}
-
-\newglossaryentry{varius}{name={varius},description={orci}}
-
-\newglossaryentry{eget}{name={eget},description={risus}}
-
-\newglossaryentry{duis}{name={duis},description={nibh}}
-
-\newglossaryentry{mi}{name={mi},description={congue}}
-
-\newglossaryentry{accumsan}{name={accumsan},description={eleifend}}
-
-\newglossaryentry{sagittis}{name={sagittis},description={quis}}
-
-\newglossaryentry{diam}{name={diam},description={duis}}
-
-\newglossaryentry{orci}{name={orci},description={dignissim}}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-prefix}[2020/03/19 v4.46 (NLCT)]
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{glossaries}}
+\ProcessOptions
+\RequirePackage{glossaries}[=v4.46]
+\define@key{glossentry}{prefixfirst}{\def\@glo@entryprefixfirst{#1}}%
+\define@key{glossentry}{prefixfirstplural}{\def\@glo@entryprefixfirstplural{#1}}%
+\define@key{glossentry}{prefix}{\def\@glo@entryprefix{#1}}%
+\define@key{glossentry}{prefixplural}{\def\@glo@entryprefixplural{#1}}%
+\appto\@gls@keymap{,%
+ {prefixfirst}{prefixfirst},%
+ {prefixfirstplural}{prefixfirstplural},%
+ {prefix}{prefix},%
+ {prefixplural}{prefixplural}%
+ }
+\appto\@newglossaryentryprehook{%
+ \def\@glo@entryprefix{}%
+ \def\@glo@entryprefixplural{}%
+ \let\@glo@entryprefixfirst\@gls@default@value
+ \let\@glo@entryprefixfirstplural\@gls@default@value
+}
+\appto\@newglossaryentryposthook{%
+ \gls@assign@field{}{\@glo@label}{prefix}{\@glo@entryprefix}%
+ \gls@assign@field{}{\@glo@label}{prefixplural}{\@glo@entryprefixplural}%
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @prefix\endcsname}{\@glo@label}{prefixfirst}%
+ {\@glo@entryprefixfirst}%
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @prefixplural\endcsname}{\@glo@label}%
+ {prefixfirstplural}{\@glo@entryprefixfirstplural}%
+}
+\newcommand*{\glsentryprefixfirst}[1]{\csuse{glo@\glsdetoklabel{#1}@prefixfirst}}
+\newcommand*{\glsentryprefixfirstplural}[1]{%
+ \csuse{glo@\glsdetoklabel{#1}@prefixfirstplural}}
+\newcommand*{\glsentryprefix}[1]{\csuse{glo@\glsdetoklabel{#1}@prefix}}
+\newcommand*{\glsentryprefixplural}[1]{\csuse{glo@\glsdetoklabel{#1}@prefixplural}}
+\newrobustcmd*{\Glsentryprefixfirst}[1]{%
+ \protected@edef\@glo@text{\csname glo@\glsdetoklabel{#1}@prefixfirst\endcsname}%
+ \xmakefirstuc\@glo@text
+}
+\newrobustcmd*{\Glsentryprefixfirstplural}[1]{%
+ \protected@edef\@glo@text{\csname glo@\glsdetoklabel{#1}@prefixfirstplural\endcsname}%
+ \xmakefirstuc\@glo@text
+}
+\newrobustcmd*{\Glsentryprefix}[1]{%
+ \protected@edef\@glo@text{\csname glo@\glsdetoklabel{#1}@prefix\endcsname}%
+ \xmakefirstuc\@glo@text
+}
+\newrobustcmd*{\Glsentryprefixplural}[1]{%
+ \protected@edef\@glo@text{\csname glo@\glsdetoklabel{#1}@prefixplural\endcsname}%
+ \xmakefirstuc\@glo@text
+}
+\newcommand*{\ifglshasprefix}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@prefix}%
+ {#3}%
+ {#2}%
+}
+\newcommand*{\ifglshasprefixplural}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@prefixplural}%
+ {#3}%
+ {#2}%
+}
+\newcommand*{\ifglshasprefixfirst}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@prefixfirst}%
+ {#3}%
+ {#2}%
+}
+\newcommand*{\ifglshasprefixfirstplural}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@prefixfirstplural}%
+ {#3}%
+ {#2}%
+}
+\providecommand{\@glsprefix@record@hook}[2]{%
+ \ifdef\@glsxtr@record
+ {\@glsxtr@record{#1}{#2}{glslink}}%
+ {}%
+}
+\newcommand{\glsprefixsep}{}
+\newrobustcmd{\pgls}{\@gls@hyp@opt\@pgls}
+\newcommand*{\@pgls}[2][]{%
+ \new@ifnextchar[%
+ {\@pgls@{#1}{#2}}%
+ {\@pgls@{#1}{#2}[]}%
+}
+\def\@pgls@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefix{#2}{\glsentryprefix{#2}\glsprefixsep}{}%
+ }%
+ {%
+ \ifglshasprefixfirst{#2}{\glsentryprefixfirst{#2}\glsprefixsep}{}%
+ }%
+ \@gls@{#1}{#2}[#3]%
+ }%
+}
+\newrobustcmd{\pglspl}{\@gls@hyp@opt\@pglspl}
+\newcommand*{\@pglspl}[2][]{%
+ \new@ifnextchar[%
+ {\@pglspl@{#1}{#2}}%
+ {\@pglspl@{#1}{#2}[]}%
+}
+\def\@pglspl@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefixplural{#2}{\glsentryprefixplural{#2}\glsprefixsep}{}%
+ }%
+ {%
+ \ifglshasprefixfirstplural{#2}%
+ {\glsentryprefixfirstplural{#2}\glsprefixsep}{}%
+ }%
+ \@glspl@{#1}{#2}[#3]%
+ }%
+}
+\newrobustcmd{\Pgls}{\@gls@hyp@opt\@Pgls}
+\newcommand*{\@Pgls}[2][]{%
+ \new@ifnextchar[%
+ {\@Pgls@{#1}{#2}}%
+ {\@Pgls@{#1}{#2}[]}%
+}
+\def\@Pgls@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefix{#2}%
+ {%
+ \Glsentryprefix{#2}%
+ \glsprefixsep
+ \@gls@{#1}{#2}[#3]%
+ }%
+ {\@Gls@{#1}{#2}[#3]}%
+ }%
+ {%
+ \ifglshasprefixfirst{#2}%
+ {%
+ \Glsentryprefixfirst{#2}%
+ \glsprefixsep
+ \@gls@{#1}{#2}[#3]%
+ }%
+ {\@Gls@{#1}{#2}[#3]}%
+ }%
+ }%
+}
+\newrobustcmd{\Pglspl}{\@gls@hyp@opt\@Pglspl}
+\newcommand*{\@Pglspl}[2][]{%
+ \new@ifnextchar[%
+ {\@Pglspl@{#1}{#2}}%
+ {\@Pglspl@{#1}{#2}[]}%
+}
+\def\@Pglspl@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefixplural{#2}%
+ {%
+ \Glsentryprefixplural{#2}%
+ \glsprefixsep
+ \@glspl@{#1}{#2}[#3]%
+ }%
+ {\@Glspl@{#1}{#2}[#3]}%
+ }%
+ {%
+ \ifglshasprefixfirstplural{#2}%
+ {%
+ \Glsentryprefixfirstplural{#2}%
+ \glsprefixsep
+ \@glspl@{#1}{#2}[#3]%
+ }%
+ {\@Glspl@{#1}{#2}[#3]}%
+ }%
+ }%
+}
+\newrobustcmd{\PGLS}{\@gls@hyp@opt\@PGLS}
+\newcommand*{\@PGLS}[2][]{%
+ \new@ifnextchar[%
+ {\@PGLS@{#1}{#2}}%
+ {\@PGLS@{#1}{#2}[]}%
+}
+\def\@PGLS@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefix{#2}%
+ {\mfirstucMakeUppercase{\glsentryprefix{#2}\glsprefixsep}}{}%
+ }%
+ {%
+ \ifglshasprefixfirst{#2}%
+ {\mfirstucMakeUppercase{\glsentryprefixfirst{#2}\glsprefixsep}}{}%
+ }%
+ \@GLS@{#1}{#2}[#3]%
+ }%
+}
+\newrobustcmd{\PGLSpl}{\@gls@hyp@opt\@PGLSpl}
+\newcommand*{\@PGLSpl}[2][]{%
+ \new@ifnextchar[%
+ {\@PGLSpl@{#1}{#2}}%
+ {\@PGLSpl@{#1}{#2}[]}%
+}
+\def\@PGLSpl@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefixplural{#2}%
+ {\mfirstucMakeUppercase{\glsentryprefixplural{#2}\glsprefixsep}}{}%
+ }%
+ {%
+ \ifglshasprefixfirstplural{#2}%
+ {\mfirstucMakeUppercase{\glsentryprefixfirstplural{#2}\glsprefixsep}}{}%
+ }%
+ \@GLSpl@{#1}{#2}[#3]%
+ }%
+}
% \end{macrocode}
-%\fi
%\iffalse
% \begin{macrocode}
-%</example-glossaries-brief.tex>
+%</glossaries-prefix-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*example-glossaries-childmultipar.tex>
+%<*glossary-hypernav-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\iffalse
+%\subsection{Rollback v4.46 (glossary-hypernav-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle.
-% These are test glossary entries with child entries that have
-% multi-paragraph descriptions. One parent entry also has a
-% multi-paragraph description. Some entries have an associated
-% image file (stored in user1). The referenced image files are
-% provided by the mwe package.
-%COMMENT
-
-\newglossaryentry{hiersedmattis}{name={sed mattis},user1={example-image},
- description={Erat sit amet dolor sit amet, consectetuer adipiscing elit. Ut purus
-elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
-dictum gravida mauris. Ut pellentesque augue sed urna. Vestibulum
-diam eros, fringilla et, consectetuer eu, nonummy id, sapien. Nullam
-at lectus. In sagittis ultrices mauris. Curabitur malesuada erat sit
-amet massa. Fusce blandit. Aliquam erat volutpat.}}
-
-
-\longnewglossaryentry{hierloremi-ii}
-{name={lorem 1--2},parent={hiersedmattis}}%
-{%
-Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
-vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
-dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer
-id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque
-habitant morbi tristique senectus et netus et malesuada fames ac
-turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla
-et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
-sit amet tortor gravida placerat. Integer sapien est, iaculis in,
-pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices
-bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar
-at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius
-orci eget risus. Duis nibh mi, congue eu, accumsan eleifend,
-sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
-
-Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel,
-wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at,
-lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed
-accumsan bibendum, erat ligula aliquet magna, vitae ornare odio
-metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut
-massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque
-penatibus et magnis dis parturient montes, nascetur ridiculus mus.
-Aliquam tincidunt urna. Nulla ullamcorper vestibulum turpis.
-Pellentesque cursus luctus mauris.%
+\ProvidesPackage{glossary-hypernav}[2020/03/19 v4.46 (NLCT)]
+\newcommand*{\glsnavhyperlink}[3][\@glo@type]{%
+ \edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}%
+ \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}}
+\newcommand*{\glsnavhyperlinkname}[2]{glsn:#1@#2}
+\newcommand*{\glsnavhypertarget}[3][\@glo@type]{%
+ \@glsnavhypertarget{#1}{#2}{#3}%
}
-
-\longnewglossaryentry{hierloremiii-iv}
-{name={lorem 3--4},parent={hiersedmattis},user1={example-image}}%
-{%
-Nulla malesuada porttitor diam. Donec felis erat, congue non,
-volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum
-felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper
-elit. Proin fermentum massa ac quam. Sed diam turpis, molestie
-vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum
-ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit
-ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
-nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer
-non enim. Praesent euismod nunc eu purus. Donec bibendum quam in
-tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate
-metus eu enim. Vestibulum pellentesque felis eu massa.
-
-Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo
-vitae lacus tincidunt ultrices. Lorem ipsum dolor sit amet,
-consectetuer adipiscing elit. In hac habitasse platea dictumst.
-Integer tempus convallis augue. Etiam facilisis. Nunc elementum
-fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida
-sollicitudin, felis odio placerat quam, ac pulvinar elit purus eget
-enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus
-quis tortor vitae risus porta vehicula.%
+\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
}
-
-\longnewglossaryentry{hierloremv-vi}
-{name={lorem 5--6},parent={hiersedmattis}}%
-{%
-Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla
-a faucibus semper, leo velit ultricies tellus, ac venenatis arcu
-wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis
-sagittis posuere, turpis lacus congue quam, in hendrerit risus eros
-eget felis. Maecenas eget erat in sapien mattis porttitor.
-Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo
-facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus
-sagittis dui, et vehicula libero dui cursus dui. Mauris tempor
-ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras
-nulla. Nulla egestas. Curabitur a leo. Quisque egestas wisi eget
-nunc. Nam feugiat lacus vel est. Curabitur consectetuer.%
-
-Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit
-amet, laoreet vitae, arcu. Aenean faucibus pede eu ante. Praesent
-enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus
-eros, malesuada sit amet, fermentum eu, sodales cursus, magna. Donec
-eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem
-egestas dui, et convallis elit erat sed nulla. Donec luctus.
-Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies
-non, pharetra in, velit. Integer arcu est, nonummy in, fermentum
-faucibus, egestas vel, odio.%
+\let\gls@hypergrouprerun\relax
+\AtEndDocument{\gls@hypergrouprerun}
+\newcommand*{\@gls@hypergroup}[2]{%
+\@ifundefined{@gls@hypergrouplist@#1}{%
+ \expandafter\xdef\csname @gls@hypergrouplist@#1\endcsname{#2}%
+}{%
+ \expandafter\let\expandafter\@gls@tmp
+ \csname @gls@hypergrouplist@#1\endcsname
+ \expandafter\xdef\csname @gls@hypergrouplist@#1\endcsname{%
+ \@gls@tmp,#2}%
+}%
}
-
-\longnewglossaryentry{hiergravida}{name={gravida}}
-{Malesuada libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
-vehicula augue eu neque. Pellentesque habitant morbi tristique
-senectus et netus et malesuada fames ac turpis egestas. Mauris ut
-leo.
-
-Morbi ultrices rutrum lorem. Nam elementum ullamcorper
-leo. Morbi dui. Aliquam sagittis. Nunc placerat. Pellentesque
-tristique sodales est. Maecenas imperdiet lacinia velit. Cras non
-urna. Morbi eros pede, suscipit ac, varius vel, egestas non, eros.}
-
-\longnewglossaryentry{hierloremvii-viii}
-{name={lorem 7--8},parent={hiergravida},user1={example-image-b}}%
-{%
-Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio.
-Sed vehicula hendrerit sem. Duis non odio. Morbi ut dui. Sed
-accumsan risus eget odio. In hac habitasse platea dictumst.
-Pellentesque non elit. Fusce sed justo eu urna porta tincidunt.
-Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat.
-Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc
-dui lobortis purus, quis congue purus metus ultricies tellus. Proin
-et quam. Class aptent taciti sociosqu ad litora torquent per conubia
-nostra, per inceptos hymenaeos. Praesent sapien turpis, fermentum
-vel, eleifend faucibus, vehicula eu, lacus.
-
-Pellentesque habitant morbi tristique senectus et netus et malesuada
-fames ac turpis egestas. Donec odio elit, dictum in, hendrerit sit
-amet, egestas sed, leo. Praesent feugiat sapien aliquet odio.
-Integer vitae justo. Aliquam vestibulum fringilla lorem. Sed neque
-lectus, consectetuer at, consectetuer sed, eleifend ac, lectus.
-Nulla facilisi. Pellentesque eget lectus. Proin eu metus. Sed
-porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus.
-Ut mi mi, lacinia sit amet, placerat et, mollis vitae, dui. Sed ante
-tellus, tristique ut, iaculis eu, malesuada ac, dui. Mauris nibh
-leo, facilisis non, adipiscing quis, ultrices a, dui.%
+\newcommand*{\glsnavigation}{%
+ \def\@gls@between{}%
+ \ifcsundef{@gls@hypergrouplist@\@glo@type}%
+ {%
+ \def\@gls@list{}%
+ }%
+ {%
+ \expandafter\let\expandafter\@gls@list
+ \csname @gls@hypergrouplist@\@glo@type\endcsname
+ }%
+ \@for\@gls@tmp:=\@gls@list\do{%
+ \@gls@between
+ \@gls@getgrouptitle{\@gls@tmp}{\@gls@grptitle}%
+ \glsnavhyperlink{\@gls@tmp}{\@gls@grptitle}%
+ \let\@gls@between\glshypernavsep
+ }%
}
-
-\longnewglossaryentry{hierloremix-x}
-{name={lorem 9--10},parent={hiergravida},user1={example-image-c}}%
-{%
-Morbi luctus, wisi viverra faucibus pretium, nibh est placerat odio,
-nec commodo wisi enim eget quam. Quisque libero justo, consectetuer
-a, feugiat vitae, porttitor eu, libero. Suspendisse sed mauris
-vitae elit sollicitudin malesuada. Maecenas ultricies eros sit amet
-ante. Ut venenatis velit. Maecenas sed mi eget dui varius euismod.
-Phasellus aliquet volutpat odio. Vestibulum ante ipsum primis in
-faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque
-sit amet pede ac sem eleifend consectetuer. Nullam elementum, urna
-vel imperdiet sodales, elit ipsum pharetra ligula, ac pretium ante
-justo a nulla. Curabitur tristique arcu eu metus. Vestibulum lectus.
-Proin mauris. Proin eu nunc eu urna hendrerit faucibus. Aliquam
-auctor, pede consequat laoreet varius, eros tellus scelerisque quam,
-pellentesque hendrerit ipsum dolor sed augue. Nulla nec lacus.
-
-Suspendisse vitae elit. Aliquam arcu neque, ornare in, ullamcorper
-quis, commodo eu, libero. Fusce sagittis erat at erat tristique
-mollis. Maecenas sapien libero, molestie et, lobortis in, sodales
-eget, dui. Morbi ultrices rutrum lorem. Nam elementum ullamcorper
-leo. Morbi dui. Aliquam sagittis. Nunc placerat. Pellentesque
-tristique sodales est. Maecenas imperdiet lacinia velit. Cras non
-urna. Morbi eros pede, suscipit ac, varius vel, egestas non, eros.
-Praesent malesuada, diam id pretium elementum, eros sem dictum
-tortor, vel consectetuer odio sem sed wisi.%
+\newcommand*{\glshypernavsep}{\space\textbar\space}
+\newcommand*{\glssymbolnav}{%
+ \glsnavhyperlink{glssymbols}{\glsgetgrouptitle{glssymbols}}%
+ \glshypernavsep
+ \glsnavhyperlink{glsnumbers}{\glsgetgrouptitle{glsnumbers}}%
+ \glshypernavsep
}
% \end{macrocode}
-%\fi
%\iffalse
% \begin{macrocode}
-%</example-glossaries-childmultipar.tex>
+%</glossary-hypernav-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*example-glossaries-childnoname.tex>
+%<*glossary-inline-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\iffalse
+% \subsection{Rollback v4.46 (glossary-inline-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test glossary entries with child entries that don't have
-% a name supplied. (The name is the same as the parent name.)
-%COMMENT
-
-\newglossaryentry{scelerisque}{name={scelerisque},description={at}}
-
-\newglossaryentry{vestibulum}{parent={scelerisque},description={eu, nulla}}
-
-\newglossaryentry{utodionisl}{parent={scelerisque},description={facilisis id}}
-
-\newglossaryentry{molliset}{parent={scelerisque},description={nec, enim}}
-
-\newglossaryentry{aeneansem}{parent={scelerisque},description={sem leo}}
-
-\newglossaryentry{pellentesquesit}{parent={scelerisque},description={sit amet}}
-
-\newglossaryentry{sapien}{parent={scelerisque},description={vehicula
-pellentesque}}
-
-\newglossaryentry{consequat}{parent={scelerisque},description={tellus
-et tortor}}
-
-\newglossaryentry{uttempor}{name={ut tempor},description={laoreet
-quam}}
-
-\newglossaryentry{nullamid}{parent={uttempor},description={wisi a
-libero}}
-
-\newglossaryentry{tristique}{parent={uttempor},description={semper}}
-
-\newglossaryentry{nullamnislmassa}{parent={uttempor},description={rutrum
-ut}}
-
-\newglossaryentry{eleifend}{name={eleifend},description={sit amet
-faucibus}}
-
-\newglossaryentry{elementum}{parent={eleifend},description={elementum}}
-
-\newglossaryentry{urnasapien}{parent={eleifend},description={urna sapien}}
-
-\newglossaryentry{consectetuermauris}{name={consectetuer},description={mauris}}
-
-\newglossaryentry{quisegestas}{parent={consectetuermauris},description={quis egestas}}
-
-\newglossaryentry{leojusto}{parent={consectetuermauris},description={leo
-justo}}
-
-\newglossaryentry{nonrisus}{name={non risus},description={morbi non
-felis}}
-
-\newglossaryentry{aclibero}{parent={nonrisus},description={ac libero}}
-
-\newglossaryentry{vulputatefringilla}{parent={nonrisus},description={vulputate
-fringilla}}
-
-\newglossaryentry{maurislibero}{name={mauris},description={libero eros}}
-
-\newglossaryentry{lacinia}{parent={maurislibero},description={lacinia
-non}}
-
-\newglossaryentry{sodales}{parent={maurislibero},description={sodales
-quis}}
-
-\newglossaryentry{dapibus}{parent={maurislibero},description={dapibus
-porttitor, pede}}
-
-\newglossaryentry{class}{name={class},description={aptent taciti}}
-
-\newglossaryentry{sociosqu}{parent={class},description={sociosqu}}
-
-\newglossaryentry{adlitora}{parent={class},description={ad litora}}
-
-\newglossaryentry{torquent}{parent={class},description={torquent per
-conubia}}
-
-\newglossaryentry{nostra}{name={nostra},description={per inceptos
-hymenaeos}}
-
-\newglossaryentry{morbidapibus}{parent={nostra},description={morbi
-dapibus}}
-
-\newglossaryentry{mauriscondimentum}{parent={nostra},description={mauris
-condimentum nulla}}
-
-\newglossaryentry{cumsociis}{name={cum sociis},description={natoque
-penatibus}}
-
-\newglossaryentry{etmagnis}{parent={cumsociis},description={et
-magnis}}
-
-\newglossaryentry{disparturient}{parent={cumsociis},description={dis
-parturient montes}}
+\ProvidesPackage{glossary-inline}[2020/03/19 v4.46 (NLCT)]
+\newglossarystyle{inline}{%
+ \renewenvironment{theglossary}%
+ {%
+ \def\gls@inlinesep{}%
+ \def\gls@inlinesubsep{}%
+ \def\gls@inlinepostchild{}%
+ }%
+ {\glspostinline}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsinlinedopostchild
+ \gls@inlinesep
+ \glsentryitem{##1}%
+ \glsinlinenameformat{##1}{%
+ \glossentryname{##1}%
+ }%
+ \ifglsdescsuppressed{##1}%
+ {%
+ \glsinlineemptydescformat
+ {%
+ \glossentrysymbol{##1}%
+ }%
+ {%
+ ##2%
+ }%
+ }%
+ {%
+ \ifglshasdesc{##1}%
+ {\glsinlinedescformat{\glossentrydesc{##1}}{\glossentrysymbol{##1}}{##2}}%
+ {\glsinlineemptydescformat{\glossentrysymbol{##1}}{##2}}%
+ }%
+ \ifglshaschildren{##1}%
+ {%
+ \glsresetsubentrycounter
+ \glsinlineparentchildseparator
+ \def\gls@inlinesubsep{}%
+ \def\gls@inlinepostchild{\glsinlinepostchild}%
+ }%
+ {}%
+ \def\gls@inlinesep{\glsinlineseparator}%
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \gls@inlinesubsep%
+ \glsinlinesubnameformat{##2}{%
+ \glossentryname{##2}}%
+ \glssubentryitem{##2}%
+ \glsinlinesubdescformat{\glossentrydesc{##2}}{\glossentrysymbol{##2}}{##3}%
+ \def\gls@inlinesubsep{\glsinlinesubseparator}%
+ }%
+ \renewcommand*{\glsgroupskip}{}%
+}
+\newcommand*{\glsinlinedopostchild}{%
+ \gls@inlinepostchild
+ \def\gls@inlinepostchild{}%
+}
+\newcommand*{\glsinlineseparator}{;\space}
+\newcommand*{\glsinlinesubseparator}{,\space}
+\newcommand*{\glsinlineparentchildseparator}{:\space}
+\newcommand*{\glsinlinepostchild}{}
+\newcommand*{\glspostinline}{\glspostdescription\space}
+\newcommand*{\glsinlinenameformat}[2]{\glstarget{#1}{#2}}
+\newcommand*{\glsinlinedescformat}[3]{\space#1}
+\newcommand*{\glsinlineemptydescformat}[2]{}
+\newcommand*{\glsinlinesubnameformat}[2]{\glstarget{#1}{}}
+\newcommand*{\glsinlinesubdescformat}[3]{#1}
% \end{macrocode}
-%\fi
%\iffalse
% \begin{macrocode}
-%</example-glossaries-childnoname.tex>
+%</glossary-inline-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*example-glossaries-cite.tex>
+%<*glossary-list-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\iffalse
+% \subsection{Rollback v4.46 (glossary-list-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test glossary entries with citation labels stored in
-% the user1 field. (The citations are defined in the xampl.bib file
-% that should be available on modern TeX distributions.)
-%COMMENT
-
-\newglossaryentry{fusce}{name={fusce},
-description={suscipit cursus sem},user1={article-minimal}}
-
-\newglossaryentry{vivamus}{name={vivamus},
-description={risus mi, egestas ac},user1={article-full}}
-
-\newglossaryentry{imperdiet}{name={imperdiet},
-description={varius, faucibus quis, leo},user1={whole-journal}}
-
-\newglossaryentry{aenean2}{name={aenean},
-description={tincidunt},user1={inbook-minimal}}
-
-\newglossaryentry{crasid}{name={cras id},
-description={justo quis nibh scelerisque dignissim},
-user1={inbook-full}}
-
-\newglossaryentry{aliquam2}{name={aliquam},
-description={sagittis elementum dolor},
-user1={book-minimal}}
-
-\newglossaryentry{aeneanconsectetuer}{name={aenean consectetuer},
-description={justo in pede},
-user1={book-full}}
-
-\newglossaryentry{curabiturullamcorper}{name={curabitur ullamcorper},
-description={ligula nec orci},
-user1={booklet-minimal}}
-
-\newglossaryentry{aliquampurus}{name={aliquam purus},
-description={turpis, aliquam id},
-user1={booklet-full}}
-
-\newglossaryentry{ornarevitae}{name={ornare vitae},
-description={porttitor non, wisi},
-user1={incollection-minimal}}
-
-\newglossaryentry{maecenasluctus}{name={maecenas luctus},
-description={porta lorem},
-user1={incollection-full}}
-
-\newglossaryentry{donecvitae}{name={donec vitae},
-description={ligula eu ante pretium varius},
-user1={manual-minimal}}
-
-\newglossaryentry{proin}{name={proin},
-description={tortor metus, convallis et},
-user1={manual-full}}
-
-\newglossaryentry{hendrerit}{name={hendrerit},
-description={non, scelerisque in, urna},
-user1={mastersthesis-minimal}}
-
-\newglossaryentry{crasquis}{name={cras qui},
-description={libero eu ligula bibendum tempor},
-user1={mastersthesis-full}}
-
-\newglossaryentry{vivamustellus}{name={vivamus tellus},
-description={quam, malesuada eu, tempus sed, tempor sed, velit},
-user1={misc-minimal}}
-
-\newglossaryentry{doneclacinia}{name={donec lacinia},
-description={auctor libero},
-user1={misc-full}}
-
-\newglossaryentry{praesent2}{name={praesent},
-description={sed neque id pede mollis rutrum},
-user1={inproceedings-minimal}}
-
- % Here's one with multiple cites:
-\newglossaryentry{vestibulum2}{name={vestibulum},
-description={iaculis risus},
-user1={inproceedings-minimal,phdthesis-minimal}}
-
- % Here's one without a user1 key for comparison:
-\newglossaryentry{pellentesque2}{name={pellentesque},
-description={lacus}}
+\ProvidesPackage{glossary-list}[2020/03/19 v4.46 (NLCT)]
+\providecommand{\indexspace}{%
+ \par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@ \relax
+}
+\newcommand*{\glslistgroupheaderfmt}[1]{#1}
+\newcommand*{\glslistnavigationitem}[1]{\item[#1]}
+\newglossarystyle{list}{%
+ \renewenvironment{theglossary}%
+ {\begin{description}}{\end{description}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \glossentrydesc{##1}\glspostdescription\space ##2}%
+ \renewcommand*{\subglossentry}[3]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\space
+ \glossentrydesc{##2}\glspostdescription\space ##3.}%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}%
+}
+\newglossarystyle{listgroup}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]}}
+\newglossarystyle{listhypergroup}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossaryheader}{%
+ \glslistnavigationitem{\glsnavigation}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]}}
+\newglossarystyle{altlist}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]%
+ \mbox{}\par\nobreak\@afterheading
+ \glossentrydesc{##1}\glspostdescription\space ##2}%
+ \renewcommand{\subglossentry}[3]{%
+ \par
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space ##3}%
+}
+\newglossarystyle{altlistgroup}{%
+ \setglossarystyle{altlist}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]}}
+\newglossarystyle{altlisthypergroup}{%
+ \setglossarystyle{altlist}%
+ \renewcommand*{\glossaryheader}{%
+ \glslistnavigationitem{\glsnavigation}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]}}
+\newglossarystyle{listdotted}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}\glossentrydesc{##1}}%
+ \renewcommand*{\subglossentry}[3]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\glossentryname{##2}}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}\glossentrydesc{##2}}%
+}
+\newlength\glslistdottedwidth
+\setlength{\glslistdottedwidth}{.5\hsize}
+\newglossarystyle{sublistdotted}{%
+ \setglossarystyle{listdotted}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}}]}%
+}
% \end{macrocode}
-%\fi
%\iffalse
% \begin{macrocode}
-%</example-glossaries-cite.tex>
+%</glossary-list-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*example-glossaries-images.tex>
+%<*glossary-long-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\iffalse
+% \subsection{Rollback v4.46 (glossary-list-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test glossary entries with multi-paragraph descriptions
-% that have an associated image file (stored in user1).
-% The referenced image files are provided by the mwe package.
-%COMMENT
-
-\longnewglossaryentry{sedfeugiat}{name={sed feugiat},user1={example-image}}%
-{%
-Cum sociis natoque penatibus et magnis dis parturient montes,
-nascetur ridiculus mus. Ut pellentesque augue sed urna. Vestibulum
-diam eros, fringilla et, consectetuer eu, nonummy id, sapien. Nullam
-at lectus. In sagittis ultrices mauris. Curabitur malesuada erat sit
-amet massa. Fusce blandit. Aliquam erat volutpat. Aliquam euismod.
-Aenean vel lectus. Nunc imperdiet justo nec dolor.
-
-Etiam euismod. Fusce facilisis lacinia dui. Suspendisse potenti. In
-mi erat, cursus id, nonummy sed, ullamcorper eget, sapien. Praesent
-pretium, magna in eleifend egestas, pede pede pretium lorem, quis
-consectetuer tortor sapien facilisis magna. Mauris quis magna
-varius nulla scelerisque imperdiet. Aliquam non quam. Aliquam
-porttitor quam a lacus. Praesent vel arcu ut tortor cursus volutpat.
-In vitae pede quis diam bibendum placerat. Fusce elementum convallis
-neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut,
-mi. Duis nec dui quis leo sagittis commodo.
+\ProvidesPackage{glossary-long}[2020/03/19 v4.46 (NLCT)]
+\RequirePackage{longtable}
+\@ifundefined{glsdescwidth}{%
+ \newlength\glsdescwidth
+ \setlength{\glsdescwidth}{0.6\hsize}
+}{}
+\@ifundefined{glspagelistwidth}{%
+ \newlength\glspagelistwidth
+ \setlength{\glspagelistwidth}{0.1\hsize}
+}{}
+\newglossarystyle{long}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & \tabularnewline}%
+ \fi
}
-
-\longnewglossaryentry{aliquamlectus}%
-{name={aliquam lectus},user1={example-image-a}}%
-{%
-Vivamus leo. Quisque ornare tellus ullamcorper nulla. Mauris
-porttitor pharetra tortor. Sed fringilla justo sed mauris. Mauris
-tellus. Sed non leo. Nullam elementum, magna in cursus sodales,
-augue est scelerisque sapien, venenatis congue nulla arcu et pede.
-Ut suscipit enim vel sapien. Donec congue. Maecenas urna mi,
-suscipit in, placerat ut, vestibulum ut, massa. Fusce ultrices nulla
-et nisl.
-
-Etiam ac leo a risus tristique nonummy. Donec dignissim tincidunt
-nulla. Vestibulum rhoncus molestie odio. Sed lobortis, justo et
-pretium lobortis, mauris turpis condimentum augue, nec ultricies
-nibh arcu pretium enim. Nunc purus neque, placerat id, imperdiet
-sed, pellentesque nec, nisl. Vestibulum imperdiet neque non sem
-accumsan laoreet. In hac habitasse platea dictumst. Etiam
-condimentum facilisis libero. Suspendisse in elit quis nisl aliquam
-dapibus. Pellentesque auctor sapien. Sed egestas sapien nec lectus.
-Pellentesque vel dui vel neque bibendum viverra. Aliquam porttitor
-nisl nec pede. Proin mattis libero vel turpis. Donec rutrum mauris
-et libero. Proin euismod porta felis. Nam lobortis, metus quis
-elementum commodo, nunc lectus elementum mauris, eget vulputate
-ligula tellus eu neque. Vivamus eu dolor.
+\newglossarystyle{longborder}{%
+ \setglossarystyle{long}%
+ \renewenvironment{theglossary}{%
+ \begin{longtable}{|l|p{\glsdescwidth}|}}{\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
}
-
-\longnewglossaryentry{nullainipsum}%
-{name={nulla in ipsum},user1={example-image-b}}%
-{%
- Praesent eros nulla, congue vitae, euismod ut, commodo a, wisi.
-Pellentesque habitant morbi tristique senectus et netus et malesuada
-fames ac turpis egestas. Aenean nonummy magna non leo. Sed felis
-erat, ullamcorper in, dictum non, ultricies ut, lectus. Proin vel
-arcu a odio lobortis euismod. Vestibulum ante ipsum primis in
-faucibus orci luctus et ultrices posuere cubilia Curae; Proin ut
-est. Aliquam odio. Pellentesque massa turpis, cursus eu, euismod
-nec, tempor congue, nulla. Duis viverra gravida mauris. Cras
-tincidunt. Curabitur eros ligula, varius ut, pulvinar in, cursus
-faucibus, augue.
-
-Nulla mattis luctus nulla. Duis commodo velit at leo. Aliquam
-vulputate magna et leo. Nam vestibulum ullamcorper leo. Vestibulum
-condimentum rutrum mauris. Donec id mauris. Morbi molestie justo et
-pede. Vivamus eget turpis sed nisl cursus tempor. Curabitur mollis
-sapien condimentum nunc. In wisi nisl, malesuada at, dignissim sit
-amet, lobortis in, odio. Aenean consequat arcu a ante. Pellentesque
-porta elit sit amet orci. Etiam at turpis nec elit ultricies
-imperdiet. Nulla facilisi. In hac habitasse platea dictumst.
-Suspendisse viverra aliquam risus. Nullam pede justo, molestie
-nonummy, scelerisque eu, facilisis vel, arcu.
+\newglossarystyle{longheader}{%
+ \setglossarystyle{long}%
+ \renewcommand*{\glossaryheader}{%
+ \bfseries \entryname & \bfseries \descriptionname\tabularnewline\endhead}%
}
-
-\longnewglossaryentry{curabiturtellusmagna}%
-{name={curabitur tellus magna},user1={example-image-c}}%
-{%
-Donec interdum. Praesent scelerisque. Maecenas posuere sodales
-odio. Vivamus metus lacus, varius quis, imperdiet quis, rhoncus a,
-turpis. Etiam ligula arcu, elementum a, venenatis quis, sollicitudin
-sed, metus. Donec nunc pede, tincidunt in, venenatis vitae, faucibus
-vel, nibh. Pellentesque wisi. Nullam malesuada. Morbi ut tellus ut
-pede tincidunt porta. Lorem ipsum dolor sit amet, consectetuer
-adipiscing elit. Etiam congue neque id dolor.
-
-Donec et nisl at wisi luctus bibendum. Nam interdum tellus ac
-libero. Sed sem justo, laoreet vitae, fringilla at, adipiscing ut,
-nibh. Maecenas non sem quis tortor eleifend fermentum. Etiam id
-tortor ac mauris porta vulputate. Integer porta neque vitae massa.
-Maecenas tempus libero a libero posuere dictum. Vestibulum ante
-ipsum primis in faucibus orci luctus et ultrices posuere cubilia
-Curae; Aenean quis mauris sed elit commodo placerat. Class aptent
-taciti sociosqu ad litora torquent per conubia nostra, per inceptos
-hymenaeos. Vivamus rhoncus tincidunt libero. Etiam elementum pretium
-justo. Vivamus est. Morbi a tellus eget pede tristique commodo.
-Nulla nisl. Vestibulum sed nisl eu sapien cursus rutrum.
+\newglossarystyle{longheaderborder}{%
+ \setglossarystyle{longborder}%
+ \renewcommand*{\glossaryheader}{%
+ \hline\bfseries \entryname & \bfseries
+ \descriptionname\tabularnewline\hline
+ \endhead
+ \hline\endfoot}%
}
-
-\longnewglossaryentry{nullanonmauris}%
-{name={nulla non mauris},user1={example-image-16x10}}%
-{%
-Nullam varius. Etiam dignissim elementum metus. Vestibulum faucibus,
-metus sit amet mattis rhoncus, sapien dui laoreet odio, nec
-ultricies nibh augue a enim. Fusce in ligula. Quisque at magna et
-nulla commodo consequat. Proin accumsan imperdiet sem. Nunc porta.
-Donec feugiat mi at justo. Phasellus facilisis ipsum quis ante. In
-ac elit eget ipsum pharetra faucibus. Maecenas viverra nulla in
-massa.
-
-Nulla ac nisl. Nullam urna nulla, ullamcorper in, interdum sit amet,
-gravida ut, risus. Aenean ac enim. In luctus. Phasellus eu quam
-vitae turpis viverra pellentesque. Duis feugiat felis ut enim.
-Phasellus pharetra, sem id porttitor sodales, magna nunc aliquet
-nibh, nec blandit nisl mauris at pede. Suspendisse risus risus,
-lobortis eget, semper at, imperdiet sit amet, quam. Quisque
-scelerisque dapibus nibh. Nam enim. Lorem ipsum dolor sit amet,
-consectetuer adipiscing elit. Nunc ut metus. Ut metus justo, auctor
-at, ultrices eu, sagittis ut, purus. Aliquam aliquam.
+\newglossarystyle{long3col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & & \tabularnewline}%
+ \fi
}
-
-\longnewglossaryentry{etiampedemassa}%
-{name={etiam pede massa},user1={example-image-10x16}}%
-{%
-Vestibulum luctus commodo lacus. Morbi lacus dui, tempor sed,
-euismod eget, condimentum at, tortor. Phasellus aliquet odio ac
-lacus tempor faucibus. Praesent sed sem. Praesent iaculis. Cras
-rhoncus tellus sed justo ullamcorper sagittis. Donec quis orci.
-Sed ut tortor quis tellus euismod tincidunt. Suspendisse congue nisl
-eu elit. Aliquam tortor diam, tempus id, tristique eget, sodales
-vel, nulla. Praesent tellus mi, condimentum sed, viverra at,
-consectetuer quis, lectus. In auctor vehicula orci. Sed pede sapien,
-euismod in, suscipit in, pharetra placerat, metus. Vivamus commodo
-dui non odio. Donec et felis.
-
-Etiam suscipit aliquam arcu. Aliquam sit amet est ac purus bibendum
-congue. Sed in eros. Morbi non orci. Pellentesque mattis lacinia
-elit. Fusce molestie velit in ligula. Nullam et orci vitae nibh
-vulputate auctor. Aliquam eget purus. Nulla auctor wisi sed ipsum.
-Morbi porttitor tellus ac enim. Fusce ornare. Proin ipsum enim,
-tincidunt in, ornare venenatis, molestie a, augue. Donec vel pede in
-lacus sagittis porta. Sed hendrerit ipsum quis nisl. Suspendisse
-quis massa ac nibh pretium cursus. Sed sodales. Nam eu neque quis
-pede dignissim ornare. Maecenas eu purus ac urna tincidunt congue.
+\newglossarystyle{long3colborder}{%
+ \setglossarystyle{long3col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|p{\glsdescwidth}|p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
}
-
-\longnewglossaryentry{donecetnisl}%
-{name={donec et nisl},user1={example-image-16x9}}%
-{%
-Aenean dictum odio sit amet risus. Morbi purus. Nulla a est sit amet
-purus venenatis iaculis. Vivamus viverra purus vel magna. Donec in
-justo sed odio malesuada dapibus. Nunc ultrices aliquam nunc.
-Vivamus facilisis pellentesque velit. Nulla nunc velit, vulputate
-dapibus, vulputate id, mattis ac, justo. Nam mattis elit dapibus
-purus. Quisque enim risus, congue non, elementum ut, mattis quis,
-sem. Quisque elit.
-
-Maecenas non massa. Vestibulum pharetra nulla at lorem. Duis quis
-quam id lacus dapibus interdum. Nulla lorem. Donec ut ante quis
-dolor bibendum condimentum. Etiam egestas tortor vitae lacus.
-Praesent cursus. Mauris bibendum pede at elit. Morbi et felis a
-lectus interdum facilisis. Sed suscipit gravida turpis. Nulla at
-lectus. Vestibulum ante ipsum primis in faucibus orci luctus et
-ultrices posuere cubilia Curae; Praesent nonummy luctus nibh. Proin
-turpis nunc, congue eu, egestas ut, fringilla at, tellus. In hac
-habitasse platea dictumst.
+\newglossarystyle{long3colheader}{%
+ \setglossarystyle{long3col}%
+ \renewcommand*{\glossaryheader}{%
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\endhead}%
}
-
-\longnewglossaryentry{vivamuseutellus}%
-{name={vivamus eu tellus},user1={example-image-9x16}}%
-{%
- Nam orci orci, malesuada id, gravida nec, ultricies vitae, erat.
-Donec risus turpis, luctus sit amet, interdum quis, porta sed,
-ipsum. Suspendisse condimentum, tortor at egestas posuere, neque
-metus tempor orci, et tincidunt urna nunc a purus. Sed facilisis
-blandit tellus. Nunc risus sem, suscipit nec, eleifend quis, cursus
-quis, libero. Curabitur et dolor. Sed vitae sem. Cum sociis natoque
-penatibus et magnis dis parturient montes, nascetur ridiculus mus.
-Maecenas ante. Duis ullamcorper enim. Donec tristique enim eu leo.
-Nullam molestie elit eu dolor. Nullam bibendum, turpis vitae
-tristique gravida, quam sapien tempor lectus, quis pretium tellus
-purus ac quam. Nulla facilisi.
-
-Duis aliquet dui in est. Donec eget est. Nunc lectus odio, varius
-at, fermentum in, accumsan non, enim. Aliquam erat volutpat. Proin
-sit amet nulla ut eros consectetuer cursus. Phasellus dapibus
-aliquam justo. Nunc laoreet. Donec consequat placerat magna. Duis
-pretium tincidunt justo. Sed sollicitudin vestibulum quam. Nam quis
-ligula. Vivamus at metus. Etiam imperdiet imperdiet pede. Aenean
-turpis. Fusce augue velit, scelerisque sollicitudin, dictum vitae,
-tempor et, pede. Donec wisi sapien, feugiat in, fermentum ut,
-sollicitudin adipiscing, metus.
+\newglossarystyle{long3colheaderborder}{%
+ \setglossarystyle{long3colborder}%
+ \renewcommand*{\glossaryheader}{%
+ \hline
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\hline\endhead
+ \hline\endfoot}%
}
-
-\longnewglossaryentry{donecvelnibh}%
-{name={donec vel nibh},user1={example-image-golden}}%
-{%
- Donec pede. Sed id quam id wisi laoreet suscipit. Nulla lectus
-dolor, aliquam ac, fringilla eget, mollis ut, orci. In pellentesque
-justo in ligula. Maecenas turpis. Donec eleifend leo at felis
-tincidunt consequat. Aenean turpis metus, malesuada sed, condimentum
-sit amet, auctor a, wisi. Pellentesque sapien elit, bibendum ac,
-posuere et, congue eu, felis. Vestibulum mattis libero quis metus
-scelerisque ultrices. Sed purus.
-
-Donec molestie, magna ut luctus ultrices, tellus arcu nonummy velit,
-sit amet pulvinar elit justo et mauris. In pede. Maecenas euismod
-elit eu erat. Aliquam augue wisi, facilisis congue, suscipit in,
-adipiscing et, ante. In justo. Cras lobortis neque ac ipsum. Nunc
-fermentum massa at ante. Donec orci tortor, egestas sit amet,
-ultrices eget, venenatis eget, mi. Maecenas vehicula leo semper
-est. Mauris vel metus. Aliquam erat volutpat. In rhoncus sapien ac
-tellus. Pellentesque ligula.
+\newglossarystyle{long4col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{llll}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} &
+ \glossentrysymbol{##1} &
+ ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & & & \tabularnewline}%
+ \fi
}
-
-\longnewglossaryentry{crasdapibus}%
-{name={cras dapibus},user1={example-image-golden-upright}}%
-{%
-Aenean interdum nibh sed wisi. Praesent sollicitudin vulputate dui.
-Praesent iaculis viverra augue. Quisque in libero. Aenean gravida
-lorem vitae sem ullamcorper cursus. Nunc adipiscing rutrum ante.
-Nunc ipsum massa, faucibus sit amet, viverra vel, elementum semper,
-orci. Cras eros sem, vulputate et, tincidunt id, ultrices eget,
-magna. Nulla varius ornare odio. Donec accumsan mauris sit amet
-augue. Sed ligula lacus, laoreet non, aliquam sit amet, iaculis
-tempor, lorem. Suspendisse eros. Nam porta, leo sed congue tempor,
-felis est ultrices eros, id mattis velit felis non metus. Curabitur
-vitae elit non mauris varius pretium. Aenean lacus sem, tincidunt
-ut, consequat quis, porta vitae, turpis. Nullam laoreet fermentum
-urna. Proin iaculis lectus.
-
-Sed mattis, erat sit amet gravida malesuada, elit augue egestas
-diam, tempus scelerisque nunc nisl vitae libero. Sed consequat
-feugiat massa. Nunc porta, eros in eleifend varius, erat leo rutrum
-dui, non convallis lectus orci ut nibh. Sed lorem massa, nonummy
-quis, egestas id, condimentum at, nisl. Maecenas at nibh. Aliquam
-et augue at nunc pellentesque ullamcorper. Duis nisl nibh, laoreet
-suscipit, convallis ut, rutrum id, enim. Phasellus odio. Nulla
-nulla elit, molestie non, scelerisque at, vestibulum eu, nulla. Ut
-odio nisl, facilisis id, mollis et, scelerisque nec, enim. Aenean
-sem leo, pellentesque sit amet, scelerisque sit amet, vehicula
-pellentesque, sapien.
+\newglossarystyle{long4colheader}{%
+ \setglossarystyle{long4col}%
+ \renewcommand*{\glossaryheader}{%
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries \symbolname&
+ \bfseries\pagelistname\tabularnewline\endhead}%
}
-
-\longnewglossaryentry{sedconsequat}%
-{name={sed consequat},user1={example-image-1x1}}%
-{%
-Ut tempor laoreet quam. Nullam id wisi a libero tristique semper.
-Nullam nisl massa, rutrum ut, egestas semper, mollis id, leo. Nulla
-ac massa eu risus blandit mattis. Mauris ut nunc. In hac habitasse
-platea dictumst. Aliquam eget tortor. Quisque dapibus pede in erat.
-Nunc enim. In dui nulla, commodo at, consectetuer nec, malesuada
-nec, elit. Aliquam ornare tellus eu urna. Sed nec metus. Cum sociis
-natoque penatibus et magnis dis parturient montes, nascetur
-ridiculus mus. Pellentesque habitant morbi tristique senectus et
-netus et malesuada fames ac turpis egestas.
-
-Phasellus id magna. Duis malesuada interdum arcu. Integer metus.
-Morbi pulvinar pellentesque mi. Suspendisse sed est eu magna
-molestie egestas. Quisque mi lorem, pulvinar eget, egestas quis,
-luctus at, ante. Proin auctor vehicula purus. Fusce ac nisl aliquam
-ante hendrerit pellentesque. Class aptent taciti sociosqu ad litora
-torquent per conubia nostra, per inceptos hymenaeos. Morbi wisi.
-Etiam arcu mauris, facilisis sed, eleifend non, nonummy ut, pede.
-Cras ut lacus tempor metus mollis placerat. Vivamus eu tortor vel
-metus interdum malesuada.
+\newglossarystyle{long4colborder}{%
+ \setglossarystyle{long4col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|l|l|l|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
}
-
- % This one doesn't have an image. The style can test whether an
- % image has been supplied using \ifglshasfield
-
-\longnewglossaryentry{sedeleifend}%
-{name={sed eleifend}}%
-{%
-Morbi non felis ac libero vulputate fringilla. Mauris libero eros,
-lacinia non, sodales quis, dapibus porttitor, pede. Class aptent
-taciti sociosqu ad litora torquent per conubia nostra, per inceptos
-hymenaeos. Morbi dapibus mauris condimentum nulla. Cum sociis
-natoque penatibus et magnis dis parturient montes, nascetur
-ridiculus mus. Etiam sit amet erat. Nulla varius. Etiam tincidunt
-dui vitae turpis. Donec leo. Morbi vulputate convallis est. Integer
-aliquet. Pellentesque aliquet sodales urna.
+\newglossarystyle{long4colheaderborder}{%
+ \setglossarystyle{long4col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|l|l|l|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{%
+ \hline\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries \symbolname&
+ \bfseries\pagelistname\tabularnewline\hline\endhead
+ \hline\endfoot}%
+}
+\newglossarystyle{altlong4col}{%
+ \setglossarystyle{long4col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+\newglossarystyle{altlong4colheader}{%
+ \setglossarystyle{long4colheader}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+\newglossarystyle{altlong4colborder}{%
+ \setglossarystyle{long4colborder}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|p{\glsdescwidth}|l|p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+}
+\newglossarystyle{altlong4colheaderborder}{%
+ \setglossarystyle{long4colheaderborder}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|p{\glsdescwidth}|l|p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
}
% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
-%</example-glossaries-images.tex>
-% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
-%<*example-glossaries-long.tex>
-% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test glossary entries with long descriptions.
-%COMMENT
-
-\newglossaryentry{loremipsum}{name={lorem ipsum},
-description={dolor sit amet, consectetuer adipiscing elit. Ut purus
-elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
-dictum gravida mauris.}}
-
-\newglossaryentry{namearcu}{name={name arcu},
-description={libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
-vehicula augue eu neque. Pellentesque habitant morbi tristique
-senectus et netus et malesuada fames ac turpis egestas. Mauris ut
-leo.}}
-
-\newglossaryentry{crasviverra}{name={cras viverra},
-description={metus rhoncus sem. Nulla et lectus vestibulum
-urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida
-placerat.}}
-
-\newglossaryentry{integersapien}{name={integer sapien},
-description={est, iaculis in, pretium quis, viverra ac,
-nunc. Praesent eget sem vel leo ultrices bibendum. Aenean
-faucibus.}}
-
-\newglossaryentry{morbidolor}{name={morbi dolor},
-description={nulla, malesuada eu, pulvinar at, mollis ac, nulla.
-Curabitur auctor semper nulla. Donec varius orci eget risus. Duis
-nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis
-eget orci sit amet orci dignissim rutrum.}}
-
-\newglossaryentry{namdui}{name={nam dui},
-description={ligula, fringilla a, euismod sodales,
-sollicitudin vel, wisi. Morbi auctor lorem non justo.}}
-
-\newglossaryentry{namlacus}{name={nam lacus},
-description={libero, pretium at, lobortis vitae, ultricies et,
-tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
-vitae ornare odio metus a mi.}}
-
-\newglossaryentry{morbiac}{name={morbi ac},
-description={orci et nisl hendrerit mollis. Suspendisse ut massa.
-Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus
-et magnis dis parturient montes, nascetur ridiculus mus.}}
-
-\newglossaryentry{aliquam}{name={aliquam},
-description={tincidunt urna. Nulla ullamcorper
-vestibulum turpis. Pellentesque cursus luctus mauris.}}
-
-\newglossaryentry{nullamalesuada}{name={nulla malesuada},
-description={porttitor diam. Donec felis erat, congue non, volutpat at,
-tincidunt tristique, libero. Vivamus viverra fermentum felis.}}
-
-\newglossaryentry{donecnonummy}{name={donec nonummy},
-description={pellentesque ante. Phasellus
-adipiscing semper elit. Proin fermentum massa ac quam. Sed diam
-turpis, molestie vitae, placerat a, molestie nec, leo.}}
-
-\newglossaryentry{maecenaslacinia}{name={maecenas lacinia},
-description={nam ipsum ligula, eleifend at, accumsan nec, suscipit
-a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat
-lorem.}}
-
-\newglossaryentry{sedlacinia}{name={sed lacinia},
-description={nulla vitae enim. Pellentesque tincidunt purus
-vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
-bibendum quam in tellus.}}
-% \end{macrocode}
-%\fi
%\iffalse
% \begin{macrocode}
-%</example-glossaries-long.tex>
+%</glossary-long-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*example-glossaries-longchild.tex>
+%<*glossary-longbooktabs-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\iffalse
+% \subsection{Rollback v4.46 (glossary-longbooktabs-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test glossary entries with child entries and long
-% descriptions.
-%COMMENT
-
-\newglossaryentry{longsedmattis}{name={sed mattis},
- description={erat sit amet dolor sit amet, consectetuer adipiscing elit. Ut purus
-elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
-dictum gravida mauris.}}
-
-\newglossaryentry{longgravida}{parent={longsedmattis},name={gravida},
- description={malesuada libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
-vehicula augue eu neque. Pellentesque habitant morbi tristique
-senectus et netus et malesuada fames ac turpis egestas. Mauris ut
-leo.}}
-
-\newglossaryentry{longelitaugue}{parent={longsedmattis},name={elit augue},
-description={egestas diam metus rhoncus sem. Nulla et lectus vestibulum
-urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida
-placerat.}}
-
-\newglossaryentry{longtempus}{parent={longsedmattis},name={tempus},
-description={scelerisque est, iaculis in, pretium quis, viverra ac,
-nunc. Praesent eget sem vel leo ultrices bibendum. Aenean
-faucibus.}}
-
-\newglossaryentry{longnunc}{name={nunc},
- description={nisl vitae nulla, malesuada eu, pulvinar at, mollis ac, nulla.
-Curabitur auctor semper nulla. Donec varius orci eget risus. Duis
-nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis
-eget orci sit amet orci dignissim rutrum.}}
-
-\newglossaryentry{longlibero}{parent={longnunc},name={libero},
- description={sed consequat ligula, fringilla a, euismod sodales,
-sollicitudin vel, wisi. Morbi auctor lorem non justo.}}
-
-\newglossaryentry{longfeugiat}{parent={longnunc},name={feugiat},
- description={massa libero, pretium at, lobortis vitae, ultricies et,
-tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
-vitae ornare odio metus a mi.}}
-
-\newglossaryentry{longporta}{parent={longnunc},name={porta},
- description={eros in eleifend orci et nisl hendrerit mollis. Suspendisse ut massa.
-Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus
-et magnis dis parturient montes, nascetur ridiculus mus.}}
-
-\newglossaryentry{longvariuserat}{parent={longnunc},name={varius erat},
-description={leo rutrum dui tincidunt urna. Nulla ullamcorper
-vestibulum turpis. Pellentesque cursus luctus mauris.}}
-
-\newglossaryentry{longnonconvallis}{name={non convallis},
- description={lectus orci ut nibh porttitor diam. Donec felis erat,
-congue non, volutpat at, tincidunt tristique, libero. Vivamus
-viverra fermentum felis.}}
-
-\newglossaryentry{longsedlorem}{parent={longnonconvallis},name={sedlorem},
- description={massa pellentesque ante. Phasellus
-adipiscing semper elit. Proin fermentum massa ac quam. Sed diam
-turpis, molestie vitae, placerat a, molestie nec, leo.}}
-
-\newglossaryentry{longnonummyquis}{parent={longnonconvallis},name={nonummy
-quis}, description={egestas id nam ipsum ligula, eleifend at, accumsan nec, suscipit
-a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat
-lorem.}}
-
-\newglossaryentry{longcondimentum}{name={condimentum},
- description={at nisl nulla vitae enim. Pellentesque tincidunt purus
-vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
-bibendum quam in tellus.}}
-
-\newglossaryentry{longmaecenas}{parent={longcondimentum},name={maecenas},
-description={at nibh fringilla a, euismod sodales, sollicitudin vel,
-wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at,
-lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed
-accumsan bibendum, erat ligula aliquet magna, vitae ornare odio
-metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut
-massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque
-penatibus et magnis dis parturient montes, nascetur ridiculus mus.
-Aliquam tincidunt urna. Nulla ullamcorper vestibulum turpis.
-Pellentesque cursus luctus mauris.}}
-
-\newglossaryentry{longaliquamet}{name={aliquam et},
- description={augue felis erat, congue non,
-volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum
-felis. Donec nonummy pellentesque ante.}}
-
-\newglossaryentry{longatnunc}{parent={longaliquamet},name={at nunc},
- description={pellentesque ullamcorper el justo
-vitae lacus tincidunt ultrices. Lorem ipsum dolor sit amet,
-consectetuer adipiscing elit.}}
-
-\newglossaryentry{longduisnisl}{parent={longatnunc},name={duisnisl},
- description={laoreet suscipit ac venenatis arcu
-wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis
-sagittis posuere, turpis lacus congue quam, in hendrerit risus eros
-eget felis. Maecenas eget erat in sapien mattis porttitor.}}
-
-\newglossaryentry{longduisnibh}{parent={longatnunc},name={duisnibh},
-description={convallis ut justo lectus
-sagittis dui, et vehicula libero dui cursus dui. Mauris tempor
-ligula sed lacus. Duis cursus enim ut augue. Cras ac magna.}}
-
-\newglossaryentry{longrutrum}{name={rutrum},
- description={id, enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus
-eros, malesuada sit amet, fermentum eu, sodales cursus, magna. Donec
-eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem
-egestas dui, et convallis elit erat sed nulla.}}
-
-\newglossaryentry{longphasellus}{parent={longrutrum},name={phasellus},
- description={odio volutpat a, ornare ac, erat.
-Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc
-dui lobortis purus, quis congue purus metus ultricies tellus. Proin
-et quam.}}
-
-\newglossaryentry{longnullanulla}{parent={longrutrum},name={nulla nulla},
-description={elit, molestie non wisi viverra faucibus pretium, nibh est placerat odio,
-nec commodo wisi enim eget quam. Quisque libero justo, consectetuer
-a, feugiat vitae, porttitor eu, libero.}}
-
+\ProvidesPackage{glossary-longbooktabs}[2020/03/19 v4.46 (NLCT)]
+\RequirePackage{booktabs}
+\RequirePackage{glossary-long}[=v4.46]
+\RequirePackage{glossary-longragged}[=v4.46]
+\newglossarystyle{long-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{long}%
+ \renewcommand*{\glossaryheader}{%
+ \toprule \bfseries \entryname & \bfseries
+ \descriptionname\tabularnewline\midrule\endhead
+ \bottomrule\endfoot}%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newglossarystyle{long3col-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{long3col}%
+ \renewcommand*{\glossaryheader}{%
+ \toprule \bfseries \entryname &
+ \bfseries \descriptionname &
+ \bfseries \pagelistname
+ \tabularnewline\midrule\endhead
+ \bottomrule\endfoot}%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newglossarystyle{long4col-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{long4col}%
+ \renewcommand*{\glossaryheader}{%
+ \toprule \bfseries \entryname &
+ \bfseries \descriptionname &
+ \bfseries \symbolname &
+ \bfseries \pagelistname
+ \tabularnewline\midrule\endhead
+ \bottomrule\endfoot}%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newglossarystyle{altlong4col-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{long4col-booktabs}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+\newglossarystyle{longragged-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{long-booktabs}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{longtable}}%
+}
+\newglossarystyle{longragged3col-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{long3col-booktabs}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+\newglossarystyle{altlongragged4col-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{altlong4col-booktabs}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+\newcommand*{\glsLTpenaltycheck}{%
+ \ifnum\outputpenalty=-50\vskip-\normalbaselineskip\relax\fi
+}
+\newcommand{\glspenaltygroupskip}{%
+ \noalign{\penalty-50\vskip\normalbaselineskip}}
+\let\@gls@org@LT@output\LT@output
+\newcommand*{\glsrestoreLToutput}{\let\LT@output\@gls@org@LT@output}
+\newcommand*{\glspatchLToutput}{%
+ \renewcommand*{\LT@output}{%
+ \ifnum\outputpenalty <-\@Mi
+ \ifnum\outputpenalty > -\LT@end@pen
+ \LT@err{floats and marginpars not allowed in a longtable}\@ehc
+ \else
+ \setbox\z@\vbox{\unvbox\@cclv}%
+ \ifdim \ht\LT@lastfoot>\ht\LT@foot
+ \dimen@\pagegoal
+ \advance\dimen@-\ht\LT@lastfoot
+ \ifdim\dimen@<\ht\z@
+ \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
+ \@makecol
+ \@outputpage
+ \setbox\z@\vbox{\box\LT@head\glsLTpenaltycheck}%
+ \fi
+ \fi
+ \global\@colroom\@colht
+ \global\vsize\@colht
+ {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
+ \fi
+ \else
+ \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
+ \@makecol
+ \@outputpage
+ \global\vsize\@colroom
+ \copy\LT@head
+ \glsLTpenaltycheck
+ \nobreak
+ \fi
+ }%
+}
% \end{macrocode}
-%\fi
%\iffalse
% \begin{macrocode}
-%</example-glossaries-longchild.tex>
+%</glossary-longbooktabs-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*example-glossaries-multipar.tex>
+%<*glossary-longragged-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\iffalse
+%\subsection{Rollback v4.46 (glossary-longragged-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test glossary entries with multi-paragraph descriptions.
-%COMMENT
-
-\longnewglossaryentry{loremi-ii}{name={lorem 1--2}}%
-{%
-Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
-vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
-dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer
-id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque
-habitant morbi tristique senectus et netus et malesuada fames ac
-turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla
-et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
-sit amet tortor gravida placerat. Integer sapien est, iaculis in,
-pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices
-bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar
-at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius
-orci eget risus. Duis nibh mi, congue eu, accumsan eleifend,
-sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
-
-Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel,
-wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at,
-lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed
-accumsan bibendum, erat ligula aliquet magna, vitae ornare odio
-metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut
-massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque
-penatibus et magnis dis parturient montes, nascetur ridiculus mus.
-Aliquam tincidunt urna. Nulla ullamcorper vestibulum turpis.
-Pellentesque cursus luctus mauris.%
+\ProvidesPackage{glossary-longragged}[2020/03/19 v4.46 (NLCT)]
+\RequirePackage{array}
+\RequirePackage{longtable}
+\@ifundefined{glsdescwidth}{%
+ \newlength\glsdescwidth
+ \setlength{\glsdescwidth}{0.6\hsize}
+}{}
+\@ifundefined{glspagelistwidth}{%
+ \newlength\glspagelistwidth
+ \setlength{\glspagelistwidth}{0.1\hsize}
+}{}
+\newglossarystyle{longragged}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\space ##2%
+ \tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}%
+ \glspostdescription\space ##3%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & \tabularnewline}%
+ \fi
}
-
-\longnewglossaryentry{loremiii-iv}{name={lorem 3--4}}%
-{%
-Nulla malesuada porttitor diam. Donec felis erat, congue non,
-volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum
-felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper
-elit. Proin fermentum massa ac quam. Sed diam turpis, molestie
-vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum
-ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit
-ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
-nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer
-non enim. Praesent euismod nunc eu purus. Donec bibendum quam in
-tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate
-metus eu enim. Vestibulum pellentesque felis eu massa.
-
-Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo
-vitae lacus tincidunt ultrices. Lorem ipsum dolor sit amet,
-consectetuer adipiscing elit. In hac habitasse platea dictumst.
-Integer tempus convallis augue. Etiam facilisis. Nunc elementum
-fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida
-sollicitudin, felis odio placerat quam, ac pulvinar elit purus eget
-enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus
-quis tortor vitae risus porta vehicula.%
+\newglossarystyle{longraggedborder}{%
+ \setglossarystyle{longragged}%
+ \renewenvironment{theglossary}{%
+ \begin{longtable}{|l|>{\raggedright}p{\glsdescwidth}|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
}
-
-\longnewglossaryentry{loremv-vi}{name={lorem 5--6}}%
-{%
-Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla
-a faucibus semper, leo velit ultricies tellus, ac venenatis arcu
-wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis
-sagittis posuere, turpis lacus congue quam, in hendrerit risus eros
-eget felis. Maecenas eget erat in sapien mattis porttitor.
-Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo
-facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus
-sagittis dui, et vehicula libero dui cursus dui. Mauris tempor
-ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras
-nulla. Nulla egestas. Curabitur a leo. Quisque egestas wisi eget
-nunc. Nam feugiat lacus vel est. Curabitur consectetuer.%
-
-Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit
-amet, laoreet vitae, arcu. Aenean faucibus pede eu ante. Praesent
-enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus
-eros, malesuada sit amet, fermentum eu, sodales cursus, magna. Donec
-eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem
-egestas dui, et convallis elit erat sed nulla. Donec luctus.
-Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies
-non, pharetra in, velit. Integer arcu est, nonummy in, fermentum
-faucibus, egestas vel, odio.%
+\newglossarystyle{longraggedheader}{%
+ \setglossarystyle{longragged}%
+ \renewcommand*{\glossaryheader}{%
+ \bfseries \entryname & \bfseries \descriptionname
+ \tabularnewline\endhead}%
}
-
-\longnewglossaryentry{loremvii-viii}{name={lorem 7--8}}%
-{%
-Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio.
-Sed vehicula hendrerit sem. Duis non odio. Morbi ut dui. Sed
-accumsan risus eget odio. In hac habitasse platea dictumst.
-Pellentesque non elit. Fusce sed justo eu urna porta tincidunt.
-Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat.
-Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc
-dui lobortis purus, quis congue purus metus ultricies tellus. Proin
-et quam. Class aptent taciti sociosqu ad litora torquent per conubia
-nostra, per inceptos hymenaeos. Praesent sapien turpis, fermentum
-vel, eleifend faucibus, vehicula eu, lacus.
-
-Pellentesque habitant morbi tristique senectus et netus et malesuada
-fames ac turpis egestas. Donec odio elit, dictum in, hendrerit sit
-amet, egestas sed, leo. Praesent feugiat sapien aliquet odio.
-Integer vitae justo. Aliquam vestibulum fringilla lorem. Sed neque
-lectus, consectetuer at, consectetuer sed, eleifend ac, lectus.
-Nulla facilisi. Pellentesque eget lectus. Proin eu metus. Sed
-porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus.
-Ut mi mi, lacinia sit amet, placerat et, mollis vitae, dui. Sed ante
-tellus, tristique ut, iaculis eu, malesuada ac, dui. Mauris nibh
-leo, facilisis non, adipiscing quis, ultrices a, dui.%
+\newglossarystyle{longraggedheaderborder}{%
+ \setglossarystyle{longraggedborder}%
+ \renewcommand*{\glossaryheader}{%
+ \hline\bfseries \entryname & \bfseries \descriptionname
+ \tabularnewline\hline
+ \endhead
+ \hline\endfoot}%
}
-
-\longnewglossaryentry{loremix-x}{name={lorem 9--10}}%
-{%
-Morbi luctus, wisi viverra faucibus pretium, nibh est placerat odio,
-nec commodo wisi enim eget quam. Quisque libero justo, consectetuer
-a, feugiat vitae, porttitor eu, libero. Suspendisse sed mauris
-vitae elit sollicitudin malesuada. Maecenas ultricies eros sit amet
-ante. Ut venenatis velit. Maecenas sed mi eget dui varius euismod.
-Phasellus aliquet volutpat odio. Vestibulum ante ipsum primis in
-faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque
-sit amet pede ac sem eleifend consectetuer. Nullam elementum, urna
-vel imperdiet sodales, elit ipsum pharetra ligula, ac pretium ante
-justo a nulla. Curabitur tristique arcu eu metus. Vestibulum lectus.
-Proin mauris. Proin eu nunc eu urna hendrerit faucibus. Aliquam
-auctor, pede consequat laoreet varius, eros tellus scelerisque quam,
-pellentesque hendrerit ipsum dolor sed augue. Nulla nec lacus.
-
-Suspendisse vitae elit. Aliquam arcu neque, ornare in, ullamcorper
-quis, commodo eu, libero. Fusce sagittis erat at erat tristique
-mollis. Maecenas sapien libero, molestie et, lobortis in, sodales
-eget, dui. Morbi ultrices rutrum lorem. Nam elementum ullamcorper
-leo. Morbi dui. Aliquam sagittis. Nunc placerat. Pellentesque
-tristique sodales est. Maecenas imperdiet lacinia velit. Cras non
-urna. Morbi eros pede, suscipit ac, varius vel, egestas non, eros.
-Praesent malesuada, diam id pretium elementum, eros sem dictum
-tortor, vel consectetuer odio sem sed wisi.%
+\newglossarystyle{longragged3col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{longragged3colborder}{%
+ \setglossarystyle{longragged3col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|>{\raggedright}p{\glsdescwidth}|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+\newglossarystyle{longragged3colheader}{%
+ \setglossarystyle{longragged3col}%
+ \renewcommand*{\glossaryheader}{%
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\endhead}%
+}
+\newglossarystyle{longragged3colheaderborder}{%
+ \setglossarystyle{longragged3colborder}%
+ \renewcommand*{\glossaryheader}{%
+ \hline
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\hline\endhead
+ \hline\endfoot}%
+}
+\newglossarystyle{altlongragged4col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} & \glossentrysymbol{##1} &
+ ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & & & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{altlongragged4colheader}{%
+ \setglossarystyle{altlongragged4col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{%
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries \symbolname&
+ \bfseries\pagelistname\tabularnewline\endhead}%
+}
+\newglossarystyle{altlongragged4colborder}{%
+ \setglossarystyle{altlongragged4col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|>{\raggedright}p{\glsdescwidth}|l|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+\newglossarystyle{altlongragged4colheaderborder}{%
+ \setglossarystyle{altlongragged4col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|>{\raggedright}p{\glsdescwidth}|l|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{%
+ \hline\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries \symbolname&
+ \bfseries\pagelistname\tabularnewline\hline\endhead
+ \hline\endfoot}%
}
% \end{macrocode}
-%\fi
%\iffalse
% \begin{macrocode}
-%</example-glossaries-multipar.tex>
+%</glossary-longragged-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*example-glossaries-parent.tex>
+%<*glossary-mcols-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\iffalse
+% \subsection{Rollback v4.46 (glossary-mcols-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test glossary entries with child entries.
-%COMMENT
-
-\newglossaryentry{sedmattis}{name={sed mattis},description={erat sit amet}}
-
-\newglossaryentry{gravida}{parent={sedmattis},name={gravida},description={malesuada}}
-
-\newglossaryentry{elitaugue}{parent={sedmattis},name={elit augue},
-description={egestas diam}}
-
-\newglossaryentry{tempus}{parent={sedmattis},name={tempus},
-description={scelerisque}}
-
-\newglossaryentry{nunc}{name={nunc},description={nisl vitae}}
-
-\newglossaryentry{libero}{parent={nunc},name={libero},description={sed
-consequat}}
-
-\newglossaryentry{feugiat}{parent={nunc},name={feugiat},description={massa}}
-
-\newglossaryentry{porta}{parent={nunc},name={porta},description={eros
-in eleifend}}
-
-\newglossaryentry{variuserat}{parent={nunc},name={varius erat},
-description={leo rutrum dui}}
-
-\newglossaryentry{nonconvallis}{name={non
-convallis},description={lectus orci ut nibh}}
-
-\newglossaryentry{sedlorem}{parent={nonconvallis},name={sedlorem},description={massa}}
-
-\newglossaryentry{nonummyquis}{parent={nonconvallis},name={nonummy
-quis}, description={egestas id}}
-
-\newglossaryentry{condimentum}{name={condimentum},description={at
-nisl}}
-
-\newglossaryentry{maecenas}{parent={condimentum},name={maecenas},
-description={at nibh}}
-
-\newglossaryentry{aliquamet}{name={aliquam et},description={augue}}
-
-\newglossaryentry{atnunc}{parent={aliquamet},name={at nunc},description={pellentesque
-ullamcorper}}
-
-\newglossaryentry{duisnisl}{parent={atnunc},name={duisnisl},description={laoreet
-suscipit}}
-
-\newglossaryentry{duisnibh}{parent={atnunc},name={duisnibh},
-description={convallis ut}}
-
-\newglossaryentry{rutrum}{name={rutrum},description={id, enim}}
-
-\newglossaryentry{phasellus}{parent={rutrum},name={phasellus},
-description={odio}}
-
-\newglossaryentry{nullanulla}{parent={rutrum},name={nulla nulla},
-description={elit, molestie non}}
-
+\ProvidesPackage{glossary-mcols}[2020/03/19 v4.46 (NLCT)]
+\RequirePackage{multicol}
+\RequirePackage{glossary-tree}[=v4.46]
+\providecommand{\indexspace}{%
+ \par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@ \relax
+}
+\newcommand*{\glsmcols}{2}
+\newglossarystyle{mcolindex}{%
+ \setglossarystyle{index}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\glstreeitem
+ \let\subitem\glstreesubitem
+ \let\subsubitem\glstreesubsubitem
+ }%
+ {\end{multicols}}%
+}
+\newglossarystyle{mcolindexgroup}{%
+ \setglossarystyle{mcolindex}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\indexspace}%
+}
+\newglossarystyle{mcolindexhypergroup}{%
+ \setglossarystyle{mcolindex}%
+ \renewcommand*{\glossaryheader}{%
+ \item\glstreenavigationfmt{\glsnavigation}\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}%
+ \indexspace}%
+}
+\newglossarystyle{mcolindexspannav}{%
+ \setglossarystyle{index}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\glstreeitem}%
+ {\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}%
+ \indexspace}%
+}
+\newglossarystyle{mcoltree}{%
+ \setglossarystyle{tree}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+}
+\newglossarystyle{mcoltreegroup}{%
+ \setglossarystyle{mcoltree}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \noindent\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par\indexspace}%
+}
+\newglossarystyle{mcoltreehypergroup}{%
+ \setglossarystyle{mcoltree}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newglossarystyle{mcoltreespannav}{%
+ \setglossarystyle{tree}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newglossarystyle{mcoltreenoname}{%
+ \setglossarystyle{treenoname}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+}
+\newglossarystyle{mcoltreenonamegroup}{%
+ \setglossarystyle{mcoltreenoname}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \noindent\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par\indexspace}%
+}
+\newglossarystyle{mcoltreenonamehypergroup}{%
+ \setglossarystyle{mcoltreenoname}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newglossarystyle{mcoltreenonamespannav}{%
+ \setglossarystyle{treenoname}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newglossarystyle{mcolalttree}{%
+ \setglossarystyle{alttree}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}
+ \def\@gls@prevlevel{-1}%
+ \mbox{}\par
+ }%
+ {\par\end{multicols}}%
+}
+\newglossarystyle{mcolalttreegroup}{%
+ \setglossarystyle{mcolalttree}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par\indexspace}%
+}
+\newglossarystyle{mcolalttreehypergroup}{%
+ \setglossarystyle{mcolalttree}%
+ \renewcommand*{\glossaryheader}{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newglossarystyle{mcolalttreespannav}{%
+ \setglossarystyle{alttree}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]
+ \def\@gls@prevlevel{-1}%
+ \mbox{}\par
+ }%
+ {\par\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
% \end{macrocode}
-%\fi
%\iffalse
% \begin{macrocode}
-%</example-glossaries-parent.tex>
+%</glossary-mcols-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*example-glossaries-symbolnames.tex>
+%<*glossary-super-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\iffalse
+% \subsection{Rollback v4.46 (glossary-super-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test glossary entries with associated symbols.
-%COMMENT
-
-\newglossaryentry{sym.alpha}{sort={alpha},name={\ensuremath{\alpha}},
-description={Quisque ullamcorper placerat ipsum.}}
-
-\newglossaryentry{sym.beta}{sort={beta},name={\ensuremath{\beta}},
-description={Cras nibh.}}
-
-\newglossaryentry{sym.gamma}{sort={gamma},name={\ensuremath{\gamma}},
-description={Morbi vel justo vitae lacus tincidunt ultrices.}}
-
-\newglossaryentry{sym.delta}{sort={delta},name={\ensuremath{\delta}},
-description={Lorem ipsum dolor sit amet, consectetuer adipiscing
-elit.}}
-
-\newglossaryentry{sym.epsilon}{sort={epsilon},name={\ensuremath{\epsilon}},
-description={In hac habitasse platea dictumst.}}
-
-\newglossaryentry{sym.zeta}{sort={zeta},name={\ensuremath{\zeta}},
-description={Integer tempus convallis augue.}}
-
-\newglossaryentry{sym.eta}{sort={eta},name={\ensuremath{\eta}},
-description={Etiam facilisis.}}
-
-\newglossaryentry{sym.theta}{sort={theta},name={\ensuremath{\theta}},
-description={Nunc elementum fermentum wisi.}}
-
-\newglossaryentry{sym.iota}{sort={iota},name={\ensuremath{i}},
-description={Aenean placerat.}}
-
-\newglossaryentry{sym.kappa}{sort={kappa},name={\ensuremath{\kappa}},
-description={Ut imperdiet, enim sed gravida sollicitudin, felis odio
-placerat quam, ac pulvinar elit purus eget enim.}}
-
-\newglossaryentry{sym.lambda}{sort={lambda},name={\ensuremath{\lambda}},
-description={Nunc vitae tortor.}}
-
-\newglossaryentry{sym.mu}{sort={mu},name={\ensuremath{\mu}},
-description={Proin tempus nibh sit amet nisl.}}
-
-\newglossaryentry{sym.nu}{sort={nu},name={\ensuremath{\nu}},
-description={Vivamus quis tortor vitae risus porta vehicula.}}
-
-\newglossaryentry{sym.xi}{sort={xi},name={\ensuremath{\xi}},
-description={Fusce mauris.}}
-
-\newglossaryentry{sym.pi}{sort={pi},name={\ensuremath{\pi}},
-description={Vestibulum luctus nibh at lectus.}}
-
-\newglossaryentry{sym.rho}{sort={rho},name={\ensuremath{\rho}},
-description={Sed bibendum, nulla a faucibus semper, leo velit
-ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam.}}
-
-\newglossaryentry{sym.sigma}{sort={sigma},name={\ensuremath{\sigma}},
-description={Aliquam pellentesque, augue quis sagittis posuere,
-turpis lacus congue quam, in hendrerit risus eros eget felis.}}
-
-\newglossaryentry{sym.tau}{sort={tau},name={\ensuremath{\tau}},
-description={Maecenas eget erat in sapien mattis porttitor.}}
-
-\newglossaryentry{sym.upsilon}{sort={upsilon},name={\ensuremath{\upsilon}},
-description={Vestibulum porttitor.}}
-
-\newglossaryentry{sym.phi}{sort={phi},name={\ensuremath{\phi}},
-description={Nulla facilisi.}}
-
-\newglossaryentry{sym.chi}{sort={chi},name={\ensuremath{\chi}},
-description={Sed a turpis eu lacus commodo facilisis.}}
-
-\newglossaryentry{sym.psi}{sort={psi},name={\ensuremath{\psi}},
-description={Morbi fringilla, wisi in dignissim interdum, justo
-lectus sagittis dui, et vehicula libero dui cursus dui.}}
-
-\newglossaryentry{sym.omega}{sort={omega},name={\ensuremath{\omega}},
-description={Mauris tempor ligula sed lacus.}}
+\ProvidesPackage{glossary-super}[2020/03/19 v4.46 (NLCT)]
+\RequirePackage{supertabular}
+\@ifundefined{glsdescwidth}{%
+ \newlength\glsdescwidth
+ \setlength{\glsdescwidth}{0.6\hsize}
+}{}
+\@ifundefined{glspagelistwidth}{%
+ \newlength\glspagelistwidth
+ \setlength{\glspagelistwidth}{0.1\hsize}
+}{}
+\newglossarystyle{super}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& \tabularnewline}%
+ \fi
+}
+\newglossarystyle{superborder}{%
+ \setglossarystyle{super}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|p{\glsdescwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superheader}{%
+ \setglossarystyle{super}%
+\renewenvironment{theglossary}%
+ {\tablehead{\bfseries \entryname &
+ \bfseries\descriptionname\tabularnewline}%
+ \tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superheaderborder}{%
+ \setglossarystyle{super}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline\bfseries \entryname &
+ \bfseries \descriptionname\tabularnewline\hline}%
+ \tabletail{\hline}
+ \begin{supertabular}{|l|p{\glsdescwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{super3col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{super3colborder}{%
+ \setglossarystyle{super3col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|p{\glsdescwidth}|p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{super3colheader}{%
+ \setglossarystyle{super3col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{super3colheaderborder}{%
+ \setglossarystyle{super3colborder}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}{|l|p{\glsdescwidth}|p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{super4col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{llll}}{%
+ \end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} &
+ \glossentrysymbol{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{super4colheader}{%
+ \setglossarystyle{super4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline}%
+ \tabletail{}%
+ \begin{supertabular}{llll}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{super4colborder}{%
+ \setglossarystyle{super4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|l|l|l|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{super4colheaderborder}{%
+ \setglossarystyle{super4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}{|l|l|l|l|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuper4col}{%
+ \setglossarystyle{super4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuper4colheader}{%
+ \setglossarystyle{super4colheader}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuper4colborder}{%
+ \setglossarystyle{super4colborder}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}%
+ {|l|p{\glsdescwidth}|l|p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuper4colheaderborder}{%
+ \setglossarystyle{super4colheaderborder}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline
+ \bfseries\entryname &
+ \bfseries\descriptionname &
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}%
+ {|l|p{\glsdescwidth}|l|p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
% \end{macrocode}
-%\fi
%\iffalse
% \begin{macrocode}
-%</example-glossaries-symbolnames.tex>
+%</glossary-super-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*example-glossaries-symbols.tex>
+%<*glossary-superragged-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\iffalse
+% \subsection{Rollback v4.46 (glossary-superragged-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test glossary entries with associated symbols.
-%COMMENT
-
-\newglossaryentry{alpha}{name={alpha},symbol={\ensuremath{\alpha}},
-description={Quisque ullamcorper placerat ipsum.}}
-
-\newglossaryentry{beta}{name={beta},symbol={\ensuremath{\beta}},
-description={Cras nibh.}}
-
-\newglossaryentry{gamma}{name={gamma},symbol={\ensuremath{\gamma}},
-description={Morbi vel justo vitae lacus tincidunt ultrices.}}
-
-\newglossaryentry{delta}{name={delta},symbol={\ensuremath{\delta}},
-description={Lorem ipsum dolor sit amet, consectetuer adipiscing
-elit.}}
-
-\newglossaryentry{epsilon}{name={epsilon},symbol={\ensuremath{\epsilon}},
-description={In hac habitasse platea dictumst.}}
-
-\newglossaryentry{zeta}{name={zeta},symbol={\ensuremath{\zeta}},
-description={Integer tempus convallis augue.}}
-
-\newglossaryentry{eta}{name={eta},symbol={\ensuremath{\eta}},
-description={Etiam facilisis.}}
-
-\newglossaryentry{theta}{name={theta},symbol={\ensuremath{\theta}},
-description={Nunc elementum fermentum wisi.}}
-
-\newglossaryentry{iota}{name={iota},symbol={\ensuremath{i}},
-description={Aenean placerat.}}
-
-\newglossaryentry{kappa}{name={kappa},symbol={\ensuremath{\kappa}},
-description={Ut imperdiet, enim sed gravida sollicitudin, felis odio
-placerat quam, ac pulvinar elit purus eget enim.}}
-
-\newglossaryentry{lambda}{name={lambda},symbol={\ensuremath{\lambda}},
-description={Nunc vitae tortor.}}
-
-\newglossaryentry{mu}{name={mu},symbol={\ensuremath{\mu}},
-description={Proin tempus nibh sit amet nisl.}}
-
-\newglossaryentry{nu}{name={nu},symbol={\ensuremath{\nu}},
-description={Vivamus quis tortor vitae risus porta vehicula.}}
-
-\newglossaryentry{xi}{name={xi},symbol={\ensuremath{\xi}},
-description={Fusce mauris.}}
-
-\newglossaryentry{pi}{name={pi},symbol={\ensuremath{\pi}},
-description={Vestibulum luctus nibh at lectus.}}
-
-\newglossaryentry{rho}{name={rho},symbol={\ensuremath{\rho}},
-description={Sed bibendum, nulla a faucibus semper, leo velit
-ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam.}}
-
-\newglossaryentry{sigma}{name={sigma},symbol={\ensuremath{\sigma}},
-description={Aliquam pellentesque, augue quis sagittis posuere,
-turpis lacus congue quam, in hendrerit risus eros eget felis.}}
-
-\newglossaryentry{tau}{name={tau},symbol={\ensuremath{\tau}},
-description={Maecenas eget erat in sapien mattis porttitor.}}
-
-\newglossaryentry{upsilon}{name={upsilon},symbol={\ensuremath{\upsilon}},
-description={Vestibulum porttitor.}}
-
-\newglossaryentry{phi}{name={phi},symbol={\ensuremath{\phi}},
-description={Nulla facilisi.}}
-
-\newglossaryentry{chi}{name={chi},symbol={\ensuremath{\chi}},
-description={Sed a turpis eu lacus commodo facilisis.}}
-
-\newglossaryentry{psi}{name={psi},symbol={\ensuremath{\psi}},
-description={Morbi fringilla, wisi in dignissim interdum, justo
-lectus sagittis dui, et vehicula libero dui cursus dui.}}
-
-\newglossaryentry{omega}{name={omega},symbol={\ensuremath{\omega}},
-description={Mauris tempor ligula sed lacus.}}
+\ProvidesPackage{glossary-superragged}[2020/03/19 v4.46 (NLCT)]
+\RequirePackage{array}
+\RequirePackage{supertabular}
+\@ifundefined{glsdescwidth}{%
+ \newlength\glsdescwidth
+ \setlength{\glsdescwidth}{0.6\hsize}
+}{}
+\@ifundefined{glspagelistwidth}{%
+ \newlength\glspagelistwidth
+ \setlength{\glspagelistwidth}{0.1\hsize}
+}{}
+\newglossarystyle{superragged}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\space ##2%
+ \tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space
+ ##3%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& \tabularnewline}%
+ \fi
+}
+\newglossarystyle{superraggedborder}{%
+ \setglossarystyle{superragged}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|>{\raggedright}p{\glsdescwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superraggedheader}{%
+ \setglossarystyle{superragged}%
+\renewenvironment{theglossary}%
+ {\tablehead{\bfseries \entryname & \bfseries \descriptionname
+ \tabularnewline}%
+ \tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superraggedheaderborder}{%
+ \setglossarystyle{superragged}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline\bfseries \entryname &
+ \bfseries \descriptionname\tabularnewline\hline}%
+ \tabletail{\hline}
+ \begin{supertabular}{|l|>{\raggedright}p{\glsdescwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superragged3col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} &
+ ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{superragged3colborder}{%
+ \setglossarystyle{superragged3col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|>{\raggedright}p{\glsdescwidth}|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superragged3colheader}{%
+ \setglossarystyle{superragged3col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superragged3colheaderborder}{%
+ \setglossarystyle{superragged3colborder}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}{|l|>{\raggedright}p{\glsdescwidth}|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuperragged4col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} &
+ \glossentrysymbol{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{altsuperragged4colheader}{%
+ \setglossarystyle{altsuperragged4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuperragged4colborder}{%
+ \setglossarystyle{altsuper4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}%
+ {|l|>{\raggedright}p{\glsdescwidth}|l|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuperragged4colheaderborder}{%
+ \setglossarystyle{altsuperragged4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline
+ \bfseries\entryname &
+ \bfseries\descriptionname &
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}%
+ {|l|>{\raggedright}p{\glsdescwidth}|l|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
% \end{macrocode}
-%\fi
%\iffalse
% \begin{macrocode}
-%</example-glossaries-symbols.tex>
+%</glossary-superragged-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*example-glossaries-url.tex>
+%<*glossary-tree-2020-03-19.sty>
% \end{macrocode}
%\fi
-%\iffalse
+% \subsection{Rollback v4.46 (glossary-tree-2020-03-19.sty)}
+% Version 4.46 preserved for rollback.
% \begin{macrocode}
-%<<COMMENT
-% This file is part of the glossaries bundle
-% These are test glossary entries with URLs stored in
-% the user1 field.
-%COMMENT
-
-\newglossaryentry{aenean-url}{name={aenean},
- description={adipiscing auctor est},
- user1={http://uk.tug.org/}}
-
-\newglossaryentry{morbi-url}{name={morbi},
- description={quam arcu, malesuada sed, volutpat et, elementum sit
-amet, libero},
- user1={http://www.ctan.org/}}
-
-\newglossaryentry{duis-url}{name={duis},
- description={mattis},
- user1={http://www.tug.org/}}
-
- % Now try an active character
-\newglossaryentry{sed-url}{name={sed},
- description={cursus lectus quis odio (uses
-\texttt{\string\protect\string~})},
- user1={http://theoval.cmp.uea.ac.uk/\protect~nlct/}}
-
-\newglossaryentry{sed2-url}{name={sed},
- description={cursus lectus quis odio (uses
-\texttt{\string\string\string~})},
- user1={http://theoval.cmp.uea.ac.uk/\string~nlct/}}
-
-\newglossaryentry{sed3-url}{name={sed},
- description={cursus lectus quis odio (uses
-\texttt{\string\glstildechar})},
- user1={http://theoval.cmp.uea.ac.uk/\glstildechar nlct/}}
-
- % How do we deal with a percent character?
-
- % Temporarily change the category code
-
-\catcode`\%=12
-\newglossaryentry{phasellus-url}{name={phasellus},
- description={arcu (catcode change)},
- user1=http://theoval.cmp.uea.ac.uk/%7Enlct
+\ProvidesPackage{glossary-tree}[2020/03/19 v4.46 (NLCT)]
+\providecommand{\indexspace}{%
+ \par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@ \relax
}
-\catcode`\%=14
-
- % Use \%
-
-\newglossaryentry{phasellus2-url}{name={phasellus},
- description={arcu (uses \texttt{\string\%})},
- user1=http://theoval.cmp.uea.ac.uk/\%7Enlct
+\newcommand*{\glstreenamefmt}[1]{\textbf{#1}}
+\newcommand*{\glstreegroupheaderfmt}[1]{\glstreenamefmt{#1}}
+\newcommand*{\glstreenavigationfmt}[1]{\glstreenamefmt{#1}}
+\ifdef\@idxitem
+{\newcommand{\glstreeitem}{\@idxitem}}
+{\newcommand{\glstreeitem}{\par\hangindent40\p@}}
+\ifdef\subitem
+{\let\glstreesubitem\subitem}
+{\newcommand\glstreesubitem{\glstreeitem\hspace*{20\p@}}}
+\ifdef\subsubitem
+{\let\glstreesubsubitem\subsubitem}
+{\newcommand\glstreesubsubitem{\glstreeitem\hspace*{30\p@}}}
+\newcommand{\glstreepredesc}{\space}
+\newcommand{\glstreechildpredesc}{\space}
+\newglossarystyle{index}{%
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\glstreeitem
+ \let\subitem\glstreesubitem
+ \let\subsubitem\glstreesubsubitem
+ }%
+ {\par}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glossentry}[2]{%
+ \item\glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
+ \glstreepredesc \glossentrydesc{##1}\glspostdescription\space ##2%
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifcase##1\relax
+ % level 0
+ \item
+ \or
+ % level 1
+ \subitem
+ \glssubentryitem{##2}%
+ \else
+ % all other levels
+ \subsubitem
+ \fi
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}%
+ \ifglshassymbol{##2}{\space(\glossentrysymbol{##2})}{}%
+ \glstreechildpredesc\glossentrydesc{##2}\glspostdescription\space ##3%
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}}
+\newglossarystyle{indexgroup}{%
+ \setglossarystyle{index}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}%
+ \indexspace
+ }%
}
-
- % Use \glspercentchar
-
-\newglossaryentry{phasellus3-url}{name={phasellus},
- description={arcu (uses
- \texttt{\string\glspercentchar})},
- user1=http://theoval.cmp.uea.ac.uk/\glspercentchar 7Enlct
+\newglossarystyle{indexhypergroup}{%
+ \setglossarystyle{index}%
+ \renewcommand*{\glossaryheader}{%
+ \item\glstreenavigationfmt{\glsnavigation}\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}%
+ \indexspace}%
}
-
+\newglossarystyle{tree}{%
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}}%
+ {}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
+ \glstreepredesc\glossentrydesc{##1}\glspostdescription\space##2\par
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}%
+ \ifglshassymbol{##2}{\space(\glossentrysymbol{##2})}{}%
+ \glstreechildpredesc\glossentrydesc{##2}\glspostdescription\space ##3\par
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}}
+\newglossarystyle{treegroup}{%
+ \setglossarystyle{tree}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \noindent\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par
+ \indexspace}%
+}
+\newglossarystyle{treehypergroup}{%
+ \setglossarystyle{tree}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newlength\glstreeindent
+\setlength{\glstreeindent}{10pt}
+\newglossarystyle{treenoname}{%
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}}%
+ {}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
+ \glstreepredesc\glossentrydesc{##1}\glspostdescription\space##2\par
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstarget{##2}{\strut}%
+ \glossentrydesc{##2}\glspostdescription\space##3\par
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}%
+}
+\newglossarystyle{treenonamegroup}{%
+ \setglossarystyle{treenoname}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \noindent\glstreegroupheaderfmt
+ {\glsgetgrouptitle{##1}}\par\indexspace}%
+}
+\newglossarystyle{treenonamehypergroup}{%
+ \setglossarystyle{treenoname}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newrobustcmd*{\glsfindwidesttoplevelname}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglshasparent{\@glo@label}%
+ {}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \letcs{\@glswidestname}{glo@\glsdetoklabel{\@glo@label}@name}%
+ \fi
+ }%
+ }%
+ }%
+}
+\newcommand*{\glssetwidest}[2][0]{%
+ \expandafter\def\csname @glswidestname\romannumeral#1\endcsname{%
+ #2}%
+}
+\newcommand*{\@glswidestname}{}
+\newcommand*{\glstreenamebox}[2]{%
+ \makebox[#1][l]{#2}%
+}
+\newglossarystyle{alttree}{%
+ \renewenvironment{theglossary}%
+ {\def\@gls@prevlevel{-1}%
+ \mbox{}\par}%
+ {\par}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \ifnum\@gls@prevlevel=0\relax
+ \else
+ \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}%
+ \fi
+ \hangindent\glstreeindent
+ \parindent\glstreeindent
+ \makebox[0pt][r]{\glstreenamebox{\glstreeindent}{%
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}}}%
+ \ifglshassymbol{##1}{(\glossentrysymbol{##1})\space}{}%
+ \glossentrydesc{##1}\glspostdescription \space ##2\par
+ \def\@gls@prevlevel{0}%
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \ifnum\@gls@prevlevel=##1\relax
+ \else
+ \@ifundefined{@glswidestname\romannumeral##1}{%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}}{%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##1\endcsname\space}}}%
+ \ifnum\@gls@prevlevel<##1\relax
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+ \@ifundefined{@glswidestname\romannumeral\@gls@prevlevel}{%
+ \settowidth{\glstreeindent}{\glstreenamefmt{%
+ \@glswidestname\space}}}{%
+ \settowidth{\glstreeindent}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral\@gls@prevlevel
+ \endcsname\space}}}%
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+ \hangindent\glstreeindent
+ \makebox[0pt][r]{\glstreenamebox{\gls@tmplen}{%
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}}}%
+ \ifglshassymbol{##2}{(\glossentrysymbol{##2})\space}{}%
+ \glossentrydesc{##2}\glspostdescription\space ##3\par
+ \def\@gls@prevlevel{##1}%
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}%
+}
+\newglossarystyle{alttreegroup}{%
+ \setglossarystyle{alttree}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsgetgrouptitle{##1}}%
+ \par\indexspace}%
+}
+\newglossarystyle{alttreehypergroup}{%
+ \setglossarystyle{alttree}%
+ \renewcommand*{\glossaryheader}{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}}
% \end{macrocode}
-%\fi
%\iffalse
% \begin{macrocode}
-%</example-glossaries-url.tex>
+%</glossary-tree-2020-03-19.sty>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*glossaries-2020-03-19.sty>
+%<*glossaries-2021-11-01.sty>
% \end{macrocode}
%\fi
-% \section{Rollback v4.46 (glossaries-2020-03-19.sty)}
-% Version 4.46 preserved for rollback.
+%\subsection{Rollback v4.49 (glossaries-2021-11-01.sty)}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossaries}[2020/03/19 v4.46 (NLCT)]
+\DeclareRelease{v4.46}{2020-03-19}{glossaries-2020-03-19.sty}
+\DeclareCurrentRelease{v4.49}{2021-11-01}
+\ProvidesPackage{glossaries}[2021/11/01 v4.49 (NLCT)]
\RequirePackage{ifthen}
\RequirePackage{xkeyval}[2006/11/18]
\RequirePackage{mfirstuc}
@@ -31001,13 +40410,13 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}
\define@boolkey{glossaries.sty}[gls]{esclocations}[true]{}
\glsesclocationstrue
-\newcommand*{\@gls@loadlong}{\RequirePackage{glossary-long}}
+\newcommand*{\@gls@loadlong}{\RequirePackage{glossary-long}[=v4.49]}
\@gls@declareoption{nolong}{\renewcommand*{\@gls@loadlong}{}}
\IfFileExists{supertabular.sty}{%
- \newcommand*{\@gls@loadsuper}{\RequirePackage{glossary-super}}}{%
+ \newcommand*{\@gls@loadsuper}{\RequirePackage{glossary-super}[=v4.49]}}{%
\newcommand*{\@gls@loadsuper}{}}
\@gls@declareoption{nosuper}{\renewcommand*{\@gls@loadsuper}{}}
-\newcommand*{\@gls@loadlist}{\RequirePackage{glossary-list}[=v4.46]}
+\newcommand*{\@gls@loadlist}{\RequirePackage{glossary-list}[=v4.49]}
\@gls@declareoption{nolist}{%
\renewcommand*{\@gls@loadlist}{%
\ifdefstring{\@glossary@default@style}{list}%
@@ -31015,7 +40424,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
{}%
}%
}
-\newcommand*{\@gls@loadtree}{\RequirePackage{glossary-tree}}
+\newcommand*{\@gls@loadtree}{\RequirePackage{glossary-tree}[=v4.49]}
\@gls@declareoption{notree}{\renewcommand*{\@gls@loadtree}{}}
\@gls@declareoption{nostyles}{%
\renewcommand*{\@gls@loadlong}{}%
@@ -31138,13 +40547,13 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\expandafter\gdef\csname glo@##2@sort\endcsname{}%
}%
\def\@gls@setsort##1{%
- \edef\@glo@parent{\csname glo@##1@parent\endcsname}%
+ \protected@edef\@glo@parent{\csname glo@##1@parent\endcsname}%
\ifx\@glo@parent\@empty
\else
\expandafter\@gls@setsort\expandafter{\@glo@parent}%
\fi
- \edef\@glo@type{\csname glo@##1@type\endcsname}%
- \edef\@gls@tmp{\csname glo@##1@sort\endcsname}%
+ \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
@@ -31231,7 +40640,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\glsIfListOfAcronyms{#1}{}{\@addtoacronymlists{#1}}%
}
\newcommand{\glsIfListOfAcronyms}[1]{%
- \edef\@do@gls@islistofacronyms{%
+ \protected@edef\@do@gls@islistofacronyms{%
\noexpand\@gls@islistofacronyms{#1}{\@glsacronymlists}}%
\@do@gls@islistofacronyms
}
@@ -31674,11 +41083,34 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand*{\@@do@write@glslabels}{%
\newwrite\@gls@labelsfile
\immediate\openout\@gls@labelsfile=\jobname.glslabels
- \forallglsentries[\@glo@types,\@ignored@glossaries]{\@glsentry}%
- {\ifdefempty{\@glsentry}{}{\immediate\write\@gls@labelsfile{\@glsentry}}}%
+ \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
}
-\@gls@declareoption{writeglslabels}{\@do@write@glslabels}
+\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}
\define@choicekey{glossaries.sty}{automake}%
@@ -31826,7 +41258,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\fi
}
\ProcessOptionsX
-\RequirePackage{glossaries-compatible-307}
+\RequirePackage{glossaries-compatible-307}[=v4.49]
\disable@keys{glossaries.sty}{compatible-2.07,%
xindy,xindygloss,xindynoglsnumbers,makeindex,%
acronym,translate,notranslate,nolong,nosuper,notree,nostyles,%
@@ -32290,10 +41722,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\protected@edef\@gls@roman{\@roman{0\string"
\string"roman-numbers-lowercase\string" :sep \string"}}%
\@onelevel@sanitize\@gls@roman
- \edef\@tmp{\string" \string"roman-numbers-lowercase\string"
+ \edef\@gls@tmp{\string" \string"roman-numbers-lowercase\string"
:sep \string"}%
- \@onelevel@sanitize\@tmp
- \ifx\@tmp\@gls@roman
+ \@onelevel@sanitize\@gls@tmp
+ \ifx\@gls@tmp\@gls@roman
\expandafter
\edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{%
\string"roman-numbers-lowercase\string"%
@@ -32465,7 +41897,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\@for#1:=\@glsacronymlists\do{\ifx#1\@empty\else#2\fi}%
}
\newcommand*{\forglsentries}[3][\glsdefaulttype]{%
- \edef\@@glo@list{\csname glolist@#1\endcsname}%
+ \protected@edef\@@glo@list{\csname glolist@#1\endcsname}%
\@for#2:=\@@glo@list\do
{%
\ifdefempty{#2}{}{#3}%
@@ -32530,7 +41962,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\glsdoifexists{#1}%
{%
\def\do@glshaschildren{#3}%
- \edef\@gls@thislabel{\glsdetoklabel{#1}}%
+ \protected@edef\@gls@thislabel{\glsdetoklabel{#1}}%
\expandafter\forglsentries\expandafter
[\csname glo@\@gls@thislabel @type\endcsname]
{\glo@label}%
@@ -32676,7 +42108,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
{%
\gdef\glsdefaulttype{#2}%
}{}%
- \toks@{#2}\edef\@glo@types{\@glo@types\the\toks@,}%
+ \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}%
@@ -32723,10 +42155,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand*{\newignoredglossary}[1]{%
\ifdefempty\@ignored@glossaries
{%
- \edef\@ignored@glossaries{#1}%
+ \protected@edef\@ignored@glossaries{#1}%
}%
{%
- \eappto\@ignored@glossaries{,#1}%
+ \protected@eappto\@ignored@glossaries{,#1}%
}%
\csgdef{glolist@#1}{,}%
\ifcsundef{gls@#1@entryfmt}%
@@ -32739,12 +42171,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\renewcommand*{\@gls@nohyperlist}{#1}%
}%
{%
- \eappto\@gls@nohyperlist{,#1}%
+ \protected@eappto\@gls@nohyperlist{,#1}%
}%
}
\newcommand*{\@ignored@glossaries}{}
\newcommand*{\ifignoredglossary}[3]{%
- \edef\@gls@igtype{#1}%
+ \protected@edef\@gls@igtype{#1}%
\expandafter\DTLifinlist\expandafter
{\@gls@igtype}{\@ignored@glossaries}{#2}{#3}%
}
@@ -32808,7 +42240,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\@gls@see@noindex
}
\newcommand*{\gls@checkseeallowed@preambleonly}{%
- \GlossariesWarning{glossaries}%
+ \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
@@ -32985,7 +42417,6 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}%
}
\newcommand*{\gls@defdocnewglossaryentry}{%
- \let\gls@checkseeallowed\gls@checkseeallowed@preambleonly
\let\newglossaryentry\new@glossaryentry
}
\newrobustcmd{\provideglossaryentry}[2]{%
@@ -32996,6 +42427,10 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}%
}
\@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
{%
@@ -33003,11 +42438,33 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\immediate\openout\@gls@deffile=\jobname.glsdefs
}%
{}%
- \ifglsentryexists{#1}{}%
+ \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}%
}%
- \@gls@writedef{#1}%
}
\AtBeginDocument{\gls@begindocdefs}
\AtEndDocument{\ifdef\@gls@deffile{\closeout\@gls@deffile}{}}
@@ -33020,13 +42477,21 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\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\ifglsentryexists{#1}{}\glspercentchar^^J%
- \expandafter\@gobble\string\{\glspercentchar^^J%
- \string\gls@defglossaryentry{\glsdetoklabel{#1}}\glspercentchar^^J%
- \expandafter\@gobble\string\{\glspercentchar%
+ \string\glsdefs@newdocentry{\glsdetoklabel{#1}}\glspercentchar^^J%
+ \expandafter\@gobble\string\{\glspercentchar%
}%
\@for\@gls@map:=\@gls@keymap\do
{%
@@ -33046,9 +42511,8 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\glswritedefhook
\immediate\write\@gls@deffile
{%
- \glspercentchar^^J%
- \expandafter\@gobble\string\}\glspercentchar^^J%
- \expandafter\@gobble\string\}\glspercentchar%
+ \glspercentchar^^J%
+ \expandafter\@gobble\string\}\glspercentchar^^J%
}%
}
\newcommand*{\@gls@keymap}{%
@@ -33205,7 +42669,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand{\glsfieldxdef}[3]{%
\glsdoifexists{#1}%
{%
- \edef\@glo@label{\glsdetoklabel{#1}}%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
\ifcsdef{glo@\@glo@label @#2}%
{%
\protected@csxdef{glo@\@glo@label @#2}{#3}%
@@ -33218,7 +42682,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand{\glsfieldedef}[3]{%
\glsdoifexists{#1}%
{%
- \edef\@glo@label{\glsdetoklabel{#1}}%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
\ifcsdef{glo@\@glo@label @#2}%
{%
\protected@csedef{glo@\@glo@label @#2}{#3}%
@@ -33231,7 +42695,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand{\glsfieldgdef}[3]{%
\glsdoifexists{#1}%
{%
- \edef\@glo@label{\glsdetoklabel{#1}}%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
\ifcsdef{glo@\@glo@label @#2}%
{%
\expandafter\gdef\csname glo@\@glo@label @#2\endcsname{#3}%
@@ -33244,7 +42708,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand{\glsfielddef}[3]{%
\glsdoifexists{#1}%
{%
- \edef\@glo@label{\glsdetoklabel{#1}}%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
\ifcsdef{glo@\@glo@label @#2}%
{%
\expandafter\def\csname glo@\@glo@label @#2\endcsname{#3}%
@@ -33257,7 +42721,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand{\glsfieldfetch}[3]{%
\glsdoifexists{#1}%
{%
- \edef\@glo@label{\glsdetoklabel{#1}}%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
\ifcsdef{glo@\@glo@label @#2}%
{%
\letcs#3{glo@\@glo@label @#2}%
@@ -33267,10 +42731,15 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}%
}%
}
+\newcommand*{\glsunexpandedfieldvalue}[2]{%
+ \ifcsname glo@\glsdetoklabel{#1}@#2\endcsname
+ \expandafter\expandonce\csname glo@\glsdetoklabel{#1}@#2\expandafter\endcsname
+ \fi
+}
\newcommand{\ifglsfieldeq}[5]{%
\glsdoifexists{#1}%
{%
- \edef\@glo@label{\glsdetoklabel{#1}}%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
\ifcsdef{glo@\@glo@label @#2}%
{%
\ifcsstring{glo@\@glo@label @#2}{#3}{#4}{#5}%
@@ -33283,7 +42752,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand{\ifglsfielddefeq}[5]{%
\glsdoifexists{#1}%
{%
- \edef\@glo@label{\glsdetoklabel{#1}}%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
\ifcsdef{glo@\@glo@label @#2}%
{%
\expandafter\ifdefstrequal
@@ -33297,7 +42766,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand{\ifglsfieldcseq}[5]{%
\glsdoifexists{#1}%
{%
- \edef\@glo@label{\glsdetoklabel{#1}}%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
\ifcsdef{glo@\@glo@label @#2}%
{%
\ifcsstrequal{glo@\@glo@label @#2}{#3}{#4}{#5}%
@@ -33337,7 +42806,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\@onlypreamble{\longprovideglossaryentry}
\newcommand{\gls@defglossaryentry}[2]{%
\let\GlsSetQuote\gls@nosetquote
- \edef\@glo@label{\glsdetoklabel{#1}}%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
\let\glslabel\@glo@label
\let\@glo@name\@glsnoname
\let\@glo@desc\@glsnodesc
@@ -33376,7 +42845,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}%
{}%
\gls@assign@field{\glsdefaulttype}{\@glo@label}{type}{\@glo@type}%
- \edef\@glo@type{\glsentrytype{\@glo@label}}%
+ \protected@edef\@glo@type{\glsentrytype{\@glo@label}}%
\ifcsundef{glolist@\@glo@type}%
{%
\PackageError{glossaries}%
@@ -33394,7 +42863,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
{%
}%
\protected@edef\@glolist@{\csname glolist@\@glo@type\endcsname}%
- \expandafter\xdef\csname glolist@\@glo@type\endcsname{%
+ \expandafter\protected@xdef\csname glolist@\@glo@type\endcsname{%
\@glolist@{\@glo@label},}%
}%
\gls@level=0\relax
@@ -33410,7 +42879,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
{%
\ifglsentryexists{\@glo@parent}%
{%
- \expandafter\xdef\csname glo@\@glo@label @parent\endcsname{%
+ \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
@@ -33505,12 +42974,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\gls@assign@field\expandafter
{\csname glo@\@glo@label @symbol\endcsname}
{\@glo@label}{symbolplural}{\@glo@symbolplural}%
- \expandafter\xdef\csname glo@\@glo@label @flagfalse\endcsname{%
+ \expandafter\protected@xdef\csname glo@\@glo@label @flagfalse\endcsname{%
\noexpand\global
\noexpand\let\expandafter\noexpand
\csname ifglo@\@glo@label @flag\endcsname\noexpand\iffalse
}%
- \expandafter\xdef\csname glo@\@glo@label @flagtrue\endcsname{%
+ \expandafter\protected@xdef\csname glo@\@glo@label @flagtrue\endcsname{%
\noexpand\global
\noexpand\let\expandafter\noexpand
\csname ifglo@\@glo@label @flag\endcsname\noexpand\iftrue
@@ -33542,13 +43011,13 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand*{\@newglossaryentryposthook}{}
\newcommand*{\@newglossaryentry@defcounters}{}
\newcommand*{\glsmoveentry}[2]{%
- \edef\@glo@thislabel{\glsdetoklabel{#1}}%
- \edef\glo@type{\csname glo@\@glo@thislabel @type\endcsname}%
+ \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
- {}{\eappto\glo@list{\glo@label,}}%
+ {}{\protected@eappto\glo@list{\glo@label,}}%
}%
\cslet{glolist@\glo@type}{\glo@list}%
\csdef{glo@\@glo@thislabel @type}{#2}%
@@ -33566,12 +43035,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\string\subglossentry}
\fi
\newcommand{\@glo@storeentry}[1]{%
- \edef\@glo@esclabel{#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
- \edef\@glo@parent{\csname glo@#1@parent\endcsname}%
+ \protected@edef\@glo@parent{\csname glo@#1@parent\endcsname}%
\ifglsxindy
\ifx\@glo@parent\@empty
\expandafter\protected@xdef\csname glo@#1@index\endcsname{%
@@ -34277,12 +43746,12 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand*{\@gls@setdefault@glslink@opts}{}
\def\@gls@link[#1]#2#3{%
\leavevmode
- \edef\glslabel{\glsdetoklabel{#2}}%
+ \protected@edef\glslabel{\glsdetoklabel{#2}}%
\def\@gls@link@opts{#1}%
\let\@gls@link@label\glslabel
\def\@glsnumberformat{glsnumberformat}%
- \edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}%
- \edef\glstype{\csname glo@\glslabel @type\endcsname}%
+ \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@setdefault@glslink@opts
\do@glsdisablehyperinlist
@@ -34422,6 +43891,16 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\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}}
@@ -34614,6 +44093,33 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\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}%
@@ -35475,11 +44981,14 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newrobustcmd*{\Glsentryfirstplural}[1]{%
\@Gls@entry@field{#1}{firstpl}%
}
+\newcommand{\glscapitalisewords}[1]{%
+ \capitalisewords{#1}%
+}
\newrobustcmd*{\@glsentrytitlecase}[2]{%
\glsdoifexists{#1}%
{%
\glsfieldfetch{#1}{#2}{\@gls@value}%
- \xcapitalisewords{\@gls@value}%
+ \expandafter\glscapitalisewords\expandafter{\@gls@value}%
}%
}
\ifdef\texorpdfstring
@@ -35586,7 +45095,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\glsdoifexists{#1}%
{%
\bgroup
- \edef\@glo@label{\glsdetoklabel{#1}}%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
\let\@org@glsnumberformat\glsnumberformat
\def\glsnumberformat##1{##1}%
\protected@edef\the@numberlist{%
@@ -35629,7 +45138,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\glsdoifexists{#2}%
{%
\def\@glsnumberformat{glsnumberformat}%
- \edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}%
+ \protected@edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}%
\setkeys{glossadd}{#1}%
\@gls@saveentrycounter
\@gls@setsort{#2}%
@@ -35639,7 +45148,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\newcommand*{\@gls@adjustmode}{}
\AtBeginDocument{\renewcommand*{\@gls@adjustmode}{\ifvmode\mbox{}\fi}}
\newrobustcmd*{\glsaddall}[1][]{%
- \edef\@glo@type{\@glo@types}%
+ \protected@edef\@glo@type{\@glo@types}%
\setkeys{glossadd}{#1}%
\forallglsentries[\@glo@type]{\@glo@entry}{%
\glsadd[#1]{\@glo@entry}%
@@ -36005,6 +45514,16 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\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
@@ -36232,19 +45751,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\@disable@onlypremakeg
\let\gls@checkseeallowed\relax
\let\warn@nomakeglossaries\relax
- \def\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}%
- }%
- }%
+ \let\warn@noprintglossary\@makeglossaries@warn@noprintglossary
\ifglssavenumberlist
\edef\@gls@dodeflistparser{\noexpand\DeclareListParser
{\noexpand\glsnumlistparser}{\delimN}}%
@@ -36266,6 +45773,19 @@ false,nolabel,autolabel,nameref}[nolabel]{%
}%
}
\@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
@@ -36285,7 +45805,7 @@ false,nolabel,autolabel,nameref}[nolabel]{%
\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle
\let\gls@checkseeallowed\relax
\renewcommand{\@do@seeglossary}[2]{%
- \edef\@gls@label{\glsdetoklabel{##1}}%
+ \protected@edef\@gls@label{\glsdetoklabel{##1}}%
\protected@write\@auxout{}{%
\string\@gls@reference
{\csname glo@\@gls@label @type\endcsname}%
@@ -36505,9 +46025,9 @@ you
\newcommand*{\gls@romanpage}{\romannumeral\c@page}
\newcommand*{\gls@Romanpage}{\@Roman\c@page}
\newcommand*{\glsaddprotectedpagefmt}[1]{%
- \eappto\gls@protected@pagefmts{,\expandonce{\csname gls#1page\endcsname}}%
+ \protected@eappto\gls@protected@pagefmts{,\expandonce{\csname gls#1page\endcsname}}%
\csedef{gls#1page}{\expandonce{\csname#1\endcsname}\noexpand\c@page}%
- \eappto\@wrglossarynumberhook{%
+ \protected@eappto\@wrglossarynumberhook{%
\noexpand\let\expandonce{\csname org@gls#1\endcsname}%
\expandonce{\csname#1\endcsname}%
\noexpand\def\expandonce{\csname#1\endcsname}{%
@@ -36539,7 +46059,7 @@ you
}%
\@do@gls@getcounterprefix
\fi
- \edef\@gls@label{\glsdetoklabel{#1}}%
+ \protected@edef\@gls@label{\glsdetoklabel{#1}}%
\@@do@@wrglossary
}
\newif\ifglswrallowprimitivemods
@@ -36586,7 +46106,7 @@ you
}%
\@do@gls@getcounterprefix
\fi
- \edef\@gls@label{\glsdetoklabel{#1}}%
+ \protected@edef\@gls@label{\glsdetoklabel{#1}}%
\@@do@@wrglossary
}
\newcommand*{\@@do@@wrglossary}{%
@@ -36693,7 +46213,7 @@ you
\newcommand*{\gls@save@numberlist}[1]{%
\ifglssavenumberlist
\toks@{#1}%
- \edef\@do@writeaux@info{%
+ \protected@edef\@do@writeaux@info{%
\noexpand\csgdef{glo@\glscurrententrylabel @numberlist}{\the\toks@}%
}%
\@onelevel@sanitize\@do@writeaux@info
@@ -36774,11 +46294,11 @@ you
\let\gls@org@glossaryentryfield\glossentry
\let\gls@org@glossarysubentryfield\subglossentry
\renewcommand{\glossentry}[1]{%
- \xdef\glscurrententrylabel{\glsdetoklabel{##1}}%
+ \protected@xdef\glscurrententrylabel{\glsdetoklabel{##1}}%
\gls@org@glossaryentryfield{##1}%
}%
\renewcommand{\subglossentry}[2]{%
- \xdef\glscurrententrylabel{\glsdetoklabel{##2}}%
+ \protected@xdef\glscurrententrylabel{\glsdetoklabel{##2}}%
\gls@org@glossarysubentryfield{##1}{##2}%
}%
\@gls@preglossaryhook
@@ -36837,7 +46357,7 @@ you
\glosortentrieswarning
\def\@glo@sortinglist{}%
\def\@glo@sortinghandler{#1}%
- \edef\@glo@type{#2}%
+ \protected@edef\@glo@type{#2}%
\forlistcsloop{\@glo@do@sortentries}{@glsref@#2}%
\csdef{@glsref@#2}{}%
\@for\@this@label:=\@glo@sortinglist\do{%
@@ -36875,7 +46395,7 @@ you
\newcommand*{\@glo@do@sortentries}[1]{%
\ifglshasparent{#1}%
{%
- \edef\@glo@parent{\csuse{glo@\glsdetoklabel{#1}@parent}}%
+ \protected@edef\@glo@parent{\csuse{glo@\glsdetoklabel{#1}@parent}}%
\ifcsundef{@glo@sortingchildren@\@glo@parent}%
{%
\csdef{@glo@sortingchildren@\@glo@parent}{}%
@@ -37266,7 +46786,7 @@ you
}
\newcommand*{\glsstepsubentry}[1]{%
\ifglssubentrycounter
- \edef\currentglssubentry{\glsdetoklabel{#1}}%
+ \protected@edef\currentglssubentry{\glsdetoklabel{#1}}%
\refstepcounter{glossarysubentry}%
\label{\GlsEntryCounterLabelPrefix\currentglssubentry}%
\fi
@@ -37528,8 +47048,8 @@ you
\def\@gls@removespaces#1 #2\@nil{%
\toks@=\expandafter{\the\toks@#1}%
\ifx\\#2\\%
- \edef\x{\the\toks@}%
- \ifx\x\empty
+ \edef\@gls@x{\the\toks@}%
+ \ifx\@gls@x\empty
\else
\hyperlink{\glsentrycounter\@glo@counterprefix\the\toks@}%
{\the\toks@}%
@@ -38207,7 +47727,25 @@ you
\let\gls@assign@firstpl\@org@gls@assign@firstpl
\let\gls@assign@plural\@org@gls@assign@plural
\let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+ \@@gls@noexpand@assign@default@plurals
+}
+\newcommand*{\@@gls@noexpand@assign@default@plurals}{%
+ \expandafter\ifx\csname glo@\the\glslabeltok @plural\endcsname\@@gls@@default@acr@plural
+ \csxdef{glo@\the\glslabeltok @plural}{\expandonce\@glo@shortpl}%
+ \fi
+ \expandafter\ifx\csname glo@\the\glslabeltok @firstpl\endcsname\@@gls@@default@acr@firstplural
+ \csxdef{glo@\the\glslabeltok @firstpl}{%
+ \expandonce\@glo@longpl\glsspace(\expandonce\@glo@shortpl)}%
+ \fi
+ \expandafter\ifx\csname glo@\the\glslabeltok @descplural\endcsname\@@gls@@default@acr@descplural
+ \csxdef{glo@\the\glslabeltok @descplural}{\expandonce\@glo@longpl}%
+ \fi
+}
+\newcommand*{\@@gls@@default@acr@plural}{\expandonce\@glo@shortpl}
+\newcommand*{\@@gls@@default@acr@firstplural}{%
+ \expandonce\@glo@longpl\glsspace(\expandonce\@glo@shortpl)%
}
+\newcommand*{\@@gls@@default@acr@descplural}{\expandonce\@glo@longpl}
\newcommand*{\SetDefaultAcronymStyle}{%
\@for\@gls@type:=\@glsacronymlists\do{%
\SetDefaultAcronymDisplayStyle{\@gls@type}%
@@ -38298,6 +47836,18 @@ you
\let\gls@assign@symbolplural\@org@gls@assign@symbolplural
}
\newcommand*{\SetDescriptionFootnoteAcronymStyle}{%
+ \ifglsacrsmallcaps
+ \@gls@deprecated@acr@warning{footnote,smallcaps,description}%
+ {footnote-sc-desc}{short-sc-footnote-desc}%
+ \else
+ \ifglsacrsmaller
+ \@gls@deprecated@acr@warning{footnote,smaller,description}%
+ {footnote-sm-desc}{short-sm-footnote-desc}%
+ \else
+ \@gls@deprecated@acr@warning{footnote,description}%
+ {footnote-desc}{short-footnote-desc}%
+ \fi
+ \fi
\renewcommand{\newacronym}[4][]{%
\ifx\@glsacronymlists\@empty
\def\@glo@type{\acronymtype}%
@@ -38378,6 +47928,7 @@ you
can't both be set}{}%
\fi
\fi
+ \@gls@deprecated@acr@warning{dua,description}{dua-desc}{long-noshort-desc}%
\renewcommand{\newacronym}[4][]{%
\ifx\@glsacronymlists\@empty
\def\@glo@type{\acronymtype}%
@@ -38467,6 +48018,18 @@ you
\let\gls@assign@symbolplural\@org@gls@assign@symbolplural
}
\newcommand*{\SetDescriptionAcronymStyle}{%
+ \ifglsacrsmallcaps
+ \@gls@deprecated@acr@warning{smallcaps,description}%
+ {long-sc-short-desc}{long-short-sc-desc}%
+ \else
+ \ifglsacrsmaller
+ \@gls@deprecated@acr@warning{smaller,description}%
+ {long-sm-short-desc}{long-short-sm-desc}%
+ \else
+ \@gls@deprecated@acr@warning{description}%
+ {long-short-desc}{long-short-desc}%
+ \fi
+ \fi
\renewcommand{\newacronym}[4][]{%
\ifx\@glsacronymlists\@empty
\def\@glo@type{\acronymtype}%
@@ -38559,6 +48122,15 @@ you
\let\gls@assign@descplural\@org@gls@assign@descplural
}
\newcommand*{\SetFootnoteAcronymStyle}{%
+ \ifglsacrsmallcaps
+ \@gls@deprecated@acr@warning{footnote,smallcaps}{footnote-sc}{short-sc-footnote}%
+ \else
+ \ifglsacrsmaller
+ \@gls@deprecated@acr@warning{footnote,smaller}{footnote-sm}{short-sm-footnote}%
+ \else
+ \@gls@deprecated@acr@warning{footnote}{footnote}{short-footnote}%
+ \fi
+ \fi
\renewcommand{\newacronym}[4][]{%
\ifx\@glsacronymlists\@empty
\def\@glo@type{\acronymtype}%
@@ -38678,6 +48250,11 @@ you
\let\gls@assign@symbolplural\@org@gls@assign@symbolplural
}
\newcommand*{\SetSmallAcronymStyle}{%
+ \ifglsacrsmallcaps
+ \@gls@deprecated@acr@warning{smallcaps}{long-sc-short}{long-short-sc}%
+ \else
+ \@gls@deprecated@acr@warning{smaller}{long-sm-short}{long-short-sm}%
+ \fi
\renewcommand{\newacronym}[4][]{%
\ifx\@glsacronymlists\@empty
\def\@glo@type{\acronymtype}%
@@ -38758,6 +48335,7 @@ you
\let\gls@assign@descplural\@org@gls@assign@descplural
}
\newcommand*{\SetDUAStyle}{%
+ \@gls@deprecated@acr@warning{dua}{dua}{long-noshort}%
\renewcommand{\newacronym}[4][]{%
\ifx\@glsacronymlists\@empty
\def\@glo@type{\acronymtype}%
@@ -38776,6 +48354,12 @@ you
\SetDUADisplayStyle{\@gls@type}%
}%
}
+\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}%
+}
\newcommand*{\SetAcronymStyle}{%
\SetDefaultAcronymStyle
\ifglsacrdescription
@@ -38857,7 +48441,7 @@ you
\SetCustomDisplayStyle{\@gls@type}%
}%
}
-\RequirePackage{glossary-hypernav}
+\RequirePackage{glossary-hypernav}[=v4.49]
\@gls@loadlist
\@gls@loadlong
\@gls@loadsuper
@@ -38966,35 +48550,6201 @@ you
\expandafter\show\csname glolist@#1\endcsname
}
\csname ifglscompatible-2.07\endcsname
- \RequirePackage{glossaries-compatible-207}
+ \RequirePackage{glossaries-compatible-207}[=v4.49]
\fi
% \end{macrocode}
%\iffalse
% \begin{macrocode}
-%</glossaries-2020-03-19.sty>
+%</glossaries-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-accsupp-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossaries-accsupp-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-accsupp}[2021/11/01 v4.49 (NLCT)
+ Experimental glossaries accessibility]
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{glossaries}}
+\ProcessOptions
+\@ifpackageloaded{glossaries-extra}
+{%
+ \ifx\@glsxtr@doaccsupp\empty
+ \GlossariesWarning{The `glossaries-accsupp'
+ package has been loaded\MessageBreak
+ after the `glossaries-extra' package. This\MessageBreak
+ can cause a failure to integrate both packages. \MessageBreak
+ Either use the `accsupp' option when you load\MessageBreak
+ `glossaries-extra' or load `glossaries-accsupp'\MessageBreak
+ before loading `glossaries-extra'}%
+ \fi
+}
+{}
+\def\compatibleglossentry#1#2{%
+ \toks@{#2}%
+ \protected@edef\@do@glossentry{%
+ \noexpand\accsuppglossaryentryfield{#1}%
+ {\noexpand\glsnamefont
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#1}@name\endcsname}}%
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#1}@desc\endcsname}%
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#1}@symbol\endcsname}%
+ {\the\toks@}%
+ }%
+ \@do@glossentry
+}
+\def\compatiblesubglossentry#1#2#3{%
+ \toks@{#3}%
+ \protected@edef\@do@subglossentry{%
+ \noexpand\accsuppglossarysubentryfield{\number#1}%
+ {#2}%
+ {\noexpand\glsnamefont
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#2}@name\endcsname}}%
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#2}@desc\endcsname}%
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#2}@symbol\endcsname}%
+ {\the\toks@}%
+ }%
+ \@do@subglossentry
+}
+\RequirePackage{glossaries}[=v4.49]
+\providecommand{\gls@accsupp@engine}{accsupp}
+\providecommand{\gls@accessibility}[4]{#4}
+\ifdefstring\gls@accsupp@engine{accsupp}
+{
+ \RequirePackage{accsupp}
+ \renewcommand{\gls@accessibility}[4]{%
+ \BeginAccSupp{#1,#2={#3}}#4\EndAccSupp{}%
+ }
+}
+{}
+\newcommand{\glsaccessibility}[4][]{%
+ \@glsshowaccsupp{#1}{#2}{#3}%
+ \gls@accessibility{#1}{#2}{#3}{#4}%
+}
+\define@key{glossentry}{access}{%
+ \def\@glo@access{#1}%
+}
+\define@key{glossentry}{textaccess}{%
+ \def\@glo@textaccess{#1}%
+}
+\define@key{glossentry}{firstaccess}{%
+ \def\@glo@firstaccess{#1}%
+}
+\define@key{glossentry}{pluralaccess}{%
+ \def\@glo@pluralaccess{#1}%
+}
+\define@key{glossentry}{firstpluralaccess}{%
+ \def\@glo@firstpluralaccess{#1}%
+}
+\define@key{glossentry}{symbolaccess}{%
+ \def\@glo@symbolaccess{#1}%
+}
+\define@key{glossentry}{symbolpluralaccess}{%
+ \def\@glo@symbolpluralaccess{#1}%
+}
+\define@key{glossentry}{descriptionaccess}{%
+ \def\@glo@descaccess{#1}%
+}
+\define@key{glossentry}{descriptionpluralaccess}{%
+ \def\@glo@descpluralaccess{#1}%
+}
+\define@key{glossentry}{shortaccess}{%
+ \def\@glo@shortaccess{#1}%
+}
+\define@key{glossentry}{shortpluralaccess}{%
+ \def\@glo@shortpluralaccess{#1}%
+}
+\define@key{glossentry}{longaccess}{%
+ \def\@glo@longaccess{#1}%
+}
+\define@key{glossentry}{longpluralaccess}{%
+ \def\@glo@longpluralaccess{#1}%
+}
+\define@key{glossentry}{user1access}{%
+ \def\@glo@useriaccess{#1}%
+}
+\define@key{glossentry}{user2access}{%
+ \def\@glo@useriiaccess{#1}%
+}
+\define@key{glossentry}{user3access}{%
+ \def\@glo@useriiiaccess{#1}%
+}
+\define@key{glossentry}{user4access}{%
+ \def\@glo@userivaccess{#1}%
+}
+\define@key{glossentry}{user5access}{%
+ \def\@glo@uservaccess{#1}%
+}
+\define@key{glossentry}{user6access}{%
+ \def\@glo@userviaccess{#1}%
+}
+\appto\@gls@keymap{,%
+ {access}{access},%
+ {textaccess}{textaccess},%
+ {firstaccess}{firstaccess},%
+ {pluralaccess}{pluralaccess},%
+ {firstpluralaccess}{firstpluralaccess},%
+ {symbolaccess}{symbolaccess},%
+ {symbolpluralaccess}{symbolpluralaccess},%
+ {descaccess}{descaccess},%
+ {descpluralaccess}{descpluralaccess},%
+ {shortaccess}{shortaccess},%
+ {shortpluralaccess}{shortpluralaccess},%
+ {longaccess}{longaccess},%
+ {longpluralaccess}{longpluralaccess},%
+ {user1access}{useriaccess},%
+ {user2access}{useriiaccess},%
+ {user3access}{useriiiaccess},%
+ {user4access}{userivaccess},%
+ {user5access}{uservaccess},%
+ {user6access}{userviaccess}%
+}
+\def\@gls@noaccess{\relax}
+\let\@gls@oldnewglossaryentryprehook\@newglossaryentryprehook
+\renewcommand*{\@newglossaryentryprehook}{%
+ \@gls@oldnewglossaryentryprehook
+ \def\@glo@access{\relax}%
+ \def\@glo@textaccess{\@glo@access}%
+ \def\@glo@firstaccess{\@glo@access}%
+ \def\@glo@pluralaccess{\@glo@textaccess}%
+ \def\@glo@firstpluralaccess{\@glo@pluralaccess}%
+ \def\@glo@symbolaccess{\relax}%
+ \def\@glo@symbolpluralaccess{\@glo@symbolaccess}%
+ \def\@glo@descaccess{\relax}%
+ \def\@glo@descpluralaccess{\@glo@descaccess}%
+ \def\@glo@shortaccess{\relax}%
+ \def\@glo@shortpluralaccess{\@glo@shortaccess}%
+ \def\@glo@longaccess{\relax}%
+ \def\@glo@longpluralaccess{\@glo@longaccess}%
+ \def\@glo@useriaccess{\relax}%
+ \def\@glo@useriiaccess{\relax}%
+ \def\@glo@useriiiaccess{\relax}%
+ \def\@glo@userivaccess{\relax}%
+ \def\@glo@uservaccess{\relax}%
+ \def\@glo@userviaccess{\relax}%
+}
+\let\@gls@oldnewglossaryentryposthook\@newglossaryentryposthook
+\renewcommand*{\@newglossaryentryposthook}{%
+ \@gls@oldnewglossaryentryposthook
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @access\endcsname{%
+ \@glo@access}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @textaccess\endcsname{%
+ \@glo@textaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @firstaccess\endcsname{%
+ \@glo@firstaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @pluralaccess\endcsname{%
+ \@glo@pluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @firstpluralaccess\endcsname{%
+ \@glo@firstpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @symbolaccess\endcsname{%
+ \@glo@symbolaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @symbolpluralaccess\endcsname{%
+ \@glo@symbolpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @descaccess\endcsname{%
+ \@glo@descaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @descpluralaccess\endcsname{%
+ \@glo@descpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @shortaccess\endcsname{%
+ \@glo@shortaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @shortpluralaccess\endcsname{%
+ \@glo@shortpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @longaccess\endcsname{%
+ \@glo@longaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @longpluralaccess\endcsname{%
+ \@glo@longpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @useriaccess\endcsname{%
+ \@glo@useriaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @useriiaccess\endcsname{%
+ \@glo@useriiaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @useriiiaccess\endcsname{%
+ \@glo@useriiiaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @userivaccess\endcsname{%
+ \@glo@userivaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @uservaccess\endcsname{%
+ \@glo@uservaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @userviaccess\endcsname{%
+ \@glo@userviaccess}%
+}
+\newcommand*{\glsentryaccess}[1]{%
+ \@gls@entry@field{#1}{access}%
+}
+\newcommand*{\glsentrytextaccess}[1]{%
+ \@gls@entry@field{#1}{textaccess}%
+}
+\newcommand*{\glsentryfirstaccess}[1]{%
+ \@gls@entry@field{#1}{firstaccess}%
+}
+\newcommand*{\glsentrypluralaccess}[1]{%
+ \@gls@entry@field{#1}{pluralaccess}%
+}
+\newcommand*{\glsentryfirstpluralaccess}[1]{%
+ \@gls@entry@field{#1}{firstpluralaccess}%
+}
+\newcommand*{\glsentrysymbolaccess}[1]{%
+ \@gls@entry@field{#1}{symbolaccess}%
+}
+\newcommand*{\glsentrysymbolpluralaccess}[1]{%
+ \@gls@entry@field{#1}{symbolpluralaccess}%
+}
+\newcommand*{\glsentrydescaccess}[1]{%
+ \@gls@entry@field{#1}{descaccess}%
+}
+\newcommand*{\glsentrydescpluralaccess}[1]{%
+ \@gls@entry@field{#1}{descpluralaccess}%
+}
+\newcommand*{\glsentryshortaccess}[1]{%
+ \@gls@entry@field{#1}{shortaccess}%
+}
+\newcommand*{\glsentryshortpluralaccess}[1]{%
+ \@gls@entry@field{#1}{shortpluralaccess}%
+}
+\newcommand*{\glsentrylongaccess}[1]{%
+ \@gls@entry@field{#1}{longaccess}%
+}
+\newcommand*{\glsentrylongpluralaccess}[1]{%
+ \@gls@entry@field{#1}{longpluralaccess}%
+}
+\newcommand*{\glsentryuseriaccess}[1]{%
+ \@gls@entry@field{#1}{useriaccess}%
+}
+\newcommand*{\glsentryuseriiaccess}[1]{%
+ \@gls@entry@field{#1}{useriiaccess}%
+}
+\newcommand*{\glsentryuseriiiaccess}[1]{%
+ \@gls@entry@field{#1}{useriiiaccess}%
+}
+\newcommand*{\glsentryuserivaccess}[1]{%
+ \@gls@entry@field{#1}{userivaccess}%
+}
+\newcommand*{\glsentryuservaccess}[1]{%
+ \@gls@entry@field{#1}{uservaccess}%
+}
+\newcommand*{\glsentryuserviaccess}[1]{%
+ \@gls@entry@field{#1}{userviaccess}%
+}
+\newcommand{\glsfieldaccsupp}[4]{%
+ \ifdef\glscategory
+ {%
+ \ifcsdef{glsxtr\glscategory{#4}#3accsupp}%
+ {\csname glsxtr\glscategory{#4}#3accsupp\endcsname{#1}{#2}}%
+ {%
+ \ifcsdef{glsxtr\glscategory{#4}accsupp}%
+ {\csname glsxtr\glscategory{#4}accsupp\endcsname{#1}{#2}}%
+ {%
+ \ifcsdef{gls#3accsupp}%
+ {\csname gls#3accsupp\endcsname{#1}{#2}}%
+ {\glsaccsupp{#1}{#2}}%
+ }%
+ }%
+ }%
+ {%
+ \ifcsdef{gls#3accsupp}%
+ {\csname gls#3accsupp\endcsname{#1}{#2}}%
+ {\glsaccsupp{#1}{#2}}%
+ }%
+}
+\newcommand{\xglsfieldaccsupp}[1]{%
+ \protected@edef\@gls@replacementtext{#1}%
+ \expandafter\glsfieldaccsupp\expandafter{\@gls@replacementtext}%
+}
+\newcommand*{\glsshortaccsupp}[2]{\glsaccessibility{E}{#1}{#2}}
+\newcommand*{\glsshortplaccsupp}{\glsshortaccsupp}
+\newcommand*{\glsaccsupp}[2]{\glsaccessibility{ActualText}{#1}{#2}}
+\newcommand*{\xglsaccsupp}[2]{%
+ \protected@edef\@gls@replacementtext{#1}%
+ \expandafter\glsaccsupp\expandafter{\@gls@replacementtext}{#2}%
+}
+\newcommand*{\@gls@access@display}[2]{%
+ \protected@edef\@glo@access{#2}%
+ \ifx\@glo@access\@gls@noaccess
+ #1%
+ \else
+ \xglsaccsupp{\@glo@access}{#1}%
+ \fi
+}
+\newcommand*{\@gls@fieldaccess@display}[4]{%
+ \protected@edef\@glo@access{#4}%
+ \ifdefequal\@glo@access\@gls@noaccess
+ {#3}%
+ {\expandafter\glsfieldaccsupp\expandafter{\@glo@access}{#3}{#2}{#1}}%
+}
+\newrobustcmd*{\glsnameaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@access}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{name}{#1}{\glsentryaccess{#2}}}%
+}
+\newrobustcmd*{\glstextaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@textaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{text}{#1}{\glsentrytextaccess{#2}}}%
+}
+\newrobustcmd*{\glspluralaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@pluralaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{plural}{#1}{\glsentrypluralaccess{#2}}}%
+}
+\newrobustcmd*{\glsfirstaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@firstaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{first}{#1}{\glsentryfirstaccess{#2}}}%
+}
+\newrobustcmd*{\glsfirstpluralaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@firstpluralaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{firstpl}{#1}{\glsentryfirstpluralaccess{#2}}}%
+}
+\newrobustcmd*{\glssymbolaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@symbolaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{symbol}{#1}{\glsentrysymbolaccess{#2}}}%
+}
+\newrobustcmd*{\glssymbolpluralaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@symbolpluralaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{symbolplural}{#1}{\glsentrysymbolpluralaccess{#2}}}%
+}
+\newrobustcmd*{\glsdescriptionaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@descaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{desc}{#1}{\glsentrydescaccess{#2}}}%
+}
+\newrobustcmd*{\glsdescriptionpluralaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@descpluralaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{descplural}{#1}{\glsentrydescpluralaccess{#2}}}%
+}
+\newrobustcmd*{\glsshortaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@shortaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{short}{#1}{\glsentryshortaccess{#2}}}%
+}
+\newrobustcmd*{\glsshortpluralaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@shortpluralaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{shortpl}{#1}{\glsentryshortpluralaccess{#2}}}%
+}
+\newrobustcmd*{\glslongaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@longaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{long}{#1}{\glsentrylongaccess{#2}}}%
+}
+\newrobustcmd*{\glslongpluralaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@longpluralaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{longpl}{#1}{\glsentrylongpluralaccess{#2}}}%
+}
+\newrobustcmd*{\glsuseriaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@useriaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{useri}{#1}{\glsentryuseriaccess{#2}}}%
+}
+\newrobustcmd*{\glsuseriiaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@useriiaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{userii}{#1}{\glsentryuseriiaccess{#2}}}%
+}
+\newrobustcmd*{\glsuseriiiaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@useriiiaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{useriii}{#1}{\glsentryuseriiiaccess{#2}}}%
+}
+\newrobustcmd*{\glsuserivaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@userivaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{useriv}{#1}{\glsentryuserivaccess{#2}}}%
+}
+\newrobustcmd*{\glsuservaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@uservaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{userv}{#1}{\glsentryuservaccess{#2}}}%
+}
+\newrobustcmd*{\glsuserviaccessdisplay}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@userviaccess}%
+ {#1}%
+ {\@gls@fieldaccess@display{#2}{uservi}{#1}{\glsentryuserviaccess{#2}}}%
+}
+\newrobustcmd*{\glsaccessdisplay}[3]{%
+ \ifcsundef{gls#1accessdisplay}%
+ {%
+ \PackageError{glossaries-accsupp}{No accessibility support
+ for key `#1'}{}%
+ }%
+ {%
+ \csname gls#1accessdisplay\endcsname{#2}{#3}%
+ }%
+}
+\renewcommand*{\@@gls@default@entryfmt}[2]{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ #2{\glspluralaccessdisplay
+ {\glsentryplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}
+ {\glsinsert}%
+ }%
+ {%
+ #1{\glsfirstpluralaccessdisplay
+ {\glsentryfirstplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ #2{\glspluralaccessdisplay
+ {\Glsentryplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ {%
+ #1{\glsfirstpluralaccessdisplay
+ {\Glsentryfirstplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \MakeUppercase{%
+ #2{\glspluralaccessdisplay
+ {\glsentryplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}}%
+ }%
+ {%
+ \MakeUppercase{%
+ #1{\glsfirstpluralaccessdisplay
+ {\glsentryfirstplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}}%
+ }%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ #2{\glstextaccessdisplay
+ {\glsentrytext{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ {%
+ #1{\glsfirstaccessdisplay
+ {\glsentryfirst{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ #2{\glstextaccessdisplay
+ {\Glsentrytext{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ {%
+ #1{\glsfirstaccessdisplay
+ {\Glsentryfirst{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \MakeUppercase{%
+ #2{\glstextaccessdisplay
+ {\glsentrytext{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}}%
+ }%
+ {%
+ \MakeUppercase{%
+ #1{\glsfirstaccessdisplay
+ {\glsentryfirst{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \ifglsused{\glslabel}%
+ {%
+ #2{\glscustomtext}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ {%
+ #1{\glscustomtext}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+}
+\renewcommand*{\glsgenentryfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ \glspluralaccessdisplay
+ {\glsentryplural{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+ \glsfirstpluralaccessdisplay
+ {\glsentryfirstplural{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \glspluralaccessdisplay
+ {\Glsentryplural{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+ \glsfirstpluralaccessdisplay
+ {\Glsentryfirstplural{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \glspluralaccessdisplay
+ {\mfirstucMakeUppercase{\glsentryplural{\glslabel}}}%
+ {\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ {%
+ \glsfirstpluralacessdisplay
+ {\mfirstucMakeUppercase{\glsentryfirstplural{\glslabel}}}%
+ {\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ \glstextaccessdisplay{\glsentrytext{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+ \glsfirstaccessdisplay{\glsentryfirst{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \glstextaccessdisplay{\Glsentrytext{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+ \glsfirstaccessdisplay{\Glsentryfirst{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \glstextaccessdisplay
+ {\mfirstucMakeUppercase{\glsentrytext{\glslabel}}}{\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ {%
+ \glsfirstaccessdisplay
+ {\mfirstucMakeUppercase{\glsentryfirst{\glslabel}}}{\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \glscustomtext\glsinsert
+ }%
+}
+\renewcommand*{\glsgenacfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \acronymfont
+ {\glsshortpluralaccessdisplay
+ {\glsentryshortpl{\glslabel}}{\glslabel}}%
+ \glsinsert
+ }%
+ {%
+ \acronymfont
+ {\glsshortpluralaccessdisplay
+ {\Glsentryshortpl{\glslabel}}{\glslabel}}%
+ \glsinsert
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\acronymfont
+ {\glsshortpluralaccessdisplay
+ {\glsentryshortpl{\glslabel}}{\glslabel}}%
+ \glsinsert}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \acronymfont
+ {\glsshortaccessdisplay{\glsentryshort{\glslabel}}{\glslabel}}%
+ \glsinsert
+ }%
+ {%
+ \acronymfont
+ {\glsshortaccessdisplay{\Glsentryshort{\glslabel}}{\glslabel}}%
+ \glsinsert
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\acronymfont{%
+ \glsshortaccessdisplay{\glsentryshort{\glslabel}}{\glslabel}}%
+ \glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\genplacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \mfirstucMakeUppercase
+ {\genacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \glscustomtext
+ }%
+}
+\renewcommand*{\genacrfullformat}[2]{%
+ \glslongaccessdisplay{\glsentrylong{#1}}{#1}#2\space
+ (\glsshortaccessdisplay{\protect\firstacronymfont{\glsentryshort{#1}}}{#1})%
+}
+\renewcommand*{\Genacrfullformat}[2]{%
+ \glslongaccessdisplay{\Glsentrylong{#1}}{#1}#2\space
+ (\glsshortaccessdisplay{\protect\firstacronymfont{\Glsentryshort{#1}}}{#1})%
+}
+\renewcommand*{\genplacrfullformat}[2]{%
+ \glslongpluralaccessdisplay{\glsentrylongpl{#1}}{#1}#2\space
+ (\glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{#1}}}{#1})%
+}
+\renewcommand*{\Genplacrfullformat}[2]{%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{#1}}{#1}#2\space
+ (\glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{#1}}}{#1})%
+}
+\def\@acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsshortaccessdisplay{\glsentryshort{#2}}{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@Acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsshortaccessdisplay{\Glsentryshort{#2}}{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@ACRshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsshortaccessdisplay
+ {\MakeUppercase{\glsentryshort{#2}}}{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glslongaccessdisplay{\glsentrylong{#2}}{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@Acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glslongaccessdisplay{\Glsentrylong{#2}}{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@ACRlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glslongaccessdisplay{%
+ \MakeUppercase{\glsentrylong{#2}}}{#2}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\def\@glstext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glstextaccessdisplay{\glsentrytext{#2}}{#2}#3}%
+}
+\def\@Glstext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glstextaccessdisplay{\Glsentrytext{#2}}{#2}#3}%
+}
+\def\@GLStext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glstextaccessdisplay{\mfirstucMakeUppercase{\glsentrytext{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsfirstaccessdisplay{\glsentryfirst{#2}}{#2}#3}%
+}
+\def\@Glsfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsfirstaccessdisplay{\Glsentryfirst{#2}}{#2}#3}%
+}
+\def\@GLSfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsfirstaccessdisplay{\mfirstucMakeUppercase{\glsentryfirst{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glspluralaccessdisplay{\glsentryplural{#2}}{#2}#3}%
+}
+\def\@Glsplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glspluralaccessdisplay{\Glsentryplural{#2}}{#2}#3}%
+}
+\def\@GLSplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glspluralaccessdisplay{\mfirstucMakeUppercase{\glsentryplural{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsfirstpluralaccessdisplay{\glsentryfirstplural{#2}}{#2}#3}%
+}
+\def\@glsfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsfirstpluralaccessdisplay{\Glsentryfirstplural{#2}}{#2}#3}%
+}
+\def\@GLSfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsfirstpluralaccessdisplay{\mfirstucMakeUppercase{\glsentryfirstplural{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsnameaccessdisplay{\glsentryname{#2}}{#2}#3}%
+}
+\def\@Glsname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsnameaccessdisplay{\Glsentryname{#2}}{#2}#3}%
+}
+\def\@GLSname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsnameaccessdisplay{\mfirstucMakeUppercase{\glsentryname{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsdescriptionaccessdisplay{\glsentrydesc{#2}}{#2}#3}%
+}
+\def\@Glsdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsdescriptionaccessdisplay{\Glsentrydesc{#2}}{#2}#3}%
+}
+\def\@GLSdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsdescriptionaccessdisplay{\mfirstucMakeUppercase{\glsentrydesc{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsdescriptionpluralaccessdisplay{\glsentrydescplural{#2}}{#2}#3}%
+}
+\def\@Glsdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsdescriptionpluralaccessdisplay{\Glsentrydescplural{#2}}{#2}#3}%
+}
+\def\@GLSdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsdescriptionpluralaccessdisplay{\mfirstucMakeUppercase{\glsentrydescplural{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glssymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glssymbolaccessdisplay{\glsentrysymbol{#2}}{#2}#3}%
+}
+\def\@Glssymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glssymbolaccessdisplay{\Glsentrysymbol{#2}}{#2}#3}%
+}
+\def\@GLSsymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glssymbolaccessdisplay{\mfirstucMakeUppercase{\glsentrysymbol{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glssymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glssymbolpluralaccessdisplay{\glsentrysymbolplural{#2}}{#2}#3}%
+}
+\def\@Glssymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glssymbolpluralaccessdisplay{\Glsentrysymbolplural{#2}}{#2}#3}%
+}
+\def\@GLSsymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glssymbolpluralaccessdisplay{\mfirstucMakeUppercase{\glsentrysymbolplural{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuseriaccessdisplay{\glsentryuseri{#2}}{#2}#3}%
+}
+\def\@Glsuser@i#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuseriaccessdisplay{\Glsentryuseri{#2}}{#2}#3}%
+}
+\def\@GLSuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsuseriaccessdisplay{\mfirstucMakeUppercase{\glsentryuseri{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuseriiaccessdisplay{\glsentryuserii{#2}}{#2}#3}%
+}
+\def\@Glsuser@i#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuseriiaccessdisplay{\Glsentryuserii{#2}}{#2}#3}%
+}
+\def\@GLSuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsuseriiaccessdisplay{\mfirstucMakeUppercase{\glsentryuserii{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuseriiiaccessdisplay{\glsentryuseriii{#2}}{#2}#3}%
+}
+\def\@Glsuser@i#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuseriiiaccessdisplay{\Glsentryuseriii{#2}}{#2}#3}%
+}
+\def\@GLSuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsuseriiiaccessdisplay{\mfirstucMakeUppercase{\glsentryuseriii{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuserivaccessdisplay{\glsentryuseriv{#2}}{#2}#3}%
+}
+\def\@Glsuser@i#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuserivaccessdisplay{\Glsentryuseriv{#2}}{#2}#3}%
+}
+\def\@GLSuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsuserivaccessdisplay{\mfirstucMakeUppercase{\glsentryuseriv{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuservaccessdisplay{\glsentryuserv{#2}}{#2}#3}%
+}
+\def\@Glsuser@i#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuservaccessdisplay{\Glsentryuserv{#2}}{#2}#3}%
+}
+\def\@GLSuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsuservaccessdisplay{\mfirstucMakeUppercase{\glsentryuserv{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\def\@glsuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuserviaccessdisplay{\glsentryuservi{#2}}{#2}#3}%
+}
+\def\@Glsuser@i#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuserviaccessdisplay{\Glsentryuservi{#2}}{#2}#3}%
+}
+\def\@GLSuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}%
+ {\glsuserviaccessdisplay{\mfirstucMakeUppercase{\glsentryuservi{#2}}}{#2}%
+ \mfirstucMakeUppercase{#3}}%
+}
+\renewcommand*{\glossentryname}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsnamefont{\glsnameaccessdisplay{\glsentryname{#1}}{#1}}%
+ }%
+}
+\renewcommand*{\glossentryname}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsnamefont{\glsnameaccessdisplay{\Glsentryname{#1}}{#1}}%
+ }%
+}
+\renewcommand*{\glossentrydesc}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsdescriptionaccessdisplay{\glsentrydesc{#1}}{#1}%
+ }%
+}
+\renewcommand*{\Glossentrydesc}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsdescriptionaccessdisplay{\Glsentrydesc{#1}}{#1}%
+ }%
+}
+\renewcommand*{\glossentrysymbol}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glssymbolaccessdisplay{\glsentrysymbol{#1}}{#1}%
+ }%
+}
+\renewcommand*{\Glossentrysymbol}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glssymbolaccessdisplay{\Glsentrysymbol{#1}}{#1}%
+ }%
+}
+\newcommand*{\accsuppglossaryentryfield}[5]{%
+ \glossaryentryfield{#1}%
+ {\glsnameaccessdisplay{#2}{#1}}%
+ {\glsdescriptionaccessdisplay{#3}{#1}}%
+ {\glssymbolaccessdisplay{#4}{#1}}{#5}%
+}
+\newcommand*{\accsuppglossarysubentryfield}[6]{%
+ \glossarysubentryfield{#1}{#2}%
+ {\glsnameaccessdisplay{#3}{#2}}%
+ {\glsdescriptionaccessdisplay{#4}{#2}}%
+ {\glssymbolaccessdisplay{#5}{#2}}{#6}%
+}
+\renewacronymstyle{long-short}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}##2\space
+ (\glsshortaccessdisplay
+ {\protect\firstacronymfont{\glsentryshort{##1}}}{##1})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \glslongaccessdisplay{\Glsentrylong{##1}}{##1}##2\space
+ (\glsshortaccessdisplay
+ {\protect\firstacronymfont{\glsentryshort{##1}}}{##1})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1}##2\space
+ (\glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{##1}}}{##1})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{##1}}{##1}##2\space
+ (\glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{##1}}}{##1})%
+ }%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+\renewacronymstyle{short-long}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsshortaccessdisplay
+ {\protect\firstacronymfont{\glsentryshort{##1}}}{##1}##2\space
+ (\glslongaccessdisplay{\glsentrylong{##1}}{##1})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \glsshortaccessdisplay
+ {\protect\firstacronymfont{\Glsentryshort{##1}}}{##1}##2\space
+ (\glslongaccessdisplay{\glsentrylong{##1}}{##1})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{##1}}}{##1}##2\space
+ (\glslongpluralaccessdisplay
+ {\glsentrylongpl{##1}}{##1})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\Glsentryshortpl{##1}}}{##1}##2\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1})%
+ }%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+\renewacronymstyle{long-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{long-sc-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sc-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sc-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{long-sm-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sm-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sm-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{sc-short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{sc-short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{sc-short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{sm-short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{sm-short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{sm-short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{dua}%
+{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglshaslong{\glslabel}%
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \glslongpluralaccessdisplay{\glsentrylongpl{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+ \glslongpluralaccessdisplay
+ {\mfirstucMakeUppercase{\glsentrylongpl{\glslabel}}}{\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \glslongaccessdisplay{\glsentrylong{\glslabel}}{\glslabel}\glsinsert
+ }%
+ {%
+ \glslongaccessdisplay{\Glsentrylong{\glslabel}}{\glslabel}\glsinsert
+ }%
+ {%
+ \glslongaccessdisplay
+ {\mfirstucMakeUppercase
+ {\glsentrylong{\glslabel}\glsinsert}}{\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glsgenentryfmt
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongaccessdisplay{\glsentrylong{##2}}{##2}##3\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2})}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongaccessdisplay{\Glsentrylong{##2}}{##2}##3\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2})}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongaccessdisplay
+ {\mfirstucMakeUppercase{\glsentrylong{##2}}{##2}##3\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2})}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongpluralaccessdisplay
+ {\glsentrylongpl{##2}}{##2}##3\space
+ (\glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##2}}}{##2})}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongpluralaccessdisplay
+ {\Glsentrylongpl{##2}}{##2}##3\space
+ (\glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##2}}}{##2})}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongpluralaccessdisplay
+ {\mfirstucMakeUppercase{\glsentrylongpl{##2}}{##2}##3\space
+ (\glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##2}}}{##2})}}}%
+ \renewcommand*{\glsentryfull}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})%
+ }%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \glslongaccessdisplay{\Glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})%
+ }%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1}\space
+ (\glsshortpluralaccessdisplay{\acronymfont{\glsentryshortpl{##1}}}{##1})%
+ }%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{##1}}{##1}\space
+ (\glsshortpluralaccessdisplay{\acronymfont{\glsentryshortpl{##1}}}{##1})%
+ }%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+\renewacronymstyle{dua-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{dua}%
+}%
+{%
+ \GlsUseAcrStyleDefs{dua}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\acronymfont{\glsentrylong{##1}}}{##1}}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+}%
+\renewacronymstyle{footnote}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \glshyperfirstfalse
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsshortaccessdisplay
+ {\protect\firstacronymfont{\glsentryshort{##1}}}{##1}##2%
+ \protect\footnote{\glslongaccessdisplay{\glsentrylong{##1}}{##1}}%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \glsshortaccessdisplay
+ {\firstacronymfont{\Glsentryshort{##1}}}{##1}##2%
+ \protect\footnote{\glslongaccessdisplay{\glsentrylong{##1}}{##1}}%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{##1}}}{##1}##2%
+ \protect\footnote{\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1}}%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\Glsentryshortpl{##1}}}{##1}##2%
+ \protect\footnote{\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1}}%
+ }%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2}##3\space
+ (\glslongaccessdisplay{\glsentrylong{##2}}{##2})}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortaccessdisplay{\acronymfont{\Glsentryshort{##2}}}{##2}##3\space
+ (\glslongaccessdisplay{\glsentrylong{##2}}{##2})}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortaccessdisplay
+ {\mfirstucMakeUppercase
+ {\acronymfont{\glsentryshort{##2}}}{##2}##3\space
+ (\glslongaccessdisplay{\glsentrylong{##2}}{##2})}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##2}}}{##2}##3\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##2}}{##2})}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortpluralaccessdisplay
+ {\acronymfont{\Glsentryshortpl{##2}}}{##2}##3\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##2}})}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortpluralaccessdisplay
+ {\mfirstucMakeUppercase
+ {\acronymfont{\glsentryshortpl{##2}}}{##2}##3\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##2}}{##2})}}}%
+ \renewcommand*{\glsentryfull}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}\space
+ (\glslongaccessdisplay{\glsentrylong{##1}}{##1})}%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\Glsentryshort{##1}}}{##1}\space
+ (\glslongaccessdisplay{\glsentrylong{##1}}{##1})}%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##1}}}{##1}\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1})}%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \glsshortpluralaccessdisplay
+ {\acronymfont{\Glsentryshortpl{##1}}}{##1}\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1})}%
+}
+\renewacronymstyle{footnote-sc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}%
+}%
+\renewacronymstyle{footnote-sm}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}
+ \renewcommand{\acronymfont}[1]{\textsmaller{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}%
+\renewacronymstyle{footnote-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{footnote-sc-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote-sc}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote-sc}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\renewacronymstyle{footnote-sm-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote-sm}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote-sm}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+\newcommand*{\glsdefaultshortaccess}[2]{#1}
+\renewcommand*{\newacronymhook}{%
+ \protected@edef\@gls@keylist{%
+ shortaccess={\glsdefaultshortaccess{\the\glslongtok}{\the\glsshorttok}},%
+ shortpluralaccess={\glsdefaultshortaccess{\the\glslongtok}{\the\glsshorttok}},%
+ \the\glskeylisttok}%
+ \expandafter\glskeylisttok\expandafter{\@gls@keylist}%
+}
+\renewcommand*{\DefaultNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\the\glsshorttok},%
+ description={\the\glslongtok},%
+ descriptionaccess=\relax,
+ text={\the\glsshorttok},%
+ access={\noexpand\@glo@textaccess},%
+ sort={\the\glsshorttok},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ shortaccess={\glsdefaultshortaccess{\the\glslongtok}{\the\glsshorttok}},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ descriptionplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ first={\noexpand\glslongaccessdisplay
+ {\the\glslongtok}{\the\glslabeltok}\space
+ (\noexpand\glsshortaccessdisplay
+ {\the\glsshorttok}{\the\glslabeltok})},%
+ plural={\the\glsshorttok\acrpluralsuffix},%
+ firstplural={\noexpand\glslongpluralaccessdisplay
+ {\noexpand\@glo@longpl}{\the\glslabeltok}\space
+ (\noexpand\glsshortpluralaccessdisplay
+ {\noexpand\@glo@shortpl}{\the\glslabeltok})},%
+ firstaccess=\relax,
+ firstpluralaccess=\relax,
+ textaccess={\noexpand\@glo@shortaccess},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+ \@@gls@noexpand@assign@default@plurals
+}
+\renewcommand*{\DescriptionFootnoteNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand\acronymfont{\the\glsshorttok}},%
+ sort={\the\glsshorttok},%
+ text={\the\glsshorttok},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ shortaccess={\glsdefaultshortaccess{\the\glslongtok}{\the\glsshorttok}},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ access={\noexpand\@glo@textaccess},%
+ plural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ symbol={\the\glslongtok},%
+ symbolplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ firstpluralaccess=\relax,
+ textaccess={\noexpand\@glo@shortaccess},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+\renewcommand*{\DescriptionNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand
+ \acrnameformat{\the\glsshorttok}{\the\glslongtok}},%
+ access={\noexpand\@glo@textaccess},%
+ sort={\the\glsshorttok},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ shortaccess={\glsdefaultshortaccess{\the\glslongtok}{\the\glsshorttok}},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ first={\the\glslongtok},%
+ firstaccess=\relax,
+ firstplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ text={\the\glsshorttok},%
+ textaccess={\the\glslongtok},%
+ plural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ symbol={\noexpand\@glo@text},%
+ symbolaccess={\noexpand\@glo@textaccess},%
+ symbolplural={\noexpand\@glo@plural},%
+ firstpluralaccess=\relax,
+ textaccess={\noexpand\@glo@shortaccess},%
+ \the\glskeylisttok}%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+\renewcommand*{\FootnoteNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand\acronymfont{\the\glsshorttok}},%
+ sort={\the\glsshorttok},%
+ text={\the\glsshorttok},%
+ textaccess={\the\glslongtok},%
+ access={\noexpand\@glo@textaccess},%
+ plural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ description={\the\glslongtok},%
+ descriptionplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@descplural\@org@gls@assign@descplural
+}
+\renewcommand*{\SmallNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand\acronymfont{\the\glsshorttok}},%
+ access={\noexpand\@glo@symbolaccess},%
+ sort={\the\glsshorttok},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ shortaccess={\glsdefaultshortaccess{\the\glslongtok}{\the\glsshorttok}},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ text={\noexpand\@glo@short},%
+ textaccess={\noexpand\@glo@shortaccess},%
+ plural={\noexpand\@glo@shortpl},%
+ first={\the\glslongtok},%
+ firstaccess=\relax,
+ firstplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ description={\noexpand\@glo@first},%
+ descriptionplural={\noexpand\@glo@firstplural},%
+ symbol={\the\glsshorttok},%
+ symbolaccess={\the\glslongtok},%
+ symbolplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@descplural\@org@gls@assign@descplural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+ \newcommand*{\glsshortaccesskey}{\glsshortkey access}%
+ \newcommand*{\glsshortpluralaccesskey}{\glsshortpluralkey access}%
+ \newcommand*{\glslongaccesskey}{\glslongkey access}%
+ \newcommand*{\glslongpluralaccesskey}{\glslongpluralkey access}%
+\newcommand*{\showglonameaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@access\endcsname
+}
+\newcommand*{\showglotextaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@textaccess\endcsname
+}
+\newcommand*{\showglopluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@pluralaccess\endcsname
+}
+\newcommand*{\showglofirstaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@firstaccess\endcsname
+}
+\newcommand*{\showglofirstpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@firstpluralaccess\endcsname
+}
+\newcommand*{\showglosymbolaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@symbolaccess\endcsname
+}
+\newcommand*{\showglosymbolpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@symbolpluralaccess\endcsname
+}
+\newcommand*{\showglodescaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@descaccess\endcsname
+}
+\newcommand*{\showglodescpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@descpluralaccess\endcsname
+}
+\newcommand*{\showgloshortaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@shortaccess\endcsname
+}
+\newcommand*{\showgloshortpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@shortpluralaccess\endcsname
+}
+\newcommand*{\showglolongaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@longaccess\endcsname
+}
+\newcommand*{\showglolongpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@longpluralaccess\endcsname
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-accsupp-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-babel-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossaries-babel-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-babel}[2021/11/01 v4.49 (NLCT)]
+\RequirePackage{tracklang}
+\let\glsifusetranslator\@secondoftwo
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossaries-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesLang{\CurrentTrackedTag}%
+ }%
+ {%
+ \PackageWarningNoLine{glossaries}%
+ {No language module detected for `\this@dialect'.\MessageBreak
+ Language modules need to be installed separately.\MessageBreak
+ Please check on CTAN for a bundle called\MessageBreak
+ `glossaries-\CurrentTrackedLanguage' or similar}%
+ }%
+ }%
+ }%
+ {}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-babel-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-compatible-207-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+% \subsection{Rollback v4.49 (glossaries-compatible-207-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-compatible-207}[2021/11/01 v4.49 (NLCT)]
+\ifglsxindy
+ \renewcommand*\GlsAddXdyAttribute[1]{%
+ \edef\@xdyattributes{\@xdyattributes ^^J \string"#1\string"}%
+ \expandafter\toks@\expandafter{\@xdylocref}%
+ \edef\@xdylocref{\the\toks@ ^^J%
+ (markup-locref
+ :open \string"\string~n\string\setentrycounter
+ {\noexpand\glscounter}%
+ \expandafter\string\csname#1\endcsname
+ \expandafter\@gobble\string\{\string" ^^J
+ :close \string"\expandafter\@gobble\string\}\string" ^^J
+ :attr \string"#1\string")}}
+\fi
+\renewcommand*\GlsAddXdyCounters[1]{%
+ \GlossariesWarning{\string\GlsAddXdyCounters\space not available
+ in compatibility mode.}%
+}
+ \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}
+\ifglsxindy
+ \renewcommand*{\GlsAddXdyLocation}[2]{%
+ \edef\@xdyuserlocationdefs{%
+ \@xdyuserlocationdefs ^^J%
+ (define-location-class \string"#1\string"^^J\space\space
+ \space(#2))
+ }%
+ \edef\@xdyuserlocationnames{%
+ \@xdyuserlocationnames^^J\space\space\space
+ \string"#1\string"}%
+ }
+\fi
+\renewcommand{\@do@wrglossary}[1]{%
+\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
+ \protected@edef\@glslocref{\theglsentrycounter}%
+ \@gls@checkmkidxchars\@glslocref
+ \glossary[\csname glo@#1@type\endcsname]{%
+ (indexentry :tkey (\csname glo@#1@index\endcsname)
+ :locref \string"\@glslocref\string" %
+ :attr \string"\@glo@suffix\string" \@glo@range
+ )
+ }%
+\else
+ \@set@glo@numformat\@glo@numfmt\@gls@counter\@glsnumberformat
+ \glossary[\csname glo@#1@type\endcsname]{%
+ \string\glossaryentry{\csname glo@#1@index\endcsname
+ \@gls@encapchar\@glo@numfmt}{\theglsentrycounter}}%
+\fi
+}
+\def\@set@glo@numformat#1#2#3{%
+ \expandafter\@glo@check@mkidxrangechar#3\@nil
+ \protected@edef#1{%
+ \@glo@prefix setentrycounter[]{#2}%
+ \expandafter\string\csname\@glo@suffix\endcsname
+ }%
+ \@gls@checkmkidxchars#1%
+}
+\ifglsxindy
+ \def\writeist{%
+ \openout\glswrite=\istfilename
+ \write\glswrite{;; xindy style file created by the glossaries
+ package in compatible-2.07 mode}%
+ \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}%
+ \protected@edef\@gls@roman{\@roman{0\string"
+ \string"roman-numbers-lowercase\string" :sep \string"}}%
+ \@onelevel@sanitize\@gls@roman
+ \edef\@tmp{\string" \string"roman-numbers-lowercase\string"
+ :sep \string"}%
+ \@onelevel@sanitize\@tmp
+ \ifx\@tmp\@gls@roman
+ \write\glswrite{(define-location-class
+ \string"roman-page-numbers\string"^^J\space\space\space
+ (\string"roman-numbers-lowercase\string")
+ :min-range-length \@glsminrange)}%
+ \else
+ \write\glswrite{(define-location-class
+ \string"roman-page-numbers\string"^^J\space\space\space
+ (:sep "\@gls@roman")
+ :min-range-length \@glsminrange)}%
+ \fi
+ \write\glswrite{(define-location-class
+ \string"Roman-page-numbers\string"^^J\space\space\space
+ (\string"roman-numbers-uppercase\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"arabic-page-numbers\string"^^J\space\space\space
+ (\string"arabic-numbers\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"alpha-page-numbers\string"^^J\space\space\space
+ (\string"alpha\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"Alpha-page-numbers\string"^^J\space\space\space
+ (\string"ALPHA\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"Appendix-page-numbers\string"^^J\space\space\space
+ (\string"ALPHA\string"
+ :sep \string"\@glsAlphacompositor\string"
+ \string"arabic-numbers\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"arabic-section-numbers\string"^^J\space\space\space
+ (\string"arabic-numbers\string"
+ :sep \string"\glscompositor\string"
+ \string"arabic-numbers\string")
+ :min-range-length \@glsminrange)}%
+ \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")}%
+ \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\string~n\string\begin
+ {theglossary}\string\glossaryheader\string~n\string" ^^J\space
+ \space\space:close \string"\expandafter\@gobble
+ \string\%\string~n\string
+ \end{theglossary}\string\glossarypostamble
+ \string~n\string" ^^J\space\space\space
+ :tree)}%
+ \write\glswrite{(markup-letter-group-list
+ :sep \string"\string\glsgroupskip\string~n\string")}%
+ \write\glswrite{(markup-indexentry
+ :open \string"\string\relax \string\glsresetentrylist
+ \string~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\string~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}%
+ \noist}
+\else
+ \edef\@gls@actualchar{\string?}
+ \edef\@gls@encapchar{\string|}
+ \edef\@gls@levelchar{\string!}
+ \edef\@gls@quotechar{\string"}
+ \def\writeist{\relax
+ \openout\glswrite=\istfilename
+ \write\glswrite{\expandafter\@gobble\string\% makeindex style file
+ created by the glossaries package}
+ \write\glswrite{\expandafter\@gobble\string\% 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
+ \noist
+ }
+\fi
+\renewcommand*{\noist}{\let\writeist\relax}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-compatible-207-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-compatible-307-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+% \subsection{Rollback v4.49 (glossaries-compatible-307-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-compatible-307}[2021/11/01 v4.49 (NLCT)]
+\newcommand{\compatglossarystyle}[2]{%
+ \ifcsundef{@glscompstyle@#1}%
+ {%
+ \csdef{@glscompstyle@#1}{#2}%
+ }%
+ {%
+ \PackageError{glossaries}{Glossary compatibility style `#1' is already defined}{}%
+ }%
+}
+\compatglossarystyle{inline}{%
+ \renewcommand{\glossaryentryfield}[5]{%
+ \glsinlinedopostchild
+ \gls@inlinesep
+ \def\glo@desc{##3}%
+ \def\@no@post@desc{\nopostdesc}%
+ \glsentryitem{##1}\glsinlinenameformat{##1}{##2}%
+ \ifx\glo@desc\@no@post@desc
+ \glsinlineemptydescformat{##4}{##5}%
+ \else
+ \ifstrempty{##3}%
+ {\glsinlineemptydescformat{##4}{##5}}%
+ {\glsinlinedescformat{##3}{##4}{##5}}%
+ \fi
+ \ifglshaschildren{##1}%
+ {%
+ \glsresetsubentrycounter
+ \glsinlineparentchildseparator
+ \def\gls@inlinesubsep{}%
+ \def\gls@inlinepostchild{\glsinlinepostchild}%
+ }%
+ {}%
+ \def\gls@inlinesep{\glsinlineseparator}%
+ }%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \gls@inlinesubsep%
+ \glsinlinesubnameformat{##2}{##3}%
+ \glssubentryitem{##2}\glsinlinesubdescformat{##4}{##5}{##6}%
+ \def\gls@inlinesubsep{\glsinlinesubseparator}%
+ }%
+}
+\compatglossarystyle{list}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item[\glsentryitem{##1}\glstarget{##1}{##2}]
+ ##3\glspostdescription\space ##5}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6.}%
+}
+\compatglossarystyle{listgroup}{%
+ \csuse{@glscompstyle@list}%
+}%
+\compatglossarystyle{listhypergroup}{%
+ \csuse{@glscompstyle@list}%
+}%
+\compatglossarystyle{altlist}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item[\glsentryitem{##1}\glstarget{##1}{##2}]%
+ \mbox{}\par\nobreak\@afterheading
+ ##3\glspostdescription\space ##5}%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \par
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6}%
+}%
+\compatglossarystyle{altlistgroup}{%
+ \csuse{@glscompstyle@altlist}%
+}%
+\compatglossarystyle{altlisthypergroup}{%
+ \csuse{@glscompstyle@altlist}%
+}%
+\compatglossarystyle{listdotted}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glsentryitem{##1}\glstarget{##1}{##2}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##3}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{##3}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##4}%
+}%
+\compatglossarystyle{sublistdotted}{%
+ \csuse{@glscompstyle@listdotted}%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item[\glsentryitem{##1}\glstarget{##1}{##2}]}%
+}%
+\compatglossarystyle{long}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6\\}%
+}%
+\compatglossarystyle{longborder}{%
+ \csuse{@glscompstyle@long}%
+}%
+\compatglossarystyle{longheader}{%
+ \csuse{@glscompstyle@long}%
+}%
+\compatglossarystyle{longheaderborder}{%
+ \csuse{@glscompstyle@long}%
+}%
+\compatglossarystyle{long3col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##6\\}%
+}%
+\compatglossarystyle{long3colborder}{%
+ \csuse{@glscompstyle@long3col}%
+}%
+\compatglossarystyle{long3colheader}{%
+ \csuse{@glscompstyle@long3col}%
+}%
+\compatglossarystyle{long3colheaderborder}{%
+ \csuse{@glscompstyle@long3col}%
+}%
+\compatglossarystyle{long4col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##5 & ##6\\}%
+}%
+\compatglossarystyle{long4colheader}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{long4colborder}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{long4colheaderborder}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{altlong4col}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{altlong4colheader}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{altlong4colborder}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{altlong4colheaderborder}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+\compatglossarystyle{longragged}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5%
+ \tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6%
+ \tabularnewline}%
+}%
+\compatglossarystyle{longraggedborder}{%
+ \csuse{@glscompstyle@longragged}%
+}%
+\compatglossarystyle{longraggedheader}{%
+ \csuse{@glscompstyle@longragged}%
+}%
+\compatglossarystyle{longraggedheaderborder}{%
+ \csuse{@glscompstyle@longragged}%
+}%
+\compatglossarystyle{longragged3col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##6\tabularnewline}%
+}%
+\compatglossarystyle{longragged3colborder}{%
+ \csuse{@glscompstyle@longragged3col}%
+}%
+\compatglossarystyle{longragged3colheader}{%
+ \csuse{@glscompstyle@longragged3col}%
+}%
+\compatglossarystyle{longragged3colheaderborder}{%
+ \csuse{@glscompstyle@longragged3col}%
+}%
+\compatglossarystyle{altlongragged4col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##5 & ##6\tabularnewline}%
+}%
+\compatglossarystyle{altlongragged4colheader}{%
+ \csuse{@glscompstyle@altlong4col}%
+}%
+\compatglossarystyle{altlongragged4colborder}{%
+ \csuse{@glscompstyle@altlong4col}%
+}%
+\compatglossarystyle{altlongragged4colheaderborder}{%
+ \csuse{@glscompstyle@altlong4col}%
+}%
+\compatglossarystyle{index}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item\glsentryitem{##1}\textbf{\glstarget{##1}{##2}}%
+ \ifx\relax##4\relax
+ \else
+ \space(##4)%
+ \fi
+ \space ##3\glspostdescription \space ##5}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ \ifcase##1\relax
+ % level 0
+ \item
+ \or
+ % level 1
+ \subitem
+ \glssubentryitem{##2}%
+ \else
+ % all other levels
+ \subsubitem
+ \fi
+ \textbf{\glstarget{##2}{##3}}%
+ \ifx\relax##5\relax
+ \else
+ \space(##5)%
+ \fi
+ \space##4\glspostdescription\space ##6}%
+}%
+\compatglossarystyle{indexgroup}{%
+ \csuse{@glscompstyle@index}%
+}%
+\compatglossarystyle{indexhypergroup}{%
+ \csuse{@glscompstyle@index}%
+}%
+\compatglossarystyle{tree}{%
+ \renewcommand{\glossaryentryfield}[5]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\textbf{\glstarget{##1}{##2}}%
+ \ifx\relax##4\relax
+ \else
+ \space(##4)%
+ \fi
+ \space ##3\glspostdescription \space ##5\par}%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \textbf{\glstarget{##2}{##3}}%
+ \ifx\relax##5\relax
+ \else
+ \space(##5)%
+ \fi
+ \space##4\glspostdescription\space ##6\par}%
+}%
+\compatglossarystyle{treegroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{treehypergroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{treenoname}{%
+ \renewcommand{\glossaryentryfield}[5]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\textbf{\glstarget{##1}{##2}}%
+ \ifx\relax##4\relax
+ \else
+ \space(##4)%
+ \fi
+ \space ##3\glspostdescription \space ##5\par}%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstarget{##2}{\strut}%
+ ##4\glspostdescription\space ##6\par}%
+}%
+\compatglossarystyle{treenonamegroup}{%
+ \csuse{@glscompstyle@treenoname}%
+}%
+\compatglossarystyle{treenonamehypergroup}{%
+ \csuse{@glscompstyle@treenoname}%
+}%
+\compatglossarystyle{alttree}{%
+ \renewcommand{\glossaryentryfield}[5]{%
+ \ifnum\@gls@prevlevel=0\relax
+ \else
+ \settowidth{\glstreeindent}{\textbf{\@glswidestname\space}}%
+ \hangindent\glstreeindent
+ \parindent\glstreeindent
+ \fi
+ \makebox[0pt][r]{\makebox[\glstreeindent][l]{%
+ \glsentryitem{##1}\textbf{\glstarget{##1}{##2}}}}%
+ \ifx\relax##4\relax
+ \else
+ (##4)\space
+ \fi
+ ##3\glspostdescription \space ##5\par
+ \def\@gls@prevlevel{0}%
+ }%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \ifnum\@gls@prevlevel=##1\relax
+ \else
+ \@ifundefined{@glswidestname\romannumeral##1}{%
+ \settowidth{\gls@tmplen}{\textbf{\@glswidestname\space}}}{%
+ \settowidth{\gls@tmplen}{\textbf{%
+ \csname @glswidestname\romannumeral##1\endcsname\space}}}%
+ \ifnum\@gls@prevlevel<##1\relax
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+ \@ifundefined{@glswidestname\romannumeral\@gls@prevlevel}{%
+ \settowidth{\glstreeindent}{\textbf{%
+ \@glswidestname\space}}}{%
+ \settowidth{\glstreeindent}{\textbf{%
+ \csname @glswidestname\romannumeral\@gls@prevlevel
+ \endcsname\space}}}%
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+ \hangindent\glstreeindent
+ \makebox[0pt][r]{\makebox[\gls@tmplen][l]{%
+ \textbf{\glstarget{##2}{##3}}}}%
+ \ifx##5\relax\relax
+ \else
+ (##5)\space
+ \fi
+ ##4\glspostdescription\space ##6\par
+ \def\@gls@prevlevel{##1}%
+ }%
+}%
+\compatglossarystyle{alttreegroup}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+\compatglossarystyle{alttreehypergroup}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+\compatglossarystyle{mcolindex}{%
+ \csuse{@glscompstyle@index}%
+}%
+\compatglossarystyle{mcolindexgroup}{%
+ \csuse{@glscompstyle@index}%
+}%
+\compatglossarystyle{mcolindexhypergroup}{%
+ \csuse{@glscompstyle@index}%
+}%
+\compatglossarystyle{mcoltree}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{mcolindextreegroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{mcolindextreehypergroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{mcoltreenoname}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{mcoltreenonamegroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{mcoltreenonamehypergroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+\compatglossarystyle{mcolalttree}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+\compatglossarystyle{mcolalttreegroup}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+\compatglossarystyle{mcolalttreehypergroup}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+
+\compatglossarystyle{superragged}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5%
+ \tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6%
+ \tabularnewline}%
+}%
+\compatglossarystyle{superraggedborder}{%
+ \csuse{@glscompstyle@superragged}%
+}%
+\compatglossarystyle{superraggedheader}{%
+ \csuse{@glscompstyle@superragged}%
+}%
+\compatglossarystyle{superraggedheaderborder}{%
+ \csuse{@glscompstyle@superragged}%
+}%
+\compatglossarystyle{superragged3col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##6\tabularnewline}%
+}%
+\compatglossarystyle{superragged3colborder}{%
+ \csuse{@glscompstyle@superragged3col}%
+}%
+\compatglossarystyle{superragged3colheader}{%
+ \csuse{@glscompstyle@superragged3col}%
+}%
+\compatglossarystyle{superragged3colheaderborder}{%
+ \csuse{@glscompstyle@superragged3col}%
+}%
+\compatglossarystyle{altsuperragged4col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##5 & ##6\tabularnewline}%
+}%
+\compatglossarystyle{altsuperragged4colheader}{%
+ \csuse{@glscompstyle@altsuperragged4col}%
+}%
+\compatglossarystyle{altsuperragged4colborder}{%
+ \csuse{@glscompstyle@altsuperragged4col}%
+}%
+\compatglossarystyle{altsuperragged4colheaderborder}{%
+ \csuse{@glscompstyle@altsuperragged4col}%
+}%
+\compatglossarystyle{super}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6\\}%
+}%
+\compatglossarystyle{superborder}{%
+ \csuse{@glscompstyle@super}%
+}%
+\compatglossarystyle{superheader}{%
+ \csuse{@glscompstyle@super}%
+}%
+\compatglossarystyle{superheaderborder}{%
+ \csuse{@glscompstyle@super}%
+}%
+\compatglossarystyle{super3col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##6\\}%
+}%
+\compatglossarystyle{super3colborder}{%
+ \csuse{@glscompstyle@super3col}%
+}%
+\compatglossarystyle{super3colheader}{%
+ \csuse{@glscompstyle@super3col}%
+}%
+\compatglossarystyle{super3colheaderborder}{%
+ \csuse{@glscompstyle@super3col}%
+}%
+\compatglossarystyle{super4col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##5 & ##6\\}%
+}%
+\compatglossarystyle{super4colheader}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+\compatglossarystyle{super4colborder}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+\compatglossarystyle{super4colheaderborder}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+\compatglossarystyle{altsuper4col}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+\compatglossarystyle{altsuper4colheader}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+\compatglossarystyle{altsuper4colborder}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+\compatglossarystyle{altsuper4colheaderborder}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-compatible-307-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-polyglossia-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossaries-polyglossia-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-polyglossia}[2021/11/01 v4.49 (NLCT)]
+\RequirePackage{tracklang}
+\let\glsifusetranslator\@secondoftwo
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossaries-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesLang{\CurrentTrackedTag}%
+ }%
+ {%
+ \PackageWarningNoLine{glossaries}%
+ {No language module detected for `\this@dialect'.\MessageBreak
+ Language modules need to be installed separately.\MessageBreak
+ Please check on CTAN for a bundle called\MessageBreak
+ `glossaries-\CurrentTrackedLanguage' or similar}%
+ }%
+ }%
+ }%
+ {}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-polyglossia-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-prefix-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossaries-prefix-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-prefix}[2021/11/01 v4.49 (NLCT)]
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{glossaries}}
+\ProcessOptions
+\RequirePackage{glossaries}[=v4.49]
+\define@key{glossentry}{prefixfirst}{\def\@glo@entryprefixfirst{#1}}%
+\define@key{glossentry}{prefixfirstplural}{\def\@glo@entryprefixfirstplural{#1}}%
+\define@key{glossentry}{prefix}{\def\@glo@entryprefix{#1}}%
+\define@key{glossentry}{prefixplural}{\def\@glo@entryprefixplural{#1}}%
+\appto\@gls@keymap{,%
+ {prefixfirst}{prefixfirst},%
+ {prefixfirstplural}{prefixfirstplural},%
+ {prefix}{prefix},%
+ {prefixplural}{prefixplural}%
+ }
+\appto\@newglossaryentryprehook{%
+ \def\@glo@entryprefix{}%
+ \def\@glo@entryprefixplural{}%
+ \let\@glo@entryprefixfirst\@gls@default@value
+ \let\@glo@entryprefixfirstplural\@gls@default@value
+}
+\appto\@newglossaryentryposthook{%
+ \gls@assign@field{}{\@glo@label}{prefix}{\@glo@entryprefix}%
+ \gls@assign@field{}{\@glo@label}{prefixplural}{\@glo@entryprefixplural}%
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @prefix\endcsname}{\@glo@label}{prefixfirst}%
+ {\@glo@entryprefixfirst}%
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @prefixplural\endcsname}{\@glo@label}%
+ {prefixfirstplural}{\@glo@entryprefixfirstplural}%
+}
+\newcommand*{\glsentryprefixfirst}[1]{\csuse{glo@\glsdetoklabel{#1}@prefixfirst}}
+\newcommand*{\glsentryprefixfirstplural}[1]{%
+ \csuse{glo@\glsdetoklabel{#1}@prefixfirstplural}}
+\newcommand*{\glsentryprefix}[1]{\csuse{glo@\glsdetoklabel{#1}@prefix}}
+\newcommand*{\glsentryprefixplural}[1]{\csuse{glo@\glsdetoklabel{#1}@prefixplural}}
+\newrobustcmd*{\Glsentryprefixfirst}[1]{%
+ \protected@edef\@glo@text{\csname glo@\glsdetoklabel{#1}@prefixfirst\endcsname}%
+ \xmakefirstuc\@glo@text
+}
+\newrobustcmd*{\Glsentryprefixfirstplural}[1]{%
+ \protected@edef\@glo@text{\csname glo@\glsdetoklabel{#1}@prefixfirstplural\endcsname}%
+ \xmakefirstuc\@glo@text
+}
+\newrobustcmd*{\Glsentryprefix}[1]{%
+ \protected@edef\@glo@text{\csname glo@\glsdetoklabel{#1}@prefix\endcsname}%
+ \xmakefirstuc\@glo@text
+}
+\newrobustcmd*{\Glsentryprefixplural}[1]{%
+ \protected@edef\@glo@text{\csname glo@\glsdetoklabel{#1}@prefixplural\endcsname}%
+ \xmakefirstuc\@glo@text
+}
+\newcommand*{\ifglshasprefix}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@prefix}%
+ {#3}%
+ {#2}%
+}
+\newcommand*{\ifglshasprefixplural}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@prefixplural}%
+ {#3}%
+ {#2}%
+}
+\newcommand*{\ifglshasprefixfirst}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@prefixfirst}%
+ {#3}%
+ {#2}%
+}
+\newcommand*{\ifglshasprefixfirstplural}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@prefixfirstplural}%
+ {#3}%
+ {#2}%
+}
+\providecommand{\@glsprefix@record@hook}[2]{%
+ \ifdef\@glsxtr@record
+ {\@glsxtr@record{#1}{#2}{glslink}}%
+ {}%
+}
+\newcommand{\glsprefixsep}{}
+\newrobustcmd{\pgls}{\@gls@hyp@opt\@pgls}
+\newcommand*{\@pgls}[2][]{%
+ \new@ifnextchar[%
+ {\@pgls@{#1}{#2}}%
+ {\@pgls@{#1}{#2}[]}%
+}
+\def\@pgls@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefix{#2}{\glsentryprefix{#2}\glsprefixsep}{}%
+ }%
+ {%
+ \ifglshasprefixfirst{#2}{\glsentryprefixfirst{#2}\glsprefixsep}{}%
+ }%
+ \@gls@{#1}{#2}[#3]%
+ }%
+}
+\newrobustcmd{\pglspl}{\@gls@hyp@opt\@pglspl}
+\newcommand*{\@pglspl}[2][]{%
+ \new@ifnextchar[%
+ {\@pglspl@{#1}{#2}}%
+ {\@pglspl@{#1}{#2}[]}%
+}
+\def\@pglspl@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefixplural{#2}{\glsentryprefixplural{#2}\glsprefixsep}{}%
+ }%
+ {%
+ \ifglshasprefixfirstplural{#2}%
+ {\glsentryprefixfirstplural{#2}\glsprefixsep}{}%
+ }%
+ \@glspl@{#1}{#2}[#3]%
+ }%
+}
+\newrobustcmd{\Pgls}{\@gls@hyp@opt\@Pgls}
+\newcommand*{\@Pgls}[2][]{%
+ \new@ifnextchar[%
+ {\@Pgls@{#1}{#2}}%
+ {\@Pgls@{#1}{#2}[]}%
+}
+\def\@Pgls@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefix{#2}%
+ {%
+ \Glsentryprefix{#2}%
+ \glsprefixsep
+ \@gls@{#1}{#2}[#3]%
+ }%
+ {\@Gls@{#1}{#2}[#3]}%
+ }%
+ {%
+ \ifglshasprefixfirst{#2}%
+ {%
+ \Glsentryprefixfirst{#2}%
+ \glsprefixsep
+ \@gls@{#1}{#2}[#3]%
+ }%
+ {\@Gls@{#1}{#2}[#3]}%
+ }%
+ }%
+}
+\newrobustcmd{\Pglspl}{\@gls@hyp@opt\@Pglspl}
+\newcommand*{\@Pglspl}[2][]{%
+ \new@ifnextchar[%
+ {\@Pglspl@{#1}{#2}}%
+ {\@Pglspl@{#1}{#2}[]}%
+}
+\def\@Pglspl@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefixplural{#2}%
+ {%
+ \Glsentryprefixplural{#2}%
+ \glsprefixsep
+ \@glspl@{#1}{#2}[#3]%
+ }%
+ {\@Glspl@{#1}{#2}[#3]}%
+ }%
+ {%
+ \ifglshasprefixfirstplural{#2}%
+ {%
+ \Glsentryprefixfirstplural{#2}%
+ \glsprefixsep
+ \@glspl@{#1}{#2}[#3]%
+ }%
+ {\@Glspl@{#1}{#2}[#3]}%
+ }%
+ }%
+}
+\newrobustcmd{\PGLS}{\@gls@hyp@opt\@PGLS}
+\newcommand*{\@PGLS}[2][]{%
+ \new@ifnextchar[%
+ {\@PGLS@{#1}{#2}}%
+ {\@PGLS@{#1}{#2}[]}%
+}
+\def\@PGLS@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefix{#2}%
+ {\mfirstucMakeUppercase{\glsentryprefix{#2}\glsprefixsep}}{}%
+ }%
+ {%
+ \ifglshasprefixfirst{#2}%
+ {\mfirstucMakeUppercase{\glsentryprefixfirst{#2}\glsprefixsep}}{}%
+ }%
+ \@GLS@{#1}{#2}[#3]%
+ }%
+}
+\newrobustcmd{\PGLSpl}{\@gls@hyp@opt\@PGLSpl}
+\newcommand*{\@PGLSpl}[2][]{%
+ \new@ifnextchar[%
+ {\@PGLSpl@{#1}{#2}}%
+ {\@PGLSpl@{#1}{#2}[]}%
+}
+\def\@PGLSpl@#1#2[#3]{%
+ \@glsprefix@record@hook{#1}{#2}%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefixplural{#2}%
+ {\mfirstucMakeUppercase{\glsentryprefixplural{#2}\glsprefixsep}}{}%
+ }%
+ {%
+ \ifglshasprefixfirstplural{#2}%
+ {\mfirstucMakeUppercase{\glsentryprefixfirstplural{#2}\glsprefixsep}}{}%
+ }%
+ \@GLSpl@{#1}{#2}[#3]%
+ }%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-prefix-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-hypernav-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossary-hypernav-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\ProvidesPackage{glossary-hypernav}[2021/11/01 v4.49 (NLCT)]
+\newcommand*{\glsnavhyperlink}[3][\@glo@type]{%
+ \protected@edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}%
+ \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}}
+\newcommand*{\glsnavhyperlinkname}[2]{glsn:#1@#2}
+\newcommand*{\glsnavhypertarget}[3][\@glo@type]{%
+ \@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]{%
+\@ifundefined{@gls@hypergrouplist@#1}{%
+ \expandafter\xdef\csname @gls@hypergrouplist@#1\endcsname{#2}%
+}{%
+ \expandafter\let\expandafter\@gls@tmp
+ \csname @gls@hypergrouplist@#1\endcsname
+ \expandafter\xdef\csname @gls@hypergrouplist@#1\endcsname{%
+ \@gls@tmp,#2}%
+}%
+}
+\newcommand*{\glsnavigation}{%
+ \def\@gls@between{}%
+ \ifcsundef{@gls@hypergrouplist@\@glo@type}%
+ {%
+ \def\@gls@list{}%
+ }%
+ {%
+ \expandafter\let\expandafter\@gls@list
+ \csname @gls@hypergrouplist@\@glo@type\endcsname
+ }%
+ \@for\@gls@tmp:=\@gls@list\do{%
+ \@gls@between
+ \@gls@getgrouptitle{\@gls@tmp}{\@gls@grptitle}%
+ \glsnavhyperlink{\@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-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-inline-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossary-inline-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\ProvidesPackage{glossary-inline}[2021/11/01 v4.49 (NLCT)]
+\newglossarystyle{inline}{%
+ \renewenvironment{theglossary}%
+ {%
+ \def\gls@inlinesep{}%
+ \def\gls@inlinesubsep{}%
+ \def\gls@inlinepostchild{}%
+ }%
+ {\glspostinline}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsinlinedopostchild
+ \gls@inlinesep
+ \glsentryitem{##1}%
+ \glsinlinenameformat{##1}{%
+ \glossentryname{##1}%
+ }%
+ \ifglsdescsuppressed{##1}%
+ {%
+ \glsinlineemptydescformat
+ {%
+ \glossentrysymbol{##1}%
+ }%
+ {%
+ ##2%
+ }%
+ }%
+ {%
+ \ifglshasdesc{##1}%
+ {\glsinlinedescformat{\glossentrydesc{##1}}{\glossentrysymbol{##1}}{##2}}%
+ {\glsinlineemptydescformat{\glossentrysymbol{##1}}{##2}}%
+ }%
+ \ifglshaschildren{##1}%
+ {%
+ \glsresetsubentrycounter
+ \glsinlineparentchildseparator
+ \def\gls@inlinesubsep{}%
+ \def\gls@inlinepostchild{\glsinlinepostchild}%
+ }%
+ {}%
+ \def\gls@inlinesep{\glsinlineseparator}%
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \gls@inlinesubsep%
+ \glsinlinesubnameformat{##2}{%
+ \glossentryname{##2}}%
+ \glssubentryitem{##2}%
+ \glsinlinesubdescformat{\glossentrydesc{##2}}{\glossentrysymbol{##2}}{##3}%
+ \def\gls@inlinesubsep{\glsinlinesubseparator}%
+ }%
+ \renewcommand*{\glsgroupskip}{}%
+}
+\newcommand*{\glsinlinedopostchild}{%
+ \gls@inlinepostchild
+ \def\gls@inlinepostchild{}%
+}
+\newcommand*{\glsinlineseparator}{;\space}
+\newcommand*{\glsinlinesubseparator}{,\space}
+\newcommand*{\glsinlineparentchildseparator}{:\space}
+\newcommand*{\glsinlinepostchild}{}
+\newcommand*{\glspostinline}{\glspostdescription\space}
+\newcommand*{\glsinlinenameformat}[2]{\glstarget{#1}{#2}}
+\newcommand*{\glsinlinedescformat}[3]{\space#1}
+\newcommand*{\glsinlineemptydescformat}[2]{}
+\newcommand*{\glsinlinesubnameformat}[2]{\glstarget{#1}{}}
+\newcommand*{\glsinlinesubdescformat}[3]{#1}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-inline-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-list-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossary-list-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossary-list}[2021/11/01 v4.49 (NLCT)]
+\providecommand{\indexspace}{%
+ \par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@ \relax
+}
+\newcommand*{\glslistgroupheaderfmt}[1]{#1}
+\newcommand*{\glslistnavigationitem}[1]{\item[#1]}
+\newcommand{\glslistinit}{%
+ \ifdef\GetTitleStringDisableCommands
+ {%
+ \GetTitleStringSetup{expand}%
+ \GetTitleStringDisableCommands{%
+ \let\glsentryitem\@gobble
+ \let\glstarget\@secondoftwo
+ \let\glossentryname\glslistexpandedname
+ \let\glslistgroupheaderfmt\@firstofone
+ \let\glsgetgrouptitle\@firstofone
+ \let\glsnavhypertarget\@secondoftwo
+ \let\glsnavigation\relax
+ }%
+ }%
+ {}%
+}
+\newcommand{\glslistexpandedname}[1]{%
+ \glsunexpandedfieldvalue{#1}{name}%
+}
+\newglossarystyle{list}{%
+ \renewenvironment{theglossary}%
+ {\glslistinit\begin{description}}{\end{description}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \glossentrydesc{##1}\glspostdescription\space ##2}%
+ \renewcommand*{\subglossentry}[3]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\space
+ \glossentrydesc{##2}\glspostdescription\space ##3.}%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}%
+}
+\newglossarystyle{listgroup}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]}}
+\newglossarystyle{listhypergroup}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossaryheader}{%
+ \glslistnavigationitem{\glsnavigation}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]}}
+\newglossarystyle{altlist}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]%
+ \mbox{}\par\nobreak\@afterheading
+ \glossentrydesc{##1}\glspostdescription\space ##2}%
+ \renewcommand{\subglossentry}[3]{%
+ \par
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space ##3}%
+}
+\newglossarystyle{altlistgroup}{%
+ \setglossarystyle{altlist}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]}}
+\newglossarystyle{altlisthypergroup}{%
+ \setglossarystyle{altlist}%
+ \renewcommand*{\glossaryheader}{%
+ \glslistnavigationitem{\glsnavigation}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]}}
+\newglossarystyle{listdotted}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}\glossentrydesc{##1}}%
+ \renewcommand*{\subglossentry}[3]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\glossentryname{##2}}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}\glossentrydesc{##2}}%
+}
+\newlength\glslistdottedwidth
+\setlength{\glslistdottedwidth}{.5\hsize}
+\newglossarystyle{sublistdotted}{%
+ \setglossarystyle{listdotted}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}}]}%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-list-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-long-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossary-long-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\ProvidesPackage{glossary-long}[2021/11/01 v4.49 (NLCT)]
+\RequirePackage{longtable}
+\@ifundefined{glsdescwidth}{%
+ \newlength\glsdescwidth
+ \setlength{\glsdescwidth}{0.6\hsize}
+}{}
+\@ifundefined{glspagelistwidth}{%
+ \newlength\glspagelistwidth
+ \setlength{\glspagelistwidth}{0.1\hsize}
+}{}
+\newglossarystyle{long}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{longborder}{%
+ \setglossarystyle{long}%
+ \renewenvironment{theglossary}{%
+ \begin{longtable}{|l|p{\glsdescwidth}|}}{\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+\newglossarystyle{longheader}{%
+ \setglossarystyle{long}%
+ \renewcommand*{\glossaryheader}{%
+ \bfseries \entryname & \bfseries \descriptionname\tabularnewline\endhead}%
+}
+\newglossarystyle{longheaderborder}{%
+ \setglossarystyle{longborder}%
+ \renewcommand*{\glossaryheader}{%
+ \hline\bfseries \entryname & \bfseries
+ \descriptionname\tabularnewline\hline
+ \endhead
+ \hline\endfoot}%
+}
+\newglossarystyle{long3col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{long3colborder}{%
+ \setglossarystyle{long3col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|p{\glsdescwidth}|p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+\newglossarystyle{long3colheader}{%
+ \setglossarystyle{long3col}%
+ \renewcommand*{\glossaryheader}{%
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\endhead}%
+}
+\newglossarystyle{long3colheaderborder}{%
+ \setglossarystyle{long3colborder}%
+ \renewcommand*{\glossaryheader}{%
+ \hline
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\hline\endhead
+ \hline\endfoot}%
+}
+\newglossarystyle{long4col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{llll}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} &
+ \glossentrysymbol{##1} &
+ ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & & & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{long4colheader}{%
+ \setglossarystyle{long4col}%
+ \renewcommand*{\glossaryheader}{%
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries \symbolname&
+ \bfseries\pagelistname\tabularnewline\endhead}%
+}
+\newglossarystyle{long4colborder}{%
+ \setglossarystyle{long4col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|l|l|l|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+\newglossarystyle{long4colheaderborder}{%
+ \setglossarystyle{long4col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|l|l|l|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{%
+ \hline\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries \symbolname&
+ \bfseries\pagelistname\tabularnewline\hline\endhead
+ \hline\endfoot}%
+}
+\newglossarystyle{altlong4col}{%
+ \setglossarystyle{long4col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+\newglossarystyle{altlong4colheader}{%
+ \setglossarystyle{long4colheader}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+\newglossarystyle{altlong4colborder}{%
+ \setglossarystyle{long4colborder}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|p{\glsdescwidth}|l|p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+}
+\newglossarystyle{altlong4colheaderborder}{%
+ \setglossarystyle{long4colheaderborder}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|p{\glsdescwidth}|l|p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-long-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-longbooktabs-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossary-longbooktabs-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\ProvidesPackage{glossary-longbooktabs}[2021/11/01 v4.49 (NLCT)]
+\RequirePackage{booktabs}
+\RequirePackage{glossary-long}[=v4.46]
+\RequirePackage{glossary-longragged}[=v4.46]
+\newglossarystyle{long-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{long}%
+ \renewcommand*{\glossaryheader}{%
+ \toprule \bfseries \entryname & \bfseries
+ \descriptionname\tabularnewline\midrule\endhead
+ \bottomrule\endfoot}%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newglossarystyle{long3col-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{long3col}%
+ \renewcommand*{\glossaryheader}{%
+ \toprule \bfseries \entryname &
+ \bfseries \descriptionname &
+ \bfseries \pagelistname
+ \tabularnewline\midrule\endhead
+ \bottomrule\endfoot}%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newglossarystyle{long4col-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{long4col}%
+ \renewcommand*{\glossaryheader}{%
+ \toprule \bfseries \entryname &
+ \bfseries \descriptionname &
+ \bfseries \symbolname &
+ \bfseries \pagelistname
+ \tabularnewline\midrule\endhead
+ \bottomrule\endfoot}%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+\newglossarystyle{altlong4col-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{long4col-booktabs}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+\newglossarystyle{longragged-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{long-booktabs}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{longtable}}%
+}
+\newglossarystyle{longragged3col-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{long3col-booktabs}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+\newglossarystyle{altlongragged4col-booktabs}{%
+ \glspatchLToutput
+ \setglossarystyle{altlong4col-booktabs}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+\newcommand*{\glsLTpenaltycheck}{%
+ \ifnum\outputpenalty=-50\vskip-\normalbaselineskip\relax\fi
+}
+\newcommand{\glspenaltygroupskip}{%
+ \noalign{\penalty-50\vskip\normalbaselineskip}}
+\let\@gls@org@LT@output\LT@output
+\newcommand*{\glsrestoreLToutput}{\let\LT@output\@gls@org@LT@output}
+\newcommand*{\glspatchLToutput}{%
+ \renewcommand*{\LT@output}{%
+ \ifnum\outputpenalty <-\@Mi
+ \ifnum\outputpenalty > -\LT@end@pen
+ \LT@err{floats and marginpars not allowed in a longtable}\@ehc
+ \else
+ \setbox\z@\vbox{\unvbox\@cclv}%
+ \ifdim \ht\LT@lastfoot>\ht\LT@foot
+ \dimen@\pagegoal
+ \advance\dimen@-\ht\LT@lastfoot
+ \ifdim\dimen@<\ht\z@
+ \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
+ \@makecol
+ \@outputpage
+ \setbox\z@\vbox{\box\LT@head\glsLTpenaltycheck}%
+ \fi
+ \fi
+ \global\@colroom\@colht
+ \global\vsize\@colht
+ {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
+ \fi
+ \else
+ \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
+ \@makecol
+ \@outputpage
+ \global\vsize\@colroom
+ \copy\LT@head
+ \glsLTpenaltycheck
+ \nobreak
+ \fi
+ }%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-longbooktabs-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-longragged-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossary-longragged-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\ProvidesPackage{glossary-longragged}[2021/11/01 v4.49 (NLCT)]
+\RequirePackage{array}
+\RequirePackage{longtable}
+\@ifundefined{glsdescwidth}{%
+ \newlength\glsdescwidth
+ \setlength{\glsdescwidth}{0.6\hsize}
+}{}
+\@ifundefined{glspagelistwidth}{%
+ \newlength\glspagelistwidth
+ \setlength{\glspagelistwidth}{0.1\hsize}
+}{}
+\newglossarystyle{longragged}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\space ##2%
+ \tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}%
+ \glspostdescription\space ##3%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{longraggedborder}{%
+ \setglossarystyle{longragged}%
+ \renewenvironment{theglossary}{%
+ \begin{longtable}{|l|>{\raggedright}p{\glsdescwidth}|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+\newglossarystyle{longraggedheader}{%
+ \setglossarystyle{longragged}%
+ \renewcommand*{\glossaryheader}{%
+ \bfseries \entryname & \bfseries \descriptionname
+ \tabularnewline\endhead}%
+}
+\newglossarystyle{longraggedheaderborder}{%
+ \setglossarystyle{longraggedborder}%
+ \renewcommand*{\glossaryheader}{%
+ \hline\bfseries \entryname & \bfseries \descriptionname
+ \tabularnewline\hline
+ \endhead
+ \hline\endfoot}%
+}
+\newglossarystyle{longragged3col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{longragged3colborder}{%
+ \setglossarystyle{longragged3col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|>{\raggedright}p{\glsdescwidth}|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+\newglossarystyle{longragged3colheader}{%
+ \setglossarystyle{longragged3col}%
+ \renewcommand*{\glossaryheader}{%
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\endhead}%
+}
+\newglossarystyle{longragged3colheaderborder}{%
+ \setglossarystyle{longragged3colborder}%
+ \renewcommand*{\glossaryheader}{%
+ \hline
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\hline\endhead
+ \hline\endfoot}%
+}
+\newglossarystyle{altlongragged4col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} & \glossentrysymbol{##1} &
+ ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & & & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{altlongragged4colheader}{%
+ \setglossarystyle{altlongragged4col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{%
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries \symbolname&
+ \bfseries\pagelistname\tabularnewline\endhead}%
+}
+\newglossarystyle{altlongragged4colborder}{%
+ \setglossarystyle{altlongragged4col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|>{\raggedright}p{\glsdescwidth}|l|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+\newglossarystyle{altlongragged4colheaderborder}{%
+ \setglossarystyle{altlongragged4col}%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|>{\raggedright}p{\glsdescwidth}|l|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{%
+ \hline\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries \symbolname&
+ \bfseries\pagelistname\tabularnewline\hline\endhead
+ \hline\endfoot}%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-longragged-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-mcols-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossary-mcols-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\ProvidesPackage{glossary-mcols}[2021/11/01 v4.49 (NLCT)]
+\RequirePackage{multicol}
+\RequirePackage{glossary-tree}[=v4.49]
+\providecommand{\indexspace}{%
+ \par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@ \relax
+}
+\newcommand*{\glsmcols}{2}
+\newglossarystyle{mcolindex}{%
+ \setglossarystyle{index}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\glstreeitem
+ \let\subitem\glstreesubitem
+ \let\subsubitem\glstreesubsubitem
+ }%
+ {\end{multicols}}%
+}
+\newglossarystyle{mcolindexgroup}{%
+ \setglossarystyle{mcolindex}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\indexspace}%
+}
+\newglossarystyle{mcolindexhypergroup}{%
+ \setglossarystyle{mcolindex}%
+ \renewcommand*{\glossaryheader}{%
+ \item\glstreenavigationfmt{\glsnavigation}\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}%
+ \indexspace}%
+}
+\newglossarystyle{mcolindexspannav}{%
+ \setglossarystyle{index}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\glstreeitem}%
+ {\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}%
+ \indexspace}%
+}
+\newglossarystyle{mcoltree}{%
+ \setglossarystyle{tree}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+}
+\newglossarystyle{mcoltreegroup}{%
+ \setglossarystyle{mcoltree}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \noindent\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par\indexspace}%
+}
+\newglossarystyle{mcoltreehypergroup}{%
+ \setglossarystyle{mcoltree}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newglossarystyle{mcoltreespannav}{%
+ \setglossarystyle{tree}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newglossarystyle{mcoltreenoname}{%
+ \setglossarystyle{treenoname}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+}
+\newglossarystyle{mcoltreenonamegroup}{%
+ \setglossarystyle{mcoltreenoname}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \noindent\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par\indexspace}%
+}
+\newglossarystyle{mcoltreenonamehypergroup}{%
+ \setglossarystyle{mcoltreenoname}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newglossarystyle{mcoltreenonamespannav}{%
+ \setglossarystyle{treenoname}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newglossarystyle{mcolalttree}{%
+ \setglossarystyle{alttree}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}
+ \def\@gls@prevlevel{-1}%
+ \mbox{}\par
+ }%
+ {\par\end{multicols}}%
+}
+\newglossarystyle{mcolalttreegroup}{%
+ \setglossarystyle{mcolalttree}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par\indexspace}%
+}
+\newglossarystyle{mcolalttreehypergroup}{%
+ \setglossarystyle{mcolalttree}%
+ \renewcommand*{\glossaryheader}{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newglossarystyle{mcolalttreespannav}{%
+ \setglossarystyle{alttree}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]
+ \def\@gls@prevlevel{-1}%
+ \mbox{}\par
+ }%
+ {\par\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-mcols-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-super-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossary-super-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\ProvidesPackage{glossary-super}[2021/11/01 v4.49 (NLCT)]
+\RequirePackage{supertabular}
+\@ifundefined{glsdescwidth}{%
+ \newlength\glsdescwidth
+ \setlength{\glsdescwidth}{0.6\hsize}
+}{}
+\@ifundefined{glspagelistwidth}{%
+ \newlength\glspagelistwidth
+ \setlength{\glspagelistwidth}{0.1\hsize}
+}{}
+\newglossarystyle{super}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& \tabularnewline}%
+ \fi
+}
+\newglossarystyle{superborder}{%
+ \setglossarystyle{super}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|p{\glsdescwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superheader}{%
+ \setglossarystyle{super}%
+\renewenvironment{theglossary}%
+ {\tablehead{\bfseries \entryname &
+ \bfseries\descriptionname\tabularnewline}%
+ \tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superheaderborder}{%
+ \setglossarystyle{super}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline\bfseries \entryname &
+ \bfseries \descriptionname\tabularnewline\hline}%
+ \tabletail{\hline}
+ \begin{supertabular}{|l|p{\glsdescwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{super3col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{super3colborder}{%
+ \setglossarystyle{super3col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|p{\glsdescwidth}|p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{super3colheader}{%
+ \setglossarystyle{super3col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{super3colheaderborder}{%
+ \setglossarystyle{super3colborder}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}{|l|p{\glsdescwidth}|p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{super4col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{llll}}{%
+ \end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} &
+ \glossentrysymbol{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{super4colheader}{%
+ \setglossarystyle{super4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline}%
+ \tabletail{}%
+ \begin{supertabular}{llll}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{super4colborder}{%
+ \setglossarystyle{super4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|l|l|l|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{super4colheaderborder}{%
+ \setglossarystyle{super4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}{|l|l|l|l|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuper4col}{%
+ \setglossarystyle{super4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuper4colheader}{%
+ \setglossarystyle{super4colheader}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuper4colborder}{%
+ \setglossarystyle{super4colborder}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}%
+ {|l|p{\glsdescwidth}|l|p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuper4colheaderborder}{%
+ \setglossarystyle{super4colheaderborder}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline
+ \bfseries\entryname &
+ \bfseries\descriptionname &
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}%
+ {|l|p{\glsdescwidth}|l|p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-super-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-superragged-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossary-superragged-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\ProvidesPackage{glossary-superragged}[2021/11/01 v4.49 (NLCT)]
+\RequirePackage{array}
+\RequirePackage{supertabular}
+\@ifundefined{glsdescwidth}{%
+ \newlength\glsdescwidth
+ \setlength{\glsdescwidth}{0.6\hsize}
+}{}
+\@ifundefined{glspagelistwidth}{%
+ \newlength\glspagelistwidth
+ \setlength{\glspagelistwidth}{0.1\hsize}
+}{}
+\newglossarystyle{superragged}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\space ##2%
+ \tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space
+ ##3%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& \tabularnewline}%
+ \fi
+}
+\newglossarystyle{superraggedborder}{%
+ \setglossarystyle{superragged}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|>{\raggedright}p{\glsdescwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superraggedheader}{%
+ \setglossarystyle{superragged}%
+\renewenvironment{theglossary}%
+ {\tablehead{\bfseries \entryname & \bfseries \descriptionname
+ \tabularnewline}%
+ \tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superraggedheaderborder}{%
+ \setglossarystyle{superragged}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline\bfseries \entryname &
+ \bfseries \descriptionname\tabularnewline\hline}%
+ \tabletail{\hline}
+ \begin{supertabular}{|l|>{\raggedright}p{\glsdescwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superragged3col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} &
+ ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{superragged3colborder}{%
+ \setglossarystyle{superragged3col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|>{\raggedright}p{\glsdescwidth}|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superragged3colheader}{%
+ \setglossarystyle{superragged3col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{superragged3colheaderborder}{%
+ \setglossarystyle{superragged3colborder}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}{|l|>{\raggedright}p{\glsdescwidth}|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuperragged4col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} &
+ \glossentrysymbol{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & & \tabularnewline}%
+ \fi
+}
+\newglossarystyle{altsuperragged4colheader}{%
+ \setglossarystyle{altsuperragged4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuperragged4colborder}{%
+ \setglossarystyle{altsuper4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}%
+ {|l|>{\raggedright}p{\glsdescwidth}|l|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+\newglossarystyle{altsuperragged4colheaderborder}{%
+ \setglossarystyle{altsuperragged4col}%
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline
+ \bfseries\entryname &
+ \bfseries\descriptionname &
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}%
+ {|l|>{\raggedright}p{\glsdescwidth}|l|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-superragged-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-tree-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v4.49 (glossary-tree-2021-11-01.sty)}
+% Version 4.49 preserved for rollback.
+% \begin{macrocode}
+\ProvidesPackage{glossary-tree}[2021/11/01 v4.49 (NLCT)]
+\providecommand{\indexspace}{%
+ \par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@ \relax
+}
+\newcommand*{\glstreenamefmt}[1]{\textbf{#1}}
+\newcommand*{\glstreegroupheaderfmt}[1]{\glstreenamefmt{#1}}
+\newcommand*{\glstreenavigationfmt}[1]{\glstreenamefmt{#1}}
+\ifdef\@idxitem
+{\newcommand{\glstreeitem}{\@idxitem}}
+{\newcommand{\glstreeitem}{\par\hangindent40\p@}}
+\ifdef\subitem
+{\let\glstreesubitem\subitem}
+{\newcommand\glstreesubitem{\glstreeitem\hspace*{20\p@}}}
+\ifdef\subsubitem
+{\let\glstreesubsubitem\subsubitem}
+{\newcommand\glstreesubsubitem{\glstreeitem\hspace*{30\p@}}}
+\newcommand{\glstreepredesc}{\space}
+\newcommand{\glstreechildpredesc}{\space}
+\newglossarystyle{index}{%
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\glstreeitem
+ \let\subitem\glstreesubitem
+ \let\subsubitem\glstreesubsubitem
+ }%
+ {\par}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glossentry}[2]{%
+ \item\glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
+ \glstreepredesc \glossentrydesc{##1}\glspostdescription\space ##2%
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifcase##1\relax
+ % level 0
+ \item
+ \or
+ % level 1
+ \subitem
+ \glssubentryitem{##2}%
+ \else
+ % all other levels
+ \subsubitem
+ \fi
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}%
+ \ifglshassymbol{##2}{\space(\glossentrysymbol{##2})}{}%
+ \glstreechildpredesc\glossentrydesc{##2}\glspostdescription\space ##3%
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}}
+\newglossarystyle{indexgroup}{%
+ \setglossarystyle{index}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}%
+ \indexspace
+ }%
+}
+\newglossarystyle{indexhypergroup}{%
+ \setglossarystyle{index}%
+ \renewcommand*{\glossaryheader}{%
+ \item\glstreenavigationfmt{\glsnavigation}\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}%
+ \indexspace}%
+}
+\newglossarystyle{tree}{%
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}}%
+ {}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
+ \glstreepredesc\glossentrydesc{##1}\glspostdescription\space##2\par
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}%
+ \ifglshassymbol{##2}{\space(\glossentrysymbol{##2})}{}%
+ \glstreechildpredesc\glossentrydesc{##2}\glspostdescription\space ##3\par
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}}
+\newglossarystyle{treegroup}{%
+ \setglossarystyle{tree}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \noindent\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par
+ \indexspace}%
+}
+\newglossarystyle{treehypergroup}{%
+ \setglossarystyle{tree}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newlength\glstreeindent
+\setlength{\glstreeindent}{10pt}
+\newglossarystyle{treenoname}{%
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}}%
+ {}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
+ \glstreepredesc\glossentrydesc{##1}\glspostdescription\space##2\par
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstarget{##2}{\strut}%
+ \glossentrydesc{##2}\glspostdescription\space##3\par
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}%
+}
+\newglossarystyle{treenonamegroup}{%
+ \setglossarystyle{treenoname}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \noindent\glstreegroupheaderfmt
+ {\glsgetgrouptitle{##1}}\par\indexspace}%
+}
+\newglossarystyle{treenonamehypergroup}{%
+ \setglossarystyle{treenoname}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+\newrobustcmd*{\glsfindwidesttoplevelname}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglshasparent{\@glo@label}%
+ {}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \letcs{\@glswidestname}{glo@\glsdetoklabel{\@glo@label}@name}%
+ \fi
+ }%
+ }%
+ }%
+}
+\newcommand*{\glssetwidest}[2][0]{%
+ \expandafter\def\csname @glswidestname\romannumeral#1\endcsname{%
+ #2}%
+}
+\newcommand*{\@glswidestname}{}
+\newcommand*{\glstreenamebox}[2]{%
+ \makebox[#1][l]{#2}%
+}
+\newglossarystyle{alttree}{%
+ \renewenvironment{theglossary}%
+ {\def\@gls@prevlevel{-1}%
+ \mbox{}\par}%
+ {\par}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \ifnum\@gls@prevlevel=0\relax
+ \else
+ \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}%
+ \fi
+ \hangindent\glstreeindent
+ \parindent\glstreeindent
+ \makebox[0pt][r]{\glstreenamebox{\glstreeindent}{%
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}}}%
+ \ifglshassymbol{##1}{(\glossentrysymbol{##1})\space}{}%
+ \glossentrydesc{##1}\glspostdescription \space ##2\par
+ \def\@gls@prevlevel{0}%
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \ifnum\@gls@prevlevel=##1\relax
+ \else
+ \@ifundefined{@glswidestname\romannumeral##1}{%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}}{%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##1\endcsname\space}}}%
+ \ifnum\@gls@prevlevel<##1\relax
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+ \@ifundefined{@glswidestname\romannumeral\@gls@prevlevel}{%
+ \settowidth{\glstreeindent}{\glstreenamefmt{%
+ \@glswidestname\space}}}{%
+ \settowidth{\glstreeindent}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral\@gls@prevlevel
+ \endcsname\space}}}%
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+ \hangindent\glstreeindent
+ \makebox[0pt][r]{\glstreenamebox{\gls@tmplen}{%
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}}}%
+ \ifglshassymbol{##2}{(\glossentrysymbol{##2})\space}{}%
+ \glossentrydesc{##2}\glspostdescription\space ##3\par
+ \def\@gls@prevlevel{##1}%
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}%
+}
+\newglossarystyle{alttreegroup}{%
+ \setglossarystyle{alttree}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsgetgrouptitle{##1}}%
+ \par\indexspace}%
+}
+\newglossarystyle{alttreehypergroup}{%
+ \setglossarystyle{alttree}%
+ \renewcommand*{\glossaryheader}{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossary-tree-2021-11-01.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-acronym-desc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test acronym entries with descriptions.
+%COMMENT
+
+\newacronym[type=\glsdefaulttype,description={fringilla a, euismod sodales,
+ sollicitudin vel, wisi}]{ndl}{NDL}{nam dui ligula}
+
+\newacronym[type=\glsdefaulttype,description={non justo}]{mal}{MAL}{morbi auctor lorem}
+
+\newacronym[type=\glsdefaulttype,description={pretium at, lobortis vitae, ultricies et,
+tellus}]{nll}{NLL}{name lacus libero}
+
+\newacronym[type=\glsdefaulttype,description={tortor sed accumsan bibendum, erat ligula
+aliquet magna, vitae ornare odio metus a mi}]{da}{DA}{donec aliquet}
+
+\newacronym[type=\glsdefaulttype,description={et nisl hendrerit mollis}]{mao}{MAO}{morbi ac orci}
+
+\newacronym[type=\glsdefaulttype,description={cras nec ante}]{sum}{SUM}{suspendisse ut massa}
+
+\newacronym[type=\glsdefaulttype,description={cum sociis natoque penatibus et magnis dis
+parturient montes, nascetur ridiculus mus}]{pan}{PAN}{pellentesque a nulla}
+
+\newacronym[type=\glsdefaulttype,description={nulla ullamcorper vestibulum
+turpis}]{atu}{ATU}{aliquam tincidunt urna}
+
+\newacronym[type=\glsdefaulttype,description={nulla malesuada porttitor diam}]%
+ {pclm}{PCLM}{pellentesque cursus luctus mauris}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-acronym-desc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-acronym.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test acronym entries
+%COMMENT
+
+\newacronym[type=\glsdefaulttype]{lid}{LID}{lorem ipsum dolor}
+
+\newacronym[type=\glsdefaulttype]{stc}{STC}{sit amet consectetuer}
+
+\newacronym[type=\glsdefaulttype]{aeu}{AEU}{adipiscing elit ut}
+
+\newacronym[type=\glsdefaulttype]{pev}{PEV}{purus elit vestibulum}
+
+\newacronym[type=\glsdefaulttype]{upa}{UPA}{ut placerat ac}
+
+\newacronym[type=\glsdefaulttype]{avf}{AVF}{adipiscing vitae felis}
+
+\newacronym[type=\glsdefaulttype]{cdg}{CDG}{curabitur dictum gravida}
+
+\newacronym[type=\glsdefaulttype]{mna}{MNA}{mauris nam arcu}
+
+\newacronym[type=\glsdefaulttype]{lne}{LNE}{libero nonummy eget}
+
+\newacronym[type=\glsdefaulttype]{civ}{CIV}{consectetuer id vulputate}
+
+\newacronym[type=\glsdefaulttype]{amd}{AMD}{a magna donec}
+
+\newacronym[type=\glsdefaulttype]{vae}{VAE}{vehicula augue eu}
+
+\newacronym[type=\glsdefaulttype]{nph}{NPH}{neque pellentesque habitant}
+
+\newacronym[type=\glsdefaulttype]{mts}{MTS}{morbi tristique senectus}
+
+\newacronym[type=\glsdefaulttype]{ene}{ENE}{et netus et}
+
+\newacronym[type=\glsdefaulttype]{mfa}{MFA}{malesuada fames ac}
+
+\newacronym[type=\glsdefaulttype]{tem}{TEM}{turpis egestas mauris}
+
+\newacronym[type=\glsdefaulttype]{ulc}{ULC}{ut leo cras}
+
+\newacronym[type=\glsdefaulttype]{vmr}{VMR}{viverra metus rhoncus}
+
+\newacronym[type=\glsdefaulttype]{sne}{SNE}{sem nulla et}
+
+\newacronym[type=\glsdefaulttype]{lvu}{LVU}{lectus vestibulum urna}
+
+\newacronym[type=\glsdefaulttype]{fup}{FUP}{fringilla ultrices phasellus}
+
+\newacronym[type=\glsdefaulttype]{ets}{ETS}{eu tellus sit}
+
+\newacronym[type=\glsdefaulttype]{atg}{ATG}{amet tortor gravida}
+
+\newacronym[type=\glsdefaulttype]{pis}{PIS}{placerat integer sapien}
+
+\newacronym[type=\glsdefaulttype]{eii}{EII}{est iaculis in}
+
+\newacronym[type=\glsdefaulttype]{pqv}{PQV}{pretium quis viverra}
+
+\newacronym[type=\glsdefaulttype]{anp}{ANP}{ac nunc praesent}
+
+\newacronym[type=\glsdefaulttype]{esv}{ESV}{eget sem vel}
+
+\newacronym[type=\glsdefaulttype]{lub}{LUB}{leo ultrices bibendum}
+
+\newacronym[type=\glsdefaulttype]{afm}{AFM}{aenean faucibus morbi}
+
+\newacronym[type=\glsdefaulttype]{dnm}{DNM}{dolor nulla malesuada}
+
+\newacronym[type=\glsdefaulttype]{epa}{EPA}{eu pulvinar at}
+
+\newacronym[type=\glsdefaulttype]{man}{MAC}{mollis ac nulla}
+
+\newacronym[type=\glsdefaulttype]{cas}{CAS}{curabitur auctor semper}
+
+\newacronym[type=\glsdefaulttype]{ndv}{NDV}{nulla donec varius}
+
+\newacronym[type=\glsdefaulttype]{oer}{OER}{orci eget risus}
+
+\newacronym[type=\glsdefaulttype]{dnmc}{DNMC}{duis nibh mi congue}
+
+\newacronym[type=\glsdefaulttype]{cea}{CEA}{congue eu accumsan}
+
+\newacronym[type=\glsdefaulttype]{esq}{ESQ}{eleifend sagittis quis}
+
+\newacronym[type=\glsdefaulttype]{dia}{DIA}{duis eget orci}
+
+\newacronym[type=\glsdefaulttype]{sao}{SAO}{sit amet orci}
+
+\newacronym[type=\glsdefaulttype]{drn}{DRN}{dignissim rutrum nam}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-acronym.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-acronyms-lang.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test acronym entries where some are provided with
+% "translations", which are stored in the user1 key.
+%COMMENT
+
+\newacronym[type=\glsdefaulttype,user1={love itself}]{li}{LI}{lorem ipsum}
+
+\newacronym[type=\glsdefaulttype,user1={produces none}]{np}{NP}{nulla pariatur}
+
+\newacronym[type=\glsdefaulttype,user1={blame belongs}]{sic}{SIC}{sunt in culpa}
+
+\newacronym[type=\glsdefaulttype,user1={blinded by
+desire}]{esoc}{ESOC}{excepturi sint obcaecati cupiditat}
+
+\newacronym[type=\glsdefaulttype]{nmruu}{NMRUU}{nulla malesuada
+risus ut urna}
+
+\newacronym[type=\glsdefaulttype]{di}{DI}{duis iaculi}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-acronyms-lang.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-brief.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test glossary entries with brief descriptions.
+%COMMENT
+
+\newglossaryentry{lorem}{name={lorem},description={ipsum}}
+
+\newglossaryentry{dolor}{name={dolor},description={sit}}
+
+\newglossaryentry{amet}{name={amet},description={consectetuer}}
+
+\newglossaryentry{adipiscing}{name={adipiscing},description={elit}}
+
+\newglossaryentry{ut}{name={ut},description={purus}}
+
+\newglossaryentry{elit}{name={elit},description={vestibulum}}
+
+\newglossaryentry{placerat}{name={placerat},description={ac}}
+
+\newglossaryentry{vitae}{name={vitae},description={felis}}
+
+\newglossaryentry{curabitur}{name={curabitur},description={gravida}}
+
+\newglossaryentry{mauris}{name={mauris},description={nam}}
+
+\newglossaryentry{arcu}{name={arcu},description={libero}}
+
+\newglossaryentry{nonummy}{name={nonummy},description={eget}}
+
+\newglossaryentry{consectetuer}{name={consectetuer},description={id}}
+
+\newglossaryentry{vulputate}{name={vulputate},description={a magna}}
+
+\newglossaryentry{donec}{name={donec},description={vehicula}}
+
+\newglossaryentry{augue}{name={augue},description={eu neque}}
+
+\newglossaryentry{pellentesque}{name={pellentesque},description={habitant}}
+
+\newglossaryentry{morbi}{name={morbi},description={tristique}}
+
+\newglossaryentry{senectus}{name={senectus},description={et netus}}
+
+\newglossaryentry{et}{name={et},description={malesuada}}
+
+\newglossaryentry{fames}{name={fames},description={ac}}
+
+\newglossaryentry{turpis}{name={turpis},description={egestas}}
+
+\newglossaryentry{leo}{name={leo},description={cras}}
+
+\newglossaryentry{viverra}{name={viverra},description={metus}}
+
+\newglossaryentry{rhoncus}{name={rhoncus},description={sem}}
+
+\newglossaryentry{nulla}{name={nulla},description={et}}
+
+\newglossaryentry{lectus}{name={lectus},description={vestibulum}}
+
+\newglossaryentry{urna}{name={urna},description={fringilla}}
+
+\newglossaryentry{ultrices}{name={ultrices},description={phasellus}}
+
+\newglossaryentry{eu}{name={eu},description={tellus}}
+
+\newglossaryentry{sit}{name={sit},description={amet}}
+
+\newglossaryentry{tortor}{name={tortor},description={gravida}}
+
+\newglossaryentry{integer}{name={integer},description={sapien}}
+
+\newglossaryentry{est}{name={est},description={iaculis}}
+
+\newglossaryentry{in}{name={in},description={pretium}}
+
+\newglossaryentry{quis}{name={quis},description={viverra}}
+
+\newglossaryentry{ac}{name={ac},description={nunc}}
+
+\newglossaryentry{praesent}{name={praesent},description={eget}}
+
+\newglossaryentry{sem}{name={sem},description={vel leo}}
+
+\newglossaryentry{bibendum}{name={bibendum},description={ultrices}}
+
+\newglossaryentry{aenean}{name={aenean},description={faucibus}}
+
+\newglossaryentry{malesuada}{name={malesuada},description={eu}}
+
+\newglossaryentry{pulvinar}{name={pulvinar},description={at}}
+
+\newglossaryentry{mollis}{name={mollis},description={ac nulla}}
+
+\newglossaryentry{auctor}{name={auctor},description={semper}}
+
+\newglossaryentry{varius}{name={varius},description={orci}}
+
+\newglossaryentry{eget}{name={eget},description={risus}}
+
+\newglossaryentry{duis}{name={duis},description={nibh}}
+
+\newglossaryentry{mi}{name={mi},description={congue}}
+
+\newglossaryentry{accumsan}{name={accumsan},description={eleifend}}
+
+\newglossaryentry{sagittis}{name={sagittis},description={quis}}
+
+\newglossaryentry{diam}{name={diam},description={duis}}
+
+\newglossaryentry{orci}{name={orci},description={dignissim}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-brief.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-childmultipar.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle.
+% These are test glossary entries with child entries that have
+% multi-paragraph descriptions. One parent entry also has a
+% multi-paragraph description. Some entries have an associated
+% image file (stored in user1). The referenced image files are
+% provided by the mwe package.
+%COMMENT
+
+\newglossaryentry{hiersedmattis}{name={sed mattis},user1={example-image},
+ description={Erat sit amet dolor sit amet, consectetuer adipiscing elit. Ut purus
+elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
+dictum gravida mauris. Ut pellentesque augue sed urna. Vestibulum
+diam eros, fringilla et, consectetuer eu, nonummy id, sapien. Nullam
+at lectus. In sagittis ultrices mauris. Curabitur malesuada erat sit
+amet massa. Fusce blandit. Aliquam erat volutpat.}}
+
+
+\longnewglossaryentry{hierloremi-ii}
+{name={lorem 1--2},parent={hiersedmattis}}%
+{%
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
+vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
+dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer
+id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque
+habitant morbi tristique senectus et netus et malesuada fames ac
+turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla
+et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
+sit amet tortor gravida placerat. Integer sapien est, iaculis in,
+pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices
+bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar
+at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius
+orci eget risus. Duis nibh mi, congue eu, accumsan eleifend,
+sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel,
+wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at,
+lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed
+accumsan bibendum, erat ligula aliquet magna, vitae ornare odio
+metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut
+massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque
+penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+Aliquam tincidunt urna. Nulla ullamcorper vestibulum turpis.
+Pellentesque cursus luctus mauris.%
+}
+
+\longnewglossaryentry{hierloremiii-iv}
+{name={lorem 3--4},parent={hiersedmattis},user1={example-image}}%
+{%
+Nulla malesuada porttitor diam. Donec felis erat, congue non,
+volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum
+felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper
+elit. Proin fermentum massa ac quam. Sed diam turpis, molestie
+vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum
+ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit
+ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer
+non enim. Praesent euismod nunc eu purus. Donec bibendum quam in
+tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate
+metus eu enim. Vestibulum pellentesque felis eu massa.
+
+Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo
+vitae lacus tincidunt ultrices. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. In hac habitasse platea dictumst.
+Integer tempus convallis augue. Etiam facilisis. Nunc elementum
+fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida
+sollicitudin, felis odio placerat quam, ac pulvinar elit purus eget
+enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus
+quis tortor vitae risus porta vehicula.%
+}
+
+\longnewglossaryentry{hierloremv-vi}
+{name={lorem 5--6},parent={hiersedmattis}}%
+{%
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla
+a faucibus semper, leo velit ultricies tellus, ac venenatis arcu
+wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis
+sagittis posuere, turpis lacus congue quam, in hendrerit risus eros
+eget felis. Maecenas eget erat in sapien mattis porttitor.
+Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo
+facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus
+sagittis dui, et vehicula libero dui cursus dui. Mauris tempor
+ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras
+nulla. Nulla egestas. Curabitur a leo. Quisque egestas wisi eget
+nunc. Nam feugiat lacus vel est. Curabitur consectetuer.%
+
+Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit
+amet, laoreet vitae, arcu. Aenean faucibus pede eu ante. Praesent
+enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus
+eros, malesuada sit amet, fermentum eu, sodales cursus, magna. Donec
+eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem
+egestas dui, et convallis elit erat sed nulla. Donec luctus.
+Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies
+non, pharetra in, velit. Integer arcu est, nonummy in, fermentum
+faucibus, egestas vel, odio.%
+}
+
+\longnewglossaryentry{hiergravida}{name={gravida}}
+{Malesuada libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
+vehicula augue eu neque. Pellentesque habitant morbi tristique
+senectus et netus et malesuada fames ac turpis egestas. Mauris ut
+leo.
+
+Morbi ultrices rutrum lorem. Nam elementum ullamcorper
+leo. Morbi dui. Aliquam sagittis. Nunc placerat. Pellentesque
+tristique sodales est. Maecenas imperdiet lacinia velit. Cras non
+urna. Morbi eros pede, suscipit ac, varius vel, egestas non, eros.}
+
+\longnewglossaryentry{hierloremvii-viii}
+{name={lorem 7--8},parent={hiergravida},user1={example-image-b}}%
+{%
+Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio.
+Sed vehicula hendrerit sem. Duis non odio. Morbi ut dui. Sed
+accumsan risus eget odio. In hac habitasse platea dictumst.
+Pellentesque non elit. Fusce sed justo eu urna porta tincidunt.
+Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat.
+Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc
+dui lobortis purus, quis congue purus metus ultricies tellus. Proin
+et quam. Class aptent taciti sociosqu ad litora torquent per conubia
+nostra, per inceptos hymenaeos. Praesent sapien turpis, fermentum
+vel, eleifend faucibus, vehicula eu, lacus.
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada
+fames ac turpis egestas. Donec odio elit, dictum in, hendrerit sit
+amet, egestas sed, leo. Praesent feugiat sapien aliquet odio.
+Integer vitae justo. Aliquam vestibulum fringilla lorem. Sed neque
+lectus, consectetuer at, consectetuer sed, eleifend ac, lectus.
+Nulla facilisi. Pellentesque eget lectus. Proin eu metus. Sed
+porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus.
+Ut mi mi, lacinia sit amet, placerat et, mollis vitae, dui. Sed ante
+tellus, tristique ut, iaculis eu, malesuada ac, dui. Mauris nibh
+leo, facilisis non, adipiscing quis, ultrices a, dui.%
+}
+
+\longnewglossaryentry{hierloremix-x}
+{name={lorem 9--10},parent={hiergravida},user1={example-image-c}}%
+{%
+Morbi luctus, wisi viverra faucibus pretium, nibh est placerat odio,
+nec commodo wisi enim eget quam. Quisque libero justo, consectetuer
+a, feugiat vitae, porttitor eu, libero. Suspendisse sed mauris
+vitae elit sollicitudin malesuada. Maecenas ultricies eros sit amet
+ante. Ut venenatis velit. Maecenas sed mi eget dui varius euismod.
+Phasellus aliquet volutpat odio. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque
+sit amet pede ac sem eleifend consectetuer. Nullam elementum, urna
+vel imperdiet sodales, elit ipsum pharetra ligula, ac pretium ante
+justo a nulla. Curabitur tristique arcu eu metus. Vestibulum lectus.
+Proin mauris. Proin eu nunc eu urna hendrerit faucibus. Aliquam
+auctor, pede consequat laoreet varius, eros tellus scelerisque quam,
+pellentesque hendrerit ipsum dolor sed augue. Nulla nec lacus.
+
+Suspendisse vitae elit. Aliquam arcu neque, ornare in, ullamcorper
+quis, commodo eu, libero. Fusce sagittis erat at erat tristique
+mollis. Maecenas sapien libero, molestie et, lobortis in, sodales
+eget, dui. Morbi ultrices rutrum lorem. Nam elementum ullamcorper
+leo. Morbi dui. Aliquam sagittis. Nunc placerat. Pellentesque
+tristique sodales est. Maecenas imperdiet lacinia velit. Cras non
+urna. Morbi eros pede, suscipit ac, varius vel, egestas non, eros.
+Praesent malesuada, diam id pretium elementum, eros sem dictum
+tortor, vel consectetuer odio sem sed wisi.%
+}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-childmultipar.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-childnoname.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test glossary entries with child entries that don't have
+% a name supplied. (The name is the same as the parent name.)
+%COMMENT
+
+\newglossaryentry{scelerisque}{name={scelerisque},description={at}}
+
+\newglossaryentry{vestibulum}{parent={scelerisque},description={eu, nulla}}
+
+\newglossaryentry{utodionisl}{parent={scelerisque},description={facilisis id}}
+
+\newglossaryentry{molliset}{parent={scelerisque},description={nec, enim}}
+
+\newglossaryentry{aeneansem}{parent={scelerisque},description={sem leo}}
+
+\newglossaryentry{pellentesquesit}{parent={scelerisque},description={sit amet}}
+
+\newglossaryentry{sapien}{parent={scelerisque},description={vehicula
+pellentesque}}
+
+\newglossaryentry{consequat}{parent={scelerisque},description={tellus
+et tortor}}
+
+\newglossaryentry{uttempor}{name={ut tempor},description={laoreet
+quam}}
+
+\newglossaryentry{nullamid}{parent={uttempor},description={wisi a
+libero}}
+
+\newglossaryentry{tristique}{parent={uttempor},description={semper}}
+
+\newglossaryentry{nullamnislmassa}{parent={uttempor},description={rutrum
+ut}}
+
+\newglossaryentry{eleifend}{name={eleifend},description={sit amet
+faucibus}}
+
+\newglossaryentry{elementum}{parent={eleifend},description={elementum}}
+
+\newglossaryentry{urnasapien}{parent={eleifend},description={urna sapien}}
+
+\newglossaryentry{consectetuermauris}{name={consectetuer},description={mauris}}
+
+\newglossaryentry{quisegestas}{parent={consectetuermauris},description={quis egestas}}
+
+\newglossaryentry{leojusto}{parent={consectetuermauris},description={leo
+justo}}
+
+\newglossaryentry{nonrisus}{name={non risus},description={morbi non
+felis}}
+
+\newglossaryentry{aclibero}{parent={nonrisus},description={ac libero}}
+
+\newglossaryentry{vulputatefringilla}{parent={nonrisus},description={vulputate
+fringilla}}
+
+\newglossaryentry{maurislibero}{name={mauris},description={libero eros}}
+
+\newglossaryentry{lacinia}{parent={maurislibero},description={lacinia
+non}}
+
+\newglossaryentry{sodales}{parent={maurislibero},description={sodales
+quis}}
+
+\newglossaryentry{dapibus}{parent={maurislibero},description={dapibus
+porttitor, pede}}
+
+\newglossaryentry{class}{name={class},description={aptent taciti}}
+
+\newglossaryentry{sociosqu}{parent={class},description={sociosqu}}
+
+\newglossaryentry{adlitora}{parent={class},description={ad litora}}
+
+\newglossaryentry{torquent}{parent={class},description={torquent per
+conubia}}
+
+\newglossaryentry{nostra}{name={nostra},description={per inceptos
+hymenaeos}}
+
+\newglossaryentry{morbidapibus}{parent={nostra},description={morbi
+dapibus}}
+
+\newglossaryentry{mauriscondimentum}{parent={nostra},description={mauris
+condimentum nulla}}
+
+\newglossaryentry{cumsociis}{name={cum sociis},description={natoque
+penatibus}}
+
+\newglossaryentry{etmagnis}{parent={cumsociis},description={et
+magnis}}
+
+\newglossaryentry{disparturient}{parent={cumsociis},description={dis
+parturient montes}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-childnoname.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-cite.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test glossary entries with citation labels stored in
+% the user1 field. (The citations are defined in the xampl.bib file
+% that should be available on modern TeX distributions.)
+%COMMENT
+
+\newglossaryentry{fusce}{name={fusce},
+description={suscipit cursus sem},user1={article-minimal}}
+
+\newglossaryentry{vivamus}{name={vivamus},
+description={risus mi, egestas ac},user1={article-full}}
+
+\newglossaryentry{imperdiet}{name={imperdiet},
+description={varius, faucibus quis, leo},user1={whole-journal}}
+
+\newglossaryentry{aenean2}{name={aenean},
+description={tincidunt},user1={inbook-minimal}}
+
+\newglossaryentry{crasid}{name={cras id},
+description={justo quis nibh scelerisque dignissim},
+user1={inbook-full}}
+
+\newglossaryentry{aliquam2}{name={aliquam},
+description={sagittis elementum dolor},
+user1={book-minimal}}
+
+\newglossaryentry{aeneanconsectetuer}{name={aenean consectetuer},
+description={justo in pede},
+user1={book-full}}
+
+\newglossaryentry{curabiturullamcorper}{name={curabitur ullamcorper},
+description={ligula nec orci},
+user1={booklet-minimal}}
+
+\newglossaryentry{aliquampurus}{name={aliquam purus},
+description={turpis, aliquam id},
+user1={booklet-full}}
+
+\newglossaryentry{ornarevitae}{name={ornare vitae},
+description={porttitor non, wisi},
+user1={incollection-minimal}}
+
+\newglossaryentry{maecenasluctus}{name={maecenas luctus},
+description={porta lorem},
+user1={incollection-full}}
+
+\newglossaryentry{donecvitae}{name={donec vitae},
+description={ligula eu ante pretium varius},
+user1={manual-minimal}}
+
+\newglossaryentry{proin}{name={proin},
+description={tortor metus, convallis et},
+user1={manual-full}}
+
+\newglossaryentry{hendrerit}{name={hendrerit},
+description={non, scelerisque in, urna},
+user1={mastersthesis-minimal}}
+
+\newglossaryentry{crasquis}{name={cras qui},
+description={libero eu ligula bibendum tempor},
+user1={mastersthesis-full}}
+
+\newglossaryentry{vivamustellus}{name={vivamus tellus},
+description={quam, malesuada eu, tempus sed, tempor sed, velit},
+user1={misc-minimal}}
+
+\newglossaryentry{doneclacinia}{name={donec lacinia},
+description={auctor libero},
+user1={misc-full}}
+
+\newglossaryentry{praesent2}{name={praesent},
+description={sed neque id pede mollis rutrum},
+user1={inproceedings-minimal}}
+
+ % Here's one with multiple cites:
+\newglossaryentry{vestibulum2}{name={vestibulum},
+description={iaculis risus},
+user1={inproceedings-minimal,phdthesis-minimal}}
+
+ % Here's one without a user1 key for comparison:
+\newglossaryentry{pellentesque2}{name={pellentesque},
+description={lacus}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-cite.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-images.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test glossary entries with multi-paragraph descriptions
+% that have an associated image file (stored in user1).
+% The referenced image files are provided by the mwe package.
+%COMMENT
+
+\longnewglossaryentry{sedfeugiat}{name={sed feugiat},user1={example-image}}%
+{%
+Cum sociis natoque penatibus et magnis dis parturient montes,
+nascetur ridiculus mus. Ut pellentesque augue sed urna. Vestibulum
+diam eros, fringilla et, consectetuer eu, nonummy id, sapien. Nullam
+at lectus. In sagittis ultrices mauris. Curabitur malesuada erat sit
+amet massa. Fusce blandit. Aliquam erat volutpat. Aliquam euismod.
+Aenean vel lectus. Nunc imperdiet justo nec dolor.
+
+Etiam euismod. Fusce facilisis lacinia dui. Suspendisse potenti. In
+mi erat, cursus id, nonummy sed, ullamcorper eget, sapien. Praesent
+pretium, magna in eleifend egestas, pede pede pretium lorem, quis
+consectetuer tortor sapien facilisis magna. Mauris quis magna
+varius nulla scelerisque imperdiet. Aliquam non quam. Aliquam
+porttitor quam a lacus. Praesent vel arcu ut tortor cursus volutpat.
+In vitae pede quis diam bibendum placerat. Fusce elementum convallis
+neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut,
+mi. Duis nec dui quis leo sagittis commodo.
+}
+
+\longnewglossaryentry{aliquamlectus}%
+{name={aliquam lectus},user1={example-image-a}}%
+{%
+Vivamus leo. Quisque ornare tellus ullamcorper nulla. Mauris
+porttitor pharetra tortor. Sed fringilla justo sed mauris. Mauris
+tellus. Sed non leo. Nullam elementum, magna in cursus sodales,
+augue est scelerisque sapien, venenatis congue nulla arcu et pede.
+Ut suscipit enim vel sapien. Donec congue. Maecenas urna mi,
+suscipit in, placerat ut, vestibulum ut, massa. Fusce ultrices nulla
+et nisl.
+
+Etiam ac leo a risus tristique nonummy. Donec dignissim tincidunt
+nulla. Vestibulum rhoncus molestie odio. Sed lobortis, justo et
+pretium lobortis, mauris turpis condimentum augue, nec ultricies
+nibh arcu pretium enim. Nunc purus neque, placerat id, imperdiet
+sed, pellentesque nec, nisl. Vestibulum imperdiet neque non sem
+accumsan laoreet. In hac habitasse platea dictumst. Etiam
+condimentum facilisis libero. Suspendisse in elit quis nisl aliquam
+dapibus. Pellentesque auctor sapien. Sed egestas sapien nec lectus.
+Pellentesque vel dui vel neque bibendum viverra. Aliquam porttitor
+nisl nec pede. Proin mattis libero vel turpis. Donec rutrum mauris
+et libero. Proin euismod porta felis. Nam lobortis, metus quis
+elementum commodo, nunc lectus elementum mauris, eget vulputate
+ligula tellus eu neque. Vivamus eu dolor.
+}
+
+\longnewglossaryentry{nullainipsum}%
+{name={nulla in ipsum},user1={example-image-b}}%
+{%
+ Praesent eros nulla, congue vitae, euismod ut, commodo a, wisi.
+Pellentesque habitant morbi tristique senectus et netus et malesuada
+fames ac turpis egestas. Aenean nonummy magna non leo. Sed felis
+erat, ullamcorper in, dictum non, ultricies ut, lectus. Proin vel
+arcu a odio lobortis euismod. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Proin ut
+est. Aliquam odio. Pellentesque massa turpis, cursus eu, euismod
+nec, tempor congue, nulla. Duis viverra gravida mauris. Cras
+tincidunt. Curabitur eros ligula, varius ut, pulvinar in, cursus
+faucibus, augue.
+
+Nulla mattis luctus nulla. Duis commodo velit at leo. Aliquam
+vulputate magna et leo. Nam vestibulum ullamcorper leo. Vestibulum
+condimentum rutrum mauris. Donec id mauris. Morbi molestie justo et
+pede. Vivamus eget turpis sed nisl cursus tempor. Curabitur mollis
+sapien condimentum nunc. In wisi nisl, malesuada at, dignissim sit
+amet, lobortis in, odio. Aenean consequat arcu a ante. Pellentesque
+porta elit sit amet orci. Etiam at turpis nec elit ultricies
+imperdiet. Nulla facilisi. In hac habitasse platea dictumst.
+Suspendisse viverra aliquam risus. Nullam pede justo, molestie
+nonummy, scelerisque eu, facilisis vel, arcu.
+}
+
+\longnewglossaryentry{curabiturtellusmagna}%
+{name={curabitur tellus magna},user1={example-image-c}}%
+{%
+Donec interdum. Praesent scelerisque. Maecenas posuere sodales
+odio. Vivamus metus lacus, varius quis, imperdiet quis, rhoncus a,
+turpis. Etiam ligula arcu, elementum a, venenatis quis, sollicitudin
+sed, metus. Donec nunc pede, tincidunt in, venenatis vitae, faucibus
+vel, nibh. Pellentesque wisi. Nullam malesuada. Morbi ut tellus ut
+pede tincidunt porta. Lorem ipsum dolor sit amet, consectetuer
+adipiscing elit. Etiam congue neque id dolor.
+
+Donec et nisl at wisi luctus bibendum. Nam interdum tellus ac
+libero. Sed sem justo, laoreet vitae, fringilla at, adipiscing ut,
+nibh. Maecenas non sem quis tortor eleifend fermentum. Etiam id
+tortor ac mauris porta vulputate. Integer porta neque vitae massa.
+Maecenas tempus libero a libero posuere dictum. Vestibulum ante
+ipsum primis in faucibus orci luctus et ultrices posuere cubilia
+Curae; Aenean quis mauris sed elit commodo placerat. Class aptent
+taciti sociosqu ad litora torquent per conubia nostra, per inceptos
+hymenaeos. Vivamus rhoncus tincidunt libero. Etiam elementum pretium
+justo. Vivamus est. Morbi a tellus eget pede tristique commodo.
+Nulla nisl. Vestibulum sed nisl eu sapien cursus rutrum.
+}
+
+\longnewglossaryentry{nullanonmauris}%
+{name={nulla non mauris},user1={example-image-16x10}}%
+{%
+Nullam varius. Etiam dignissim elementum metus. Vestibulum faucibus,
+metus sit amet mattis rhoncus, sapien dui laoreet odio, nec
+ultricies nibh augue a enim. Fusce in ligula. Quisque at magna et
+nulla commodo consequat. Proin accumsan imperdiet sem. Nunc porta.
+Donec feugiat mi at justo. Phasellus facilisis ipsum quis ante. In
+ac elit eget ipsum pharetra faucibus. Maecenas viverra nulla in
+massa.
+
+Nulla ac nisl. Nullam urna nulla, ullamcorper in, interdum sit amet,
+gravida ut, risus. Aenean ac enim. In luctus. Phasellus eu quam
+vitae turpis viverra pellentesque. Duis feugiat felis ut enim.
+Phasellus pharetra, sem id porttitor sodales, magna nunc aliquet
+nibh, nec blandit nisl mauris at pede. Suspendisse risus risus,
+lobortis eget, semper at, imperdiet sit amet, quam. Quisque
+scelerisque dapibus nibh. Nam enim. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Nunc ut metus. Ut metus justo, auctor
+at, ultrices eu, sagittis ut, purus. Aliquam aliquam.
+}
+
+\longnewglossaryentry{etiampedemassa}%
+{name={etiam pede massa},user1={example-image-10x16}}%
+{%
+Vestibulum luctus commodo lacus. Morbi lacus dui, tempor sed,
+euismod eget, condimentum at, tortor. Phasellus aliquet odio ac
+lacus tempor faucibus. Praesent sed sem. Praesent iaculis. Cras
+rhoncus tellus sed justo ullamcorper sagittis. Donec quis orci.
+Sed ut tortor quis tellus euismod tincidunt. Suspendisse congue nisl
+eu elit. Aliquam tortor diam, tempus id, tristique eget, sodales
+vel, nulla. Praesent tellus mi, condimentum sed, viverra at,
+consectetuer quis, lectus. In auctor vehicula orci. Sed pede sapien,
+euismod in, suscipit in, pharetra placerat, metus. Vivamus commodo
+dui non odio. Donec et felis.
+
+Etiam suscipit aliquam arcu. Aliquam sit amet est ac purus bibendum
+congue. Sed in eros. Morbi non orci. Pellentesque mattis lacinia
+elit. Fusce molestie velit in ligula. Nullam et orci vitae nibh
+vulputate auctor. Aliquam eget purus. Nulla auctor wisi sed ipsum.
+Morbi porttitor tellus ac enim. Fusce ornare. Proin ipsum enim,
+tincidunt in, ornare venenatis, molestie a, augue. Donec vel pede in
+lacus sagittis porta. Sed hendrerit ipsum quis nisl. Suspendisse
+quis massa ac nibh pretium cursus. Sed sodales. Nam eu neque quis
+pede dignissim ornare. Maecenas eu purus ac urna tincidunt congue.
+}
+
+\longnewglossaryentry{donecetnisl}%
+{name={donec et nisl},user1={example-image-16x9}}%
+{%
+Aenean dictum odio sit amet risus. Morbi purus. Nulla a est sit amet
+purus venenatis iaculis. Vivamus viverra purus vel magna. Donec in
+justo sed odio malesuada dapibus. Nunc ultrices aliquam nunc.
+Vivamus facilisis pellentesque velit. Nulla nunc velit, vulputate
+dapibus, vulputate id, mattis ac, justo. Nam mattis elit dapibus
+purus. Quisque enim risus, congue non, elementum ut, mattis quis,
+sem. Quisque elit.
+
+Maecenas non massa. Vestibulum pharetra nulla at lorem. Duis quis
+quam id lacus dapibus interdum. Nulla lorem. Donec ut ante quis
+dolor bibendum condimentum. Etiam egestas tortor vitae lacus.
+Praesent cursus. Mauris bibendum pede at elit. Morbi et felis a
+lectus interdum facilisis. Sed suscipit gravida turpis. Nulla at
+lectus. Vestibulum ante ipsum primis in faucibus orci luctus et
+ultrices posuere cubilia Curae; Praesent nonummy luctus nibh. Proin
+turpis nunc, congue eu, egestas ut, fringilla at, tellus. In hac
+habitasse platea dictumst.
+}
+
+\longnewglossaryentry{vivamuseutellus}%
+{name={vivamus eu tellus},user1={example-image-9x16}}%
+{%
+ Nam orci orci, malesuada id, gravida nec, ultricies vitae, erat.
+Donec risus turpis, luctus sit amet, interdum quis, porta sed,
+ipsum. Suspendisse condimentum, tortor at egestas posuere, neque
+metus tempor orci, et tincidunt urna nunc a purus. Sed facilisis
+blandit tellus. Nunc risus sem, suscipit nec, eleifend quis, cursus
+quis, libero. Curabitur et dolor. Sed vitae sem. Cum sociis natoque
+penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+Maecenas ante. Duis ullamcorper enim. Donec tristique enim eu leo.
+Nullam molestie elit eu dolor. Nullam bibendum, turpis vitae
+tristique gravida, quam sapien tempor lectus, quis pretium tellus
+purus ac quam. Nulla facilisi.
+
+Duis aliquet dui in est. Donec eget est. Nunc lectus odio, varius
+at, fermentum in, accumsan non, enim. Aliquam erat volutpat. Proin
+sit amet nulla ut eros consectetuer cursus. Phasellus dapibus
+aliquam justo. Nunc laoreet. Donec consequat placerat magna. Duis
+pretium tincidunt justo. Sed sollicitudin vestibulum quam. Nam quis
+ligula. Vivamus at metus. Etiam imperdiet imperdiet pede. Aenean
+turpis. Fusce augue velit, scelerisque sollicitudin, dictum vitae,
+tempor et, pede. Donec wisi sapien, feugiat in, fermentum ut,
+sollicitudin adipiscing, metus.
+}
+
+\longnewglossaryentry{donecvelnibh}%
+{name={donec vel nibh},user1={example-image-golden}}%
+{%
+ Donec pede. Sed id quam id wisi laoreet suscipit. Nulla lectus
+dolor, aliquam ac, fringilla eget, mollis ut, orci. In pellentesque
+justo in ligula. Maecenas turpis. Donec eleifend leo at felis
+tincidunt consequat. Aenean turpis metus, malesuada sed, condimentum
+sit amet, auctor a, wisi. Pellentesque sapien elit, bibendum ac,
+posuere et, congue eu, felis. Vestibulum mattis libero quis metus
+scelerisque ultrices. Sed purus.
+
+Donec molestie, magna ut luctus ultrices, tellus arcu nonummy velit,
+sit amet pulvinar elit justo et mauris. In pede. Maecenas euismod
+elit eu erat. Aliquam augue wisi, facilisis congue, suscipit in,
+adipiscing et, ante. In justo. Cras lobortis neque ac ipsum. Nunc
+fermentum massa at ante. Donec orci tortor, egestas sit amet,
+ultrices eget, venenatis eget, mi. Maecenas vehicula leo semper
+est. Mauris vel metus. Aliquam erat volutpat. In rhoncus sapien ac
+tellus. Pellentesque ligula.
+}
+
+\longnewglossaryentry{crasdapibus}%
+{name={cras dapibus},user1={example-image-golden-upright}}%
+{%
+Aenean interdum nibh sed wisi. Praesent sollicitudin vulputate dui.
+Praesent iaculis viverra augue. Quisque in libero. Aenean gravida
+lorem vitae sem ullamcorper cursus. Nunc adipiscing rutrum ante.
+Nunc ipsum massa, faucibus sit amet, viverra vel, elementum semper,
+orci. Cras eros sem, vulputate et, tincidunt id, ultrices eget,
+magna. Nulla varius ornare odio. Donec accumsan mauris sit amet
+augue. Sed ligula lacus, laoreet non, aliquam sit amet, iaculis
+tempor, lorem. Suspendisse eros. Nam porta, leo sed congue tempor,
+felis est ultrices eros, id mattis velit felis non metus. Curabitur
+vitae elit non mauris varius pretium. Aenean lacus sem, tincidunt
+ut, consequat quis, porta vitae, turpis. Nullam laoreet fermentum
+urna. Proin iaculis lectus.
+
+Sed mattis, erat sit amet gravida malesuada, elit augue egestas
+diam, tempus scelerisque nunc nisl vitae libero. Sed consequat
+feugiat massa. Nunc porta, eros in eleifend varius, erat leo rutrum
+dui, non convallis lectus orci ut nibh. Sed lorem massa, nonummy
+quis, egestas id, condimentum at, nisl. Maecenas at nibh. Aliquam
+et augue at nunc pellentesque ullamcorper. Duis nisl nibh, laoreet
+suscipit, convallis ut, rutrum id, enim. Phasellus odio. Nulla
+nulla elit, molestie non, scelerisque at, vestibulum eu, nulla. Ut
+odio nisl, facilisis id, mollis et, scelerisque nec, enim. Aenean
+sem leo, pellentesque sit amet, scelerisque sit amet, vehicula
+pellentesque, sapien.
+}
+
+\longnewglossaryentry{sedconsequat}%
+{name={sed consequat},user1={example-image-1x1}}%
+{%
+Ut tempor laoreet quam. Nullam id wisi a libero tristique semper.
+Nullam nisl massa, rutrum ut, egestas semper, mollis id, leo. Nulla
+ac massa eu risus blandit mattis. Mauris ut nunc. In hac habitasse
+platea dictumst. Aliquam eget tortor. Quisque dapibus pede in erat.
+Nunc enim. In dui nulla, commodo at, consectetuer nec, malesuada
+nec, elit. Aliquam ornare tellus eu urna. Sed nec metus. Cum sociis
+natoque penatibus et magnis dis parturient montes, nascetur
+ridiculus mus. Pellentesque habitant morbi tristique senectus et
+netus et malesuada fames ac turpis egestas.
+
+Phasellus id magna. Duis malesuada interdum arcu. Integer metus.
+Morbi pulvinar pellentesque mi. Suspendisse sed est eu magna
+molestie egestas. Quisque mi lorem, pulvinar eget, egestas quis,
+luctus at, ante. Proin auctor vehicula purus. Fusce ac nisl aliquam
+ante hendrerit pellentesque. Class aptent taciti sociosqu ad litora
+torquent per conubia nostra, per inceptos hymenaeos. Morbi wisi.
+Etiam arcu mauris, facilisis sed, eleifend non, nonummy ut, pede.
+Cras ut lacus tempor metus mollis placerat. Vivamus eu tortor vel
+metus interdum malesuada.
+}
+
+ % This one doesn't have an image. The style can test whether an
+ % image has been supplied using \ifglshasfield
+
+\longnewglossaryentry{sedeleifend}%
+{name={sed eleifend}}%
+{%
+Morbi non felis ac libero vulputate fringilla. Mauris libero eros,
+lacinia non, sodales quis, dapibus porttitor, pede. Class aptent
+taciti sociosqu ad litora torquent per conubia nostra, per inceptos
+hymenaeos. Morbi dapibus mauris condimentum nulla. Cum sociis
+natoque penatibus et magnis dis parturient montes, nascetur
+ridiculus mus. Etiam sit amet erat. Nulla varius. Etiam tincidunt
+dui vitae turpis. Donec leo. Morbi vulputate convallis est. Integer
+aliquet. Pellentesque aliquet sodales urna.
+}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-images.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-long.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test glossary entries with long descriptions.
+%COMMENT
+
+\newglossaryentry{loremipsum}{name={lorem ipsum},
+description={dolor sit amet, consectetuer adipiscing elit. Ut purus
+elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
+dictum gravida mauris.}}
+
+\newglossaryentry{namearcu}{name={name arcu},
+description={libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
+vehicula augue eu neque. Pellentesque habitant morbi tristique
+senectus et netus et malesuada fames ac turpis egestas. Mauris ut
+leo.}}
+
+\newglossaryentry{crasviverra}{name={cras viverra},
+description={metus rhoncus sem. Nulla et lectus vestibulum
+urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida
+placerat.}}
+
+\newglossaryentry{integersapien}{name={integer sapien},
+description={est, iaculis in, pretium quis, viverra ac,
+nunc. Praesent eget sem vel leo ultrices bibendum. Aenean
+faucibus.}}
+
+\newglossaryentry{morbidolor}{name={morbi dolor},
+description={nulla, malesuada eu, pulvinar at, mollis ac, nulla.
+Curabitur auctor semper nulla. Donec varius orci eget risus. Duis
+nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis
+eget orci sit amet orci dignissim rutrum.}}
+
+\newglossaryentry{namdui}{name={nam dui},
+description={ligula, fringilla a, euismod sodales,
+sollicitudin vel, wisi. Morbi auctor lorem non justo.}}
+
+\newglossaryentry{namlacus}{name={nam lacus},
+description={libero, pretium at, lobortis vitae, ultricies et,
+tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi.}}
+
+\newglossaryentry{morbiac}{name={morbi ac},
+description={orci et nisl hendrerit mollis. Suspendisse ut massa.
+Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus
+et magnis dis parturient montes, nascetur ridiculus mus.}}
+
+\newglossaryentry{aliquam}{name={aliquam},
+description={tincidunt urna. Nulla ullamcorper
+vestibulum turpis. Pellentesque cursus luctus mauris.}}
+
+\newglossaryentry{nullamalesuada}{name={nulla malesuada},
+description={porttitor diam. Donec felis erat, congue non, volutpat at,
+tincidunt tristique, libero. Vivamus viverra fermentum felis.}}
+
+\newglossaryentry{donecnonummy}{name={donec nonummy},
+description={pellentesque ante. Phasellus
+adipiscing semper elit. Proin fermentum massa ac quam. Sed diam
+turpis, molestie vitae, placerat a, molestie nec, leo.}}
+
+\newglossaryentry{maecenaslacinia}{name={maecenas lacinia},
+description={nam ipsum ligula, eleifend at, accumsan nec, suscipit
+a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat
+lorem.}}
+
+\newglossaryentry{sedlacinia}{name={sed lacinia},
+description={nulla vitae enim. Pellentesque tincidunt purus
+vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus.}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-long.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-longchild.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test glossary entries with child entries and long
+% descriptions.
+%COMMENT
+
+\newglossaryentry{longsedmattis}{name={sed mattis},
+ description={erat sit amet dolor sit amet, consectetuer adipiscing elit. Ut purus
+elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
+dictum gravida mauris.}}
+
+\newglossaryentry{longgravida}{parent={longsedmattis},name={gravida},
+ description={malesuada libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
+vehicula augue eu neque. Pellentesque habitant morbi tristique
+senectus et netus et malesuada fames ac turpis egestas. Mauris ut
+leo.}}
+
+\newglossaryentry{longelitaugue}{parent={longsedmattis},name={elit augue},
+description={egestas diam metus rhoncus sem. Nulla et lectus vestibulum
+urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida
+placerat.}}
+
+\newglossaryentry{longtempus}{parent={longsedmattis},name={tempus},
+description={scelerisque est, iaculis in, pretium quis, viverra ac,
+nunc. Praesent eget sem vel leo ultrices bibendum. Aenean
+faucibus.}}
+
+\newglossaryentry{longnunc}{name={nunc},
+ description={nisl vitae nulla, malesuada eu, pulvinar at, mollis ac, nulla.
+Curabitur auctor semper nulla. Donec varius orci eget risus. Duis
+nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis
+eget orci sit amet orci dignissim rutrum.}}
+
+\newglossaryentry{longlibero}{parent={longnunc},name={libero},
+ description={sed consequat ligula, fringilla a, euismod sodales,
+sollicitudin vel, wisi. Morbi auctor lorem non justo.}}
+
+\newglossaryentry{longfeugiat}{parent={longnunc},name={feugiat},
+ description={massa libero, pretium at, lobortis vitae, ultricies et,
+tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi.}}
+
+\newglossaryentry{longporta}{parent={longnunc},name={porta},
+ description={eros in eleifend orci et nisl hendrerit mollis. Suspendisse ut massa.
+Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus
+et magnis dis parturient montes, nascetur ridiculus mus.}}
+
+\newglossaryentry{longvariuserat}{parent={longnunc},name={varius erat},
+description={leo rutrum dui tincidunt urna. Nulla ullamcorper
+vestibulum turpis. Pellentesque cursus luctus mauris.}}
+
+\newglossaryentry{longnonconvallis}{name={non convallis},
+ description={lectus orci ut nibh porttitor diam. Donec felis erat,
+congue non, volutpat at, tincidunt tristique, libero. Vivamus
+viverra fermentum felis.}}
+
+\newglossaryentry{longsedlorem}{parent={longnonconvallis},name={sedlorem},
+ description={massa pellentesque ante. Phasellus
+adipiscing semper elit. Proin fermentum massa ac quam. Sed diam
+turpis, molestie vitae, placerat a, molestie nec, leo.}}
+
+\newglossaryentry{longnonummyquis}{parent={longnonconvallis},name={nonummy
+quis}, description={egestas id nam ipsum ligula, eleifend at, accumsan nec, suscipit
+a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat
+lorem.}}
+
+\newglossaryentry{longcondimentum}{name={condimentum},
+ description={at nisl nulla vitae enim. Pellentesque tincidunt purus
+vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus.}}
+
+\newglossaryentry{longmaecenas}{parent={longcondimentum},name={maecenas},
+description={at nibh fringilla a, euismod sodales, sollicitudin vel,
+wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at,
+lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed
+accumsan bibendum, erat ligula aliquet magna, vitae ornare odio
+metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut
+massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque
+penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+Aliquam tincidunt urna. Nulla ullamcorper vestibulum turpis.
+Pellentesque cursus luctus mauris.}}
+
+\newglossaryentry{longaliquamet}{name={aliquam et},
+ description={augue felis erat, congue non,
+volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum
+felis. Donec nonummy pellentesque ante.}}
+
+\newglossaryentry{longatnunc}{parent={longaliquamet},name={at nunc},
+ description={pellentesque ullamcorper el justo
+vitae lacus tincidunt ultrices. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit.}}
+
+\newglossaryentry{longduisnisl}{parent={longatnunc},name={duisnisl},
+ description={laoreet suscipit ac venenatis arcu
+wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis
+sagittis posuere, turpis lacus congue quam, in hendrerit risus eros
+eget felis. Maecenas eget erat in sapien mattis porttitor.}}
+
+\newglossaryentry{longduisnibh}{parent={longatnunc},name={duisnibh},
+description={convallis ut justo lectus
+sagittis dui, et vehicula libero dui cursus dui. Mauris tempor
+ligula sed lacus. Duis cursus enim ut augue. Cras ac magna.}}
+
+\newglossaryentry{longrutrum}{name={rutrum},
+ description={id, enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus
+eros, malesuada sit amet, fermentum eu, sodales cursus, magna. Donec
+eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem
+egestas dui, et convallis elit erat sed nulla.}}
+
+\newglossaryentry{longphasellus}{parent={longrutrum},name={phasellus},
+ description={odio volutpat a, ornare ac, erat.
+Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc
+dui lobortis purus, quis congue purus metus ultricies tellus. Proin
+et quam.}}
+
+\newglossaryentry{longnullanulla}{parent={longrutrum},name={nulla nulla},
+description={elit, molestie non wisi viverra faucibus pretium, nibh est placerat odio,
+nec commodo wisi enim eget quam. Quisque libero justo, consectetuer
+a, feugiat vitae, porttitor eu, libero.}}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-longchild.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-multipar.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test glossary entries with multi-paragraph descriptions.
+%COMMENT
+
+\longnewglossaryentry{loremi-ii}{name={lorem 1--2}}%
+{%
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
+vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
+dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer
+id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque
+habitant morbi tristique senectus et netus et malesuada fames ac
+turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla
+et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
+sit amet tortor gravida placerat. Integer sapien est, iaculis in,
+pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices
+bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar
+at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius
+orci eget risus. Duis nibh mi, congue eu, accumsan eleifend,
+sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel,
+wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at,
+lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed
+accumsan bibendum, erat ligula aliquet magna, vitae ornare odio
+metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut
+massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque
+penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+Aliquam tincidunt urna. Nulla ullamcorper vestibulum turpis.
+Pellentesque cursus luctus mauris.%
+}
+
+\longnewglossaryentry{loremiii-iv}{name={lorem 3--4}}%
+{%
+Nulla malesuada porttitor diam. Donec felis erat, congue non,
+volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum
+felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper
+elit. Proin fermentum massa ac quam. Sed diam turpis, molestie
+vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum
+ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit
+ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer
+non enim. Praesent euismod nunc eu purus. Donec bibendum quam in
+tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate
+metus eu enim. Vestibulum pellentesque felis eu massa.
+
+Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo
+vitae lacus tincidunt ultrices. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. In hac habitasse platea dictumst.
+Integer tempus convallis augue. Etiam facilisis. Nunc elementum
+fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida
+sollicitudin, felis odio placerat quam, ac pulvinar elit purus eget
+enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus
+quis tortor vitae risus porta vehicula.%
+}
+
+\longnewglossaryentry{loremv-vi}{name={lorem 5--6}}%
+{%
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla
+a faucibus semper, leo velit ultricies tellus, ac venenatis arcu
+wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis
+sagittis posuere, turpis lacus congue quam, in hendrerit risus eros
+eget felis. Maecenas eget erat in sapien mattis porttitor.
+Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo
+facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus
+sagittis dui, et vehicula libero dui cursus dui. Mauris tempor
+ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras
+nulla. Nulla egestas. Curabitur a leo. Quisque egestas wisi eget
+nunc. Nam feugiat lacus vel est. Curabitur consectetuer.%
+
+Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit
+amet, laoreet vitae, arcu. Aenean faucibus pede eu ante. Praesent
+enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus
+eros, malesuada sit amet, fermentum eu, sodales cursus, magna. Donec
+eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem
+egestas dui, et convallis elit erat sed nulla. Donec luctus.
+Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies
+non, pharetra in, velit. Integer arcu est, nonummy in, fermentum
+faucibus, egestas vel, odio.%
+}
+
+\longnewglossaryentry{loremvii-viii}{name={lorem 7--8}}%
+{%
+Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio.
+Sed vehicula hendrerit sem. Duis non odio. Morbi ut dui. Sed
+accumsan risus eget odio. In hac habitasse platea dictumst.
+Pellentesque non elit. Fusce sed justo eu urna porta tincidunt.
+Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat.
+Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc
+dui lobortis purus, quis congue purus metus ultricies tellus. Proin
+et quam. Class aptent taciti sociosqu ad litora torquent per conubia
+nostra, per inceptos hymenaeos. Praesent sapien turpis, fermentum
+vel, eleifend faucibus, vehicula eu, lacus.
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada
+fames ac turpis egestas. Donec odio elit, dictum in, hendrerit sit
+amet, egestas sed, leo. Praesent feugiat sapien aliquet odio.
+Integer vitae justo. Aliquam vestibulum fringilla lorem. Sed neque
+lectus, consectetuer at, consectetuer sed, eleifend ac, lectus.
+Nulla facilisi. Pellentesque eget lectus. Proin eu metus. Sed
+porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus.
+Ut mi mi, lacinia sit amet, placerat et, mollis vitae, dui. Sed ante
+tellus, tristique ut, iaculis eu, malesuada ac, dui. Mauris nibh
+leo, facilisis non, adipiscing quis, ultrices a, dui.%
+}
+
+\longnewglossaryentry{loremix-x}{name={lorem 9--10}}%
+{%
+Morbi luctus, wisi viverra faucibus pretium, nibh est placerat odio,
+nec commodo wisi enim eget quam. Quisque libero justo, consectetuer
+a, feugiat vitae, porttitor eu, libero. Suspendisse sed mauris
+vitae elit sollicitudin malesuada. Maecenas ultricies eros sit amet
+ante. Ut venenatis velit. Maecenas sed mi eget dui varius euismod.
+Phasellus aliquet volutpat odio. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque
+sit amet pede ac sem eleifend consectetuer. Nullam elementum, urna
+vel imperdiet sodales, elit ipsum pharetra ligula, ac pretium ante
+justo a nulla. Curabitur tristique arcu eu metus. Vestibulum lectus.
+Proin mauris. Proin eu nunc eu urna hendrerit faucibus. Aliquam
+auctor, pede consequat laoreet varius, eros tellus scelerisque quam,
+pellentesque hendrerit ipsum dolor sed augue. Nulla nec lacus.
+
+Suspendisse vitae elit. Aliquam arcu neque, ornare in, ullamcorper
+quis, commodo eu, libero. Fusce sagittis erat at erat tristique
+mollis. Maecenas sapien libero, molestie et, lobortis in, sodales
+eget, dui. Morbi ultrices rutrum lorem. Nam elementum ullamcorper
+leo. Morbi dui. Aliquam sagittis. Nunc placerat. Pellentesque
+tristique sodales est. Maecenas imperdiet lacinia velit. Cras non
+urna. Morbi eros pede, suscipit ac, varius vel, egestas non, eros.
+Praesent malesuada, diam id pretium elementum, eros sem dictum
+tortor, vel consectetuer odio sem sed wisi.%
+}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-multipar.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-parent.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test glossary entries with child entries.
+%COMMENT
+
+\newglossaryentry{sedmattis}{name={sed mattis},description={erat sit amet}}
+
+\newglossaryentry{gravida}{parent={sedmattis},name={gravida},description={malesuada}}
+
+\newglossaryentry{elitaugue}{parent={sedmattis},name={elit augue},
+description={egestas diam}}
+
+\newglossaryentry{tempus}{parent={sedmattis},name={tempus},
+description={scelerisque}}
+
+\newglossaryentry{nunc}{name={nunc},description={nisl vitae}}
+
+\newglossaryentry{libero}{parent={nunc},name={libero},description={sed
+consequat}}
+
+\newglossaryentry{feugiat}{parent={nunc},name={feugiat},description={massa}}
+
+\newglossaryentry{porta}{parent={nunc},name={porta},description={eros
+in eleifend}}
+
+\newglossaryentry{variuserat}{parent={nunc},name={varius erat},
+description={leo rutrum dui}}
+
+\newglossaryentry{nonconvallis}{name={non
+convallis},description={lectus orci ut nibh}}
+
+\newglossaryentry{sedlorem}{parent={nonconvallis},name={sedlorem},description={massa}}
+
+\newglossaryentry{nonummyquis}{parent={nonconvallis},name={nonummy
+quis}, description={egestas id}}
+
+\newglossaryentry{condimentum}{name={condimentum},description={at
+nisl}}
+
+\newglossaryentry{maecenas}{parent={condimentum},name={maecenas},
+description={at nibh}}
+
+\newglossaryentry{aliquamet}{name={aliquam et},description={augue}}
+
+\newglossaryentry{atnunc}{parent={aliquamet},name={at nunc},description={pellentesque
+ullamcorper}}
+
+\newglossaryentry{duisnisl}{parent={atnunc},name={duisnisl},description={laoreet
+suscipit}}
+
+\newglossaryentry{duisnibh}{parent={atnunc},name={duisnibh},
+description={convallis ut}}
+
+\newglossaryentry{rutrum}{name={rutrum},description={id, enim}}
+
+\newglossaryentry{phasellus}{parent={rutrum},name={phasellus},
+description={odio}}
+
+\newglossaryentry{nullanulla}{parent={rutrum},name={nulla nulla},
+description={elit, molestie non}}
+
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-%<*glossaries.perl>
+%</example-glossaries-parent.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-symbolnames.tex>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-# File : glossaries.perl
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test glossary entries with associated symbols.
+%COMMENT
+
+\newglossaryentry{sym.alpha}{sort={alpha},name={\ensuremath{\alpha}},
+description={Quisque ullamcorper placerat ipsum.}}
+
+\newglossaryentry{sym.beta}{sort={beta},name={\ensuremath{\beta}},
+description={Cras nibh.}}
+
+\newglossaryentry{sym.gamma}{sort={gamma},name={\ensuremath{\gamma}},
+description={Morbi vel justo vitae lacus tincidunt ultrices.}}
+
+\newglossaryentry{sym.delta}{sort={delta},name={\ensuremath{\delta}},
+description={Lorem ipsum dolor sit amet, consectetuer adipiscing
+elit.}}
+
+\newglossaryentry{sym.epsilon}{sort={epsilon},name={\ensuremath{\epsilon}},
+description={In hac habitasse platea dictumst.}}
+
+\newglossaryentry{sym.zeta}{sort={zeta},name={\ensuremath{\zeta}},
+description={Integer tempus convallis augue.}}
+
+\newglossaryentry{sym.eta}{sort={eta},name={\ensuremath{\eta}},
+description={Etiam facilisis.}}
+
+\newglossaryentry{sym.theta}{sort={theta},name={\ensuremath{\theta}},
+description={Nunc elementum fermentum wisi.}}
+
+\newglossaryentry{sym.iota}{sort={iota},name={\ensuremath{i}},
+description={Aenean placerat.}}
+
+\newglossaryentry{sym.kappa}{sort={kappa},name={\ensuremath{\kappa}},
+description={Ut imperdiet, enim sed gravida sollicitudin, felis odio
+placerat quam, ac pulvinar elit purus eget enim.}}
+
+\newglossaryentry{sym.lambda}{sort={lambda},name={\ensuremath{\lambda}},
+description={Nunc vitae tortor.}}
+
+\newglossaryentry{sym.mu}{sort={mu},name={\ensuremath{\mu}},
+description={Proin tempus nibh sit amet nisl.}}
+
+\newglossaryentry{sym.nu}{sort={nu},name={\ensuremath{\nu}},
+description={Vivamus quis tortor vitae risus porta vehicula.}}
+
+\newglossaryentry{sym.xi}{sort={xi},name={\ensuremath{\xi}},
+description={Fusce mauris.}}
+
+\newglossaryentry{sym.pi}{sort={pi},name={\ensuremath{\pi}},
+description={Vestibulum luctus nibh at lectus.}}
+
+\newglossaryentry{sym.rho}{sort={rho},name={\ensuremath{\rho}},
+description={Sed bibendum, nulla a faucibus semper, leo velit
+ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam.}}
+
+\newglossaryentry{sym.sigma}{sort={sigma},name={\ensuremath{\sigma}},
+description={Aliquam pellentesque, augue quis sagittis posuere,
+turpis lacus congue quam, in hendrerit risus eros eget felis.}}
+
+\newglossaryentry{sym.tau}{sort={tau},name={\ensuremath{\tau}},
+description={Maecenas eget erat in sapien mattis porttitor.}}
+
+\newglossaryentry{sym.upsilon}{sort={upsilon},name={\ensuremath{\upsilon}},
+description={Vestibulum porttitor.}}
+
+\newglossaryentry{sym.phi}{sort={phi},name={\ensuremath{\phi}},
+description={Nulla facilisi.}}
+
+\newglossaryentry{sym.chi}{sort={chi},name={\ensuremath{\chi}},
+description={Sed a turpis eu lacus commodo facilisis.}}
+
+\newglossaryentry{sym.psi}{sort={psi},name={\ensuremath{\psi}},
+description={Morbi fringilla, wisi in dignissim interdum, justo
+lectus sagittis dui, et vehicula libero dui cursus dui.}}
+
+\newglossaryentry{sym.omega}{sort={omega},name={\ensuremath{\omega}},
+description={Mauris tempor ligula sed lacus.}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-symbolnames.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-symbols.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test glossary entries with associated symbols.
+%COMMENT
+
+\newglossaryentry{alpha}{name={alpha},symbol={\ensuremath{\alpha}},
+description={Quisque ullamcorper placerat ipsum.}}
+
+\newglossaryentry{beta}{name={beta},symbol={\ensuremath{\beta}},
+description={Cras nibh.}}
+
+\newglossaryentry{gamma}{name={gamma},symbol={\ensuremath{\gamma}},
+description={Morbi vel justo vitae lacus tincidunt ultrices.}}
+
+\newglossaryentry{delta}{name={delta},symbol={\ensuremath{\delta}},
+description={Lorem ipsum dolor sit amet, consectetuer adipiscing
+elit.}}
+
+\newglossaryentry{epsilon}{name={epsilon},symbol={\ensuremath{\epsilon}},
+description={In hac habitasse platea dictumst.}}
+
+\newglossaryentry{zeta}{name={zeta},symbol={\ensuremath{\zeta}},
+description={Integer tempus convallis augue.}}
+
+\newglossaryentry{eta}{name={eta},symbol={\ensuremath{\eta}},
+description={Etiam facilisis.}}
+
+\newglossaryentry{theta}{name={theta},symbol={\ensuremath{\theta}},
+description={Nunc elementum fermentum wisi.}}
+
+\newglossaryentry{iota}{name={iota},symbol={\ensuremath{i}},
+description={Aenean placerat.}}
+
+\newglossaryentry{kappa}{name={kappa},symbol={\ensuremath{\kappa}},
+description={Ut imperdiet, enim sed gravida sollicitudin, felis odio
+placerat quam, ac pulvinar elit purus eget enim.}}
+
+\newglossaryentry{lambda}{name={lambda},symbol={\ensuremath{\lambda}},
+description={Nunc vitae tortor.}}
+
+\newglossaryentry{mu}{name={mu},symbol={\ensuremath{\mu}},
+description={Proin tempus nibh sit amet nisl.}}
+
+\newglossaryentry{nu}{name={nu},symbol={\ensuremath{\nu}},
+description={Vivamus quis tortor vitae risus porta vehicula.}}
+
+\newglossaryentry{xi}{name={xi},symbol={\ensuremath{\xi}},
+description={Fusce mauris.}}
+
+\newglossaryentry{pi}{name={pi},symbol={\ensuremath{\pi}},
+description={Vestibulum luctus nibh at lectus.}}
+
+\newglossaryentry{rho}{name={rho},symbol={\ensuremath{\rho}},
+description={Sed bibendum, nulla a faucibus semper, leo velit
+ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam.}}
+
+\newglossaryentry{sigma}{name={sigma},symbol={\ensuremath{\sigma}},
+description={Aliquam pellentesque, augue quis sagittis posuere,
+turpis lacus congue quam, in hendrerit risus eros eget felis.}}
+
+\newglossaryentry{tau}{name={tau},symbol={\ensuremath{\tau}},
+description={Maecenas eget erat in sapien mattis porttitor.}}
+
+\newglossaryentry{upsilon}{name={upsilon},symbol={\ensuremath{\upsilon}},
+description={Vestibulum porttitor.}}
+
+\newglossaryentry{phi}{name={phi},symbol={\ensuremath{\phi}},
+description={Nulla facilisi.}}
+
+\newglossaryentry{chi}{name={chi},symbol={\ensuremath{\chi}},
+description={Sed a turpis eu lacus commodo facilisis.}}
+
+\newglossaryentry{psi}{name={psi},symbol={\ensuremath{\psi}},
+description={Morbi fringilla, wisi in dignissim interdum, justo
+lectus sagittis dui, et vehicula libero dui cursus dui.}}
+
+\newglossaryentry{omega}{name={omega},symbol={\ensuremath{\omega}},
+description={Mauris tempor ligula sed lacus.}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-symbols.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-url.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries bundle
+% These are test glossary entries with URLs stored in
+% the user1 field.
+%COMMENT
+
+\newglossaryentry{aenean-url}{name={aenean},
+ description={adipiscing auctor est},
+ user1={http://uk.tug.org/}}
+
+\newglossaryentry{morbi-url}{name={morbi},
+ description={quam arcu, malesuada sed, volutpat et, elementum sit
+amet, libero},
+ user1={http://www.ctan.org/}}
+
+\newglossaryentry{duis-url}{name={duis},
+ description={mattis},
+ user1={http://www.tug.org/}}
+
+ % Now try an active character
+\newglossaryentry{sed-url}{name={sed},
+ description={cursus lectus quis odio (uses
+\texttt{\string\protect\string~})},
+ user1={http://theoval.cmp.uea.ac.uk/\protect~nlct/}}
+
+\newglossaryentry{sed2-url}{name={sed},
+ description={cursus lectus quis odio (uses
+\texttt{\string\string\string~})},
+ user1={http://theoval.cmp.uea.ac.uk/\string~nlct/}}
+
+\newglossaryentry{sed3-url}{name={sed},
+ description={cursus lectus quis odio (uses
+\texttt{\string\glstildechar})},
+ user1={http://theoval.cmp.uea.ac.uk/\glstildechar nlct/}}
+
+ % How do we deal with a percent character?
+
+ % Temporarily change the category code
+
+\catcode`\%=12
+\newglossaryentry{phasellus-url}{name={phasellus},
+ description={arcu (catcode change)},
+ user1=http://theoval.cmp.uea.ac.uk/%7Enlct
+}
+\catcode`\%=14
+
+ % Use \%
+
+\newglossaryentry{phasellus2-url}{name={phasellus},
+ description={arcu (uses \texttt{\string\%})},
+ user1=http://theoval.cmp.uea.ac.uk/\%7Enlct
+}
+
+ % Use \glspercentchar
+
+\newglossaryentry{phasellus3-url}{name={phasellus},
+ description={arcu (uses
+ \texttt{\string\glspercentchar})},
+ user1=http://theoval.cmp.uea.ac.uk/\glspercentchar 7Enlct
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-url.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries.l2h>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+# File : glossaries.l2h
# Author : Nicola L.C. Talbot
-# Date : 14th June 2007
-# Last Modified : 2014-09-24
-# Version : 1.06
-# Description : LaTeX2HTML (limited!) implementation of glossaries
+# Version : 4.50 (2022-10-14)
+# Description : LaTeX2HTML (limited!) implementation of glossaries
# package. Note that not all the glossaries.sty
# macros have been implemented.
-# Note that this may not work with new versions of
-# LaTeX2HTML.
-
+#
+# Note that this may not work with new versions of
+# LaTeX2HTML. There are no plans to continue to
+# development as the glossaries package is now too large to
+# reimplement in Perl.
+#
+# This file has been renamed from glossaries.perl to glossaries.l2h
+# but it may need to be changed back. This file should be copied
+# to somewhere that LaTeX2HTML can find it.
+#
# This is a LaTeX2HTML style implementing the glossaries package, and
# is distributed as part of that package.
-# Copyright 2007 Nicola L.C. Talbot
+#
+# Copyright 2007-2022 Nicola L.C. Talbot
# This work may be distributed and/or modified under the
# conditions of the LaTeX Project Public License, either version 1.3
# of this license of (at your option) any later version.
@@ -39007,17 +54757,16 @@ you
#
# The Current Maintainer of this work is Nicola Talbot.
-# This work consists of the files glossaries.dtx and glossaries.ins
+# This work consists of the files glossaries.dtx and glossaries.ins
# and the derived files glossaries.sty, glossaries-prefix.sty,
-# glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty,
+# glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty,
# glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty,
-# glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty,
-# glossary-tree.sty, glossaries-compatible-207.sty,
-# glossaries-compatible-307.sty, glossaries-accsupp.sty,
+# glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty,
+# glossary-tree.sty, glossaries-compatible-207.sty,
+# glossaries-compatible-307.sty, glossaries-accsupp.sty,
# glossaries-babel.sty, glossaries-polyglossia.sty, glossaries.perl.
# Also makeglossaries and makeglossaries-lite.lua.
-
package main;
&do_require_package("mfirstuc");
@@ -39362,7 +55111,7 @@ sub gls_compare{
{
# already checked for '0' < x < '9' and '0' < y < '9'
# already checked for 'a' < x < 'z' and '0' < y < '9'
-
+
# digits greater than symbols
return 1;
}
@@ -39370,7 +55119,7 @@ sub gls_compare{
{
# already checked for x is digit and y a is letter
# already checked for x is letter and y a is letter
-
+
# symbols and digits are less than letters
return -1;
@@ -39510,12 +55259,12 @@ sub add_real_gls{
{
my $id2 = ++$global{'max_id'};
- $thisglsentry .=
+ $thisglsentry .=
"\\glossarysubentryfield $OP$id2$CP$level$OP$id2$CP$glossaryentryfield$OP$id$CP$linktext$OP$id$CP";
}
else
{
- $thisglsentry .=
+ $thisglsentry .=
"\\glossaryentryfield $glossaryentryfield$OP$id$CP$linktext$OP$id$CP";
}
@@ -39551,7 +55300,7 @@ sub add_real_gls{
$previousentry = $entry;
# Back ref
-
+
if ($gls_nonumberlist{$type})
{
$linktext = '';
@@ -39596,13 +55345,13 @@ sub add_real_gls{
{
my $id2 = ++$global{'max_id'};
- $thisglsentry .=
+ $thisglsentry .=
"\\glossarysubentryfield $OP$id2$CP$level$OP$id2$CP$glossaryentryfield$OP$id$CP$linktext$OP$id$CP";
}
else
{
$id = ++$global{'max_id'};
- $thisglsentry .=
+ $thisglsentry .=
"\\glossaryentryfield $glossaryentryfield$OP$id$CP$linktext$OP$id$CP";
}
}
@@ -39636,10 +55385,10 @@ sub do_cmd_newglossarystyle{
local($id,$style,$defs);
- $style = &missing_braces unless
+ $style = &missing_braces unless
s/$next_pair_rx/$id=$1;$style=$2;''/eo;
- $defs = &missing_braces unless
+ $defs = &missing_braces unless
s/$next_pair_rx/$id=$1;$defs=$2;''/eo;
$glossary_style{$style} = $defs;
@@ -39652,7 +55401,7 @@ sub do_cmd_glossarystyle{
local($id,$style);
- $style = &missing_braces unless
+ $style = &missing_braces unless
s/$next_pair_pr_rx/$id=$1;$style=$2;''/eo;
&set_glossarystyle($style);
@@ -39694,7 +55443,7 @@ sub set_glossarystyle{
sub do_cmd_glspar{ "<P>".$_[0]; }
-sub do_cmd_glossaryheader{
+sub do_cmd_glossaryheader{
local($_) = @_;
$_
}
@@ -39721,7 +55470,7 @@ sub do_cmd_glssubentryitem{
$_
}
-sub do_cmd_glsgroupheading{
+sub do_cmd_glsgroupheading{
local($_) = @_;
local($id, $heading);
@@ -39792,13 +55541,13 @@ sub do_env_theglossary{
}
sub set_glossarystyle_altlist{
- eval(<<'END_STYLE');
- sub do_cmd_glossaryheader{
+ eval(<<'END_STYLE');
+ sub do_cmd_glossaryheader{
local($_) = @_;
$_
}
- sub do_cmd_glsgroupheading{
+ sub do_cmd_glsgroupheading{
local($_) = @_;
local($id, $heading);
@@ -39836,7 +55585,7 @@ sub set_glossarystyle_altlist{
sub do_cmd_glossarysubentryfield{
local($_) = @_;
- local($id, $id2, $id3, $id4, $id5, $id6, $level,
+ local($id, $id2, $id3, $id4, $id5, $id6, $level,
$label, $name, $desc, $symbol, $backlink);
$level = &missing_braces unless
@@ -39856,7 +55605,7 @@ sub set_glossarystyle_altlist{
$backlink = &missing_braces unless
s/$next_pair_pr_rx/$id6=$1;$backlink=$2;''/eo;
-
+
"<P>\\glssubentryitem $OP$id$CP$label$OP$id$CP"
."\\glstarget $OP$id2$CP$label$OP$id2$CP$OP$id3$CP$name$OP$id3$CP"
."$desc\\glspostdescription\\space $backlink\n$_";
@@ -39871,13 +55620,13 @@ END_STYLE
}
sub set_glossarystyle_inline{
- eval(<<'END_STYLE');
- sub do_cmd_glossaryheader{
+ eval(<<'END_STYLE');
+ sub do_cmd_glossaryheader{
local($_) = @_;
$_
}
- sub do_cmd_glsgroupheading{
+ sub do_cmd_glsgroupheading{
local($_) = @_;
local($id, $heading);
@@ -39917,14 +55666,14 @@ sub set_glossarystyle_inline{
if ($desc)
{
- $field .=
+ $field .=
"\\glsinlinedescformat $OP$id3$CP$desc$OP$id3$CP"
."$OP$id4$CP$symbol$OP$id4$CP"
."$OP$id5$CP$backlink$OP$id5$CP";
}
else
{
- $field .=
+ $field .=
"\\glsinlineemptydescformat "
."$OP$id4$CP$symbol$OP$id4$CP"
."$OP$id5$CP$backlink$OP$id5$CP";
@@ -39950,7 +55699,7 @@ sub set_glossarystyle_inline{
sub do_cmd_glossarysubentryfield{
local($_) = @_;
- local($id, $id2, $id3, $id4,$id5,$id6,$level,
+ local($id, $id2, $id3, $id4,$id5,$id6,$level,
$label, $name, $desc, $symbol, $backlink);
$level = &missing_braces unless
@@ -40318,7 +56067,7 @@ sub do_real_glossary {
local($type,$pat) = &get_next_optional_argument;
- $entry = &missing_braces unless
+ $entry = &missing_braces unless
(s/$next_pair_pr_rx//o&&($entry=$2));
$anchor = &make_glossary_entry($entry,$anchor_invisible_mark,$type);
@@ -40401,13 +56150,13 @@ sub do_cmd_newglossary{
($opt,$pat) = &get_next_optional_argument;
- $type = &missing_braces unless
+ $type = &missing_braces unless
(s/$next_pair_pr_rx//o&&($type=$2));
- $in = &missing_braces unless
+ $in = &missing_braces unless
(s/$next_pair_pr_rx//o&&($in=$2));
- $out = &missing_braces unless
+ $out = &missing_braces unless
(s/$next_pair_pr_rx//o&&($out=$2));
- $title = &missing_braces unless
+ $title = &missing_braces unless
(s/$next_pair_pr_rx//o&&($title=$2));
($opt,$pat) = &get_next_optional_argument;
@@ -40569,7 +56318,7 @@ sub do_cmd_newacronym{
sub gls_entry_init{
local($label, $type, $name, $desc) = @_;
- %{$glsentry{$label}} =
+ %{$glsentry{$label}} =
( type => $type,
name => $name,
'sort' => $name,
@@ -40585,7 +56334,7 @@ sub gls_entry_init{
parent => ''
);
- $#{@{$glsentry{$label}{children}}} = -1;
+ $#{@{$glsentry{$label}{children}}} = -1;
$glsentry{$label};
}
@@ -43460,7 +59209,7 @@ _IGNORED_CMDS_
%\fi
%\iffalse
% \begin{macrocode}
-%</glossaries.perl>
+%</glossaries.l2h>
% \end{macrocode}
%\fi
%\Finale