%% %% This is file `glossaries-2024-04-03.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% glossaries.dtx (with options: `glossaries-2024-04-03.sty,package') %% %% glossaries.dtx %% Copyright 2024 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 %% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX %% version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. %% %% The Current Maintainer of this work is Nicola Talbot. %% %% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.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-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h. %% %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{glossaries}[2024/04/03 v4.54 (NLCT)] \RequirePackage{ifthen} \RequirePackage{xkeyval}[2006/11/18] \RequirePackage{mfirstuc}[=2.08] \newcommand{\glssentencecase}[1]{\makefirstuc{#1}} \ExplSyntaxOn \newcommand{\glslowercase}[1]{ \text_lowercase:n { #1 } } \newcommand{\glsuppercase}[1]{ \text_uppercase:n { #1 } } \ifdef\MFUsentencecase {% \newcommand{\glsmfuexcl}[1]{\MFUexcl{#1}} \newcommand{\glsmfublocker}[1]{\MFUblocker{#1}} \newcommand{\glsmfuaddmap}[2]{\MFUaddmap{#1}{#2}} } { \RequirePackage{textcase} \providecommand{\MFUsentencecase}[1]{ \text_titlecase_first:n { #1 } } \providecommand{\glsmfuexcl}[1]{ \tl_if_in:NnF \l_text_case_exclude_arg_tl {#1} { \tl_put_right:Nn \l_text_case_exclude_arg_tl {#1} } } \renewcommand*{\mfirstucMakeUppercase}{\MakeTextUppercase} \newcommand{\glsmfublocker}[1]{\glsmfuexcl{#1}} \newcommand{\glsmfuaddmap}[2]{\glsmfuexcl{#1}\glsmfublocker{#2}} } \ExplSyntaxOff \RequirePackage{xfor} \RequirePackage{datatool-base}[=2.32] \RequirePackage{amsgen} \RequirePackage{etoolbox} \newif\if@gls@docloaded \@ifpackageloaded{doc}% {% \@gls@docloadedtrue }% {% \@ifclassloaded{nlctdoc}{\@gls@docloadedtrue}{\@gls@docloadedfalse}% } \if@gls@docloaded \let\glsorg@theglossary\theglossary \let\glsorg@endtheglossary\endtheglossary \let\glsorg@PrintChanges\PrintChanges \renewcommand{\PrintChanges}{% \begingroup \let\theglossary\glsorg@theglossary \let\endtheglossary\glsorg@endtheglossary \glsorg@PrintChanges \endgroup } \fi \newif\if@gls@debug \define@choicekey{glossaries.sty}{debug}[\gls@debug@val\gls@debug@nr]% {true,false,showtargets,showaccsupp}[true]{% \ifcase\gls@debug@nr\relax % debug=true \@gls@debugtrue \renewcommand*{\GlossariesWarning}[1]{% \PackageWarning{glossaries}{##1}% }% \renewcommand*{\GlossariesWarningNoLine}[1]{% \PackageWarningNoLine{glossaries}{##1}% }% \let\@glsshowtarget\@gobble \PackageInfo{glossaries}{debug mode ON (nowarn option disabled)}% \or % debug=false \@gls@debugfalse \let\@glsshowtarget\@gobble \let\@glsshowaccsupp\@gobblethree \PackageInfo{glossaries}{debug mode OFF}% \or % debug=showtargets \@gls@debugtrue \renewcommand*{\GlossariesWarning}[1]{% \PackageWarning{glossaries}{##1}% }% \renewcommand*{\GlossariesWarningNoLine}[1]{% \PackageWarningNoLine{glossaries}{##1}% }% \PackageInfo{glossaries}{debug mode ON (nowarn option disabled)}% \renewcommand{\@glsshowtarget}{\@@glsshowtarget}% \or % debug=showaccsupp \@gls@debugtrue \renewcommand*{\GlossariesWarning}[1]{% \PackageWarning{glossaries}{##1}% }% \renewcommand*{\GlossariesWarningNoLine}[1]{% \PackageWarningNoLine{glossaries}{##1}% }% \PackageInfo{glossaries}{debug mode ON (nowarn option disabled)}% \renewcommand{\@glsshowaccsupp}{\glsshowaccsupp}% \fi } \newcommand*{\glsshowtarget}[1]{% \ifmmode \glsshowtargetinner{#1}% \else \ifinner \glsshowtargetinner{#1}% \else \glsshowtargetouter{#1}% \fi \fi } \newcommand*{\glsshowtargetfonttext}[1]{% \ifmmode \nfss@text{\glsshowtargetfont #1}\else {\glsshowtargetfont #1}\fi } \newcommand*{\glsshowtargetinner}[1]{\glsshowtargetfonttext{[#1]}} \newcommand*{\glsshowtargetouter}[1]{% \glsshowtargetsymbol\marginpar{\glsshowtargetsymbol\glsshowtargetfont #1}} \newcommand*{\glsshowtargetsymbol}{{\tiny$\triangleright$}} \newcommand*{\glsshowtargetfont}{\ttfamily\footnotesize} \newcommand*{\@glsshowtarget}[1]{} \newcommand*{\glsdoshowtarget}[2]{\@glsshowtarget{#1}#2} \newrobustcmd*{\@@glsshowtarget}[1]{% \begingroup \protected@edef\@gls@tmp{#1}% \@onelevel@sanitize\@gls@tmp \expandafter\glsshowtarget\expandafter{\@gls@tmp}% \endgroup } \newcommand*{\@glsshowaccsupp}[3]{} \newrobustcmd*{\glsshowaccsupp}[3]{% \ifstrempty{#1}% {\@@glsshowtarget{/#2 (#3)}}% {\@@glsshowtarget{/#2 (#3) [#1]}}% } \newcommand*{\@gls@see@noindex}{% \PackageError{glossaries}% {`\gls@xr@key' key may only be used after \string\makeglossaries\space or \string\makenoidxglossaries\space (or move \string\newglossaryentry\space definitions into the preamble)}% {You must use \string\makeglossaries\space or \string\makenoidxglossaries\space before defining any entries that have a `\gls@xr@key' key. It may be that the `see' key has been written to the .glsdefs file from the previous run, in which case you need to move your definitions to the preamble if you don't want to use \string\makeglossaries\space or \string\makenoidxglossaries}% } \define@choicekey{glossaries.sty}{seenoindex}% [\gls@seenoindex@val\gls@seenoindex@nr]{error,warn,ignore}{% \ifcase\gls@seenoindex@nr \renewcommand*{\@gls@see@noindex}{% \PackageError{glossaries}% {`\gls@xr@key' key may only be used after \string\makeglossaries\space or \string\makenoidxglossaries}% {You must use \string\makeglossaries\space or \string\makenoidxglossaries\space before defining any entries that have a `\gls@xr@key' key}% }% \or \renewcommand*{\@gls@see@noindex}{% \GlossariesWarning{`\gls@xr@key' key ignored}% }% \or \renewcommand*{\@gls@see@noindex}{}% \fi } \define@boolkey{glossaries.sty}[gls]{toc}[true]{} \define@boolkey{glossaries.sty}[gls]{numberline}[true]{} \ifcsundef{chapter}% {\newcommand*{\@@glossarysec}{section}}% {\newcommand*{\@@glossarysec}{chapter}} \define@choicekey{glossaries.sty}{section}{part,chapter,section,% subsection,subsubsection,paragraph,subparagraph}[section]{% \renewcommand*{\@@glossarysec}{#1}} \newcommand*{\@@glossarysecstar}{*} \newcommand*{\@@glossaryseclabel}{} \newcommand*{\glsautoprefix}{} \define@choicekey{glossaries.sty}{numberedsection}% [\gls@numberedsection@val\gls@numberedsection@nr]{% false,nolabel,autolabel,nameref}[nolabel]{% \ifcase\gls@numberedsection@nr\relax \renewcommand*{\@@glossarysecstar}{*}% \renewcommand*{\@@glossaryseclabel}{}% \or \renewcommand*{\@@glossarysecstar}{}% \renewcommand*{\@@glossaryseclabel}{}% \or \renewcommand*{\@@glossarysecstar}{}% \renewcommand*{\@@glossaryseclabel}{% \label{\glsautoprefix\@glo@type}}% \or \renewcommand*{\@@glossarysecstar}{*}% \renewcommand*{\@@glossaryseclabel}{% \protected@edef\@currentlabelname{\glossarytoctitle}% \label{\glsautoprefix\@glo@type}}% \fi } \@ifpackageloaded{classicthesis} {\newcommand*{\@glossary@default@style}{index}} {\newcommand*{\@glossary@default@style}{list}} \define@key{glossaries.sty}{style}{% \def\@glossary@default@style{#1}% } \newcommand*{\@gls@declareoption}[2]{% \DeclareOptionX{#1}{#2}% \DeclareOption{#1}{#2}% } \newcommand*{\glossaryentrynumbers}[1]{#1\gls@save@numberlist{#1}} \@gls@declareoption{nonumberlist}{% \renewcommand*{\glossaryentrynumbers}[1]{\gls@save@numberlist{#1}}% } \define@boolkey{glossaries.sty}[gls]{savenumberlist}[true]{} \glssavenumberlistfalse \newcommand*\@glo@seeautonumberlist{} \@gls@declareoption{seeautonumberlist}{% \renewcommand*{\@glo@seeautonumberlist}{% \def\@glo@prefix{\glsnextpages}% }% } \define@boolkey{glossaries.sty}[gls]{esclocations}[true]{} \glsesclocationsfalse \newcommand*{\@gls@loadlong}{\RequirePackage{glossary-long}} \@gls@declareoption{nolong}{\renewcommand*{\@gls@loadlong}{}} \IfFileExists{supertabular.sty}{% \newcommand*{\@gls@loadsuper}{\RequirePackage{glossary-super}}}{% \newcommand*{\@gls@loadsuper}{}} \@ifpackageloaded{xtab}{\renewcommand*{\@gls@loadsuper}{}}{} \@gls@declareoption{nosuper}{\renewcommand*{\@gls@loadsuper}{}} \newcommand*{\@gls@loadlist}{\RequirePackage{glossary-list}} \@gls@declareoption{nolist}{% \renewcommand*{\@gls@loadlist}{% \ifdefstring{\@glossary@default@style}{list}% {\let\@glossary@default@style\relax}% {}% }% } \newcommand*{\@gls@loadtree}{\RequirePackage{glossary-tree}} \@gls@declareoption{notree}{\renewcommand*{\@gls@loadtree}{}} \@gls@declareoption{nostyles}{% \renewcommand*{\@gls@loadlong}{}% \renewcommand*{\@gls@loadsuper}{}% \renewcommand*{\@gls@loadlist}{}% \renewcommand*{\@gls@loadtree}{}% \let\@glossary@default@style\relax } \newcommand*{\glspostdescription}{% \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi } \define@boolkey{glossaries.sty}[gls]{nopostdot}[true]{} \glsnopostdotfalse \define@boolkey{glossaries.sty}[gls]{nogroupskip}[true]{} \glsnogroupskipfalse \define@boolkey{glossaries.sty}[gls]{ucmark}[true]{} \@ifclassloaded{memoir} {% \glsucmarktrue }% {% \glsucmarkfalse } \newcommand*{\@gls@define@glossaryentrycounter}{% \ifglsentrycounter \ifundef\c@glossaryentry {% \ifx\@gls@counterwithin\@empty \newcounter{glossaryentry}% \else \newcounter{glossaryentry}[\@gls@counterwithin]% \fi \def\theHglossaryentry{\currentglossary.\theglossaryentry}% }% {}% \fi } \define@boolkey{glossaries.sty}[gls]{entrycounter}[true]{} \glsentrycounterfalse \define@key{glossaries.sty}{counterwithin}{% \renewcommand*{\@gls@counterwithin}{#1}% \glsentrycountertrue \@gls@define@glossaryentrycounter } \newcommand*{\@gls@counterwithin}{} \newcommand{\@gls@define@glossarysubentrycounter}{% \ifundef\c@glossarysubentry {% \ifglssubentrycounter \ifglsentrycounter \newcounter{glossarysubentry}[glossaryentry]% \else \newcounter{glossarysubentry}% \fi \def\theHglossarysubentry{\currentglossary.\currentglssubentry.\theglossarysubentry}% \fi }% {}% } \define@boolkey{glossaries.sty}[gls]{subentrycounter}[true]{} \glssubentrycounterfalse \newcommand{\glsindexingsetting}{\ifglsxindy xindy\else makeindex\fi} \newcommand*{\@glo@default@sorttype}{standard} \define@choicekey{glossaries.sty}{sort}{standard,def,use,none,clear}{% \renewcommand*{\@glo@default@sorttype}{#1}% \csname @gls@setupsort@#1\endcsname } \newcommand*{\glsprestandardsort}[3]{% \glsdosanitizesort } \newcommand*{\@glo@check@sortallowed}[1]{} \newcommand*{\@gls@setupsort@standard}{% \def\do@glo@storeentry{\@glo@storeentry}% \def\@gls@defsortcount##1{}% \def\@gls@defsort##1##2{% \ifx\@glo@sort\@glsdefaultsort \let\@glo@sort\@glo@name \fi \let\glsdosanitizesort\@gls@sanitizesort \glsprestandardsort{\@glo@sort}{##1}{##2}% \expandafter\protected@xdef\csname glo@##2@sort\endcsname{\@glo@sort}% }% \def\@gls@setsort##1{}% \let\@glo@check@sortallowed\@gobble } \@gls@setupsort@standard \newcommand*\glssortnumberfmt[1]{% \ifnum#1<100000 0\fi \ifnum#1<10000 0\fi \ifnum#1<1000 0\fi \ifnum#1<100 0\fi \ifnum#1<10 0\fi \number#1% } \newcommand*{\@gls@setupsort@def}{% \def\do@glo@storeentry{\@glo@storeentry}% \def\@gls@defsortcount##1{% \expandafter\global \expandafter\newcount\csname glossary@##1@sortcount\endcsname }% \def\@gls@defsort##1##2{% \ifcsundef{glossary@##1@sortcount}% {\@gls@defsortcount{##1}}% {}% \expandafter\global\expandafter \advance\csname glossary@##1@sortcount\endcsname by 1\relax \expandafter\protected@xdef\csname glo@##2@sort\endcsname{% \expandafter\glssortnumberfmt {\csname glossary@##1@sortcount\endcsname}}% }% \def\@gls@setsort##1{}% \let\@glo@check@sortallowed\@gobble } \newcommand*{\@gls@setupsort@use}{% \let\do@glo@storeentry\@gobble \def\@gls@defsortcount##1{% \expandafter\global \expandafter\newcount\csname glossary@##1@sortcount\endcsname }% \def\@gls@defsort##1##2{% \expandafter\gdef\csname glo@##2@sort\endcsname{}% }% \def\@gls@setsort##1{% \protected@edef\@glo@parent{\csname glo@##1@parent\endcsname}% \ifx\@glo@parent\@empty \else \expandafter\@gls@setsort\expandafter{\@glo@parent}% \fi \protected@edef\@glo@type{\csname glo@##1@type\endcsname}% \protected@edef\@gls@tmp{\csname glo@##1@sort\endcsname}% \ifx\@gls@tmp\@empty \expandafter\global\expandafter \advance\csname glossary@\@glo@type @sortcount\endcsname by 1\relax \expandafter\protected@xdef\csname glo@##1@sort\endcsname{% \expandafter\glssortnumberfmt {\csname glossary@\@glo@type @sortcount\endcsname}}% \@glo@storeentry{##1}% \fi }% \let\@glo@check@sortallowed\@gobble } \newcommand*{\@gls@setupsort@none}{% \def\glsindexingsetting{none}% \def\do@glo@storeentry##1{}% \def\@gls@defsortcount##1{}% \def\@gls@defsort##1##2{% \expandafter\global\expandafter\let\csname glo@##2@sort\endcsname\@glo@sort }% \def\@gls@setsort##1{}% \renewcommand\@glo@check@sortallowed[1]{\PackageError{glossaries} {Option sort=none not allowed with \string##1}% {(Use sort=def instead)}}% } \newcommand*{\@gls@setupsort@clear}{% \def\glsindexingsetting{none}% \def\do@glo@storeentry##1{}% \def\@gls@defsortcount##1{}% \def\@gls@defsort##1##2{\csgdef{glo@##2@sort}{}}% \def\@gls@setsort##1{}% \renewcommand\@glo@check@sortallowed[1]{\PackageError{glossaries} {Option sort=clear not allowed with \string##1}% {(Use sort=def instead)}}% } \newcommand*{\glsdefmain}{% \if@gls@docloaded \newglossary[glg2]{main}{gls2}{glo2}{\glossaryname}% \else \newglossary{main}{gls}{glo}{\glossaryname}% \fi \newcommand*{\gls@tr@set@main@toctitle}{% \translatelet{\glossarytoctitle}{Glossary}% }% } \newcommand*{\glsdefaulttype}{main} \newcommand*{\acronymtype}{\glsdefaulttype} \@gls@declareoption{nomain}{% \let\glsdefaulttype\relax \renewcommand*{\glsdefmain}{}% } \define@boolkey{glossaries.sty}[gls]{acronym}[true]{% \ifglsacronym \renewcommand{\@gls@do@acronymsdef}{% \DeclareAcronymList{acronym}% \newglossary[alg]{acronym}{acr}{acn}{\acronymname}% \renewcommand*{\acronymtype}{acronym}% \newcommand*{\gls@tr@set@acronym@toctitle}{% \translatelet{\glossarytoctitle}{Acronyms}% }% }% \else \let\@gls@do@acronymsdef\relax \fi } \AtBeginDocument{% \ifglsacronym \providecommand*{\printacronyms}[1][]{% \printglossary[type=\acronymtype,#1]}% \fi } \newcommand*{\@gls@do@acronymsdef}{} \@gls@declareoption{acronyms}{% \glsacronymtrue \def\@gls@do@acronymsdef{% \DeclareAcronymList{acronym}% \newglossary[alg]{acronym}{acr}{acn}{\acronymname}% \renewcommand*{\acronymtype}{acronym}% \newcommand*{\gls@tr@set@acronym@toctitle}{% \translatelet{\glossarytoctitle}{Acronyms}% }% }% } \newcommand*{\@glsacronymlists}{} \newcommand*{\@addtoacronymlists}[1]{% \ifx\@glsacronymlists\@empty \protected@xdef\@glsacronymlists{#1}% \else \protected@xdef\@glsacronymlists{\@glsacronymlists,#1}% \fi } \newcommand*{\DeclareAcronymList}[1]{% \glsIfListOfAcronyms{#1}{}{\@addtoacronymlists{#1}}% } \newcommand{\glsIfListOfAcronyms}[1]{% \protected@edef\@do@gls@islistofacronyms{% \noexpand\@gls@islistofacronyms{#1}{\@glsacronymlists}}% \@do@gls@islistofacronyms } \newcommand{\@gls@islistofacronyms}[4]{% \def\gls@islistofacronyms##1,#1,##2\end@gls@islistofacronyms{% \def\@gls@before{##1}\def\@gls@after{##2}}% \gls@islistofacronyms,#2,#1,\@nil\end@gls@islistofacronyms \ifx\@gls@after\@nnil #4% \else #3% \fi } \newif\if@glsisacronymlist \newcommand*{\gls@checkisacronymlist}[1]{% \glsIfListOfAcronyms{#1}% {\@glsisacronymlisttrue}{\@glsisacronymlistfalse}% } \newcommand*{\SetAcronymLists}[1]{% \renewcommand*{\@glsacronymlists}{#1}% } \define@key{glossaries.sty}{acronymlists}{% \DeclareAcronymList{#1}% } \newcommand{\glscounter}{page} \define@key{glossaries.sty}{counter}{% \renewcommand*{\glscounter}{#1}% } \newcommand*{\@gls@nohyperlist}{} \newcommand*{\GlsDeclareNoHyperList}[1]{% \ifdefempty\@gls@nohyperlist {% \renewcommand*{\@gls@nohyperlist}{#1}% }% {% \appto\@gls@nohyperlist{,#1}% }% } \define@key{glossaries.sty}{nohypertypes}{% \GlsDeclareNoHyperList{#1}% } \newcommand*{\GlossariesWarning}[1]{% \PackageWarning{glossaries}{#1}% } \newcommand*{\GlossariesWarningNoLine}[1]{% \PackageWarningNoLine{glossaries}{#1}% } \newcommand{\glosortentrieswarning}{% \typeout{Using TeX to sort glossary entries---this may take a while}% } \@gls@declareoption{nowarn}{% \if@gls@debug \GlossariesWarning{Warnings can't be suppressed in debug mode}% \else \renewcommand*{\GlossariesWarning}[1]{}% \renewcommand*{\GlossariesWarningNoLine}[1]{}% \renewcommand*{\glosortentrieswarning}{}% \renewcommand*{\@gls@missinglang@warn}[2]{}% \fi } \newcommand*{\@gls@missinglang@warn}[2]{% \PackageWarningNoLine{glossaries}% {No language module detected for `#1'.\MessageBreak Language modules need to be installed separately.\MessageBreak Please check on CTAN for a bundle called\MessageBreak `glossaries-#2' or similar}% } \@gls@declareoption{nolangwarn}{% \renewcommand*{\@gls@missinglang@warn}[2]{}% } \newcommand*{\@gls@warnonglossdefined}{% \GlossariesWarning{Overriding \string\printglossary}% } \newcommand*{\@gls@warnontheglossdefined}{% \GlossariesWarning{Overriding `theglossary' environment}% } \@gls@declareoption{noredefwarn}{% \renewcommand*{\@gls@warnonglossdefined}{}% \renewcommand*{\@gls@warnontheglossdefined}{}% } \newcommand*{\glssetexpandfield}[1]{% \csdef{gls@assign@#1@field}##1##2{% \@@gls@expand@field{##1}{#1}{##2}% }% } \newcommand*{\glssetnoexpandfield}[1]{% \csdef{gls@assign@#1@field}##1##2{% \@@gls@noexpand@field{##1}{#1}{##2}% }% } \glssetexpandfield{type} \glssetnoexpandfield{desc} \glssetnoexpandfield{descplural} \newcommand*{\@gls@sanitizename}{} \glssetnoexpandfield{name} \newcommand*{\@gls@sanitizesymbol}{} \glssetnoexpandfield{symbol} \glssetnoexpandfield{symbolplural} \newcommand*{\@gls@sanitizesort}{% \ifglssanitizesort \@@gls@sanitizesort \else \@@gls@nosanitizesort \fi } \newcommand*\@@gls@sanitizesort{% \@onelevel@sanitize\@glo@sort } \newcommand*{\@@gls@nosanitizesort}{} \newcommand*\@gls@noidx@sanitizesort{% \ifdefvoid\@glo@sort {}% {% \expandafter\@@gls@noidx@sanitizesort\@glo@sort\gls@end@sanitizesort }% } \def\@@gls@noidx@sanitizesort#1#2\gls@end@sanitizesort{% \def\@glo@sort{#1#2}% \@onelevel@sanitize\@glo@sort } \newcommand*{\@@gls@noidx@nosanitizesort}{% \ifdefvoid\@glo@sort {}% {% \expandafter\@@gls@noidx@no@sanitizesort\@glo@sort\gls@end@sanitizesort }% } \def\@@gls@noidx@no@sanitizesort#1#2\gls@end@sanitizesort{% \bgroup \glsnoidxstripaccents \protected@xdef\@@glo@sort{#1#2}% \egroup \let\@glo@sort\@@glo@sort } \newcommand*\glsnoidxstripaccents{% \let\IeC\@firstofone \let\add@accent@\@secondoftwo \let\@text@composite@x\@secondoftwo \let\@tabacckludge\@secondoftwo \expandafter\def\csname \encodingdefault-cmd\endcsname##1##2##3{##3}% \expandafter\def\csname OT1-cmd\endcsname##1##2##3{##3}% \expandafter\def\csname T1-cmd\endcsname##1##2##3{##3}% \expandafter\def\csname PD1-cmd\endcsname##1##2##3{##3}% \let\'\@firstofone \let\`\@firstofone \let\^\@firstofone \let\"\@firstofone \let\u\@firstofone \let\t\@firstofone \let\d\@firstofone \let\r\@firstofone \let\=\@firstofone \let\.\@firstofone \let\~\@firstofone \let\v\@firstofone \let\H\@firstofone \let\c\@firstofone \let\b\@firstofone \let\a\@secondoftwo \def\AE{AE}% \def\ae{ae}% \def\OE{OE}% \def\oe{oe}% \def\AA{AA}% \def\aa{aa}% \def\L{L}% \def\l{l}% \def\O{O}% \def\o{o}% \def\SS{SS}% \def\ss{ss}% \def\th{th}% \def\TH{TH}% \def\dh{dh}% \def\DH{DH}% } \@ifl@t@r\fmtversion{2019/10/01} {% \appto\glsnoidxstripaccents{\let\UTFviii@two@octets\UTFviii@two@octets@combine}% } {} \newcommand{\@gls@removedoption}[1]{% \PackageError{glossaries}{obsolete package option `#1' has been removed. Rollback required or use a newer alternative} {Try \string\usepackage[#1]{glossaries}[=v4.46]}% } \define@boolkey[gls]{sanitize}{description}[true]{% \GlossariesWarning{sanitize={description} package option deprecated}% \ifgls@sanitize@description \glssetnoexpandfield{desc}% \glssetnoexpandfield{descplural}% \else \glssetexpandfield{desc}% \glssetexpandfield{descplural}% \fi } \define@boolkey[gls]{sanitize}{name}[true]{% \GlossariesWarning{sanitize={name} package option deprecated}% \ifgls@sanitize@name \glssetnoexpandfield{name}% \else \glssetexpandfield{name}% \fi } \define@boolkey[gls]{sanitize}{symbol}[true]{% \GlossariesWarning{sanitize={symbol} package option deprecated}% \ifgls@sanitize@symbol \glssetnoexpandfield{symbol}% \glssetnoexpandfield{symbolplural}% \else \glssetexpandfield{symbol}% \glssetexpandfield{symbolplural}% \fi } \define@boolkey{glossaries.sty}[gls]{sanitizesort}[true]{% \ifglssanitizesort \glssetnoexpandfield{sortvalue}% \renewcommand*{\@gls@noidx@setsanitizesort}{% \glssanitizesorttrue \glssetnoexpandfield{sortvalue}% }% \else \glssetexpandfield{sortvalue}% \renewcommand*{\@gls@noidx@setsanitizesort}{% \glssanitizesortfalse \glssetexpandfield{sortvalue}% }% \fi } \glssanitizesorttrue \glssetnoexpandfield{sortvalue}% \newcommand*{\@gls@noidx@setsanitizesort}{% \glssanitizesortfalse \glssetexpandfield{sortvalue}% } \define@choicekey[gls]{sanitize}{sort}{true,false}[true]{% \setbool{glssanitizesort}{#1}% \ifglssanitizesort \glssetnoexpandfield{sortvalue}% \else \glssetexpandfield{sortvalue}% \fi \GlossariesWarning{sanitize={sort} package option deprecated. Use sanitizesort instead}% } \define@key{glossaries.sty}{sanitize}[description=true,symbol=true,name=true]{% \ifthenelse{\equal{#1}{none}}% {% \GlossariesWarning{sanitize package option deprecated}% \glssetexpandfield{name}% \glssetexpandfield{symbol}% \glssetexpandfield{symbolplural}% \glssetexpandfield{desc}% \glssetexpandfield{descplural}% }% {% \setkeys[gls]{sanitize}{#1}% }% } \newif\ifglstranslate \newcommand*\@gls@usetranslator{% \@ifpackageloaded{polyglossia}% {% \let\glsifusetranslator\@secondoftwo }% {% \@ifpackageloaded{babel}% {% \IfFileExists{translator.sty}% {% \RequirePackage{translator}% \let\glsifusetranslator\@firstoftwo }% {}% }% {}% }% } \newcommand{\glsifusedtranslatordict}[3]{% \glsifusetranslator {\ifcsdef{ver@glossaries-dictionary-#1.dict}{#2}{#3}}% {#3}% } \@gls@declareoption{notranslate}{% \glstranslatefalse \let\@gls@usetranslator\relax \let\glsifusetranslator\@secondoftwo } \define@choicekey{glossaries.sty}{translate}% [\gls@translate@val\gls@translate@nr]% {true,false,babel}[true]% {% \ifcase\gls@translate@nr\relax \glstranslatetrue \renewcommand*\@gls@usetranslator{% \@ifpackageloaded{polyglossia}% {% \let\glsifusetranslator\@secondoftwo }% {% \@ifpackageloaded{babel}% {% \IfFileExists{translator.sty}% {% \RequirePackage{translator}% \let\glsifusetranslator\@firstoftwo }% {}% }% {}% }% }% \or \glstranslatefalse \let\@gls@usetranslator\relax \let\glsifusetranslator\@secondoftwo \or \glstranslatetrue \let\@gls@usetranslator\relax \let\glsifusetranslator\@secondoftwo \fi } \glstranslatefalse \let\glsifusetranslator\@secondoftwo \@ifpackageloaded{translator}% {% \glstranslatetrue \let\glsifusetranslator\@firstoftwo }% {% \@for\gls@thissty:=tracklang,babel,ngerman,polyglossia\do { \@ifpackageloaded{\gls@thissty}% {% \glstranslatetrue \@endfortrue }% {}% } } \newcommand{\@gls@requested@languages}{} \define@key{glossaries.sty}{languages}{% \renewcommand{\@gls@requested@languages}{#1}% \glstranslatetrue \let\@gls@usetranslator\relax \let\glsifusetranslator\@secondoftwo } \define@boolkey{glossaries.sty}[gls]{indexonlyfirst}[true]{} \glsindexonlyfirstfalse \define@boolkey{glossaries.sty}[gls]{hyperfirst}[true]{} \glshyperfirsttrue \newcommand*{\@gls@setacrstyle}{} \define@boolkey{glossaries.sty}[glsacr]{footnote}[true]{% \ifglsacrfootnote \@gls@removedoption{footnote}% \fi } \define@boolkey{glossaries.sty}[glsacr]{description}[true]{% \ifglsacrdescription \@gls@removedoption{description}% \fi } \define@boolkey{glossaries.sty}[glsacr]{smallcaps}[true]{% \ifglsacrsmallcaps \@gls@removedoption{smallcaps}% \fi } \define@boolkey{glossaries.sty}[glsacr]{smaller}[true]{% \ifglsacrsmaller \@gls@removedoption{smaller}% \fi } \define@boolkey{glossaries.sty}[glsacr]{dua}[true]{% \ifglsacrdua \@gls@removedoption{dua}% \fi } \define@boolkey{glossaries.sty}[glsacr]{shortcuts}[true]{} \newcommand*{\glsorder}{word} \newcommand*{\@glsorder}[1]{} \define@choicekey{glossaries.sty}{order}{word,letter}{% \def\glsorder{#1}} \newif\ifglsxindy \glsxindyfalse \@gls@declareoption{makeindex}{\glsxindyfalse} \define@boolkey[gls]{xindy}{glsnumbers}[true]{} \gls@xindy@glsnumberstrue \def\@xdy@main@language{\languagename}% \newcommand*{\gls@xdy@set@lang}[1]{% \ifcsundef{@xdy@#1@language}% {% \ifcsundef{@xdy@\glsdefaulttype @language} {\let\@gls@langmod\@xdy@main@language}% {\letcs\@gls@langmod{@xdy@\glsdefaulttype @language}}% }% {\letcs\@gls@langmod{@xdy@#1@language}}% } \define@key[gls]{xindy}{language}{\def\@xdy@main@language{#1}} \ifdefvoid\inputencodingname {\def\gls@codepage{utf8}}% {\def\gls@codepage{\inputencodingname}} \define@key[gls]{xindy}{codepage}{\def\gls@codepage{#1}} \define@key{glossaries.sty}{xindy}[]{% \glsxindytrue \setkeys[gls]{xindy}{#1}% } \@gls@declareoption{xindygloss}{% \glsxindytrue } \@gls@declareoption{xindynoglsnumbers}{% \glsxindytrue \gls@xindy@glsnumbersfalse } \providecommand{\@domakeglossaries}[1]{\if@filesw #1\fi} \@gls@declareoption{disablemakegloss}{% \ifdefequal\makeglossaries\@no@makeglossaries {% \GlossariesWarning{Option `disablemakegloss' has no effect (\string\makenoidxglossaries\space has already been used)}% }% {% \ifdefequal\@makeglossary\@gobble {% \GlossariesWarning{Option `disablemakegloss' has no effect (\string\makeglossaries\space has already been used)}% }% {% \renewcommand{\@domakeglossaries}[1]{% \PackageInfo{glossaries}{\string\makeglossaries\space and \string\makenoidxglossaries\space have been disabled}% }% }% }% } \@gls@declareoption{restoremakegloss}{% \ifdefequal\makeglossaries\@no@makeglossaries {% \GlossariesWarning{Option `restoremakegloss' has no effect (\string\makenoidxglossaries\space has already been used)}% }% {% \ifdefequal\@makeglossary\@gobble {% \GlossariesWarning{Option `restoremakegloss' has no effect (\string\makeglossaries\space has already been used)}% }% {% \PackageInfo{glossaries}{\string\makeglossaries\space and \string\makenoidxglossaries\space have been restored}% \let\@domakeglossaries\@firstofone }% }% } \newcommand*{\@do@write@glslabels}{% \AtEndDocument{\@@do@write@glslabels}% \let\@do@write@glslabels\relax } \newcommand*{\@@do@write@glslabels}{% \newwrite\@gls@labelsfile \immediate\openout\@gls@labelsfile=\jobname.glslabels \protected@edef\@gls@fulllist{\@glo@types}% \ifdefempty{\@ignored@glossaries}{}% {\protected@eappto\@gls@fulllist{,\@ignored@glossaries}}% \forallglsentries[\@gls@fulllist]{\@glsentry}% {% \ifdefempty{\@glsentry}{}% {% \ifx\do@write@glslabelsname\@gobble \def\@gls@thisentryname{}% \else \letcs{\@gls@thisentryname}{glo@\glsdetoklabel{\@glsentry}@name}% \@onelevel@sanitize\@gls@thisentryname \fi \immediate\write\@gls@labelsfile {\@glsentry\do@write@glslabelsname{\@gls@thisentryname}}% }% }% \immediate\closeout\@gls@labelsfile } \newcommand*{\do@write@glslabelsname}[1]{} \begingroup \catcode`\^^I12 \gdef\@write@glslabelsname#1{^^I#1} \endgroup \@gls@declareoption{writeglslabels}{\@do@write@glslabels \let\do@write@glslabelsname\@gobble} \@gls@declareoption{writeglslabelnames}{\@do@write@glslabels \let\do@write@glslabelsname\@write@glslabelsname} \newif\ifglsautomake \newcommand{\gls@automake@nr}{1} \newcommand{\gls@automake@makegloss}{} \newcommand{\gls@automake@option}{automake=\gls@automake@val} \newcommand*{\@gls@do@automake@err}{% \PackageError{glossaries}{You must use \string\makeglossaries\space with \gls@automake@option} {% Either remove the \gls@automake@option\space setting or add \string\makeglossaries\space to your document preamble.% }% }% \define@choicekey{glossaries.sty}{automake}% [\gls@automake@val\gls@automake@nr]{true,false,immediate,makegloss,lite,delayed}[immediate]{% \ifcase\gls@automake@nr\relax \GlossariesWarning{automake=true deprecated. Use automake=delayed for a delayed write}% \glsautomaketrue \renewcommand{\gls@automake@makegloss}{}% \or \glsautomakefalse \renewcommand{\gls@automake@makegloss}{}% \or \glsautomaketrue \renewcommand{\gls@automake@makegloss}{}% \or \glsautomaketrue \renewcommand{\gls@automake@makegloss}{makeglossaries}% \or \glsautomaketrue \renewcommand{\gls@automake@makegloss}{makeglossaries-lite}% \or \def\gls@automake@nr{0}% \glsautomaketrue \renewcommand{\gls@automake@makegloss}{}% \fi \renewcommand{\gls@automake@option}{automake=\gls@automake@val}% \ifglsautomake \let\@gls@doautomake\@gls@do@automake@err \else \renewcommand*{\@gls@doautomake}{}% \fi } \glsautomakefalse \newcommand*{\@gls@doautomake}{} \AtEndDocument{\@gls@doautomake} \@gls@declareoption{automakegloss}{% \glsautomaketrue \renewcommand{\gls@automake@option}{automakegloss}% \def\gls@automake@val{makegloss}% \def\gls@automake@nr{3}% \renewcommand{\gls@automake@makegloss}{makeglossaries}% \let\@gls@doautomake\@gls@do@automake@err } \@gls@declareoption{automakeglosslite}{% \glsautomaketrue \renewcommand{\gls@automake@option}{automakeglosslite}% \def\gls@automake@val{lite}% \def\gls@automake@nr{4}% \renewcommand{\gls@automake@makegloss}{makeglossaries-lite}% \let\@gls@doautomake\@gls@do@automake@err } \define@boolkey{glossaries.sty}[gls]{savewrites}[true]{% \ifglssavewrites \renewcommand*{\glswritefiles}{\@glswritefiles}% \else \let\glswritefiles\@empty \fi } \glssavewritesfalse \let\glswritefiles\@empty \define@boolkey{glossaries.sty}[gls]{compatible-3.07}[true]{% \ifbool{glscompatible-3.07}% {% \@gls@removedoption{compatible-3.07}% }% {}% } \boolfalse{glscompatible-3.07} \define@boolkey{glossaries.sty}[gls]{compatible-2.07}[true]{% \ifbool{glscompatible-2.07}% {% \@gls@removedoption{compatible-2.07}% }% {}% } \boolfalse{glscompatible-2.07} \let\gls@original@makeglossary\makeglossary \let\gls@original@glossary\glossary \newcommand*{\@gls@override@glossary}[1][main]{% \GlossariesWarning{Use of \string\glossary\space with glossaries.sty is deprecated. \MessageBreak Indexing should be performed with the user level \MessageBreak commands, such as \string\gls\space or \string\glsadd. If you need the \MessageBreak original definition of \string\glossary\space use the package \MessageBreak options kernelglossredefs=false (to restore the \MessageBreak former definition of \string\glossary) and nomain (if the \MessageBreak file extensions cause a conflict)}% \gls@glossary{#1}% } \define@choicekey{glossaries.sty}{kernelglossredefs}% [\gls@kernelglossredefs@val\gls@kernelglossredefs@nr]{true,false,nowarn}[true]% {% \ifcase\gls@kernelglossredefs@nr\relax \def\glossary{\@gls@override@glossary}% \def\makeglossary{% \GlossariesWarning{Use of \string\makeglossary\space with glossaries.sty is deprecated. Use \string\makeglossaries\space instead. If you need the original definition of \string\makeglossary\space use the package options kernelglossredefs=false (to prevent redefinition of \string\makeglossary) and nomain (if the file extensions cause a conflict)}% \makeglossaries }% \or \let\glossary\gls@original@glossary \let\makeglossary\gls@original@makeglossary \or \def\makeglossary{\makeglossaries}% \renewcommand*{\@gls@override@glossary}[1][main]{% \gls@glossary{##1}% }% \fi } \@gls@declareoption{symbols}{% \let\@gls@do@symbolsdef\@gls@symbolsdef } \newcommand*{\@gls@do@symbolsdef}{} \newcommand*{\@gls@symbolsdef}{% \newglossary[slg]{symbols}{sls}{slo}{\glssymbolsgroupname}% \newcommand*{\printsymbols}[1][]{\printglossary[type=symbols,##1]}% \newcommand*{\gls@tr@set@symbols@toctitle}{% \translatelet{\glossarytoctitle}{Symbols (glossaries)}% }% }% \@gls@declareoption{numbers}{% \let\@gls@do@numbersdef\@gls@numbersdef } \newcommand*{\@gls@do@numbersdef}{} \newcommand*{\@gls@numbersdef}{% \newglossary[nlg]{numbers}{nls}{nlo}{\glsnumbersgroupname}% \newcommand*{\printnumbers}[1][]{\printglossary[type=numbers,##1]}% \newcommand*{\gls@tr@set@numbers@toctitle}{% \translatelet{\glossarytoctitle}{Numbers (glossaries)}% }% }% \@gls@declareoption{index}{% \ifx\@gls@do@indexdef\@empty \let\@gls@do@indexdef\@gls@indexdef \fi } \@gls@declareoption{noglossaryindex}{% \let\@gls@do@indexdef\relax } \newcommand*{\@gls@do@indexdef}{} \newcommand*{\@gls@indexdef}{% \newglossary[ilg]{index}{ind}{idx}{\indexname}% \newcommand*{\printindex}[1][]{\printglossary[type=index,##1]}% \newcommand*{\newterm}[2][]{% \newglossaryentry{##2}% {type={index},name={##2},description={\nopostdesc},##1}} \let\@gls@do@indexdef\relax }% \define@choicekey{glossaries.sty}{mfirstuc}% [\gls@mfirstuc@val\gls@mfirstuc@nr]% {expanded,unexpanded}% {% \ifcase\gls@mfirstuc@nr % expanded \renewcommand*{\glsmakefirstuc}[1]{\MFUsentencecase{#1}}% \or % unexpanded \renewcommand*{\glsmakefirstuc}[1]{\MFUsentencecase{\unexpanded{#1}}}% \fi } \@for\CurrentOption :=\@declaredoptions\do{% \ifx\CurrentOption\@empty \else \@expandtwoargs \in@ {,\CurrentOption ,}{,\@classoptionslist,\@curroptions,}% \ifin@ \@use@ption \expandafter \let\csname ds@\CurrentOption\endcsname\@empty \fi \fi } \ProcessOptionsX \ifglsautomake \ifdef\directlua{\RequirePackage{shellesc}}{} \fi \disable@keys{glossaries.sty}{compatible-2.07,% xindy,xindygloss,xindynoglsnumbers,makeindex,% acronym,translate,notranslate,languages,nolong,nosuper,notree,nostyles,% nomain,noglossaryindex} \newcommand*{\setupglossaries}[1]{% \renewcommand*{\@gls@setacrstyle}{}% \ifglsacrshortcuts \def\@gls@setupshortcuts{\glsacrshortcutstrue}% \else \def\@gls@setupshortcuts{% \ifglsacrshortcuts \DefineAcronymSynonyms \fi }% \fi \glsacrshortcutsfalse \let\@gls@do@numbersdef\relax \let\@gls@do@symbolssdef\relax \let\@gls@do@indexdef\relax \let\@gls@do@acronymsdef\relax \ifglsentrycounter \let\@gls@doentrycounterdef\relax \else \let\@gls@doentrycounterdef\@gls@define@glossaryentrycounter \fi \ifglssubentrycounter \let\@gls@dosubentrycounterdef\relax \else \let\@gls@dosubentrycounterdef\@gls@define@glossarysubentrycounter \fi \setkeys{glossaries.sty}{#1}% \@gls@setacrstyle \@gls@setupshortcuts \@gls@do@acronymsdef \@gls@do@numbersdef \@gls@do@symbolssdef \@gls@do@indexdef \@gls@doentrycounterdef \@gls@dosubentrycounterdef } \ifthenelse{\equal{\glscounter}{section}}% {% \ifcsundef{chapter}{}% {% \let\@gls@old@chapter\@chapter \def\@chapter[#1]#2{\@gls@old@chapter[{#1}]{#2}% \ifcsundef{hyperdef}{}{\hyperdef{section}{\thesection}{}}}% }% }% {} \newcommand*{\@gls@onlypremakeg}{} \newcommand*{\@onlypremakeg}[1]{% \ifx\@gls@onlypremakeg\@empty \def\@gls@onlypremakeg{#1}% \else \expandafter\toks@\expandafter{\@gls@onlypremakeg}% \edef\@gls@onlypremakeg{\the\toks@,\noexpand#1}% \fi } \newcommand*{\@disable@onlypremakeg}{% \@for\@thiscs:=\@gls@onlypremakeg\do{% \expandafter\@disable@premakecs\@thiscs% }} \newcommand*{\@disable@premakecs}[1]{% \def#1{\PackageError{glossaries}{\string#1\space may only be used before \string\makeglossaries}{You can't use \string#1\space after \string\makeglossaries}}% } \providecommand*{\glossaryname}{Glossary} \providecommand*{\acronymname}{Acronyms} \newcommand*{\glssettoctitle}[1]{% \def\glossarytoctitle{\csname @glotype@#1@title\endcsname}} \providecommand*{\entryname}{Notation} \providecommand*{\descriptionname}{Description} \providecommand*{\symbolname}{Symbol} \providecommand*{\pagelistname}{Page List} \providecommand*{\glssymbolsgroupname}{Symbols} \providecommand*{\glsnumbersgroupname}{Numbers} \newcommand*{\glspluralsuffix}{s} \newcommand*{\glsacrpluralsuffix}{\glspluralsuffix} \newcommand*{\glsupacrpluralsuffix}{\glstextup{\glsacrpluralsuffix}} \providecommand*{\seename}{see} \providecommand*{\andname}{\&} \newcommand*{\RequireGlossariesLang}[1]{% \@ifundefined{ver@glossaries-#1.ldf}{\input{glossaries-#1.ldf}}{}% } \newcommand*{\ProvidesGlossariesLang}[1]{% \ProvidesFile{glossaries-#1.ldf}% } \newcommand*{\addglossarytocaptions}[1]{} \ifglstranslate \RequirePackage{tracklang}[2019/11/30] \ifdefvoid\@gls@requested@languages{}% {% \@for\@gls@thislang:=\@gls@requested@languages\do{% \TrackIfKnownLanguage{\@gls@thislang}{}% {\GlossariesWarning{unknown language `\@gls@thislang'}}% }% }% \@gls@usetranslator \@ifpackageloaded{translator} {% \ifboolexpr { test {\ifdefstring{\trans@languages}{English}} and not test {\ifdefstring{bbl@loaded}{english}} } {% \let\glsifusetranslator\@secondoftwo }% {% \usedictionary{glossaries-dictionary}% \renewcommand*{\addglossarytocaptions}[1]{% \ifcsundef{captions#1}{}% {% \expandafter\let\expandafter\@gls@tmp\csname captions#1\endcsname \expandafter\toks@\expandafter{\@gls@tmp \renewcommand*{\glossaryname}{\translate{Glossary}}% }% \expandafter\edef\csname captions#1\endcsname{\the\toks@}% }% }% }% }% {}% \AnyTrackedLanguages {% \ForEachTrackedDialect{\this@dialect}{% \IfTrackedLanguageFileExists{\this@dialect}% {glossaries-}% prefix {.ldf}% {% \RequireGlossariesLang{\CurrentTrackedTag}% }% {% \@gls@missinglang@warn\this@dialect\CurrentTrackedLanguage }% }% }% {}% \glsifusetranslator {% \renewcommand*{\glssettoctitle}[1]{% \ifcsdef{gls@tr@set@#1@toctitle}% {% \csuse{gls@tr@set@#1@toctitle}% }% {% \def\glossarytoctitle{\csname @glotype@#1@title\endcsname}% }% }% \renewcommand*{\glossaryname}{\translate{Glossary}}% \renewcommand*{\acronymname}{\translate{Acronyms}}% \renewcommand*{\entryname}{\translate{Notation (glossaries)}}% \renewcommand*{\descriptionname}{% \translate{Description (glossaries)}}% \renewcommand*{\symbolname}{\translate{Symbol (glossaries)}}% \renewcommand*{\pagelistname}{% \translate{Page List (glossaries)}}% \renewcommand*{\glssymbolsgroupname}{% \translate{Symbols (glossaries)}}% \renewcommand*{\glsnumbersgroupname}{% \translate{Numbers (glossaries)}}% }{}% \fi \DeclareRobustCommand*{\nopostdesc}{} \newcommand*{\@nopostdesc}{% \let\org@glspostdescription\glspostdescription \def\glspostdescription{% \let\glspostdescription\org@glspostdescription}% } \newcommand*{\@no@post@desc}{\nopostdesc} \newcommand{\glspar}{\par} \newcommand{\setStyleFile}[1]{% \renewcommand*{\gls@istfilebase}{#1}% \ifglsxindy \def\istfilename{\gls@istfilebase.xdy} \else \def\istfilename{\gls@istfilebase.ist} \fi } \@onlypremakeg\setStyleFile \ifglsxindy \def\istfilename{\gls@istfilebase.xdy} \else \def\istfilename{\gls@istfilebase.ist} \fi \newcommand*{\gls@istfilebase}{\jobname} \newcommand*{\@istfilename}[1]{} \newcommand*{\glscompositor}{.} \newcommand*{\glsSetCompositor}[1]{% \renewcommand*{\glscompositor}{#1}} \@onlypremakeg\glsSetCompositor \newcommand*{\@glsAlphacompositor}{\glscompositor} \ifglsxindy \newcommand*\glsSetAlphaCompositor[1]{% \renewcommand*\@glsAlphacompositor{#1}} \else \newcommand*\glsSetAlphaCompositor[1]{% \glsnoxindywarning\glsSetAlphaCompositor} \fi \@onlypremakeg\glsSetAlphaCompositor \newcommand*{\gls@suffixF}{} \newcommand*{\glsSetSuffixF}[1]{% \renewcommand*{\gls@suffixF}{#1}} \@onlypremakeg\glsSetSuffixF \newcommand*{\gls@suffixFF}{} \newcommand*{\glsSetSuffixFF}[1]{% \renewcommand*{\gls@suffixFF}{#1}% } \ifcsundef{hyperlink}% {% \newcommand*{\glsnumberformat}[1]{#1}% }% {% \newcommand*{\glsnumberformat}[1]{\glshypernumber{#1}}% } \newcommand{\glslocationcstoencap}[3]{\csuse{#2}{\csuse{#1}{#3}}} \newcommand{\delimN}{, } \newcommand{\delimR}{--} \newcommand*{\glossarypreamble}{% \csuse{@glossarypreamble@\currentglossary}% } \newcommand{\setglossarypreamble}[2][\glsdefaulttype]{% \ifglossaryexists*{#1}% {\csgdef{@glossarypreamble@#1}{#2}}% {\GlossariesWarning{Glossary `#1' is not defined}}% } \newcommand*{\glossarypostamble}{} \newcommand*{\glossarysection}[2][\@gls@title]{% \def\@gls@title{#2}% \ifcsundef{phantomsection}% {% \@glossarysection{#1}{#2}% }% {% \@p@glossarysection{#1}{#2}% }% \glsglossarymark{\glossarytoctitle}% } \ifcsundef{glossarymark}% {% \newcommand{\glsglossarymark}[1]{\glossarymark{#1}} }% {% \@ifclassloaded{memoir} {% \newcommand{\glsglossarymark}[1]{% \ifglsucmark \markboth{\memUChead{#1}}{\memUChead{#1}}% \else \markboth{#1}{#1}% \fi } }% {% \newcommand{\glsglossarymark}[1]{% \ifglsucmark \@mkboth{\glsuppercase{#1}}{\glsuppercase{#1}}% \else \@mkboth{#1}{#1}% \fi } } } \providecommand{\glossarymark}[1]{% \ifglsucmark \@mkboth{\glsuppercase{#1}}{\glsuppercase{#1}}% \else \@mkboth{#1}{#1}% \fi } \newcommand*{\setglossarysection}[1]{% \setkeys{glossaries.sty}{section=#1}} \newcommand*{\@glossarysection}[2]{% \ifdefempty\@@glossarysecstar {% \csname\@@glossarysec\endcsname[#1]{#2}% }% {% \csname\@@glossarysec\endcsname*{#2}% \@gls@toc{#1}{\@@glossarysec}% }% \@@glossaryseclabel } \newcommand*{\@p@glossarysection}[2]{% \glsclearpage \phantomsection \ifdefempty\@@glossarysecstar {% \csname\@@glossarysec\endcsname{#2}% }% {% \@gls@toc{#1}{\@@glossarysec}% \csname\@@glossarysec\endcsname*{#2}% }% \@@glossaryseclabel } \newcommand*{\gls@doclearpage}{% \ifthenelse{\equal{\@@glossarysec}{chapter}}% {% \ifcsundef{cleardoublepage}% {% \clearpage }% {% \ifcsdef{if@openright}% {% \if@openright \cleardoublepage \else \clearpage \fi }% {% \cleardoublepage }% }% }% {}% } \newcommand*{\glsclearpage}{\gls@doclearpage} \newcommand*{\@gls@toc}[2]{% \ifglstoc \ifglsnumberline \addcontentsline{toc}{#2}{\protect\numberline{}#1}% \else \addcontentsline{toc}{#2}{#1}% \fi \fi } \newcommand*{\glsnoxindywarning}[1]{% \GlossariesWarning{Not in xindy mode --- ignoring \string#1}% } \newcommand*{\glsnomakeindexwarning}[1]{% \GlossariesWarning{Not in makeindex mode --- ignoring \string#1}% } \ifglsxindy \edef\@xdyattributes{\string"default\string"}% \fi \ifglsxindy \edef\@xdyattributelist{}% \fi \ifglsxindy \def\@xdylocref{} \fi \newcommand*{\@gls@ifinlist}[4]{% \def\@do@ifinlist##1,#1,##2\end@doifinlist{% \def\@gls@listsuffix{##2}% \ifx\@gls@listsuffix\@empty #4% \else #3% \fi }% \@do@ifinlist,#2,#1,\end@doifinlist } \ifglsxindy \newcommand*{\@xdycounters}{\glscounter} \newcommand*\GlsAddXdyCounters[1]{% \@for\@gls@ctr:=#1\do{% \edef\@do@addcounter{% \noexpand\@gls@ifinlist{\@gls@ctr}{\@xdycounters}{}% {% \noexpand\edef\noexpand\@xdycounters{\@xdycounters,% \noexpand\@gls@ctr}% }% }% \@do@addcounter } } \@onlypremakeg\GlsAddXdyCounters \else \newcommand*\GlsAddXdyCounters[1]{% \glsnoxindywarning\GlsAddXdyAttribute } \fi \newcommand*\@disabled@glsaddxdycounters{% \PackageError{glossaries}{\string\GlsAddXdyCounters\space can't be used after \string\GlsAddXdyAttribute}{Move all occurrences of \string\GlsAddXdyCounters\space before the first instance of \string\GlsAddXdyAttribute}% } \ifglsxindy \newcommand*\@glsaddxdyattribute[2]{% \edef\@xdyattributes{\@xdyattributes ^^J \string"#2#1\string"}% \expandafter\toks@\expandafter{\@xdylocref}% \edef\@xdylocref{\the\toks@ ^^J% (markup-locref :open \string"\glstildechar n% \expandafter\string\csname glsX#2X#1\endcsname \string" ^^J :close \string"\string" ^^J :attr \string"#2#1\string")}% \expandafter\gdef\csname glsX#2X#1\endcsname##1##2{% \setentrycounter[##1]{#2}\csname #1\endcsname{##2}% }% } \newcommand*\GlsAddXdyAttribute[1]{% \ifx\@xdyattributelist\@empty \edef\@xdyattributelist{#1}% \else \edef\@xdyattributelist{\@xdyattributelist,#1}% \fi \edef\@xdyattributes{\@xdyattributes ^^J \string"#1\string"}% \@for\@this@counter:=\@xdycounters\do{% \protected@edef\gls@do@addxdyattribute{% \noexpand\@glsaddxdyattribute{#1}{\@this@counter}% } \gls@do@addxdyattribute }% \let\GlsAddXdyCounters\@disabled@glsaddxdycounters } \@onlypremakeg\GlsAddXdyAttribute \else \newcommand*\GlsAddXdyAttribute[1]{% \glsnoxindywarning\GlsAddXdyAttribute} \fi \ifglsxindy \newcommand*{\@gls@addpredefinedattributes}{% \GlsAddXdyAttribute{glsnumberformat} \GlsAddXdyAttribute{textrm} \GlsAddXdyAttribute{textsf} \GlsAddXdyAttribute{texttt} \GlsAddXdyAttribute{textbf} \GlsAddXdyAttribute{textmd} \GlsAddXdyAttribute{textit} \GlsAddXdyAttribute{textup} \GlsAddXdyAttribute{textsl} \GlsAddXdyAttribute{textsc} \GlsAddXdyAttribute{emph} \GlsAddXdyAttribute{glshypernumber} \GlsAddXdyAttribute{hyperrm} \GlsAddXdyAttribute{hypersf} \GlsAddXdyAttribute{hypertt} \GlsAddXdyAttribute{hyperbf} \GlsAddXdyAttribute{hypermd} \GlsAddXdyAttribute{hyperit} \GlsAddXdyAttribute{hyperup} \GlsAddXdyAttribute{hypersl} \GlsAddXdyAttribute{hypersc} \GlsAddXdyAttribute{hyperemph} \GlsAddXdyAttribute{glsignore} } \else \let\@gls@addpredefinedattributes\relax \fi \def\@xdyuseralphabets{} \ifglsxindy \newcommand*{\GlsAddXdyAlphabet}[2]{% \edef\@xdyuseralphabets{% \@xdyuseralphabets ^^J (define-alphabet "#1" (#2))}} \else \newcommand*{\GlsAddXdyAlphabet}[2]{% \glsnoxindywarning\GlsAddXdyAlphabet} \fi \ifglsxindy \newcommand*{\@gls@xdy@locationlist}{% roman-page-numbers,% Roman-page-numbers,% arabic-page-numbers,% alpha-page-numbers,% Alpha-page-numbers,% Appendix-page-numbers,% arabic-section-numbers% } \protected@edef\@gls@roman{\@roman{0\string" \string"roman-numbers-lowercase\string" :sep \string"}}% \@onelevel@sanitize\@gls@roman \edef\@gls@tmp{\string" \string"roman-numbers-lowercase\string" :sep \string"}% \@onelevel@sanitize\@gls@tmp \ifx\@gls@tmp\@gls@roman \expandafter \edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{% \string"roman-numbers-lowercase\string"% }% \else \expandafter \edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{ :sep \string"\@gls@roman\string"% }% \fi \expandafter\def\csname @gls@xdy@Lclass@Roman-page-numbers\endcsname{% \string"roman-numbers-uppercase\string"% }% \expandafter\def\csname @gls@xdy@Lclass@arabic-page-numbers\endcsname{% \string"arabic-numbers\string"% }% \expandafter\def\csname @gls@xdy@Lclass@alpha-page-numbers\endcsname{% \string"alpha\string"% }% \expandafter\def\csname @gls@xdy@Lclass@Alpha-page-numbers\endcsname{% \string"ALPHA\string"% }% \expandafter\def\csname @gls@xdy@Lclass@Appendix-page-numbers\endcsname{% \string"ALPHA\string" :sep \string"\@glsAlphacompositor\string" \string"arabic-numbers\string"% } \expandafter\def\csname @gls@xdy@Lclass@arabic-section-numbers\endcsname{% \string"arabic-numbers\string" :sep \string"\glscompositor\string" \string"arabic-numbers\string"% }% \def\@xdyuserlocationdefs{} \def\@xdyuserlocationnames{} \fi \ifglsxindy \newcommand\@xdycrossrefhook{} \fi \ifglsxindy \newcommand*{\GlsAddXdyLocation}[3][]{% \def\@gls@tmp{#1}% \ifx\@gls@tmp\@empty \edef\@xdyuserlocationdefs{% \@xdyuserlocationdefs ^^J% (define-location-class \string"#2\string"^^J\space\space \space(:sep \string"{}\glsopenbrace\string" #3 :sep \string"\glsclosebrace\string")) }% \else \edef\@xdyuserlocationdefs{% \@xdyuserlocationdefs ^^J% (define-location-class \string"#2\string"^^J\space\space \space(:sep "\glsopenbrace" #1 :sep "\glsclosebrace\glsopenbrace" #3 :sep "\glsclosebrace")) }% \fi \edef\@xdyuserlocationnames{% \@xdyuserlocationnames^^J\space\space\space \string"#2\string"}% } \@onlypremakeg\GlsAddXdyLocation \else \newcommand*{\GlsAddXdyLocation}[2]{% \glsnoxindywarning\GlsAddXdyLocation} \fi \ifglsxindy \def\@xdylocationclassorder{^^J\space\space\space \string"roman-page-numbers\string"^^J\space\space\space \string"arabic-page-numbers\string"^^J\space\space\space \string"arabic-section-numbers\string"^^J\space\space\space \string"alpha-page-numbers\string"^^J\space\space\space \string"Roman-page-numbers\string"^^J\space\space\space \string"Alpha-page-numbers\string"^^J\space\space\space \string"Appendix-page-numbers\string" \@xdyuserlocationnames^^J\space\space\space \string"see\string" } \fi \ifglsxindy \newcommand*\GlsSetXdyLocationClassOrder[1]{% \def\@xdylocationclassorder{#1}} \else \newcommand*\GlsSetXdyLocationClassOrder[1]{% \glsnoxindywarning\GlsSetXdyLocationClassOrder} \fi \ifglsxindy \def\@xdysortrules{} \fi \ifglsxindy \newcommand*\GlsAddSortRule[2]{% \expandafter\toks@\expandafter{\@xdysortrules}% \protected@edef\@xdysortrules{\the\toks@ ^^J (sort-rule \string"#1\string" \string"#2\string")}% } \else \newcommand*\GlsAddSortRule[2]{% \glsnoxindywarning\GlsAddSortRule} \fi \ifglsxindy \def\@xdyrequiredstyles{tex} \fi \ifglsxindy \newcommand*\GlsAddXdyStyle[1]{% \edef\@xdyrequiredstyles{\@xdyrequiredstyles,#1}}% \else \newcommand*\GlsAddXdyStyle[1]{% \glsnoxindywarning\GlsAddXdyStyle} \fi \ifglsxindy \newcommand*\GlsSetXdyStyles[1]{% \edef\@xdyrequiredstyles{#1}} \else \newcommand*\GlsSetXdyStyles[1]{% \glsnoxindywarning\GlsSetXdyStyles} \fi \def\@xdylanguage#1#2{} \ifglsxindy \newcommand*\GlsSetXdyLanguage[2][\glsdefaulttype]{% \ifglossaryexists{#1}{% \expandafter\def\csname @xdy@#1@language\endcsname{#2}% }{% \PackageError{glossaries}{Can't set language type for glossary type `#1' --- no such glossary}{% You have specified a glossary type that doesn't exist}}} \else \newcommand*\GlsSetXdyLanguage[2][]{% \glsnoxindywarning\GlsSetXdyLanguage} \fi \def\@gls@codepage#1#2{} \ifglsxindy \newcommand*{\GlsSetXdyCodePage}[1]{% \renewcommand*{\gls@codepage}{#1}% } \AtBeginDocument{% \ifx\gls@codepage\@empty \@ifpackageloaded{fontspec}{\def\gls@codepage{utf8}}{}% \fi } \else \newcommand*{\GlsSetXdyCodePage}[1]{% \glsnoxindywarning\GlsSetXdyCodePage} \fi \ifglsxindy \ifgls@xindy@glsnumbers \def\@xdylettergroups{(define-letter-group \string"glsnumbers\string"^^J\space\space\space :prefixes (\string"0\string" \string"1\string" \string"2\string" \string"3\string" \string"4\string" \string"5\string" \string"6\string" \string"7\string" \string"8\string" \string"9\string")^^J\space\space\space \@xdynumbergrouporder)} \else \def\@xdylettergroups{} \fi \fi \newcommand*\GlsAddLetterGroup[2]{% \expandafter\toks@\expandafter{\@xdylettergroups}% \protected@edef\@xdylettergroups{\the\toks@^^J% (define-letter-group \string"#1\string"^^J\space\space\space#2)}% }% \newcommand*{\forallglossaries}[3][\@glo@types]{% \@for#2:=#1\do{\ifx#2\@empty\else#3\fi}% } \newcommand*{\forallacronyms}[2]{% \@for#1:=\@glsacronymlists\do{\ifx#1\@empty\else#2\fi}% } \newcommand*{\forglsentries}[3][\glsdefaulttype]{% \protected@edef\@@glo@list{\csname glolist@#1\endcsname}% \@for#2:=\@@glo@list\do {% \ifdefempty{#2}{}{#3}% }% } \newcommand*{\forallglsentries}[3][\@glo@types]{% \expandafter\forallglossaries\expandafter[#1]{\@@this@glo@}% {% \forglsentries[\@@this@glo@]{#2}{#3}% }% } \newcommand{\ifglossaryexists}{% \@ifstar\s@ifglossaryexists\@ifglossaryexists } \newcommand{\@ifglossaryexists}[3]{% \ifcsundef{@glotype@#1@out}{#3}{#2}% } \newcommand{\s@ifglossaryexists}[3]{% \ifcsundef{glolist@#1}{#3}{#2}% } \newcommand*{\glsdetoklabel}[1]{#1} \newcommand{\ifglsentryexists}[3]{% \ifcsundef{glo@\glsdetoklabel{#1}@name}{#3}{#2}% } \newcommand*{\ifglsused}[3]{% \ifbool{glo@\glsdetoklabel{#1}@flag}{#2}{#3}% } \newcommand{\glsdoifexists}[2]{% \ifglsentryexists{#1}{#2}{% \PackageError{glossaries}{Glossary entry `\glsdetoklabel{#1}' has not been defined}{You need to define a glossary entry before you can use it.}}% } \newcommand{\glsdoifnoexists}[2]{% \ifglsentryexists{#1}{% \PackageError{glossaries}{Glossary entry `\glsdetoklabel{#1}' has already been defined}{}}{#2}% } \newcommand{\glsdoifexistsorwarn}[2]{% \ifglsentryexists{#1}{#2}{% \GlossariesWarning{Glossary entry `\glsdetoklabel{#1}' has not been defined}% }% } \newcommand{\glsdoifexistsordo}[3]{% \ifglsentryexists{#1}{#2}{% \PackageError{glossaries}{Glossary entry `\glsdetoklabel{#1}' has not been defined}{You need to define a glossary entry before you can use it.}% #3% }% } \newcommand{\doifglossarynoexistsordo}[3]{% \ifglossaryexists*{#1}% {% \PackageError{glossaries}{Glossary type `#1' already exists}{}% #3% }% {#2}% } \newrobustcmd{\ifglshaschildren}[3]{% \glsdoifexists{#1}% {% \def\do@glshaschildren{#3}% \protected@edef\@gls@thislabel{\glsdetoklabel{#1}}% \expandafter\forglsentries\expandafter [\csname glo@\@gls@thislabel @type\endcsname] {\glo@label}% {% \letcs\glo@parent{glo@\glo@label @parent}% \ifdefequal\@gls@thislabel\glo@parent {% \def\do@glshaschildren{#2}% \@endfortrue }% {}% }% \do@glshaschildren }% } \newcommand{\ifglshasparent}[3]{% \glsdoifexists{#1}% {% \ifcsempty{glo@\glsdetoklabel{#1}@parent}{#3}{#2}% }% } \newcommand*{\ifglshasdesc}[3]{% \ifcsempty{glo@\glsdetoklabel{#1}@desc}% {#3}% {#2}% } \newcommand*{\ifglsdescsuppressed}[3]{% \ifcsequal{glo@\glsdetoklabel{#1}@desc}{@no@post@desc}% {#2}% {#3}% } \newrobustcmd*{\ifglshassymbol}[3]{% \letcs{\@glo@symbol}{glo@\glsdetoklabel{#1}@symbol}% \ifdefempty\@glo@symbol {#3}% {% \ifdefequal\@glo@symbol\@gls@default@value {#3}% {#2}% }% } \newrobustcmd*{\ifglshaslong}[3]{% \letcs{\@glo@long}{glo@\glsdetoklabel{#1}@long}% \ifdefempty\@glo@long {#3}% {% \ifdefequal\@glo@long\@gls@default@value {#3}% {#2}% }% } \newrobustcmd*{\ifglshasshort}[3]{% \letcs{\@glo@short}{glo@\glsdetoklabel{#1}@short}% \ifdefempty\@glo@short {#3}% {% \ifdefequal\@glo@short\@gls@default@value {#3}% {#2}% }% } \newcommand{\ifglsfieldvoid}[4]{\ifcsvoid{glo@\glsdetoklabel{#2}@#1}{#3}{#4}} \newrobustcmd*{\ifglshasfield}[4]{% \glsdoifexists{#2}% {% \letcs{\@glo@thisvalue}{glo@\glsdetoklabel{#2}@#1}% \ifdef\@glo@thisvalue {% \ifdefempty\@glo@thisvalue {% #4% }% {% \ifdefequal\@glo@thisvalue\@gls@default@value {% #4% }% {% \let\glscurrentfieldvalue\@glo@thisvalue #3% }% }% }% {% \@gls@fetchfield{\@gls@thisfield}{#1}% \ifdef\@gls@thisfield {% \letcs{\@glo@thisvalue}{glo@\glsdetoklabel{#2}@\@gls@thisfield}% \ifdefempty\@glo@thisvalue {% #4% }% {% \ifdefequal\@glo@thisvalue\@gls@default@value {% #4% }% {% \let\glscurrentfieldvalue\@glo@thisvalue #3% }% }% }% {% \GlossariesWarning{Unknown entry field `#1'}% #4% }% }% }% } \newcommand*{\glscurrentfieldvalue}{} \newcommand*{\@glo@types}{,} \newcommand*\@gls@provide@newglossary{% \protected@write\@auxout{}{\string\providecommand\string\@newglossary[4]{}}% \let\@gls@provide@newglossary\relax } \newcommand*{\@gls@defaulttype}{\glsdefaulttype} \newcommand*{\defglsentryfmt}[2][\glsdefaulttype]{% \protected@edef\@glo@tmp{#1}% \ifx\@glo@tmp\@gls@defaulttype \GlossariesWarning{\string\defglsentryfmt\space attempting to set a display style for \string\glsdefaulttype\space but there doesn't seem to be a default glossary. If you have used `nomain', you need to define an alternative glossary}% \else \csgdef{gls@\@glo@tmp @entryfmt}{#2}% \fi } \newcommand*{\gls@doentryfmt}[1]{\csuse{gls@#1@entryfmt}} \newcommand*{\@gls@forbidtexext}[1]{% \ifboolexpr{test {\ifdefstring{#1}{tex}} or test {\ifdefstring{#1}{TEX}}} {% \def#1{nottex}% \PackageError{glossaries}% {Forbidden `.tex' extension replaced with `.nottex'}% {I'm sorry, I can't allow you to do something so reckless.\MessageBreak Don't use `.tex' as an extension for a temporary file.}% }% {% }% } \newcommand*{\gls@gobbleopt}{\new@ifnextchar[{\@gls@gobbleopt}{}} \def\@gls@gobbleopt[#1]{} \newcommand*{\newglossary}{\@ifstar\s@newglossary\ns@newglossary} \newcommand*{\s@newglossary}[2]{% \ns@newglossary[#1-glg]{#1}{#1-gls}{#1-glo}{#2}% } \newcommand*{\ns@newglossary}[5][glg]{% \doifglossarynoexistsordo{#2}% {% \ifundef\glsdefaulttype {% \gdef\glsdefaulttype{#2}% }{}% \toks@{#2}\protected@edef\@glo@types{\@glo@types\the\toks@,}% \expandafter\gdef\csname glolist@#2\endcsname{,}% \expandafter\edef\csname @glotype@#2@log\endcsname{#1}% \expandafter\edef\csname @glotype@#2@in\endcsname{#3}% \expandafter\edef\csname @glotype@#2@out\endcsname{#4}% \expandafter\@gls@forbidtexext\csname @glotype@#2@log\endcsname \expandafter\@gls@forbidtexext\csname @glotype@#2@in\endcsname \expandafter\@gls@forbidtexext\csname @glotype@#2@out\endcsname \expandafter\def\csname @glotype@#2@title\endcsname{#5}% \@gls@provide@newglossary \protected@write\@auxout{}{\string\@newglossary{#2}{#1}{#3}{#4}}% \ifcsundef{gls@#2@entryfmt}% {% \defglsentryfmt[#2]{\glsentryfmt}% }% {}% \@gls@defsortcount{#2}% \@ifnextchar[{\@gls@setcounter{#2}}% {\@gls@setcounter{#2}[\glscounter]}% }% {% \gls@gobbleopt }% } \newcommand*{\altnewglossary}[3]{% \newglossary[#2-glg]{#1}{#2-gls}{#2-glo}{#3}% } \@onlypreamble{\newglossary} \@onlypremakeg\newglossary \newcommand*{\@newglossary}[4]{} \def\@gls@setcounter#1[#2]{% \expandafter\def\csname @glotype@#1@counter\endcsname{#2}% \ifglsxindy \GlsAddXdyCounters{#2}% \fi } \newcommand*{\@gls@getcounter}[1]{% \csname @glotype@#1@counter\endcsname } \glsdefmain \@gls@do@acronymsdef \@gls@do@symbolsdef \@gls@do@numbersdef \@gls@do@indexdef \newcommand*{\newignoredglossary}[1]{% \ifdefempty\@ignored@glossaries {% \protected@edef\@ignored@glossaries{#1}% }% {% \protected@eappto\@ignored@glossaries{,#1}% }% \csgdef{glolist@#1}{,}% \ifcsundef{gls@#1@entryfmt}% {% \defglsentryfmt[#1]{\glsentryfmt}% }% {}% \ifdefempty\@gls@nohyperlist {% \renewcommand*{\@gls@nohyperlist}{#1}% }% {% \protected@eappto\@gls@nohyperlist{,#1}% }% } \newcommand*{\@ignored@glossaries}{} \newcommand*{\ifignoredglossary}[3]{% \protected@edef\@gls@igtype{#1}% \expandafter\DTLifinlist\expandafter {\@gls@igtype}{\@ignored@glossaries}{#2}{#3}% } \define@key{glossentry}{name}{% \def\@glo@name{#1}% } \define@key{glossentry}{description}{% \def\@glo@desc{#1}% } \define@key{glossentry}{descriptionplural}{% \def\@glo@descplural{#1}% } \define@key{glossentry}{sort}{% \def\@glo@sort{#1}} \define@key{glossentry}{text}{% \def\@glo@text{#1}% } \define@key{glossentry}{plural}{% \def\@glo@plural{#1}% } \define@key{glossentry}{first}{% \def\@glo@first{#1}% } \define@key{glossentry}{firstplural}{% \def\@glo@firstplural{#1}% } \newcommand*{\@gls@default@value}{\relax} \define@key{glossentry}{symbol}{% \def\@glo@symbol{#1}% } \define@key{glossentry}{symbolplural}{% \def\@glo@symbolplural{#1}% } \define@key{glossentry}{type}{% \def\@glo@type{#1}} \define@key{glossentry}{counter}{% \ifcsundef{c@#1}% {% \PackageError{glossaries}% {There is no counter called `#1'}% {% The counter key should have the name of a valid counter as its value% }% }% {% \def\@glo@counter{#1}% }% } \define@key{glossentry}{see}{% \gls@set@xr@key{see}{\@glo@see}{#1}% } \newcommand*{\gls@set@xr@key}[3]{% \renewcommand*{\gls@xr@key}{#1}% \gls@checkseeallowed \def#2{#3}% \@glo@seeautonumberlist } \newcommand*{\gls@xr@key}{see} \newcommand*{\gls@checkseeallowed}{% \@gls@see@noindex } \newcommand*{\gls@checkseeallowed@preambleonly}{% \GlossariesWarning {`\gls@xr@key' key doesn't have any effect when used in the document environment. Move the definition to the preamble after \string\makeglossaries\space or \string\makenoidxglossaries}% } \define@key{glossentry}{parent}{% \def\@glo@parent{#1}} \define@choicekey{glossentry}{nonumberlist}% [\gls@nonumberlist@val\gls@nonumberlist@nr]{true,false}[true]% {% \ifcase\gls@nonumberlist@nr\relax \def\@glo@prefix{\glsnonextpages}% \@gls@savenonumberlist{true}% \else \def\@glo@prefix{\glsnextpages}% \@gls@savenonumberlist{false}% \fi } \newcommand*{\gls@noidx@nonumberlist}[1]{% \cslet{glo@\@glo@label @prenumberlist}\@glo@prefix }% \newcommand{\glsnoidxprenumberlist}[1]{% \csuse{glo@\glsdetoklabel{#1}@prenumberlist}} \newcommand*{\@gls@savenonumberlist}[1]{} \newcommand*{\@gls@initnonumberlist}{}% \newcommand*{\@gls@storenonumberlist}[1]{} \newcommand*{\@gls@enablesavenonumberlist}{% \renewcommand*{\@gls@initnonumberlist}{% \undef\@glo@nonumberlist }% \renewcommand*{\@gls@savenonumberlist}[1]{% \def\@glo@nonumberlist{##1}% }% \renewcommand*{\@gls@storenonumberlist}[1]{% \ifdef\@glo@nonumberlist {% \cslet{glo@\glsdetoklabel{##1}@nonumberlist}{\@glo@nonumberlist}% }% {}% }% \appto\@gls@keymap{,{nonumberlist}{nonumberlist}}% } \define@key{glossentry}{user1}{% \def\@glo@useri{#1}% } \define@key{glossentry}{user2}{% \def\@glo@userii{#1}% } \define@key{glossentry}{user3}{% \def\@glo@useriii{#1}% } \define@key{glossentry}{user4}{% \def\@glo@useriv{#1}% } \define@key{glossentry}{user5}{% \def\@glo@userv{#1}% } \define@key{glossentry}{user6}{% \def\@glo@uservi{#1}% } \define@key{glossentry}{short}{% \def\@glo@short{#1}% } \define@key{glossentry}{shortplural}{% \def\@glo@shortpl{#1}% } \define@key{glossentry}{long}{% \def\@glo@long{#1}% } \define@key{glossentry}{longplural}{% \def\@glo@longpl{#1}% } \newcommand*{\@glsnoname}{% \PackageError{glossaries}{name key required in \string\newglossaryentry\space for entry `\@glo@label'}{You haven't specified the entry name}} \newcommand*\@glsnodesc{% \PackageError{glossaries} {% description key required in \string\newglossaryentry\space for entry `\@glo@label'% }% {% You haven't specified the entry description% }% }% \newcommand*{\@gls@missingnumberlist}[1]{% ??% \ifglssavenumberlist \GlossariesWarning{Missing number list for entry `#1'. Maybe makeglossaries + rerun required}% \else \PackageError{glossaries}% {Package option `savenumberlist=true' required}% {% You must use the `savenumberlist' package option to reference location lists.% }% \fi } \newcommand*{\@glsdefaultsort}{\@glo@name} \newcount\gls@level \newcommand{\@@gls@noexpand@field}[3]{% \expandafter\global\expandafter \let\csname glo@#1@#2\endcsname#3% } \newcommand{\@gls@noexpand@fields}[4]{% \ifcsdef{gls@assign@#3@field} {% \ifdefequal{#4}{\@gls@default@value}% {% \edef\@gls@value{\expandonce{#1}}% \csuse{gls@assign@#3@field}{#2}{\@gls@value}% }% {% \csuse{gls@assign@#3@field}{#2}{#4}% }% }% {% \ifdefequal{#4}{\@gls@default@value}% {% \edef\@gls@value{\expandonce{#1}}% \@@gls@noexpand@field{#2}{#3}{\@gls@value}% }% {% \@@gls@noexpand@field{#2}{#3}{#4}% }% }% } \newcommand{\@@gls@expand@field}[3]{% \expandafter \protected@xdef\csname glo@#1@#2\endcsname{#3}% } \newcommand{\@gls@expand@fields}[4]{% \ifcsdef{gls@assign@#3@field} {% \ifdefequal{#4}{\@gls@default@value}% {% \edef\@gls@value{\expandonce{#1}}% \csuse{gls@assign@#3@field}{#2}{\@gls@value}% }% {% \expandafter\@gls@startswithexpandonce#4\relax\relax\gls@endcheck {% \@@gls@expand@field{#2}{#3}{#4}% }% {% \csuse{gls@assign@#3@field}{#2}{#4}% }% }% }% {% \ifdefequal{#4}{\@gls@default@value}% {% \@@gls@expand@field{#2}{#3}{#1}% }% {% \@@gls@expand@field{#2}{#3}{#4}% }% }% } \def\@gls@expandonce{\expandonce} \def\@gls@startswithexpandonce#1#2\gls@endcheck#3#4{% \def\@gls@tmp{#1}% \ifdefequal{\@gls@expandonce}{\@gls@tmp}{#3}{#4}% } \let\gls@assign@field\@gls@expand@fields \newcommand*{\glsexpandfields}{% \let\gls@assign@field\@gls@expand@fields } \newcommand*{\glsnoexpandfields}{% \let\gls@assign@field\@gls@noexpand@fields } \newrobustcmd{\newglossaryentry}[2]{% \glsdoifnoexists{#1}% {% \gls@defglossaryentry{#1}{#2}% }% } \newcommand*{\gls@defdocnewglossaryentry}{% \let\newglossaryentry\new@glossaryentry } \newrobustcmd{\provideglossaryentry}[2]{% \ifglsentryexists{#1}% {}% {% \gls@defglossaryentry{#1}{#2}% }% } \@onlypreamble{\provideglossaryentry} \newcommand*{\gls@glsdefs@labellist}{} \newcommand*{\gls@glsdefs@addlabel}[1]{\listxadd{\gls@glsdefs@labellist}{#1}} \newcommand*{\gls@docdef@labellist}{} \newcommand*{\gls@docdef@addlabel}[1]{\listxadd{\gls@docdef@labellist}{#1}} \newrobustcmd{\new@glossaryentry}[2]{% \ifundef\@gls@deffile {% \global\newwrite\@gls@deffile \immediate\openout\@gls@deffile=\jobname.glsdefs }% {}% \ifglsentryexists{#1}% {% \xifinlist{#1}{\gls@docdef@labellist}% {% \GlossariesWarning{Entry `#1' has already been defined in the document environment (ignoring new definition)}% }% {% \xifinlist{#1}{\gls@glsdefs@labellist}% {% \gls@defglossaryentry{#1}{#2}% \gls@docdef@addlabel{#1}% \@gls@writedef{#1}% }% {% \GlossariesWarning{Entry `#1' has already been defined in the preamble (in which case remove the duplicate definition) or you have just updated to glossaries.sty v4.47 (in which case delete `\jobname.glsdefs')}% }% }% }% {% \gls@defglossaryentry{#1}{#2}% \gls@docdef@addlabel{#1}% \@gls@writedef{#1}% }% } \AtBeginDocument{\gls@begindocdefs} \AtEndDocument{\ifdef\@gls@deffile{\closeout\@gls@deffile}{}} \newcommand*{\gls@begindocdefs}{% \@gls@enablesavenonumberlist \edef\@gls@restoreat{\noexpand\catcode`\noexpand\@=\number\catcode`\@\relax}% \makeatletter \InputIfFileExists{\jobname.glsdefs}{}{}% \@gls@restoreat \undef\@gls@restoreat \gls@defdocnewglossaryentry } \newcommand*{\glsdefs@newdocentry}[2]{% \ifglsentryexists{#1}% {\GlossariesWarning{entry `#1' has already been defined in the preamble (if you have moved the definition there from the document environment, delete \jobname.glsdefs)}}% {% \gls@glsdefs@addlabel{#1}% \gls@defglossaryentry{#1}{#2}% }% } \newcommand*{\@gls@writedef}[1]{% \immediate\write\@gls@deffile {% \string\glsdefs@newdocentry{\glsdetoklabel{#1}}\glspercentchar^^J% \expandafter\@gobble\string\{\glspercentchar% }% \@for\@gls@map:=\@gls@keymap\do {% \letcs\glo@value{glo@\glsdetoklabel{#1}@\expandafter\@secondoftwo\@gls@map}% \ifdef\glo@value {% \@onelevel@sanitize\glo@value \immediate\write\@gls@deffile {% \expandafter\@firstoftwo\@gls@map =\expandafter\@gobble\string\{\glo@value\expandafter\@gobble\string\},% \glspercentchar }% }% {}% }% \glswritedefhook \immediate\write\@gls@deffile {% \glspercentchar^^J% \expandafter\@gobble\string\}\glspercentchar^^J% }% } \newcommand*{\@gls@keymap}{% {name}{name},% {sort}{sortvalue},% unescaped sort value {type}{type},% {first}{first},% {firstplural}{firstpl},% {text}{text},% {plural}{plural},% {description}{desc},% {descriptionplural}{descplural},% {symbol}{symbol},% {symbolplural}{symbolplural},% {user1}{useri},% {user2}{userii},% {user3}{useriii},% {user4}{useriv},% {user5}{userv},% {user6}{uservi},% {long}{long},% {longplural}{longpl},% {short}{short},% {shortplural}{shortpl},% {counter}{counter},% {parent}{parent}% } \newcommand*{\@gls@fetchfield}[2]{% \edef\@gls@thisval{#2}% \@for\@gls@map:=\@gls@keymap\do{% \edef\@this@key{\expandafter\@firstoftwo\@gls@map}% \ifdefequal{\@this@key}{\@gls@thisval}% {% \edef#1{\expandafter\@secondoftwo\@gls@map}% \@endfortrue }% {}% }% } \newcommand*{\glsaddstoragekey}{\@ifstar\@sglsaddstoragekey\@glsaddstoragekey} \newcommand*{\@sglsaddstoragekey}[1]{% \key@ifundefined{glossentry}{#1}% {% \expandafter\newcommand\expandafter*\expandafter {\csname gls@assign@#1@field\endcsname}[2]{% \@@gls@expand@field{##1}{#1}{##2}% }% }% {}% \@glsaddstoragekey{#1}% } \newcommand*{\@glsaddstoragekey}[3]{% \key@ifundefined{glossentry}{#1}% {% \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}% \appto\@gls@keymap{,{#1}{#1}}% \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}% \appto\@newglossaryentryposthook{% \letcs{\@glo@tmp}{@glo@#1}% \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}% }% \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}% }% {% \PackageError{glossaries}{Key `#1' already exists}{}% }% } \newcommand*{\glsaddkey}{\@ifstar\@sglsaddkey\@glsaddkey} \newcommand*{\@sglsaddkey}[1]{% \key@ifundefined{glossentry}{#1}% {% \expandafter\newcommand\expandafter*\expandafter {\csname gls@assign@#1@field\endcsname}[2]{% \@@gls@expand@field{##1}{#1}{##2}% }% }% {}% \@glsaddkey{#1}% } \newcommand*{\@glsaddkey}[7]{% \key@ifundefined{glossentry}{#1}% {% \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}% \appto\@gls@keymap{,{#1}{#1}}% \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}% \appto\@newglossaryentryposthook{% \letcs{\@glo@tmp}{@glo@#1}% \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}% }% \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}% \newcommand*{#4}[1]{\@Glsentryfield{##1}{#1}}% \ifcsdef{@gls@user@#1@}% {% \PackageError{glossaries}% {Can't define `\string#5' as helper command `\expandafter\string\csname @gls@user@#1@\endcsname' already exists}% {}% }% {% \expandafter\newcommand\expandafter*\expandafter {\csname @gls@user@#1\endcsname}[2][]{% \new@ifnextchar[% {\csuse{@gls@user@#1@}{##1}{##2}}% {\csuse{@gls@user@#1@}{##1}{##2}[]}}% \csdef{@gls@user@#1@}##1##2[##3]{% \@gls@field@link{##1}{##2}{#3{##2}##3}% }% \newrobustcmd*{#5}{% \expandafter\@gls@hyp@opt\csname @gls@user@#1\endcsname}% }% \ifcsdef{@Gls@user@#1@}% {% \PackageError{glossaries}% {Can't define `\string#6' as helper command `\expandafter\string\csname @Gls@user@#1@\endcsname' already exists}% {}% }% {% \expandafter\newcommand\expandafter*\expandafter {\csname @Gls@user@#1\endcsname}[2][]{% \new@ifnextchar[% {\csuse{@Gls@user@#1@}{##1}{##2}}% {\csuse{@Gls@user@#1@}{##1}{##2}[]}}% \csdef{@Gls@user@#1@}##1##2[##3]{% \@gls@field@link{##1}{##2}{#4{##2}##3}% }% \newrobustcmd*{#6}{% \expandafter\@gls@hyp@opt\csname @Gls@user@#1\endcsname}% }% \ifcsdef{@GLS@user@#1@}% {% \PackageError{glossaries}% {Can't define `\string#7' as helper command `\expandafter\string\csname @GLS@user@#1@\endcsname' already exists}% {}% }% {% \expandafter\newcommand\expandafter*\expandafter {\csname @GLS@user@#1\endcsname}[2][]{% \new@ifnextchar[% {\csuse{@GLS@user@#1@}{##1}{##2}}% {\csuse{@GLS@user@#1@}{##1}{##2}[]}}% \csdef{@GLS@user@#1@}##1##2[##3]{% \@gls@field@link{##1}{##2}{\glsuppercase{#3{##2}##3}}% }% \newrobustcmd*{#7}{% \expandafter\@gls@hyp@opt\csname @GLS@user@#1\endcsname}% }% \glsmfuaddmap{#3}{#4}% \glsmfuaddmap{#5}{#6}% \glsmfublocker{#7}% }% {% \PackageError{glossaries}{Key `#1' already exists}{}% }% } \newrobustcmd{\glsfieldxdef}[3]{% \glsdoifexists{#1}% {% \protected@edef\@glo@label{\glsdetoklabel{#1}}% \ifcsdef{glo@\@glo@label @#2}% {% \protected@csxdef{glo@\@glo@label @#2}{#3}% }% {% \PackageError{glossaries}{Field `#2' doesn't exist}{}% }% }% } \newrobustcmd{\glsfieldedef}[3]{% \glsdoifexists{#1}% {% \protected@edef\@glo@label{\glsdetoklabel{#1}}% \ifcsdef{glo@\@glo@label @#2}% {% \protected@csedef{glo@\@glo@label @#2}{#3}% }% {% \PackageError{glossaries}{Field `#2' doesn't exist}{}% }% }% } \newrobustcmd{\glsfieldgdef}[3]{% \glsdoifexists{#1}% {% \protected@edef\@glo@label{\glsdetoklabel{#1}}% \ifcsdef{glo@\@glo@label @#2}% {% \expandafter\gdef\csname glo@\@glo@label @#2\endcsname{#3}% }% {% \PackageError{glossaries}{Field `#2' doesn't exist}{}% }% }% } \newrobustcmd{\glsfielddef}[3]{% \glsdoifexists{#1}% {% \protected@edef\@glo@label{\glsdetoklabel{#1}}% \ifcsdef{glo@\@glo@label @#2}% {% \expandafter\def\csname glo@\@glo@label @#2\endcsname{#3}% }% {% \PackageError{glossaries}{Field `#2' doesn't exist}{}% }% }% } \newrobustcmd{\glsfieldfetch}[3]{% \glsdoifexists{#1}% {% \protected@edef\@glo@label{\glsdetoklabel{#1}}% \ifcsdef{glo@\@glo@label @#2}% {% \letcs#3{glo@\@glo@label @#2}% }% {% \PackageError{glossaries}{Field `#2' doesn't exist}{}% }% }% } \newcommand*{\glsunexpandedfieldvalue}[2]{% \ifcsname glo@\glsdetoklabel{#1}@#2\endcsname \expandafter\expandonce\csname glo@\glsdetoklabel{#1}@#2\expandafter\endcsname \fi } \newrobustcmd{\ifglsfieldeq}[5]{% \glsdoifexists{#1}% {% \protected@edef\@glo@label{\glsdetoklabel{#1}}% \ifcsdef{glo@\@glo@label @#2}% {% \ifcsstring{glo@\@glo@label @#2}{#3}{#4}{#5}% }% {% \PackageError{glossaries}{Field `#2' doesn't exist}{}% }% }% } \newrobustcmd{\ifglsfielddefeq}[5]{% \glsdoifexists{#1}% {% \protected@edef\@glo@label{\glsdetoklabel{#1}}% \ifcsdef{glo@\@glo@label @#2}% {% \expandafter\ifdefstrequal\csname glo@\@glo@label @#2\endcsname{#3}{#4}{#5}% }% {% \PackageError{glossaries}{Field `#2' doesn't exist}{}% }% }% } \newcommand{\ifglsfieldcseq}[5]{% \glsdoifexists{#1}% {% \protected@edef\@glo@label{\glsdetoklabel{#1}}% \ifcsdef{glo@\@glo@label @#2}% {% \ifcsstrequal{glo@\@glo@label @#2}{#3}{#4}{#5}% }% {% \PackageError{glossaries}{Key `#2' doesn't exist}{}% }% }% } \newcommand*{\glswritedefhook}{} \newcommand*{\gls@assign@desc}[1]{% \gls@assign@field{}{#1}{desc}{\@glo@desc}% \gls@assign@field{\@glo@desc}{#1}{descplural}{\@glo@descplural}% } \newcommand{\longnewglossaryentry}[3]{% \glsdoifnoexists{#1}% {% \bgroup \let\@org@newglossaryentryprehook\@newglossaryentryprehook \long\def\@newglossaryentryprehook{% \long\def\@glo@desc{#3\leavevmode\unskip\nopostdesc}% \@org@newglossaryentryprehook }% \renewcommand*{\gls@assign@desc}[1]{% \global\cslet{glo@\glsdetoklabel{#1}@desc}{\@glo@desc}% \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@desc}% } \gls@defglossaryentry{#1}{#2}% \egroup } } \@onlypreamble{\longnewglossaryentry} \newcommand{\longprovideglossaryentry}[3]{% \ifglsentryexists{#1}{}% {\longnewglossaryentry{#1}{#2}{#3}}% } \@onlypreamble{\longprovideglossaryentry} \newcommand{\gls@defglossaryentry}[2]{% \let\GlsSetQuote\gls@nosetquote \protected@edef\@glo@label{\glsdetoklabel{#1}}% \let\glslabel\@glo@label \let\@glo@name\@glsnoname \let\@glo@desc\@glsnodesc \let\@glo@descplural\@gls@default@value \let\@glo@type\@gls@default@value \let\@glo@symbol\@gls@default@value \let\@glo@symbolplural\@gls@default@value \let\@glo@text\@gls@default@value \let\@glo@plural\@gls@default@value \let\@glo@first\@gls@default@value \let\@glo@firstplural\@gls@default@value \let\@glo@sort\@gls@default@value \let\@glo@counter\@gls@default@value \def\@glo@see{}% \def\@glo@parent{}% \def\@glo@prefix{}% \@gls@initnonumberlist \def\@glo@useri{}% \def\@glo@userii{}% \def\@glo@useriii{}% \def\@glo@useriv{}% \def\@glo@userv{}% \def\@glo@uservi{}% \def\@glo@short{}% \def\@glo@shortpl{}% \def\@glo@long{}% \def\@glo@longpl{}% \@newglossaryentryprehook \setkeys{glossentry}{#2}% \ifundef\glsdefaulttype {% \PackageError{glossaries}% {No default glossary type (have you used `nomain' by mistake?)}% {If you use package option `nomain' you must define a new glossary before you can define entries}% }% {}% \gls@assign@field{\glsdefaulttype}{\@glo@label}{type}{\@glo@type}% \protected@edef\@glo@type{\glsentrytype{\@glo@label}}% \ifcsundef{glolist@\@glo@type}% {% \PackageError{glossaries}% {Glossary type `\@glo@type' has not been defined}% {You need to define a new glossary type, before making entries in it}% }% {% \ifignoredglossary\@glo@type {% \ifx\@glo@desc\@glsnodesc \let\@glo@desc\@empty \fi }% {% }% \protected@edef\@glolist@{\csname glolist@\@glo@type\endcsname}% \expandafter\protected@xdef\csname glolist@\@glo@type\endcsname{% \@glolist@{\@glo@label},}% }% \gls@level=0\relax \ifx\@glo@parent\@empty \expandafter\gdef\csname glo@\@glo@label @parent\endcsname{}% \else \ifdefequal\@glo@label\@glo@parent% {% \PackageError{glossaries}{Entry `\@glo@label' can't be its own parent}{}% \def\@glo@parent{}% \expandafter\gdef\csname glo@\@glo@label @parent\endcsname{}% }% {% \ifglsentryexists{\@glo@parent}% {% \expandafter\protected@xdef\csname glo@\@glo@label @parent\endcsname{% \@glo@parent}% \gls@level=\csname glo@\@glo@parent @level\endcsname\relax \advance\gls@level by 1\relax \ifx\@glo@name\@glsnoname \expandafter\let\expandafter\@glo@name \csname glo@\@glo@parent @name\endcsname \ifx\@glo@plural\@gls@default@value \expandafter\let\expandafter\@glo@plural \csname glo@\@glo@parent @plural\endcsname \fi \fi }% {% \PackageError{glossaries}% {% Invalid parent `\@glo@parent' for entry `\@glo@label' - parent doesn't exist% }% {% Parent entries must be defined before their children% }% \def\@glo@parent{}% \expandafter\gdef\csname glo@\@glo@label @parent\endcsname{}% }% }% \fi \expandafter\xdef\csname glo@\@glo@label @level\endcsname{\number\gls@level}% \gls@assign@field{\@glo@name}{\@glo@label}{sortvalue}{\@glo@sort}% \letcs\@glo@sort{glo@\@glo@label @sortvalue}% \gls@assign@field{\@glo@name}{\@glo@label}{text}{\@glo@text}% \expandafter\gls@assign@field\expandafter {\csname glo@\@glo@label @text\endcsname\glspluralsuffix}% {\@glo@label}{plural}{\@glo@plural}% \expandafter\gls@assign@field\expandafter {\csname glo@\@glo@label @text\endcsname}% {\@glo@label}{first}{\@glo@first}% \ifx\@glo@first\@gls@default@value \expandafter\gls@assign@field\expandafter {\csname glo@\@glo@label @plural\endcsname}% {\@glo@label}{firstpl}{\@glo@firstplural}% \else \expandafter\gls@assign@field\expandafter {\csname glo@\@glo@label @first\endcsname\glspluralsuffix}% {\@glo@label}{firstpl}{\@glo@firstplural}% \fi \ifcsundef{@glotype@\@glo@type @counter}% {% \def\@glo@defaultcounter{\glscounter}% }% {% \letcs\@glo@defaultcounter{@glotype@\@glo@type @counter}% }% \gls@assign@field{\@glo@defaultcounter}{\@glo@label}{counter}{\@glo@counter}% \gls@assign@field{}{\@glo@label}{useri}{\@glo@useri}% \gls@assign@field{}{\@glo@label}{userii}{\@glo@userii}% \gls@assign@field{}{\@glo@label}{useriii}{\@glo@useriii}% \gls@assign@field{}{\@glo@label}{useriv}{\@glo@useriv}% \gls@assign@field{}{\@glo@label}{userv}{\@glo@userv}% \gls@assign@field{}{\@glo@label}{uservi}{\@glo@uservi}% \gls@assign@field{}{\@glo@label}{short}{\@glo@short}% \gls@assign@field{}{\@glo@label}{shortpl}{\@glo@shortpl}% \gls@assign@field{}{\@glo@label}{long}{\@glo@long}% \gls@assign@field{}{\@glo@label}{longpl}{\@glo@longpl}% \ifx\@glo@name\@glsnoname \@glsnoname \let\@gloname\@gls@default@value \fi \gls@assign@field{}{\@glo@label}{name}{\@glo@name}% \ifcsundef{glo@\@glo@label @numberlist}% {% \csxdef{glo@\@glo@label @numberlist}{% \noexpand\@gls@missingnumberlist{\@glo@label}}% }% {}% \@gls@storenonumberlist{\@glo@label}% \def\@glo@@desc{\@glo@first}% \ifx\@glo@desc\@glo@@desc \let\@glo@desc\@glo@first \fi \ifx\@glo@desc\@glsnodesc \@glsnodesc \let\@glodesc\@gls@default@value \fi \gls@assign@desc{\@glo@label}% \@gls@defsort{\@glo@type}{\@glo@label}% \def\@glo@@symbol{\@glo@text}% \ifx\@glo@symbol\@glo@@symbol \let\@glo@symbol\@glo@text \fi \gls@assign@field{\relax}{\@glo@label}{symbol}{\@glo@symbol}% \expandafter \gls@assign@field\expandafter {\csname glo@\@glo@label @symbol\endcsname} {\@glo@label}{symbolplural}{\@glo@symbolplural}% \expandafter\protected@xdef\csname glo@\@glo@label @flagfalse\endcsname{% \noexpand\global \noexpand\let\expandafter\noexpand \csname ifglo@\@glo@label @flag\endcsname\noexpand\iffalse }% \expandafter\protected@xdef\csname glo@\@glo@label @flagtrue\endcsname{% \noexpand\global \noexpand\let\expandafter\noexpand \csname ifglo@\@glo@label @flag\endcsname\noexpand\iftrue }% \csname glo@\@glo@label @flagfalse\endcsname \@glo@autosee \ifignoredglossary\@glo@type {% \csdef{glo@\@glo@label @index}{}% } {% \do@glo@storeentry{\@glo@label}% }% \@newglossaryentry@defcounters \@newglossaryentryposthook } \newcommand*{\@glo@autosee}{% \ifdefvoid\@glo@see{}% {% \protected@edef\@do@glssee{% \noexpand\@gls@fixbraces\noexpand\@glo@list\@glo@see\noexpand\@nil \noexpand\expandafter\noexpand\@glssee\noexpand\@glo@list{\@glo@label}}% \@do@glssee }% \@glo@autoseehook }% \newcommand*{\@glo@autoseehook}{} \newcommand*{\@newglossaryentryprehook}{} \newcommand*{\@newglossaryentryposthook}{} \newcommand*{\@newglossaryentry@defcounters}{} \newcommand*{\glsmoveentry}[2]{% \protected@edef\@glo@thislabel{\glsdetoklabel{#1}}% \protected@edef\glo@type{\csname glo@\@glo@thislabel @type\endcsname}% \def\glo@list{,}% \forglsentries[\glo@type]{\glo@label}% {% \ifdefequal\@glo@thislabel\glo@label {}{\protected@eappto\glo@list{\glo@label,}}% }% \cslet{glolist@\glo@type}{\glo@list}% \csdef{glo@\@glo@thislabel @type}{#2}% } \ifglsxindy \newcommand*{\@glossaryentryfield}{\string\\glossentry} \else \newcommand*{\@glossaryentryfield}{\string\glossentry} \fi \ifglsxindy \newcommand*{\@glossarysubentryfield}{% \string\\subglossentry} \else \newcommand*{\@glossarysubentryfield}{% \string\subglossentry} \fi \newcommand{\@glo@storeentry}[1]{% \protected@edef\@glo@esclabel{#1}% \@gls@checkmkidxchars\@glo@esclabel \protected@edef\@glo@sort{\csname glo@#1@sort\endcsname}% \@gls@checkmkidxchars\@glo@sort \@gls@checkmkidxchars\@glo@prefix \protected@edef\@glo@parent{\csname glo@#1@parent\endcsname}% \ifglsxindy \ifx\@glo@parent\@empty \expandafter\protected@xdef\csname glo@#1@index\endcsname{% (\string"\@glo@sort\string" % \string"\@glo@prefix\@glossaryentryfield{\@glo@esclabel}\string") % }% \else \expandafter\protected@xdef\csname glo@#1@index\endcsname{% \csname glo@\@glo@parent @index\endcsname (\string"\@glo@sort\string" % \string"\@glo@prefix\@glossarysubentryfield {\csname glo@#1@level\endcsname}{\@glo@esclabel}\string") % }% \fi \else \ifx\@glo@parent\@empty \@onelevel@sanitize\@glo@prefix \expandafter\protected@xdef\csname glo@#1@index\endcsname{% \@glo@sort\@gls@actualchar\@glo@prefix \@glossaryentryfield{\@glo@esclabel}% }% \else \expandafter\protected@xdef\csname glo@#1@index\endcsname{% \csname glo@\@glo@parent @index\endcsname\@gls@levelchar \@glo@sort\@gls@actualchar\@glo@prefix \@glossarysubentryfield {\csname glo@#1@level\endcsname}{\@glo@esclabel}% }% \fi \fi } \newcommand*{\@gls@if@measuring}[2]{% \ifmeasuring@ #1% \else #2% \fi } \let\gls@org@refstepcounter\refstepcounter \let\gls@org@label\label \newcommand{\gls@if@measuring}[2]{#2} \AtBeginDocument{% \@ifpackageloaded{amsmath}% {\let\gls@if@measuring\@gls@if@measuring}% {}% \let\gls@org@refstepcounter\refstepcounter \let\gls@org@label\label } \newcommand*\gls@ifnotmeasuring[1]{\glsifmeasuring{}{#1}} \newcommand*{\glsifmeasuring}{\gls@if@measuring} \newcommand*{\gls@local@stepcounter}[1]{% \ifcsdef{c@#1}% {% \epreto\gls@measuring@reset{\noexpand\setcounter{#1}{\number\value{#1}}}% \expandafter\advance\csname c@#1\endcsname by \@ne }% {}% } \newcommand{\gls@start@measuring}{% \ifx\glsifmeasuring\@firstoftwo \else \let\gls@org@target\glstarget \let\gls@org@link\@glslink \def\gls@measuring@reset{}% \fi \let\glsifmeasuring\@firstoftwo \let\refstepcounter\gls@local@stepcounter \let\label\@gobble \let\glstarget\@secondoftwo \let\@glslink\@secondoftwo } \ExplSyntaxOn \tl_if_exist:NT \l_datatool_measure_hook_tl { \tl_put_right:Nn \l_datatool_measure_hook_tl { \gls@start@measuring } } \ExplSyntaxOff \newcommand{\gls@stop@measuring}{% \renewcommand*{\glsifmeasuring}{\gls@if@measuring}% \let\refstepcounter\gls@org@refstepcounter \let\label\gls@org@label \let\glstarget\gls@org@target \let\@glslink\gls@org@link \gls@measuring@reset \def\gls@measuring@reset{}% } \newcommand{\glsmeasureheight}[2]{% \settoheight{#1}{\gls@start@measuring#2\gls@stop@measuring}% } \newcommand{\glsmeasuredepth}[2]{% \settodepth{#1}{\gls@start@measuring#2\gls@stop@measuring}% } \newcommand{\glsmeasurewidth}[2]{% \settowidth{#1}{\gls@start@measuring#2\gls@stop@measuring}% } \def\@gls@patchtabularx#1\hbox#2#3!!{% \def\TX@trial##1{#1\hbox{\gls@start@measuring#2\gls@stop@measuring}#3}% } \newcommand*\glspatchtabularx{% \ifdef\TX@trial {% \expandafter\@gls@patchtabularx\TX@trial{##1}!!% \let\glspatchtabularx\relax }% {}% } \newcommand*{\glsreset}[1]{% \gls@ifnotmeasuring {% \glsdoifexists{#1}% {% \@glsreset{#1}% }% }% } \newcommand*{\glslocalreset}[1]{% \gls@ifnotmeasuring {% \glsdoifexists{#1}% {% \@glslocalreset{#1}% }% }% } \newcommand*{\glsunset}[1]{% \gls@ifnotmeasuring {% \glsdoifexists{#1}% {% \@glsunset{#1}% }% }% } \newcommand*{\glslocalunset}[1]{% \gls@ifnotmeasuring {% \glsdoifexists{#1}% {% \@glslocalunset{#1}% }% }% } \newcommand*{\@glslocalunset}{\@@glslocalunset} \newcommand*{\@@glslocalunset}[1]{% \expandafter\let\csname ifglo@\glsdetoklabel{#1}@flag\endcsname\iftrue } \newcommand*{\@glsunset}{\@@glsunset} \newcommand*{\@@glsunset}[1]{% \expandafter\global\csname glo@\glsdetoklabel{#1}@flagtrue\endcsname } \newcommand*{\@glslocalreset}{\@@glslocalreset} \newcommand*{\@@glslocalreset}[1]{% \expandafter\let\csname ifglo@\glsdetoklabel{#1}@flag\endcsname\iffalse } \newcommand*{\@glsreset}{\@@glsreset} \newcommand*{\@@glsreset}[1]{% \expandafter\global\csname glo@\glsdetoklabel{#1}@flagfalse\endcsname } \newcommand*{\glsresetall}[1][\@glo@types]{% \forallglsentries[#1]{\@glsentry}% {% \glsreset{\@glsentry}% }% } \newcommand*{\glslocalresetall}[1][\@glo@types]{% \forallglsentries[#1]{\@glsentry}% {% \glslocalreset{\@glsentry}% }% } \newcommand*{\glsunsetall}[1][\@glo@types]{% \forallglsentries[#1]{\@glsentry}% {% \glsunset{\@glsentry}% }% } \newcommand*{\glslocalunsetall}[1][\@glo@types]{% \forallglsentries[#1]{\@glsentry}% {% \glslocalunset{\@glsentry}% }% } \newcommand*{\@@newglossaryentry@defcounters}{% \csdef{glo@\@glo@label @currcount}{0}% \csdef{glo@\@glo@label @prevcount}{0}% } \newif\ifglsresetcurrcount \glsresetcurrcountfalse \newcommand*{\glsenableentrycount}{% \let\@newglossaryentry@defcounters\@@newglossaryentry@defcounters \renewcommand*{\gls@defdocnewglossaryentry}{% \renewcommand*\newglossaryentry[2]{% \PackageError{glossaries}{\string\newglossaryentry\space may only be used in the preamble when entry counting has been activated}{If you use \string\glsenableentrycount\space you must place all entry definitions in the preamble not in the document environment}% }% }% \newcommand*{\glsentrycurrcount}[1]{% \ifcsundef{glo@\glsdetoklabel{##1}@currcount}% {0}{\@gls@entry@field{##1}{currcount}}% }% \newcommand*{\glsentryprevcount}[1]{% \ifcsundef{glo@\glsdetoklabel{##1}@prevcount}% {0}{\@gls@entry@field{##1}{prevcount}}% }% \renewcommand*{\@glsunset}[1]{% \@@glsunset{##1}% \@gls@increment@currcount{##1}% }% \renewcommand*{\@glslocalunset}[1]{% \@@glslocalunset{##1}% \@gls@local@increment@currcount{##1}% }% \renewcommand*{\@glsreset}[1]{% \@@glsreset{##1}% \ifglsresetcurrcount\csgdef{glo@\glsdetoklabel{##1}@currcount}{0}\fi }% \renewcommand*{\@glslocalreset}[1]{% \@@glslocalreset{##1}% \ifglsresetcurrcount\csdef{glo@\glsdetoklabel{##1}@currcount}{0}\fi }% \def\@cgls@##1##2[##3]{% \ifnum\glsentryprevcount{##2}=1\relax \cglsformat{##2}{##3}% \glsunset{##2}% \else \@gls@{##1}{##2}[##3]% \fi }% \def\@cglspl@##1##2[##3]{% \ifnum\glsentryprevcount{##2}=1\relax \cglsplformat{##2}{##3}% \glsunset{##2}% \else \@glspl@{##1}{##2}[##3]% \fi }% \def\@cGls@##1##2[##3]{% \ifnum\glsentryprevcount{##2}=1\relax \cGlsformat{##2}{##3}% \glsunset{##2}% \else \@Gls@{##1}{##2}[##3]% \fi }% \def\@cGlspl@##1##2[##3]{% \ifnum\glsentryprevcount{##2}=1\relax \cGlsplformat{##2}{##3}% \glsunset{##2}% \else \@Glspl@{##1}{##2}[##3]% \fi }% \AtEndDocument{\@gls@write@entrycounts}% \renewcommand*{\@gls@entry@count}[2]{% \csgdef{glo@\glsdetoklabel{##1}@prevcount}{##2}% }% \let\glsenableentrycount\relax } \@onlypreamble\glsenableentrycount \newcommand*{\@gls@increment@currcount}[1]{% \csxdef{glo@\glsdetoklabel{#1}@currcount}{% \number\numexpr\glsentrycurrcount{#1}+1}% } \newcommand*{\@gls@local@increment@currcount}[1]{% \csedef{glo@\glsdetoklabel{#1}@currcount}{% \number\numexpr\glsentrycurrcount{#1}+1}% } \newcommand*{\@gls@write@entrycounts}{% \immediate\write\@auxout {\string\providecommand*{\string\@gls@entry@count}[2]{}}% \forallglsentries{\@glsentry}{% \ifglsused{\@glsentry}% {\immediate\write\@auxout {\string\@gls@entry@count{\@glsentry}{\glsentrycurrcount{\@glsentry}}}}% {}% }% } \newcommand*{\@gls@entry@count}[2]{} \newrobustcmd*{\cgls}{\@gls@hyp@opt\@cgls} \newcommand*{\@cgls}[2][]{% \new@ifnextchar[{\@cgls@{#1}{#2}}{\@cgls@{#1}{#2}[]}% } \def\@cgls@#1#2[#3]{% \GlossariesWarning{\string\cgls\space is defaulting to \string\gls\space since you haven't enabled entry counting}% \@gls@{#1}{#2}[#3]% } \newcommand*{\cglsformat}[2]{% \ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}#2% } \newrobustcmd*{\cGls}{\@gls@hyp@opt\@cGls} \glsmfuaddmap{\cgls}{\cGls} \newcommand*{\@cGls}[2][]{% \new@ifnextchar[{\@cGls@{#1}{#2}}{\@cGls@{#1}{#2}[]}% } \def\@cGls@#1#2[#3]{% \GlossariesWarning{\string\cGls\space is defaulting to \string\Gls\space since you haven't enabled entry counting}% \@Gls@{#1}{#2}[#3]% } \newcommand*{\cGlsformat}[2]{% \ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}#2% } \newrobustcmd*{\cglspl}{\@gls@hyp@opt\@cglspl} \newcommand*{\@cglspl}[2][]{% \new@ifnextchar[{\@cglspl@{#1}{#2}}{\@cglspl@{#1}{#2}[]}% } \def\@cglspl@#1#2[#3]{% \GlossariesWarning{\string\cglspl\space is defaulting to \string\glspl\space since you haven't enabled entry counting}% \@glspl@{#1}{#2}[#3]% } \newcommand*{\cglsplformat}[2]{% \ifglshaslong{#1}{\glsentrylongpl{#1}}{\glsentryfirstplural{#1}}#2% } \newrobustcmd*{\cGlspl}{\@gls@hyp@opt\@cGlspl} \glsmfuaddmap{\cglspl}{\cGlspl} \newcommand*{\@cGlspl}[2][]{% \new@ifnextchar[{\@cGlspl@{#1}{#2}}{\@cGlspl@{#1}{#2}[]}% } \def\@cGlspl@#1#2[#3]{% \GlossariesWarning{\string\cGlspl\space is defaulting to \string\Glspl\space since you haven't enabled entry counting}% \@Glspl@{#1}{#2}[#3]% } \newcommand*{\cGlsplformat}[2]{% \ifglshaslong{#1}{\Glsentrylongpl{#1}}{\Glsentryfirstplural{#1}}#2% } \newcommand*{\loadglsentries}[2][\@gls@default]{% \let\@gls@default\glsdefaulttype \def\glsdefaulttype{#1}\input{#2}% \let\glsdefaulttype\@gls@default } \@onlypreamble{\loadglsentries} \newcommand*{\glstextformat}[1]{#1} \newcommand*{\glsentryfmt}{\glsgenentryfmt} \newcommand*{\glsgenentryfmt}{% \ifdefempty\glscustomtext {% \glsifplural {% \glscapscase {% \ifglsused\glslabel {% \glsentryplural{\glslabel}\glsinsert }% {% \glsentryfirstplural{\glslabel}\glsinsert }% }% {% \ifglsused\glslabel {% \Glsentryplural{\glslabel}\glsinsert }% {% \Glsentryfirstplural{\glslabel}\glsinsert }% }% {% \ifglsused\glslabel {% \glsuppercase{\glsentryplural{\glslabel}\glsinsert}% }% {% \glsuppercase{\glsentryfirstplural{\glslabel}\glsinsert}% }% }% }% {% \glscapscase {% \ifglsused\glslabel {% \glsentrytext{\glslabel}\glsinsert }% {% \glsentryfirst{\glslabel}\glsinsert }% }% {% \ifglsused\glslabel {% \Glsentrytext{\glslabel}\glsinsert }% {% \Glsentryfirst{\glslabel}\glsinsert }% }% {% \ifglsused\glslabel {% \glsuppercase{\glsentrytext{\glslabel}\glsinsert}% }% {% \glsuppercase{\glsentryfirst{\glslabel}\glsinsert}% }% }% }% }% {% \glscustomtext\glsinsert }% } \newcommand*{\glsgenacfmt}{% \ifdefempty\glscustomtext {% \ifglsused\glslabel {% \glsifplural {% \glscapscase {% \acronymfont{\glsentryshortpl{\glslabel}}\glsinsert }% {% \acronymfont{\Glsentryshortpl{\glslabel}}\glsinsert }% {% \glsuppercase {\acronymfont{\glsentryshortpl{\glslabel}}\glsinsert}% }% }% {% \glscapscase {% \acronymfont{\glsentryshort{\glslabel}}\glsinsert }% {% \acronymfont{\Glsentryshort{\glslabel}}\glsinsert }% {% \glsuppercase {\acronymfont{\glsentryshort{\glslabel}}\glsinsert}% }% }% }% {% \glsifplural {% \glscapscase {% \genplacrfullformat{\glslabel}{\glsinsert}% }% {% \Genplacrfullformat{\glslabel}{\glsinsert}% }% {% \glsuppercase {\genplacrfullformat{\glslabel}{\glsinsert}}% }% }% {% \glscapscase {% \genacrfullformat{\glslabel}{\glsinsert}% }% {% \Genacrfullformat{\glslabel}{\glsinsert}% }% {% \glsuppercase {\genacrfullformat{\glslabel}{\glsinsert}}% }% }% }% }% {% \glscustomtext }% } \newcommand*{\genacrfullformat}[2]{% \glsentrylong{#1}#2\space (\protect\firstacronymfont{\glsentryshort{#1}})% } \newcommand*{\Genacrfullformat}[2]{% \protected@edef\gls@text{\genacrfullformat{#1}{#2}}% \expandafter\glssentencecase\expandafter{\gls@text}% } \newcommand*{\genplacrfullformat}[2]{% \glsentrylongpl{#1}#2\space (\protect\firstacronymfont{\glsentryshortpl{#1}})% } \newcommand*{\Genplacrfullformat}[2]{% \protected@edef\gls@text{\genplacrfullformat{#1}{#2}}% \expandafter\glssentencecase\expandafter{\gls@text}% } \define@key{glslink}{counter}{% \ifcsundef{c@#1}% {% \PackageError{glossaries}% {There is no counter called `#1'}% {% The counter key should have the name of a valid counter as its value% }% }% {% \def\@gls@counter{#1}% }% } \define@key{glslink}{format}{% \def\@glsnumberformat{#1}} \newcommand*{\@gls@glslink@hyper@update@hook}{} \define@boolkey{glslink}{hyper}[true]{\@gls@glslink@hyper@update@hook} \ifdef{\hyperlink}{\KV@glslink@hypertrue}{\KV@glslink@hyperfalse} \newcommand*{\@gls@save@glslocal}{% \let\if@org@KV@glslink@local\ifKV@glslink@local } \newcommand*{\@gls@restore@glslocal}{% \ifKV@glslink@local \let\@gls@do@glsunset\glslocalunset \else \let\@gls@do@glsunset\glsunset \fi \let\ifKV@glslink@local\if@org@KV@glslink@local } \newcommand*{\@gls@do@glsunset}[1]{\glsunset{#1}} \define@boolkey{glslink}{local}[true]{} \@gls@save@glslocal \newcommand*{\glslinkvar}[3]{#1} \newcommand*{\@gls@hyp@opt}[1]{% \let\glslinkvar\@firstofthree \let\@gls@hyp@opt@cs#1\relax \@ifstar{\s@gls@hyp@opt}% {\@ifnextchar+{\@firstoftwo{\p@gls@hyp@opt}}{#1}}% } \newcommand*{\s@gls@hyp@opt}[1][]{% \let\glslinkvar\@secondofthree \@gls@hyp@opt@cs[hyper=false,#1]} \newcommand*{\p@gls@hyp@opt}[1][]{% \let\glslinkvar\@thirdofthree \@gls@hyp@opt@cs[hyper=true,#1]} \newrobustcmd*{\glslink}{% \@gls@hyp@opt\@gls@@link } \newcommand*{\@gls@@link}[3][]{% \glsdoifexistsordo{#2}% {% \let\do@gls@link@checkfirsthyper\relax \@gls@link[#1]{#2}{#3}% }{% \glstextformat{#3}% }% \glspostlinkhook } \newrobustcmd*{\Glslink}{% \@gls@hyp@opt\@Gls@@link } \newcommand*{\@Gls@@link}[3][]{% \@gls@@link[#1]{#2}{\glssentencecase{#3}}% } \glsmfuaddmap{\glslink}{\Glslink} \newcommand*{\glspostlinkhook}{} \newcommand*{\@gls@link@checkfirsthyper}{% \ifglsused{\glslabel}% {% }% {% \gls@checkisacronymlist\glstype \ifglshyperfirst \if@glsisacronymlist \ifglsacrfootnote \KV@glslink@hyperfalse \fi \fi \else \KV@glslink@hyperfalse \fi }% \glslinkcheckfirsthyperhook } \newcommand*{\glslinkcheckfirsthyperhook}{} \newcommand*{\glslinkpostsetkeys}{} \newcommand{\glsifhyperon}[2]{\ifKV@glslink@hyper#1\else#2\fi} \newcommand*{\do@glsdisablehyperinlist}{% \expandafter\DTLifinlist\expandafter{\glstype}{\@gls@nohyperlist}% {\KV@glslink@hyperfalse}{}% } \newcommand*{\@gls@setdefault@glslink@opts}{} \def\@gls@link[#1]#2#3{% \leavevmode \protected@edef\glslabel{\glsdetoklabel{#2}}% \def\@gls@link@opts{#1}% \let\@gls@link@label\glslabel \def\@glsnumberformat{glsnumberformat}% \protected@edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}% \protected@edef\glstype{\csname glo@\glslabel @type\endcsname}% \let\org@ifKV@glslink@hyper\ifKV@glslink@hyper \@gls@save@glslocal \@gls@setdefault@glslink@opts \do@glsdisablehyperinlist \do@gls@link@checkfirsthyper \setkeys{glslink}{#1}% \glslinkpostsetkeys \@gls@saveentrycounter \@gls@setsort{\glslabel}% \glsencapwrcontent{\@do@wrglossary{#2}}% \ifKV@glslink@hyper \@glslink{\glolinkprefix\glslabel}{\glstextformat{#3}}% \else \glsdonohyperlink{\glolinkprefix\glslabel}{\glstextformat{#3}}% \fi \let\ifKV@glslink@hyper\org@ifKV@glslink@hyper \@gls@restore@glslocal } \newcommand*{\glsencapwrcontent}[1]{{#1}} \newcommand*{\glolinkprefix}{glo:} \def\glsentrycounter{\glscounter}% \newcommand*{\@gls@saveentrycounter}{% \def\@gls@Hcounter{}% \ifthenelse{\equal{\@gls@counter}{equation}}% { \ifcsundef{xatlevel@}% {% \edef\theglsentrycounter{\expandafter\noexpand \csname the\@gls@counter\endcsname}% }% {% \ifx\xatlevel@\@empty \edef\theglsentrycounter{\expandafter\noexpand \csname the\@gls@counter\endcsname}% \else \savecounters@ \advance\c@equation by 1\relax \edef\theglsentrycounter{\csname the\@gls@counter\endcsname}% \ifcsundef{theH\@gls@counter}% {% \def\@gls@Hcounter{\theglsentrycounter}% }% {% \def\@gls@Hcounter{\csname theH\@gls@counter\endcsname}% }% \protected@edef\theHglsentrycounter{\@gls@Hcounter}% \restorecounters@ \fi }% }% {% \edef\theglsentrycounter{\expandafter\noexpand \csname the\@gls@counter\endcsname}% }% \ifx\@gls@Hcounter\@empty \ifcsundef{theH\@gls@counter}% {% \def\theHglsentrycounter{\theglsentrycounter}% }% {% \protected@edef\theHglsentrycounter{\expandafter\noexpand \csname theH\@gls@counter\endcsname}% }% \fi } \def\@set@glo@numformat#1#2#3#4{% \expandafter\@glo@check@mkidxrangechar#3\@nil \protected@edef#1{% \@glo@prefix setentrycounter[#4]{#2}% \expandafter\string\csname\@glo@suffix\endcsname }% \@gls@checkmkidxchars#1% } \def\@glo@check@mkidxrangechar#1#2\@nil{% \if#1(\relax \def\@glo@prefix{(}% \if\relax#2\relax \def\@glo@suffix{glsnumberformat}% \else \def\@glo@suffix{#2}% \fi \else \if#1)\relax \def\@glo@prefix{)}% \if\relax#2\relax \def\@glo@suffix{glsnumberformat}% \else \def\@glo@suffix{#2}% \fi \else \def\@glo@prefix{}\def\@glo@suffix{#1#2}% \fi \fi} \newcommand*{\@gls@escbsdq}[1]{% \def\@gls@checkedmkidx{}% \let\gls@xdystring=#1\relax \@onelevel@sanitize\gls@xdystring \edef\do@gls@xdycheckbackslash{% \noexpand\@gls@xdycheckbackslash\gls@xdystring\noexpand\@nil \@backslashchar\@backslashchar\noexpand\null}% \do@gls@xdycheckbackslash \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}% \def\@gls@checkedmkidx{}% \expandafter\@gls@xdycheckquote\gls@xdystring\@nil""\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}% \ifglsesclocations \@for\@gls@tmp:=\gls@protected@pagefmts\do {% \edef\@gls@sanitized@tmp{\expandafter\@gobble\string\\\expandonce\@gls@tmp}% \@onelevel@sanitize\@gls@sanitized@tmp \edef\gls@dosubst{% \noexpand\DTLsubstituteall\noexpand\gls@xdystring {\@gls@sanitized@tmp}{\expandonce\@gls@tmp}% }% \gls@dosubst }% \fi \let#1=\gls@xdystring } \newcommand{\@gls@checkmkidxchars}[1]{% \ifglsxindy \@gls@escbsdq{#1}% \else \def\@gls@checkedmkidx{}% \expandafter\@gls@checkquote#1\@nil""\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checkescquote#1\@nil\"\"\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checkescactual#1\@nil\?\?\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checkactual#1\@nil??\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checkbar#1\@nil||\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checkescbar#1\@nil\|\|\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checklevel#1\@nil!!\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checkesclevel#1\@nil\!\!\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \edef\@do@gls@checkesc{% \noexpand\@gls@checkesc\expandonce{#1}\noexpand\@nil \@backslashchar\@backslashchar\noexpand\null }% \@do@gls@checkesc \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \fi } \def\@gls@updatechecked#1\@nil#2{\def#2{#1}} \newtoks\@gls@tmpb \def\@gls@checkquote#1"#2"#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkquote{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@quotechar\@gls@quotechar\@gls@quotechar}% \def\@@gls@checkquote{\@gls@checkquote#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@quotechar}% \ifx\null#3\null \def\@@gls@checkquote{\@gls@checkquote#2""\null}% \else \def\@@gls@checkquote{\@gls@checkquote#2"#3\null}% \fi \fi \@@gls@checkquote } \def\@gls@checkescquote#1\"#2\"#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkescquote{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@quotechar \@gls@quotechar\string\"\@gls@quotechar}% \def\@@gls@checkescquote{\@gls@checkescquote#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@quotechar}% \ifx\null#3\null \def\@@gls@checkescquote{\@gls@checkescquote#2\"\"\null}% \else \def\@@gls@checkescquote{\@gls@checkescquote#2\"#3\null}% \fi \fi \@@gls@checkescquote } \def\@gls@checkescactual#1\?#2\?#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkescactual{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@actualchar \@gls@quotechar\string\"\@gls@actualchar}% \def\@@gls@checkescactual{\@gls@checkescactual#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@actualchar}% \ifx\null#3\null \def\@@gls@checkescactual{\@gls@checkescactual#2\?\?\null}% \else \def\@@gls@checkescactual{\@gls@checkescactual#2\?#3\null}% \fi \fi \@@gls@checkescactual } \def\@gls@checkescbar#1\|#2\|#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkescbar{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@encapchar \@gls@quotechar\string\"\@gls@encapchar}% \def\@@gls@checkescbar{\@gls@checkescbar#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@encapchar}% \ifx\null#3\null \def\@@gls@checkescbar{\@gls@checkescbar#2\|\|\null}% \else \def\@@gls@checkescbar{\@gls@checkescbar#2\|#3\null}% \fi \fi \@@gls@checkescbar } \def\@gls@checkesclevel#1\!#2\!#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkesclevel{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@levelchar \@gls@quotechar\string\"\@gls@levelchar}% \def\@@gls@checkesclevel{\@gls@checkesclevel#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@levelchar}% \ifx\null#3\null \def\@@gls@checkesclevel{\@gls@checkesclevel#2\!\!\null}% \else \def\@@gls@checkesclevel{\@gls@checkesclevel#2\!#3\null}% \fi \fi \@@gls@checkesclevel } \def\@gls@checkbar#1|#2|#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkbar{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@encapchar\@gls@quotechar\@gls@encapchar}% \def\@@gls@checkbar{\@gls@checkbar#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@encapchar}% \ifx\null#3\null \def\@@gls@checkbar{\@gls@checkbar#2||\null}% \else \def\@@gls@checkbar{\@gls@checkbar#2|#3\null}% \fi \fi \@@gls@checkbar } \def\@gls@checklevel#1!#2!#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checklevel{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@levelchar\@gls@quotechar\@gls@levelchar}% \def\@@gls@checklevel{\@gls@checklevel#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@levelchar}% \ifx\null#3\null \def\@@gls@checklevel{\@gls@checklevel#2!!\null}% \else \def\@@gls@checklevel{\@gls@checklevel#2!#3\null}% \fi \fi \@@gls@checklevel } \def\@gls@checkactual#1?#2?#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkactual{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@actualchar\@gls@quotechar\@gls@actualchar}% \def\@@gls@checkactual{\@gls@checkactual#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@actualchar}% \ifx\null#3\null \def\@@gls@checkactual{\@gls@checkactual#2??\null}% \else \def\@@gls@checkactual{\@gls@checkactual#2?#3\null}% \fi \fi \@@gls@checkactual } \bgroup \catcode`\|0\relax \catcode`\\12\relax |gdef|@gls@checkesc#1\#2\#3|null{% |@gls@tmpb=|expandafter{|@gls@checkedmkidx}% |toks@={#1}% |ifx|null#2|null |ifx|null#3|null |edef|@gls@checkedmkidx{|the|@gls@tmpb|the|toks@}% |def|@@gls@checkesc{|relax}% |else |edef|@gls@checkedmkidx{|the|@gls@tmpb|the|toks@ |@gls@quotechar|@backslashchar|@gls@quotechar|@backslashchar}% |def|@@gls@checkesc{|@gls@checkesc#3|null}% |fi |else |edef|@gls@checkedmkidx{|the|@gls@tmpb|the|toks@ |@gls@quotechar|@backslashchar}% |ifx|null#3|null |def|@@gls@checkesc{|@gls@checkesc#2\\|null}% |else |def|@@gls@checkesc{|@gls@checkesc#2\#3|null}% |fi |fi |@@gls@checkesc } |egroup \def\@gls@xdycheckquote#1"#2"#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@xdycheckquote{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \string\"\string\"}% \def\@@gls@xdycheckquote{\@gls@xdycheckquote#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \string\"}% \ifx\null#3\null \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2""\null}% \else \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2"#3\null}% \fi \fi \@@gls@xdycheckquote } \edef\def@gls@xdycheckbackslash{% \noexpand\def\noexpand\@gls@xdycheckbackslash##1\@backslashchar ##2\@backslashchar##3\noexpand\null{% \noexpand\@gls@tmpb=\noexpand\expandafter {\noexpand\@gls@checkedmkidx}% \noexpand\toks@={##1}% \noexpand\ifx\noexpand\null##2\noexpand\null \noexpand\ifx\noexpand\null##3\noexpand\null \noexpand\edef\noexpand\@gls@checkedmkidx{% \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}% \noexpand\def\noexpand\@@gls@xdycheckbackslash{\relax}% \noexpand\else \noexpand\edef\noexpand\@gls@checkedmkidx{% \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@ \@backslashchar\@backslashchar\@backslashchar\@backslashchar}% \noexpand\def\noexpand\@@gls@xdycheckbackslash{% \noexpand\@gls@xdycheckbackslash##3\noexpand\null}% \noexpand\fi \noexpand\else \noexpand\edef\noexpand\@gls@checkedmkidx{% \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@ \@backslashchar\@backslashchar}% \noexpand\ifx\noexpand\null##3\noexpand\null \noexpand\def\noexpand\@@gls@xdycheckbackslash{% \noexpand\@gls@xdycheckbackslash##2\@backslashchar \@backslashchar\noexpand\null}% \noexpand\else \noexpand\def\noexpand\@@gls@xdycheckbackslash{% \noexpand\@gls@xdycheckbackslash##2\@backslashchar ##3\noexpand\null}% \noexpand\fi \noexpand\fi \noexpand\@@gls@xdycheckbackslash }% } \def@gls@xdycheckbackslash \newlength\gls@tmplen \newcommand*{\glsdohypertarget}[2]{% \glsdoshowtarget{#1}% {% \glsmeasureheight{\gls@tmplen}{#2}% \glsdohypertargethook{#1}{#2}% \raisebox{\gls@tmplen}{\hypertarget{#1}{}}% #2% }% } \newcommand*{\glsdohypertargethook}[2]{} \NewDocumentCommand\glslabelhypertarget{mm}{% \protected@write\@auxout {\glslabelhypertargetdefs}% {% \string\newlabel {\glslabelhypertargetprefix#1}% {% {\glslabelhypertargetvalue}{\thepage}{#2}{#1}{}% }% }% } \ExplSyntaxOn \newcommand\glslabelhypertargetvalue{ \bool_lazy_and:nnT { \tl_if_exist_p:N \glscurrententrylabel } { \bool_not_p:n { \tl_if_empty_p:N \glscurrententrylabel } } { \glsentryname \glscurrententrylabel } } \ExplSyntaxOff \newcommand*\glslabelhypertargetprefix{} \newcommand*\glslabelhypertargetdefs{% \let\glossentryname\glsentryname \let\glossentrydesc\glsentrydesc \let\glossentrysymbol\glsentrysymbol \let\Glossentryname\glsentryname \let\Glossentrydesc\glsentrydesc \let\Glossentrysymbol\glsentrysymbol \let\glossentrynameother\@gls@entry@field } \newcommand*{\glsdohyperlink}[2]{% \glsdoshowtarget{#1}% {% \glsdohyperlinkhook{#1}{#2}% \hyperlink{#1}{#2}% }% } \newcommand*{\glsdohyperlinkhook}[2]{} \newcommand*{\glsdonohyperlink}[2]{#2} \ifcsundef{hyperlink}% {% \let\@glslink\glsdonohyperlink }% {% \let\@glslink\glsdohyperlink } \ifcsundef{hypertarget}% {% \let\@glstarget\@secondoftwo }% {% \let\@glstarget\glsdohypertarget } \newcommand{\glsdisablehyper}{% \KV@glslink@hyperfalse \let\@glslink\glsdonohyperlink \let\@glstarget\@secondoftwo } \newcommand{\glsenablehyper}{% \KV@glslink@hypertrue \let\@glslink\glsdohyperlink \let\@glstarget\glsdohypertarget } \providecommand{\@firstofthree}[3]{#1} \providecommand{\@secondofthree}[3]{#2} \newrobustcmd*{\gls}{\@gls@hyp@opt\@gls} \newcommand*{\@gls}[2][]{% \new@ifnextchar[{\@gls@{#1}{#2}}{\@gls@{#1}{#2}[]}% } \def\@gls@#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree \let\glscustomtext\@empty \def\glsinsert{#3}% \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}% \@gls@link[#1]{#2}{\@glo@text}% \@gls@do@glsunset{#2}% }% \glspostlinkhook } \newrobustcmd*{\Gls}{\@gls@hyp@opt\@Gls} \glsmfuaddmap{\gls}{\Gls} \newcommand*{\@Gls}[2][]{% \new@ifnextchar[{\@Gls@{#1}{#2}}{\@Gls@{#1}{#2}[]}% } \def\@Gls@#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree \let\glscustomtext\@empty \def\glsinsert{#3}% \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}% \@gls@link[#1]{#2}{\@glo@text}% \@gls@do@glsunset{#2}% }% \glspostlinkhook } \newrobustcmd*{\GLS}{\@gls@hyp@opt\@GLS} \glsmfublocker{\GLS} \newcommand*{\@GLS}[2][]{% \new@ifnextchar[{\@GLS@{#1}{#2}}{\@GLS@{#1}{#2}[]}% } \def\@GLS@#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper \let\glsifplural\@secondoftwo \let\glscapscase\@thirdofthree \let\glscustomtext\@empty \def\glsinsert{#3}% \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}% \@gls@link[#1]{#2}{\@glo@text}% \@gls@do@glsunset{#2}% }% \glspostlinkhook } \newrobustcmd*{\glspl}{\@gls@hyp@opt\@glspl} \newcommand*{\@glspl}[2][]{% \new@ifnextchar[{\@glspl@{#1}{#2}}{\@glspl@{#1}{#2}[]}% } \def\@glspl@#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree \let\glscustomtext\@empty \def\glsinsert{#3}% \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}% \@gls@link[#1]{#2}{\@glo@text}% \@gls@do@glsunset{#2}% }% \glspostlinkhook } \newrobustcmd*{\Glspl}{\@gls@hyp@opt\@Glspl} \glsmfuaddmap{\glspl}{\Glspl} \newcommand*{\@Glspl}[2][]{% \new@ifnextchar[{\@Glspl@{#1}{#2}}{\@Glspl@{#1}{#2}[]}% } \def\@Glspl@#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree \let\glscustomtext\@empty \def\glsinsert{#3}% \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}% \@gls@link[#1]{#2}{\@glo@text}% \@gls@do@glsunset{#2}% }% \glspostlinkhook } \newrobustcmd*{\GLSpl}{\@gls@hyp@opt\@GLSpl} \glsmfublocker{\GLSpl} \newcommand*{\@GLSpl}[2][]{% \new@ifnextchar[{\@GLSpl@{#1}{#2}}{\@GLSpl@{#1}{#2}[]}% } \def\@GLSpl@#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree \let\glscustomtext\@empty \def\glsinsert{#3}% \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}% \@gls@link[#1]{#2}{\@glo@text}% \@gls@do@glsunset{#2}% }% \glspostlinkhook } \newrobustcmd*{\glsdisp}{\@gls@hyp@opt\@glsdisp} \newcommand*{\@glsdisp}[3][]{% \glsdoifexists{#2}{% \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree \def\glscustomtext{#3}% \def\glsinsert{}% \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}% \@gls@link[#1]{#2}{\@glo@text}% \@gls@do@glsunset{#2}% }% \glspostlinkhook } \newrobustcmd*{\Glsdisp}{\@gls@hyp@opt\@Glsdisp} \newcommand*{\@Glsdisp}[3][]{% \@glsdisp[#1]{#2}{\glssentencecase{#3}}% } \glsmfuaddmap{\glsdisp}{\Glsdisp} \newcommand*{\@gls@link@nocheckfirsthyper}{} \newcommand{\@gls@field@link}[3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \@gls@link[#1]{#2}{#3}% }% \glspostlinkhook } \newrobustcmd*{\glstext}{\@gls@hyp@opt\@glstext} \newcommand*{\@glstext}[2][]{% \new@ifnextchar[{\@glstext@{#1}{#2}}{\@glstext@{#1}{#2}[]}} \def\@glstext@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentrytext{#2}#3}% } \newrobustcmd*{\GLStext}{\@gls@hyp@opt\@GLStext} \glsmfublocker{\GLStext} \newcommand*{\@GLStext}[2][]{% \new@ifnextchar[{\@GLStext@{#1}{#2}}{\@GLStext@{#1}{#2}[]}} \def\@GLStext@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrytext{#2}#3}}% } \newrobustcmd*{\Glstext}{\@gls@hyp@opt\@Glstext} \glsmfuaddmap{\glstext}{\Glstext} \newcommand*{\@Glstext}[2][]{% \new@ifnextchar[{\@Glstext@{#1}{#2}}{\@Glstext@{#1}{#2}[]}} \def\@Glstext@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentrytext{#2}#3}% } \newrobustcmd*{\glsfirst}{\@gls@hyp@opt\@glsfirst} \newcommand*{\@glsfirst}[2][]{% \new@ifnextchar[{\@glsfirst@{#1}{#2}}{\@glsfirst@{#1}{#2}[]}} \def\@glsfirst@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentryfirst{#2}#3}% } \newrobustcmd*{\Glsfirst}{\@gls@hyp@opt\@Glsfirst} \glsmfuaddmap{\glsfirst}{\Glsfirst} \newcommand*{\@Glsfirst}[2][]{% \new@ifnextchar[{\@Glsfirst@{#1}{#2}}{\@Glsfirst@{#1}{#2}[]}} \def\@Glsfirst@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentryfirst{#2}#3}% } \newrobustcmd*{\GLSfirst}{\@gls@hyp@opt\@GLSfirst} \glsmfublocker{\GLSfirst} \newcommand*{\@GLSfirst}[2][]{% \new@ifnextchar[{\@GLSfirst@{#1}{#2}}{\@GLSfirst@{#1}{#2}[]}} \def\@GLSfirst@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryfirst{#2}#3}}% } \newrobustcmd*{\glsplural}{\@gls@hyp@opt\@glsplural} \newcommand*{\@glsplural}[2][]{% \new@ifnextchar[{\@glsplural@{#1}{#2}}{\@glsplural@{#1}{#2}[]}} \def\@glsplural@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentryplural{#2}#3}% } \newrobustcmd*{\Glsplural}{\@gls@hyp@opt\@Glsplural} \glsmfuaddmap{\glsplural}{\Glsplural} \newcommand*{\@Glsplural}[2][]{% \new@ifnextchar[{\@Glsplural@{#1}{#2}}{\@Glsplural@{#1}{#2}[]}} \def\@Glsplural@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentryplural{#2}#3}% } \newrobustcmd*{\GLSplural}{\@gls@hyp@opt\@GLSplural} \glsmfublocker{\GLSplural} \newcommand*{\@GLSplural}[2][]{% \new@ifnextchar[{\@GLSplural@{#1}{#2}}{\@GLSplural@{#1}{#2}[]}} \def\@GLSplural@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryplural{#2}#3}}% } \newrobustcmd*{\glsfirstplural}{\@gls@hyp@opt\@glsfirstplural} \newcommand*{\@glsfirstplural}[2][]{% \new@ifnextchar[{\@glsfirstplural@{#1}{#2}}{\@glsfirstplural@{#1}{#2}[]}} \def\@glsfirstplural@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentryfirstplural{#2}#3}% } \newrobustcmd*{\Glsfirstplural}{\@gls@hyp@opt\@Glsfirstplural} \glsmfuaddmap{\glsfirstplural}{\Glsfirstplural} \newcommand*{\@Glsfirstplural}[2][]{% \new@ifnextchar[{\@Glsfirstplural@{#1}{#2}}{\@Glsfirstplural@{#1}{#2}[]}} \def\@Glsfirstplural@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentryfirstplural{#2}#3}% } \newrobustcmd*{\GLSfirstplural}{\@gls@hyp@opt\@GLSfirstplural} \glsmfublocker{\GLSfirstplural} \newcommand*{\@GLSfirstplural}[2][]{% \new@ifnextchar[{\@GLSfirstplural@{#1}{#2}}{\@GLSfirstplural@{#1}{#2}[]}} \def\@GLSfirstplural@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryfirstplural{#2}#3}}% } \newrobustcmd*{\glsname}{\@gls@hyp@opt\@glsname} \newcommand*{\@glsname}[2][]{% \new@ifnextchar[{\@glsname@{#1}{#2}}{\@glsname@{#1}{#2}[]}} \def\@glsname@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentryname{#2}#3}% } \newrobustcmd*{\Glsname}{\@gls@hyp@opt\@Glsname} \glsmfuaddmap{\glsname}{\Glsname} \newcommand*{\@Glsname}[2][]{% \new@ifnextchar[{\@Glsname@{#1}{#2}}{\@Glsname@{#1}{#2}[]}} \def\@Glsname@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentryname{#2}#3}% } \newrobustcmd*{\GLSname}{\@gls@hyp@opt\@GLSname} \glsmfublocker{\GLSname} \newcommand*{\@GLSname}[2][]{% \new@ifnextchar[{\@GLSname@{#1}{#2}}{\@GLSname@{#1}{#2}[]}} \def\@GLSname@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryname{#2}#3}}% } \newrobustcmd*{\glsdesc}{\@gls@hyp@opt\@glsdesc} \newcommand*{\@glsdesc}[2][]{% \new@ifnextchar[{\@glsdesc@{#1}{#2}}{\@glsdesc@{#1}{#2}[]}} \def\@glsdesc@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentrydesc{#2}#3}% } \newrobustcmd*{\Glsdesc}{\@gls@hyp@opt\@Glsdesc} \glsmfuaddmap{\glsdesc}{\Glsdesc} \newcommand*{\@Glsdesc}[2][]{% \new@ifnextchar[{\@Glsdesc@{#1}{#2}}{\@Glsdesc@{#1}{#2}[]}} \def\@Glsdesc@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentrydesc{#2}#3}% } \newrobustcmd*{\GLSdesc}{\@gls@hyp@opt\@GLSdesc} \glsmfublocker{\GLSdesc} \newcommand*{\@GLSdesc}[2][]{% \new@ifnextchar[{\@GLSdesc@{#1}{#2}}{\@GLSdesc@{#1}{#2}[]}} \def\@GLSdesc@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrydesc{#2}#3}}% } \newrobustcmd*{\glsdescplural}{\@gls@hyp@opt\@glsdescplural} \newcommand*{\@glsdescplural}[2][]{% \new@ifnextchar[{\@glsdescplural@{#1}{#2}}{\@glsdescplural@{#1}{#2}[]}} \def\@glsdescplural@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentrydescplural{#2}#3}% } \newrobustcmd*{\Glsdescplural}{\@gls@hyp@opt\@Glsdescplural} \glsmfuaddmap{\glsdescplural}{\Glsdescplural} \newcommand*{\@Glsdescplural}[2][]{% \new@ifnextchar[{\@Glsdescplural@{#1}{#2}}{\@Glsdescplural@{#1}{#2}[]}} \def\@Glsdescplural@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentrydescplural{#2}#3}% } \newrobustcmd*{\GLSdescplural}{\@gls@hyp@opt\@GLSdescplural} \glsmfublocker{\GLSdescplural} \newcommand*{\@GLSdescplural}[2][]{% \new@ifnextchar[{\@GLSdescplural@{#1}{#2}}{\@GLSdescplural@{#1}{#2}[]}} \def\@GLSdescplural@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrydescplural{#2}#3}}% } \newrobustcmd*{\glssymbol}{\@gls@hyp@opt\@glssymbol} \newcommand*{\@glssymbol}[2][]{% \new@ifnextchar[{\@glssymbol@{#1}{#2}}{\@glssymbol@{#1}{#2}[]}} \def\@glssymbol@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentrysymbol{#2}#3}% } \newrobustcmd*{\Glssymbol}{\@gls@hyp@opt\@Glssymbol} \glsmfuaddmap{\glssymbol}{\Glssymbol} \newcommand*{\@Glssymbol}[2][]{% \new@ifnextchar[{\@Glssymbol@{#1}{#2}}{\@Glssymbol@{#1}{#2}[]}} \def\@Glssymbol@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentrysymbol{#2}#3}% } \newrobustcmd*{\GLSsymbol}{\@gls@hyp@opt\@GLSsymbol} \glsmfublocker{\GLSsymbol} \newcommand*{\@GLSsymbol}[2][]{% \new@ifnextchar[{\@GLSsymbol@{#1}{#2}}{\@GLSsymbol@{#1}{#2}[]}} \def\@GLSsymbol@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrysymbol{#2}#3}}% } \newrobustcmd*{\glssymbolplural}{\@gls@hyp@opt\@glssymbolplural} \newcommand*{\@glssymbolplural}[2][]{% \new@ifnextchar[{\@glssymbolplural@{#1}{#2}}{\@glssymbolplural@{#1}{#2}[]}} \def\@glssymbolplural@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentrysymbolplural{#2}#3}% } \newrobustcmd*{\Glssymbolplural}{\@gls@hyp@opt\@Glssymbolplural} \glsmfuaddmap{\glssymbolplural}{\Glssymbolplural} \newcommand*{\@Glssymbolplural}[2][]{% \new@ifnextchar[{\@Glssymbolplural@{#1}{#2}}{\@Glssymbolplural@{#1}{#2}[]}} \def\@Glssymbolplural@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentrysymbolplural{#2}#3}% } \newrobustcmd*{\GLSsymbolplural}{\@gls@hyp@opt\@GLSsymbolplural} \glsmfublocker{\GLSsymbolplural} \newcommand*{\@GLSsymbolplural}[2][]{% \new@ifnextchar[{\@GLSsymbolplural@{#1}{#2}}{\@GLSsymbolplural@{#1}{#2}[]}} \def\@GLSsymbolplural@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrysymbolplural{#2}#3}}% } \newrobustcmd*{\glsuseri}{\@gls@hyp@opt\@glsuseri} \newcommand*{\@glsuseri}[2][]{% \new@ifnextchar[{\@glsuseri@{#1}{#2}}{\@glsuseri@{#1}{#2}[]}} \def\@glsuseri@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentryuseri{#2}#3}% } \newrobustcmd*{\Glsuseri}{\@gls@hyp@opt\@Glsuseri} \glsmfuaddmap{\glsuseri}{\Glsuseri} \newcommand*{\@Glsuseri}[2][]{% \new@ifnextchar[{\@Glsuseri@{#1}{#2}}{\@Glsuseri@{#1}{#2}[]}} \def\@Glsuseri@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentryuseri{#2}#3}% } \newrobustcmd*{\GLSuseri}{\@gls@hyp@opt\@GLSuseri} \glsmfublocker{\GLSuseri} \newcommand*{\@GLSuseri}[2][]{% \new@ifnextchar[{\@GLSuseri@{#1}{#2}}{\@GLSuseri@{#1}{#2}[]}} \def\@GLSuseri@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuseri{#2}#3}}% } \newrobustcmd*{\glsuserii}{\@gls@hyp@opt\@glsuserii} \newcommand*{\@glsuserii}[2][]{% \new@ifnextchar[{\@glsuserii@{#1}{#2}}{\@glsuserii@{#1}{#2}[]}} \def\@glsuserii@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentryuserii{#2}#3}% } \newrobustcmd*{\Glsuserii}{\@gls@hyp@opt\@Glsuserii} \glsmfuaddmap{\glsuserii}{\Glsuserii} \newcommand*{\@Glsuserii}[2][]{% \new@ifnextchar[{\@Glsuserii@{#1}{#2}}{\@Glsuserii@{#1}{#2}[]}} \def\@Glsuserii@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentryuserii{#2}#3}% } \newrobustcmd*{\GLSuserii}{\@gls@hyp@opt\@GLSuserii} \glsmfublocker{\GLSuserii} \newcommand*{\@GLSuserii}[2][]{% \new@ifnextchar[{\@GLSuserii@{#1}{#2}}{\@GLSuserii@{#1}{#2}[]}} \def\@GLSuserii@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuserii{#2}#3}}% } \newrobustcmd*{\glsuseriii}{\@gls@hyp@opt\@glsuseriii} \newcommand*{\@glsuseriii}[2][]{% \new@ifnextchar[{\@glsuseriii@{#1}{#2}}{\@glsuseriii@{#1}{#2}[]}} \def\@glsuseriii@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentryuseriii{#2}#3}% } \newrobustcmd*{\Glsuseriii}{\@gls@hyp@opt\@Glsuseriii} \glsmfuaddmap{\glsuseriii}{\Glsuseriii} \newcommand*{\@Glsuseriii}[2][]{% \new@ifnextchar[{\@Glsuseriii@{#1}{#2}}{\@Glsuseriii@{#1}{#2}[]}} \def\@Glsuseriii@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentryuseriii{#2}#3}% } \newrobustcmd*{\GLSuseriii}{\@gls@hyp@opt\@GLSuseriii} \glsmfublocker{\GLSuseriii} \newcommand*{\@GLSuseriii}[2][]{% \new@ifnextchar[{\@GLSuseriii@{#1}{#2}}{\@GLSuseriii@{#1}{#2}[]}} \def\@GLSuseriii@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuseriii{#2}#3}}% } \newrobustcmd*{\glsuseriv}{\@gls@hyp@opt\@glsuseriv} \newcommand*{\@glsuseriv}[2][]{% \new@ifnextchar[{\@glsuseriv@{#1}{#2}}{\@glsuseriv@{#1}{#2}[]}} \def\@glsuseriv@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentryuseriv{#2}#3}% } \newrobustcmd*{\Glsuseriv}{\@gls@hyp@opt\@Glsuseriv} \glsmfuaddmap{\glsuseriv}{\Glsuseriv} \newcommand*{\@Glsuseriv}[2][]{% \new@ifnextchar[{\@Glsuseriv@{#1}{#2}}{\@Glsuseriv@{#1}{#2}[]}} \def\@Glsuseriv@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentryuseriv{#2}#3}% } \newrobustcmd*{\GLSuseriv}{\@gls@hyp@opt\@GLSuseriv} \glsmfublocker{\GLSuseriv} \newcommand*{\@GLSuseriv}[2][]{% \new@ifnextchar[{\@GLSuseriv@{#1}{#2}}{\@GLSuseriv@{#1}{#2}[]}} \def\@GLSuseriv@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuseriv{#2}#3}}% } \newrobustcmd*{\glsuserv}{\@gls@hyp@opt\@glsuserv} \newcommand*{\@glsuserv}[2][]{% \new@ifnextchar[{\@glsuserv@{#1}{#2}}{\@glsuserv@{#1}{#2}[]}} \def\@glsuserv@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentryuserv{#2}#3}% } \newrobustcmd*{\Glsuserv}{\@gls@hyp@opt\@Glsuserv} \glsmfuaddmap{\glsuserv}{\Glsuserv} \newcommand*{\@Glsuserv}[2][]{% \new@ifnextchar[{\@Glsuserv@{#1}{#2}}{\@Glsuserv@{#1}{#2}[]}} \def\@Glsuserv@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentryuserv{#2}#3}% } \newrobustcmd*{\GLSuserv}{\@gls@hyp@opt\@GLSuserv} \glsmfublocker{\GLSuserv} \newcommand*{\@GLSuserv}[2][]{% \new@ifnextchar[{\@GLSuserv@{#1}{#2}}{\@GLSuserv@{#1}{#2}[]}} \def\@GLSuserv@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuserv{#2}#3}}% } \newrobustcmd*{\glsuservi}{\@gls@hyp@opt\@glsuservi} \newcommand*{\@glsuservi}[2][]{% \new@ifnextchar[{\@glsuservi@{#1}{#2}}{\@glsuservi@{#1}{#2}[]}} \def\@glsuservi@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsentryuservi{#2}#3}% } \newrobustcmd*{\Glsuservi}{\@gls@hyp@opt\@Glsuservi} \glsmfuaddmap{\glsuservi}{\Glsuservi} \newcommand*{\@Glsuservi}[2][]{% \new@ifnextchar[{\@Glsuservi@{#1}{#2}}{\@Glsuservi@{#1}{#2}[]}} \def\@Glsuservi@#1#2[#3]{% \@gls@field@link{#1}{#2}{\Glsentryuservi{#2}#3}% } \newrobustcmd*{\GLSuservi}{\@gls@hyp@opt\@GLSuservi} \glsmfublocker{\GLSuservi} \newcommand*{\@GLSuservi}[2][]{% \new@ifnextchar[{\@GLSuservi@{#1}{#2}}{\@GLSuservi@{#1}{#2}[]}} \def\@GLSuservi@#1#2[#3]{% \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuservi{#2}#3}}% } \newrobustcmd*{\acrshort}{\@gls@hyp@opt\ns@acrshort} \newcommand*{\ns@acrshort}[2][]{% \new@ifnextchar[{\@acrshort{#1}{#2}}{\@acrshort{#1}{#2}[]}% } \def\@acrshort#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{% \acronymfont{\glsentryshort{#2}}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\Acrshort}{\@gls@hyp@opt\ns@Acrshort} \glsmfuaddmap{\Acrshort}{\Acrshort} \newcommand*{\ns@Acrshort}[2][]{% \new@ifnextchar[{\@Acrshort{#1}{#2}}{\@Acrshort{#1}{#2}[]}% } \def\@Acrshort#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glslabel{#2}% \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{% \acronymfont{\Glsentryshort{#2}}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\ACRshort}{\@gls@hyp@opt\ns@ACRshort} \glsmfublocker{\ACRshort} \newcommand*{\ns@ACRshort}[2][]{% \new@ifnextchar[{\@ACRshort{#1}{#2}}{\@ACRshort{#1}{#2}[]}% } \def\@ACRshort#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glslabel{#2}% \let\glsifplural\@secondoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \glsuppercase{\acronymfont{\glsentryshort{#2}}#3}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\acrshortpl}{\@gls@hyp@opt\ns@acrshortpl} \newcommand*{\ns@acrshortpl}[2][]{% \new@ifnextchar[{\@acrshortpl{#1}{#2}}{\@acrshortpl{#1}{#2}[]}% } \def\@acrshortpl#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glslabel{#2}% \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{% \acronymfont{\glsentryshortpl{#2}}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\Acrshortpl}{\@gls@hyp@opt\ns@Acrshortpl} \glsmfuaddmap{\Acrshortpl}{\Acrshortpl} \newcommand*{\ns@Acrshortpl}[2][]{% \new@ifnextchar[{\@Acrshortpl{#1}{#2}}{\@Acrshortpl{#1}{#2}[]}% } \def\@Acrshortpl#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glslabel{#2}% \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{% \acronymfont{\Glsentryshortpl{#2}}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\ACRshortpl}{\@gls@hyp@opt\ns@ACRshortpl} \glsmfublocker{\ACRshortpl} \newcommand*{\ns@ACRshortpl}[2][]{% \new@ifnextchar[{\@ACRshortpl{#1}{#2}}{\@ACRshortpl{#1}{#2}[]}% } \def\@ACRshortpl#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glslabel{#2}% \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \glsuppercase{\acronymfont{\glsentryshortpl{#2}}#3}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\acrlong}{\@gls@hyp@opt\ns@acrlong} \newcommand*{\ns@acrlong}[2][]{% \new@ifnextchar[{\@acrlong{#1}{#2}}{\@acrlong{#1}{#2}[]}% } \def\@acrlong#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glslabel{#2}% \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{% \glsentrylong{#2}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\Acrlong}{\@gls@hyp@opt\ns@Acrlong} \glsmfuaddmap{\Acrlong}{\Acrlong} \newcommand*{\ns@Acrlong}[2][]{% \new@ifnextchar[{\@Acrlong{#1}{#2}}{\@Acrlong{#1}{#2}[]}% } \def\@Acrlong#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glslabel{#2}% \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{% \Glsentrylong{#2}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\ACRlong}{\@gls@hyp@opt\ns@ACRlong} \glsmfublocker{\ACRlong} \newcommand*{\ns@ACRlong}[2][]{% \new@ifnextchar[{\@ACRlong{#1}{#2}}{\@ACRlong{#1}{#2}[]}% } \def\@ACRlong#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glslabel{#2}% \let\glsifplural\@secondoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \glsuppercase{\glsentrylong{#2}#3}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\acrlongpl}{\@gls@hyp@opt\ns@acrlongpl} \newcommand*{\ns@acrlongpl}[2][]{% \new@ifnextchar[{\@acrlongpl{#1}{#2}}{\@acrlongpl{#1}{#2}[]}% } \def\@acrlongpl#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glslabel{#2}% \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{% \glsentrylongpl{#2}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\Acrlongpl}{\@gls@hyp@opt\ns@Acrlongpl} \glsmfuaddmap{\Acrlongpl}{\Acrlongpl} \newcommand*{\ns@Acrlongpl}[2][]{% \new@ifnextchar[{\@Acrlongpl{#1}{#2}}{\@Acrlongpl{#1}{#2}[]}% } \def\@Acrlongpl#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glslabel{#2}% \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{% \Glsentrylongpl{#2}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\ACRlongpl}{\@gls@hyp@opt\ns@ACRlongpl} \glsmfublocker{\ACRlongpl} \newcommand*{\ns@ACRlongpl}[2][]{% \new@ifnextchar[{\@ACRlongpl{#1}{#2}}{\@ACRlongpl{#1}{#2}[]}% } \def\@ACRlongpl#1#2[#3]{% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glslabel{#2}% \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \glsuppercase{\glsentrylongpl{#2}#3}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newcommand*{\@gls@entry@field}[2]{% \csuse{glo@\glsdetoklabel{#1}@#2}% } \newcommand*{\glsletentryfield}[3]{% \letcs{#1}{glo@\glsdetoklabel{#2}@#3}% } \newrobustcmd*{\@Gls@entry@field}[2]{% \glsdoifexistsordo{#1}% {% \letcs\@glo@text{glo@\glsdetoklabel{#1}@#2}% \ifdef\@glo@text {% \expandafter\glssentencecase\expandafter{\@glo@text}% }% {% ??\PackageError{glossaries}{The field `#2' doesn't exist for glossary entry `\glsdetoklabel{#1}'}{Check you have correctly spelt the entry label and the field name}% }% }% {% ??% }% } \newcommand{\@Glsentryfield}[2]{% \glstexorpdfstring{\@Gls@entry@field{#1}{#2}}% {\MFUsentencecase{\@gls@entry@field{#1}{#2}}}% } \ifdef\texorpdfstring {\newcommand{\glstexorpdfstring}{\texorpdfstring}} {\newcommand{\glstexorpdfstring}[2]{#1}} \newcommand*{\glsentryname}[1]{\@gls@entry@field{#1}{name}} \newcommand*{\Glsentryname}[1]{% \glstexorpdfstring{\protect\@Gls@entryname{#1}}% {\MFUsentencecase{\@gls@entry@field{#1}{name}}}% } \glsmfuexcl{\Glsentryname} \newcommand*{\@Gls@entryname}[1]{% \@Gls@entry@field{#1}{name}% } \newrobustcmd*{\@Gls@acrentryname}[1]{% \ifglshaslong{#1}% {% \protected@edef\@glo@text{\@gls@entry@field{#1}{name}}% \expandafter\glssentencecase\expandafter{\@glo@text}% }% {% \@Gls@entry@field{#1}{name}% }% } \newcommand*{\@org@Gls@acrentryname}[1]{% \ifglshaslong{#1}% {% \letcs\@glo@text{glo@\glsdetoklabel{#1}@name}% \expandafter\@gls@getbody\@glo@text{}\@nil \expandafter\ifx\@gls@body\glsentrylong\relax \expandafter\Glsentrylong\@gls@rest \else \expandafter\ifx\@gls@body\glsentryshort\relax \expandafter\Glsentryshort\@gls@rest \else \expandafter\ifx\@gls@body\acronymfont\relax {% \let\glsentryshort\Glsentryshort \@glo@text }% \else \expandafter\ifx\@gls@body\glsshortaccessdisplay\relax {% \let\glsentryshort\Glsentryshort \@glo@text }% \else \expandafter\glssentencecase\expandafter{\@glo@text}% \fi \fi \fi \fi }% {% \@Gls@entry@field{#1}{name}% }% } \newcommand*{\glsentrydesc}[1]{\@gls@entry@field{#1}{desc}} \newcommand*{\Glsentrydesc}[1]{\@Glsentryfield{#1}{desc}} \glsmfuexcl{\Glsentrydesc} \newcommand*{\glsentrydescplural}[1]{% \@gls@entry@field{#1}{descplural}% } \newcommand*{\Glsentrydescplural}[1]{% \@Glsentryfield{#1}{descplural}% } \glsmfuexcl{\Glsentrydescplural} \newcommand*{\glsentrytext}[1]{\@gls@entry@field{#1}{text}} \newcommand*{\Glsentrytext}[1]{% \@Glsentryfield{#1}{text}% } \glsmfuexcl{\Glsentrytext} \newcommand*{\glsentryplural}[1]{% \@gls@entry@field{#1}{plural}% } \newcommand*{\Glsentryplural}[1]{% \@Glsentryfield{#1}{plural}% } \glsmfuexcl{\Glsentryplural} \newcommand*{\glsentrysymbol}[1]{% \@gls@entry@field{#1}{symbol}% } \newcommand*{\Glsentrysymbol}[1]{% \@Glsentryfield{#1}{symbol}% } \glsmfuexcl{\Glsentrysymbol} \newcommand*{\glsentrysymbolplural}[1]{% \@gls@entry@field{#1}{symbolplural}% } \newcommand*{\Glsentrysymbolplural}[1]{% \@Glsentryfield{#1}{symbolplural}% } \glsmfuexcl{\Glsentrysymbolplural} \newcommand*{\glsentryfirst}[1]{% \@gls@entry@field{#1}{first}% } \newcommand*{\Glsentryfirst}[1]{% \@Glsentryfield{#1}{first}% } \glsmfuexcl{\Glsentryfirst} \newcommand*{\glsentryfirstplural}[1]{% \@gls@entry@field{#1}{firstpl}% } \newcommand*{\Glsentryfirstplural}[1]{% \@Glsentryfield{#1}{firstpl}% } \glsmfuexcl{\Glsentryfirstplural} \newcommand{\glscapitalisewords}[1]{% \capitalisewords{#1}% } \newcommand*{\glsentrytitlecase}[2]{% \glstexorpdfstring {\@glsentrytitlecase{#1}{#2}}% {\MFUsentencecase{\@gls@entry@field{#1}{#2}}}% } \newrobustcmd*{\@glsentrytitlecase}[2]{% \glsdoifexists{#1}% {% \glsfieldfetch{#1}{#2}{\@gls@value}% \expandafter\glscapitalisewords\expandafter{\@gls@value}% }% } \newcommand*{\glsentrytype}[1]{\@gls@entry@field{#1}{type}} \newcommand*{\glsentrysort}[1]{% \@gls@entry@field{#1}{sort}% } \newcommand*{\glsentryparent}[1]{% \@gls@entry@field{#1}{parent}% } \newcommand*{\glsentryuseri}[1]{% \@gls@entry@field{#1}{useri}% } \newcommand*{\Glsentryuseri}[1]{% \@Glsentryfield{#1}{useri}% } \glsmfuexcl{\Glsentryuseri} \newcommand*{\glsentryuserii}[1]{% \@gls@entry@field{#1}{userii}% } \newcommand*{\Glsentryuserii}[1]{% \@Glsentryfield{#1}{userii}% } \glsmfuexcl{\Glsentryuserii} \newcommand*{\glsentryuseriii}[1]{% \@gls@entry@field{#1}{useriii}% } \newcommand*{\Glsentryuseriii}[1]{% \@Glsentryfield{#1}{useriii}% } \glsmfuexcl{\Glsentryuseriii} \newcommand*{\glsentryuseriv}[1]{% \@gls@entry@field{#1}{useriv}% } \newcommand*{\Glsentryuseriv}[1]{% \@Glsentryfield{#1}{useriv}% } \glsmfuexcl{\Glsentryuseriv} \newcommand*{\glsentryuserv}[1]{% \@gls@entry@field{#1}{userv}% } \newcommand*{\Glsentryuserv}[1]{% \@Glsentryfield{#1}{userv}% } \glsmfuexcl{\Glsentryuserv} \newcommand*{\glsentryuservi}[1]{% \@gls@entry@field{#1}{uservi}% } \newcommand*{\Glsentryuservi}[1]{% \@Glsentryfield{#1}{uservi}% } \glsmfuexcl{\Glsentryuservi} \newcommand*{\glsentryshort}[1]{\@gls@entry@field{#1}{short}} \newcommand*{\Glsentryshort}[1]{% \@Glsentryfield{#1}{short}% } \glsmfuexcl{\Glsentryshort} \newcommand*{\glsentryshortpl}[1]{\@gls@entry@field{#1}{shortpl}} \newcommand*{\Glsentryshortpl}[1]{% \@Glsentryfield{#1}{shortpl}% } \glsmfuexcl{\Glsentryshortpl} \newcommand*{\glsentrylong}[1]{\@gls@entry@field{#1}{long}} \newcommand*{\Glsentrylong}[1]{% \@Glsentryfield{#1}{long}% } \glsmfuexcl{\Glsentrylong} \newcommand*{\glsentrylongpl}[1]{\@gls@entry@field{#1}{longpl}} \newcommand*{\Glsentrylongpl}[1]{% \@Glsentryfield{#1}{longpl}% } \glsmfuexcl{\Glsentrylongpl} \newcommand*{\glsentryfull}[1]{% \glsentrylong{#1} (\glsentryshort{#1})% } \newcommand*{\Glsentryfull}[1]{% \Glsentrylong{#1} (\glsentryshort{#1})% } \glsmfuexcl{\Glsentryfull} \newcommand*{\glsentryfullpl}[1]{% \acrfullformat{\glsentrylongpl{#1}}{\acronymfont{\glsentryshortpl{#1}}}% } \newcommand*{\Glsentryfullpl}[1]{% \Glsentrylongpl{#1} (\glsentryshortpl{#1})% } \glsmfuexcl{\Glsentryfullpl} \newcommand*{\glsentrynumberlist}[1]{% \glsdoifexists{#1}% {% \@gls@entry@field{#1}{numberlist}% }% } \@ifpackageloaded{hyperref} {% \newcommand*{\glsdisplaynumberlist}[1]{% \GlossariesWarning {% \string\glsdisplaynumberlist\space doesn't work with hyperref.^^JUsing \string\glsentrynumberlist\space instead% }% \glsentrynumberlist{#1}% }% }% {% \newcommand*{\glsdisplaynumberlist}[1]{% \glsdoifexists{#1}% {% \bgroup \protected@edef\@glo@label{\glsdetoklabel{#1}}% \let\@org@glsnumberformat\glsnumberformat \def\glsnumberformat##1{##1}% \protected@edef\the@numberlist{% \csname glo@\@glo@label @numberlist\endcsname}% \def\@gls@numlist@sep{}% \def\@gls@numlist@nextsep{}% \def\@gls@numlist@lastsep{}% \def\@gls@thislist{}% \def\@gls@donext@def{}% \renewcommand\do[1]{% \protected@edef\@gls@thislist{% \@gls@thislist \noexpand\@gls@numlist@sep ##1% }% \let\@gls@numlist@sep\@gls@numlist@nextsep \def\@gls@numlist@nextsep{\glsnumlistsep}% \@gls@donext@def \def\@gls@donext@def{% \def\@gls@numlist@lastsep{\glsnumlistlastsep}% }% }% \expandafter \glsnumlistparser \expandafter{\the@numberlist}% \let\@gls@numlist@sep\@gls@numlist@lastsep \@gls@thislist \egroup }% } } \newcommand*{\glsnumlistsep}{, } \newcommand*{\glsnumlistlastsep}{ \& } \newcommand*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{% \def\@glo@label{#2}% \@glslink{\glolinkprefix\glsdetoklabel{#2}}{#1}} \define@key{glossadd}{counter}{\def\@gls@counter{#1}} \define@key{glossadd}{format}{\def\@glsnumberformat{#1}} \define@key{glossadd}{types}{\def\@glo@type{#1}} \newrobustcmd*{\glsadd}[2][]{% \@gls@adjustmode \glsdoifexists{#2}% {% \def\@glsnumberformat{glsnumberformat}% \protected@edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}% \setkeys{glossadd}{#1}% \@gls@saveentrycounter \@gls@setsort{#2}% \@@do@wrglossary{#2}% }% } \glsmfuexcl{\glsadd} \newcommand*{\@gls@adjustmode}{} \AtBeginDocument{\renewcommand*{\@gls@adjustmode}{\ifvmode\mbox{}\fi}} \newrobustcmd*{\glsaddall}[1][]{% \protected@edef\@glo@type{\@glo@types}% \setkeys{glossadd}{#1}% \forallglsentries[\@glo@type]{\@glo@entry}{% \glsadd[#1]{\@glo@entry}% }% } \newrobustcmd*{\glsaddallunused}[1][\@glo@types]{% \forallglsentries[#1]{\@glo@entry}% {% \ifglsused{\@glo@entry}{}{\glsadd[format=glsignore]{\@glo@entry}}% }% } \newcommand*{\glsignore}[1]{} \edef\glsopenbrace{\expandafter\@gobble\string\{} \edef\glsclosebrace{\expandafter\@gobble\string\}} \edef\glsbackslash{\expandafter\@gobble\string\\} \edef\glsquote#1{\string"#1\string"} \edef\glspercentchar{\expandafter\@gobble\string\%} \edef\glstildechar{\string~} \ifglsxindy \newcommand*{\@glsfirstletter}{A} \fi \newcommand*{\GlsSetXdyFirstLetterAfterDigits}{% \@ifstar\s@GlsSetXdyFirstLetterAfterDigits\@GlsSetXdyFirstLetterAfterDigits} \ifglsxindy \newcommand*{\@GlsSetXdyFirstLetterAfterDigits}[1]{% \renewcommand*{\@glsfirstletter}{#1}} \newcommand*{\s@GlsSetXdyFirstLetterAfterDigits}[1]{% \renewcommand*{\@glsfirstletter}{#1}% \@onelevel@sanitize\@glsfirstletter } \else \newcommand*{\@GlsSetXdyFirstLetterAfterDigits}[1]{% \glsnoxindywarning\GlsSetXdyFirstLetterAfterDigits} \newcommand*{\s@GlsSetXdyFirstLetterAfterDigits}{% \@GlsSetXdyFirstLetterAfterDigits } \fi \ifglsxindy \newcommand*{\@xdynumbergrouporder}{:before \string"\@glsfirstletter\string"} \fi \newcommand*{\GlsSetXdyNumberGroupOrder}[1]{% \@ifstar\s@GlsSetXdyNumberGroupOrder\@GlsSetXdyNumberGroupOrder } \ifglsxindy \newcommand*{\@GlsSetXdyNumberGroupOrder}[1]{% \renewcommand*{\@xdynumbergrouporder}{#1}% } \newcommand*{\s@GlsSetXdyNumberGroupOrder}[1]{% \renewcommand*{\@xdynumbergrouporder}{#1}% \@onelevel@sanitize\@xdynumbergrouporder } \else \newcommand*{\@GlsSetXdyNumberGroupOrder}[1]{% \glsnoxindywarning\GlsSetXdyNumberGroupOrder} \newcommand*{\s@GlsSetXdyNumberGroupOrder}{% \@GlsSetXdyNumberGroupOrder} \fi \newcommand*{\@glsminrange}{2} \ifglsxindy \newcommand*{\GlsSetXdyMinRangeLength}[1]{% \renewcommand*{\@glsminrange}{#1}} \else \newcommand*{\GlsSetXdyMinRangeLength}[1]{% \glsnoxindywarning\GlsSetXdyMinRangeLength} \fi \ifglsxindy \def\writeist{% \ifundef{\glswrite}{\newwrite\glswrite}{}% \@gls@addpredefinedattributes \openout\glswrite=\istfilename \write\glswrite{;; xindy style file created by the glossaries package}% \write\glswrite{;; for document '\jobname' on \the\year-\the\month-\the\day}% \write\glswrite{^^J; required styles^^J} \@for\@xdystyle:=\@xdyrequiredstyles\do{% \ifx\@xdystyle\@empty \else \protected@write\glswrite{}{(require \string"\@xdystyle.xdy\string")}% \fi }% \write\glswrite{^^J% ; list of allowed attributes (number formats)^^J}% \write\glswrite{(define-attributes ((\@xdyattributes)))}% \write\glswrite{^^J; user defined alphabets^^J}% \write\glswrite{\@xdyuseralphabets}% \write\glswrite{^^J; location class definitions^^J}% \@for\@gls@classI:=\@gls@xdy@locationlist\do{% \protected@write\glswrite{}{(define-location-class \string"\@gls@classI\string"^^J\space\space\space ( :sep "{}{" \csname @gls@xdy@Lclass@\@gls@classI\endcsname\space :sep "}" ) ^^J\space\space\space :min-range-length \@glsminrange^^J% ) }% {% \@for\@gls@classII:=\@gls@xdy@locationlist\do{% \protected@write\glswrite{}{(define-location-class \string"\@gls@classII-\@gls@classI\string" ^^J\space\space\space ( :sep "{" \csname @gls@xdy@Lclass@\@gls@classII\endcsname\space :sep "}{" \csname @gls@xdy@Lclass@\@gls@classI\endcsname\space :sep "}" ) ^^J\space\space\space :min-range-length \@glsminrange^^J% ) }% }% }% }% \write\glswrite{^^J; user defined location classes}% \write\glswrite{\@xdyuserlocationdefs}% \write\glswrite{^^J; define cross-reference class^^J}% \write\glswrite{(define-crossref-class \string"see\string" :unverified )}% \write\glswrite{(markup-crossref-list :class \string"see\string"^^J\space\space\space :open \string"\string\glsseeformat\string" :close \string"{}\string")}% \@xdycrossrefhook \write\glswrite{^^J; define the order of the location classes}% \write\glswrite{(define-location-class-order (\@xdylocationclassorder))}% \write\glswrite{^^J; define the glossary markup^^J}% \write\glswrite{(markup-index^^J\space\space\space :open \string"\string \glossarysection[\string\glossarytoctitle]{\string \glossarytitle}\string\glossarypreamble}% \@for\@this@ctr:=\@xdycounters\do{% {% \@for\@this@attr:=\@xdyattributelist\do{% \protected@write\glswrite{}{\string\providecommand*% \expandafter\string \csname glsX\@this@ctr X\@this@attr\endcsname[2]% {% \string\setentrycounter [\expandafter\@gobble\string\#1]{\@this@ctr}% \expandafter\string \csname\@this@attr\endcsname {\expandafter\@gobble\string\#2}% }% }% }% }% }% \write\glswrite{% \string\begin {theglossary}\string\glossaryheader\glstildechar n\string" ^^J\space \space\space:close \string"\glspercentchar\glstildechar n\string \end{theglossary}\string\glossarypostamble \glstildechar n\string" ^^J\space\space\space :tree)}% \write\glswrite{(markup-letter-group-list :sep \string"\string\glsgroupskip\glstildechar n\string")}% \write\glswrite{(markup-indexentry :open \string"\string\relax \string\glsresetentrylist \glstildechar n\string")}% \write\glswrite{(markup-locclass-list :open \string"\glsopenbrace\string\glossaryentrynumbers \glsopenbrace\string\relax\space \string"^^J\space\space\space :sep \string", \string" :close \string"\glsclosebrace\glsclosebrace\string")}% \write\glswrite{(markup-locref-list :sep \string"\string\delimN\space\string")}% \write\glswrite{(markup-range :sep \string"\string\delimR\space\string")}% \@onelevel@sanitize\gls@suffixF \@onelevel@sanitize\gls@suffixFF \ifx\gls@suffixF\@empty \else \write\glswrite{(markup-range :close "\gls@suffixF" :length 1 :ignore-end)}% \fi \ifx\gls@suffixFF\@empty \else \write\glswrite{(markup-range :close "\gls@suffixFF" :length 2 :ignore-end)}% \fi \write\glswrite{^^J; define format to use for locations^^J}% \write\glswrite{\@xdylocref}% \write\glswrite{^^J; define letter group list format^^J}% \write\glswrite{(markup-letter-group-list :sep \string"\string\glsgroupskip\glstildechar n\string")}% \write\glswrite{^^J; letter group headings^^J}% \write\glswrite{(markup-letter-group :open-head \string"\string\glsgroupheading \glsopenbrace\string"^^J\space\space\space :close-head \string"\glsclosebrace\string")}% \write\glswrite{^^J; additional letter groups^^J}% \write\glswrite{\@xdylettergroups}% \write\glswrite{^^J; additional sort rules^^J} \write\glswrite{\@xdysortrules}% \@gls@writeisthook \closeout\glswrite \let\writeist\relax \let\noist\@gls@noist@toolate } \else \edef\@gls@actualchar{\string?} \edef\@gls@encapchar{\string|} \edef\@gls@levelchar{\string!} \edef\@gls@quotechar{\string"}% \let\GlsSetQuote\gls@nosetquote \def\writeist{\relax \ifundef{\glswrite}{\newwrite\glswrite}{}\relax \openout\glswrite=\istfilename \write\glswrite{\glspercentchar\space makeindex style file created by the glossaries package} \write\glswrite{\glspercentchar\space for document '\jobname' on \the\year-\the\month-\the\day} \write\glswrite{actual '\@gls@actualchar'} \write\glswrite{encap '\@gls@encapchar'} \write\glswrite{level '\@gls@levelchar'} \write\glswrite{quote '\@gls@quotechar'} \write\glswrite{keyword \string"\string\\glossaryentry\string"} \write\glswrite{preamble \string"\string\\glossarysection[\string \\glossarytoctitle]{\string\\glossarytitle}\string \\glossarypreamble\string\n\string\\begin{theglossary}\string \\glossaryheader\string\n\string"} \write\glswrite{postamble \string"\string\%\string\n\string \\end{theglossary}\string\\glossarypostamble\string\n \string"} \write\glswrite{group_skip \string"\string\\glsgroupskip\string\n \string"} \write\glswrite{item_0 \string"\string\%\string\n\string"} \write\glswrite{item_1 \string"\string\%\string\n\string"} \write\glswrite{item_2 \string"\string\%\string\n\string"} \write\glswrite{item_01 \string"\string\%\string\n\string"} \write\glswrite{item_x1 \string"\string\\relax \string\\glsresetentrylist\string\n \string"} \write\glswrite{item_12 \string"\string\%\string\n\string"} \write\glswrite{item_x2 \string"\string\\relax \string\\glsresetentrylist\string\n \string"} \write\glswrite{delim_0 \string"\string\{\string \\glossaryentrynumbers\string\{\string\\relax \string"} \write\glswrite{delim_1 \string"\string\{\string \\glossaryentrynumbers\string\{\string\\relax \string"} \write\glswrite{delim_2 \string"\string\{\string \\glossaryentrynumbers\string\{\string\\relax \string"} \write\glswrite{delim_t \string"\string\}\string\}\string"} \write\glswrite{delim_n \string"\string\\delimN \string"} \write\glswrite{delim_r \string"\string\\delimR \string"} \write\glswrite{headings_flag 1} \write\glswrite{heading_prefix \string"\string\\glsgroupheading\string\{\string"} \write\glswrite{heading_suffix \string"\string\}\string\\relax \string\\glsresetentrylist \string"} \write\glswrite{symhead_positive \string"glssymbols\string"} \write\glswrite{numhead_positive \string"glsnumbers\string"} \write\glswrite{page_compositor \string"\glscompositor\string"} \@gls@escbsdq\gls@suffixF \@gls@escbsdq\gls@suffixFF \ifx\gls@suffixF\@empty \else \write\glswrite{suffix_2p \string"\gls@suffixF\string"} \fi \ifx\gls@suffixFF\@empty \else \write\glswrite{suffix_3p \string"\gls@suffixFF\string"} \fi \@gls@writeisthook \closeout\glswrite \let\writeist\relax \let\noist\@gls@noist@toolate } \fi \newcommand*{\GlsSetWriteIstHook}[1]{\renewcommand*{\@gls@writeisthook}{#1}} \@onlypremakeg\GlsSetWriteIstHook \newcommand*{\@gls@writeisthook}{} \ifglsxindy \newcommand*{\GlsSetQuote}[1]{\glsnomakeindexwarning\GlsSetQuote} \newcommand*{\gls@nosetquote}[1]{\glsnomakeindexwarning\GlsSetQuote} \else \newcommand*{\GlsSetQuote}[1]{\edef\@gls@quotechar{\string#1}% \@ifpackageloaded{tracklang}% {% \IfTrackedLanguage{german}% {% \def\@@gls@extramakeindexopts{-g}% }% {}% }% {}% \edef\@gls@docheckquotedef{% \noexpand\def\noexpand\@gls@checkquote####1#1####2#1####3\noexpand\null{% \noexpand\@gls@tmpb=\noexpand\expandafter{\noexpand\@gls@checkedmkidx}% \noexpand\toks@={####1}% \noexpand\ifx\noexpand\null####2\noexpand\null \noexpand\ifx\noexpand\null####3\noexpand\null \noexpand\edef\noexpand\@gls@checkedmkidx{% \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}% \noexpand\def\noexpand\@@gls@checkquote{\noexpand\relax}% \noexpand\else \noexpand\edef\noexpand\@gls@checkedmkidx{% \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@ \noexpand\@gls@quotechar\noexpand\@gls@quotechar \noexpand\@gls@quotechar\noexpand\@gls@quotechar}% \noexpand\def\noexpand\@@gls@checkquote{% \noexpand\@gls@checkquote####3\noexpand\null}% \noexpand\fi \noexpand\else \noexpand\edef\noexpand\@gls@checkedmkidx{% \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@ \noexpand\@gls@quotechar\noexpand\@gls@quotechar}% \noexpand\ifx\noexpand\null####3\noexpand\null \noexpand\def\noexpand\@@gls@checkquote{% \noexpand\@gls@checkquote####2#1#1\noexpand\null}% \noexpand\else \noexpand\def\noexpand\@@gls@checkquote{% \noexpand\@gls@checkquote####2#1####3\noexpand\null}% \noexpand\fi \noexpand\fi \noexpand\@@gls@checkquote }% }% \@gls@docheckquotedef \edef\@gls@docheckquotedef{% \noexpand\renewcommand{\noexpand\@gls@checkmkidxchars}[1]{% \noexpand\def\noexpand\@gls@checkedmkidx{}% \noexpand\expandafter\noexpand\@gls@checkquote####1\noexpand\@nil #1#1\noexpand\null \noexpand\expandafter\noexpand\@gls@updatechecked \noexpand\@gls@checkedmkidx{####1}% \noexpand\def\noexpand\@gls@checkedmkidx{}% \noexpand\expandafter\noexpand\@gls@checkescquote####1\noexpand\@nil \expandonce{\csname#1\endcsname}\expandonce{\csname#1\endcsname}% \noexpand\null \noexpand\expandafter\noexpand\@gls@updatechecked \noexpand\@gls@checkedmkidx{####1}% \noexpand\def\noexpand\@gls@checkedmkidx{}% \noexpand\expandafter\noexpand\@gls@checkescactual####1\noexpand\@nil \noexpand\?\noexpand\?\noexpand\null \noexpand\expandafter\noexpand\@gls@updatechecked \noexpand\@gls@checkedmkidx{####1}% \noexpand\def\noexpand\@gls@checkedmkidx{}% \noexpand\expandafter\noexpand\@gls@checkactual####1\noexpand\@nil \noexpand?\noexpand?\noexpand\null \noexpand\expandafter\noexpand\@gls@updatechecked \noexpand\@gls@checkedmkidx{####1}% \noexpand\def\noexpand\@gls@checkedmkidx{}% \noexpand\expandafter\noexpand\@gls@checkbar####1\noexpand\@nil \noexpand|\noexpand|\noexpand\null \noexpand\expandafter\noexpand\@gls@updatechecked \noexpand\@gls@checkedmkidx{####1}% \noexpand\def\noexpand\@gls@checkedmkidx{}% \noexpand\expandafter\noexpand\@gls@checkescbar####1\noexpand\@nil \noexpand\|\noexpand\|\noexpand\null \noexpand\expandafter\noexpand\@gls@updatechecked \noexpand\@gls@checkedmkidx{####1}% \noexpand\def\noexpand\@gls@checkedmkidx{}% \noexpand\expandafter\noexpand\@gls@checklevel####1\noexpand\@nil \noexpand!\noexpand!\noexpand\null \noexpand\expandafter\noexpand\@gls@updatechecked \noexpand\@gls@checkedmkidx{####1}% \noexpand\def\noexpand\@gls@checkedmkidx{}% \noexpand\expandafter\noexpand\@gls@checkesclevel####1\noexpand\@nil \noexpand\!\noexpand\!\noexpand\null \noexpand\expandafter\noexpand\@gls@updatechecked \noexpand\@gls@checkedmkidx{####1}% \noexpand\def\noexpand\@gls@checkedmkidx{}% \noexpand\expandafter\noexpand\@gls@checkesc####1\noexpand\@nil \@backslashchar\@backslashchar\noexpand\null \noexpand\expandafter\noexpand\@gls@updatechecked \noexpand\@gls@checkedmkidx{####1}% }% }% \@gls@docheckquotedef \edef\@gls@docheckquotedef{% \noexpand\def\noexpand\@gls@checkescquote####1% \expandonce{\csname#1\endcsname}####2\expandonce{\csname#1\endcsname}% ####3\noexpand\null{% \noexpand\@gls@tmpb=\noexpand\expandafter{\noexpand\@gls@checkedmkidx}% \noexpand\toks@={####1}% \noexpand\ifx\noexpand\null####2\noexpand\null \noexpand\ifx\noexpand\null####3\noexpand\null \noexpand\edef\noexpand\@gls@checkedmkidx{% \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}% \noexpand\def\noexpand\@@gls@checkescquote{\noexpand\relax}% \noexpand\else \noexpand\edef\noexpand\@gls@checkedmkidx{% \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@ \noexpand\@gls@quotechar\noexpand\string\expandonce{% \csname#1\endcsname}\noexpand\@gls@quotechar \noexpand\@gls@quotechar\noexpand\string\expandonce{% \csname#1\endcsname}\noexpand\@gls@quotechar}% \noexpand\def\noexpand\@@gls@checkescquote{% \noexpand\@gls@checkescquote####3\noexpand\null}% \noexpand\fi \noexpand\else \noexpand\edef\noexpand\@gls@checkedmkidx{% \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@ \noexpand\@gls@quotechar\noexpand\string \expandonce{\csname#1\endcsname}\noexpand\@gls@quotechar}% \noexpand\ifx\noexpand\null####3\noexpand\null \noexpand\def\noexpand\@@gls@checkescquote{% \noexpand\@gls@checkescquote####2\expandonce{\csname#1\endcsname}% \expandonce{\csname#1\endcsname}\noexpand\null}% \noexpand\else \noexpand\def\noexpand\@@gls@checkescquote{% \noexpand\@gls@checkescquote####2\expandonce{\csname#1\endcsname}% ####3\noexpand\null}% \noexpand\fi \noexpand\fi \noexpand\@@gls@checkescquote }% }% \@gls@docheckquotedef } \newcommand*{\gls@nosetquote}[1]{\PackageError{glossaries}% {\string\GlsSetQuote\space not permitted here}% {Move \string\GlsSetQuote\space earlier in the preamble, as soon as possible after glossaries.sty has been loaded}} \fi \newcommand*{\@gls@extramakeindexopts}[1]{} \newcommand{\noist}{% \@gls@addpredefinedattributes \let\writeist\relax } \newcommand{\@gls@noist@toolate}{% \GlossariesWarning{too late to use \string\noist. The style file has already been written}% } \newcommand*{\@makeglossary}[1]{% \ifglossaryexists{#1}% {% \ifglssavewrites \expandafter\newtoks\csname glo@#1@filetok\endcsname \else \expandafter\newwrite\csname glo@#1@file\endcsname \expandafter\@glsopenfile\csname glo@#1@file\endcsname{#1}% \fi \@gls@renewglossary \writeist }% {% \PackageError{glossaries}% {Glossary type `#1' not defined}% {New glossaries must be defined before using \string\makeglossaries}% }% } \newcommand*{\@glsopenfile}[2]{% \immediate\openout#1=\jobname.\csname @glotype@#2@out\endcsname \PackageInfo{glossaries}{Writing glossary file \jobname.\csname @glotype@#2@out\endcsname}% } \newcommand*{\@closegls}[1]{% \closeout\csname glo@#1@file\endcsname } \ifglsxindy \newcommand*{\@gls@automake}[1]{% \ifglossaryexists{#1} {% \@closegls{#1}% \ifdefstring{\glsorder}{letter}% {\def\@gls@order{-M ord/letorder }}% {\let\@gls@order\@empty}% \gls@xdy@set@lang{#1}% \ifdefvoid\gls@codepage {\let\@@gls@codepage\@empty}% {\def\@@gls@codepage{-C \gls@codepage\space}}% \edef\@gls@dothiswrite{\noexpand\write18{xindy -I xindy \@gls@order -L \@gls@langmod\space -M \gls@istfilebase\space \@@gls@codepage -t \jobname.\csuse{@glotype@#1@log} -o \jobname.\csuse{@glotype@#1@in} \jobname.\csuse{@glotype@#1@out}}% }% \@gls@dothiswrite }% {% \GlossariesWarning{Can't make glossary `#1', it doesn't exist}% }% } \else \newcommand*{\@gls@automake}[1]{% \ifglossaryexists{#1} {% \@closegls{#1}% \ifdefstring{\glsorder}{letter}% {\def\@gls@order{-l }}% {\let\@gls@order\@empty}% \edef\@gls@dothiswrite{\noexpand\write18{makeindex \@gls@order -s \istfilename\space -t \jobname.\csuse{@glotype@#1@log} -o \jobname.\csuse{@glotype@#1@in} \jobname.\csuse{@glotype@#1@out}}% }% \@gls@dothiswrite }% {% \GlossariesWarning{Can't make glossary `#1', it doesn't exist}% }% } \fi \ifglsxindy \newcommand*{\@gls@automake@immediate}[1]{% \ifglossaryexists{#1} {% \IfFileExists{\jobname.\csuse{@glotype@#1@out}}% {% \ifdefstring{\glsorder}{letter}% {\def\@gls@order{-M ord/letorder }}% {\let\@gls@order\@empty}% \gls@xdy@set@lang{#1}% \ifdefvoid\gls@codepage {\let\@@gls@codepage\@empty}% {\def\@@gls@codepage{-C \gls@codepage\space}}% \edef\@gls@dothiswrite{\noexpand\immediate\noexpand\write18{xindy -I xindy \@gls@order -L \@gls@langmod\space -M \gls@istfilebase\space \@@gls@codepage -t \jobname.\csuse{@glotype@#1@log} -o \jobname.\csuse{@glotype@#1@in} \jobname.\csuse{@glotype@#1@out}}% }% \@gls@dothiswrite }% {\GlossariesWarning{can't automake `#1': \jobname.\csuse{@glotype@#1@out} doesn't exist. Rerun may be required}}% }% {% \GlossariesWarning{Can't make glossary `#1', it doesn't exist}% }% } \else \newcommand*{\@gls@automake@immediate}[1]{% \ifglossaryexists{#1} {% \IfFileExists{\jobname.\csuse{@glotype@#1@out}}% {% \ifdefstring{\glsorder}{letter}% {\def\@gls@order{-l }}% {\let\@gls@order\@empty}% \edef\@gls@dothiswrite{\noexpand\immediate\noexpand\write18{makeindex \@gls@order -s \istfilename\space -t \jobname.\csuse{@glotype@#1@log} -o \jobname.\csuse{@glotype@#1@in} \jobname.\csuse{@glotype@#1@out}}% }% \@gls@dothiswrite }% {\GlossariesWarning{can't automake `#1': \jobname.\csuse{@glotype@#1@out} doesn't exist. Rerun may be required}}% }% {% \GlossariesWarning{Can't make glossary `#1', it doesn't exist}% }% } \fi \newcommand*{\@warn@nomakeglossaries}{} \newcommand*{\warn@nomakeglossaries}{\@warn@nomakeglossaries} \newcommand{\@gls@automake@types}{\@glo@types} \newcommand{\@gls@@automake@immediate}{% \ifnum\gls@automake@nr=2\relax \protected@edef\gls@tmp{\@gls@automake@types}% \@for\@gls@type:=\gls@tmp\do{% \ifdefempty{\@gls@type}{}% {\@gls@automake@immediate{\@gls@type}}% }% \glsautomakefalse \renewcommand*{\@gls@doautomake}{}% \else \ifdefempty\gls@automake@makegloss{}% {% \IfFileExists{\jobname.aux}% {\immediate\write18{\gls@automake@makegloss\space \jobname}}{}% \glsautomakefalse \renewcommand*{\@gls@doautomake}{}% }% \fi } \newcommand*{\makeglossaries}{% \ifglsxindy \def\glsindexingsetting{xindy}% \else \def\glsindexingsetting{makeindex}% \fi \@domakeglossaries {% \@gls@@automake@immediate \ifundef{\glswrite}{\newwrite\glswrite}{}% \protected@write\@auxout{}{\string\providecommand\string\@glsorder[1]{}} \protected@write\@auxout{}{\string\providecommand\string\@istfilename[1]{}} \ifundef\@@gls@extramakeindexopts {}% {% \protected@write\@auxout{}{\string\providecommand \string\@gls@extramakeindexopts[1]{}} \protected@write\@auxout{}{\string\@gls@extramakeindexopts {\@@gls@extramakeindexopts}}% }% \protected@write\@auxout{}{\string\@istfilename{\istfilename}}% \protected@write\@auxout{}{\string\@glsorder{\glsorder}} \@for\@glo@type:=\@glo@types\do{% \ifthenelse{\equal{\@glo@type}{}}{}{% \@makeglossary{\@glo@type}}% }% \renewcommand*\newglossary[4][]{% \PackageError{glossaries}{New glossaries must be created before \string\makeglossaries}{You need to move \string\makeglossaries\space after all your \string\newglossary\space commands}}% \let\@makeglossary\@gobble \let\makeglossaries\relax \@disable@onlypremakeg \let\gls@checkseeallowed\relax \let\warn@nomakeglossaries\relax \let\warn@noprintglossary\@makeglossaries@warn@noprintglossary \ifglssavenumberlist \edef\@gls@dodeflistparser{\noexpand\DeclareListParser {\noexpand\glsnumlistparser}{\delimN}}% \@gls@dodeflistparser \fi \let\makenoidxglossaries\@no@makeglossaries \renewcommand*{\@printgloss@setsort}{% \let\@glo@assign@sortkey\@glo@no@assign@sortkey }% \ifglsautomake \renewcommand*{\@gls@doautomake}{% \protected@edef\gls@tmp{\@gls@automake@types}% \@for\@gls@type:=\gls@tmp\do{% \ifdefempty{\@gls@type}{}% {\@gls@automake{\@gls@type}}% }% }% \fi \@glo@check@sortallowed\makeglossaries }% } \@onlypreamble{\makeglossaries} \newcommand\@makeglossaries@warn@noprintglossary{% \ifdefstring{\@glo@types}{,}% {% \GlossariesWarningNoLine{No glossaries have been defined}% }% {% \GlossariesWarningNoLine{No \string\printglossary\space or \string\printglossaries\space found. ^^J(Remove \string\makeglossaries\space if you don't want any glossaries.) ^^JThis document will not have a glossary}% }% }% \AtEndDocument{% \warn@nomakeglossaries \warn@noprintglossary } \newcommand*{\makenoidxglossaries}{% \def\glsindexingsetting{noidx}% \@domakeglossaries {% \renewcommand{\@gls@noref@warn}[1]{% \GlossariesWarning{Empty glossary for \string\printnoidxglossary[type={##1}]. Rerun may be required (or you may have forgotten to use commands like \string\gls)}% }% \let\@gls@checkmkidxchars\@gobble \glsesclocationsfalse \let\@@do@@wrglossary\gls@noidxglossary \let\@gls@getgrouptitle\@gls@noidx@getgrouptitle \let\gls@checkseeallowed\relax \renewcommand{\@do@seeglossary}[2]{% \protected@edef\@gls@label{\glsdetoklabel{##1}}% \protected@write\@auxout{}{% \string\@gls@reference {\csname glo@\@gls@label @type\endcsname}% {\@gls@label}% {% \string\glsseeformat##2{}% }% }% }% \AtBeginDocument {% \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}% }% \def\warn@noprintglossary{% \GlossariesWarningNoLine{No \string\printnoidxglossary\space or \string\printnoidxglossaries ^^J found. (Remove \string\makenoidxglossaries\space if you don't want any glossaries.)^^JThis document will not have a glossary}% }% \let\warn@nomakeglossaries\relax \let\makeglossaries\@no@makeglossaries \renewcommand*{\@printgloss@setsort}{% \let\@glo@assign@sortkey\@@glo@assign@sortkey \def\@glo@sorttype{\@glo@default@sorttype}% }% \renewcommand*\new@glossaryentry[2]{% \PackageError{glossaries}{Glossary entries must be defined in the preamble^^Jwhen you use \string\makenoidxglossaries}% {Either move your definitions to the preamble or use \string\makeglossaries}% }% \renewcommand*{\glsentrynumberlist}[1]{% \letcs{\@gls@loclist}{glo@\glsdetoklabel{##1}@loclist}% \ifdef\@gls@loclist {% \glsnoidxloclist{\@gls@loclist}% }% {% ??\glsdoifexists{##1}% {% \GlossariesWarning{Missing location list for `##1'. Either a rerun is required or you haven't referenced the entry}% }% }% }% \renewcommand*{\glsdisplaynumberlist}[1]{% \letcs{\@gls@loclist}{glo@\glsdetoklabel{##1}@loclist}% \ifdef\@gls@loclist {% \def\@gls@noidxloclist@sep{% \def\@gls@noidxloclist@sep{% \def\@gls@noidxloclist@sep{% \glsnumlistsep }% \def\@gls@noidxloclist@finalsep{\glsnumlistlastsep}% }% }% \def\@gls@noidxloclist@finalsep{}% \def\@gls@noidxloclist@prev{}% \forlistloop{\glsnoidxdisplayloclisthandler}{\@gls@loclist}% \@gls@noidxloclist@finalsep \@gls@noidxloclist@prev }% {% ??\glsdoifexists{##1}% {% \GlossariesWarning{Missing location list for `##1'. Either a rerun is required or you haven't referenced the entry}% }% }% }% \renewcommand*{\glsnumberlistloop}[3]{% \letcs{\@gls@loclist}{glo@\glsdetoklabel{##1}@loclist}% \let\@gls@org@glsnoidxdisplayloc\glsnoidxdisplayloc \let\@gls@org@glsseeformat\glsseeformat \let\glsnoidxdisplayloc##2\relax \let\glsseeformat##3\relax \ifdef\@gls@loclist {% \forlistloop{\glsnoidxnumberlistloophandler}{\@gls@loclist}% }% {% ??\glsdoifexists{##1}% {% \GlossariesWarning{Missing location list for `##1'. Either a rerun is required or you haven't referenced the entry}% }% }% \let\glsnoidxdisplayloc\@gls@org@glsnoidxdisplayloc \let\glsseeformat\@gls@org@glsseeformat }% \let\@@gls@sanitizesort\@gls@noidx@sanitizesort \let\@@gls@nosanitizesort\@@gls@noidx@nosanitizesort \@gls@noidx@setsanitizesort \@glo@check@sortallowed\makenoidxglossaries \let\@gls@savenonumberlist\gls@noidx@nonumberlist }% } \@onlypreamble{\makenoidxglossaries} \newcommand*{\glsnumberlistloop}[3]{% \PackageError{glossaries}{\string\glsnumberlistloop\space only works with \string\makenoidxglossaries}{}% } \newcommand*{\glsnoidxnumberlistloophandler}[1]{% #1% } \newcommand*{\@no@makeglossaries}{% \PackageError{glossaries}{You can't use both \string\makeglossaries\space and \string\makenoidxglossaries}% {Either use one or other (or none) of those commands but not both together.}% } \newcommand{\@gls@noref@warn}[1]{% \GlossariesWarning{\string\makenoidxglossaries\space is required to make \string\printnoidxglossary[type={#1}] work}% } \newcommand*{\gls@noidxglossary}{% \protected@write\@auxout{\glswrglossdisablelocationcmds}{% \string\@gls@reference {\csname glo@\@gls@label @type\endcsname}% {\@gls@label}% {\string\glsnoidxdisplayloc {\@glo@counterprefix}% {\@gls@counter}% {\@glsnumberformat}% {\@glslocref}% }% }% } \AtEndDocument{% \glswritefiles } \newcommand*{\@glswritefiles}{% \forallglossaries{\@glo@type}{% \ifcsundef{glo@\@glo@type @filetok}% {% \def\gls@tmp{}% }% {% \edef\gls@tmp{\expandafter\the \csname glo@\@glo@type @filetok\endcsname}% }% \ifx\gls@tmp\@empty \ifx\@glo@type\glsdefaulttype \GlossariesWarningNoLine{Glossary `\@glo@type' has no entries.^^JRemember to use package option `nomain' if you don't want to^^Juse the main glossary}% \else \GlossariesWarningNoLine{Glossary `\@glo@type' has no entries}% \fi \else \@glsopenfile{\glswrite}{\@glo@type}% \immediate\write\glswrite{% \expandafter\the \csname glo@\@glo@type @filetok\endcsname}% \immediate\closeout\glswrite \fi }% } \newcommand*{\gls@glossary}[1]{% \@gls@glossary{#1}% } \newcommand*{\@gls@glossary}[2]{% \if@gls@debug \PackageInfo{glossaries}{wrglossary(#1)(#2)}% \fi } \newcommand{\@gls@renewglossary}{% \gdef\@gls@glossary##1{\@bsphack\begingroup\gls@wrglossary{##1}}% \let\@gls@renewglossary\@empty } \newcommand*{\gls@wrglossary}[2]{% \ifglssavewrites \protected@edef\@gls@tmp{\the\csname glo@#1@filetok\endcsname#2}% \expandafter\global\expandafter\csname glo@#1@filetok\endcsname \expandafter{\@gls@tmp^^J}% \else \ifcsdef{glo@#1@file}% {% \expandafter\protected@write\csname glo@#1@file\endcsname{% \gls@disablepagerefexpansion}{#2}% }% {% \ifignoredglossary{#1}{}% {% \GlossariesWarning{No file defined for glossary `#1'}% }% }% \fi \endgroup\@esphack } \newcommand*{\@do@wrglossary}[1]{% \gls@ifnotmeasuring{\glswriteentry{#1}{\@@do@wrglossary{#1}}}% } \newcommand*{\glswriteentry}[2]{% \ifglsindexonlyfirst \ifglsused{#1}{}{#2}% \else #2% \fi } \newcommand{\gls@protected@pagefmts}{\gls@numberpage,\gls@alphpage,% \gls@Alphpage,\gls@romanpage,\gls@Romanpage,\gls@arabicpage} \newcommand*{\gls@disablepagerefexpansion}{% \glswrglossdisablelocationcmds \ifglsesclocations \@for\@gls@this:=\gls@protected@pagefmts\do {% \expandafter\let\@gls@this\relax }% \fi } \newcommand{\glswrglossdisablelocationcmds}{} \newcommand*{\gls@alphpage}{\@alph\c@page} \newcommand*{\gls@Alphpage}{\@Alph\c@page} \newcommand*{\gls@numberpage}{\number\c@page} \newcommand*{\gls@arabicpage}{\@arabic\c@page} \newcommand*{\gls@romanpage}{\romannumeral\c@page} \newcommand*{\gls@Romanpage}{\@Roman\c@page} \newcommand*{\glsaddprotectedpagefmt}[1]{% \ifglsesclocations \protected@eappto\gls@protected@pagefmts{,\expandonce{\csname gls#1page\endcsname}}% \csedef{gls#1page}{\expandonce{\csname#1\endcsname}\noexpand\c@page}% \protected@eappto\@wrglossarynumberhook{% \noexpand\let\expandonce{\csname org@gls#1\endcsname}% \expandonce{\csname#1\endcsname}% \noexpand\def\expandonce{\csname#1\endcsname}{% \noexpand\@wrglossary@pageformat \expandonce{\csname gls#1page\endcsname}% \expandonce{\csname org@gls#1\endcsname}% }% }% \else \GlsWarnAddProtectedPageFmt \fi } \newcommand{\GlsWarnAddProtectedPageFmt}{% \GlossariesWarning{\string\glsaddprotectedpagefmt\space has no effect with esclocations=false}% } \newcommand*\@wrglossarynumberhook{} \newcommand{\@wrglossary@pageformat}[3]{% \ifx#3\c@page #1\else #2#3\fi } \newcommand*{\@@do@wrglossary}[1]{% \ifglsesclocations \@@do@esc@wrglossary{#1}% \else \@@do@noesc@wrglossary{#1}% \fi } \newcommand{\glswrglossdisableanchorcmds}{\let\glstexorpdfstring\@secondoftwo} \ifdef\texorpdfstring {\appto\glswrglossdisableanchorcmds{\let\texorpdfstring\@secondoftwo}}{} \ifdef\pdfstringdefPreHook {\appto\glswrglossdisableanchorcmds{\pdfstringdefPreHook}}{} \newcommand{\glswrglosslocationtarget}[1]{#1} \newcommand{\glswrglosslocationtextfmt}[1]{#1} \newcommand*{\@@do@noesc@wrglossary}[1]{% \expandafter\def\expandafter\@glslocref\expandafter{\theglsentrycounter}% \expandafter\def\expandafter\@glsHlocref\expandafter{\theHglsentrycounter}% \ifx\@glsHlocref\@glslocref \def\@glo@counterprefix{}% \else \@xp@gls@getcounterprefix{\@glslocref}{\@glsHlocref}% \fi \protected@edef\@gls@label{\glsdetoklabel{#1}}% \@@do@@wrglossary } \newif\ifglswrallowprimitivemods \glswrallowprimitivemodsfalse \newcommand*{\@@do@esc@wrglossary}[1]{% please read documented code! \begingroup \let\gls@orgthe\the \let\gls@orgnumber\number \let\gls@orgarabic\@arabic \let\gls@orgromannumeral\romannumeral \let\gls@orgalph\@alph \let\gls@orgAlph\@Alph \let\gls@orgRoman\@Roman \ifglswrallowprimitivemods \def\gls@the##1{% \ifx##1\c@page \gls@numberpage\else\gls@orgthe##1\fi}% \def\the{\expandafter\gls@the}% \def\gls@number##1{% \ifx##1\c@page \gls@numberpage\else\gls@orgnumber##1\fi}% \def\number{\expandafter\gls@number}% \def\romannumeral##1{% \ifx##1\c@page \gls@romanpage \else \gls@orgromannumeral##1\fi}% \fi \def\@arabic##1{% \ifx##1\c@page \gls@arabicpage\else\gls@orgarabic##1\fi}% \def\@Roman##1{% \ifx##1\c@page \gls@Romanpage\else\gls@orgRoman##1\fi}% \def\@alph##1{% \ifx##1\c@page \gls@alphpage\else\gls@orgalph##1\fi}% \def\@Alph##1{% \ifx##1\c@page \gls@Alphpage\else\gls@orgAlph##1\fi}% \@wrglossarynumberhook \gls@disablepagerefexpansion \protected@xdef\@glslocref{\theglsentrycounter}% \endgroup \@gls@checkmkidxchars\@glslocref \expandafter\ifx\theHglsentrycounter\theglsentrycounter\relax \def\@glo@counterprefix{}% \else \protected@edef\@glsHlocref{\theHglsentrycounter}% \@gls@checkmkidxchars\@glsHlocref \@xp@gls@getcounterprefix{\@glslocref}{\@glsHlocref}% \fi \protected@edef\@gls@label{\glsdetoklabel{#1}}% \@@do@@wrglossary } \newcommand*{\@@do@@wrglossary}{% \ifglsxindy \expandafter\@glo@check@mkidxrangechar\@glsnumberformat\@nil \def\@glo@range{}% \expandafter\if\@glo@prefix(\relax \def\@glo@range{:open-range}% \else \expandafter\if\@glo@prefix)\relax \def\@glo@range{:close-range}% \fi \fi \gls@glossary{\csname glo@\@gls@label @type\endcsname}{% (indexentry :tkey (\csname glo@\@gls@label @index\endcsname) :locref \string"{\@glo@counterprefix}{\@glslocref}\string" % :attr \string"\@gls@counter\@glo@suffix\string" \@glo@range ) }% \else \@set@glo@numformat{\@glo@numfmt}{\@gls@counter}{\@glsnumberformat}% {\@glo@counterprefix}% \gls@glossary{\csname glo@\@gls@label @type\endcsname}{% \string\glossaryentry{\csname glo@\@gls@label @index\endcsname \@gls@encapchar\@glo@numfmt}{\@glslocref}}% \fi } \newcommand*\@xp@gls@getcounterprefix[2]{% \bgroup \glswrglossdisableanchorcmds \protected@edef\@do@gls@getcounterprefix{% \noexpand\egroup \noexpand\@gls@getcounterprefix{#1}{#2}% }% \@do@gls@getcounterprefix } \newcommand*\@gls@getcounterprefix[2]{% \def\@gls@thisloc{#1}\def\@gls@thisHloc{#2}% \ifx\@gls@thisloc\@gls@thisHloc \def\@glo@counterprefix{}% \else \def\@gls@get@counterprefix##1.#1##2\end@getprefix{% \def\@glo@tmp{##2}% \ifx\@glo@tmp\@empty \def\@glo@counterprefix{}% \else \def\@glo@counterprefix{##1}% \fi }% \@gls@get@counterprefix#2.#1\end@getprefix \ifx\@glo@counterprefix\@empty \GlossariesWarning{Hyper target `#2' can't be formed by prefixing^^Jlocation `#1'. You need to modify the definition of \string\theH\@gls@counter^^Jotherwise you will get the warning: "`name{\@gls@counter.#1}' has been^^J referenced but does not exist"}% \fi \fi } \newcommand{\@do@seeglossary}[2]{% \def\@gls@xref{#2}% \@onelevel@sanitize\@gls@xref \@gls@checkmkidxchars\@gls@xref \ifglsxindy \gls@glossary{\csname glo@#1@type\endcsname}{% (indexentry :tkey (\csname glo@#1@index\endcsname) :xref (\string"\@gls@xref\string") :attr \string"see\string" ) }% \else \gls@glossary{\csname glo@#1@type\endcsname}{% \string\glossaryentry{\csname glo@#1@index\endcsname \@gls@encapchar glsseeformat\@gls@xref}{Z}}% \fi } \def\@gls@fixbraces#1#2#3\@nil{% \ifx#2[\relax \@@gls@fixbraces#1#2#3\@end@fixbraces \else \def#1{{#2#3}}% \fi } \def\@@gls@fixbraces#1[#2]#3\@end@fixbraces{% \def#1{[#2]{#3}}% } \newrobustcmd*{\glssee}[3][\seename]{% \@do@seeglossary{#2}{[#1]{#3}}} \newcommand*{\@glssee}[3][\seename]{% \glssee[#1]{#3}{#2}} \newrobustcmd*{\glsseeformat}[3][\seename]{% \emph{#1} \glsseelist{#2}} \newrobustcmd*{\glsseelist}[1]{% \let\@gls@dolast\relax \let\@gls@donext\relax \@for\@gls@thislabel:=#1\do{% \ifx\@xfor@nextelement\@nnil \@gls@dolast \else \@gls@donext \fi \expandafter\glsseeitem\expandafter{\@gls@thislabel}% \let\@gls@dolast\glsseelastsep \let\@gls@donext\glsseesep }% } \newcommand*{\glsseelastsep}{\space\andname\space} \newcommand*{\glsseesep}{, } \newrobustcmd*{\glsseeitem}[1]{\glshyperlink[\glsseeitemformat{#1}]{#1}} \newcommand*{\glsseeitemformat}[1]{% \ifglshasshort{#1}{\glsentrytext{#1}}{\glsentryname{#1}}% } \newcommand*{\gls@save@numberlist}[1]{% \ifglssavenumberlist \toks@{#1}% \protected@edef\@do@writeaux@info{% \noexpand\csgdef{glo@\glscurrententrylabel @numberlist}{\the\toks@}% }% \@onelevel@sanitize\@do@writeaux@info \protected@write\@auxout{}{\@do@writeaux@info}% \fi } \newcommand*{\warn@noprintglossary}{}% \ifcsundef{printglossary}{}% {% \@gls@warnonglossdefined \undef\printglossary } \newcommand*{\@printgloss@checkexists@noignored}[2]{% \@ifglossaryexists{#1}% {#2}% {% \ifignoredglossary{#1}% {\GlossariesWarning{Glossary `#1' is an ignored glossary}}% {\GlossariesWarning{Glossary `#1' doesn't exist}}% }% } \newcommand*{\@printgloss@checkexists@allowignored}[2]{% \s@ifglossaryexists{#1}% {#2}% {\GlossariesWarning{Glossary `#1' doesn't exist}}% } \let\@printgloss@checkexists\@printgloss@checkexists@noignored \newcommand*{\printglossary}[1][type=\glsdefaulttype]{% \let\@printgloss@checkexists\@printgloss@checkexists@noignored \@printglossary{#1}{\@print@glossary}% } \newcommand*{\printglossaries}{% \forallglossaries{\@@glo@type}{\printglossary[type=\@@glo@type]}% } \newcommand*{\printnoidxglossary}[1][type=\glsdefaulttype]{% \let\@printgloss@checkexists\@printgloss@checkexists@noignored \@printglossary{#1}{\@print@noidx@glossary}% } \newcommand*{\printnoidxglossaries}{% \forallglossaries{\@@glo@type}{\printnoidxglossary[type=\@@glo@type]}% } \newcommand*{\@printgloss@setsort}{} \newcommand*{\@gls@preglossaryhook}{} \newcommand{\@printglossary}[2]{% \def\@glo@type{\glsdefaulttype}% \def\glossarytitle{\csname @glotype@\@glo@type @title\endcsname}% \def\glossarytoctitle{\glossarytitle}% \let\org@glossarytitle\glossarytitle \def\@glossarystyle{% \ifx\@glossary@default@style\relax \GlossariesWarning{No default glossary style provided \MessageBreak for the glossary `\@glo@type'. \MessageBreak Using fallback. \MessageBreak To fix this set the style with \MessageBreak \string\setglossarystyle\space or use the \MessageBreak style key=value option}% \fi }% \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}% \let\@org@glossaryentrynumbers\glossaryentrynumbers \gls@printglossary@begin \@printgloss@setsort \setkeys{printgloss}{#1}% \@printgloss@checkexists{\@glo@type}% {% \ifx\glossarytitle\org@glossarytitle \else \expandafter\let\csname @glotype@\@glo@type @title\endcsname \glossarytitle \fi \let\currentglossary\@glo@type \let\org@glossaryentrynumbers\glossaryentrynumbers \let\glsnonextpages\@glsnonextpages \let\glsnextpages\@glsnextpages \let\nopostdesc\@nopostdesc \gls@dotoctitle \@glossarystyle \let\gls@org@glossaryentryfield\glossentry \let\gls@org@glossarysubentryfield\subglossentry \renewcommand{\glossentry}[1]{% \protected@xdef\glscurrententrylabel{\glsdetoklabel{##1}}% \gls@org@glossaryentryfield{##1}% }% \renewcommand{\subglossentry}[2]{% \protected@xdef\glscurrententrylabel{\glsdetoklabel{##2}}% \gls@org@glossarysubentryfield{##1}{##2}% }% \@gls@preglossaryhook #2% }% \gls@printglossary@end \global\let\glossaryentrynumbers\@org@glossaryentrynumbers \global\let\warn@noprintglossary\relax } \newcommand{\gls@printglossary@begin}{\begingroup} \newcommand{\gls@printglossary@end}{% \expandafter\endgroup\if@endpe\@doendpe\fi } \newcommand{\@print@glossary}{% \makeatletter \@input@{\jobname.\csname @glotype@\@glo@type @in\endcsname}% \IfFileExists{\jobname.\csname @glotype@\@glo@type @in\endcsname}% {}% {\null}% \ifglsxindy \gls@xdy@set@lang{\@glo@type}% \edef\@do@auxoutstuff{% \noexpand\AtEndDocument{% \noexpand\immediate\noexpand\write\@auxout{% \string\providecommand\string\@xdylanguage[2]{}}% \noexpand\immediate\noexpand\write\@auxout{% \string\@xdylanguage{\@glo@type}{\@gls@langmod}}% }% }% \@do@auxoutstuff \edef\@do@auxoutstuff{% \noexpand\AtEndDocument{% \noexpand\immediate\noexpand\write\@auxout{% \string\providecommand\string\@gls@codepage[2]{}}% \noexpand\immediate\noexpand\write\@auxout{% \string\@gls@codepage{\@glo@type}{\gls@codepage}}% }% }% \@do@auxoutstuff \fi \renewcommand*{\@warn@nomakeglossaries}{% \GlossariesWarningNoLine{\string\makeglossaries\space hasn't been used,^^Jthe glossaries will not be updated}% }% } \newcommand*{\@glo@sortentries}[2]{% \glosortentrieswarning \def\@glo@sortinglist{}% \def\@glo@sortinghandler{#1}% \protected@edef\@glo@type{#2}% \forlistcsloop{\@glo@do@sortentries}{@glsref@#2}% \csdef{@glsref@#2}{}% \@for\@this@label:=\@glo@sortinglist\do{% \xifinlistcs{\@this@label}{@glsref@#2}% {}% {% \listcsxadd{@glsref@#2}{\@this@label}% }% \ifcsdef{@glo@sortingchildren@\@this@label}% {% \@glo@addchildren{#2}{\@this@label}% }% {}% }% } \newcommand*{\@glo@addchildren}[2]{% \bgroup \letcs{\@glo@childlist}{@glo@sortingchildren@#2}% \@for\@this@childlabel:=\@glo@childlist\do {% \xifinlistcs{\@this@childlabel}{@glsref@#1}% {}% {% \listcsxadd{@glsref@#1}{\@this@childlabel}% }% \ifcsdef{@glo@sortingchildren@\@this@childlabel}% {% \@glo@addchildren{#1}{\@this@childlabel}% }% {% }% }% \egroup } \newcommand*{\@glo@do@sortentries}[1]{% \ifglshasparent{#1}% {% \protected@edef\@glo@parent{\csuse{glo@\glsdetoklabel{#1}@parent}}% \ifcsundef{@glo@sortingchildren@\@glo@parent}% {% \csdef{@glo@sortingchildren@\@glo@parent}{}% }% {}% \expandafter\@glo@sortedinsert \csname @glo@sortingchildren@\@glo@parent\endcsname{#1}% \xifinlistcs{\@glo@parent}{@glsref@\@glo@type}% {% }% {% \expandafter\@glo@do@sortentries\expandafter{\@glo@parent}% }% }% {% \@glo@sortedinsert{\@glo@sortinglist}{#1}% }% } \newcommand*{\@glo@sortedinsert}[2]{% \dtl@insertinto{#2}{#1}{\@glo@sortinghandler}% }% \newcommand*{\@glo@sorthandler@word}[2]{% \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}% \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}% \edef\glo@do@compare{% \noexpand\dtlwordindexcompare{\noexpand\dtl@sortresult}% {\expandonce\@gls@sort@B}% {\expandonce\@gls@sort@A}% }% \glo@do@compare } \newcommand*{\@glo@sorthandler@letter}[2]{% \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}% \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}% \edef\glo@do@compare{% \noexpand\dtlletterindexcompare{\noexpand\dtl@sortresult}% {\expandonce\@gls@sort@B}% {\expandonce\@gls@sort@A}% }% \glo@do@compare } \newcommand*{\@glo@sorthandler@case}[2]{% \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}% \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}% \edef\glo@do@compare{% \noexpand\dtlcompare{\noexpand\dtl@sortresult}% {\expandonce\@gls@sort@B}% {\expandonce\@gls@sort@A}% }% \glo@do@compare } \newcommand*{\@glo@sorthandler@nocase}[2]{% \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}% \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}% \edef\glo@do@compare{% \noexpand\dtlicompare{\noexpand\dtl@sortresult}% {\expandonce\@gls@sort@B}% {\expandonce\@gls@sort@A}% }% \glo@do@compare } \newcommand*{\@glo@sortmacro@word}[1]{% \ifdefstring{\@glo@default@sorttype}{standard}% {% \@glo@sortentries{\@glo@sorthandler@word}{#1}% }% {% \PackageError{glossaries}{Conflicting sort options:^^J \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J \string\printnoidxglossary[sort=word]}{}% }% } \newcommand*{\@glo@sortmacro@letter}[1]{% \ifdefstring{\@glo@default@sorttype}{standard}% {% \@glo@sortentries{\@glo@sorthandler@letter}{#1}% }% {% \PackageError{glossaries}{Conflicting sort options:^^J \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J \string\printnoidxglossary[sort=letter]}{}% }% } \newcommand*{\@glo@sortmacro@standard}[1]{% \ifdefstring{\@glo@default@sorttype}{standard}% {% \ifcsdef{@glo@sorthandler@\glsorder}% {% \@glo@sortentries{\csuse{@glo@sorthandler@\glsorder}}{#1}% }% {% \PackageError{glossaries}{Unknown sort handler `\glsorder'}{}% }% }% {% \PackageError{glossaries}{Conflicting sort options:^^J \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J \string\printnoidxglossary[sort=standard]}{}% }% } \newcommand*{\@glo@sortmacro@case}[1]{% \ifdefstring{\@glo@default@sorttype}{standard}% {% \@glo@sortentries{\@glo@sorthandler@case}{#1}% }% {% \PackageError{glossaries}{Conflicting sort options:^^J \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J \string\printnoidxglossary[sort=case]}{}% }% } \newcommand*{\@glo@sortmacro@nocase}[1]{% \ifdefstring{\@glo@default@sorttype}{standard}% {% \@glo@sortentries{\@glo@sorthandler@nocase}{#1}% }% {% \PackageError{glossaries}{Conflicting sort options:^^J \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J \string\printnoidxglossary[sort=nocase]}{}% }% } \newcommand*{\@glo@sortmacro@def}[1]{% \def\@glo@sortinglist{}% \forglsentries[#1]{\@gls@thislabel}% {% \xifinlistcs{\@gls@thislabel}{@glsref@#1}% {% \listeadd{\@glo@sortinglist}{\@gls@thislabel}% }% {% }% }% \cslet{@glsref@#1}{\@glo@sortinglist}% } \newcommand*{\@glo@sortmacro@def@do}[1]{% \ifinlistcs{#1}{@glsref@\@glo@type}% {}% {% \listcsadd{@glsref@\@glo@type}{#1}% }% \ifcsdef{@glo@sortingchildren@#1}% {% \@glo@addchildren{\@glo@type}{#1}% }% {}% } \newcommand*{\@glo@sortmacro@use}[1]{} \newcommand*{\@print@noidx@glossary}{% \ifcsdef{@glsref@\@glo@type}% {% \ifcsdef{@glo@sortmacro@\@glo@sorttype}% {% \csuse{@glo@sortmacro@\@glo@sorttype}{\@glo@type}% }% {% \PackageError{glossaries}{Unknown sort handler `\@glo@sorttype'}{}% }% \glossarysection[\glossarytoctitle]{\glossarytitle}% \glossarypreamble \def\@gls@currentlettergroup{}% \begin{theglossary}% \glossaryheader \glsresetentrylist \forlistcsloop{\@gls@noidx@do}{@glsref@\@glo@type}% \end{theglossary}% \glossarypostamble }% {% \@gls@noref@warn{\@glo@type}% }% } \def\glo@grabfirst#1#2\@nil{% \def\@gls@firsttok{#1}% \ifdefempty\@gls@firsttok {% \def\@glo@thislettergrp{0}% }% {% \@onelevel@sanitize\@gls@firsttok \expandafter\@glo@grabfirst\@gls@firsttok{}{}\@nil }% } \def\@glo@grabfirst#1#2\@nil{% \ifdefempty\@glo@thislettergrp {% \def\@glo@thislettergrp{glssymbols}% }% {% \count@=\uccode`#1\relax \ifnum\count@=0\relax \def\@glo@thislettergrp{glssymbols}% \else \ifdefstring\@glo@sorttype{case}% {% \count@=`#1\relax }% {% }% \edef\@glo@thislettergrp{\the\count@}% \fi }% } \newcommand{\@gls@noidx@do}[1]{% \global\letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% \ifglshasparent{#1}% {% \gls@level=\csuse{glo@\glsdetoklabel{#1}@level}\relax \ifdefvoid{\@gls@loclist} {% \subglossentry{\gls@level}{#1}{}% }% {% \subglossentry{\gls@level}{#1}% {% \glsnoidxprenumberlist{#1}% \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% }% }% }% {% \letcs{\@gls@sort}{glo@\glsdetoklabel{#1}@sort}% \expandafter\glo@grabfirst\@gls@sort{}{}\@nil \ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}% {}% {% \ifdefempty{\@gls@currentlettergroup}{}% {% \global\let\@glo@thislettergrp\@glo@thislettergrp \glsgroupskip }% \glsgroupheading{\@glo@thislettergrp}% }% \global\let\@gls@currentlettergroup\@glo@thislettergrp \ifdefvoid{\@gls@loclist} {% \glossentry{#1}{}% }% {% \glossentry{#1}% {% \glsnoidxprenumberlist{#1}% \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% }% }% }% } \newcommand*{\glsnoidxloclist}[1]{% \def\@gls@noidxloclist@sep{}% \def\@gls@noidxloclist@prev{}% \forlistloop{\glsnoidxloclisthandler}{#1}% } \newcommand*{\glsnoidxloclisthandler}[1]{% \ifdefstring{\@gls@noidxloclist@prev}{#1}% {% }% {% \@gls@noidxloclist@sep #1% \def\@gls@noidxloclist@sep{\delimN}% \def\@gls@noidxloclist@prev{#1}% }% } \newcommand*{\glsnoidxdisplayloclisthandler}[1]{% \ifdefstring{\@gls@noidxloclist@prev}{#1}% {% }% {% \@gls@noidxloclist@sep \@gls@noidxloclist@prev \def\@gls@noidxloclist@prev{#1}% }% } \newcommand*\glsnoidxdisplayloc[4]{% \setentrycounter[#1]{#2}% \csuse{#3}{#4}% } \newcommand*{\@gls@reference}[3]{% \glsdoifexistsorwarn{#2}% {% \ifcsundef{@glsref@#1}{\csgdef{@glsref@#1}{}}{}% \ifinlistcs{#2}{@glsref@#1}% {}% {\listcsgadd{@glsref@#1}{#2}}% \ifcsundef{glo@\glsdetoklabel{#2}@loclist}% {\csgdef{glo@\glsdetoklabel{#2}@loclist}{}}% {}% \listcsgadd{glo@\glsdetoklabel{#2}@loclist}{#3}% }% } \define@key{printgloss}{type}{\def\@glo@type{#1}} \define@key{printgloss}{title}{% \def\glossarytitle{#1}% \let\gls@dotoctitle\relax } \define@key{printgloss}{toctitle}{% \def\glossarytoctitle{#1}% \let\gls@dotoctitle\relax } \define@key{printgloss}{style}{% \ifcsundef{@glsstyle@#1}% {% \PackageError{glossaries}% {Glossary style `#1' undefined}{}% }% {% \def\@glossarystyle{\setglossarystyle{#1}}% }% } \define@choicekey{printgloss}{numberedsection}% [\gls@numberedsection@val\gls@numberedsection@nr]% {false,nolabel,autolabel,nameref}[nolabel]% {% \ifcase\gls@numberedsection@nr\relax \renewcommand*{\@@glossarysecstar}{*}% \renewcommand*{\@@glossaryseclabel}{}% \or \renewcommand*{\@@glossarysecstar}{}% \renewcommand*{\@@glossaryseclabel}{}% \or \renewcommand*{\@@glossarysecstar}{}% \renewcommand*{\@@glossaryseclabel}{\label{\glsautoprefix\@glo@type}}% \or \renewcommand*{\@@glossarysecstar}{*}% \renewcommand*{\@@glossaryseclabel}{% \protected@edef\@currentlabelname{\glossarytoctitle}% \label{\glsautoprefix\@glo@type}}% \fi } \define@choicekey{printgloss}{nogroupskip}{true,false}[true]{% \csuse{glsnogroupskip#1}% } \define@choicekey{printgloss}{nopostdot}{true,false}[true]{% \csuse{glsnopostdot#1}% } \newcommand*{\GlsEntryCounterLabelPrefix}{glsentry-} \define@choicekey{printgloss}{entrycounter}{true,false}[true]{% \csuse{glsentrycounter#1}% \@gls@define@glossaryentrycounter } \define@choicekey{printgloss}{subentrycounter}{true,false}[true]{% \csuse{glssubentrycounter#1}% \@gls@define@glossarysubentrycounter } \define@boolkey{printgloss}[gls]{nonumberlist}[true]{% \ifglsnonumberlist \def\glossaryentrynumbers##1{}% \else \def\glossaryentrynumbers##1{##1}% \fi} \define@key{printgloss}{sort}{\@glo@assign@sortkey{#1}} \newcommand*{\@glo@no@assign@sortkey}[1]{% \PackageError{glossaries}{`sort' key not permitted with \string\printglossary}% {The `sort' key may only be used with \string\printnoidxglossary}% } \newcommand*{\@@glo@assign@sortkey}[1]{% \def\@glo@sorttype{#1}% } \newcommand*{\@glsnonextpages}{% \gdef\glossaryentrynumbers##1{% \glsresetentrylist }% } \newcommand*{\@glsnextpages}{% \gdef\glossaryentrynumbers##1{% ##1\glsresetentrylist}} \newcommand*{\glsresetentrylist}{% \global\let\glossaryentrynumbers\org@glossaryentrynumbers} \newcommand*{\glsnonextpages}{} \newcommand*{\glsnextpages}{} \@gls@define@glossaryentrycounter \@gls@define@glossarysubentrycounter \newcommand*{\glsresetsubentrycounter}{% \ifglssubentrycounter \setcounter{glossarysubentry}{0}% \fi } \newcommand*{\glsresetentrycounter}{% \ifglsentrycounter \setcounter{glossaryentry}{0}% \fi } \newcommand*{\glsstepentry}[1]{% \ifglsentrycounter \refstepcounter{glossaryentry}% \label{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}% \fi } \newcommand*{\glsstepsubentry}[1]{% \ifglssubentrycounter \protected@edef\currentglssubentry{\glsdetoklabel{#1}}% \refstepcounter{glossarysubentry}% \label{\GlsEntryCounterLabelPrefix\currentglssubentry}% \fi } \newcommand*{\glsrefentry}[1]{% \ifglsentrycounter \ref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}% \else \ifglssubentrycounter \ref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}% \else \gls{#1}% \fi \fi } \newcommand*{\glsentrycounterlabel}{% \ifglsentrycounter \theglossaryentry.\space \fi } \newcommand*{\glssubentrycounterlabel}{% \ifglssubentrycounter \theglossarysubentry)\space \fi } \newcommand*{\glsentryitem}[1]{% \ifglsentrycounter \glsstepentry{#1}\glsentrycounterlabel \else \glsresetsubentrycounter \fi } \newcommand*{\glssubentryitem}[1]{% \ifglssubentrycounter \glsstepsubentry{#1}\glssubentrycounterlabel \fi } \ifcsundef{theglossary}% {% \newenvironment{theglossary}{}{}% }% {% \@gls@warnontheglossdefined \renewenvironment{theglossary}{}{}% } \newcommand*{\glossaryheader}{} \newcommand*{\glstarget}[2]{\@glstarget{\glolinkprefix#1}{#2}} \newcommand{\glossentry}[2]{\glossentryname{#1} #2} \newcommand*{\glossentryname}[1]{% \glsdoifexistsorwarn{#1}% {% \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% \expandafter\glsnamefont\expandafter{\glo@name}% }% } \newcommand*{\Glossentryname}[1]{% \glsdoifexistsorwarn{#1}% {% \glsnamefont{\Glsentryname{#1}}% }% } \glsmfuaddmap{\glossentryname}{\Glossentryname} \newcommand*{\glossentrydesc}[1]{% \glsdoifexistsorwarn{#1}% {% \glsentrydesc{#1}% }% } \newcommand*{\Glossentrydesc}[1]{% \glsdoifexistsorwarn{#1}% {% \Glsentrydesc{#1}% }% } \glsmfuaddmap{\glossentrydesc}{\Glossentrydesc} \newcommand*{\glossentrysymbol}[1]{% \glsdoifexistsorwarn{#1}% {% \glsentrysymbol{#1}% }% } \newcommand*{\Glossentrysymbol}[1]{% \glsdoifexistsorwarn{#1}% {% \Glsentrysymbol{#1}% }% } \glsmfuaddmap{\glossentrysymbol}{\Glossentrysymbol} \newcommand{\subglossentry}[3]{\glossentryname{#2} #3} \newcommand*{\glsgroupskip}{} \newcommand*{\glsgroupheading}[1]{} \newrobustcmd*{\glsgetgrouptitle}[1]{% \@gls@getgrouptitle{#1}{\@gls@grptitle}% \@gls@grptitle } \ExplSyntaxOn \newcommand*{\@gls@getgrouptitle}[2]{% \def#2{#1}% \regex_match:nnT { ^\A(.|glsnumbers|glssymbols)\Z } { #1 } { \ifcsundef{#1groupname}{}{\letcs#2{#1groupname}} } } \ExplSyntaxOff \newcommand*{\@gls@noidx@getgrouptitle}[2]{% \DTLifint{#1}% {\edef#2{\char#1\relax}}% {% \ifcsundef{#1groupname}{\def#2{#1}}{\letcs#2{#1groupname}}% }% } \ExplSyntaxOn \newcommand*{\glsgetgrouplabel}[1]{% \str_if_eq:eeTF {#1} { \glssymbolsgroupname } { glssymbols } { \str_if_eq:eeTF {#1} { \glsnumbersgroupname } { glsnumbers } { #1 } } } \ExplSyntaxOff \newcommand*{\setentrycounter}[2][]{% \def\@glo@counterprefix{#1}% \ifx\@glo@counterprefix\@empty \def\@glo@counterprefix{.}% \else \def\@glo@counterprefix{.#1.}% \fi \def\glsentrycounter{#2}% } \newcommand*{\setglossarystyle}[1]{% \ifcsundef{@glsstyle@#1}% {% \PackageError{glossaries}{Glossary style `#1' undefined}{}% }% {% \csname @glsstyle@#1\endcsname }% \ifx\@glossary@default@style\relax \protected@edef\@glossary@default@style{#1}% \fi } \newcommand{\newglossarystyle}[2]{% \ifcsundef{@glsstyle@#1}% {% \expandafter\def\csname @glsstyle@#1\endcsname{#2}% }% {% \PackageError{glossaries}{Glossary style `#1' is already defined}{}% }% } \newcommand{\renewglossarystyle}[2]{% \ifcsundef{@glsstyle@#1}% {% \PackageError{glossaries}{Glossary style `#1' isn't already defined}{}% }% {% \csdef{@glsstyle@#1}{#2}% }% } \newcommand*{\glsnamefont}[1]{#1} \ifcsundef{hyperlink}% {% \def\glshypernumber#1{#1}% }% {% \def\glshypernumber#1{\@xp@glshypernumber{#1}} } \newrobustcmd{\@xp@glshypernumber}[1]{% \@glshypernumber#1\nohyperpage{}\@nil } \def\@glshypernumber#1\nohyperpage#2#3\@nil{% \ifx\\#1\\% \else \gls@delimR#1\delimR\delimR\\% \fi \ifx\\#2\\% \else #2% \fi \ifx\\#3\\% \else \@glshypernumber#3\@nil \fi } \def\gls@delimR#1\delimR #2\delimR #3\\{% \ifx\\#2\\% \gls@delimN{#1}% \else \@gls@numberlink{#1}\delimR\@gls@numberlink{#2}% \fi } \def\gls@delimN#1{\gls@@delimN#1\delimN \delimN\\} \def\gls@@delimN#1\delimN #2\delimN#3\\{% \ifx\\#3\\% \@gls@numberlink{#1}% \else \@gls@numberlink{#1}\delimN\@gls@numberlink{#2}% \fi } \def\@gls@numberlink#1{% \begingroup \toks@={}% \@gls@removespaces#1 \@nil \endgroup } \def\@gls@removespaces#1 #2\@nil{% \toks@=\expandafter{\the\toks@#1}% \ifx\\#2\\% \edef\@gls@x{\the\toks@}% \ifx\@gls@x\empty \else \bgroup \glswrglossdisableanchorcmds \protected@edef\@gls@tmp{\glsentrycounter\@glo@counterprefix \glswrglosslocationtarget{\@gls@x}}% \@onelevel@sanitize\@gls@tmp \edef\@gls@x{\noexpand\egroup \noexpand\hyperlink{\@gls@tmp}% {\noexpand\glswrglosslocationtextfmt{\the\toks@}}% }% \@gls@x \fi \else \@gls@ReturnAfterFi{% \@gls@removespaces#2\@nil }% \fi } \long\def\@gls@ReturnAfterFi#1\fi{\fi#1} \newcommand*{\hyperrm}[1]{\textrm{\glshypernumber{#1}}} \newcommand*{\hypersf}[1]{\textsf{\glshypernumber{#1}}} \newcommand*{\hypertt}[1]{\texttt{\glshypernumber{#1}}} \newcommand*{\hyperbf}[1]{\textbf{\glshypernumber{#1}}} \newcommand*{\hypermd}[1]{\textmd{\glshypernumber{#1}}} \newcommand*{\hyperit}[1]{\textit{\glshypernumber{#1}}} \newcommand*{\hypersl}[1]{\textsl{\glshypernumber{#1}}} \newcommand*{\hyperup}[1]{\textup{\glshypernumber{#1}}} \newcommand*{\hypersc}[1]{\textsc{\glshypernumber{#1}}} \newcommand*{\hyperemph}[1]{\emph{\glshypernumber{#1}}} \newcommand{\oldacronym}[4][\gls@label]{% \def\gls@label{#2}% \newacronym[#4]{#1}{#2}{#3}% \ifcsundef{xspace}% {% \expandafter\edef\csname#1\endcsname{% \noexpand\@ifstar{\noexpand\Gls{#1}}{\noexpand\gls{#1}}% }% }% {% \expandafter\edef\csname#1\endcsname{% \noexpand\@ifstar{\noexpand\Gls{#1}\noexpand\xspace}{% \noexpand\gls{#1}\noexpand\xspace}% }% }% } \newcommand{\newacronym}[4][]{% \gls@newacronym{#1}{#2}{#3}{#4}% } \newcommand{\gls@newacronym}[4]{% \renewcommand{\gls@newacronym}[4]{% \PackageError{glossaries}{incompatible acronym style: rollback may be required}% {something has gone wrong with \string\newacronym. Try \string\usepackage{glossaries}[=v4.49]}% }% \setacronymstyle{long-short}% \newacronym[#1]{#2}{#3}{#4}% } \newcommand*{\acrpluralsuffix}{\glsacrpluralsuffix} \newrobustcmd*{\glstextup}[1]{\ifdef\textulc{\textulc{#1}}{\textup{#1}}} \newcommand*{\glsshortkey}{short} \newcommand*{\glsshortpluralkey}{shortplural} \newcommand*{\glslongkey}{long} \newcommand*{\glslongpluralkey}{longplural} \newcommand{\acrlinkfullformat}[5]{% \acrfullformat{#1{#3}{#4}[#5]}{#2{#3}{#4}[]}% } \newcommand{\acrfullformat}[2]{#1\glsspace(#2)} \newrobustcmd{\glsspace}{\space} \newcommand*{\acrfullfmt}[3]{% \acrlinkfullformat{\@acrlong}{\@acrshort}{#1}{#2}{#3}% } \newcommand*{\Acrfullfmt}[3]{% \acrlinkfullformat{\@Acrlong}{\@acrshort}{#1}{#2}{#3}% } \newcommand*{\ACRfullfmt}[3]{% \acrlinkfullformat{\@ACRlong}{\@ACRshort}{#1}{#2}{#3}% } \newcommand*{\acrfullplfmt}[3]{% \acrlinkfullformat{\@acrlongpl}{\@acrshortpl}{#1}{#2}{#3}% } \newcommand*{\Acrfullplfmt}[3]{% \acrlinkfullformat{\@Acrlongpl}{\@acrshortpl}{#1}{#2}{#3}% } \newcommand*{\ACRfullplfmt}[3]{% \acrlinkfullformat{\@ACRlongpl}{\@ACRshortpl}{#1}{#2}{#3}% } \newrobustcmd*{\acrfull}{\@gls@hyp@opt\ns@acrfull} \newcommand*\ns@acrfull[2][]{% \new@ifnextchar[{\@acrfull{#1}{#2}}% {\@acrfull{#1}{#2}[]}% } \def\@acrfull#1#2[#3]{% \acrfullfmt{#1}{#2}{#3}% } \newrobustcmd*{\Acrfull}{\@gls@hyp@opt\ns@Acrfull} \glsmfuaddmap{\acrfull}{\Acrfull} \newcommand*\ns@Acrfull[2][]{% \new@ifnextchar[{\@Acrfull{#1}{#2}}% {\@Acrfull{#1}{#2}[]}% } \def\@Acrfull#1#2[#3]{% \Acrfullfmt{#1}{#2}{#3}% } \newrobustcmd*{\ACRfull}{\@gls@hyp@opt\ns@ACRfull} \newcommand*\ns@ACRfull[2][]{% \new@ifnextchar[{\@ACRfull{#1}{#2}}% {\@ACRfull{#1}{#2}[]}% } \def\@ACRfull#1#2[#3]{% \ACRfullfmt{#1}{#2}{#3}% } \newrobustcmd*{\acrfullpl}{\@gls@hyp@opt\ns@acrfullpl} \newcommand*\ns@acrfullpl[2][]{% \new@ifnextchar[{\@acrfullpl{#1}{#2}}% {\@acrfullpl{#1}{#2}[]}% } \def\@acrfullpl#1#2[#3]{% \acrfullplfmt{#1}{#2}{#3}% } \newrobustcmd*{\Acrfullpl}{\@gls@hyp@opt\ns@Acrfullpl} \glsmfuaddmap{\acrfullpl}{\Acrfullpl} \newcommand*\ns@Acrfullpl[2][]{% \new@ifnextchar[{\@Acrfullpl{#1}{#2}}% {\@Acrfullpl{#1}{#2}[]}% } \def\@Acrfullpl#1#2[#3]{% \Acrfullplfmt{#1}{#2}{#3}% } \newrobustcmd*{\ACRfullpl}{\@gls@hyp@opt\ns@ACRfullpl} \newcommand*\ns@ACRfullpl[2][]{% \new@ifnextchar[{\@ACRfullpl{#1}{#2}}% {\@ACRfullpl{#1}{#2}[]}% } \def\@ACRfullpl#1#2[#3]{% \ACRfullplfmt{#1}{#2}{#3}% } \newcommand{\acronymfont}[1]{#1} \newcommand{\firstacronymfont}[1]{\acronymfont{#1}} \newcommand*{\acrnameformat}[2]{\acronymfont{#1}} \newtoks\glskeylisttok \newtoks\glslabeltok \newtoks\glsshorttok \newtoks\glslongtok \newcommand*{\newacronymhook}{} \newcommand*{\SetGenericNewAcronym}{% \let\@Gls@entryname\@Gls@acrentryname \renewcommand{\newacronym}[4][]{% \ifdefempty{\@glsacronymlists}% {% \def\@glo@type{\acronymtype}% \setkeys{glossentry}{##1}% \DeclareAcronymList{\@glo@type}% }% {}% \glskeylisttok{##1}% \glslabeltok{##2}% \glsshorttok{##3}% \glslongtok{##4}% \newacronymhook \protected@edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% {% type=\acronymtype,% name={\expandonce{\acronymentry{##2}}},% sort={\acronymsort{\the\glsshorttok}{\the\glslongtok}},% text={\the\glsshorttok},% short={\the\glsshorttok},% shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},% long={\the\glslongtok},% longplural={\the\glslongtok\noexpand\glspluralsuffix},% \GenericAcronymFields,% \the\glskeylisttok }% }% \@do@newglossaryentry }% \renewcommand*{\acrfullfmt}[3]{% \glslink[##1]{##2}{\genacrfullformat{##2}{##3}}}% \renewcommand*{\Acrfullfmt}[3]{% \glslink[##1]{##2}{\Genacrfullformat{##2}{##3}}}% \renewcommand*{\ACRfullfmt}[3]{% \glslink[##1]{##2}{% \glsuppercase{\genacrfullformat{##2}{##3}}}}% \renewcommand*{\acrfullplfmt}[3]{% \glslink[##1]{##2}{\genplacrfullformat{##2}{##3}}}% \renewcommand*{\Acrfullplfmt}[3]{% \glslink[##1]{##2}{\Genplacrfullformat{##2}{##3}}}% \renewcommand*{\ACRfullplfmt}[3]{% \glslink[##1]{##2}{% \glsuppercase{\genplacrfullformat{##2}{##3}}}}% \renewcommand*{\glsentryfull}[1]{\genacrfullformat{##1}{}}% \renewcommand*{\Glsentryfull}[1]{\Genacrfullformat{##1}{}}% \renewcommand*{\glsentryfullpl}[1]{\genplacrfullformat{##1}{}}% \renewcommand*{\Glsentryfullpl}[1]{\Genplacrfullformat{##1}{}}% } \newcommand*{\GenericAcronymFields}{description={\the\glslongtok}} \newcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{#1}}} \newcommand*{\acronymsort}[2]{#1} \newcommand*{\setacronymstyle}[1]{% \ifcsundef{@glsacr@dispstyle@#1} {% \PackageError{glossaries}{Undefined acronym style `#1'}{}% }% {% \ifdefempty{\@glsacronymlists}% {% \DeclareAcronymList{\acronymtype}% }% {}% \SetGenericNewAcronym \GlsUseAcrStyleDefs{#1}% \@for\@gls@type:=\@glsacronymlists\do{% \defglsentryfmt[\@gls@type]{\GlsUseAcrEntryDispStyle{#1}}% }% }% } \newcommand*{\newacronymstyle}[3]{% \ifcsdef{@glsacr@dispstyle@#1}% {% \PackageError{glossaries}{Acronym style `#1' already exists}{}% }% {% \csdef{@glsacr@dispstyle@#1}{#2}% \csdef{@glsacr@styledefs@#1}{#3}% }% } \newcommand*{\renewacronymstyle}[3]{% \ifcsdef{@glsacr@dispstyle@#1}% {% \csdef{@glsacr@dispstyle@#1}{#2}% \csdef{@glsacr@styledefs@#1}{#3}% }% {% \PackageError{glossaries}{Acronym style `#1' doesn't exist}{}% }% } \newcommand*{\GlsUseAcrEntryDispStyle}[1]{\csuse{@glsacr@dispstyle@#1}} \newcommand*{\GlsUseAcrStyleDefs}[1]{\csuse{@glsacr@styledefs@#1}} \newacronymstyle{long-short}% {% \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}% }% {% \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}% \renewcommand*{\genacrfullformat}[2]{% \glsentrylong{##1}##2\space (\protect\firstacronymfont{\glsentryshort{##1}})% }% \renewcommand*{\Genacrfullformat}[2]{% \Glsentrylong{##1}##2\space (\protect\firstacronymfont{\glsentryshort{##1}})% }% \renewcommand*{\genplacrfullformat}[2]{% \glsentrylongpl{##1}##2\space (\protect\firstacronymfont{\glsentryshortpl{##1}})% }% \renewcommand*{\Genplacrfullformat}[2]{% \Glsentrylongpl{##1}##2\space (\protect\firstacronymfont{\glsentryshortpl{##1}})% }% \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}% \renewcommand*{\acronymsort}[2]{##1}% \renewcommand*{\acronymfont}[1]{##1}% \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}% \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}% } \newacronymstyle{long-sp-short}% {% \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}% }% {% \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}% \renewcommand*{\genacrfullformat}[2]{% \glsentrylong{##1}##2\glsacspace{##1}% (\protect\firstacronymfont{\glsentryshort{##1}})% }% \renewcommand*{\Genacrfullformat}[2]{% \Glsentrylong{##1}##2\glsacspace{##1}% (\protect\firstacronymfont{\glsentryshort{##1}})% }% \renewcommand*{\genplacrfullformat}[2]{% \glsentrylongpl{##1}##2\glsacspace{##1}% (\protect\firstacronymfont{\glsentryshortpl{##1}})% }% \renewcommand*{\Genplacrfullformat}[2]{% \Glsentrylongpl{##1}##2\glsacspace{##1}% (\protect\firstacronymfont{\glsentryshortpl{##1}})% }% \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}% \renewcommand*{\acronymsort}[2]{##1}% \renewcommand*{\acronymfont}[1]{##1}% \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}% \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}% } \newcommand*{\glsacspace}[1]{% \settowidth{\dimen@}{(\firstacronymfont{\glsentryshort{#1}})}% \ifdim\dimen@<3em~\else\space\fi } \newacronymstyle{short-long}% {% \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}% }% {% \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}% \renewcommand*{\genacrfullformat}[2]{% \protect\firstacronymfont{\glsentryshort{##1}}##2\space (\glsentrylong{##1})% }% \renewcommand*{\Genacrfullformat}[2]{% \protect\firstacronymfont{\Glsentryshort{##1}}##2\space (\glsentrylong{##1})% }% \renewcommand*{\genplacrfullformat}[2]{% \protect\firstacronymfont{\glsentryshortpl{##1}}##2\space (\glsentrylongpl{##1})% }% \renewcommand*{\Genplacrfullformat}[2]{% \protect\firstacronymfont{\Glsentryshortpl{##1}}##2\space (\glsentrylongpl{##1})% }% \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}% \renewcommand*{\acronymsort}[2]{##1}% \renewcommand*{\acronymfont}[1]{##1}% \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}% \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}% } \newacronymstyle{long-sc-short}% {% \GlsUseAcrEntryDispStyle{long-short}% }% {% \GlsUseAcrStyleDefs{long-short}% \renewcommand{\acronymfont}[1]{\textsc{##1}}% \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}% } \newacronymstyle{long-sm-short}% {% \GlsUseAcrEntryDispStyle{long-short}% }% {% \GlsUseAcrStyleDefs{long-short}% \renewcommand{\acronymfont}[1]{\textsmaller{##1}}% \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}% } \newacronymstyle{sc-short-long}% {% \GlsUseAcrEntryDispStyle{short-long}% }% {% \GlsUseAcrStyleDefs{short-long}% \renewcommand{\acronymfont}[1]{\textsc{##1}}% \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}% } \newacronymstyle{sm-short-long}% {% \GlsUseAcrEntryDispStyle{short-long}% }% {% \GlsUseAcrStyleDefs{short-long}% \renewcommand{\acronymfont}[1]{\textsmaller{##1}}% \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}% } \newacronymstyle{long-short-desc}% {% \GlsUseAcrEntryDispStyle{long-short}% }% {% \GlsUseAcrStyleDefs{long-short}% \renewcommand*{\GenericAcronymFields}{}% \renewcommand*{\acronymsort}[2]{##2}% \renewcommand*{\acronymentry}[1]{% \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}% } \newacronymstyle{long-sp-short-desc}% {% \GlsUseAcrEntryDispStyle{long-sp-short}% }% {% \GlsUseAcrStyleDefs{long-sp-short}% \renewcommand*{\GenericAcronymFields}{}% \renewcommand*{\acronymsort}[2]{##2}% \renewcommand*{\acronymentry}[1]{% \glsentrylong{##1}\glsacspace{##1}(\acronymfont{\glsentryshort{##1}})}% } \newacronymstyle{long-sc-short-desc}% {% \GlsUseAcrEntryDispStyle{long-sc-short}% }% {% \GlsUseAcrStyleDefs{long-sc-short}% \renewcommand*{\GenericAcronymFields}{}% \renewcommand*{\acronymsort}[2]{##2}% \renewcommand*{\acronymentry}[1]{% \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}% } \newacronymstyle{long-sm-short-desc}% {% \GlsUseAcrEntryDispStyle{long-sm-short}% }% {% \GlsUseAcrStyleDefs{long-sm-short}% \renewcommand*{\GenericAcronymFields}{}% \renewcommand*{\acronymsort}[2]{##2}% \renewcommand*{\acronymentry}[1]{% \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}% } \newacronymstyle{short-long-desc}% {% \GlsUseAcrEntryDispStyle{short-long}% }% {% \GlsUseAcrStyleDefs{short-long}% \renewcommand*{\GenericAcronymFields}{}% \renewcommand*{\acronymsort}[2]{##2}% \renewcommand*{\acronymentry}[1]{% \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}% } \newacronymstyle{sc-short-long-desc}% {% \GlsUseAcrEntryDispStyle{sc-short-long}% }% {% \GlsUseAcrStyleDefs{sc-short-long}% \renewcommand*{\GenericAcronymFields}{}% \renewcommand*{\acronymsort}[2]{##2}% \renewcommand*{\acronymentry}[1]{% \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}% } \newacronymstyle{sm-short-long-desc}% {% \GlsUseAcrEntryDispStyle{sm-short-long}% }% {% \GlsUseAcrStyleDefs{sm-short-long}% \renewcommand*{\GenericAcronymFields}{}% \renewcommand*{\acronymsort}[2]{##2}% \renewcommand*{\acronymentry}[1]{% \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}% } \newacronymstyle{dua}% {% \ifdefempty\glscustomtext {% \ifglshaslong{\glslabel}% {% \glsifplural {% \glscapscase {% \glsentrylongpl{\glslabel}\glsinsert }% {% \Glsentrylongpl{\glslabel}\glsinsert }% {% \glsuppercase {\glsentrylongpl{\glslabel}\glsinsert}% }% }% {% \glscapscase {% \glsentrylong{\glslabel}\glsinsert }% {% \Glsentrylong{\glslabel}\glsinsert }% {% \glsuppercase {\glsentrylong{\glslabel}\glsinsert}% }% }% }% {% \glsgenentryfmt }% }% {\glscustomtext\glsinsert}% }% {% \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}% \renewcommand*{\acrfullfmt}[3]{% \glslink[##1]{##2}{\glsentrylong{##2}##3\space (\acronymfont{\glsentryshort{##2}})}}% \renewcommand*{\Acrfullfmt}[3]{% \glslink[##1]{##2}{\Glsentrylong{##2}##3\space (\acronymfont{\glsentryshort{##2}})}}% \renewcommand*{\ACRfullfmt}[3]{% \glslink[##1]{##2}{% \glsuppercase{\glsentrylong{##2}##3\space (\acronymfont{\glsentryshort{##2}})}}}% \renewcommand*{\acrfullplfmt}[3]{% \glslink[##1]{##2}{\glsentrylongpl{##2}##3\space (\acronymfont{\glsentryshortpl{##2}})}}% \renewcommand*{\Acrfullplfmt}[3]{% \glslink[##1]{##2}{\Glsentrylongpl{##2}##3\space (\acronymfont{\glsentryshortpl{##2}})}}% \renewcommand*{\ACRfullplfmt}[3]{% \glslink[##1]{##2}{% \glsuppercase{\glsentrylongpl{##2}##3\space (\acronymfont{\glsentryshortpl{##2}})}}}% \renewcommand*{\glsentryfull}[1]{% \glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})% }% \renewcommand*{\Glsentryfull}[1]{% \Glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})% }% \renewcommand*{\glsentryfullpl}[1]{% \glsentrylongpl{##1}\space(\acronymfont{\glsentryshortpl{##1}})% }% \renewcommand*{\Glsentryfullpl}[1]{% \Glsentrylongpl{##1}\space(\acronymfont{\glsentryshortpl{##1}})% }% \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}% \renewcommand*{\acronymsort}[2]{##1}% \renewcommand*{\acronymfont}[1]{##1}% \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}% } \newacronymstyle{dua-desc}% {% \GlsUseAcrEntryDispStyle{dua}% }% {% \GlsUseAcrStyleDefs{dua}% \renewcommand*{\GenericAcronymFields}{}% \renewcommand*{\acronymentry}[1]{\glsentrylong{##1}}% \renewcommand*{\acronymsort}[2]{##2}% }% \newacronymstyle{footnote}% {% \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}% }% {% \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}% \glshyperfirstfalse \renewcommand*{\genacrfullformat}[2]{% \protect\firstacronymfont{\glsentryshort{##1}}##2% \protect\footnote{\glsentrylong{##1}}% }% \renewcommand*{\Genacrfullformat}[2]{% \firstacronymfont{\Glsentryshort{##1}}##2% \protect\footnote{\glsentrylong{##1}}% }% \renewcommand*{\genplacrfullformat}[2]{% \protect\firstacronymfont{\glsentryshortpl{##1}}##2% \protect\footnote{\glsentrylongpl{##1}}% }% \renewcommand*{\Genplacrfullformat}[2]{% \protect\firstacronymfont{\Glsentryshortpl{##1}}##2% \protect\footnote{\glsentrylongpl{##1}}% }% \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}% \renewcommand*{\acronymsort}[2]{##1}% \renewcommand*{\acronymfont}[1]{##1}% \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}% \renewcommand*{\acrfullfmt}[3]{% \glslink[##1]{##2}{\acronymfont{\glsentryshort{##2}}##3\space (\glsentrylong{##2})}}% \renewcommand*{\Acrfullfmt}[3]{% \glslink[##1]{##2}{\acronymfont{\Glsentryshort{##2}}##3\space (\glsentrylong{##2})}}% \renewcommand*{\ACRfullfmt}[3]{% \glslink[##1]{##2}{% \glsuppercase{\acronymfont{\glsentryshort{##2}}##3\space (\glsentrylong{##2})}}}% \renewcommand*{\acrfullplfmt}[3]{% \glslink[##1]{##2}{\acronymfont{\glsentryshortpl{##2}}##3\space (\glsentrylongpl{##2})}}% \renewcommand*{\Acrfullplfmt}[3]{% \glslink[##1]{##2}{\acronymfont{\Glsentryshortpl{##2}}##3\space (\glsentrylongpl{##2})}}% \renewcommand*{\ACRfullplfmt}[3]{% \glslink[##1]{##2}{% \glsuppercase{\acronymfont{\glsentryshortpl{##2}}##3\space (\glsentrylongpl{##2})}}}% \renewcommand*{\glsentryfull}[1]{% \acronymfont{\glsentryshort{##1}}\space(\glsentrylong{##1})}% \renewcommand*{\Glsentryfull}[1]{% \acronymfont{\Glsentryshort{##1}}\space(\glsentrylong{##1})}% \renewcommand*{\glsentryfullpl}[1]{% \acronymfont{\glsentryshortpl{##1}}\space(\glsentrylongpl{##1})}% \renewcommand*{\Glsentryfullpl}[1]{% \acronymfont{\Glsentryshortpl{##1}}\space(\glsentrylongpl{##1})}% } \newacronymstyle{footnote-sc}% {% \GlsUseAcrEntryDispStyle{footnote}% }% {% \GlsUseAcrStyleDefs{footnote}% \renewcommand{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}} \renewcommand{\acronymfont}[1]{\textsc{##1}}% \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}% }% \newacronymstyle{footnote-sm}% {% \GlsUseAcrEntryDispStyle{footnote}% }% {% \GlsUseAcrStyleDefs{footnote}% \renewcommand{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}} \renewcommand{\acronymfont}[1]{\textsmaller{##1}}% \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}% }% \newacronymstyle{footnote-desc}% {% \GlsUseAcrEntryDispStyle{footnote}% }% {% \GlsUseAcrStyleDefs{footnote}% \renewcommand*{\GenericAcronymFields}{}% \renewcommand*{\acronymsort}[2]{##2}% \renewcommand*{\acronymentry}[1]{% \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}% } \newacronymstyle{footnote-sc-desc}% {% \GlsUseAcrEntryDispStyle{footnote-sc}% }% {% \GlsUseAcrStyleDefs{footnote-sc}% \renewcommand*{\GenericAcronymFields}{}% \renewcommand*{\acronymsort}[2]{##2}% \renewcommand*{\acronymentry}[1]{% \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}% } \newacronymstyle{footnote-sm-desc}% {% \GlsUseAcrEntryDispStyle{footnote-sm}% }% {% \GlsUseAcrStyleDefs{footnote-sm}% \renewcommand*{\GenericAcronymFields}{}% \renewcommand*{\acronymsort}[2]{##2}% \renewcommand*{\acronymentry}[1]{% \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}% } \newcommand*{\DefineAcronymSynonyms}{% \let\acs\acrshort \let\Acs\Acrshort \let\acsp\acrshortpl \let\Acsp\Acrshortpl \let\acl\acrlong \let\aclp\acrlongpl \let\Acl\Acrlong \let\Aclp\Acrlongpl \let\acf\acrfull \let\acfp\acrfullpl \let\Acf\Acrfull \let\Acfp\Acrfullpl \let\ac\gls \let\Ac\Gls \let\acp\glspl \let\Acp\Glspl } \ifglsacrshortcuts \DefineAcronymSynonyms \fi \newcommand*{\SetDefaultAcronymDisplayStyle}[1]{% \defglsentryfmt[#1]{\glsgenentryfmt}% } \newcommand*{\acrfootnote}[3]{\acrlinkfootnote{#1}{#2}{#3}} \newcommand*{\acrlinkfootnote}[3]{% \footnote{\glslink[#1]{#2}{#3}}% } \newcommand*{\acrnolinkfootnote}[3]{% \footnote{#3}% } \newrobustcmd*{\glsdoparenifnotempty}[2]{% \protected@edef\gls@tmp{#1}% \ifdefempty\gls@tmp {}% {% \ifx\gls@tmp\@gls@default@value \else \space (#2{#1})% \fi }% } \newcommand*{\@gls@deprecated@acr@warning}[3]{% \GlossariesWarning{Acronym style option #1 deprecated. Use \string\setacronymstyle{#2} with just glossaries.sty or use \string\setabbreviationstyle[acronym]{#3} with glossaries-extra.sty}% } \RequirePackage{glossary-hypernav} \@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 } \endinput %% %% End of file `glossaries-2024-04-03.sty'.