diff options
author | Norbert Preining <norbert@preining.info> | 2022-10-18 03:01:49 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-10-18 03:01:49 +0000 |
commit | 0b311348359e1406b173d9c0de4974af3e90f836 (patch) | |
tree | d054509baef05d9c3f452f88e3a011219350d9cf /macros/latex/contrib/glossaries/glossaries.dtx | |
parent | 95ebee51840c21223810acf500805000a2c5c0df (diff) |
CTAN sync 202210180301
Diffstat (limited to 'macros/latex/contrib/glossaries/glossaries.dtx')
-rw-r--r-- | macros/latex/contrib/glossaries/glossaries.dtx | 27741 |
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 |