%% %% This is file `glossaries-extra-2021-11-22.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% glossaries-extra.dtx (with options: `glossaries-extra-2021-11-22.sty,package') %% %% glossaries-extra.dtx %% Copyright 2023 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-extra.dtx and glossaries-extra.ins and the derived files glossaries-extra.sty, glossaries-extra-abbrstyles.def, glossaries-extra-bib2gls.sty, glossaries-extra-stylemods.sty, glossary-bookindex.sty, glossary-longextra.sty, glossary-topic.sty, glossary-table.sty, example-glossaries-xr.tex, example-glossaries-acronym-desc.bib, example-glossaries-acronym.bib, example-glossaries-acronyms-lang.bib, example-glossaries-brief.bib, example-glossaries-childmultipar.bib, example-glossaries-childnoname.bib, example-glossaries-cite.bib, example-glossaries-images.bib, example-glossaries-long.bib, example-glossaries-longchild.bib, example-glossaries-multipar.bib, example-glossaries-parent.bib, example-glossaries-symbolnames.bib, example-glossaries-symbols.bib, example-glossaries-url.bib, example-glossaries-user.bib, example-glossaries-utf8.bib, example-glossaries-xr.bib, glossaries-extra-2021-11-22.sty, glossaries-extra-bib2gls-2021-11-22.sty, glossaries-extra-stylemods-2021-11-22.sty, glossary-bookindex-2021-11-22.sty, glossary-longextra-2021-11-22.sty, glossary-topic-2021-11-22.sty. %% %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{glossaries-extra}[2021/11/22 v1.48 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{etoolbox} \@ifpackageloaded{glossaries} {% \newcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}% \let\@glsxtr@declareoption\@gls@declareoption } {% \newcommand{\glsxtr@dooption}[1]{% \PassOptionsToPackage{#1}{glossaries}% }% \PassOptionsToPackage{toc}{glossaries} \PassOptionsToPackage{nopostdot}{glossaries} \PassOptionsToPackage{noredefwarn}{glossaries} \@ifpackageloaded{polyglossia}% {}% {% \@ifpackageloaded{babel}% {\PassOptionsToPackage{translate=babel}{glossaries}}% {}% }% \newcommand*{\@glsxtr@declareoption}[2]{% \DeclareOptionX{#1}{#2}% \DeclareOption{#1}{#2}% } } \newcommand*{\glsxtrundefaction}[2]{% \@glsxtrundeftag\PackageError{glossaries-extra}{#1}{#2}% } \newcommand*{\glsxtr@warnonexistsordo}[1]{} \newcommand*{\glsxtrundeftag}{??} \newcommand*{\@glsxtrundeftag}{} \newcommand*{\@glsxtr@warn@undefaction}[2]{% \@glsxtrundeftag\GlossariesExtraWarning{#1}% } \newcommand*{\@glsxtr@err@undefaction}[2]{% \@glsxtrundeftag\PackageError{glossaries-extra}{#1}{#2}% } \newcommand*{\@glsxtr@warn@onexistsordo}[1]{% \GlossariesExtraWarning{\string#1\space hasn't been defined, so some errors won't be converted to warnings. (This most likely means your version of glossaries.sty is below version 4.19.)}% } \newcommand*{\@glsxtr@redef@forglsentries}{} \newcommand*{\@glsxtr@do@redef@forglsentries}{% \renewcommand*{\forglsentries}[3][\glsdefaulttype]{% \protected@edef\@@glo@list{\csname glolist@##1\endcsname}% \ifdefstring{\@@glo@list}{,}% {% \GlossariesExtraWarning{No entries defined in glossary `##1'}% }% {% \@for##2:=\@@glo@list\do {% \ifdefempty{##2}{}{##3}% }% }% }% }% \define@choicekey{glossaries-extra.sty}{undefaction}% [\glsxtr@undefaction@val\glsxtr@undefaction@nr]% {warn,error}% {% \ifcase\glsxtr@undefaction@nr\relax \let\glsxtrundefaction\@glsxtr@warn@undefaction \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo \let\@glsxtr@redef@forglsentries\@glsxtr@do@redef@forglsentries \or \let\glsxtrundefaction\@glsxtr@err@undefaction \let\glsxtr@warnonexistsordo\@gobble \let\@glsxtr@redef@forglsentries\relax \fi } \newcommand*{\@glsxtr@record}[3]{} \newcommand*{\glsxtr@recordsee}[2]{} \newcommand*{\@glsxtr@defaultnumberformat}{glsnumberformat}% \newcommand*{\GlsXtrSetDefaultNumberFormat}[1]{% \renewcommand*{\@glsxtr@defaultnumberformat}{#1}% }% \newcommand*{\@glsxtr@do@record@wrglossary}[1]{% \begingroup \ifKV@glslink@noindex \else \protected@edef\@gls@label{\glsdetoklabel{#1}}% \let\glslabel\@gls@label \glswriteentry{#1}% {% \ifdefempty{\@glsxtr@thevalue}% {% \ifx\@glsxtr@org@theHvalue\@glsxtr@theHvalue \else \let\theHglsentrycounter\@glsxtr@theHvalue \fi \glsxtr@saveentrycounter \let\@@do@@wrglossary\@glsxtr@dorecord }% {% \let\theglsentrycounter\@glsxtr@thevalue \let\theHglsentrycounter\@glsxtr@theHvalue \let\@@do@@wrglossary\@glsxtr@dorecordnodefer }% \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex \glsxtr@@do@wrglossary{#1}% \else \@@glsxtrwrglossmark \glsxtr@inc@wrglossaryctr{#1}% \@@do@@wrglossary \fi }% \fi \endgroup } \newcommand*{\glsxtr@do@alsoindex@wrglossary}[1]{% \glsxtr@@do@wrglossary{#1}% \@glsxtr@do@record@wrglossary{#1}% } \newcommand*{\@@glsxtr@record}[3]{% \protected@edef\@gls@label{\glsdetoklabel{#2}}% \let\glslabel\@gls@label \ifglsentryexists{#2}{}% {% \@@glsxtrwrglossmark \begingroup \let\@glsnumberformat\@glsxtr@defaultnumberformat \def\@glsxtr@thevalue{}% \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% \let\@glsxtr@org@theHvalue\@glsxtr@theHvalue \let\@gls@counter\glscounter \if@glsxtr@equations \@glsxtr@use@equation@counter \fi \@gls@setdefault@glslink@opts \csuse{@glsxtr@#3@prekeys}% \setkeys{#3}{#1}% \glsxtr@do@autoadd{#3}% \csuse{@glsxtr@#3@postkeys}% \glsxtr@inc@wrglossaryctr{#2}% \ifKV@glslink@noindex \else \glswriteentry{#2}% {% \ifdefempty{\@glsxtr@thevalue}% {% \ifx\@glsxtr@org@theHvalue\@glsxtr@theHvalue \else \let\theHglsentrycounter\@glsxtr@theHvalue \fi \glsxtr@saveentrycounter \let\@@do@@wrglossary\@glsxtr@dorecord }% {% \let\theglsentrycounter\@glsxtr@thevalue \let\theHglsentrycounter\@glsxtr@theHvalue \let\@@do@@wrglossary\@glsxtr@dorecordnodefer }% \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex \glsxtr@@do@wrglossary{#2}% \else \@@do@@wrglossary \fi }% \fi \endgroup }% } \newcommand{\@glsxtr@glslink@prekeys}{\glslinkpresetkeys} \newcommand{\@glsxtr@glslink@postkeys}{\glslinkpostsetkeys} \newcommand{\@glsxtr@glossadd@prekeys}{\glsaddpresetkeys} \newcommand{\@glsxtr@glossadd@postkeys}{\glsaddpostsetkeys} \newcommand*\@glsxtr@dorecord{% \global\let\@glsrecordlocref\theglsentrycounter \let\@glsxtr@orgprefix\@glo@counterprefix \ifx\theglsentrycounter\theHglsentrycounter \def\@glo@counterprefix{}% \else \protected@edef\@glsxtr@theentrycounter{\theglsentrycounter}% \protected@edef\@glsxtr@theHentrycounter{\theHglsentrycounter}% \@onelevel@sanitize\@glsxtr@theentrycounter \@onelevel@sanitize\@glsxtr@theHentrycounter \protected@edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix {\@glsxtr@theentrycounter}{\@glsxtr@theHentrycounter}% }% \@do@gls@getcounterprefix \fi \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref \@glsxtr@do@nameref@record {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}% {\@glsrecordlocref}% \else \protected@write\@auxout{}{\string\glsxtr@record {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}% {\@glsrecordlocref}}% \fi \@glsxtr@counterrecordhook \let\@glo@counterprefix\@glsxtr@orgprefix } \newcommand*\@glsxtr@dorecordnodefer{% \ifx\theglsentrycounter\theHglsentrycounter \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref \@glsxtr@do@nameref@record {\@gls@label}{}{\@gls@counter}{\@glsnumberformat}% {\theglsentrycounter}% \else \protected@write\@auxout{}{\string\glsxtr@record {\@gls@label}{}{\@gls@counter}{\@glsnumberformat}% {\theglsentrycounter}}% \fi \else \edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix {\theglsentrycounter}{\theHglsentrycounter}% }% \@do@gls@getcounterprefix \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref \@glsxtr@do@nameref@record {\@gls@label}{\@glo@counterprefix}{\@gls@counter}% {\@glsnumberformat}{\theglsentrycounter}% \else \protected@write\@auxout{}{\string\glsxtr@record {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}% {\theglsentrycounter}}% \fi \fi \@glsxtr@counterrecordhook } \newcommand{\@glsxtr@ifnum@mmode}[2]{% \ifmmode \ifst@rred #2% \else \if@display #1\else #2\fi \fi \else #2% \fi } \newcommand*{\@glsxtr@do@nameref@record}[5]{% \gls@ifnotmeasuring {% \protected@write\@auxout{}{\string\glsxtr@record@nameref {#1}{#2}{#3}{#4}{#5}% {\csuse{@currentlabelname}}{\csuse{@currentHref}}% {\theHglsentrycounter}}% }% } \newcommand*{\@@glsxtr@recordcounter}{% \@glsxtr@noop@recordcounter } \newcommand*{\@glsxtr@noop@recordcounter}[1]{% \PackageError{glossaries-extra}{\string\GlsXtrRecordCounter\space requires record=only or record=hybrid package option}{}% } \newcommand*{\@glsxtr@op@recordcounter}[1]{% \protected@eappto\@glsxtr@counterrecordhook{\noexpand\@glsxtr@docounterrecord{#1}}% } \newcommand*{\@glsxtr@recordsee}[2]{% \@@glsxtrwrglossmark \def\@gls@xref{#2}% \@onelevel@sanitize\@gls@xref \protected@write\@auxout{}{\string\glsxtr@recordsee{#1}{\@gls@xref}}% } \newcommand{\printunsrtglossaryunit}{% \print@noop@unsrtglossaryunit } \newcommand*{\glsxtr@setup@record}{\let\@@do@wrglossary\glsxtr@@do@wrglossary} \newcommand*{\glsxtr@indexonly@saveentrycounter}{% \ifKV@glslink@noindex \else \glsxtr@saveentrycounter \fi } \newcommand*{\glsxtr@addloclistfield}{% \key@ifundefined{glossentry}{loclist}% {% \define@key{glossentry}{loclist}{\def\@glo@loclist{##1}}% \appto\@gls@keymap{,{loclist}{loclist}}% \appto\@newglossaryentryprehook{\def\@glo@loclist{}}% \appto\@newglossaryentryposthook{% \gls@assign@field{}{\@glo@label}{loclist}{\@glo@loclist}% }% \glssetnoexpandfield{loclist}% }% {}% \key@ifundefined{glossentry}{location}% {% \define@key{glossentry}{location}{\def\@glo@location{##1}}% \appto\@gls@keymap{,{location}{location}}% \appto\@newglossaryentryprehook{\def\@glo@location{}}% \appto\@newglossaryentryposthook{% \gls@assign@field{}{\@glo@label}{location}{\@glo@location}% }% \glssetnoexpandfield{location}% }% {}% \key@ifundefined{glossentry}{group}% {% \define@key{glossentry}{group}{\def\@glo@group{##1}}% \appto\@gls@keymap{,{group}{group}}% \appto\@newglossaryentryprehook{\def\@glo@group{}}% \appto\@newglossaryentryposthook{% \gls@assign@field{}{\@glo@label}{group}{\@glo@group}% }% \glssetnoexpandfield{group}% }% {}% } \newcommand*{\@glsxtr@record@setting}{off} \newcommand*{\@glsxtr@record@setting@alsoindex}{alsoindex} \newcommand*{\@glsxtr@record@setting@only}{only} \newcommand*{\@glsxtr@record@setting@nameref}{nameref} \newcommand*{\@glsxtr@if@record@only}[2]{% \ifx\@glsxtr@record@setting\@glsxtr@record@setting@only #1% \else \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref #1% \else #2% \fi \fi } \newcommand*{\@glsxtr@record@setting@off}{off} \newcommand\@glsxtr@warn@hybrid@noprintgloss{% \ifdefstring{\@glo@types}{,}% {% \GlossariesExtraWarningNoLine{No glossaries have been defined}% }% {% \GlossariesExtraWarningNoLine{No \string\printglossary\space or \string\printglossaries\space found. ^^JYou have requested the hybrid setting record=\@glsxtr@record@setting\space which requires a combination of bib2gls (to fetch entries) and makeindex/xindy (to sort and collate the entries). If you only want to use bib2gls then change the option to record=only or record=nameref}% }% } \newcommand*{\@glsxtr@record@only@setup}{% \def\glsxtr@setup@record{% \@glsxtr@autoseeindexfalse \let\@do@seeglossary\@glsxtr@recordsee \let\@glsxtr@record\@@glsxtr@record \let\@@do@wrglossary\@glsxtr@do@record@wrglossary \let\@gls@saveentrycounter\relax \let\glsxtrundefaction\@glsxtr@warn@undefaction \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo \glsxtr@addloclistfield \renewcommand*{\@glsxtr@autoindexcrossrefs}{}% \let\@@glsxtr@recordcounter\@glsxtr@op@recordcounter \def\printunsrtglossaryunit{\print@op@unsrtglossaryunit}% \def\glsxtrsetaliasnoindex{}% \ifdef\@gls@setupsort@none{\@gls@setupsort@none}{}% \def\glsxtrNoGlossaryWarning{\@glsxtr@record@noglossarywarning}% \RequirePackage{glossaries-extra-bib2gls}[=v1.48]% }% } \define@choicekey{glossaries-extra.sty}{record} [\@glsxtr@record@setting\glsxtr@record@nr]% {off,only,alsoindex,nameref,hybrid}% [only]% {% \ifcase\glsxtr@record@nr\relax \def\glsxtr@setup@record{% \renewcommand*{\@do@seeglossary}{\@glsxtr@doseeglossary}% \renewcommand*{\@glsxtr@record}[3]{}% \let\@@do@wrglossary\glsxtr@@do@wrglossary \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter \let\glsxtrundefaction\@glsxtr@err@undefaction \let\glsxtr@warnonexistsordo\@gobble \let\@@glsxtr@recordcounter\@glsxtr@noop@recordcounter \def\printunsrtglossaryunit{\print@noop@unsrtglossaryunit}% \undef\glsxtrsetaliasnoindex }% \or \@glsxtr@record@only@setup \or \def\glsxtr@setup@record{% \renewcommand*{\@glsxtr@record@setting@alsoindex}{alsoindex}% \renewcommand*{\@do@seeglossary}{\@glsxtr@dosee@alsoindex@glossary}% \let\@glsxtr@record\@@glsxtr@record \let\@@do@wrglossary\glsxtr@do@alsoindex@wrglossary \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter \let\glsxtrundefaction\@glsxtr@warn@undefaction \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo \glsxtr@addloclistfield \let\@@glsxtr@recordcounter\@glsxtr@op@recordcounter \def\printunsrtglossaryunit{\print@op@unsrtglossaryunit}% \undef\glsxtrsetaliasnoindex }% \or \@glsxtr@record@only@setup \ifundef\hyperlink {\GlossariesExtraWarning{You have requested record=nameref but the document doesn't support hyperlinks}}% {}% \or \def\glsxtr@setup@record{% \renewcommand*{\@glsxtr@record@setting@alsoindex}{hybrid}% \renewcommand*{\@do@seeglossary}{\@glsxtr@dosee@alsoindex@glossary}% \let\@glsxtr@record\@@glsxtr@record \let\@@do@wrglossary\glsxtr@do@alsoindex@wrglossary \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter \let\glsxtrundefaction\@glsxtr@warn@undefaction \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo \glsxtr@addloclistfield \let\@@glsxtr@recordcounter\@glsxtr@op@recordcounter \def\printunsrtglossaryunit{\print@op@unsrtglossaryunit}% \undef\glsxtrsetaliasnoindex }% \fi } \newcommand*{\@glsxtr@docdefval}{0} \newcommand*{\if@glsxtrdocdef}{\ifnum\@glsxtr@docdefval>0 } \newcommand*{\@glsxtrdocdeftrue}{\def\@glsxtr@docdefval{1}} \newcommand*{\@glsxtrdocdeffalse}{\def\@glsxtr@docdefval{0}} \define@choicekey{glossaries-extra.sty}{docdef} [\@glsxtr@docdefsetting\@glsxtr@docdefval]% {false,true,restricted,atom}[true]% {% \ifnum\@glsxtr@docdefval>1\relax \renewcommand*{\@glsdoifexistsorwarn}{\glsdoifexists}% \else \renewcommand*{\@glsdoifexistsorwarn}{\glsdoifexistsorwarn}% \fi } \newcommand*{\if@glsxtrdocdefrestricted}{\ifnum\@glsxtr@docdefval>1 } \newcommand*{\@glsdoifexistsorwarn}{\glsdoifexistsorwarn} \define@boolkey{glossaries-extra.sty}[@glsxtr]{indexcrossrefs}[true]{% \if@glsxtrindexcrossrefs \else \renewcommand*{\@glsxtr@autoindexcrossrefs}{}% \fi } \@glsxtrindexcrossrefsfalse \newcommand*{\@glsxtr@autoindexcrossrefs}{\@glsxtrindexcrossrefstrue} \define@boolkey{glossaries-extra.sty}[@glsxtr@]{autoseeindex}[true]{% } \@glsxtr@autoseeindextrue \define@boolkey{glossaries-extra.sty}[@glsxtr@]{equations}[true]{% } \@glsxtr@equationsfalse \let\glsxtr@float\@float \let\glsxtr@dblfloat\@dblfloat \define@boolkey{glossaries-extra.sty}[@glsxtr@]{floats}[true]{% \if@glsxtr@floats \renewcommand*{\@float}[1]{\renewcommand{\glscounter}{##1}\glsxtr@float{##1}}% \renewcommand*{\@dblfloat}[1]{\renewcommand{\glscounter}{##1}\glsxtr@dblfloat{##1}}% \else \let\@float\glsxtr@float \let\@dblfloat\glsxtr@dblfloat \fi } \@glsxtr@floatsfalse \newcommand*{\GlossariesExtraWarning}[1]{\PackageWarning{glossaries-extra}{#1}} \newcommand*{\GlossariesExtraWarningNoLine}[1]{% \PackageWarningNoLine{glossaries-extra}{#1}} \@glsxtr@declareoption{nowarn}{% \let\GlossariesExtraWarning\@gobble \let\GlossariesExtraWarningNoLine\@gobble \glsxtr@dooption{nowarn}% } \newcommand*{\@glsxtr@defpostpunc}{} \@glsxtr@declareoption{postdot}{% \glsxtr@dooption{nopostdot=false}% \renewcommand*{\@glsxtr@defpostpunc}{% \renewcommand*{\glspostdescription}{% \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi}% }% } \define@choicekey{glossaries-extra.sty}{nopostdot}{true,false}[true]{% \glsxtr@dooption{nopostdot=#1}% \renewcommand*{\@glsxtr@defpostpunc}{% \renewcommand*{\glspostdescription}{% \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi}% }% } \define@key{glossaries-extra.sty}{postpunc}{% \glsxtr@dooption{nopostdot=false}% \ifstrequal{#1}{dot}% {% \renewcommand*{\@glsxtr@defpostpunc}{% \renewcommand*{\glspostdescription}{.\spacefactor\sfcode`\. }% }% }% {% \ifstrequal{#1}{comma}% {% \renewcommand*{\@glsxtr@defpostpunc}{% \renewcommand*{\glspostdescription}{,}% }% }% {% \ifstrequal{#1}{none}% {% \glsxtr@dooption{nopostdot=true}% \renewcommand*{\@glsxtr@defpostpunc}{% \renewcommand*{\glspostdescription}{}% }% }% {% \renewcommand*{\@glsxtr@defpostpunc}{% \renewcommand*{\glspostdescription}{#1}% }% }% }% }% } \newcommand*{\glsxtrabbrvtype}{\glsdefaulttype} \newcommand*{\@glsxtr@abbreviationsdef}{} \newcommand*{\@glsxtr@doabbreviationsdef}{% \@ifpackageloaded{babel}% {\providecommand{\abbreviationsname}{\acronymname}}% {\providecommand{\abbreviationsname}{Abbreviations}}% \newglossary[glg-abr]{abbreviations}{gls-abr}{glo-abr}{\abbreviationsname}% \renewcommand*{\glsxtrabbrvtype}{abbreviations}% \newcommand*{\printabbreviations}[1][]{% \printglossary[type=\glsxtrabbrvtype,##1]% }% \disable@keys{glossaries-extra.sty}{abbreviations}% \ifglsacronym \else \renewcommand*{\acronymtype}{\glsxtrabbrvtype}% \fi }% \@glsxtr@declareoption{abbreviations}{% \let\@glsxtr@abbreviationsdef\@glsxtr@doabbreviationsdef } \newcommand*{\GlsXtrDefineAbbreviationShortcuts}{% \newcommand*{\ab}{\cgls}% \newcommand*{\abp}{\cglspl}% \newcommand*{\as}{\glsxtrshort}% \newcommand*{\asp}{\glsxtrshortpl}% \newcommand*{\al}{\glsxtrlong}% \newcommand*{\alp}{\glsxtrlongpl}% \newcommand*{\af}{\glsxtrfull}% \newcommand*{\afp}{\glsxtrfullpl}% \newcommand*{\Ab}{\cGls}% \newcommand*{\Abp}{\cGlspl}% \newcommand*{\As}{\Glsxtrshort}% \newcommand*{\Asp}{\Glsxtrshortpl}% \newcommand*{\Al}{\Glsxtrlong}% \newcommand*{\Alp}{\Glsxtrlongpl}% \newcommand*{\Af}{\Glsxtrfull}% \newcommand*{\Afp}{\Glsxtrfullpl}% \newcommand*{\AB}{\cGLS}% \newcommand*{\ABP}{\cGLSpl}% \newcommand*{\AS}{\GLSxtrshort}% \newcommand*{\ASP}{\GLSxtrshortpl}% \newcommand*{\AL}{\GLSxtrlong}% \newcommand*{\ALP}{\GLSxtrlongpl}% \newcommand*{\AF}{\GLSxtrfull}% \newcommand*{\AFP}{\GLSxtrfullpl}% \providecommand*{\newabbr}{\newabbreviation}% \let\GlsXtrDefineAbbreviationShortcuts\relax } \newcommand*{\GlsXtrDefineAcShortcuts}{% \newcommand*{\ac}{\cgls}% \newcommand*{\acp}{\cglspl}% \newcommand*{\acs}{\glsxtrshort}% \newcommand*{\acsp}{\glsxtrshortpl}% \newcommand*{\acl}{\glsxtrlong}% \newcommand*{\aclp}{\glsxtrlongpl}% \newcommand*{\acf}{\glsxtrfull}% \newcommand*{\acfp}{\glsxtrfullpl}% \newcommand*{\Ac}{\cGls}% \newcommand*{\Acp}{\cGlspl}% \newcommand*{\Acs}{\Glsxtrshort}% \newcommand*{\Acsp}{\Glsxtrshortpl}% \newcommand*{\Acl}{\Glsxtrlong}% \newcommand*{\Aclp}{\Glsxtrlongpl}% \newcommand*{\Acf}{\Glsxtrfull}% \newcommand*{\Acfp}{\Glsxtrfullpl}% \newcommand*{\AC}{\cGLS}% \newcommand*{\ACP}{\cGLSpl}% \newcommand*{\ACS}{\GLSxtrshort}% \newcommand*{\ACSP}{\GLSxtrshortpl}% \newcommand*{\ACL}{\GLSxtrlong}% \newcommand*{\ACLP}{\GLSxtrlongpl}% \newcommand*{\ACF}{\GLSxtrfull}% \newcommand*{\ACFP}{\GLSxtrfullpl}% \providecommand*{\newabbr}{\newabbreviation}% \let\GlsXtrDefineAcShortcuts\relax } \newcommand*{\GlsXtrDefineOtherShortcuts}{% \newcommand*{\newentry}{\newglossaryentry}% \ifdef\printsymbols {% \newcommand*{\newsym}{\glsxtrnewsymbol}% }{}% \ifdef\printnumbers {% \newcommand*{\newnum}{\glsxtrnewnumber}% }{}% \let\GlsXtrDefineOtherShortcuts\relax } \newcommand*{\@glsxtr@setupshortcuts}{} \newcommand*{\@glsxtr@shortcutsval}{\ifglsacrshortcuts acro\else none\fi}% \define@choicekey{glossaries-extra.sty}{shortcuts}% [\@glsxtr@shortcutsval\@glsxtr@shortcutsnr]% {acronyms,acro,abbreviations,abbr,other,all,true,ac,none,false}[true]{% \ifcase\@glsxtr@shortcutsnr\relax % acronyms \renewcommand*{\@glsxtr@setupshortcuts}{% \glsacrshortcutstrue \DefineAcronymSynonyms }% \or % acro \renewcommand*{\@glsxtr@setupshortcuts}{% \glsacrshortcutstrue \DefineAcronymSynonyms }% \or % abbreviations \renewcommand*{\@glsxtr@setupshortcuts}{% \GlsXtrDefineAbbreviationShortcuts }% \or % abbr \renewcommand*{\@glsxtr@setupshortcuts}{% \GlsXtrDefineAbbreviationShortcuts }% \or % other \renewcommand*{\@glsxtr@setupshortcuts}{% \GlsXtrDefineOtherShortcuts }% \or % all \renewcommand*{\@glsxtr@setupshortcuts}{% \glsacrshortcutstrue \GlsXtrDefineAcShortcuts \GlsXtrDefineAbbreviationShortcuts \GlsXtrDefineOtherShortcuts }% \or % true \renewcommand*{\@glsxtr@setupshortcuts}{% \glsacrshortcutstrue \GlsXtrDefineAcShortcuts \GlsXtrDefineAbbreviationShortcuts \GlsXtrDefineOtherShortcuts }% \or % ac \renewcommand*{\@glsxtr@setupshortcuts}{% \glsacrshortcutstrue \GlsXtrDefineAcShortcuts }% \else % none, false \renewcommand*{\@glsxtr@setupshortcuts}{}% \fi } \newcommand*{\@glsxtr@doaccsupp}{} \@glsxtr@declareoption{accsupp}{% \renewcommand*{\@glsxtr@doaccsupp}{\RequirePackage{glossaries-accsupp}}} \newcommand*{\@glsxtr@doloadprefix}{} \@glsxtr@declareoption{prefix}{% \renewcommand*{\@glsxtr@doloadprefix}{\RequirePackage{glossaries-prefix}}} \newcommand{\glsxtrNoGlossaryWarning}[1]{% \GlossariesExtraWarning{Glossary `#1' is missing}% \@glsxtr@defaultnoglossarywarning{#1}% } \define@choicekey{glossaries-extra.sty}{nomissingglstext} [\@glsxtr@nomissingglstextval\@glsxtr@nomissingglstextnr]% {true,false}[true]{% \ifcase\@glsxtr@nomissingglstextnr\relax % true \renewcommand{\glsxtrNoGlossaryWarning}[1]{\null}% \else % false \renewcommand{\glsxtrNoGlossaryWarning}[1]{% \@glsxtr@defaultnoglossarywarning{#1}% }% \fi } \newcommand*{\@glsxtr@redefstyles}{} \define@key{glossaries-extra.sty}{stylemods}[default]{% \ifstrequal{#1}{default}% {% \renewcommand*{\@glsxtr@redefstyles}{% \RequirePackage{glossaries-extra-stylemods}}% }% {% \ifstrequal{#1}{all}% {% \renewcommand*{\@glsxtr@redefstyles}{% \PassOptionsToPackage{all}{glossaries-extra-stylemods}% \RequirePackage{glossaries-extra-stylemods}% }% }% {% \renewcommand*{\@glsxtr@redefstyles}{}% \@for\@glsxtr@tmp:=#1\do{% \IfFileExists{glossary-\@glsxtr@tmp.sty}% {% \eappto\@glsxtr@redefstyles{% \noexpand\RequirePackage{glossary-\@glsxtr@tmp}}% }% {% \PackageError{glossaries-extra}% {Glossaries style package `glossary-\@glsxtr@tmp.sty' doesn't exist (did you mean to use the `style' key?)}% {The list of values (#1) in the `stylemods' key should match the glossary-xxx.sty files provided with glossaries.sty}% }% }% \appto\@glsxtr@redefstyles{\RequirePackage{glossaries-extra-stylemods}[=v1.48]}% } }% } \newcommand*{\@glsxtr@do@style}{} \define@key{glossaries-extra.sty}{style}{% \renewcommand*{\@glsxtr@do@style}{% \setkeys{glossaries.sty}{style={#1}}% \setglossarystyle{#1}% }% } \newcommand*{\glsxtr@inc@wrglossaryctr}[1]{} \newcommand*{\GlsXtrInternalLocationHyperlink}[3]{% \glsxtrhyperlink{#1#2#3}{#3}% } \newcommand*{\@glsxtr@wrglossary@locationhyperlink}[3]{% \pageref{wrglossary.#3}% } \@glsxtr@declareoption{indexcounter}{% \glsxtr@dooption{counter=wrglossary}% \ifundef\c@wrglossary {% \newcounter{wrglossary}% \renewcommand{\thewrglossary}{\arabic{wrglossary}}% }% {}% \renewcommand*{\glsxtr@inc@wrglossaryctr}[1]{% \ifdefstring\@gls@counter{wrglossary}% {% \refstepcounter{wrglossary}% \label{wrglossary.\thewrglossary}% }% {}% }% \renewcommand*{\GlsXtrInternalLocationHyperlink}[3]{% \ifdefstring\glsentrycounter{wrglossary}% {% \@glsxtr@wrglossary@locationhyperlink{##1}{##2}{##3}% }% {\glsxtrhyperlink{##1##2##3}{##3}}% }% } \newcommand*{\@glsxtrwrglossmark}{} \newcommand*{\@@glsxtrwrglossmark}{} \AtBeginDocument{\renewcommand*{\@@glsxtrwrglossmark}{\@glsxtrwrglossmark}} \newcommand*{\glsxtrwrglossmark}{\ensuremath{\cdot}} \newcommand\@glsxtr@doshowtarget[2]{#2} \define@choicekey{glossaries-extra.sty}{debug} [\@glsxtr@debugval\@glsxtr@debugnr]% {true,false,showtargets,showwrgloss,all,showaccsupp}[true]{% \ifcase\@glsxtr@debugnr\relax % true \glsxtr@dooption{debug=true}% \renewcommand*{\@glsxtrwrglossmark}{}% \or % false \glsxtr@dooption{debug=false}% \renewcommand*{\@glsxtrwrglossmark}{}% \let\@glsxtr@doshowtarget\@secondoftwo \or % showtargets \glsxtr@dooption{debug=showtargets}% \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% \or % showwrgloss \glsxtr@dooption{debug=true}% \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% \or % all \glsxtr@dooption{debug=showtargets,debug=showaccsupp}% \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% \or % showaccsupp \glsxtr@dooption{debug=showaccsupp}% \fi } \newcommand*{\glsxtrshowtargetouter}{\glsshowtargetouter} \newcommand*{\glsxtrshowtargetinner}[1]{\glsshowtargetinner{#1}} \newcommand{\@glsxtrshowtargetleft}[2]{\@glsshowtarget{#1}#2\@glsxtrshowtargetmark}% \newcommand{\@glsxtrshowtargetright}[2]{\@glsxtrshowtargetmark#2\@glsshowtarget{#1}}% \newcommand{\@glsxtrshowtargetmark}{}% \define@choicekey{glossaries-extra.sty}{showtargets} [\@glsxtr@showtargetsval\@glsxtr@showtargetsnr]% {left,right,innerleft,innerright,annoteleft,annoteright}% {% \glsxtr@dooption{debug=showtargets}% \ifcase\@glsxtr@showtargetsnr\relax \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% \def\glsxtrshowtargetouter{\glsshowtargetouter}% \def\glsxtrshowtargetinner{\glsshowtargetinner}% \let\@glsxtrshowtargetmark\empty \or \def\@glsxtr@doshowtarget{\@glsxtrshowtargetright}% \def\glsxtrshowtargetouter{\glsshowtargetouter}% \def\glsxtrshowtargetinner{\glsshowtargetinner}% \let\@glsxtrshowtargetmark\empty \or \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% \def\glsxtrshowtargetouter{\glsxtrshowtargetinner}% \def\glsxtrshowtargetinner{\glsshowtargetinnersymleft}% \let\@glsxtrshowtargetmark\empty \or \def\@glsxtr@doshowtarget{\@glsxtrshowtargetright}% \def\glsxtrshowtargetouter{\glsxtrshowtargetinner}% \def\glsxtrshowtargetinner{\glsshowtargetinnersymright}% \let\@glsxtrshowtargetmark\empty \or \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% \def\glsxtrshowtargetouter{\glsxtrshowtargetinner}% \def\glsxtrshowtargetinner{\glsshowtargetinnersymleft}% \def\@glsxtrshowtargetmark{\@glsshowtargetmarkfmt\glsxtrshowtargetsymbolright}% \or \def\@glsxtr@doshowtarget{\@glsxtrshowtargetright}% \def\glsxtrshowtargetouter{\glsxtrshowtargetinner}% \def\glsxtrshowtargetinner{\glsshowtargetinnersymright}% \def\@glsxtrshowtargetmark{\@glsshowtargetmarkfmt\glsxtrshowtargetsymbolleft}% \fi } \DeclareOptionX*{% \expandafter\glsxtr@dooption\expandafter{\CurrentOption}} \ProcessOptionsX \RequirePackage{glossaries} \@glsxtr@doaccsupp \@glsxtr@doloadprefix \@glsxtr@defpostpunc \def\glsdoshowtarget{\@glsxtr@doshowtarget} \newcommand{\glsxtrshowtargetsymbolright}{{\tiny$\triangleleft$}}% \newcommand{\glsxtrshowtargetsymbolleft}{{\tiny$\triangleright$}}% \providecommand*{\glsshowtargetinner}[1]{{\glsshowtargetfont [#1]}} \providecommand*{\glsshowtargetfont}{\ttfamily\footnotesize} \newcommand*{\glsshowtargetinnersymleft}[1]{% \glsshowtargetinner{#1}\allowbreak\glsxtrshowtargetsymbolleft} \newcommand*{\glsshowtargetinnersymright}[1]{% \glsxtrshowtargetsymbolright\allowbreak\glsshowtargetinner{#1}} \providecommand*{\glsshowtargetouter}[1]{% \glsshowtargetsymbol\marginpar{\glsshowtargetsymbol\glsshowtargetfont #1}} \providecommand*{\@glsshowtarget}[1]{} \def\glsshowtarget#1{% \glsxtrtitleorpdforheading {% \ifmmode \nfss@text{\glsxtrshowtargetinner{#1}}% \else \ifinner \glsxtrshowtargetinner{#1}% \else \glsxtrshowtargetouter{#1}% \fi \fi }% {[#1]}% {{\protect\glsshowtargetinner{#1}}}% } \newcommand*{\@glsshowtargetmarkfmt}[1]{% \glsxtrtitleorpdforheading {% \ifmmode \nfss@text{#1}\else #1\fi }% {}% {\ifmmode \nfss@text{#1}\else #1\fi}% } \let\@glsxtr@org@doseeglossary\@do@seeglossary \newcommand*{\@glsxtr@doseeglossary}[2]{% \glsdoifexists{#1}% {% \@@glsxtrwrglossmark \@glsxtr@org@doseeglossary{#1}{#2}% }% } \newcommand*{\@glsxtr@dosee@alsoindex@glossary}[2]{% \@glsxtr@recordsee{#1}{#2}% \@glsxtr@doseeglossary{#1}{#2}% } \let\@glsxtr@org@gloautosee\@glo@autosee \if@glsxtr@autoseeindex \else \ifdef\@glsxtr@org@gloautosee {}% {\PackageError{glossaries-extra}{`autoseeindex=false' package option requires at least v4.30 of glossaries.sty}% {You need to update the glossaries.sty package}% } \fi \ifdef\@glo@autosee {% \renewcommand*{\@glo@autosee}{% \if@glsxtr@autoseeindex\@glsxtr@org@gloautosee\fi}% }% {} \renewcommand*{\gls@checkseeallowed}{% \if@glsxtr@autoseeindex\@gls@see@noindex\fi } \@glsxtr@abbreviationsdef \let\@glsxtr@abbreviationsdef\relax \@glsxtr@setupshortcuts \@glsxtr@redef@forglsentries \renewcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}% \disable@keys{glossaries-extra.sty}{accsupp} \newcommand*{\glossariesextrasetup}[1]{% \let\glsxtr@setup@record\relax \let\@glsxtr@setupshortcuts\relax \let\@glsxtr@redef@forglsentries\relax \let\@glsxtr@doloadprefix\relax \setkeys{glossaries-extra.sty}{#1}% \@glsxtr@abbreviationsdef \let\@glsxtr@abbreviationsdef\relax \@glsxtr@setupshortcuts \glsxtr@setup@record \@glsxtr@redef@forglsentries \@glsxtr@doloadprefix } \let\glsxtr@org@@do@wrglossary\@@do@wrglossary \newcommand*{\glsxtr@@do@wrglossary}[1]{% \@@glsxtrwrglossmark \glsxtr@inc@wrglossaryctr{#1}% \glsxtr@org@@do@wrglossary{#1}% } \let\glsxtr@saveentrycounter\@gls@saveentrycounter \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter \renewcommand*\@gls@getcounterprefix[2]{% \protected@edef\@gls@thisloc{#1}\protected@edef\@gls@thisHloc{#2}% \ifx\@gls@thisloc\@gls@thisHloc \def\@glo@counterprefix{}% \else \def\@gls@get@counterprefix##1.#1##2\end@getprefix{% \def\@glo@tmp{##2}% \ifx\@glo@tmp\@empty \def\@glo@counterprefix{}% \else \def\@glo@counterprefix{##1}% \fi }% \@gls@get@counterprefix#2.#1\end@getprefix \ifx\@glo@counterprefix\@empty \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref \else \GlossariesExtraWarning{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"% \ifx\@glsxtr@record@setting\@glsxtr@record@setting@only . You may want to consider using record=nameref instead% \fi}% \fi \fi \fi } \newcommand*{\@glsxtrdialecthook}{} \glsxtr@setup@record \AtBeginDocument{% \disable@keys{glossaries-extra.sty}{abbreviations,docdef,record}% \def\@glsxtrundeftag{\glsxtrundeftag}% } \newcommand*{\GlsXtrIfUnusedOrUndefined}[3]{% \ifglsentryexists{#1}% {\ifbool{glo@\glsdetoklabel{#1}@flag}{#3}{#2}}% {#2}% } \ifdef\s@ifglossaryexists {} { \renewcommand{\ifglossaryexists}{% \@ifstar\s@ifglossaryexists\@ifglossaryexists } \newcommand{\@ifglossaryexists}[3]{% \ifcsundef{@glotype@#1@out}{#3}{#2}% } \newcommand{\s@ifglossaryexists}[3]{% \ifcsundef{glolist@#1}{#3}{#2}% } } \newcommand{\glsxtrifemptyglossary}[3]{% \ifcsdef{glolist@#1}% {% \ifcsstring{glolist@#1}{,}{#2}{#3}% }% {% \glsxtrundefaction{Glossary type `#1' doesn't exist}{}% #2% }% } \newcommand*{\glsxtrifkeydefined}[3]{% \key@ifundefined{glossentry}{#1}{#3}{#2}% } \newcommand*{\glsxtrprovidestoragekey}{% \@ifstar\@sglsxtr@provide@storagekey\@glsxtr@provide@storagekey } \newcommand*{\@glsxtr@provide@storagekey}[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}% }% \ifblank{#3} {}% {% \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}% }% }% {% \ifblank{#3} {}% {% \providecommand*{#3}[1]{\@gls@entry@field{##1}{#1}}% }% }% } \newcommand*{\s@glsxtr@provide@storagekey}[1]{% \key@ifundefined{glossentry}{#1}% {% \expandafter\newcommand\expandafter*\expandafter {\csname gls@assign@#1@field\endcsname}[2]{% \@@gls@expand@field{##1}{#1}{##2}% }% }% {}% \@glsxtr@provide@addstoragekey{#1}% } \newcommand{\GlsXtrFmtField}{useri} \newcommand{\GlsXtrFmtDefaultOptions}{noindex} \newrobustcmd*{\glsxtrfmt}{\@ifstar\s@glsxtrfmt\@glsxtrfmt} \newcommand*{\@glsxtrfmt}[3][]{\@@glsxtrfmt{#1}{#2}{#3}{}} \newcommand*{\s@glsxtrfmt}[3][]{% \new@ifnextchar[{\s@@glsxtrfmt{#1}{#2}{#3}}% {\@@glsxtrfmt{#1}{#2}{#3}{}}% } \def\s@@glsxtrfmt#1#2#3[#4]{\@@glsxtrfmt{#1}{#2}{#3}{#4}} \newcommand*{\@@glsxtrfmt}[4]{% \begingroup \def\glslabel{#2}% \glsdoifexistsordo{#2}% {% \ifglshasfield{\GlsXtrFmtField}{#2}% {% \let\do@gls@link@checkfirsthyper\relax \expandafter\@gls@link\expandafter[\GlsXtrFmtDefaultOptions,#1]{#2}% {\glsxtrfmtdisplay{\glscurrentfieldvalue}{#3}{#4}}% }% {\glsxtrfmtdisplay{@firstofone}{#3}{#4}}% }% {% \begingroup \@gls@setdefault@glslink@opts \setkeys{glslink}{\GlsXtrFmtDefaultOptions,#1}% \ifKV@glslink@noindex\else\glsadd{#2}\fi \endgroup \glsxtrfmtdisplay{@firstofone}{#3}{#4}% }% \endgroup } \newcommand{\glsxtrfmtdisplay}[3]{\csuse{#1}{#2}#3} \ifdef\texorpdfstring { \newcommand*{\glsxtrentryfmt}[2]{% \texorpdfstring{\@glsxtrentryfmt{#1}{#2}}{\glsxtrpdfentryfmt{#1}{#2}}% } } { \newcommand*{\glsxtrentryfmt}{\@glsxtrentryfmt} } \newcommand*{\glsxtrpdfentryfmt}[2]{#2} \newrobustcmd*{\@glsxtrentryfmt}[2]{% {% \protected@edef\glslabel{#1}% \glsdoifexistsordo{#1}% {% \ifglshasfield{\GlsXtrFmtField}{#1}% {% \csuse{\glscurrentfieldvalue}{#2}% }% {#2}% }% {#2}% }% } \newcommand*{\glsxtrfieldlistadd}[3]{% \listcsadd{glo@\glsdetoklabel{#1}@#2}{#3}% } \newcommand*{\glsxtrfieldlistgadd}[3]{% \listcsgadd{glo@\glsdetoklabel{#1}@#2}{#3}% } \newcommand*{\glsxtrfieldlisteadd}[3]{% \listcseadd{glo@\glsdetoklabel{#1}@#2}{#3}% } \newcommand*{\glsxtrfieldlistxadd}[3]{% \listcsxadd{glo@\glsdetoklabel{#1}@#2}{#3}% } \newcommand*{\glsxtrfielddolistloop}[2]{% \dolistcsloop{glo@\glsdetoklabel{#1}@#2}% } \newcommand*{\glsxtrfieldforlistloop}[3]{% \forlistcsloop{#3}{glo@\glsdetoklabel{#1}@#2}% } \newrobustcmd*{\glsxtrfieldformatlist}[2]{% \begingroup \def\@dtl@formatlist@itemsep{}% \def\@dtl@formatlist@lastitem{}% \def\@dtl@formatlist@prelastitem{}% \def\@dtl@formatlist@prelastitemsep{}% \forlistcsloop{\@dtl@formatlist@handler}{glo@\glsdetoklabel{#1}@#2}% \@dtl@formatlist@prelastitem\@dtl@formatlist@lastitem \endgroup } \newcommand*{\glsxtrfieldifinlist}[5]{% \ifinlistcs{#3}{glo@\glsdetoklabel{#1}@#2}{#4}{#5}% } \newcommand*{\glsxtrfieldxifinlist}[5]{% \xifinlistcs{#3}{glo@\glsdetoklabel{#1}@#2}{#4}{#5}% } \newcommand*{\glsxtrforcsvfield}{% \@ifstar\s@glsxtrforcsvfield\@glsxtrforcsvfield } \newcommand*{\@glsxtrforcsvfield}[3]{% \@glsxtrifhasfield{#2}{#1}% {% \let\glsxtrendfor\@endfortrue \@for\@glsxtr@label:=\glscurrentfieldvalue\do {\expandafter#3\expandafter{\@glsxtr@label}}}% {}% } \newcommand*{\s@glsxtrforcsvfield}[3]{% \s@glsxtrifhasfield{#2}{#1}% {% \let\glsxtrendfor\@endfortrue \@for\@glsxtr@label:=\glscurrentfieldvalue\do {\expandafter#3\expandafter{\@glsxtr@label}}}% {}% } \newrobustcmd*{\glsxtrfieldformatcsvlist}[2]{% \@glsxtrifhasfield{#2}{#1}% {\@dtlformatlist\glscurrentfieldvalue}% {}% } \newcommand*{\GlsXtrIfFieldValueInCsvList}{% \@ifstar\s@GlsXtrIfFieldValueInCsvList\@GlsXtrIfFieldValueInCsvList } \newcommand*{\@GlsXtrIfFieldValueInCsvList}[5]{% \@glsxtrifhasfield{#2}{#1}% {% \expandafter\DTLifinlist\expandafter{\glscurrentfieldvalue}% {#3}{#4}{#5}% }% {#5}% } \newcommand*{\s@GlsXtrIfFieldValueInCsvList}[5]{% \s@glsxtrifhasfield{#2}{#1}% {% \expandafter\DTLifinlist\expandafter{\glscurrentfieldvalue}% {#3}{#4}{#5}% }% {#5}% } \newcommand*{\GlsXtrIfValueInFieldCsvList}{% \@ifstar\s@GlsXtrIfValueInFieldCsvList\@GlsXtrIfValueInFieldCsvList } \newcommand*{\@GlsXtrIfValueInFieldCsvList}[5]{% \@glsxtrifhasfield{#2}{#1}% {% \DTLifinlist{#3}{\glscurrentfieldvalue}{#4}{#5}% }% {#5}% } \newcommand*{\s@GlsXtrIfValueInFieldCsvList}[5]{% \s@glsxtrifhasfield{#2}{#1}% {% \DTLifinlist{#3}{\glscurrentfieldvalue}{#4}{#5}% }% {#5}% } \newcommand*{\xGlsXtrIfValueInFieldCsvList}{% \@ifstar\s@xGlsXtrIfValueInFieldCsvList\@xGlsXtrIfValueInFieldCsvList } \newcommand*{\@xGlsXtrIfValueInFieldCsvList}[5]{% \@glsxtrifhasfield{#2}{#1}% {% \protected@edef\@gls@tmp{#3}% \expandafter\DTLifinlist\expandafter{\@gls@tmp}{\glscurrentfieldvalue}{#4}{#5}% }% {#5}% } \newcommand*{\s@xGlsXtrIfValueInFieldCsvList}[5]{% \s@glsxtrifhasfield{#2}{#1}% {% \protected@edef\@gls@tmp{#3}% \expandafter\DTLifinlist\expandafter{\@gls@tmp}{\glscurrentfieldvalue}{#4}{#5}% }% {#5}% } \newrobustcmd{\glsxtrifhasfield}{% \@ifstar{\s@glsxtrifhasfield}{\@glsxtrifhasfield}% } \newcommand{\@glsxtrifhasfield}[4]{% {\s@glsxtrifhasfield{#1}{#2}{#3}{#4}}% } \newcommand{\s@glsxtrifhasfield}[4]{% \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}% \ifundef\glscurrentfieldvalue {#4}% {% \ifdefempty\glscurrentfieldvalue{#4}{#3}% }% } \newcommand{\GlsXtrIfFieldNonZero}{% \@ifstar\s@GlsXtrIfFieldNonZero\@GlsXtrIfFieldNonZero } \newcommand{\@GlsXtrIfFieldNonZero}[4]{% \@GlsXtrIfFieldCmpNum{#1}{#2}{=}{0}{#4}{#3}% } \newcommand{\s@GlsXtrIfFieldNonZero}[4]{% \s@GlsXtrIfFieldCmpNum{#1}{#2}{=}{0}{#4}{#3}% } \newcommand{\GlsXtrIfFieldEqNum}{% \@ifstar\s@GlsXtrIfFieldEqNum\@GlsXtrIfFieldEqNum } \newcommand{\@GlsXtrIfFieldEqNum}[5]{% \@GlsXtrIfFieldCmpNum{#1}{#2}{=}{#3}{#4}{#5}% } \newcommand{\s@GlsXtrIfFieldEqNum}[5]{% \s@GlsXtrIfFieldCmpNum{#1}{#2}{=}{#3}{#4}{#5}% } \newcommand{\GlsXtrIfFieldCmpNum}{% \@ifstar\s@GlsXtrIfFieldCmpNum\@GlsXtrIfFieldCmpNum } \newcommand{\@GlsXtrIfFieldCmpNum}[6]{% {% \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}% \ifundef\glscurrentfieldvalue {\def\glscurrentfieldvalue{0}}% {% \ifdefempty\glscurrentfieldvalue {\def\glscurrentfieldvalue{0}}% {}% }% \ifnum\glscurrentfieldvalue#3#4\relax #5\else #6\fi }% } \newcommand{\s@GlsXtrIfFieldCmpNum}[6]{% \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}% \ifundef\glscurrentfieldvalue {\def\glscurrentfieldvalue{0}}% {% \ifdefempty\glscurrentfieldvalue {\def\glscurrentfieldvalue{0}}% {}% }% \ifnum\glscurrentfieldvalue#3#4\relax #5\else #6\fi } \newcommand{\GlsXtrIfFieldUndef}[2]{% \ifcsundef{glo@\glsdetoklabel{#2}@#1}% } \newcommand*{\glsxtrusefield}[2]{% \@gls@entry@field{#1}{#2}% } \ifdef\texorpdfstring { \newcommand*{\Glsxtrusefield}[2]{% \texorpdfstring {\@Gls@entry@field{#1}{#2}} {\@gls@entry@field{#1}{#2}}% } } { \newcommand*{\Glsxtrusefield}[2]{% \@Gls@entry@field{#1}{#2}% } } \ifdef\texorpdfstring { \newcommand*{\GLSxtrusefield}[2]{% \texorpdfstring {\glsdoifexists{#1}{\mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}}}% {\@gls@entry@field{#1}{#2}}% } } { \newcommand*{\GLSxtrusefield}[2]{% \glsdoifexists{#1}{\mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}}% } } \newcommand*{\glsxtrentryparentname}[1]{% \ifcsdef{glo@\glsdetoklabel{#1}@parent}% {\csuse{glo@\csuse{glo@\glsdetoklabel{#1}@parent}@name}}% {}% } \newcommand*{\glsxtrdeffield}[2]{\csdef{glo@\glsdetoklabel{#1}@#2}} \newcommand*{\glsxtredeffield}[2]{\protected@csedef{glo@\glsdetoklabel{#1}@#2}} \newcommand*{\glsxtrapptocsvfield}[3]{% \ifcsdef{glo@\glsdetoklabel{#1}@#2}% {\csappto{glo@\glsdetoklabel{#1}@#2}{,#3}}% {\csdef{glo@\glsdetoklabel{#1}@#2}{#3}}% } \newcommand*{\glsxtrsetfieldifexists}[3]{\glsdoifexists{#1}{#3}} \newrobustcmd*{\GlsXtrSetField}[3]{% \glsxtrsetfieldifexists{#1}{#2}% {\csdef{glo@\glsdetoklabel{#1}@#2}{#3}}% } \newrobustcmd*{\GlstrLetField}[3]{% \glsxtrsetfieldifexists{#1}{#2}% {\cslet{glo@\glsdetoklabel{#1}@#2}{#3}}% } \newrobustcmd*{\csGlsXtrLetField}[3]{% \glsxtrsetfieldifexists{#1}{#2}% {\csletcs{glo@\glsdetoklabel{#1}@#2}{#3}}% } \newrobustcmd*{\GlsXtrLetFieldToField}[4]{% \glsxtrsetfieldifexists{#1}{#2}% {\csletcs{glo@\glsdetoklabel{#1}@#2}{glo@\glsdetoklabel{#3}@#4}}% } \newrobustcmd*{\gGlsXtrSetField}[3]{% \glsxtrsetfieldifexists{#1}{#2}% {\csgdef{glo@\glsdetoklabel{#1}@#2}{#3}}% } \newrobustcmd*{\xGlsXtrSetField}[3]{% \glsxtrsetfieldifexists{#1}{#2}% {\protected@csxdef{glo@\glsdetoklabel{#1}@#2}{#3}}% } \newrobustcmd*{\eGlsXtrSetField}[3]{% \glsxtrsetfieldifexists{#1}{#2}% {\protected@csedef{glo@\glsdetoklabel{#1}@#2}{#3}}% } \newcommand*{\GlsXtrIfFieldEqStr}{% \@ifstar\s@GlsXtrIfFieldEqStr\@GlsXtrIfFieldEqStr } \newrobustcmd*{\@GlsXtrIfFieldEqStr}[5]{% \@glsxtrifhasfield{#1}{#2}% {% \ifdefstring{\glscurrentfieldvalue}{#3}{#4}{#5}% }% {#5}% } \newrobustcmd*{\s@GlsXtrIfFieldEqStr}[5]{% \s@glsxtrifhasfield{#1}{#2}% {% \ifdefstring{\glscurrentfieldvalue}{#3}{#4}{#5}% }% {#5}% } \newcommand*{\GlsXtrIfFieldEqXpStr}{% \@ifstar\s@GlsXtrIfFieldEqXpStr\@GlsXtrIfFieldEqXpStr } \newrobustcmd*{\@GlsXtrIfFieldEqXpStr}[5]{% \@glsxtrifhasfield{#1}{#2}% {% \protected@edef\@gls@tmp{#3}% \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}% }% {#5}% } \newrobustcmd*{\s@GlsXtrIfFieldEqXpStr}[5]{% \s@glsxtrifhasfield{#1}{#2}% {% \protected@edef\@gls@tmp{#3}% \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}% }% {#5}% } \newcommand*{\GlsXtrIfXpFieldEqXpStr}{% \@ifstar\s@GlsXtrIfXpFieldEqXpStr\@GlsXtrIfXpFieldEqXpStr } \newrobustcmd*{\@GlsXtrIfXpFieldEqXpStr}[5]{% \@glsxtrifhasfield{#1}{#2}% {% \protected@edef\@gls@tmp{\glscurrentfieldvalue}% \let\glscurrentfieldvalue\@gls@tmp \protected@edef\@gls@tmp{#3}% \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}% }% {#5}% } \newrobustcmd*{\s@GlsXtrIfXpFieldEqXpStr}[5]{% \s@glsxtrifhasfield{#1}{#2}% {% \protected@edef\@gls@tmp{\glscurrentfieldvalue}% \let\glscurrentfieldvalue\@gls@tmp \protected@edef\@gls@tmp{#3}% \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}% }% {#5}% } \ifdef\foreignlanguage { \ifdef\GetTrackedDialectFromLanguageTag { \newcommand{\GlsXtrForeignText}[2]{% \let\@glsxtr@org@currentfieldvalue\glscurrentfieldvalue \glsxtrifhasfield{\GlsXtrForeignTextField}{#1}% {% \expandafter\GetTrackedDialectFromLanguageTag\expandafter {\glscurrentfieldvalue}{\@glsxtr@dialect}% \let\@glsxtr@locale\glscurrentfieldvalue \let\glscurrentfieldvalue\@glsxtr@org@currentfieldvalue \ifdefempty\@glsxtr@dialect {% \ifundef\TrackedDialectClosestSubMatch {% \GlossariesExtraWarning{Can't obtain dialect label (tracklang v1.3.6+ required)}% }% {\let\@glsxtr@dialect\TrackedDialectClosestSubMatch}% }% {}% \ifdefempty\@glsxtr@dialect {% }% {% \ifcsundef{captions\@glsxtr@dialect}{}% {% \IfTrackedDialectHasMapping{\@glsxtr@dialect}% {% \edef\@glsxtr@dialect{% \GetTrackedDialectToMapping{\@glsxtr@dialect}}% \ifcsundef{captions\@glsxtr@dialect}{}% {% \ifcsundef{captions\@tracklang@lang}{}% {% \let\@glsxtr@dialect\@tracklang@lang }% }% }% {% \ifcsundef{captions\@tracklang@lang}{}% {% \let\@glsxtr@dialect\@tracklang@lang }% }% }% }% \ifdefempty\@glsxtr@dialect {% \GlsXtrUnknownDialectWarning{\@glsxtr@locale}{\@tracklang@lang}% #2% }% {\foreignlanguage{\@glsxtr@dialect}{#2}}% }% {#2}% key not set } } { \newcommand{\GlsXtrForeignText}[2]{% \GlossariesExtraWarning{Can't encapsulate foreign text: tracklang v1.3.6+ required}% #2% } } } { \newcommand{\GlsXtrForeignText}[2]{#2} } \newcommand*{\GlsXtrForeignTextField}{userii} \newcommand*{\GlsXtrUnknownDialectWarning}[2]{% \GlossariesExtraWarning{Can't determine valid dialect label for locale `#1' (root language: #2)}% } \ifdef\GlsEntryCounterLabelPrefix {% \newcommand*{\glsxtrpageref}[1]{% \ifglsentrycounter \pageref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}% \else \ifglssubentrycounter \pageref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}% \else \gls{#1}% \fi \fi } }% {% \newcommand*{\glsxtrpageref}[1]{% \ifglsentrycounter \pageref{glsentry-\glsdetoklabel{#1}}% \else \ifglssubentrycounter \pageref{glsentry-\glsdetoklabel{#1}}% \else \gls{#1}% \fi \fi } }% \newcommand{\apptoglossarypreamble}[2][\glsdefaulttype]{% \ifcsdef{glolist@#1}% {% \ifcsundef{@glossarypreamble@#1}% {\csdef{@glossarypreamble@#1}{}}% {}% \csappto{@glossarypreamble@#1}{#2}% }% {% \GlossariesExtraWarning{Glossary `#1' is not defined}% }% } \newcommand{\preglossarypreamble}[2][\glsdefaulttype]{% \ifcsdef{glolist@#1}% {% \ifcsundef{@glossarypreamble@#1}% {\csdef{@glossarypreamble@#1}{}}% {}% \cspreto{@glossarypreamble@#1}{#2}% }% {% \GlossariesExtraWarning{Glossary `#1' is not defined}% }% } \ifdef\@gls@entry@field { \renewcommand*{\@gls@entry@field}[2]{\csuse{glo@\glsdetoklabel{#1}@#2}} } {} \renewcommand*{\ifglsused}[3]{% \glsdoifexists{#1}{\ifbool{glo@\glsdetoklabel{#1}@flag}{#2}{#3}}% } \renewcommand*{\longnewglossaryentry}{% \@ifstar\@glsxtr@s@longnewglossaryentry\@glsxtr@longnewglossaryentry } \newcommand{\@glsxtr@s@longnewglossaryentry}[3]{% \glsdoifnoexists{#1}% {% \bgroup \let\@org@newglossaryentryprehook\@newglossaryentryprehook \long\def\@newglossaryentryprehook{% \long\def\@glo@desc{#3}% \@org@newglossaryentryprehook }% \renewcommand*{\gls@assign@desc}[1]{% \global\cslet{glo@\glsdetoklabel{#1}@desc}{\@glo@desc}% \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@descplural}% } \gls@defglossaryentry{#1}{#2}% \egroup }% } \newcommand{\@glsxtr@longnewglossaryentry}[3]{% \glsdoifnoexists{#1}% {% \bgroup \let\@org@newglossaryentryprehook\@newglossaryentryprehook \long\def\@newglossaryentryprehook{% \long\def\@glo@desc{#3\glsxtrpostlongdescription}% \@org@newglossaryentryprehook }% \renewcommand*{\gls@assign@desc}[1]{% \global\cslet{glo@\glsdetoklabel{#1}@desc}{\@glo@desc}% \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@descplural}% } \gls@defglossaryentry{#1}{#2}% \egroup }% } \newcommand*{\glsxtrpostlongdescription}{\leavevmode\unskip\nopostdesc} \renewcommand{\newignoredglossary}{% \@ifstar\glsxtr@s@newignoredglossary\glsxtr@org@newignoredglossary } \newcommand*{\glsxtr@org@newignoredglossary}[1]{% \ifcsdef{glolist@#1} {% \glsxtrundefaction{Glossary type `#1' already exists}{}% }% {% \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*{\glsxtr@s@newignoredglossary}[1]{% \ifcsdef{glolist@#1} {% \glsxtrundefaction{Glossary type `#1' already exists}{}% }% {% \ifdefempty\@ignored@glossaries {% \protected@edef\@ignored@glossaries{#1}% }% {% \protected@eappto\@ignored@glossaries{,#1}% }% \csgdef{glolist@#1}{,}% \ifcsundef{gls@#1@entryfmt}% {% \defglsentryfmt[#1]{\glsentryfmt}% }% {}% }% } \glsifusetranslator {% \renewcommand*{\glssettoctitle}[1]{% \ifcsdef{gls@tr@set@#1@toctitle}% {% \csuse{gls@tr@set@#1@toctitle}% }% {% \ifcsdef{@glotype@#1@title}% {\def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}% {\def\glossarytoctitle{\glossarytitle}}% }% }% } { \renewcommand*{\glssettoctitle}[1]{% \ifcsdef{@glotype@#1@title}% {\def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}% {\def\glossarytoctitle{\glossarytitle}}% } } \newcommand{\provideignoredglossary}{% \@ifstar\glsxtr@s@provideignoredglossary\glsxtr@provideignoredglossary } \newcommand*{\glsxtr@provideignoredglossary}[1]{% \ifcsdef{glolist@#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*{\glsxtr@s@provideignoredglossary}[1]{% \ifcsdef{glolist@#1} {}% {% \ifdefempty\@ignored@glossaries {% \protected@edef\@ignored@glossaries{#1}% }% {% \protected@eappto\@ignored@glossaries{,#1}% }% \csgdef{glolist@#1}{,}% \ifcsundef{gls@#1@entryfmt}% {% \defglsentryfmt[#1]{\glsentryfmt}% }% {}% }% } \newcommand*{\glsxtrcopytoglossary}[2]{% \glsdoifexists{#1}% {% \ifcsdef{glolist@#2} {% \protected@cseappto{glolist@#2}{#1,}% }% {% \glsxtrundefaction{Glossary type `#2' doesn't exist}{}% }% }% } \renewcommand{\glsdoifexists}[2]{% \ifglsentryexists{#1}{#2}% {% \protected@edef\glslabel{\glsdetoklabel{#1}}% \glsxtrundefaction{Glossary entry `\glslabel' has not been defined}{You need to define a glossary entry before you can reference it.}% }% } \renewcommand{\glsdoifnoexists}[2]{% \ifglsentryexists{#1}{% \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}' has already been defined}{}}{#2}% } \ifdef\glsdoifexistsordo {% \renewcommand{\glsdoifexistsordo}[3]{% \ifglsentryexists{#1}{#2}% {% \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}' has not been defined}{You need to define a glossary entry before you can use it.}% #3% }% }% } {% \glsxtr@warnonexistsordo\glsdoifexistsordo \newcommand{\glsdoifexistsordo}[3]{% \ifglsentryexists{#1}{#2}% {% \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}' has not been defined}{You need to define a glossary entry before you can use it.}% #3% }% }% } \ifdef\doifglossarynoexistsordo {% \renewcommand{\doifglossarynoexistsordo}[3]{% \ifglossaryexists*{#1}% {% \glsxtrundefaction{Glossary type `#1' already exists}{}% #3% }% {#2}% }% } {% \glsxtr@warnonexistsordo\doifglossarynoexistsordo \newcommand{\doifglossarynoexistsordo}[3]{% \ifglossaryexists*{#1}% {% \glsxtrundefaction{Glossary type `#1' already exists}{}% #3% }% {#2}% }% } \appto\@newglossaryentryposthook{% \ifdefvoid\@glo@see {\csxdef{glo@\@glo@label @see}{}}% {% \csxdef{glo@\@glo@label @see}{\@glo@see}% \if@glsxtr@autoseeindex \@glsxtr@autoindexcrossrefs \fi }% } \appto\@gls@keymap{,{see}{see}} \newcommand*{\glsxtrusesee}[1]{% \glsdoifexists{#1}% {% \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@see}% \ifdefempty\@glo@see {}% {% \expandafter\glsxtr@usesee\@glo@see\@end@glsxtr@usesee }% }% } \newcommand*{\glsxtr@usesee}[1][\seename]{% \@glsxtr@usesee[#1]% } \def\@glsxtr@usesee[#1]#2\@end@glsxtr@usesee{% \glsxtruseseeformat{#1}{#2}% } \newcommand*{\glsxtruseseeformat}[2]{% \glsseeformat[#1]{#2}{}% } \renewcommand*{\glsseeitemformat}[1]{% \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% } \newcommand*{\glsxtrhiername}[1]{% \glsdoifexists{#1}% {% \glsxtrifhasfield{parent}{#1}% {\glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% {}% \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% }% } \newcommand*{\Glsxtrhiername}[1]{% \glsdoifexists{#1}% {% \glsxtrifhasfield{parent}{#1}% {% \Glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% }% {\ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}}% }% } \newcommand*{\GlsXtrhiername}[1]{% \glsdoifexists{#1}% {% \glsxtrifhasfield{parent}{#1}% {\GlsXtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% {}% \ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}% }% } \newcommand*{\GLSxtrhiername}[1]{% \glsdoifexists{#1}% {% \glsxtrifhasfield{parent}{#1}% {% \GLSxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% }% {\ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}}% }% } \newcommand*{\GLSXTRhiername}[1]{% \glsdoifexists{#1}% {% \glsxtrifhasfield{parent}{#1}% {\GLSXTRhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% {} \ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}% }% } \newcommand*{\glsxtrhiernamesep}{\,{\small$\triangleright$}\,} \newcommand*{\glsxtruseseealso}[1]{% \glsdoifexists{#1}% {% \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@seealso}% \ifdefempty\@glo@see {}% {% \expandafter\glsxtruseseealsoformat\expandafter{\@glo@see}% }% }% } \newcommand*{\glsxtrusealias}[1]{% \glsdoifexists{#1}% {% \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@alias}% \ifdefempty\@glo@see {}% {% \glsxtruseseeformat{\seename}{\@glo@see}% }% }% } \newcommand*{\glsxtruseseealsoformat}[1]{% \glsseeformat[\seealsoname]{#1}{}% } \newrobustcmd{\glsxtrseelist}[1]{% \protected@edef\@glo@tmp{\noexpand\glsseelist{#1}}\@glo@tmp } \renewrobustcmd*{\glsseelist}[1]{% \let\@gls@dolast\relax \let\@gls@donext\relax \let\@glsseeitem\@glsxtr@seefirstitem \let\@glsseelastsep\glsseelastsep \@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 \let\@glsseeitem\@glsxtr@seeitem \let\@glsseelastsep\glsseelastoxfordsep }% } \newcommand*{\@glsxtr@seeitem}[1]{% \glsxtrifmulti{#1}{\mglsseeitem{#1}}{\glsseeitem{#1}}% } \newcommand*{\@glsxtr@seefirstitem}[1]{% \glsxtrifmulti{#1}{\mglsseefirstitem{#1}}{\glsseefirstitem{#1}}% } \newcommand*{\mglsseeitem}[1]{% \mglsname[all={noindex},setup={hyper=allmain}]{#1}% } \newcommand*{\mglsseefirstitem}{\mglsseeitem} \newcommand*{\glsseefirstitem}{\glsseeitem} \newcommand*{\glsseelastoxfordsep}{\glsseelastsep} \ifdef\alsoname {\providecommand{\seealsoname}{\alsoname}} {\providecommand{\seealsoname}{see also}} \ifdef\@xdycrossrefhook { \appto\@xdycrossrefhook{% \write\glswrite{(define-crossref-class \string"seealso\string" :unverified )}% \write\glswrite{(markup-crossref-list :class \string"seealso\string"^^J\space\space\space :open \string"\string\glsxtruseseealsoformat\glsopenbrace\string" :close \string"\glsclosebrace\string")}% } \appto\@xdylocationclassorder{\space\string"seealso\string"} \newrobustcmd*{\glsxtrindexseealso}[2]{% \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex \@glsxtr@recordsee{#1}{#2}% \fi \glsdoifexists{#1}% {% \@@glsxtrwrglossmark \def\@gls@xref{#2}% \@onelevel@sanitize\@gls@xref \@gls@checkmkidxchars\@gls@xref \gls@glossary{\csname glo@#1@type\endcsname}{% (indexentry :tkey (\csname glo@#1@index\endcsname) :xref (\string"\@gls@xref\string") :attr \string"seealso\string" ) }% }% } } { \newrobustcmd*{\glsxtrindexseealso}{\glssee[\seealsoname]} } \ifdef\gls@set@xr@key { \define@key{glossentry}{alias}{% \gls@set@xr@key{alias}{\@glo@alias}{#1}% } \define@key{glossentry}{seealso}{% \gls@set@xr@key{seealso}{\@glo@seealso}{#1}% } \appto\@gls@keymap{,{alias}{alias},{seealso}{seealso}} \appto\@newglossaryentryprehook{\def\@glo@alias{}\def\@glo@seealso{}}% \appto\@newglossaryentryposthook{% \ifdefvoid\@glo@seealso {\csxdef{glo@\@glo@label @seealso}{}}% {% \csxdef{glo@\@glo@label @seealso}{\@glo@seealso}% \if@glsxtr@autoseeindex \@glsxtr@autoindexcrossrefs \fi }% \ifdefvoid\@glo@alias {\csxdef{glo@\@glo@label @alias}{}}% {% \csxdef{glo@\@glo@label @alias}{\@glo@alias}% }% } \newcommand*{\glsxtralias}[1]{\@gls@entry@field{#1}{alias}} \newcommand*{\glsxtrseealsolabels}[1]{\@gls@entry@field{#1}{seealso}} \appto\@glo@autoseehook{% \ifdefvoid\@glo@alias {% \ifdefvoid\@glo@seealso {}% {% \protected@edef\@do@glssee{\noexpand\glsxtrindexseealso {\@glo@label}{\@glo@seealso}}% \@do@glssee }% }% {% \ifdefvoid\@glo@see {% \protected@edef\@do@glssee{\noexpand\glssee{\@glo@label}{\@glo@alias}}% \@do@glssee }% {}% }% }% } { \glsaddstoragekey*{alias}{}{\glsxtralias} \glsaddstoragekey*{seealso}{}{\glsxtrseealsolabels} \appto\@newglossaryentryposthook{% \ifcsvoid{glo@\@glo@label @alias}% {% \ifcsvoid{glo@\@glo@label @seealso}% {}% {% \protected@edef\@do@glssee{\noexpand\glsxtrindexseealso {\@glo@label}{\csuse{glo@\@glo@label @seealso}}}% \@do@glssee }% }% {% \ifdefvoid\@glo@see {% \protected@edef\@do@glssee{\noexpand\glssee {\@glo@label}{\csuse{glo@\@glo@label @alias}}}% \@do@glssee }% {}% }% } } \AtEndDocument{\if@glsxtrindexcrossrefs\glsxtraddallcrossrefs\fi} \newcommand*{\glsxtraddallcrossrefs}{% \forallglossaries{\@glo@type}% {% \forglsentries[\@glo@type]{\@glo@label}% {% \ifglsused{\@glo@label}% {\expandafter\@glsxtr@addunusedxrefs\expandafter{\@glo@label}}{}% }% }% } \newcommand*{\@glsxtr@addunusedxrefs}[1]{% \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@see}% \ifdefvoid\@glo@see {}% {% \expandafter\glsxtr@addunused\@glo@see\@end@glsxtr@addunused }% \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@seealso}% \ifdefvoid\@glo@see {}% {% \expandafter\glsxtr@addunused\@glo@see\@end@glsxtr@addunused }% } \newcommand*{\glsxtr@addunused}[1][]{% \@glsxtr@addunused } \def\@glsxtr@addunused#1\@end@glsxtr@addunused{% \@for\@glsxtr@label:=#1\do {% \glsxtrifmulti\@glsxtr@label {% \letcs\@glsxtr@labellist{@gls@combined@\@glsxtr@label @list}% \@for\@glsxtr@multilabel:=\@glsxtr@labellist\do {\@glsxtr@addunused\@glsxtr@multilabel\@end@glsxtr@addunused}% }% {% \ifglsused{\@glsxtr@label}{}% {% \glsadd[format=glsxtrunusedformat]{\@glsxtr@label}% \glsunset{\@glsxtr@label}% \expandafter\@glsxtr@addunusedxrefs\expandafter{\@glsxtr@label}% }% }% }% } \newcommand*{\glsxtrunusedformat}[1]{\unskip} \ifdef\gls@begindocdefs {% \renewcommand*{\gls@begindocdefs}{% \ifnum\@glsxtr@docdefval=1\relax \@gls@enablesavenonumberlist \edef\@gls@restoreat{% \noexpand\catcode`\noexpand\@=\number\catcode`\@\relax}% \makeatletter \InputIfFileExists{\jobname.glsdefs}{}{}% \@gls@restoreat \undef\@gls@restoreat \gls@defdocnewglossaryentry \else \ifnum\@glsxtr@docdefval=3\relax \@gls@enablesavenonumberlist \let\gls@checkseeallowed\relax \let\newglossaryentry\new@atom@glossaryentry \global\newwrite\@gls@deffile \immediate\openout\@gls@deffile=\jobname.glsdefs \forallglsentries{\@glsentry}{\@gls@writedef{\@glsentry}}% \fi \fi } } {% \ifnum\@glsxtr@docdefval=3\relax \PackageError{glossaries-extra}{Package option `docdef=\@glsxtr@docdefsetting' requires at least version 4.37 of the base glossaries.sty package}{} \fi } \newrobustcmd{\new@atom@glossaryentry}[2]{% \gls@defglossaryentry{#1}{#2}% \@gls@writedef{#1}% } \let\glsxtr@orgmakenoidxglossaries\makenoidxglossaries \renewcommand{\makenoidxglossaries}{% \@domakeglossaries {% \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off {% \glsxtr@orgmakenoidxglossaries \renewcommand{\@do@seeglossary}[2]{% \@@glsxtrwrglossmark \protected@edef\@gls@label{\glsdetoklabel{##1}}% \protected@write\@auxout{}{% \string\@gls@reference {\csname glo@\@gls@label @type\endcsname}% {\@gls@label}% {% \string\glsseeformat##2{}% }% }% }% \if@glsxtrdocdefrestricted \renewcommand*{\@gls@reference}[3]{% \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}% }% \else \@glsxtrdocdeffalse \fi \disable@keys{glossaries-extra.sty}{docdef}% }% {% \PackageError{glossaries-extra}{\string\makenoidxglossaries\space not permitted\MessageBreak with record=\@glsxtr@record@setting\space package option}% {You may only use \string\makenoidxglossaries\ space with the record=off option}% }% }% } \renewcommand*{\gls@defdocnewglossaryentry}{% \ifcase\@glsxtr@docdefval \renewcommand*{\newglossaryentry}[2]{% \PackageError{glossaries-extra}{Glossary entries must be \MessageBreak defined in the preamble with \MessageBreak package option `docdef=false'\MessageBreak(consider using `docdef=restricted')}{Move your glossary definitions to the preamble. You can also put them in a \MessageBreak separate file and load them with \string\loadglsentries.}% }% \or \let\gls@checkseeallowed\relax \let\newglossaryentry\new@glossaryentry \else \let\gls@checkseeallowed\relax \fi }% \newcommand*{\GlsXtrEnableOnTheFly}{% \@ifstar\@sGlsXtrEnableOnTheFly\@GlsXtrEnableOnTheFly } \newcommand*{\@sGlsXtrEnableOnTheFly}{% \renewcommand*{\glsdetoklabel}[1]{% \expandafter\@glsxtr@ifcsstart\string##1 \@glsxtr@end@ {% \expandafter\detokenize\expandafter{##1}% }% {\detokenize{##1}}% }% \@GlsXtrEnableOnTheFly } \def\@glsxtr@ifcsstart#1#2\@glsxtr@end@#3#4{% \expandafter\if\glsbackslash#1% #3% \else #4% \fi } \newcommand*{\glsxtrstarflywarn}{% \GlossariesExtraWarning{Experimental starred version of \string\GlsXtrEnableOnTheFly\space in use (please ensure you have read the warnings in the glossaries-extra user manual)}% } \newcommand*{\@GlsXtrEnableOnTheFly}{% \newcommand*{\glsxtrcat}{general} \newcommand*{\glsxtr}[1][]{% \def\glsxtr@keylist{##1}% \@glsxtr } \newcommand*{\@glsxtr}[2][]{% \ifglsentryexists{##2}% {% \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}% }% {% \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat, description={\nopostdesc},##1}% }% \expandafter\gls\expandafter[\glsxtr@keylist]{##2}% } \newcommand*{\Glsxtr}[1][]{% \def\glsxtr@keylist{##1}% \@Glsxtr } \newcommand*{\@Glsxtr}[2][]{% \ifglsentryexists{##2}% {% \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}% }% {% \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat, description={\nopostdesc},##1}% }% \expandafter\Gls\expandafter[\glsxtr@keylist]{##2}% } \newcommand*{\glsxtrpl}[1][]{% \def\glsxtr@keylist{##1}% \@glsxtrpl } \newcommand*{\@glsxtrpl}[2][]{% \ifglsentryexists{##2}% {% \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}% }% {% \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat, description={\nopostdesc},##1}% }% \expandafter\glspl\expandafter[\glsxtr@keylist]{##2}% } \newcommand*{\Glsxtrpl}[1][]{% \def\glsxtr@keylist{##1}% \@Glsxtrpl } \newcommand*{\@Glsxtrpl}[2][]{% \ifglsentryexists{##2} {% \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}% }% {% \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat, description={\nopostdesc},##1}% }% \expandafter\Glspl\expandafter[\glsxtr@keylist]{##2}% } \newcommand*{\GlsXtrWarning}[2]{% \def\@glsxtr@optlist{##1}% \@onelevel@sanitize\@glsxtr@optlist \GlossariesExtraWarning{The options `\@glsxtr@optlist' have been ignored for entry `##2' as it has already been defined}% } \renewcommand\@printglossary[2]{% \def\@glsxtr@printglossopts{##1}% \@glsxtr@orgprintglossary{##1}{##2}% \def\@glsxtr{\@glsxtr@disabledflycommand\glsxtr}% \def\@glsxtrpl{\@glsxtr@disabledflycommand\glsxtrpl}% \def\@Glsxtr{\@glsxtr@disabledflycommand\Glsxtr}% \def\@Glsxtrpl{\@glsxtr@disabledflycommand\Glsxtrpl}% } \newcommand*{\@glsxtr@disabledflycommand}[1]{% \PackageError{glossaries-extra}% {\string##1\space can't be used after any of the \MessageBreak glossaries have been displayed}% {The on-the-fly commands enabled by \string\GlsXtrEnableOnTheFly\space may only be used \MessageBreak before the glossaries. If you want to use any entries \MessageBreak after any of the glossaries, you must use the standard \MessageBreak method of first defining the entry and then using the \MessageBreak entry with commands like \string\gls}% \@@glsxtr@disabledflycommand }% \newcommand*{\@@glsxtr@disabledflycommand}[2][]{##2} \let\GlsXtrEnableOnTheFly\relax } \@onlypreamble\GlsXtrEnableOnTheFly \newcommand*{\@glsxtr@current@style}{\@glossary@default@style} \renewcommand*{\setglossarystyle}[1]{% \ifcsundef{@glsstyle@#1}% {% \PackageError{glossaries-extra}{Glossary style `#1' undefined}{}% }% {% \csname @glsstyle@#1\endcsname \protected@edef\@glsxtr@current@style{#1}% }% \ifx\@glossary@default@style\relax \protected@edef\@glossary@default@style{#1}% \fi } \ifdef\@glossary@default@style {} {% \let\@glossary@default@style\relax } \ifdef\glslistdottedwidth {% \ifdim\glslistdottedwidth=.5\hsize \setlength{\glslistdottedwidth}{-\dimexpr\maxdimen-1sp\relax} \AtBeginDocument{% \ifdim\glslistdottedwidth=-\dimexpr\maxdimen-1sp\relax \setlength{\glslistdottedwidth}{.5\columnwidth}% \fi }% \fi } {}% \ifdef\glsdescwidth {% \ifdim\glsdescwidth=.6\hsize \setlength{\glsdescwidth}{-\dimexpr\maxdimen-1sp\relax} \AtBeginDocument{% \ifdim\glsdescwidth=-\dimexpr\maxdimen-1sp\relax \setlength{\glsdescwidth}{.6\columnwidth}% \fi }% \fi } {}% \ifdef\glspagelistwidth {% \ifdim\glspagelistwidth=.1\hsize \setlength{\glspagelistwidth}{-\dimexpr\maxdimen-1sp\relax} \AtBeginDocument{% \ifdim\glspagelistwidth=-\dimexpr\maxdimen-1sp\relax \setlength{\glspagelistwidth}{.1\columnwidth}% \fi }% \fi } {}% \def\org@glossaryentrynumbers#1{#1\gls@save@numberlist{#1}}% \ifx\org@glossaryentrynumbers\glossaryentrynumbers \glsnonumberlistfalse \renewcommand*{\glossaryentrynumbers}[1]{% \ifglsentryexists{\glscurrententrylabel}% {% \@glsxtrpreloctag \GlsXtrFormatLocationList{#1}% \@glsxtrpostloctag \gls@save@numberlist{#1}% }{}% }% \else \glsnonumberlisttrue \renewcommand*{\glossaryentrynumbers}[1]{% \ifglsentryexists{\glscurrententrylabel}% {% \gls@save@numberlist{#1}% }{}% }% \fi \newcommand*{\GlsXtrFormatLocationList}[1]{#1} \newcommand*{\GlsXtrEnablePreLocationTag}[2]{% \let\@glsxtrpreloctag\@@glsxtrpreloctag \let\@glsxtrpostloctag\@@glsxtrpostloctag \renewcommand*{\@glsxtr@pagetag}{#1}% \renewcommand*{\@glsxtr@pagestag}{#2}% \renewcommand*{\@glsxtr@savepreloctag}[2]{% \csgdef{@glsxtr@preloctag@##1}{##2}% }% \renewcommand*{\@glsxtr@doloctag}{% \ifcsundef{@glsxtr@preloctag@\glscurrententrylabel}% {% \GlossariesWarning{Missing pre-location tag for `\glscurrententrylabel'. Rerun required}% }% {% \csuse{@glsxtr@preloctag@\glscurrententrylabel}% }% }% } \@onlypreamble\GlsXtrEnablePreLocationTag \newcommand*{\@@glsxtrpreloctag}{% \let\@glsxtr@org@delimN\delimN \let\@glsxtr@org@delimR\delimR \let\@glsxtr@org@glsignore\glsignore \gdef\@glsxtr@thisloctag{\@glsxtr@pagetag}% \renewcommand*{\delimN}{% \gdef\@glsxtr@thisloctag{\@glsxtr@pagestag}% \@glsxtr@org@delimN}% \renewcommand*{\delimR}{% \gdef\@glsxtr@thisloctag{\@glsxtr@pagestag}% \@glsxtr@org@delimR}% \renewcommand*{\glsignore}[1]{% \gdef\@glsxtr@thisloctag{\relax}% \@glsxtr@org@glsignore{##1}}% \@glsxtr@doloctag } \newcommand*{\@glsxtrpreloctag}{} \newcommand*{\@glsxtr@pagetag}{}% \newcommand*{\@glsxtr@pagestag}{}% \newcommand*{\@@glsxtrpostloctag}{% \let\delimN\@glsxtr@org@delimN \let\delimR\@glsxtr@org@delimR \let\glsignore\@glsxtr@org@glsignore \protected@write\@auxout{}% {\string\@glsxtr@savepreloctag{\glscurrententrylabel}{\@glsxtr@thisloctag}}% } \newcommand*{\@glsxtrpostloctag}{} \newcommand*{\@glsxtr@savepreloctag}[2]{} \protected@write\@auxout{}{% \string\providecommand\string\@glsxtr@savepreloctag[2]{}} \newcommand*{\@glsxtr@doloctag}{} \renewcommand*{\KV@printgloss@nonumberlist}[1]{% \XKV@plfalse \XKV@sttrue \XKV@checkchoice[\XKV@resa]{#1}{true,false}% {% \csname glsnonumberlist\XKV@resa\endcsname \ifglsnonumberlist \def\glossaryentrynumbers##1{\gls@save@numberlist{##1}}% \else \def\glossaryentrynumbers##1{% \@glsxtrpreloctag \GlsXtrFormatLocationList{##1}% \@glsxtrpostloctag \gls@save@numberlist{##1}}% \fi }% } \renewcommand*{\glsentryfmt}{% \ifglshasshort{\glslabel}{\glssetabbrvfmt{\glscategory{\glslabel}}}{}% \glsifregular{\glslabel}% {\glsxtrregularfont{\glsgenentryfmt}}% {% \ifglshasshort{\glslabel}% {\glsxtrabbreviationfont{\glsxtrgenabbrvfmt}}% {\glsxtrregularfont{\glsgenentryfmt}}% }% } \newcommand*{\glsxtrregularfont}[1]{#1} \newcommand*{\glsxtrabbreviationfont}[1]{#1} \renewcommand{\@gls@field@link}[4][]{% \@glsxtr@record{#2}{#3}{glslink}% \glsdoifexists{#3}% {% \let\glsxtrorg@ifKV@glslink@hyper\ifKV@glslink@hyper \@gls@save@glslocal \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glscustomtext{#4}% \@glsxtr@field@linkdefs #1% \@gls@link[#2]{#3}{#4}% \let\ifKV@glslink@hyper\glsxtrorg@ifKV@glslink@hyper \@gls@restore@glslocal }% \glspostlinkhook } \let\@glsxtr@org@gls@\@gls@ \def\@gls@#1#2{% \@glsxtr@record{#1}{#2}{glslink}% \@glsxtr@org@gls@{#1}{#2}% }% \let\@glsxtr@org@glspl@\@glspl@ \def\@glspl@#1#2{% \@glsxtr@record{#1}{#2}{glslink}% \@glsxtr@org@glspl@{#1}{#2}% }% \let\@glsxtr@org@Gls@\@Gls@ \def\@Gls@#1#2{% \@glsxtr@record{#1}{#2}{glslink}% \@glsxtr@org@Gls@{#1}{#2}% }% \let\@glsxtr@org@Glspl@\@Glspl@ \def\@Glspl@#1#2{% \@glsxtr@record{#1}{#2}{glslink}% \@glsxtr@org@Glspl@{#1}{#2}% }% \let\@glsxtr@org@GLS@\@GLS@ \def\@GLS@#1#2{% \@glsxtr@record{#1}{#2}{glslink}% \@glsxtr@org@GLS@{#1}{#2}% }% \let\@glsxtr@org@GLSpl@\@GLSpl@ \def\@GLSpl@#1#2{% \@glsxtr@record{#1}{#2}{glslink}% \@glsxtr@org@GLSpl@{#1}{#2}% }% \renewcommand*{\@glsdisp}[3][]{% \@glsxtr@record{#1}{#2}{glslink}% \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 } \renewcommand*{\@gls@@link}[3][]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexistsordo{#2}% {% \let\do@gls@link@checkfirsthyper\relax \def\glscustomtext{#3}% \@glsxtr@field@linkdefs \@gls@link[#1]{#2}{#3}% }% {% \glstextformat{#3}% }% \glspostlinkhook } \newcommand*{\glsxtrinitwrgloss}{% \glsifattribute{\glslabel}{wrgloss}{after}% {% \glsxtrinitwrglossbeforefalse }% {% \glsxtrinitwrglossbeforetrue }% } \newif\ifglsxtrinitwrglossbefore \glsxtrinitwrglossbeforetrue \define@choicekey{glslink}{wrgloss}% [\@glsxtr@wrglossval\@glsxtr@wrglossnr]% {before,after}% {% \ifcase\@glsxtr@wrglossnr\relax \glsxtrinitwrglossbeforetrue \or \glsxtrinitwrglossbeforefalse \fi } \define@key{glslink}{thevalue}{\def\@glsxtr@thevalue{#1}} \define@key{glslink}{theHvalue}{\def\@glsxtr@theHvalue{#1}} \define@boolkey{glslink}[glsxtr@]{hyperoutside}[true]{} \glsxtr@hyperoutsidetrue \define@key{glslink}{textformat}{% \ifcsdef{#1} {% \letcs{\@glsxtr@local@textformat}{#1}% }% {% \PackageError{glossaries-extra}{Unknown control sequence name `#1'}{}% }% } \define@key{glslink}{prefix}{\def\glolinkprefix{#1}} \newcommand*{\glsxtrinithyperoutside}{% \glsifattribute{\glslabel}{hyperoutside}{false}% {% \glsxtr@hyperoutsidefalse }% {% \glsxtr@hyperoutsidetrue }% } \newcommand*{\glsxtr@inc@linkcount}{} \newcommand*{\glslinkpresetkeys}{} \newrobustcmd*{\GlsXtrExpandedFmt}[2]{% \protected@edef\@glsxtr@tmp{#2}% \expandafter#1\expandafter{\@glsxtr@tmp}% } \newcommand*{\@glsxtr@use@equation@counter}{% \@glsxtr@ifnum@mmode{\def\@gls@counter{equation}}{}% } \newcommand*{\glsxtr@do@autoadd}[1]{} \newcommand*{\GlsXtrAutoAddOnFormat}[3][\glslabel]{% \renewcommand*{\glsxtr@do@autoadd}[1]{% \begingroup \protected@edef\@glsxtr@do@autoadd{% \noexpand\ifstrequal{##1}{glslink}% {% \noexpand\DTLifinlist{\@glsnumberformat}{#2}{\noexpand\glsadd[format={\@glsnumberformat},#3]{#1}}{}% }% {}% }% \@glsxtr@do@autoadd \endgroup }% } \providecommand*{\glslinkwrcontent}[1]{{#1}} \def\@gls@link[#1]#2#3{% \leavevmode \protected@edef\glslabel{\glsdetoklabel{#2}}% \def\@gls@link@opts{#1}% \let\@gls@link@label\glslabel \let\@glsnumberformat\@glsxtr@defaultnumberformat \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 \let\@glsxtr@org@glolinkprefix\glolinkprefix \let\@glsxtr@local@textformat\relax \def\@glsxtr@thevalue{}% \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% \glsxtrinitwrgloss \glsxtrinithyperoutside \@gls@setdefault@glslink@opts \glsxtr@inc@linkcount \if@glsxtr@equations \@glsxtr@use@equation@counter \fi \do@glsdisablehyperinlist \do@gls@link@checkfirsthyper \glslinkpresetkeys \setkeys{glslink}{#1}% \glsxtr@do@autoadd{glslink}% \glslinkpostsetkeys \ifdefempty{\@glsxtr@thevalue}% {% \@gls@saveentrycounter }% {% \let\theglsentrycounter\@glsxtr@thevalue \def\theHglsentrycounter{\@glsxtr@theHvalue}% }% \@gls@setsort{\glslabel}% \ifx\@glsxtr@local@textformat\relax \glshasattribute{\glslabel}{textformat}% {% \protected@edef\@glsxtr@attrval{\glsgetattribute{\glslabel}{textformat}}% \ifcsdef{\@glsxtr@attrval}% {% \letcs{\@glsxtr@textformat}{\@glsxtr@attrval}% }% {% \GlossariesExtraWarning{Unknown control sequence name `\@glsxtr@attrval' supplied in textformat attribute for entry `\glslabel'. Reverting to default \string\glstextformat}% \let\@glsxtr@textformat\glstextformat }% }% {% \let\@glsxtr@textformat\glstextformat }% \else \let\@glsxtr@textformat\@glsxtr@local@textformat \fi \glslinkwrcontent {% \ifglsxtrinitwrglossbefore \@do@wrglossary{#2}% \fi \ifKV@glslink@hyper \ifglsxtr@hyperoutside \@glslink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}% \else \@glsxtr@textformat{\@glslink{\glolinkprefix\glslabel}{#3}}% \fi \else \ifglsxtr@hyperoutside \glsdonohyperlink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}% \else \@glsxtr@textformat{\glsdonohyperlink{\glolinkprefix\glslabel}{#3}}% \fi \fi \ifglsxtrinitwrglossbefore \else \@do@wrglossary{#2}% \fi }% \let\glolinkprefix\@glsxtr@org@glolinkprefix \let\ifKV@glslink@hyper\org@ifKV@glslink@hyper \@gls@restore@glslocal } \define@key{glossadd}{thevalue}{\def\@glsxtr@thevalue{#1}} \define@key{glossadd}{theHvalue}{\def\@glsxtr@theHvalue{#1}} \newcommand*{\glsaddpresetkeys}{} \newcommand*{\glsaddpostsetkeys}{} \renewrobustcmd*{\glsadd}[2][]{% \glsxtrifinmark {}% {% \@gls@adjustmode \begingroup \@glsxtr@record{#1}{#2}{glossadd}% \glsdoifexists{#2}% {% \let\@glsnumberformat\@glsxtr@defaultnumberformat \protected@edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}% \def\@glsxtr@thevalue{}% \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% \glsaddpresetkeys \setkeys{glossadd}{#1}% \glsaddpostsetkeys \ifdefempty{\@glsxtr@thevalue}% {% \@gls@saveentrycounter }% {% \let\theglsentrycounter\@glsxtr@thevalue \def\theHglsentrycounter{\@glsxtr@theHvalue}% }% \@gls@setsort{#2}% \KV@glslink@noindexfalse \@@do@wrglossary{#2}% }% \endgroup }% } \newrobustcmd{\glsaddeach}[2][]{% \@for\@gls@thislabel:=#2\do{\glsadd[#1]{\@gls@thislabel}}% } \newcommand*{\@glsxtr@field@linkdefs}{% \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty } \newcommand*{\glsxtrassignfieldfont}[1]{% \ifglsentryexists{#1}% {% \ifglshasshort{#1}% {% \glssetabbrvfmt{\glscategory{#1}}% \glsifregular{#1}% {\let\@gls@field@font\glsxtrregularfont}% {\let\@gls@field@font\@firstofone}% }% {% \glsifnotregular{#1}% {\let\@gls@field@font\@firstofone}% {\let\@gls@field@font\glsxtrregularfont}% }% }% {% \let\@gls@field@font\@gobble }% } \def\@glstext@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesstext{#2}#3}}% } \def\@GLStext@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link[\let\glscapscase\@thirdofthree]{#1}{#2}% {\@gls@field@font{\GLSaccesstext{#2}\mfirstucMakeUppercase{#3}}}% } \def\@Glstext@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link[\let\glscapscase\@secondofthree]{#1}{#2}% {\@gls@field@font{\Glsaccesstext{#2}#3}}% } \newcommand*{\glsxtrchecknohyperfirst}[1]{% \glsifattribute{#1}{nohyperfirst}{true}{\KV@glslink@hyperfalse}{}% } \def\@glsfirst@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glsxtrifwasfirstuse\@firstoftwo \glsxtrchecknohyperfirst{#2}% ]{#1}{#2}% {\@gls@field@font{\glsaccessfirst{#2}#3}}% } \def\@Glsfirst@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glsxtrifwasfirstuse\@firstoftwo \let\glscapscase\@secondofthree \glsxtrchecknohyperfirst{#2}% ]% {#1}{#2}{\@gls@field@font{\Glsaccessfirst{#2}#3}}% } \def\@GLSfirst@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glsxtrifwasfirstuse\@firstoftwo \let\glscapscase\@thirdofthree \glsxtrchecknohyperfirst{#2}% ]% {#1}{#2}{\@gls@field@font{\GLSaccessfirst{#2}\mfirstucMakeUppercase{#3}}}% } \def\@glsplural@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link[\let\glsifplural\@firstoftwo]{#1}{#2}% {\@gls@field@font{\glsaccessplural{#2}#3}}% } \def\@Glsplural@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree ]% {#1}{#2}{\@gls@field@font{\Glsaccessplural{#2}#3}}% } \def\@GLSplural@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree ]% {#1}{#2}{\@gls@field@font{\GLSaccessplural{#2}\mfirstucMakeUppercase{#3}}}% } \def\@glsfirstplural@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glsxtrifwasfirstuse\@firstoftwo \let\glsifplural\@firstoftwo \glsxtrchecknohyperfirst{#2}% ]% {#1}{#2}{\@gls@field@font{\glsaccessfirstplural{#2}#3}}% } \def\@Glsfirstplural@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glsxtrifwasfirstuse\@firstoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree \glsxtrchecknohyperfirst{#2}% ]% {#1}{#2}{\@gls@field@font{\Glsaccessfirstplural{#2}#3}}% } \def\@GLSfirstplural@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glsxtrifwasfirstuse\@firstoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree \glsxtrchecknohyperfirst{#2}% ]% {#1}{#2}% {\@gls@field@font{\GLSaccessfirstplural{#2}\mfirstucMakeUppercase{#3}}}% } \def\@glsname@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessname{#2}#3}}% } \def\@Glsname@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo]{#1}{#2}% {\@gls@field@font{\Glsaccessname{#2}#3}}% } \def\@GLSname@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link[\let\glscapscase\@thirdoftwo]% {#1}{#2}% {\@gls@field@font{\GLSaccessname{#2}\mfirstucMakeUppercase{#3}}}% } \def\@glsdesc@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessdesc{#2}#3}}% } \def\@Glsdesc@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo]{#1}{#2}% {\@gls@field@font{\Glsaccessdesc{#2}#3}}% } \def\@GLSdesc@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link[\let\glscapscase\@thirdoftwo]% {#1}{#2}{\@gls@field@font{\GLSaccessdesc{#2}\mfirstucMakeUppercase{#3}}}% } \def\@glsdescplural@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo \let\glsifplural\@firstoftwo ]{#1}{#2}{\@gls@field@font{\glsaccessdescplural{#2}#3}}% } \def\@Glsdescplural@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo \let\glsifplural\@firstoftwo ]{#1}{#2}{\@gls@field@font{\Glsaccessdescplural{#2}#3}}% } \def\@GLSdesc@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@thirdoftwo \let\glsifplural\@firstoftwo ]% {#1}{#2}% {\@gls@field@font{\GLSaccessdescplural{#2}\mfirstucMakeUppercase{#3}}}% } \def\@glssymbol@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesssymbol{#2}#3}}% } \def\@Glssymbol@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo]% {#1}{#2}{\@gls@field@font{\Glsaccesssymbol{#2}#3}}% } \def\@GLSsymbol@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link[\let\glscapscase\@thirdoftwo]% {#1}{#2}{\@gls@field@font{\GLSaccesssymbol{#2}\mfirstucMakeUppercase{#3}}}% } \def\@glssymbolplural@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo \let\glsifplural\@firstoftwo ]{#1}{#2}{\@gls@field@font{\glsaccesssymbolplural{#2}#3}}% } \def\@Glssymbolplural@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo \let\glsifplural\@firstoftwo ]{#1}{#2}{\@gls@field@font{\Glsaccesssymbolplural{#2}#3}}% } \def\@GLSsymbol@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@thirdoftwo \let\glsifplural\@firstoftwo ]% {#1}{#2}% {\@gls@field@font{\GLSaccesssymbolplural{#2}\mfirstucMakeUppercase{#3}}}% } \def\@Glsuseri@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo]{#1}{#2}% {\@gls@field@font{\Glsentryuseri{#2}#3}}% } \def\@GLSuseri@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link[\let\glscapscase\@thirdoftwo]% {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseri{#2}#3}}}% } \def\@Glsuserii@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo]% {#1}{#2}{\@gls@field@font{\Glsentryuserii{#2}#3}}% } \def\@GLSuserii@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link[\let\glscapscase\@thirdoftwo]% {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserii{#2}#3}}}% } \def\@Glsuseriii@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo]% {#1}{#2}{\@gls@field@font{\Glsentryuseriii{#2}#3}}% } \def\@GLSuseriii@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link[\let\glscapscase\@thirdoftwo]% {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriii{#2}#3}}}% } \def\@Glsuseriv@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo]% {#1}{#2}{\@gls@field@font{\Glsentryuseriv{#2}#3}}% } \def\@GLSuseriv@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link[\let\glscapscase\@thirdoftwo]% {#1}{#2}% {\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriv{#2}#3}}}% } \def\@Glsuserv@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo]% {#1}{#2}{\@gls@field@font{\Glsentryuserv{#2}#3}}% } \def\@GLSuserv@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link[\let\glscapscase\@thirdoftwo]% {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserv{#2}#3}}}% } \def\@Glsuservi@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link [\let\glscapscase\@secondoftwo]% {#1}{#2}{\@gls@field@font{\Glsentryuservi{#2}#3}}% } \def\@GLSuservi@#1#2[#3]{% \glsxtrassignfieldfont{#2}% \@gls@field@link[\let\glscapscase\@thirdoftwo]% {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuservi{#2}#3}}}% } \newcommand*{\@@glsxtr@base@acrcmd@warn}[2]{% \GlossariesExtraWarning{Base acronym command \string#1\space should not be used with new abbreviation definitions. Use \string#2\space instead}% } \let\@glsxtr@base@acrcmd\@@glsxtr@base@acrcmd@warn \def\@acrshort#1#2[#3]{% \@glsxtr@base@acrcmd\acrshort\glsxtrshort \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{% \acronymfont{\glsaccessshort{#2}}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \def\@Acrshort#1#2[#3]{% \@glsxtr@base@acrcmd\Acrshort\Glsxtrshort \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{% \acronymfont{\Glsaccessshort{#2}}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \def\@ACRshort#1#2[#3]{% \@glsxtr@base@acrcmd\ACRshort\GLSxtrshort \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \mfirstucMakeUppercase{\acronymfont{\glsaccessshort{#2}}#3}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \def\@acrshortpl#1#2[#3]{% \@glsxtr@base@acrcmd\acrshortpl\glsxtrshortpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{% \acronymfont{\glsaccessshortpl{#2}}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \def\@Acrshortpl#1#2[#3]{% \@glsxtr@base@acrcmd\Acrshortpl\Glsxtrshortpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{% \acronymfont{\Glsaccessshortpl{#2}}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \def\@ACRshortpl#1#2[#3]{% \@glsxtr@base@acrcmd\ACRshortpl\GLSxtrshortpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \mfirstucMakeUppercase{\acronymfont{\glsaccessshortpl{#2}}#3}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \def\@acrlong#1#2[#3]{% \@glsxtr@base@acrcmd\acrlong\glsxtrlong \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{% \acronymfont{\glsaccesslong{#2}}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \def\@Acrlong#1#2[#3]{% \@glsxtr@base@acrcmd\Acrlong\Glsxtrlong \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{% \acronymfont{\Glsaccesslong{#2}}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \def\@ACRlong#1#2[#3]{% \@glsxtr@base@acrcmd\ACRlong\GLSxtrlong \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \mfirstucMakeUppercase{\acronymfont{\glsaccesslong{#2}}#3}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \def\@acrlongpl#1#2[#3]{% \@glsxtr@base@acrcmd\acrlongpl\glsxtrlongpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{% \acronymfont{\glsaccesslongpl{#2}}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \def\@Acrlongpl#1#2[#3]{% \@glsxtr@base@acrcmd\Acrlongpl\Glsxtrlongpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{% \acronymfont{\Glsaccesslongpl{#2}}#3% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \def\@ACRlongpl#1#2[#3]{% \@glsxtr@base@acrcmd\ACRlongpl\GLSxtrlongpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \mfirstucMakeUppercase{\acronymfont{\glsaccesslongpl{#2}}#3}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \def\@acrfull#1#2[#3]{% \@glsxtr@base@acrcmd\acrfull\glsxtrfull \acrfullfmt{#1}{#2}{#3}% } \def\@Acrfull#1#2[#3]{% \@glsxtr@base@acrcmd\Acrfull\Glsxtrfull \Acrfullfmt{#1}{#2}{#3}% } \def\@ACRfull#1#2[#3]{% \@glsxtr@base@acrcmd\ACRfull\GLSxtrfull \ACRfullfmt{#1}{#2}{#3}% } \def\@acrfullpl#1#2[#3]{% \@glsxtr@base@acrcmd\acrfullpl\glsxtrfullpl \acrfullplfmt{#1}{#2}{#3}% } \def\@Acrfullpl#1#2[#3]{% \@glsxtr@base@acrcmd\Acrfullpl\Glsxtrfullpl \Acrfullplfmt{#1}{#2}{#3}% } \def\@ACRfullpl#1#2[#3]{% \@glsxtr@base@acrcmd\ACRfullpl\GLSxtrfullpl \ACRfullplfmt{#1}{#2}{#3}% } \renewcommand*{\@glsaddkey}[7]{% \key@ifundefined{glossentry}{#1}% {% \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}% \appto\@gls@keymap{,{#1}{#1}}% \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}% \appto\@newglossaryentryposthook{% \letcs{\@glo@tmp}{@glo@#1}% \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}% }% \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}% \newcommand*{#4}[1]{\@Gls@entry@field{##1}{#1}}% \ifcsdef{@gls@user@#1@}% {% \PackageError{glossaries}% {Can't define `\string#5' as helper command `\expandafter\string\csname @gls@user@#1@\endcsname' already exists}% {}% }% {% \expandafter\newcommand\expandafter*\expandafter {\csname @gls@user@#1\endcsname}[2][]{% \new@ifnextchar[% {\csuse{@gls@user@#1@}{##1}{##2}}% {\csuse{@gls@user@#1@}{##1}{##2}[]}}% \csdef{@gls@user@#1@}##1##2[##3]{% \@gls@field@link{##1}{##2}{#3{##2}##3}% }% \newrobustcmd*{#5}{% \expandafter\@gls@hyp@opt\csname @gls@user@#1\endcsname}% }% \ifcsdef{@Gls@user@#1@}% {% \PackageError{glossaries}% {Can't define `\string#6' as helper command `\expandafter\string\csname @Gls@user@#1@\endcsname' already exists}% {}% }% {% \expandafter\newcommand\expandafter*\expandafter {\csname @Gls@user@#1\endcsname}[2][]{% \new@ifnextchar[% {\csuse{@Gls@user@#1@}{##1}{##2}}% {\csuse{@Gls@user@#1@}{##1}{##2}[]}}% \csdef{@Gls@user@#1@}##1##2[##3]{% \@gls@field@link[\let\glscapscase\@secondofthree]% {##1}{##2}{#4{##2}##3}% }% \newrobustcmd*{#6}{% \expandafter\@gls@hyp@opt\csname @Gls@user@#1\endcsname}% }% \ifcsdef{@GLS@user@#1@}% {% \PackageError{glossaries}% {Can't define `\string#7' as helper command `\expandafter\string\csname @GLS@user@#1@\endcsname' already exists}% {}% }% {% \expandafter\newcommand\expandafter*\expandafter {\csname @GLS@user@#1\endcsname}[2][]{% \new@ifnextchar[% {\csuse{@GLS@user@#1@}{##1}{##2}}% {\csuse{@GLS@user@#1@}{##1}{##2}[]}}% \csdef{@GLS@user@#1@}##1##2[##3]{% \@gls@field@link[\let\glscapscase\@thirdofthree]% {##1}{##2}{\mfirstucMakeUppercase{#3{##2}##3}}% }% \newrobustcmd*{#7}{% \expandafter\@gls@hyp@opt\csname @GLS@user@#1\endcsname}% }% }% {% \PackageError{glossaries-extra}{Key `#1' already exists}{}% }% } \providecommand*{\@gls@link@nocheckfirsthyper}{} \let\@glsxtr@org@checkfirsthyper\@gls@link@checkfirsthyper \renewcommand*{\@gls@link@checkfirsthyper}{% \ifglsused{\glslabel}% {\let\glsxtrifwasfirstuse\@secondoftwo} {\let\glsxtrifwasfirstuse\@firstoftwo}% \protected@edef\glscategorylabel{\glscategory{\glslabel}}% \ifglsused{\glslabel}% {% \glsifcategoryattribute{\glscategorylabel}{nohypernext}{true}% {\KV@glslink@hyperfalse}{}% }% {% \glsifcategoryattribute{\glscategorylabel}{nohyperfirst}{true}% {\KV@glslink@hyperfalse}{}% }% \glslinkcheckfirsthyperhook } \ifdef\do@glsdisablehyperinlist {% \let\@glsxtr@do@glsdisablehyperinlist\do@glsdisablehyperinlist \renewcommand*{\do@glsdisablehyperinlist}{% \@glsxtr@do@glsdisablehyperinlist \glsifattribute{\glslabel}{nohyper}{true}{\KV@glslink@hyperfalse}{}% } } {} \define@boolkey{glslink}{noindex}[true]{} \KV@glslink@noindexfalse \providecommand*{\@gls@save@glslocal}{% \let\if@org@KV@glslink@local\ifKV@glslink@local } \providecommand*{\@gls@restore@glslocal}{% \ifKV@glslink@local \let\@gls@do@glsunset\glslocalunset \else \let\@gls@do@glsunset\glsunset \fi } \providecommand*{\@gls@do@glsunset}[1]{\glsunset{#1}} \ifdef\@gls@setdefault@glslink@opts { \renewcommand*{\@gls@setdefault@glslink@opts}{% \KV@glslink@noindexfalse \@glsxtrsetaliasnoindex } } { \newcommand*{\@gls@setdefault@glslink@opts}{% \KV@glslink@noindexfalse \@glsxtrsetaliasnoindex } \preto\do@glsdisablehyperinlist{\@gls@setdefault@glslink@opts} } \providecommand*{\glsxtrsetaliasnoindex}{% \KV@glslink@noindextrue } \newcommand*{\@glsxtrsetaliasnoindex}{% \ifcsvoid{glo@\glsdetoklabel{\glslabel}@alias}% {}% {% \let\glsxtrindexaliased\@glsxtrindexaliased \glsxtrsetaliasnoindex \let\glsxtrindexaliased\@no@glsxtrindexaliased }% } \newcommand{\@glsxtrindexaliased}{% \ifKV@glslink@noindex \else \begingroup \let\@glsnumberformat\@glsxtr@defaultnumberformat \protected@edef\@gls@counter{\csname glo@\glsdetoklabel{\glslabel}@counter\endcsname}% \glsxtr@saveentrycounter \@@do@wrglossary{\glsxtralias{\glslabel}}% \endgroup \fi } \newcommand{\@no@glsxtrindexaliased}{% \PackageError{glossaries-extra}{\string\glsxtrindexaliased\space not permitted outside definition of \string\glsxtrsetaliasnoindex}% {}% } \let\glsxtrindexaliased\@no@glsxtrindexaliased \newcommand*{\GlsXtrSetDefaultGlsOpts}[1]{% \renewcommand*{\@gls@setdefault@glslink@opts}{% \setkeys{glslink}{#1}% \@glsxtrsetaliasnoindex }% } \newcommand*{\glsxtrifindexing}[2]{% \ifKV@glslink@noindex #2\else #1\fi } \renewcommand*{\glswriteentry}[2]{% \glsxtrifindexing {% \ifglsindexonlyfirst \GlsXtrIfUnusedOrUndefined{#1} {#2}% {\glsxtrdoautoindexname{#1}{dualindex}}% \else \glsifattribute{#1}{indexonlyfirst}{true}% {% \GlsXtrIfUnusedOrUndefined{#1}% {#2}% {\glsxtrdoautoindexname{#1}{dualindex}}% }% {#2}% \fi }% {}% } \appto\@@do@@wrglossary{\@glsxtr@do@@wrindex \glsxtrdowrglossaryhook{\@gls@label}% } \appto\gls@noidxglossary{\@glsxtr@do@@wrindex \glsxtrdowrglossaryhook{\@gls@label}% } \newcommand*{\@glsxtr@do@@wrindex}{% \glsxtrdoautoindexname{\@gls@label}{dualindex}% } \newcommand*{\glsxtrdowrglossaryhook}[1]{} \newcommand*{\@gls@alt@hyp@opt}[1]{% \let\glslinkvar\@firstofthree \let\@gls@hyp@opt@cs#1\relax \@ifstar{\s@gls@hyp@opt}% {\@ifnextchar+% {\@firstoftwo{\p@gls@hyp@opt}}% {% \expandafter\@ifnextchar\@gls@alt@hyp@opt@char {\@firstoftwo{\@alt@gls@hyp@opt}}% {#1}% }% }% } \newcommand*{\@alt@gls@hyp@opt}[1][]{% \let\glslinkvar\@firstofthree \expandafter\@gls@hyp@opt@cs\expandafter[\@gls@alt@hyp@opt@keys,#1]} \newcommand*{\@gls@alt@hyp@opt@char}{} \newcommand*{\@gls@alt@hyp@opt@keys}{} \newcommand*{\GlsXtrSetAltModifier}[2]{% \let\@gls@hyp@opt\@gls@alt@hyp@opt \ifstrequal{#1}{+}% {\PackageError{glossaries-extra}% {Can't use '#1' as modifier (it's already in use)}{}}% {% \ifstrequal{#1}{*}% {\PackageError{glossaries-extra}% {Can't use '#1' as modifier (it's already in use)}{}}% {}% }% \def\@gls@alt@hyp@opt@char{#1}% \def\@gls@alt@hyp@opt@keys{#2}% \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off {}% {% \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@altmodifier}[1]{}}% \protected@write\@auxout{}{\string\@glsxtr@altmodifier{#1}}% }% } \let\glsxtr@org@dohyperlink\glsdohyperlink \ifdef\glsnavhyperlink { \renewcommand*{\glsnavhyperlink}[3][\@glo@type]{% \protected@edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}% {% \let\glsxtrdohyperlink\glsxtr@org@dohyperlink \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}% }% }% } {} \ifdef\@@gls@navhypertarget {} {% \renewcommand*{\glsnavhypertarget}{\protect\@@gls@navhypertarget} \newcommand*{\@@gls@navhypertarget}[3][\@glo@type]{% \@glsnavhypertarget{#1}{#2}{#3}% } }% \ifdef\@glsnavhypertarget {% \renewcommand*{\@glsnavhypertarget}[3]{% \protected@write\@auxout{}{\string\@gls@hypergroup{#1}{#2}}% \@glsxtr@do@org@target{\glsnavhyperlinkname{#1}{#2}}{#3}% \ifcsdef{@gls@hypergrouplist@#1}% {% \letcs\@gls@list{@gls@hypergrouplist@#1}% \protected@edef\@gls@thishypernavlabel{#2}% \expandafter\DTLifinlist\expandafter{\@gls@thishypernavlabel}\@gls@list{}% {% \GlossariesWarningNoLine{Navigation panel for glossary type `#1'^^Jmissing group `#2'}% \gdef\gls@hypergrouprerun{% \GlossariesWarningNoLine{Navigation panel has changed. Rerun LaTeX}}% }% }% {% \GlossariesWarningNoLine{Navigation panel for glossary type `#1'^^Jmissing group `#2'}% \gdef\gls@hypergrouprerun{% \GlossariesWarningNoLine{Navigation panel has changed. Rerun LaTeX}}% }% }% } {} \newcommand*{\glsxtrdohyperlink}[2]{% \glshasattribute{\glslabel}{targeturl}% {% \glshasattribute{\glslabel}{targetname}% {% \glshasattribute{\glslabel}{targetcategory}% {% \hyperref{\glsgetattribute{\glslabel}{targeturl}}% {\glsgetattribute{\glslabel}{targetcategory}}% {\glsgetattribute{\glslabel}{targetname}}% {{\glsxtrprotectlinks#2}}% }% {% \hyperref{\glsgetattribute{\glslabel}{targeturl}}% {}% {\glsgetattribute{\glslabel}{targetname}}% {{\glsxtrprotectlinks#2}}% }% }% {% \href{\glsgetattribute{\glslabel}{targeturl}}% {{\glsxtrprotectlinks#2}}% }% }% {% \glsfieldfetch{\glslabel}{alias}{\gloaliaslabel}% \ifdefvoid\gloaliaslabel {% \glsxtrhyperlink{#1}{{\glsxtrprotectlinks#2}}% }% {% \glsxtrifmulti\gloaliaslabel {% \letcs\gloaliaslabel{@gls@combined@\gloaliaslabel @main}% }% {}% \glsxtrhyperlink {\glolinkprefix\glsdetoklabel{\gloaliaslabel}}% {{\glsxtrprotectlinks#2}}% }% }% } \newcommand{\glsxtrhyperlink}[2]{% \glsdoshowtarget{#1}{\hyperlink{#1}{#2}}% }% \renewrobustcmd*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{% \glsdoifexists{#2}% {% \def\@glo@label{#2}% {\protected@edef\glslabel{#2}% \@glslink{\glolinkprefix\glslabel}{#1}}% }% } \renewcommand{\glsdisablehyper}{% \KV@glslink@hyperfalse \def\@glslink{\glsdonohyperlink}% \let\@glstarget\@secondoftwo } \renewcommand{\glsenablehyper}{% \KV@glslink@hypertrue \def\@glslink{\glsxtrdohyperlink}% \def\@glstarget{\glsdohypertarget}% } \def\glsdonohyperlink#1#2{{\glsxtrprotectlinks #2}} \ifcsundef{hyperlink}% {% \def\@glslink{\glsdonohyperlink} }% {% \def\@glslink{\glsxtrdohyperlink} } \newcommand*{\glsxtrprotectlinks}{% \KV@glslink@hyperfalse \KV@glslink@noindextrue \let\@gls@\@glsxtr@p@text@ \let\@Gls@\@Glsxtr@p@text@ \let\@GLS@\@GLSxtr@p@text@ \let\@glspl@\@glsxtr@p@plural@ \let\@Glspl@\@Glsxtr@p@plural@ \let\@GLSpl@\@GLSxtr@p@plural@ \let\@glsxtrshort\@glsxtr@p@short@ \let\@Glsxtrshort\@Glsxtr@p@short@ \let\@GLSxtrshort\@GLSxtr@p@short@ \let\@glsxtrlong\@glsxtr@p@long@ \let\@Glsxtrlong\@Glsxtr@p@long@ \let\@GLSxtrlong\@GLSxtr@p@long@ \let\@glsxtrshortpl\@glsxtr@p@shortpl@ \let\@Glsxtrshortpl\@Glsxtr@p@shortpl@ \let\@GLSxtrshortpl\@GLSxtr@p@shortpl@ \let\@glsxtrlongpl\@glsxtr@p@longpl@ \let\@Glsxtrlongpl\@Glsxtr@p@longpl@ \let\@GLSxtrlongpl\@GLSxtr@p@longpl@ \let\@acrshort\@glsxtr@p@acrshort@ \let\@Acrshort\@Glsxtr@p@acrshort@ \let\@ACRshort\@GLSxtr@p@acrshort@ \let\@acrshortpl\@glsxtr@p@acrshortpl@ \let\@Acrshortpl\@Glsxtr@p@acrshortpl@ \let\@ACRshortpl\@GLSxtr@p@acrshortpl@ \let\@acrlong\@glsxtr@p@acrlong@ \let\@Acrlong\@Glsxtr@p@acrlong@ \let\@ACRlong\@GLSxtr@p@acrlong@ \let\@acrlongpl\@glsxtr@p@acrlongpl@ \let\@Acrlongpl\@Glsxtr@p@acrlongpl@ \let\@ACRlongpl\@GLSxtr@p@acrlongpl@ } \def\@glsxtr@p@text@#1#2[#3]{{\@glstext@{#1}{#2}[#3]}} \def\@Glsxtr@p@text@#1#2[#3]{{\@Glstext@{#1}{#2}[#3]}} \def\@GLSxtr@p@text@#1#2[#3]{{\@GLStext@{#1}{#2}[#3]}} \def\@glsxtr@p@plural@#1#2[#3]{{\@glsplural@{#1}{#2}[#3]}} \def\@Glsxtr@p@plural@#1#2[#3]{{\@Glsplural@{#1}{#2}[#3]}} \def\@GLSxtr@p@plural@#1#2[#3]{{\@GLSplural@{#1}{#2}[#3]}} \def\@glsxtr@p@short@#1#2[#3]{% {% \glssetabbrvfmt{\glscategory{#2}}% \glsabbrvfont{\glsentryshort{#2}}#3% }% } \def\@Glsxtr@p@short@#1#2[#3]{% {% \glssetabbrvfmt{\glscategory{#2}}% \glsabbrvfont{\Glsentryshort{#2}}#3% }% } \def\@GLSxtr@p@short@#1#2[#3]{% {% \glssetabbrvfmt{\glscategory{#2}}% \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshort{#2}}#3}% }% } \def\@glsxtr@p@shortpl@#1#2[#3]{% {% \glssetabbrvfmt{\glscategory{#2}}% \glsabbrvfont{\glsentryshortpl{#2}}#3% }% } \def\@Glsxtr@p@shortpl@#1#2[#3]{% {% \glssetabbrvfmt{\glscategory{#2}}% \glsabbrvfont{\Glsentryshortpl{#2}}#3% }% } \def\@GLSxtr@p@shortpl@#1#2[#3]{% {% \glssetabbrvfmt{\glscategory{#2}}% \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshortpl{#2}}#3}% }% } \def\@glsxtr@p@long@#1#2[#3]{{\glsentrylong{#2}#3}} \def\@Glsxtr@p@long@#1#2[#3]{{\Glsentrylong{#2}#3}} \def\@GLSxtr@p@long@#1#2[#3]{% {\mfirstucMakeUppercase{\glslongfont{\glsentrylong{#2}}#3}}} \def\@glsxtr@p@longpl@#1#2[#3]{{\glsentrylongpl{#2}#3}} \def\@Glsxtr@p@longpl@#1#2[#3]{{\glslongfont{\Glsentrylongpl{#2}}#3}} \def\@GLSxtr@p@longpl@#1#2[#3]{% {\mfirstucMakeUppercase{\glslongfont{\glsentrylongpl{#2}}#3}}} \def\@glsxtr@p@acrshort@#1#2[#3]{{\acronymfont{\glsentryshort{#2}}#3}} \def\@Glsxtr@p@acrshort@#1#2[#3]{{\acronymfont{\Glsentryshort{#2}}#3}} \def\@GLSxtr@p@acrshort@#1#2[#3]{% {\mfirstucMakeUppercase{\acronymfont{\glsentryshort{#2}}#3}}} \def\@glsxtr@p@acrshortpl@#1#2[#3]{{\acronymfont{\glsentryshortpl{#2}}#3}} \def\@Glsxtr@p@acrshortpl@#1#2[#3]{{\acronymfont{\Glsentryshortpl{#2}}#3}} \def\@GLSxtr@p@acrshortpl@#1#2[#3]{% {\mfirstucMakeUppercase{\acronymfont{\glsentryshortpl{#2}}#3}}} \def\@glsxtr@p@acrlong@#1#2[#3]{{\glsentrylong{#2}#3}} \def\@Glsxtr@p@acrlong@#1#2[#3]{{\Glsentrylong{#2}#3}} \def\@GLSxtr@p@acrlong@#1#2[#3]{% {\mfirstucMakeUppercase{\glsentrylong{#2}#3}}} \def\@glsxtr@p@acrlongpl@#1#2[#3]{{\glsentrylongpl{#2}#3}} \def\@Glsxtr@p@acrlongpl@#1#2[#3]{{\Glsentrylongpl{#2}#3}} \def\@GLSxtr@p@acrlongpl@#1#2[#3]{% {\mfirstucMakeUppercase{\glsentrylongpl{#2}#3}}} \newcommand*{\@glsxtrp@opt}{hyper=false,noindex} \newcommand*{\glsxtrsetpopts}[1]{% \renewcommand*{\@glsxtrp@opt}{#1}% } \newcommand*{\glossxtrsetpopts}{% \glsxtrsetpopts{noindex}% } \newrobustcmd*{\@@glsxtrp}[2]{% {% \let\glspostlinkhook\relax \csname#1\expandafter\endcsname\expandafter[\@glsxtrp@opt]{#2}[]% }% } \newrobustcmd*{\@glsxtrp}[2]{% \ifcsdef{gls#1}% {% \@@glsxtrp{gls#1}{#2}% }% {% \ifcsdef{glsxtr#1}% {% \@@glsxtrp{glsxtr#1}{#2}% }% {% \PackageError{glossaries-extra}{`#1' not recognised by \string\glsxtrp}{}% }% }% } \newrobustcmd*{\@Glsxtrp}[2]{% \ifcsdef{Gls#1}% {% \@@glsxtrp{Gls#1}{#2}% }% {% \ifcsdef{Glsxtr#1}% {% \@@glsxtrp{Glsxtr#1}{#2}% }% {% \PackageError{glossaries-extra}{`#1' not recognised by \string\Glsxtrp}{}% }% }% } \newrobustcmd*{\@GLSxtrp}[2]{% \ifcsdef{GLS#1}% {% \@@glsxtrp{GLS#1}{#2}% }% {% \ifcsdef{GLSxtr#1}% {% \@@glsxtrp{GLSxtr#1}{#2}% }% {% \PackageError{glossaries-extra}{`#1' not recognised by \string\GLSxtrp}{}% }% }% } \newrobustcmd*{\glsxtr@headentry@p}[2]{% \glsifattribute{#1}{headuc}{true}% {% \mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}% }% {% \@gls@entry@field{#1}{#2}% }% } \ifdef\texorpdfstring { \newcommand{\glsxtrp}[2]{% \protect\NoCaseChange {% \protect\texorpdfstring {% \protect\glsxtrifinmark {% \ifcsdef{glsxtrhead#1}% {% {\protect\csuse{glsxtrhead#1}{#2}}% }% {% \glsxtr@headentry@p{#2}{#1}% }% }% {% \@glsxtrp{#1}{#2}% }% }% {% \protect\@gls@entry@field{#2}{#1}% }% }% } } { \newcommand{\glsxtrp}[2]{% \protect\NoCaseChange {% \protect\glsxtrifinmark {% \ifcsdef{glsxtrhead#1}% {% {\protect\csuse{glsxtrhead#1}}% }% {% \glsxtr@headentry@p{#2}{#1}% }% }% {% \@glsxtrp{#1}{#2}% }% }% } } \newcommand*{\glsps}{\glsxtrp{short}} \newcommand*{\glspt}{\glsxtrp{text}} \ifdef\texorpdfstring { \newcommand{\Glsxtrp}[2]{% \protect\NoCaseChange {% \protect\texorpdfstring {% \protect\glsxtrifinmark {% \ifcsdef{Glsxtrhead#1}% {% {\protect\csuse{Glsxtrhead#1}{#2}}% }% {% \protect\@Gls@entry@field{#2}{#1}% }% }% {% \@Glsxtrp{#1}{#2}% }% }% {% \protect\@gls@entry@field{#2}{#1}% }% }% } } { \newcommand{\Glsxtrp}[2]{% \protect\NoCaseChange {% \protect\glsxtrifinmark {% \ifcsdef{Glsxtrhead#1}% {% {\protect\csuse{Glsxtrhead#1}}% }% {% \protect\@Gls@entry@field{#2}{#1}% }% }% {% \@Glsxtrp{#1}{#2}% }% }% } } \ifdef\texorpdfstring { \newcommand{\GLSxtrp}[2]{% \protect\NoCaseChange {% \protect\texorpdfstring {% \protect\glsxtrifinmark {% \ifcsdef{GLSxtr#1}% {% {\protect\GLSxtrshort[noindex,hyper=false]{#1}[]}% }% {% \protect\mfirstucMakeUppercase {% \protect\@gls@entry@field{#2}{#1}% }% }% }% {% \@GLSxtrp{#1}{#2}% }% }% {% \protect\@gls@entry@field{#2}{#1}% }% }% } } { \newcommand{\GLSxtrp}[2]{% \protect\NoCaseChange {% \protect\glsxtrifinmark {% \ifcsdef{GLSxtr#1}% {% {\protect\GLSxtrshort[noindex,hyper=false]{#1}[]}% }% {% \protect\mfirstucMakeUppercase {% \protect\@gls@entry@field{#2}{#1}% }% }% }% {% \@GLSxtrp{#1}{#2}% }% }% } } \newcommand*{\@glsxtr@unset}[1]{% \@@glsunset{#1}% \glsxtrpostunset{#1}% }% \let\@glsunset\@glsxtr@unset \newcommand*{\glsxtrpostunset}[1]{} \newcommand*{\GlsXtrStartUnsetBuffering}{% \@ifstar\s@GlsXtrStartUnsetBuffering\@GlsXtrStartUnsetBuffering } \newcommand*{\@GlsXtrStartUnsetBuffering}{% \let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer \def\@glsxtr@unset@buffer{}% \let\@glsunset\@glsxtrbuffer@unset } \newcommand*{\s@GlsXtrStartUnsetBuffering}{% \let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer \def\@glsxtr@unset@buffer{}% \let\@glsunset\@glsxtrbuffer@nodup@unset } \newcommand*{\@glsxtrbuffer@unset}[1]{% \listxadd\@glsxtr@unset@buffer{#1}% } \newcommand*{\@glsxtrbuffer@nodup@unset}[1]{% \expandafter\ifinlist\expandafter{#1}{\@glsxtr@unset@buffer}{}% {\listxadd\@glsxtr@unset@buffer{#1}}% } \newcommand*{\GlsXtrStopUnsetBuffering}{% \@ifstar\s@GlsXtrStopUnsetBuffering\@GlsXtrStopUnsetBuffering } \newcommand*{\@GlsXtrStopUnsetBuffering}{% \let\@glsunset\@glsxtr@unset \forlistloop\@glsunset\@glsxtr@unset@buffer \let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer } \newcommand*{\s@GlsXtrStopUnsetBuffering}{% \forlistloop\@glslocalunset\@glsxtr@unset@buffer \let\@glsunset\@glsxtr@unset } \newcommand*{\GlsXtrDiscardUnsetBuffering}{% \let\@glsunset\@glsxtr@unset \let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer } \newcommand*{\GlsXtrForUnsetBufferedList}[1]{% \forlistloop#1\@glsxtr@unset@buffer } \renewcommand*{\@glslocalunset}[1]{% \@@glslocalunset{#1}% \glsxtrpostlocalunset{#1}% }% \newcommand*{\glsxtrpostlocalunset}[1]{} \renewcommand*{\@glsreset}[1]{% \@@glsreset{#1}% \glsxtrpostreset{#1}% }% \newcommand*{\glsxtrpostreset}[1]{} \renewcommand*{\@glslocalreset}[1]{% \@@glslocalreset{#1}% \glsxtrpostlocalreset{#1}% }% \newcommand*{\glsxtrpostlocalreset}[1]{} \newcommand*{\glslocalreseteach}[1]{% \gls@ifnotmeasuring {% \@for\@gls@thislabel:=#1\do{% \glsdoifexists{\@gls@thislabel}% {% \@glslocalreset{\@gls@thislabel}% }% }% }% } \newcommand*{\glslocalunseteach}[1]{% \gls@ifnotmeasuring {% \@for\@gls@thislabel:=#1\do{% \glsdoifexists{\@gls@thislabel}% {% \@glslocalunset{\@gls@thislabel}% }% }% }% } \newcommand*{\GlsXtrEnableEntryCounting}[2]{% \glsenableentrycount \renewcommand*{\gls}{\cgls}% \renewcommand*{\Gls}{\cGls}% \renewcommand*{\glspl}{\cglspl}% \renewcommand*{\Glspl}{\cGlspl}% \renewcommand*{\GLS}{\cGLS}% \renewcommand*{\GLSpl}{\cGLSpl}% \@glsxtr@setentrycountunsetattr{#1}{#2}% \let\GlsXtrEnableEntryCounting\@glsxtr@setentrycountunsetattr \renewcommand*{\GlsXtrEnableEntryUnitCounting}[3]{% \PackageError{glossaries-extra}{\string\GlsXtrEnableEntryUnitCounting\space can't be used with \string\GlsXtrEnableEntryCounting}% {Use one or other but not both commands}}% } \newcommand*{\@glsxtr@setentrycountunsetattr}[2]{% \@for\@glsxtr@cat:=#1\do {% \ifdefempty{\@glsxtr@cat}{}% {% \glssetcategoryattribute{\@glsxtr@cat}{entrycount}{#2}% }% }% } \renewcommand*{\glsenableentrycount}{% \appto\@newglossaryentry@defcounters{\@@newglossaryentry@defcounters}% \renewcommand*{\gls@defdocnewglossaryentry}{% \renewcommand*\newglossaryentry[2]{% \PackageError{glossaries}{\string\newglossaryentry\space may only be used in the preamble when entry counting has been activated}{If you use \string\glsenableentrycount\space you must place all entry definitions in the preamble not in the document environment}% }% }% \newcommand*{\glsentrycurrcount}[1]{% \ifcsundef{glo@\glsdetoklabel{##1}@currcount}% {0}{\@gls@entry@field{##1}{currcount}}% }% \newcommand*{\glsentryprevcount}[1]{% \ifcsundef{glo@\glsdetoklabel{##1}@prevcount}% {0}{\@gls@entry@field{##1}{prevcount}}% }% \let\@glsxtr@entrycount@org@unset\glsxtrpostunset \renewcommand*{\glsxtrpostunset}[1]{% \@glsxtr@entrycount@org@unset{##1}% \@gls@increment@currcount{##1}% }% \let\@glsxtr@entrycount@org@localunset\glsxtrpostlocalunset \renewcommand*{\glsxtrpostlocalunset}[1]{% \@glsxtr@entrycount@org@localunset{##1}% \@gls@local@increment@currcount{##1}% }% \let\@glsxtr@entrycount@org@reset\glsxtrpostreset \renewcommand*{\glsxtrpostreset}[1]{% \@glsxtr@entrycount@org@reset{##1}% \csgdef{glo@\glsdetoklabel{##1}@currcount}{0}% }% \let\@glsxtr@entrycount@org@localreset\glsxtrpostlocalreset \renewcommand*{\glsxtrpostlocalreset}[1]{% \@glsxtr@entrycount@org@localreset{##1}% \csdef{glo@\glsdetoklabel{##1}@currcount}{0}% }% \let\@cgls@\@@cgls@ \let\@cglspl@\@@cglspl@ \let\@cGls@\@@cGls@ \let\@cGlspl@\@@cGlspl@ \let\@cGLS@\@@cGLS@ \let\@cGLSpl@\@@cGLSpl@ \AtEndDocument{\@gls@write@entrycounts}% \renewcommand*{\@gls@entry@count}[2]{% \csgdef{glo@\glsdetoklabel{##1}@prevcount}{##2}% }% \let\glsenableentrycount\relax \renewcommand*{\glsenableentryunitcount}{% \PackageError{glossaries-extra}{\string\glsenableentryunitcount\space can't be used with \string\glsenableentrycount}% {Use one or other but not both commands}% }% } \renewcommand*{\@gls@write@entrycounts}{% \immediate\write\@auxout {\string\providecommand*{\string\@gls@entry@count}[2]{}}% \count@=0\relax \forallglsentries{\@glsentry}{% \glshasattribute{\@glsentry}{entrycount}% {% \ifglsused{\@glsentry}% {% \immediate\write\@auxout {\string\@gls@entry@count{\@glsentry}{\glsentrycurrcount{\@glsentry}}}% }% {}% \advance\count@ by \@ne }% {}% }% \ifnum\count@=0 \GlossariesExtraWarningNoLine{Entry counting has been enabled \MessageBreak with \string\glsenableentrycount\space but the \MessageBreak attribute `entrycount' hasn't \MessageBreak been assigned to any of the defined \MessageBreak entries}% \fi } \newcommand*{\glsxtrifcounttrigger}[3]{% \glshasattribute{#1}{entrycount}% {% \ifnum\glsentryprevcount{#1}>\glsgetattribute{#1}{entrycount}\relax #3% \else #2% \fi }% {#3}% } \def\@@cgls@#1#2[#3]{% \glsxtrifcounttrigger{#2}% {% \cglsformat{#2}{#3}% \glsunset{#2}% }% {% \@gls@{#1}{#2}[#3]% }% }% \def\@@cglspl@#1#2[#3]{% \glsxtrifcounttrigger{#2}% {% \cglsplformat{#2}{#3}% \glsunset{#2}% }% {% \@glspl@{#1}{#2}[#3]% }% }% \def\@@cGls@#1#2[#3]{% \glsxtrifcounttrigger{#2}% {% \cGlsformat{#2}{#3}% \glsunset{#2}% }% {% \@Gls@{#1}{#2}[#3]% }% }% \def\@@cGlspl@#1#2[#3]{% \glsxtrifcounttrigger{#2}% {% \cGlsplformat{#2}{#3}% \glsunset{#2}% }% {% \@Glspl@{#1}{#2}[#3]% }% }% \def\@@cGLS@#1#2[#3]{% \glsxtrifcounttrigger{#2}% {% \cGLSformat{#2}{#3}% \glsunset{#2}% }% {% \@GLS@{#1}{#2}[#3]% }% }% \def\@@cGLSpl@#1#2[#3]{% \glsxtrifcounttrigger{#2}% {% \cGLSplformat{#2}{#3}% \glsunset{#2}% }% {% \@GLSpl@{#1}{#2}[#3]% }% }% \def\@cgls@#1#2[#3]{\@gls@{#1}{#2}[#3]} \def\@cGls@#1#2[#3]{\@Gls@{#1}{#2}[#3]} \def\@cglspl@#1#2[#3]{\@glspl@{#1}{#2}[#3]} \def\@cGlspl@#1#2[#3]{\@Glspl@{#1}{#2}[#3]} \newrobustcmd*{\cGLS}{\@gls@hyp@opt\@cGLS} \newcommand*{\@cGLS}[2][]{% \new@ifnextchar[{\@cGLS@{#1}{#2}}{\@cGLS@{#1}{#2}[]}% } \def\@cGLS@#1#2[#3]{\@GLS@{#1}{#2}[#3]} \newcommand*{\cGLSformat}[2]{% \expandafter\mfirstucMakeUppercase\expandafter{\cglsformat{#1}{#2}}% } \newrobustcmd*{\cGLSpl}{\@gls@hyp@opt\@cGLSpl} \newcommand*{\@cGLSpl}[2][]{% \new@ifnextchar[{\@cGLSpl@{#1}{#2}}{\@cGLSpl@{#1}{#2}[]}% } \def\@cGLSpl@#1#2[#3]{\@GLSpl@{#1}{#2}[#3]} \newcommand*{\cGLSplformat}[2]{% \expandafter\mfirstucMakeUppercase\expandafter{\cglsplformat{#1}{#2}}% } \renewcommand*{\cglsformat}[2]{% \glsifregular{#1} {\glsentryfirst{#1}}% {\ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}}#2% } \renewcommand*{\cGlsformat}[2]{% \glsifregular{#1} {\Glsentryfirst{#1}}% {\ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}}#2% } \renewcommand*{\cglsplformat}[2]{% \glsifregular{#1} {\glsentryfirstplural{#1}}% {\ifglshaslong{#1}{\glsentrylongpl{#1}}{\glsentryfirstplural{#1}}}#2% } \renewcommand*{\cGlsplformat}[2]{% \glsifregular{#1} {\Glsentryfirstplural{#1}}% {\ifglshaslong{#1}{\Glsentrylongpl{#1}}{\Glsentryfirstplural{#1}}}#2% } \newcommand*{\@@newglossaryentry@defunitcounters}{% \protected@edef\@glo@countunit{\csuse{@glsxtr@categoryattr@@\@glo@category @unitcount}}% \ifdefvoid\@glo@countunit {}% {% \@glsxtr@ifunitcounter{\@glo@countunit}% {}% {\expandafter\@glsxtr@addunitcounter\expandafter{\@glo@countunit}}% }% } \newcommand*{\@glsxtr@unitcountlist}{} \newcommand*{\@glsxtr@addunitcounter}[1]{% \listadd{\@glsxtr@unitcountlist}{#1}% \ifcsundef{glsxtr@theunit@#1} {% \ifcsdef{theH#1}% {\csdef{glsxtr@theunit@#1}{\csuse{theH#1}}}% {\csdef{glsxtr@theunit@#1}{\csuse{the#1}}}% }% {}% } \newcommand*{\@glsxtr@ifunitcounter}[3]{% \xifinlist{#1}{\@glsxtr@unitcountlist}{#2}{#3}% } \newcommand*\@glsxtr@currentunitcount[1]{% glo@\glsdetoklabel{#1}@currunit@\glsgetattribute{#1}{unitcount}.% \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}% } \newcommand*\@glsxtr@previousunitcount[1]{% glo@\glsdetoklabel{#1}@prevunit@\glsgetattribute{#1}{unitcount}.% \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}% } \newcommand*{\@gls@increment@currunitcount}[1]{% \glshasattribute{#1}{unitcount}% {% \protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{#1}}% \ifcsundef{\@glsxtr@csname}% {% \csgdef{\@glsxtr@csname}{1}% \listcsxadd {glo@\glsdetoklabel{#1}@unitlist}% {\glsgetattribute{#1}{unitcount}.% \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}% }% }% {% \csxdef{\@glsxtr@csname}% {\number\numexpr\csname\@glsxtr@csname\endcsname+1}% }% }% {}% } \newcommand*{\@gls@local@increment@currunitcount}[1]{% \glshasattribute{#1}{unitcount}% {% \protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{#1}}% \ifcsundef{\@glsxtr@csname}% {% \csdef{\@glsxtr@csname}{1}% \listcseadd {glo@\glsdetoklabel{#1}@unitlist}% {\glsgetattribute{#1}{unitcount}.% \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}% }% }% {% \csedef{\@glsxtr@csname}% {\number\numexpr\csname\@glsxtr@csname\endcsname+1}% }% }% {}% } \newcommand*{\@glsxtr@currunitcount}[2]{% \ifcsundef {glo@\glsdetoklabel{#1}@currunit@#2}% {0}% {\csuse{glo@\glsdetoklabel{#1}@currunit@#2}}% }% \newcommand*{\@glsxtr@prevunitcount}[2]{% \ifcsundef {glo@\glsdetoklabel{#1}@prevunit@#2}% {0}% {\csuse{glo@\glsdetoklabel{#1}@prevunit@#2}}% }% \newcommand*{\glsenableentryunitcount}{% \appto\@newglossaryentry@defcounters{\@@newglossaryentry@defunitcounters}% \renewcommand*{\gls@defdocnewglossaryentry}{% \renewcommand*\newglossaryentry[2]{% \PackageError{glossaries}{\string\newglossaryentry\space may only be used in the preamble when entry counting has been activated}{If you use \string\glsenableentryunitcount\space you must place all entry definitions in the preamble not in the document environment}% }% }% \newcommand*{\glsentrycurrcount}[1]{% \@glsxtr@currunitcount{##1}{\glsgetattribute{##1}{unitcount}.% \csuse{glsxtr@theunit@\glsgetattribute{##1}{unitcount}}}% }% \newcommand*{\glsentryprevcount}[1]{% \@glsxtr@prevunitcount{##1}{\glsgetattribute{##1}{unitcount}.% \csuse{glsxtr@theunit@\glsgetattribute{##1}{unitcount}}}% }% \newcommand*{\glsentryprevtotalcount}[1]{% \ifcsundef{glo@\glsdetoklabel{##1}@prevunittotal}% {0}% {% \number\csuse{glo@\glsdetoklabel{##1}@prevunittotal} }% }% \newcommand*{\glsentryprevmaxcount}[1]{% \ifcsundef{glo@\glsdetoklabel{##1}@prevunitmax}% {0}% {% \number\csuse{glo@\glsdetoklabel{##1}@prevunitmax} }% }% \let\@glsxtr@entryunitcount@org@unset\glsxtrpostunset \renewcommand*{\glsxtrpostunset}[1]{% \@glsxtr@entryunitcount@org@unset{##1}% \@gls@increment@currunitcount{##1}% }% \let\@glsxtr@entryunitcount@org@localunset\glsxtrpostlocalunset \renewcommand*{\glsxtrpostlocalunset}[1]{% \@glsxtr@entryunitcount@org@localunset{##1}% \@gls@local@increment@currunitcount{##1}% }% \let\@glsxtr@entryunitcount@org@reset\glsxtrpostreset \renewcommand*{\glsxtrpostreset}[1]{% \glshasattribute{##1}{unitcount}% {% \protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}% \ifcsundef{\@glsxtr@csname}% {}% {\csgdef{\@glsxtr@csname}{0}}% }% {}% }% \let\@glsxtr@entryunitcount@org@localreset\glsxtrpostlocalreset \renewcommand*{\glsxtrpostlocalreset}[1]{% \@glsxtr@entryunitcount@org@localreset{##1}% \glshasattribute{##1}{unitcount}% {% \protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}% \ifcsundef{\@glsxtr@csname}% {}% {\csdef{\@glsxtr@csname}{0}}% }% {}% }% \let\@cgls@\@@cgls@ \let\@cglspl@\@@cglspl@ \let\@cGls@\@@cGls@ \let\@cGlspl@\@@cGlspl@ \let\@cGLS@\@@cGLS@ \let\@cGLSpl@\@@cGLSpl@ \AtEndDocument{\@gls@write@entryunitcounts}% \renewcommand*{\@gls@entry@unitcount}[3]{% \csgdef{glo@\glsdetoklabel{##1}@prevunit@##3}{##2}% \ifcsundef{glo@\glsdetoklabel{##1}@prevunittotal}% {\csgdef{glo@\glsdetoklabel{##1}@prevunittotal}{##2}}% {% \csxdef{glo@\glsdetoklabel{##1}@prevunittotal}{ \number\numexpr\csuse{glo@\glsdetoklabel{##1}@prevunittotal}+##2}% }% \ifcsundef{glo@\glsdetoklabel{##1}@prevunitmax}% {\csgdef{glo@\glsdetoklabel{##1}@prevunitmax}{##2}}% {% \ifnum\csuse{glo@\glsdetoklabel{##1}@prevunitmax}<##2 \csgdef{glo@\glsdetoklabel{##1}@prevunitmax}{##2}% \fi }% }% \let\glsenableentryunitcount\relax \renewcommand*{\glsenableentrycount}{% \PackageError{glossaries-extra}{\string\glsenableentrycount\space can't be used with \string\glsenableentryunitcount}% {Use one or other but not both commands}% }% } \@onlypreamble\glsenableentryunitcount \newcommand*{\@gls@entry@unitcount}[3]{} \newcommand*{\@gls@write@entryunitcounts@do}[1]{% \immediate\write\@auxout {\string\@gls@entry@unitcount {\@glsentry}% {\@glsxtr@currunitcount{\@glsentry}{#1}% }% {#1}}% } \newcommand*{\@gls@write@entryunitcounts}{% \immediate\write\@auxout {\string\providecommand*{\string\@gls@entry@unitcount}[3]{}}% \count@=0\relax \forallglsentries{\@glsentry}{% \glshasattribute{\@glsentry}{unitcount}% {% \ifglsused{\@glsentry}% {% \forlistcsloop {\@gls@write@entryunitcounts@do}% {glo@\glsdetoklabel{\@glsentry}@unitlist}% }% {}% \advance\count@ by \@ne }% {}% }% \ifnum\count@=0 \GlossariesExtraWarningNoLine{Entry counting has been enabled \MessageBreak with \string\glsenableentryunitcount\space but the \MessageBreak attribute `unitcount' hasn't \MessageBreak been assigned to any of the defined \MessageBreak entries}% \fi } \newcommand*{\GlsXtrEnableEntryUnitCounting}[3]{% \glsenableentryunitcount \renewcommand*{\gls}{\cgls}% \renewcommand*{\Gls}{\cGls}% \renewcommand*{\glspl}{\cglspl}% \renewcommand*{\Glspl}{\cGlspl}% \renewcommand*{\GLS}{\cGLS}% \renewcommand*{\GLSpl}{\cGLSpl}% \@glsxtr@setentryunitcountunsetattr{#1}{#2}{#3}% \let\GlsXtrEnableEntryUnitCounting\@glsxtr@setentryunitcountunsetattr \renewcommand*{\GlsXtrEnableEntryCounting}[2]{% \PackageError{glossaries-extra}{\string\GlsXtrEnableEntryCounting\space can't be used with \string\GlsXtrEnableEntryUnitCounting}% {Use one or other but not both commands}}% } \newcommand*{\@glsxtr@setentryunitcountunsetattr}[3]{% \@for\@glsxtr@cat:=#1\do {% \ifdefempty{\@glsxtr@cat}{}% {% \glssetcategoryattribute{\@glsxtr@cat}{entrycount}{#2}% \glssetcategoryattribute{\@glsxtr@cat}{unitcount}{#3}% }% }% } \renewcommand*{\SetGenericNewAcronym}{% \ifdefequal\@addtoacronymlists\@glsxtr@org@addtoacronynlists {}% {% \GlossariesWarning{\string\SetGenericNewAcronym\space used without restoring base acronym functions with \string\RestoreAcronyms}% }% \let\@Gls@entryname\@Gls@acrentryname \renewcommand{\newacronym}[4][]{% \ifdefempty{\@glsacronymlists}% {% \def\@glo@type{\acronymtype}% \setkeys{glossentry}{##1}% \DeclareAcronymList{\@glo@type}% }% {}% \glskeylisttok{##1}% \glslabeltok{##2}% \glsshorttok{##3}% \glslongtok{##4}% \newacronymhook \protected@edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% {% type=\acronymtype,% name={\expandonce{\acronymentry{##2}}},% sort={\acronymsort{\the\glsshorttok}{\the\glslongtok}},% text={\the\glsshorttok},% short={\the\glsshorttok},% shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},% long={\the\glslongtok},% longplural={\the\glslongtok\noexpand\acrpluralsuffix},% category=acronym, \GenericAcronymFields,% \the\glskeylisttok }% }% \@do@newglossaryentry }% \renewcommand*{\acrfullfmt}[3]{% \glslink[##1]{##2}{\genacrfullformat{##2}{##3}}}% \renewcommand*{\Acrfullfmt}[3]{% \glslink[##1]{##2}{\Genacrfullformat{##2}{##3}}}% \renewcommand*{\ACRfullfmt}[3]{% \glslink[##1]{##2}{% \mfirstucMakeUppercase{\genacrfullformat{##2}{##3}}}}% \renewcommand*{\acrfullplfmt}[3]{% \glslink[##1]{##2}{\genplacrfullformat{##2}{##3}}}% \renewcommand*{\Acrfullplfmt}[3]{% \glslink[##1]{##2}{\Genplacrfullformat{##2}{##3}}}% \renewcommand*{\ACRfullplfmt}[3]{% \glslink[##1]{##2}{% \mfirstucMakeUppercase{\genplacrfullformat{##2}{##3}}}}% \renewcommand*{\glsentryfull}[1]{\genacrfullformat{##1}{}}% \renewcommand*{\Glsentryfull}[1]{\Genacrfullformat{##1}{}}% \renewcommand*{\glsentryfullpl}[1]{\genplacrfullformat{##1}{}}% \renewcommand*{\Glsentryfullpl}[1]{\Genplacrfullformat{##1}{}}% } \let\@glsxtr@org@setacronymstyle\setacronymstyle \let\@glsxtr@org@newacronymstyle\newacronymstyle \let\@glsxtr@acronymlists\@glsacronymlists \let\@glsxtr@org@addtoacronynlists\@addtoacronymlists \let\@glsxtr@org@setacronymlists\SetAcronymLists \newcommand{\@glsxtr@abbrlists}{} \newcommand*{\forallabbreviationlists}[2]{% \@for#1:=\@glsxtr@abbrlists\do{\ifdefempty{#1}{}{#2}}% } \newcommand*{\@glsxtr@addabbreviationlist}[1]{% \protected@edef\@glo@type{#1}% \ifdefempty\@glsxtr@abbrlists {\let\@glsxtr@abbrlists\@glo@type}% {% \ifdefequal\@glsxtr@abbrlists\@glo@type {}% {% \expandafter\DTLifinlist\expandafter{\@glo@type}{\@glsxtr@abbrlists}{}% {\protected@eappto\@glsxtr@abbrlists{,\@glo@type}}% }% }% } \renewcommand*{\forallacronyms}[2]{% \@glsxtr@base@acrcmd\forallacronyms\forallabbreviationlists \@for#1:=\@glsacronymlists\do{\ifx#1\@empty\else#2\fi}% } \newcommand*{\MakeAcronymsAbbreviations}{% \@for\@gls@type:=\@glsacronymlists\do{% \csgdef{gls@\@gls@type @entryfmt}{\glsentryfmt}% }% \let\@glsxtr@acronymlists\@glsacronymlists \let\@glsacronymlists\@empty \let\@addtoacronymlists\@gobble \let\SetAcronymLists\@gobble \let\@glsxtr@base@acrcmd\@@glsxtr@base@acrcmd@warn \renewcommand*{\newacronym}[4][]{% \glsxtr@newabbreviation{type=\acronymtype,category=acronym,##1}{##2}{##3}{##4}% }% \renewcommand*{\firstacronymfont}[1]{\glsfirstabbrvfont{##1}}% \renewcommand*{\acronymfont}[1]{\glsabbrvfont{##1}}% \renewcommand*{\setacronymstyle}[1]{% \PackageError{glossaries-extra}{\string\setacronymstyle{##1} unavailable. Use \string\setabbreviationstyle[acronym]\space instead. The original acronym interface can be restored with \string\RestoreAcronyms}{}% }% \renewcommand*{\newacronymstyle}[1]{% \GlossariesExtraWarning{New acronym style `##1' won't be available unless you restore the original acronym interface with \string\RestoreAcronyms}% \@glsxtr@org@newacronymstyle{##1}% }% } \MakeAcronymsAbbreviations \newcommand*{\RestoreAcronyms}{% \let\@glsacronymlists\@glsxtr@acronymlists \let\@addtoacronymlists\@glsxtr@org@addtoacronynlists \let\SetAcronymLists\@glsxtr@org@setacronymlists \let\@glsxtr@base@acrcmd\@gobbletwo \@for\@gls@type:=\@glsacronymlists\do{% \SetDefaultAcronymDisplayStyle{\@gls@type}% }% \SetGenericNewAcronym \renewcommand{\firstacronymfont}[1]{\acronymfont{##1}}% \renewcommand{\acronymfont}[1]{##1}% \let\setacronymstyle\@glsxtr@org@setacronymstyle \let\newacronymstyle\@glsxtr@org@newacronymstyle \renewcommand*\@gls@link@checkfirsthyper{% \ifglsused{\glslabel}% {\let\glsxtrifwasfirstuse\@secondoftwo} {\let\glsxtrifwasfirstuse\@firstoftwo}% \@glsxtr@org@checkfirsthyper } \glssetcategoryattribute{acronym}{regular}{false}% \setacronymstyle{long-short}% } \renewcommand*{\glsacspace}[1]{% \settowidth{\dimen@}{(\firstacronymfont{\glsentryshort{#1}})}% \ifdim\dimen@<\glsacspacemax~\else\space\fi } \newcommand*{\glsacspacemax}{3em} \newcommand*{\@glsxtr@reg@glosslist}{} \let\@glsxtr@org@makeglossaries\makeglossaries \providecommand\@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}% }% }% \providecommand{\@domakeglossaries}[1]{#1} \renewcommand*{\makeglossaries}[1][]{% \@domakeglossaries {% \@glsxtr@if@record@only {% \PackageError{glossaries-extra}{\string\makeglossaries\space not permitted\MessageBreak with record=\@glsxtr@record@setting\space package option}% {You may only use \string\makeglossaries\space with record=off or record=hybrid options}% }% {% \ifblank{#1}% {% \@glsxtr@org@makeglossaries \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex \let\warn@noprintglossary\@glsxtr@warn@hybrid@noprintgloss \fi }% {% \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex \PackageError{glossaries-extra}{\string\makeglossaries[#1]\space not permitted\MessageBreak with record=\@glsxtr@record@setting\space package option}% {You may only use the hybrid \string\makeglossaries[...]\space with record=off option}% \else \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}% \protected@edef\@glsxtr@reg@glosslist{#1}% \ifundef{\glswrite}{\newwrite\glswrite}{}% \protected@write\@auxout{}{\string\providecommand \string\@glsorder[1]{}} \protected@write\@auxout{}{\string\providecommand \string\@istfilename[1]{}} \protected@write\@auxout{}{\string\@istfilename{\istfilename}}% \protected@write\@auxout{}{\string\@glsorder{\glsorder}} \protected@write\@auxout{}{\string\glsxtr@makeglossaries{#1}} \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}% \@for\@glo@type:=#1\do{% \ifdefempty{\@glo@type}{}{\@makeglossary{\@glo@type}}% }% \renewcommand*\newglossary[4][]{% \PackageError{glossaries}{New glossaries must be created before \string\makeglossaries}{You need to move \string\makeglossaries\space after all your \string\newglossary\space commands}}% \let\@makeglossary\@gobble \renewcommand\makeglossaries[1][]{}% \@disable@onlypremakeg \let\gls@checkseeallowed\relax \renewcommand*{\@do@seeglossary}[2]{% \glsdoifexists{##1}% {% \protected@edef\@gls@label{\glsdetoklabel{##1}}% \protected@edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% {\@glsxtr@org@doseeglossary{##1}{##2}}% {% \@@glsxtrwrglossmark \protected@write\@auxout{}{% \string\@gls@reference {\gls@type}{\@gls@label}{\string\glsseeformat##2{}}% }% }% }% }% \let\@glsxtr@@do@@wrglossary\@@do@@wrglossary \def\@@do@@wrglossary{% \protected@edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% {\@glsxtr@@do@@wrglossary}% {\gls@noidxglossary}% }% \let\warn@nomakeglossaries\relax \let\warn@noprintglossary\@makeglossaries@warn@noprintglossary \renewcommand{\@gls@noref@warn}[1]{% \protected@edef\@gls@type{##1}% \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% {% \GlossariesExtraWarning{Can't use \string\printnoidxglossary[type={\@gls@type}] when `\@gls@type' is listed in the optional argument of \string\makeglossaries}% }% {% \GlossariesWarning{Empty glossary for \string\printnoidxglossary[type={##1}]. Rerun may be required (or you may have forgotten to use commands like \string\gls)}% }% }% \renewcommand*{\glsdisplaynumberlist}[1]{% \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% {\@glsxtr@idx@displaynumberlist{##1}}% {\@glsxtr@noidx@displaynumberlist{##1}}% }% \renewcommand*{\glsentrynumberlist}[1]{% \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% {\@glsxtr@idx@entrynumberlist{##1}}% {\@glsxtr@noidx@entrynumberlist{##1}}% }% \renewcommand*{\glsnumberlistloop}[2]{% \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% {% \PackageError{glossaries-extra}{\string\glsnumberlistloop\space not available for glossary `##1'}{}% }% {\@glsxtr@noidx@numberlistloop{##1}{##2}}% }% \renewcommand*{\glsprestandardsort}[3]{% \expandafter\DTLifinlist\expandafter{##2}{\@glsxtr@reg@glosslist}% {% \glsdosanitizesort }% {% \ifglssanitizesort \@gls@noidx@sanitizesort \else \@gls@noidx@nosanitizesort \fi }% }% \renewcommand*\new@glossaryentry[2]{% \PackageError{glossaries-extra}{Glossary entries must be defined in the preamble\MessageBreak when you use the optional argument of \string\makeglossaries}{Either move your definitions to the preamble or don't use the optional argument of \string\makeglossaries}% }% \let\@glo@assign@sortkey\@glsxtr@mixed@assign@sortkey \renewcommand*{\@printgloss@setsort}{% \expandafter\@glsxtr@gettype\expandafter,\@glsxtr@printglossopts,% type=\glsdefaulttype,\@end@glsxtr@gettype \def\@glo@sorttype{\@glo@default@sorttype}% }% \ifglsautomake \renewcommand*{\@gls@doautomake}{% \@for\@gls@type:=\@glsxtr@reg@glosslist\do{% \ifdefempty{\@gls@type}{}{\@gls@automake{\@gls@type}}% }% }% \fi \ifdef\@glo@check@sortallowed{\@glo@check@sortallowed\makeglossaries}{}% \fi }% }% }% } \ifdef\@printgloss@checkexists {\newcommand{\glsxtr@printgloss@checkexists}{\@printgloss@checkexists}} {\newcommand{\glsxtr@printgloss@checkexists}[2]{#2}} \newcommand{\@glsxtr@orgprintglossary}[2]{% \def\@glo@type{\glsdefaulttype}% \def\glossarytitle{% \ifcsdef{@glotype@\@glo@type @title}% {\csuse{@glotype@\@glo@type @title}}% {\glossaryname}}% \def\glossarytoctitle{\glossarytitle}% \let\org@glossarytitle\glossarytitle \def\@glossarystyle{% \ifx\@glossary@default@style\relax \GlossariesWarning{No default glossary style provided \MessageBreak for the glossary `\@glo@type'. \MessageBreak Using deprecated fallback. \MessageBreak To fix this set the style with \MessageBreak \string\setglossarystyle\space or use the \MessageBreak style key=value option}% \fi }% \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}% \let\@org@glossaryentrynumbers\glossaryentrynumbers \bgroup \@printgloss@setsort \setkeys{printgloss}{#1}% \ifx\glossarytitle\org@glossarytitle \else \cslet{@glotype@\@glo@type @title}{\glossarytitle}% \fi \let\currentglossary\@glo@type \let\org@glossaryentrynumbers\glossaryentrynumbers \let\glsnonextpages\@glsnonextpages \let\glsnextpages\@glsnextpages \glsxtractivatenopost \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 \glsxtr@printgloss@checkexists{\@glo@type}{#2}% \egroup \global\let\glossaryentrynumbers\@org@glossaryentrynumbers \global\let\warn@noprintglossary\relax } \newcommand*{\glsxtractivatenopost}{% \let\nopostdesc\@nopostdesc \let\glsxtrnopostpunc\@glsxtr@nopostpunc } \newrobustcmd*{\glsxtrnopostpunc}{} \newcommand{\@glsxtr@nopostpunc}{% \let\@@glsxtr@org@postdescription\glspostdescription \ifglsnopostdot \renewcommand{\glspostdescription}{% \glsnopostdottrue \let\glspostdescription\@@glsxtr@org@postdescription \let\glsxtrrestorepostpunc\@glsxtr@restore@postpunc \glsxtrpostdescription \@glsxtr@nopostpunc@postdesc}% \else \renewcommand{\glspostdescription}{% \let\glspostdescription\@@glsxtr@org@postdescription \let\glsxtrrestorepostpunc\@glsxtr@restore@postpunc \glsxtrpostdescription \@glsxtr@nopostpunc@postdesc}% \fi \glsnopostdotfalse } \newcommand*{\@glsxtr@nopostpunc@postdesc}{} \newcommand*{\@glsxtr@restore@postpunc}{% \def\@glsxtr@nopostpunc@postdesc{% \@glsxtr@org@postdescription \let\@glsxtr@nopostpunc@postdesc\@empty \let\glsxtrrestorepostpunc\@empty }% } \newcommand*{\glsxtrrestorepostpunc}{} \renewcommand{\@printglossary}[2]{% \def\@glsxtr@printglossopts{#1}% \@glsxtr@orgprintglossary{#1}{#2}% } \define@choicekey{printgloss}{target} [\@glsxtr@printglossval\@glsxtr@printglossnr]% {true,false}[true]% {% \ifcase\@glsxtr@printglossnr \def\@glstarget{\glsdohypertarget}% \else \let\@glstarget\@secondoftwo \fi } \newcommand{\@glsxtrhypernameprefix}{} \define@key{printgloss}{targetnameprefix}{% \renewcommand{\@glsxtrhypernameprefix}{#1}% } \define@key{printgloss}{prefix}{% \renewcommand{\glolinkprefix}{#1}% } \define@key{printgloss}{label}{% \glsxtrsetglossarylabel{#1}% } \newcommand{\glsxtrsetglossarylabel}[1]{% \renewcommand*{\@@glossaryseclabel}{% \protected@edef\@currentlabelname{\glossarytoctitle}% \label{#1}% }% } \newcount\@glsxtr@leveloffset \define@key{printgloss}{leveloffset}{% \@glsxtr@assign@leveloffset#1\relax } \newcommand*{\@glsxtr@assign@leveloffset}{% \@ifnextchar+{\p@glsxtr@assign@leveloffset}{\np@glsxtr@assign@leveloffset}% } \newcommand*{\p@glsxtr@assign@leveloffset}[1]{% \@ifnextchar+{\pp@glsxtr@assign@leveloffset}{\np@glsxtr@assign@leveloffset}% } \def\np@glsxtr@assign@leveloffset#1\relax{\@glsxtr@leveloffset=#1\relax} \def\pp@glsxtr@assign@leveloffset#1\relax{\advance\@glsxtr@leveloffset by #1\relax} \define@boolkey{printgloss}[glsxtr@printgloss@]{groups}[true]{} \glsxtr@printgloss@groupstrue \let\@glsxtr@org@glsdohypertarget\glsdohypertarget \renewcommand{\glsdohypertarget}[2]{% \@glsxtr@org@glsdohypertarget{\@glsxtrhypernameprefix#1}{#2}% } \ifx\@glstarget\@glsxtr@org@glsdohypertarget \def\@glstarget{\glsdohypertarget}% \fi \newcommand{\@glsxtr@do@org@target}[2]{% {% \let\glsdohypertarget\@glsxtr@org@glsdohypertarget \@glstarget{#1}{#2}% }% } \newcommand*{\glsxtr@makeglossaries}[1]{} \def\@glsxtr@gettype#1,type=#2,#3\@end@glsxtr@gettype{% \def\@glo@type{#2}% } \newcommand\@glsxtr@mixed@assign@sortkey[1]{% \protected@edef\@glo@type{\@glo@type}% \expandafter\DTLifinlist\expandafter{\@glo@type}{\@glsxtr@reg@glosslist}% {% \@glo@no@assign@sortkey{#1}% }% {% \@@glo@assign@sortkey{#1}% }% }% \let\@glsxtr@idx@displaynumberlist\glsdisplaynumberlist \newcommand*{\@glsxtr@noidx@displaynumberlist}[1]{% \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% \ifdef\@gls@loclist {% \def\@gls@noidxloclist@sep{% \def\@gls@noidxloclist@sep{% \def\@gls@noidxloclist@sep{% \glsnumlistsep }% \def\@gls@noidxloclist@finalsep{\glsnumlistlastsep}% }% }% \def\@gls@noidxloclist@finalsep{}% \def\@gls@noidxloclist@prev{}% \forlistloop{\glsnoidxdisplayloclisthandler}{\@gls@loclist}% \@gls@noidxloclist@finalsep \@gls@noidxloclist@prev }% {% \glsxtrundeftag \glsdoifexists{#1}% {% \GlossariesWarning{Missing location list for `#1'. Either a rerun is required or you haven't referenced the entry.}% }% }% }% \newcommand*{\@glsxtr@noidx@numberlistloop}[3]{% \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% \let\@gls@org@glsnoidxdisplayloc\glsnoidxdisplayloc \let\@gls@org@glsseeformat\glsseeformat \let\glsnoidxdisplayloc#2\relax \let\glsseeformat#3\relax \ifdef\@gls@loclist {% \forlistloop{\glsnoidxnumberlistloophandler}{\@gls@loclist}% }% {% \glsxtrundeftag \glsdoifexists{#1}% {% \GlossariesWarning{Missing location list for `##1'. Either a rerun is required or you haven't referenced the entry.}% }% }% \let\glsnoidxdisplayloc\@gls@org@glsnoidxdisplayloc \let\glsseeformat\@gls@org@glsseeformat }% \newcommand*{\@glsxtr@noidx@entrynumberlist}[1]{% \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% \ifdef\@gls@loclist {% \glsnoidxloclist{\@gls@loclist}% }% {% \glsxtrundeftag \glsdoifexists{#1}% {% \GlossariesWarning{Missing location list for `#1'. Either a rerun is required or you haven't referenced the entry.}% }% }% }% \newcommand*{\@glsxtr@idx@entrynumberlist}[1]{\glsentrynumberlist{#1}} \renewcommand*{\@gls@noidx@getgrouptitle}[2]{% \protected@edef\@glsxtr@titlelabel{#1}% \ifdefvoid\@glsxtr@titlelabel {}% {% \protected@edef\@glsxtr@titlelabel{\csuse{glsxtr@grouptitle@#1}}% }% \ifdefvoid{\@glsxtr@titlelabel}% {% \DTLifint{#1}% {% \ifnum#1<256\relax \edef#2{\char#1\relax}% \else \edef#2{#1}% \fi }% {% \ifcsundef{#1groupname}% {\def#2{#1}}% {\letcs#2{#1groupname}}% }% }% {% \let#2\@glsxtr@titlelabel }% } \let\glsxtr@org@getgrouptitle\@gls@getgrouptitle \newrobustcmd{\glsxtrgetgrouptitle}[2]{% \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}% \@onelevel@sanitize\@glsxtr@titlelabel \ifcsdef{\@glsxtr@titlelabel} {\letcs{#2}{\@glsxtr@titlelabel}}% {\glsxtr@org@getgrouptitle{#1}{#2}}% } \let\@gls@getgrouptitle\glsxtrgetgrouptitle \newcommand{\glsxtrsetgrouptitle}[2]{% \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}% \@onelevel@sanitize\@glsxtr@titlelabel \protected@csxdef{\@glsxtr@titlelabel}{#2}% } \newcommand{\glsxtrlocalsetgrouptitle}[2]{% \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}% \@onelevel@sanitize\@glsxtr@titlelabel \protected@csedef{\@glsxtr@titlelabel}{#2}% } \renewcommand*{\glsnavigation}{% \def\@gls@between{}% \ifcsundef{@gls@hypergrouplist@\@glo@type}% {% \def\@gls@list{}% }% {% \expandafter\let\expandafter\@gls@list \csname @gls@hypergrouplist@\@glo@type\endcsname }% \@for\@gls@tmp:=\@gls@list\do{% \@gls@between \glsxtrgetgrouptitle{\@gls@tmp}{\@gls@grptitle}% \glsnavhyperlink{\@gls@tmp}{\@gls@grptitle}% \let\@gls@between\glshypernavsep }% } \renewcommand*{\@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 }% {% \glsxtrifemptyglossary{\@glo@type}% {}% {\glossarysection[\glossarytoctitle]{\glossarytitle}}% \@gls@noref@warn{\@glo@type}% }% } \renewcommand*{\glsnoidxdisplayloc}[4]{% \setentrycounter[#1]{#2}% \@glsxtr@display@loc#3\empty\end@glsxtr@display@loc{#4}% } \def\@glsxtr@display@loc#1#2\end@glsxtr@display@loc#3{% \ifx#1(\relax \glsxtrdisplaystartloc{#2}{#3}% \else \ifx#1)\relax \glsxtrdisplayendloc{#2}{#3}% \else \glsxtrdisplaysingleloc{#1#2}{#3}% \fi \fi } \newcommand*{\glsxtrdisplaysingleloc}[2]{% \csuse{#1}{#2}% } \newcommand*{\glsxtrdisplaystartloc}[2]{% \protected@edef\glsxtrlocrangefmt{#1}% \ifx\glsxtrlocrangefmt\empty \def\glsxtrlocrangefmt{glsnumberformat}% \fi \expandafter\glsxtrdisplaysingleloc \expandafter{\glsxtrlocrangefmt}{#2}% } \newcommand*{\glsxtrdisplayendloc}[2]{% \protected@edef\@glsxtr@tmp{#1}% \ifdefempty{\@glsxtr@tmp}{\def\@glsxtr@tmp{glsnumberformat}}{}% \ifx\glsxtrlocrangefmt\@glsxtr@tmp \else \GlossariesExtraWarning{Mismatched end location range (start=\glsxtrlocrangefmt, end=\@glsxtr@tmp)}% \fi \expandafter\glsxtrdisplayendlochook\expandafter{\@glsxtr@tmp}{#2}% \expandafter\glsxtrdisplaysingleloc \expandafter{\glsxtrlocrangefmt}{#2}% \def\glsxtrlocrangefmt{}% } \newcommand*{\glsxtrdisplayendlochook}[2]{} \newcommand*{\glsxtrlocrangefmt}{} \renewcommand*{\setentrycounter}[2][]{% \def\glsxtrcounterprefix{#1}% \ifx\glsxtrcounterprefix\@empty \def\@glo@counterprefix{.}% \else \def\@glo@counterprefix{.#1.}% \fi \def\glsentrycounter{#2}% } \def\@gls@removespaces#1 #2\@nil{% \toks@=\expandafter{\the\toks@#1}% \ifx\\#2\\% \edef\@glo@tmp{\the\toks@}% \ifx\@glo@tmp\empty \else \expandafter\glsxtrlocationhyperlink\expandafter \glsentrycounter\expandafter\@glo@counterprefix\expandafter{\the\toks@}% \fi \else \@gls@ReturnAfterFi{% \@gls@removespaces#2\@nil }% \fi } \newcommand*{\glsxtrlocationhyperlink}[3]{% \ifdefvoid\glsxtrsupplocationurl {% \GlsXtrInternalLocationHyperlink{#1}{#2}{#3}% }% {% \hyperref{\glsxtrsupplocationurl}{}{#1#2#3}{#3}% }% } \newcommand*{\glsxtrsupphypernumber}[1]{% {% \glshasattribute{\glscurrententrylabel}{externallocation}% {% \def\glsxtrsupplocationurl{% \glsgetattribute{\glscurrententrylabel}{externallocation}}% }% {% \def\glsxtrsupplocationurl{}% }% \glshypernumber{#1}% }% } \renewcommand{\@print@glossary}{% \makeatletter \@input@{\jobname.\csname @glotype@\@glo@type @in\endcsname}% \IfFileExists{\jobname.\csname @glotype@\@glo@type @in\endcsname}% {}% {\glsxtrNoGlossaryWarning{\@glo@type}}% \ifglsxindy \ifcsundef{@xdy@\@glo@type @language}% {% \edef\@do@auxoutstuff{% \noexpand\AtEndDocument{% \noexpand\immediate\noexpand\write\@auxout{% \string\providecommand\string\@xdylanguage[2]{}}% \noexpand\immediate\noexpand\write\@auxout{% \string\@xdylanguage{\@glo@type}{\@xdy@main@language}}% }% }% }% {% \edef\@do@auxoutstuff{% \noexpand\AtEndDocument{% \noexpand\immediate\noexpand\write\@auxout{% \string\providecommand\string\@xdylanguage[2]{}}% \noexpand\immediate\noexpand\write\@auxout{% \string\@xdylanguage{\@glo@type}{\csname @xdy@\@glo@type @language\endcsname}}% }% }% }% \@do@auxoutstuff \edef\@do@auxoutstuff{% \noexpand\AtEndDocument{% \noexpand\immediate\noexpand\write\@auxout{% \string\providecommand\string\@gls@codepage[2]{}}% \noexpand\immediate\noexpand\write\@auxout{% \string\@gls@codepage{\@glo@type}{\gls@codepage}}% }% }% \@do@auxoutstuff \fi \renewcommand*{\@warn@nomakeglossaries}{% \GlossariesWarningNoLine{\string\makeglossaries\space hasn't been used,^^Jthe glossaries will not be updated}% }% } \newcommand{\GlsXtrNoGlsWarningHead}[2]{% This document is incomplete. The external file associated with the glossary `#1' (which should be called \texttt{#2}) hasn't been created.% } \newcommand{\GlsXtrNoGlsWarningEmptyStart}{% This has probably happened because there are no entries defined in this glossary.% } \newcommand{\GlsXtrNoGlsWarningEmptyMain}{% If you don't want this glossary, add \texttt{nomain} to your package option list when you load \texttt{glossaries-extra.sty}. For example:% } \newcommand{\GlsXtrNoGlsWarningEmptyNotMain}[1]{% Did you forget to use \texttt{type=#1} when you defined your entries? If you tried to load entries into this glossary with \texttt{\string\loadglsentries} did you remember to use \texttt{[#1]} as the optional argument? If you did, check that the definitions in the file you loaded all had the type set to \texttt{\string\glsdefaulttype}.% } \newcommand{\GlsXtrNoGlsWarningCheckFile}[1]{% Check the contents of the file \texttt{#1}. If it's empty, that means you haven't indexed any of your entries in this glossary (using commands like \texttt{\string\gls} or \texttt{\string\glsadd}) so this list can't be generated. If the file isn't empty, the document build process hasn't been completed.% } \newcommand{\GlsXtrNoGlsWarningAutoMake}[1]{% You may need to rerun \LaTeX. If you already have, it may be that \TeX's shell escape doesn't allow you to run \ifglsxindy xindy\else makeindex\fi. Check the transcript file \texttt{\jobname.log}. If the shell escape is disabled, try one of the following: \begin{itemize} \item Run the external (Lua) application: \texttt{makeglossaries-lite \string"\jobname\string"} \item Run the external (Perl) application: \texttt{makeglossaries \string"\jobname\string"} \end{itemize} Then rerun \LaTeX\ on this document. \GlossariesExtraWarning{Rerun required to build the glossary `#1' or check TeX's shell escape allows you to run \ifglsxindy xindy\else makeindex\fi}% } \newcommand{\GlsXtrNoGlsWarningMisMatch}{% You need to either replace \texttt{\string\makenoidxglossaries} with \texttt{\string\makeglossaries} or replace \texttt{\string\printglossary} (or \texttt{\string\printglossaries}) with \texttt{\string\printnoidxglossary} (or \texttt{\string\printnoidxglossaries}) and then rebuild this document.% } \newcommand{\GlsXtrNoGlsWarningBuildInfo}{% Try one of the following: \begin{itemize} \item Add \texttt{automake} to your package option list when you load \texttt{glossaries-extra.sty}. For example: \texttt{\string\usepackage[automake]% \glsopenbrace glossaries-extra\glsclosebrace} \item Run the external (Lua) application: \texttt{makeglossaries-lite.lua \string"\jobname\string"} \item Run the external (Perl) application: \texttt{makeglossaries \string"\jobname\string"} \end{itemize} Then rerun \LaTeX\ on this document.% } \newcommand{\GlsXtrRecordWarning}[1]{% \texttt{\string\printglossary} doesn't work with the \texttt{record=\@glsxtr@record@setting} package option use\par\texttt{\string\printunsrtglossary[type=#1]}\par instead (or change the package option).% } \newcommand{\GlsXtrNoGlsWarningTail}{% This message will be removed once the problem has been fixed.% } \newcommand{\GlsXtrNoGlsWarningNoOut}[1]{% The file \texttt{#1} doesn't exist. This most likely means you haven't used \texttt{\string\makeglossaries} or you have used \texttt{\string\nofiles}. If this is just a draft version of the document, you can suppress this message using the \texttt{nomissingglstext} package option.% } \newcommand*{\@glsxtr@defaultnoglossarywarning}[1]{% \glossarysection[\glossarytoctitle]{\glossarytitle} \GlsXtrNoGlsWarningHead{#1}{\jobname.\csname @glotype@\@glo@type @in\endcsname} \par \glsxtrifemptyglossary{#1}% {% \GlsXtrNoGlsWarningEmptyStart\space \ifthenelse{\equal{#1}{main}}{\GlsXtrNoGlsWarningEmptyMain\par \medskip \noindent\texttt{\string\usepackage[nomain\ifglsacronym ,acronym\fi]% \glsopenbrace glossaries-extra\glsclosebrace} \medskip }% {\GlsXtrNoGlsWarningEmptyNotMain{#1}}% }% {% \IfFileExists{\jobname.\csname @glotype@\@glo@type @out\endcsname} {% \GlsXtrNoGlsWarningCheckFile {\jobname.\csname @glotype@\@glo@type @out\endcsname} \ifglsautomake \GlsXtrNoGlsWarningAutoMake{#1} \else \ifthenelse{\equal{#1}{main}}% {% \GlsXtrNoGlsWarningEmptyMain\par \medskip \noindent\texttt{\string\usepackage[nomain]% \glsopenbrace glossaries-extra\glsclosebrace} \medskip }% {}% \ifdefequal\makeglossaries\@no@makeglossaries {% \GlsXtrNoGlsWarningMisMatch }% {% \GlsXtrNoGlsWarningBuildInfo }% \fi }% {% \GlsXtrNoGlsWarningNoOut {\jobname.\csname @glotype@\@glo@type @out\endcsname}% }% }% \par \GlsXtrNoGlsWarningTail } \newcommand*{\@glsxtr@record@noglossarywarning}[1]{% \GlossariesExtraWarning{\string\printglossary\space doesn't work\MessageBreak with record=\@glsxtr@record@setting\space package option\MessageBreak(use \string\printunsrtglossary[type=#1])\MessageBreak instead (or change the package option)}% \glossarysection[\glossarytoctitle]{\glossarytitle} \GlsXtrRecordWarning{#1} \GlsXtrNoGlsWarningTail } \newcommand*{\GlsXtrDefaultResourceOptions}{} \newcommand*{\glsxtrresourcefile}[2][]{% \disable@keys{glossaries-extra.sty}{record}% \glsxtr@writefields \ifdefempty\GlsXtrDefaultResourceOptions {% \protected@write\@auxout{\glsxtrresourceinit}% {\string\glsxtr@resource{#1}{#2}}% }% {% \protected@write\@auxout{\glsxtrresourceinit}% {\string\glsxtr@resource{\GlsXtrDefaultResourceOptions,#1}{#2}}% }% \let\@glsxtr@org@see@noindex\@gls@see@noindex \let\@gls@see@noindex\relax \IfFileExists{#2.glstex}% {% \edef\@bibgls@restoreat{\noexpand\catcode\noexpand`\noexpand\@=\number\catcode`\@}% \makeatletter \@input{#2.glstex}% \@bibgls@restoreat \@glsxtr@check@bibgls@nameref }% {% \GlossariesExtraWarning{No file `#2.glstex'}% }% \let\@gls@see@noindex\@glsxtr@org@see@noindex } \@onlypreamble\glsxtrresourcefile \newcommand{\@glsxtr@check@bibgls@nameref}{% \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref \ifdef\bibglshrefchar {}% {% \GlossariesExtraWarning{record=nameref requires at least version 1.8 of bib2gls}% }% \fi \let\@glsxtr@check@bibgls@nameref\relax } \newcommand*{\glsxtrresourceinit}{} \newcount\glsxtrresourcecount \newcommand*{\GlsXtrLoadResources}[1][]{% \ifnum\glsxtrresourcecount=0\relax \glsxtrresourcefile[#1]{\jobname}% \else \glsxtrresourcefile[#1]{\jobname-\the\glsxtrresourcecount}% \fi \advance\glsxtrresourcecount by 1\relax } \newcommand*{\glsxtr@resource}[2]{} \newcommand*{\glsxtr@fields}[1]{} \newcommand*{\glsxtr@texencoding}[1]{} \newcommand*{\glsxtr@langtag}[1]{} \newcommand*{\glsxtr@pluralsuffixes}[4]{} \newcommand*{\glsxtr@shortcutsval}[1]{} \newcommand*{\glsxtr@linkprefix}[1]{} \newcommand*{\glsxtr@writefields}{% \protected@write\@auxout{}% {\string\providecommand*{\string\glsxtr@fields}[1]{}}% \protected@write\@auxout{}% {\string\providecommand*{\string\glsxtr@resource}[2]{}}% \protected@write\@auxout{}% {\string\providecommand*{\string\glsxtr@pluralsuffixes}[4]{}}% \protected@write\@auxout{}% {\string\providecommand*{\string\glsxtr@shortcutsval}[1]{}}% \protected@write\@auxout{}% {\string\providecommand*{\string\glsxtr@linkprefix}[1]{}}% \protected@write\@auxout{}{\string\glsxtr@fields{\@gls@keymap}}% \protected@write\@auxout{}% {\string\providecommand*{\string\glsxtr@record}[5]{}}% \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref \protected@write\@auxout{}% {\string\providecommand*{\string\glsxtr@record@nameref}[8]{}}% \fi \ifdef\CurrentTrackedLanguageTag {% \protected@write\@auxout{}{% \string\glsxtr@langtag{\CurrentTrackedLanguageTag}}% }% {}% \protected@write\@auxout{}{\string\glsxtr@pluralsuffixes {\glspluralsuffix}{\abbrvpluralsuffix}{\acrpluralsuffix}% {\glsxtrabbrvpluralsuffix}}% \ifdef\inputencodingname {% \protected@write\@auxout{}{\string\glsxtr@texencoding{\inputencodingname}}% }% {% \@ifpackageloaded{fontspec}% {\protected@write\@auxout{}{\string\glsxtr@texencoding{utf8}}}% {}% }% \protected@write\@auxout{}{\string\glsxtr@shortcutsval{\@glsxtr@shortcutsval}}% \AtBeginDocument {\protected@write\@auxout{}{\string\glsxtr@linkprefix{\glolinkprefix}}}% \let\glsxtr@writefields\relax \ifglsautomake \IfFileExists{\jobname.aux}% {\immediate\write18{bib2gls \jobname}}{}% \ifx\@gls@doautomake\@gls@doautomake@err \let\@gls@doautomake\relax \fi \fi \@glsxtr@if@record@only {\ifdefstring{\glsorder}{letter}% {\GlossariesExtraWarningNoLine{Package option `order=letter' isn't supported with `record=\@glsxtr@record@setting'. Use `break-at=none' resource option instead}}% {}% }% {}% } \newcommand*{\@gls@doautomake@err}{% \PackageError{glossaries}{You must use \string\makeglossaries\space with automake=true} {% Either remove the automake=true setting or add \string\makeglossaries\space to your document preamble.% }% } \newcommand*{\glsxtr@record}[5]{} \newcommand*{\glsxtr@record@nameref}[8]{} \newcommand*{\glsxtr@counterrecord}[3]{% \glsxtrfieldlistgadd{#1}{record.#2}{#3}% } \newcommand*{\@glsxtr@counterrecordhook}{} \newcommand*{\GlsXtrRecordCounter}[1]{% \@@glsxtr@recordcounter{#1}% } \@onlypreamble\GlsXtrRecordCounter \newcommand*{\@glsxtr@docounterrecord}[1]{% \protected@write\@auxout{}{\string\glsxtr@counterrecord {\@gls@label}{#1}{\csuse{the#1}}}% } \newcommand*{\glsxtrglossentry}[1]{% \glsxtrtitleorpdforheading {\@glsxtrglossentry{#1}}% {\glsentryname{#1}}% {\glsxtrheadname{#1}}% } \newrobustcmd*{\@glsxtrglossentry}[1]{% \glsxtrtitleorpdforheading {% \glsdoifexists{#1}% {% \begingroup \protected@edef\glscurrententrylabel{\glsdetoklabel{#1}}% \protected@edef\currentglossary{\GlsXtrStandaloneGlossaryType}% \ifglshasparent{#1}% {\GlsXtrStandaloneSubEntryItem{#1}}% {\glsentryitem{#1}}% \GlsXtrStandaloneEntryName{#1}% \endgroup }% }% {\glsentryname{#1}}% {\glsxtrheadname{#1}}% } \newcommand*{\GlsXtrStandaloneEntryName}[1]{% \glstarget{#1}{\glossentryname{#1}}% } \newcommand{\GlsXtrStandaloneGlossaryType}{\glsentrytype{\glscurrententrylabel}} \newcommand*{\GlsXtrStandaloneSubEntryItem}[1]{% \GlsXtrIfFieldEqNum{level}{#1}{1}{\glssubentryitem{#1}}{}% } \newcommand*{\glsxtrglossentryother}[3]{% \ifstrempty{#1}% {% \ifcsdef{glsxtrhead#3}% {% \glsxtrtitleorpdforheading {\@glsxtrglossentryother{#2}{#3}{#1}}% {\@gls@entry@field{#2}{#3}}% {\csuse{glsxtrhead#3}{#2}}% }% {% \glsxtrtitleorpdforheading {\@glsxtrglossentryother{#2}{#3}{#1}}% {\@gls@entry@field{#2}{#3}}% {\@gls@entry@field{\NoCaseChange{#2}}{#3}}% }% }% {% \glsxtrtitleorpdforheading {\@glsxtrglossentryother{#2}{#3}{#1}}% {\@gls@entry@field{#2}{#3}}% {#1}% }% } \newrobustcmd*{\@glsxtrglossentryother}[3]{% \glsxtrtitleorpdforheading {% \glsdoifexists{#1}% {% \begingroup \protected@edef\glscurrententrylabel{\glsdetoklabel{#1}}% \protected@edef\currentglossary{\GlsXtrStandaloneGlossaryType}% \ifglshasparent{#1}% {\GlsXtrStandaloneSubEntryItem{#1}}% {\glsentryitem{#1}}% \GlsXtrStandaloneEntryOther{#1}% \endgroup }% }% {\@gls@entry@field{#1}{#2}}% {#3}% } \newcommand*{\GlsXtrStandaloneEntryOther}[2]{% \glstarget{#1}{\glossentrynameother{#1}{#2}}% } \ifdef\@printgloss@checkexists { \newcommand*{\printunsrtglossary}{% \let\@printgloss@checkexists\@printgloss@checkexists@allowignored \@ifstar\s@printunsrtglossary\@printunsrtglossary } } { \newcommand*{\printunsrtglossary}{% \@ifstar\s@printunsrtglossary\@printunsrtglossary } } \newcommand*{\@printunsrtglossary}[1][]{% \@printglossary{type=\glsdefaulttype,#1}{\@print@unsrt@glossary}% } \newcommand*{\s@printunsrtglossary}[2][]{% \begingroup #2% \@printglossary{type=\glsdefaulttype,#1}{\@print@unsrt@glossary}% \endgroup } \newcommand*{\printunsrtglossaries}{% \forallglossaries{\@@glo@type}{\printunsrtglossary[type=\@@glo@type]}% } \newcommand*{\@print@unsrt@glossary}{% \glossarysection[\glossarytoctitle]{\glossarytitle}% \glossarypreamble \glsxtrifemptyglossary{\@glo@type}% {% \GlossariesExtraWarning{No entries defined in glossary `\@glo@type'}% }% {% \key@ifundefined{glossentry}{group}% {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}% {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}% \def\@gls@currentlettergroup{}% \def\@glsxtr@doglossary{% \begin{theglossary}% \glossaryheader \glsresetentrylist }% \expandafter\@for\expandafter\glscurrententrylabel\expandafter :\expandafter=\csname glolist@\@glo@type\endcsname\do{% \ifdefempty{\glscurrententrylabel} {}% {% \let\glsxtr@process\@firstofone \let\printunsrtglossaryskipentry \@glsxtr@printunsrtglossaryskipentry \printunsrtglossaryentryprocesshook{\glscurrententrylabel}% \glsxtr@process {% \ifglsxtr@printgloss@groups \ifglshasparent{\glscurrententrylabel}{}% {% \@glsxtr@checkgroup\glscurrententrylabel \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter {\@glsxtr@groupheading}% }% \fi \protected@eappto\@glsxtr@doglossary{% \noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}% }% }% }% \appto\@glsxtr@doglossary{\end{theglossary}}% \printunsrtglossarypredoglossary \@glsxtr@doglossary }% \glossarypostamble } \newcommand*{\printunsrtinnerglossary}[3][]{% \begingroup \def\@glsxtr@printglossopts{#1}% \def\@glo@type{\glsdefaulttype}% \setkeys{printgloss}[title,toctitle,style,numberedsection,sort,label]{#1}% \let\currentglossary\@glo@type #2% \@print@unsrt@innerglossary #3% \endgroup } \newenvironment{printunsrtglossarywrap}[1][]% {% \def\@glsxtr@printglossopts{#1}% \def\@glo@type{\glsdefaulttype}% \def\glossarytitle{\csname @glotype@\@glo@type @title\endcsname}% \def\glossarytoctitle{\glossarytitle}% \let\org@glossarytitle\glossarytitle \def\@glossarystyle{% \ifx\@glossary@default@style\relax \GlossariesWarning{No default glossary style provided \MessageBreak for the glossary `\@glo@type'. \MessageBreak Using deprecated fallback. \MessageBreak To fix this set the style with \MessageBreak \string\setglossarystyle\space or use the \MessageBreak style key=value option}% \fi }% \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}% \let\@org@glossaryentrynumbers\glossaryentrynumbers \@printgloss@setsort \setkeys{printgloss}{#1}% \ifglossaryexists*{\@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 \glossarysection[\glossarytoctitle]{\glossarytitle}% \glossarypreamble \begin{theglossary}% \glossaryheader \glsresetentrylist }% {% \end{theglossary}% \glossarypostamble \global\let\glossaryentrynumbers\@org@glossaryentrynumbers \global\let\warn@noprintglossary\relax } \newcommand*{\@print@unsrt@innerglossary}{% \glsxtrifemptyglossary{\@glo@type}% {% \GlossariesExtraWarning{No entries defined in glossary `\@glo@type'}% }% {% \key@ifundefined{glossentry}{group}% {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}% {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}% \def\@gls@currentlettergroup{}% \def\@glsxtr@doglossary{}% \expandafter\@for\expandafter\glscurrententrylabel\expandafter :\expandafter=\csname glolist@\@glo@type\endcsname\do{% \ifdefempty{\glscurrententrylabel} {}% {% \let\glsxtr@process\@firstofone \let\printunsrtglossaryskipentry \@glsxtr@printunsrtglossaryskipentry \printunsrtglossaryentryprocesshook{\glscurrententrylabel}% \glsxtr@process {% \ifglsxtr@printgloss@groups \ifglshasparent{\glscurrententrylabel}{}% {% \@glsxtr@checkgroup\glscurrententrylabel \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter {\@glsxtr@groupheading}% }% \fi \protected@eappto\@glsxtr@doglossary{% \noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}% }% }% }% \printunsrtglossarypredoglossary \@glsxtr@doglossary }% } \newcommand*{\printunsrtglossaryentryprocesshook}[1]{} \newcommand*{\printunsrtglossaryskipentry}{% \PackageError{glossaries-extra}{\string\printunsrtglossaryskipentry\space can only be used within \string\printunsrtglossaryentryprocesshook}{}% } \newcommand*{\@glsxtr@printunsrtglossaryskipentry}{% \let\glsxtr@process\@gobble } \newcommand*{\printunsrtglossarypredoglossary}{} \newcommand{\@printunsrt@glossary@handler}[1]{% \protected@xdef\glscurrententrylabel{#1}% \printunsrtglossaryhandler\glscurrententrylabel } \newcommand{\printunsrtglossaryhandler}[1]{% \glsxtrunsrtdo{#1}% } \newrobustcmd*{\glsxtriflabelinlist}[4]{% \protected@edef\@glsxtr@doiflabelinlist{\noexpand\@gls@ifinlist{#1}{#2}}% \@glsxtr@doiflabelinlist{#3}{#4}% } \newcommand{\print@op@unsrtglossaryunit}[2][]{% \s@printunsrtglossary[type=\glsdefaulttype,#1]{% \printunsrtglossaryunitsetup{#2}% }% } \newcommand*{\printunsrtglossaryunitsetup}[1]{% \renewcommand{\printunsrtglossaryhandler}[1]{% \glsxtrfieldxifinlist{##1}{record.#1}{\csuse{the#1}} {\glsxtrunsrtdo{##1}}% {}% }% \ifcsundef{theH#1}% {% \renewcommand*{\@glsxtrhypernameprefix}{record.#1.\csuse{the#1}.\@gobble}% }% {% \renewcommand*{\@glsxtrhypernameprefix}{record.#1.\csuse{theH#1}.\@gobble}% }% \renewcommand*{\glossarysection}[2][]{}% \appto\glossarypostamble{\glspar\medskip\glspar}% } \newcommand{\print@noop@unsrtglossaryunit}[2][]{% \PackageError{glossaries-extra}{\string\printunsrtglossaryunit\space requires the record=only or record=alsoindex package option}{}% } \newrobustcmd*{\@glsxtr@unsrt@getgrouptitle}[2]{% \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}% \@onelevel@sanitize\@glsxtr@titlelabel \ifcsdef{\@glsxtr@titlelabel} {\letcs{#2}{\@glsxtr@titlelabel}}% {\def#2{#1}}% } \newcommand{\glsxtrunsrtdo}{\@glsxtr@noidx@do} \newcommand*{\glsxtrgroupfield}{group} \newcommand*{\@glsxtr@checkgroup}[1]{% \def\@glsxtr@groupheading{}% \key@ifundefined{glossentry}{group}% {% \letcs{\@gls@sort}{glo@\glsdetoklabel{#1}@sort}% \expandafter\glo@grabfirst\@gls@sort{}{}\@nil }% {% \protected@edef\@glo@thislettergrp{% \csuse{glo@\glsdetoklabel{#1}@\glsxtrgroupfield}}% }% \ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}% {}% {% \ifdefempty{\@gls@currentlettergroup}{}% {\def\@glsxtr@groupheading{\glsgroupskip}}% \protected@eappto\@glsxtr@groupheading{% \noexpand\glsgroupheading{\expandonce\@glo@thislettergrp}% }% }% \let\@gls@currentlettergroup\@glo@thislettergrp } \newcommand*{\GlsXtrLocationField}{location} \newcommand{\@glsxtr@noidx@do}[1]{% \ifglsentryexists{#1}% {% \global\letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% \global\letcs{\@gls@location}{glo@\glsdetoklabel{#1}@\GlsXtrLocationField}% \gls@level=\numexpr\csuse{glo@\glsdetoklabel{#1}@level}+\@glsxtr@leveloffset\relax \ifnum\gls@level>0 \let\@glsxtr@ifischild\@firstoftwo \else \let\@glsxtr@ifischild\@secondoftwo \fi \@glsxtr@ifischild {% \ifdefvoid{\@gls@location}% {% \ifdefvoid{\@gls@loclist}% {% \expandafter\subglossentry\expandafter{\number\gls@level}{#1}{}% }% {% \expandafter\subglossentry\expandafter{\number\gls@level}{#1}% {% \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% }% }% }% {% \expandafter\subglossentry\expandafter {\number\gls@level}{#1}{\glossaryentrynumbers{\@gls@location}}% }% }% {% \ifdefvoid{\@gls@location}% {% \ifdefvoid{\@gls@loclist} {% \glossentry{#1}{}% }% {% \glossentry{#1}% {% \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% }% }% }% {% \glossentry{#1}% {% \glossaryentrynumbers{\@gls@location}% }% }% }% }% {}% } \newcount\@glsxtrnewgls@inner \newcommand*{\@glsxtr@providenewgls}{% \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@newglslike}[2]{}}% \let\@glsxtr@providenewgls\relax } \newcommand{\glsxtridentifyglslike}[2]{% \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off {}% {% \@glsxtr@providenewgls \protected@write\@auxout{}{\string\@glsxtr@newglslike{#1}{\string#2}}% }% } \newcommand*{\@glsxtrnewgls}[4]{% \ifdef{#3}% {% \PackageError{glossaries-extra}{Command \string#3\space already defined}{}% }% {% \glsxtridentifyglslike{#2}{#3}% \ifcsdef{@#4like@#2}% {% \advance\@glsxtrnewgls@inner by \@ne \def\@glsxtrnewgls@innercsname{@#4like\number\@glsxtrnewgls@inner @#2}% }% {\def\@glsxtrnewgls@innercsname{@#4like@#2}}% \expandafter\newrobustcmd\expandafter*\expandafter #3\expandafter{\expandafter\@gls@hyp@opt\csname\@glsxtrnewgls@innercsname\endcsname}% \ifstrempty{#1}% {% \expandafter\newcommand\expandafter*\csname\@glsxtrnewgls@innercsname\endcsname[2][]{% \new@ifnextchar[% {\csname @#4@\endcsname{##1}{#2##2}}% {\csname @#4@\endcsname{##1}{#2##2}[]}% }% }% {% \expandafter\newcommand\expandafter*\csname\@glsxtrnewgls@innercsname\endcsname[2][]{% \new@ifnextchar[% {\csname @#4@\endcsname{#1,##1}{#2##2}}% {\csname @#4@\endcsname{#1,##1}{#2##2}[]}% }% }% }% } \newrobustcmd*{\glsxtrnewgls}[3][]{% \@glsxtrnewgls{#1}{#2}{#3}{gls}% } \newrobustcmd*{\glsxtrnewglslike}[6][]{% \@glsxtrnewgls{#1}{#2}{#3}{gls}% \@glsxtrnewgls{#1}{#2}{#4}{glspl}% \@glsxtrnewgls{#1}{#2}{#5}{Gls}% \@glsxtrnewgls{#1}{#2}{#6}{Glspl}% } \newrobustcmd*{\glsxtrnewGLSlike}[4][]{% \@glsxtrnewgls{#1}{#2}{#3}{GLS}% \@glsxtrnewgls{#1}{#2}{#4}{GLSpl}% } \newrobustcmd*{\glsxtrnewrgls}[3][]{% \@glsxtrnewgls{#1}{#2}{#3}{rgls}% } \newrobustcmd*{\glsxtrnewrglslike}[6][]{% \@glsxtrnewgls{#1}{#2}{#3}{rgls}% \@glsxtrnewgls{#1}{#2}{#4}{rglspl}% \@glsxtrnewgls{#1}{#2}{#5}{rGls}% \@glsxtrnewgls{#1}{#2}{#6}{rGlspl}% } \newrobustcmd*{\glsxtrnewrGLSlike}[4][]{% \@glsxtrnewgls{#1}{#2}{#3}{rGLS}% \@glsxtrnewgls{#1}{#2}{#4}{rGLSpl}% } \newcommand*{\GlsXtrTotalRecordCount}[1]{% \ifcsdef{glo@\glsdetoklabel{#1}@recordcount}% {\csname glo@\glsdetoklabel{#1}@recordcount\endcsname}% {0}% } \newcommand*{\GlsXtrRecordCount}[2]{% \ifcsdef{glo@\glsdetoklabel{#1}@recordcount.#2}% {\csname glo@\glsdetoklabel{#1}@recordcount.#2\endcsname}% {0}% } \newcommand*{\GlsXtrLocationRecordCount}[3]{% \ifcsdef{glo@\glsdetoklabel{#1}@recordcount.#2.\glsxtrdetoklocation{#3}}% {\csname glo@\glsdetoklabel{#1}@recordcount.#2.\glsxtrdetoklocation{#3}\endcsname}% {0}% } \newcommand*{\glsxtrdetoklocation}[1]{#1} \newcommand*{\glsxtrenablerecordcount}{% \renewcommand*{\gls}{\rgls}% \renewcommand*{\Gls}{\rGls}% \renewcommand*{\glspl}{\rglspl}% \renewcommand*{\Glspl}{\rGlspl}% \renewcommand*{\GLS}{\rGLS}% \renewcommand*{\GLSpl}{\rGLSpl}% } \newcommand*{\glsxtrrecordtriggervalue}[1]{% \GlsXtrTotalRecordCount{#1}% } \newcommand*{\GlsXtrSetRecordCountAttribute}[2]{% \@for\@glsxtr@cat:=#1\do {% \ifdefempty{\@glsxtr@cat}{}% {% \glssetcategoryattribute{\@glsxtr@cat}{recordcount}{#2}% }% }% } \newcommand*{\glsxtrifrecordtrigger}[3]{% \glshasattribute{#1}{recordcount}% {% \ifnum\glsxtrrecordtriggervalue{#1}>\glsgetattribute{#1}{recordcount}\relax #3% \else #2% \fi }% {#3}% } \newcommand*{\@glsxtr@rglstrigger@record}[3]{% \protected@edef\glslabel{\glsdetoklabel{#2}}% \let\@gls@link@label\glslabel \def\@glsxtr@thevalue{}% \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% \def\@glsnumberformat{glstriggerrecordformat}% \protected@edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}% \protected@edef\glstype{\csname glo@\glslabel @type\endcsname}% \def\@glsxtr@thevalue{}% \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% \@gls@save@glslocal \glsxtrinitwrgloss \glslinkpresetkeys \setkeys{glslink}{#1}% \glslinkpostsetkeys \ifdefempty{\@glsxtr@thevalue}% {% \@gls@saveentrycounter }% {% \let\theglsentrycounter\@glsxtr@thevalue \def\theHglsentrycounter{\@glsxtr@theHvalue}% }% \glslinkwrcontent {% \ifglsxtrinitwrglossbefore \@do@wrglossary{#2}% \fi #3% \ifglsxtrinitwrglossbefore \else \@do@wrglossary{#2}% \fi }% \@gls@restore@glslocal \@gls@do@glsunset{#2}% } \newcommand*{\glstriggerrecordformat}[1]{} \newrobustcmd*{\rgls}{\@gls@hyp@opt\@rgls} \newcommand*{\@rgls}[2][]{% \new@ifnextchar[{\@rgls@{#1}{#2}}{\@rgls@{#1}{#2}[]}% } \def\@rgls@#1#2[#3]{% \glsxtrifrecordtrigger{#2}% {% \@glsxtr@rglstrigger@record{#1}{#2}{\rglsformat{#2}{#3}}% }% {% \@gls@{#1}{#2}[#3]% }% }% \newrobustcmd*{\rglspl}{\@gls@hyp@opt\@rglspl} \newcommand*{\@rglspl}[2][]{% \new@ifnextchar[{\@rglspl@{#1}{#2}}{\@rglspl@{#1}{#2}[]}% } \def\@rglspl@#1#2[#3]{% \glsxtrifrecordtrigger{#2}% {% \@glsxtr@rglstrigger@record{#1}{#2}{\rglsplformat{#2}{#3}}% }% {% \@glspl@{#1}{#2}[#3]% }% }% \newrobustcmd*{\rGls}{\@gls@hyp@opt\@rGls} \newcommand*{\@rGls}[2][]{% \new@ifnextchar[{\@rGls@{#1}{#2}}{\@rGls@{#1}{#2}[]}% } \def\@rGls@#1#2[#3]{% \glsxtrifrecordtrigger{#2}% {% \@glsxtr@rglstrigger@record{#1}{#2}{\rGlsformat{#2}{#3}}% }% {% \@Gls@{#1}{#2}[#3]% }% }% \newrobustcmd*{\rGlspl}{\@gls@hyp@opt\@rGlspl} \newcommand*{\@rGlspl}[2][]{% \new@ifnextchar[{\@rGlspl@{#1}{#2}}{\@rGlspl@{#1}{#2}[]}% } \def\@rGlspl@#1#2[#3]{% \glsxtrifrecordtrigger{#2}% {% \@glsxtr@rglstrigger@record{#1}{#2}{\rGlsplformat{#2}{#3}}% }% {% \@Glspl@{#1}{#2}[#3]% }% }% \newrobustcmd*{\rGLS}{\@gls@hyp@opt\@rGLS} \newcommand*{\@rGLS}[2][]{% \new@ifnextchar[{\@rGLS@{#1}{#2}}{\@rGLS@{#1}{#2}[]}% } \def\@rGLS@#1#2[#3]{% \glsxtrifrecordtrigger{#2}% {% \@glsxtr@rglstrigger@record{#1}{#2}{\rGLSformat{#2}{#3}}% }% {% \@GLS@{#1}{#2}[#3]% }% }% \newrobustcmd*{\rGLSpl}{\@gls@hyp@opt\@rGLSpl} \newcommand*{\@rGLSpl}[2][]{% \new@ifnextchar[{\@rGLSpl@{#1}{#2}}{\@rGLSpl@{#1}{#2}[]}% } \def\@rGLSpl@#1#2[#3]{% \glsxtrifrecordtrigger{#2}% {% \@glsxtr@rglstrigger@record{#1}{#2}{\rGLSplformat{#2}{#3}}% }% {% \@GLSpl@{#1}{#2}[#3]% }% }% \newcommand*{\rglsformat}[2]{% \glsifregular{#1} {\glsentryfirst{#1}}% {\ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}}#2% } \newcommand*{\rglsplformat}[2]{% \glsifregular{#1} {\glsentryfirstplural{#1}}% {\ifglshaslong{#1}{\glsentrylongplural{#1}}{\glsentryfirstplural{#1}}}#2% } \newcommand*{\rGlsformat}[2]{% \glsifregular{#1} {\Glsentryfirst{#1}}% {\ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}}#2% } \newcommand*{\rGlsplformat}[2]{% \glsifregular{#1} {\Glsentryfirstplural{#1}}% {\ifglshaslong{#1}{\Glsentrylongplural{#1}}{\Glsentryfirstplural{#1}}}#2% } \newcommand*{\rGLSformat}[2]{% \expandafter\mfirstucMakeUppercase\expandafter{\rglsformat{#1}{#2}}% } \newcommand*{\rGLSplformat}[2]{% \expandafter\mfirstucMakeUppercase\expandafter{\rglsplformat{#1}{#2}}% } \newcommand{\@glsxtr@do@inc@linkcount}{% \glsifattribute{\glslabel}{linkcount}{true}% {% \ifcsdef{c@glsxtr@linkcount@\glslabel}{}% {% \newcounter{glsxtr@linkcount@\glslabel}% \glshasattribute{\glslabel}{linkcountmaster}% {% \begingroup \edef\@glo@tmp{\endgroup\noexpand\@addtoreset{glsxtr@linkcount@\glslabel}% {\glsgetattribute{\glslabel}{linkcountmaster}}}% \@glo@tmp }% {}% }% \glsxtrinclinkcounter{glsxtr@linkcount@\glslabel}% }% {}% } \newcommand*{\glsxtrinclinkcounter}[1]{\stepcounter{#1}} \newcommand*{\GlsXtrLinkCounterValue}[1]{% \ifcsundef{c@glsxtr@linkcount@#1}{0}{\csname c@glsxtr@linkcount@#1\endcsname}% } \newcommand*{\GlsXtrTheLinkCounter}[1]{% \ifcsundef{theglsxtr@linkcount@#1}{0}% {\csname theglsxtr@linkcount@#1\endcsname}% } \newcommand*{\GlsXtrIfLinkCounterDef}[3]{% \ifcsundef{theglsxtr@linkcount@#1}{#3}{#2}% } \newcommand*{\GlsXtrLinkCounterName}[1]{glsxtr@linkcount@#1} \newcommand*{\GlsXtrEnableLinkCounting}[2][]{% \let\glsxtr@inc@linkcount\@glsxtr@do@inc@linkcount \@for\@glsxtr@label:=#2\do {% \glssetcategoryattribute{\@glsxtr@label}{linkcount}{true}% \ifstrempty{#1}{}% {% \ifcsundef{c@#1}% {\@nocounterr{#1}}% {\glssetcategoryattribute{\@glsxtr@label}{linkcountmaster}{#1}}% }% }% } \@onlypreamble\GlsXtrEnableLinkCounting \@ifpackageloaded{glossaries-accsupp} { \newcommand*{\glsaccessname}[1]{% \glsnameaccessdisplay {% \glsentryname{#1}% }% {#1}% } \newcommand*{\Glsaccessname}[1]{% \glsnameaccessdisplay {% \Glsentryname{#1}% }% {#1}% } \newcommand*{\GLSaccessname}[1]{% \glsnameaccessdisplay {% \mfirstucMakeUppercase{\glsentryname{#1}}% }% {#1}% } \newcommand*{\glsaccesstext}[1]{% \glstextaccessdisplay {% \glsentrytext{#1}% }% {#1}% } \newcommand*{\Glsaccesstext}[1]{% \glstextaccessdisplay {% \Glsentrytext{#1}% }% {#1}% } \newcommand*{\GLSaccesstext}[1]{% \glstextaccessdisplay {% \mfirstucMakeUppercase{\glsentrytext{#1}}% }% {#1}% } \newcommand*{\glsaccessplural}[1]{% \glspluralaccessdisplay {% \glsentryplural{#1}% }% {#1}% } \newcommand*{\Glsaccessplural}[1]{% \glspluralaccessdisplay {% \Glsentryplural{#1}% }% {#1}% } \newcommand*{\GLSaccessplural}[1]{% \glspluralaccessdisplay {% \mfirstucMakeUppercase{\glsentryplural{#1}}% }% {#1}% } \newcommand*{\glsaccessfirst}[1]{% \glsfirstaccessdisplay {% \glsentryfirst{#1}% }% {#1}% } \newcommand*{\Glsaccessfirst}[1]{% \glsfirstaccessdisplay {% \Glsentryfirst{#1}% }% {#1}% } \newcommand*{\GLSaccessfirst}[1]{% \glsfirstaccessdisplay {% \mfirstucMakeUppercase{\glsentryfirst{#1}}% }% {#1}% } \newcommand*{\glsaccessfirstplural}[1]{% \glsfirstpluralaccessdisplay {% \glsentryfirstplural{#1}% }% {#1}% } \newcommand*{\Glsaccessfirstplural}[1]{% \glsfirstpluralaccessdisplay {% \Glsentryfirstplural{#1}% }% {#1}% } \newcommand*{\GLSaccessfirstplural}[1]{% \glsfirstpluralaccessdisplay {% \mfirstucMakeUppercase{\glsentryfirstplural{#1}}% }% {#1}% } \newcommand*{\glsaccesssymbol}[1]{% \glssymbolaccessdisplay {% \glsentrysymbol{#1}% }% {#1}% } \newcommand*{\Glsaccesssymbol}[1]{% \glssymbolaccessdisplay {% \Glsentrysymbol{#1}% }% {#1}% } \newcommand*{\GLSaccesssymbol}[1]{% \glssymbolaccessdisplay {% \mfirstucMakeUppercase{\glsentrysymbol{#1}}% }% {#1}% } \newcommand*{\glsaccesssymbolplural}[1]{% \glssymbolpluralaccessdisplay {% \glsentrysymbolplural{#1}% }% {#1}% } \newcommand*{\Glsaccesssymbolplural}[1]{% \glssymbolpluralaccessdisplay {% \Glsentrysymbolplural{#1}% }% {#1}% } \newcommand*{\GLSaccesssymbolplural}[1]{% \glssymbolpluralaccessdisplay {% \mfirstucMakeUppercase{\glsentrysymbolplural{#1}}% }% {#1}% } \newcommand*{\glsaccessdesc}[1]{% \glsdescriptionaccessdisplay {% \glsentrydesc{#1}% }% {#1}% } \newcommand*{\Glsaccessdesc}[1]{% \glsdescriptionaccessdisplay {% \Glsentrydesc{#1}% }% {#1}% } \newcommand*{\GLSaccessdesc}[1]{% \glsdescriptionaccessdisplay {% \mfirstucMakeUppercase{\glsentrydesc{#1}}% }% {#1}% } \newcommand*{\glsaccessdescplural}[1]{% \glsdescriptionpluralaccessdisplay {% \glsentrydescplural{#1}% }% {#1}% } \newcommand*{\Glsaccessdescplural}[1]{% \glsdescriptionpluralaccessdisplay {% \Glsentrydescplural{#1}% }% {#1}% } \newcommand*{\GLSaccessdescplural}[1]{% \glsdescriptionpluralaccessdisplay {% \mfirstucMakeUppercase{\glsentrydescplural{#1}}% }% {#1}% } \newcommand*{\glsaccessshort}[1]{% \glsshortaccessdisplay {% \glsentryshort{#1}% }% {#1}% } \newcommand*{\Glsaccessshort}[1]{% \glsshortaccessdisplay {% \Glsentryshort{#1}% }% {#1}% } \newcommand*{\GLSaccessshort}[1]{% \glsshortaccessdisplay {% \mfirstucMakeUppercase{\glsentryshort{#1}}% }% {#1}% } \newcommand*{\glsaccessshortpl}[1]{% \glsshortpluralaccessdisplay {% \glsentryshortpl{#1}% }% {#1}% } \newcommand*{\Glsaccessshortpl}[1]{% \glsshortpluralaccessdisplay {% \Glsentryshortpl{#1}% }% {#1}% } \newcommand*{\GLSaccessshortpl}[1]{% \glsshortpluralaccessdisplay {% \mfirstucMakeUppercase{\glsentryshortpl{#1}}% }% {#1}% } \newcommand*{\glsaccesslong}[1]{% \glslongaccessdisplay{\glsentrylong{#1}}{#1}% } \newcommand*{\Glsaccesslong}[1]{% \glslongaccessdisplay{\Glsentrylong{#1}}{#1}% } \newcommand*{\GLSaccesslong}[1]{% \glslongaccessdisplay {% \mfirstucMakeUppercase{\glsentrylong{#1}}% }% {#1}% } \newcommand*{\glsaccesslongpl}[1]{% \glslongpluralaccessdisplay{\glsentrylongpl{#1}}{#1}% } \newcommand*{\Glsaccesslongpl}[1]{% \glslongpluralaccessdisplay{\Glsentrylongpl{#1}}{#1}% } \newcommand*{\GLSaccesslongpl}[1]{% \glslongpluralaccessdisplay {% \mfirstucMakeUppercase{\glsentrylongpl{#1}}% }% {#1}% } \define@key{glsxtrabbrv}{access}{% \def\@gls@nameaccess{#1}% } \define@key{glsxtrabbrv}{textaccess}{% \def\@gls@textaccess{#1}% } \define@key{glsxtrabbrv}{pluralaccess}{% \def\@gls@pluralaccess{#1}% } \define@key{glsxtrabbrv}{firstaccess}{% \def\@gls@firstaccess{#1}% } \define@key{glsxtrabbrv}{firstpluralaccess}{% \def\@gls@firstpluralaccess{#1}% } \define@key{glsxtrabbrv}{shortaccess}{% \def\@gls@shortaccess{#1}% } \define@key{glsxtrabbrv}{shortpluralaccess}{% \def\@gls@shortaccesspl{#1}% } \define@key{glsxtrabbrv}{longaccess}{% \def\@gls@longaccess{#1}% } \define@key{glsxtrabbrv}{shortlonglaccess}{% \def\@gls@longaccesspl{#1}% } \newcommand*{\@gls@initaccesskeys}{% \def\@gls@nameaccess{}% \def\@gls@textaccess{}% \def\@gls@pluralaccess{}% \def\@gls@firstaccess{}% \def\@gls@firstpluralaccess{}% \def\@gls@shortaccess{}% \def\@gls@shortaccesspl{}% \def\@gls@longaccess{}% \def\@gls@longaccesspl{}% } \newcommand*{\@gls@ifaccessattribute@set}[3]{% \glsifcategoryattribute{\glscategorylabel}{access#1}{true}% {#2}% {% \glsifcategoryattribute{\glscategorylabel}{access#1}{false}% {#3}% {% \glsifcategoryattribute{\glscategorylabel}{#1}{true}% {#2}% {#3}% }% }% } \def\glsdefaultshortaccess#1#2{#1 (#2)} \newcommand{\glsxtrassignactualsetup}{% \let\@\empty \let\emph\@firstofone \let\textbf\@firstofone \let\textmd\@firstofone \let\textit\@firstofone \let\textsl\@firstofone \let\textsc\@firstofone \let\textrm\@firstofone \let\textsf\@firstofone \let\texttt\@firstofone } \ifdef\pdfstringdef { \newcommand{\@gls@assign@actual}{% \begingroup \glsxtrassignactualsetup \pdfstringdef\@gls@actualshort{\glsxtrorgshort}% \pdfstringdef\@gls@actuallong{\glsxtrorglong}% \pdfstringdef\@gls@actualshortpl{\@gls@shortpl}% \pdfstringdef\@gls@actuallongpl{\@gls@longpl}% \protected@edef\@gls@tmp{\endgroup \def\noexpand\@gls@actualshort{\expandonce\@gls@actualshort}% \def\noexpand\@gls@actuallong{\expandonce\@gls@actuallong}% \def\noexpand\@gls@actualshortpl{\expandonce\@gls@actualshortpl}% \def\noexpand\@gls@actuallongpl{\expandonce\@gls@actuallongpl}% }% \@gls@tmp } } { \newcommand{\@gls@assign@actual}{% \begingroup \glsxtrassignactualsetup \protected@edef\@gls@tmp{\endgroup \def\noexpand\@gls@actualshort{\glsxtrorgshort}% \def\noexpand\@gls@actuallong{\glsxtrorglong}% \def\noexpand\@gls@actualshortpl{\@gls@shortpl}% \def\noexpand\@gls@actuallongpl{\@gls@longpl}% }% \@gls@tmp } } \newcommand{\@gls@setup@default@access}{% \@gls@assign@actual \ifdefempty\@gls@shortaccess {% \@gls@ifaccessattribute@set{insertdots}% {% \expandafter\@glsxtr@insertdots\expandafter\@gls@actualshort\expandafter {\@gls@actualshort}% }% {}% \ifdefempty\@gls@longaccess {% \protected@edef\@gls@shortaccess{\glsdefaultshortaccess {\expandonce\@gls@actuallong}{\expandonce\@gls@actualshort}}% }% {% \protected@edef\@gls@shortaccess{\glsdefaultshortaccess {\expandonce\@gls@longaccess}{\expandonce\@gls@actualshort}}% }% \eappto\ExtraCustomAbbreviationFields{shortaccess={\@gls@shortaccess},}% \ifdefempty\@gls@shortaccesspl {% \@gls@ifaccessattribute@set{aposplural}% {% \expandafter\def\expandafter\@gls@shortaccesspl\expandafter{% \@gls@actualshort'\glsxtrabbrvpluralsuffix}% }% {% \@gls@ifaccessattribute@set{noshortplural}% {% \let\@gls@shortaccesspl\@gls@shortaccess }% {% \let\@gls@shortaccesspl\@gls@actualshortpl }% }% \ifdefempty\@gls@longaccesspl {% \protected@edef\@gls@shortaccesspl{\glsdefaultshortaccess {\expandonce\@gls@actuallongpl}{\expandonce\@gls@actualshortpl}}% }% {% \protected@edef\@gls@shortaccesspl{\glsdefaultshortaccess {\expandonce\@gls@longaccesspl}{\expandonce\@gls@actualshort}}% }% \eappto\ExtraCustomAbbreviationFields{shortpluralaccess={\@gls@shortaccesspl},}% }% {}% }% {% \ifdefempty\@gls@shortaccesspl {\let\@gls@shortaccesspl\@gls@shortaccess}% {}% }% \ifdefempty\@gls@nameaccess {% \glsifcategoryattribute{\glscategorylabel}{nameshortaccess}{true}% {% \eappto\ExtraCustomAbbreviationFields{access={\@gls@shortaccess},}% }% {}% }% {}% \ifdefempty\@gls@textaccess {% \glsifcategoryattribute{\glscategorylabel}{textshortaccess}{true}% {% \eappto\ExtraCustomAbbreviationFields{textaccess={\@gls@shortaccess},}% }% {}% }% {}% \ifdefempty\@gls@pluralaccess {% \glsifcategoryattribute{\glscategorylabel}{textshortaccess}{true}% {% \eappto\ExtraCustomAbbreviationFields{% pluralaccess={\@gls@shortaccesspl},% }% }% {}% }% {}% \ifdefempty\@gls@firstaccess {% \glsifcategoryattribute{\glscategorylabel}{firstshortaccess}{true}% {% \eappto\ExtraCustomAbbreviationFields{firstaccess={\@gls@shortaccess},}% }% {}% }% {}% \ifdefempty\@gls@firstpluralaccess {% \glsifcategoryattribute{\glscategorylabel}{firstshortaccess}{true}% {% \eappto\ExtraCustomAbbreviationFields{% firstpluralaccess={\@gls@shortaccesspl},% }% }% {}% }% {}% } \newcommand*{\glsxtrprovideaccsuppcmd}[2]{% \ifcsundef{glsxtr#1#2accsupp}% {\csdef{glsxtr#1#2accsupp}{\glsshortaccsupp}}% {}% } \newcommand*{\glsxtrAccSuppAbbrSetNoLongAttrs}[1]{% \glssetcategoryattribute{#1}{nameshortaccess}{true}% \glssetcategoryattribute{#1}{firstshortaccess}{true}% \glssetcategoryattribute{#1}{textshortaccess}{true}% \glsxtrprovideaccsuppcmd{#1}{name}% \glsxtrprovideaccsuppcmd{#1}{first}% \glsxtrprovideaccsuppcmd{#1}{firstpl}% \glsxtrprovideaccsuppcmd{#1}{text}% \glsxtrprovideaccsuppcmd{#1}{plural}% } \newcommand*{\glsxtrAccSuppAbbrSetFirstLongAttrs}[1]{% \glssetcategoryattribute{#1}{nameshortaccess}{true}% \glssetcategoryattribute{#1}{textshortaccess}{true}% \glsxtrprovideaccsuppcmd{#1}{name}% \glsxtrprovideaccsuppcmd{#1}{text}% \glsxtrprovideaccsuppcmd{#1}{plural}% } \newcommand*{\glsxtrAccSuppAbbrSetTextShortAttrs}[1]{% \glssetcategoryattribute{#1}{textshortaccess}{true}% \glsxtrprovideaccsuppcmd{#1}{text}% \glsxtrprovideaccsuppcmd{#1}{plural}% } \newcommand*{\glsxtrAccSuppAbbrSetNameShortAttrs}[1]{% \glssetcategoryattribute{#1}{nameshortaccess}{true}% \glsxtrprovideaccsuppcmd{#1}{name}% } \newcommand*{\glsxtrAccSuppAbbrSetNameLongAttrs}[1]{% \glssetcategoryattribute{#1}{firstshortaccess}{true}% \glssetcategoryattribute{#1}{textshortaccess}{true}% \glsxtrprovideaccsuppcmd{#1}{first}% \glsxtrprovideaccsuppcmd{#1}{firstpl}% \glsxtrprovideaccsuppcmd{#1}{text}% \glsxtrprovideaccsuppcmd{#1}{plural}% } } { \newcommand*{\glsaccessname}[1]{\glsentryname{#1}} \newcommand*{\Glsaccessname}[1]{\Glsentryname{#1}} \newcommand*{\GLSaccessname}[1]{% \protect\mfirstucMakeUppercase{\glsentryname{#1}}} \newcommand*{\glsaccesstext}[1]{\glsentrytext{#1}} \newcommand*{\Glsaccesstext}[1]{\Glsentrytext{#1}} \newcommand*{\GLSaccesstext}[1]{% \protect\mfirstucMakeUppercase{\glsentrytext{#1}}} \newcommand*{\glsaccessplural}[1]{\glsentryplural{#1}} \newcommand*{\Glsaccessplural}[1]{\Glsentryplural{#1}} \newcommand*{\GLSaccessplural}[1]{% \protect\mfirstucMakeUppercase{\glsentryplural{#1}}} \newcommand*{\glsaccessfirst}[1]{\glsentryfirst{#1}} \newcommand*{\Glsaccessfirst}[1]{\Glsentryfirst{#1}} \newcommand*{\GLSaccessfirst}[1]{% \protect\mfirstucMakeUppercase{\glsentryfirst{#1}}} \newcommand*{\glsaccessfirstplural}[1]{\glsentryfirstplural{#1}} \newcommand*{\Glsaccessfirstplural}[1]{\Glsentryfirstplural{#1}} \newcommand*{\GLSaccessfirstplural}[1]{% \protect\mfirstucMakeUppercase{\glsentryfirstplural{#1}}} \newcommand*{\glsaccesssymbol}[1]{\glsentrysymbol{#1}} \newcommand*{\Glsaccesssymbol}[1]{\Glsentrysymbol{#1}} \newcommand*{\GLSaccesssymbol}[1]{% \protect\mfirstucMakeUppercase{\glsentrysymbol{#1}}} \newcommand*{\glsaccesssymbolplural}[1]{\glsentrysymbolplural{#1}} \newcommand*{\Glsaccesssymbolplural}[1]{\Glsentrysymbolplural{#1}} \newcommand*{\GLSaccesssymbolplural}[1]{% \protect\mfirstucMakeUppercase{\glsentrysymbolplural{#1}}} \newcommand*{\glsaccessdesc}[1]{\glsentrydesc{#1}} \newcommand*{\Glsaccessdesc}[1]{\Glsentrydesc{#1}} \newcommand*{\GLSaccessdesc}[1]{% \protect\mfirstucMakeUppercase{\glsentrydesc{#1}}} \newcommand*{\glsaccessdescplural}[1]{\glsentrydescplural{#1}} \newcommand*{\Glsaccessdescplural}[1]{\Glsentrydescplural{#1}} \newcommand*{\GLSaccessdescplural}[1]{% \protect\mfirstucMakeUppercase{\glsentrydescplural{#1}}} \newcommand*{\glsaccessshort}[1]{\glsentryshort{#1}} \newcommand*{\Glsaccessshort}[1]{\Glsentryshort{#1}} \newcommand*{\GLSaccessshort}[1]{% \protect\mfirstucMakeUppercase{\glsentryshort{#1}}} \newcommand*{\glsaccessshortpl}[1]{\glsentryshortpl{#1}} \newcommand*{\Glsaccessshortpl}[1]{\Glsentryshortpl{#1}} \newcommand*{\GLSaccessshortpl}[1]{% \protect\mfirstucMakeUppercase{\glsentryshortpl{#1}}} \newcommand*{\glsaccesslong}[1]{\glsentrylong{#1}} \newcommand*{\Glsaccesslong}[1]{\Glsentrylong{#1}} \newcommand*{\GLSaccesslong}[1]{% \protect\mfirstucMakeUppercase{\glsentrylong{#1}}} \newcommand*{\glsaccesslongpl}[1]{\glsentrylongpl{#1}} \newcommand*{\Glsaccesslongpl}[1]{\Glsentrylongpl{#1}} \newcommand*{\GLSaccesslongpl}[1]{% \protect\mfirstucMakeUppercase{\glsentrylongpl{#1}}} \newcommand*{\@gls@initaccesskeys}{} \newcommand{\@gls@setup@default@access}{} \newcommand*{\glsxtrAccSuppAbbrSetNoLongAttrs}[1]{} \newcommand*{\glsxtrAccSuppAbbrSetFirstLongAttrs}[1]{} \newcommand*{\glsxtrAccSuppAbbrSetTextShortAttrs}[1]{} \newcommand*{\glsxtrAccSuppAbbrSetNameShortAttrs}[1]{} \newcommand*{\glsxtrAccSuppAbbrSetNameLongAttrs}[1]{} } \glsaddstoragekey{category}{general}{\glscategory} \newcommand{\glsifcategory}[4]{% \ifglsfieldeq{#1}{category}{#2}{#3}{#4}% } \newcommand*{\glssetcategoryattribute}[3]{% \csdef{@glsxtr@categoryattr@@#1@#2}{#3}% } \newcommand*{\glssetcategoriesattribute}[3]{% \@for\@gls@thiscatlabel:=#1\do{% \csgdef{@glsxtr@categoryattr@@\@gls@thiscatlabel @#2}{#3}% }% } \newcommand*{\glssetcategoriesattributes}[3]{% {% \@for\@gls@thisattrlabel:=#2\do{% \glssetcategoriesattribute{#1}{\@gls@thisattrlabel}{#3}% }% }% } \newcommand*{\glsgetcategoryattribute}[2]{% \csuse{@glsxtr@categoryattr@@#1@#2}% } \newcommand*{\glsunsetcategoryattribute}[2]{% \csundef{@glsxtr@categoryattr@@#1@#2}% } \newcommand*{\glshascategoryattribute}[4]{% \ifcsvoid{@glsxtr@categoryattr@@#1@#2}{#4}{#3}% } \newcommand*{\glssetattribute}[3]{% \glssetcategoryattribute{\glscategory{#1}}{#2}{#3}% } \newcommand*{\glsgetattribute}[2]{% \glsgetcategoryattribute{\glscategory{#1}}{#2}% } \newcommand*{\glshasattribute}[4]{% \ifglsentryexists{#1}% {\glshascategoryattribute{\glscategory{#1}}{#2}{#3}{#4}}% {#4}% } \newcommand{\glsifcategoryattribute}[5]{% \ifcsundef{@glsxtr@categoryattr@@#1@#2}% {#5}% {\ifcsstring{@glsxtr@categoryattr@@#1@#2}{#3}{#4}{#5}}% } \newcommand{\glsifattribute}[5]{% \ifglsentryexists{#1}% {\glsifcategoryattribute{\glscategory{#1}}{#2}{#3}{#4}{#5}}% {#5}% } \glssetcategoryattribute{general}{regular}{true} \glssetcategoryattribute{acronym}{regular}{true} \newcommand*{\glssetregularcategory}[1]{% \glssetcategoryattribute{#1}{regular}{true}% } \newcommand{\glsifregularcategory}[3]{% \glsifcategoryattribute{#1}{regular}{true}{#2}{#3}% } \newcommand{\glsifnotregularcategory}[3]{% \glsifcategoryattribute{#1}{regular}{false}{#2}{#3}% } \newcommand{\glsifregular}[3]{% \glsifregularcategory{\glscategory{#1}}{#2}{#3}% } \newcommand{\glsifnotregular}[3]{% \glsifnotregularcategory{\glscategory{#1}}{#2}{#3}% } \newcommand{\glsforeachincategory}[5][\@glo@types]{% \forallglossaries[#1]{#3}% {% \forglsentries[#3]{#4}% {% \glsifcategory{#4}{#2}{#5}{}% }% }% } \newcommand{\glsforeachwithattribute}[6][\@glo@types]{% \forallglossaries[#1]{#4}% {% \forglsentries[#4]{#5}% {% \glsifattribute{#5}{#2}{#3}{#6}{}% }% }% } \ifdef\newterm {% \renewcommand*{\newterm}[2][]{% \newglossaryentry{#2}% {type={index},category=index,name={#2},% description={\glsxtrpostdescription\nopostdesc},#1}% } \glssetcategoryattribute{index}{regular}{true} \newcommand*{\glsxtrpostdescindex}{} } {} \ifdef\printsymbols {% \newcommand*{\glsxtrnewsymbol}[3][]{% \newglossaryentry{#2}{name={#3},sort={#2},type=symbols,category=symbol,#1}% } \glssetcategoryattribute{symbol}{regular}{true} \newcommand*{\glsxtrpostdescsymbol}{} } {} \ifdef\printnumbers {% \ifdef\printnumbers \newcommand*{\glsxtrnewnumber}[3][]{% \newglossaryentry{#2}{name={#3},sort={#2},type=numbers,category=number,#1}% } \glssetcategoryattribute{number}{regular}{true} \newcommand*{\glsxtrpostdescnumber}{} } {} \newcommand*{\glsxtrsetcategory}[2]{% \@for\@glsxtr@label:=#1\do {% \glsfieldxdef{\@glsxtr@label}{category}{#2}% }% } \newcommand*{\glsxtrsetcategoryforall}[2]{% \forallglossaries[#1]{\@glsxtr@type}{% \forglsentries[\@glsxtr@type]{\@glsxtr@label}% {% \glsfieldxdef{\@glsxtr@label}{category}{#2}% }% }% } \newcommand*{\glsxtrfieldtitlecase}[2]{% \expandafter\glsxtrfieldtitlecasecs\expandafter {\csname glo@\glsdetoklabel{#1}@#2\endcsname}% } \ifdef\glscapitalisewords { \newcommand*{\glsxtrfieldtitlecasecs}[1]{% \expandafter\glscapitalisewords\expandafter{#1}} } { \newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisewords{#1}} } \@ifpackageloaded{glossaries-accsupp} { \renewcommand*{\glossentrydesc}[1]{% \glsdoifexistsorwarn{#1}% {% \glssetabbrvfmt{\glscategory{#1}}% \glshasattribute{#1}{glossdescfont}% {% \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossdescfont}}% \ifcsdef{\@glsxtr@attrval}% {% \letcs{\@glsxtr@glossdescfont}{\@glsxtr@attrval}% }% {% \GlossariesExtraWarning{Unknown control sequence name `\@glsxtr@attrval' supplied in glossdescfont attribute for entry `#1'. Ignoring}% \let\@glsxtr@glossdescfont\@firstofone }% }% {\let\@glsxtr@glossdescfont\@firstofone}% \glsifattribute{#1}{glossdesc}{firstuc}% {% \@glsxtr@glossdescfont{\Glsaccessdesc{#1}}% }% {% \glsifattribute{#1}{glossdesc}{title}% {% \@glsxtr@do@titlecaps@warn \glsdescriptionaccessdisplay {% \@glsxtr@glossdescfont{\glsxtrfieldtitlecase{#1}{desc}}% }% {#1}% }% {% \@glsxtr@glossdescfont{\glsaccessdesc{#1}}% }% }% }% } } { \renewcommand*{\glossentrydesc}[1]{% \glsdoifexistsorwarn{#1}% {% \glssetabbrvfmt{\glscategory{#1}}% \glshasattribute{#1}{glossdescfont}% {% \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossdescfont}}% \ifcsdef{\@glsxtr@attrval}% {% \letcs{\@glsxtr@glossdescfont}{\@glsxtr@attrval}% }% {% \GlossariesExtraWarning{Unknown control sequence name `\@glsxtr@attrval' supplied in glossdescfont attribute for entry `#1'. Ignoring}% \let\@glsxtr@glossdescfont\@firstofone }% }% {\let\@glsxtr@glossdescfont\@firstofone}% \glsifattribute{#1}{glossdesc}{firstuc}% {% \@glsxtr@glossdescfont{\Glsentrydesc{#1}}% }% {% \glsifattribute{#1}{glossdesc}{title}% {% \@glsxtr@do@titlecaps@warn \@glsxtr@glossdescfont{\glsxtrfieldtitlecase{#1}{desc}}% }% {% \@glsxtr@glossdescfont{\glsentrydesc{#1}}% }% }% }% } } \@ifpackageloaded{glossaries-accsupp} { \renewcommand*{\glossentryname}[1]{% \@glsdoifexistsorwarn{#1}% {% \glssetabbrvfmt{\glscategory{#1}}% \glshasattribute{#1}{glossnamefont}% {% \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}% \ifcsdef{\@glsxtr@attrval}% {% \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}% }% {% \GlossariesExtraWarning{Unknown control sequence name `\@glsxtr@attrval' supplied in glossnamefont attribute for entry `#1'. Reverting to default \string\glsnamefont}% \let\@glsxtr@glossnamefont\glsnamefont }% }% {\let\@glsxtr@glossnamefont\glsnamefont}% \glsifattribute{#1}{glossname}{firstuc}% {% \glsnameaccessdisplay {% \@glsxtr@glossnamefont{\Glsentryname{#1}}% }% {#1}% }% {% \glsifattribute{#1}{glossname}{title}% {% \@glsxtr@do@titlecaps@warn \glsnameaccessdisplay {% \@glsxtr@glossnamefont{\glsxtrfieldtitlecase{#1}{name}}% }% {#1}% }% {% \glsifattribute{#1}{glossname}{uc}% {% \glsnameaccessdisplay {% \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}% }% {#1}% }% {% \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% \glsnameaccessdisplay {% \expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}% }% {#1}% }% }% }% \glsxtrpostnamehook{#1}% }% } } { \renewcommand*{\glossentryname}[1]{% \@glsdoifexistsorwarn{#1}% {% \glssetabbrvfmt{\glscategory{#1}}% \glshasattribute{#1}{glossnamefont}% {% \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}% \ifcsdef{\@glsxtr@attrval}% {% \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}% }% {% \GlossariesExtraWarning{Unknown control sequence name `\@glsxtr@attrval' supplied in glossnamefont attribute for entry `#1'. Reverting to default \string\glsnamefont}% \let\@glsxtr@glossnamefont\glsnamefont }% }% {\let\@glsxtr@glossnamefont\glsnamefont}% \glsifattribute{#1}{glossname}{firstuc}% {% \@glsxtr@glossnamefont{\Glsentryname{#1}}% }% {% \glsifattribute{#1}{glossname}{title}% {% \@glsxtr@do@titlecaps@warn \@glsxtr@glossnamefont{\glsxtrfieldtitlecase{#1}{name}}% }% {% \glsifattribute{#1}{glossname}{uc}% {% \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}% }% {% \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% \expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}% }% }% }% \glsxtrpostnamehook{#1}% }% } } \@ifpackageloaded{glossaries-accsupp} { \renewcommand*{\Glossentryname}[1]{% \@glsdoifexistsorwarn{#1}% {% \glssetabbrvfmt{\glscategory{#1}}% \glshasattribute{#1}{glossnamefont}% {% \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}% \ifcsdef{\@glsxtr@attrval}% {% \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}% }% {% \GlossariesExtraWarning{Unknown control sequence name `\@glsxtr@attrval' supplied in glossnamefont attribute for entry `#1'. Reverting to default \string\glsnamefont}% \let\@glsxtr@glossnamefont\glsnamefont }% }% {\let\@glsxtr@glossnamefont\glsnamefont}% \glsnameaccessdisplay {% \@glsxtr@glossnamefont{\Glsentryname{#1}}% }% {#1}% \glsxtrpostnamehook{#1}% }% } } { \renewcommand*{\Glossentryname}[1]{% \@glsdoifexistsorwarn{#1}% {% \glssetabbrvfmt{\glscategory{#1}}% \glshasattribute{#1}{glossnamefont}% {% \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}% \ifcsdef{\@glsxtr@attrval}% {% \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}% }% {% \GlossariesExtraWarning{Unknown control sequence name `\@glsxtr@attrval' supplied in glossnamefont attribute for entry `#1'. Reverting to default \string\glsnamefont}% \let\@glsxtr@glossnamefont\glsnamefont }% }% {\let\@glsxtr@glossnamefont\glsnamefont}% \@glsxtr@glossnamefont{\Glsentryname{#1}}% \glsxtrpostnamehook{#1}% }% } } \newcommand*{\glsxtrpostnamehook}[1]{% \let\@glsnumberformat\@glsxtr@defaultnumberformat \glsxtrdoautoindexname{#1}{indexname}% \glsextrapostnamehook{#1}% \csuse{glsxtrpostname\glscategory{#1}}% } \newcommand*{\glsextrapostnamehook}[1]{}% \newcommand*{\glsdefpostname}[2]{% \csdef{glsxtrpostname#1}{#2}% } \@ifpackageloaded{glossaries-accsupp} { \newcommand*{\glsxtr@setaccessdisplay}[1]{% \ifcsdef{gls#1accessdisplay}% {\letcs\@glsxtr@accessdisplay{gls#1accessdisplay}}% {% \protected@edef\@gls@thisval{#1}% \@for\@gls@map:=\@gls@keymap\do{% \protected@edef\@this@key{\expandafter\@secondoftwo\@gls@map}% \ifdefequal{\@this@key}{\@gls@thisval}% {% \protected@edef\@gls@thisval{\expandafter\@firstoftwo\@gls@map}% \@endfortrue }% {}% }% \ifcsdef{gls\@gls@thisval accessdisplay}% {\letcs\@glsxtr@accessdisplay{gls\@gls@thisval accessdisplay}}% {\let\@glsxtr@accessdisplay\@firstoftwo}% }% } } {% \newcommand*{\glsxtr@setaccessdisplay}[1]{% \let\@glsxtr@accessdisplay\@firstoftwo} } \newrobustcmd*{\glossentrynameother}[2]{% \@glsdoifexistsorwarn{#1}% {% \glsxtr@setaccessdisplay{#2}% \glssetabbrvfmt{\glscategory{#1}}% \glshasattribute{#1}{glossnamefont}% {% \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}% \ifcsdef{\@glsxtr@attrval}% {% \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}% }% {% \GlossariesExtraWarning{Unknown control sequence name `\@glsxtr@attrval' supplied in glossnamefont attribute for entry `#1'. Reverting to default \string\glsnamefont}% \let\@glsxtr@glossnamefont\glsnamefont }% }% {\let\@glsxtr@glossnamefont\glsnamefont}% \glsifattribute{#1}{glossname}{firstuc}% {% \@glsxtr@accessdisplay {\@glsxtr@glossnamefont{\@Gls@entry@field{#1}{#2}}}% {#1}% }% {% \glsifattribute{#1}{glossname}{title}% {% \@glsxtr@do@titlecaps@warn \@glsxtr@accessdisplay {\@glsxtr@glossnamefont{\glsxtrfieldtitlecase{#1}{#2}}}% {#1}% }% {% \glsifattribute{#1}{glossname}{uc}% {% \letcs{\glo@name}{glo@\glsdetoklabel{#1}@#2}% \@glsxtr@accessdisplay {\@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}}% {#1}% }% {% \letcs{\glo@name}{glo@\glsdetoklabel{#1}@#2}% \@glsxtr@accessdisplay {\expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}}% {#1}% }% }% }% \glsxtrpostnamehook{#1}% }% } \newif\if@glsxtr@format@override \@glsxtr@format@overridefalse \@ifpackageloaded{hyperref} { \ifHy@hyperindex \newcommand*{\GlsXtrEnableIndexFormatOverride}{% \@glsxtr@format@overridetrue \appto\theindex{\let\glshypernumber\@firstofone}% } \else \newcommand*{\GlsXtrEnableIndexFormatOverride}{% \@glsxtr@format@overridetrue \appto\theindex{\let\glshypernumber\hyperpage}% } \fi } { \newcommand*{\GlsXtrEnableIndexFormatOverride}{% \@glsxtr@format@overridetrue } } \@onlypreamble\GlsXtrEnableIndexFormatOverride \newcommand*{\glsxtrdoautoindexname}[2]{% \glshasattribute{#1}{#2}% {% \@glsxtr@autoindex@setname{#1}% \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{#2}}% \if@glsxtr@format@override \ifx\@glsnumberformat\@glsxtr@defaultnumberformat \else \let\@glsxtr@attrval\@glsnumberformat \fi \fi \ifdefstring{\@glsxtr@attrval}{true}% {}% {\protected@eappto\@glo@name{\@glsxtr@autoindex@encap\@glsxtr@attrval}}% \expandafter\glsxtrautoindex\expandafter{\@glo@name}% }% {}% } \newcommand*{\glsxtrautoindex}{\index} \newcommand{\glsxtrautoindexesc}{% \@gls@checkmkidxchars\@glo@sort \@glsxtr@autoindex@doextra@esc\@glo@sort } \newcommand*{\@glsxtr@autoindex@setname}[1]{% \protected@edef\@glo@name{\glsxtrautoindexentry{#1}}% \glsxtrautoindexassignsort{\@glo@sort}{#1}% \glsxtrautoindexesc \epreto\@glo@name{\@glo@sort\@glsxtr@autoindex@at}% } \newcommand*{\glsxtrautoindexentry}[1]{\string\glsentryname{#1}} \newcommand*{\glsxtrautoindexassignsort}[2]{% \glsletentryfield{#1}{#2}{sort}% } \newcommand*{\@glsxtr@autoindex@doextra@esc}[1]{% \ifx\@glsxtr@autoindex@esc\@gls@quotechar \else \def\@gls@checkedmkidx{}% \edef\@@glsxtr@checkspch{% \noexpand\@glsxtr@autoindex@escquote\expandonce{#1}% \noexpand\@empty\@glsxtr@autoindex@esc\noexpand\@nnil \@glsxtr@autoindex@esc\noexpand\@empty\noexpand\@glsxtr@endescspch}% \@@glsxtr@checkspch \let#1\@gls@checkedmkidx\relax \fi \ifx\@glsxtr@autoindex@at\@gls@actualchar \else \def\@gls@checkedmkidx{}% \edef\@@glsxtr@checkspch{% \noexpand\@glsxtr@autoindex@escat\expandonce{#1}% \noexpand\@empty\@glsxtr@autoindex@at\noexpand\@nnil \@glsxtr@autoindex@at\noexpand\@empty\noexpand\@glsxtr@endescspch}% \@@glsxtr@checkspch \let#1\@gls@checkedmkidx\relax \fi \ifx\@glsxtr@autoindex@level\@gls@levelchar \else \def\@gls@checkedmkidx{}% \edef\@@glsxtr@checkspch{% \noexpand\@glsxtr@autoindex@esclevel\expandonce{#1}% \noexpand\@empty\@glsxtr@autoindex@level\noexpand\@nnil \@glsxtr@autoindex@level\noexpand\@empty\noexpand\@glsxtr@endescspch}% \@@glsxtr@checkspch \let#1\@gls@checkedmkidx\relax \fi \ifx\@glsxtr@autoindex@encap\@gls@encapchar \else \def\@gls@checkedmkidx{}% \edef\@@glsxtr@checkspch{% \noexpand\@glsxtr@autoindex@escencap\expandonce{#1}% \noexpand\@empty\@glsxtr@autoindex@encap\noexpand\@nnil \@glsxtr@autoindex@encap\noexpand\@empty\noexpand\@glsxtr@endescspch}% \@@glsxtr@checkspch \let#1\@gls@checkedmkidx\relax \fi } \newcommand*{\@glsxtr@autoindex@at}{} \newcommand*{\GlsXtrSetActualChar}[1]{% \gdef\@glsxtr@autoindex@at{#1}% \def\@glsxtr@autoindex@escat##1#1##2#1##3\@glsxtr@endescspch{% \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@escat}{##1}{##2}{##3}% }% } \@onlypreamble\GlsXtrSetActualChar \makeatother \GlsXtrSetActualChar{@} \makeatletter \newcommand*{\@glsxtr@autoindex@encap}{} \newcommand*{\GlsXtrSetEncapChar}[1]{% \gdef\@glsxtr@autoindex@encap{#1}% \def\@glsxtr@autoindex@escencap##1#1##2#1##3\@glsxtr@endescspch{% \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@escencap}{##1}{##2}{##3}% }% } \GlsXtrSetEncapChar{|} \@onlypreamble\GlsXtrSetEncapChar \newcommand*{\@glsxtr@autoindex@level}{} \newcommand*{\GlsXtrSetLevelChar}[1]{% \gdef\@glsxtr@autoindex@level{#1}% \def\@glsxtr@autoindex@esclevel##1#1##2#1##3\@glsxtr@endescspch{% \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@esclevel}{##1}{##2}{##3}% }% } \GlsXtrSetLevelChar{!} \@onlypreamble\GlsXtrSetLevelChar \newcommand*{\@glsxtr@autoindex@esc}{"} \newcommand*{\GlsXtrSetEscChar}[1]{% \gdef\@glsxtr@autoindex@esc{#1}% \def\@glsxtr@autoindex@escquote##1#1##2#1##3\@glsxtr@endescspch{% \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@escquote}{##1}{##2}{##3}% }% } \GlsXtrSetEscChar{"} \@onlypreamble\GlsXtrSetEscChar \ifdef\actualchar {\expandafter\GlsXtrSetActualChar\expandafter{\actualchar}} {} \ifdef\quotechar {\expandafter\GlsXtrSetEscChar\expandafter{\quotechar}} {} \ifdef\levelchar {\expandafter\GlsXtrSetLevelChar\expandafter{\levelchar}} {} \ifdef\encapchar {\expandafter\GlsXtrSetEncapChar\expandafter{\encapchar}} {} \def\@glsxtr@gobbleto@endescspch#1\@glsxtr@endescspch{} \newcommand*{\@@glsxtr@autoindex@escspch}[5]{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#3}% \ifx\@nnil#3\relax \def\@@glsxtr@checkspch{\@glsxtr@gobbleto@endescspch#5\@glsxtr@endescspch}% \else \ifx\@nnil#4\relax \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@glsxtr@checkspch{\@glsxtr@gobbleto@endescspch #4#5\@glsxtr@endescspch}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@glsxtr@autoindex@esc#1}% \def\@@glsxtr@checkspch{#2#5#1\@nnil#1\@glsxtr@endescspch}% \fi \fi \@@glsxtr@checkspch } \renewcommand*{\Glossentrydesc}[1]{% \glsdoifexistsorwarn{#1}% {% \glssetabbrvfmt{\glscategory{#1}}% \Glsaccessdesc{#1}% }% } \ifdef\texorpdfstring { \renewcommand*{\glossentrysymbol}[1]{% \texorpdfstring{\@glossentrysymbol{#1}}{\glsentrypdfsymbol{#1}}% } } { \renewcommand*{\glossentrysymbol}[1]{\@glossentrysymbol{#1}} } \newcommand{\glsentrypdfsymbol}[1]{\glsentrysymbol{#1}} \newrobustcmd*{\@glossentrysymbol}[1]{% \glsdoifexistsorwarn{#1}% {% \begingroup \glssetabbrvfmt{\glscategory{#1}}% \glshasattribute{#1}{glosssymbolfont}% {% \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glosssymbolfont}}% \ifcsdef{\@glsxtr@attrval}% {% \letcs{\@glsxtr@glosssymbolfont}{\@glsxtr@attrval}% }% {% \GlossariesExtraWarning{Unknown control sequence name `\@glsxtr@attrval' supplied in glosssymbolfont attribute for entry `#1'. Ignoring}% \let\@glsxtr@glosssymbolfont\@firstofone }% }% {\let\@glsxtr@glosssymbolfont\@firstofone}% \@glsxtr@glosssymbolfont{\glsaccesssymbol{#1}}% \endgroup }% } \renewcommand*{\Glossentrysymbol}[1]{% \glsdoifexistsorwarn{#1}% {% \glssetabbrvfmt{\glscategory{#1}}% \Glsaccesssymbol{#1}% }% } \newcommand*{\GlsXtrEnableInitialTagging}{% \@ifstar\s@glsxtr@enabletagging\@glsxtr@enabletagging } \@onlypreamble\GlsXtrEnableInitialTagging \newcommand*{\s@glsxtr@enabletagging}[2]{% \undef#2% \@glsxtr@enabletagging{#1}{#2}% } \newcommand*{\@glsxtr@enabletagging}[2]{% \@for\@glsxtr@cat:=#1\do {% \ifdefempty\@glsxtr@cat {}% {\glssetcategoryattribute{\@glsxtr@cat}{tagging}{true}}% }% \newrobustcmd*#2[1]{##1}% \def\@glsxtr@taggingcs{#2}% \renewcommand*\@glsxtr@activate@initialtagging{% \let#2\@glsxtr@tag }% \ifundef\@gls@preglossaryhook {\GlossariesExtraWarning{Initial tagging requires at least glossaries.sty v4.19 to work correctly}}% {}% } \ifundef\mfu@checkword@do { \newcommand*{\mfu@checkword@do}[1]{% \ifdefstring{\mfu@checkword@arg}{#1}% {% \let\@mfu@domakefirstuc\@firstofone \listbreak }% {}% } \ifundef\mfu@checkword { \newcommand{\@glsxtr@do@titlecaps@warn}{% \GlossariesExtraWarning{mfirstuc.sty too old. Title Caps support not available}% \let\@glsxtr@do@titlecaps@warn\relax } } { \renewcommand*{\mfu@checkword}[1]{% \def\mfu@checkword@arg{#1}% \let\@mfu@domakefirstuc\makefirstuc \forlistloop\mfu@checkword@do\@mfu@nocaplist } } } {}% no patch required \newcommand*{\@glsxtr@do@titlecaps@warn}{} \newcommand*\@glsxtr@activate@initialtagging{} \newrobustcmd*{\@glsxtr@tag}[1]{% \glsifattribute{\glscurrententrylabel}{tagging}{true}% {\glsxtrtagfont{#1}}{#1}% } \newcommand*{\glsxtrtagfont}[1]{\underline{#1}} \ifdef\@gls@preglossaryhook { \renewcommand*{\@gls@preglossaryhook}{% \@glsxtr@activate@initialtagging \ifundef\@glsxtr@org@postdescription {% \let\@glsxtr@org@postdescription\glspostdescription \renewcommand*{\glspostdescription}{% \ifglsentryexists{\glscurrententrylabel}% {% \glsxtrpostdescription \@glsxtr@org@postdescription }% {}% }% }% {}% \glossxtrsetpopts }% } {} \newcommand*{\glsxtrpostdescription}{% \csuse{glsxtrpostdesc\glscategory{\glscurrententrylabel}}% } \newcommand*{\glsxtrpostdescgeneral}{} \newcommand*{\glsxtrpostdescterm}{} \newcommand*{\glsxtrpostdescacronym}{} \newcommand*{\glsxtrpostdescabbreviation}{} \newcommand*{\glsdefpostdesc}[2]{% \csdef{glsxtrpostdesc#1}{#2}% } \renewcommand*{\glspostlinkhook}{% \ifglsentryexists{\glslabel}{\glsxtrpostlinkhook}{}% } \newcommand*{\glsxtrpostlinkhook}{% \glsxtrdiscardperiod{\glslabel}% {\glsxtrpostlinkendsentence}% {\glsxtrifcustomdiscardperiod {\glsxtrifperiod{\glsxtrpostlinkendsentence}{\glsxtrpostlink}}% {\glsxtrpostlink}% }% } \newcommand*{\glsxtrifcustomdiscardperiod}[2]{#2} \newcommand*{\glsxtrpostlink}{% \csuse{glsxtrpostlink\glscategory{\glslabel}}% } \newcommand*{\glsdefpostlink}[2]{% \ifthenelse{\equal{#1}{}}% {\PackageError{glossaries-extra} {Invalid empty category label in \string\glsdefpostlink}{}}% {\csdef{glsxtrpostlink#1}{#2}}% } \newcommand*{\glsxtrpostlinkendsentence}{% \ifcsdef{glsxtrpostlink\glscategory{\glslabel}} {% \csuse{glsxtrpostlink\glscategory{\glslabel}}% .\spacefactor\sfcode`\. \relax }% {% \spacefactor\sfcode`\. \relax }% } \newcommand*{\glsxtrpostlinkAddDescOnFirstUse}{% \glsxtrifwasfirstuse{\space\glsxtrparen{\glsaccessdesc{\glslabel}}}{}% } \newcommand*{\glsxtrpostlinkAddSymbolOnFirstUse}{% \glsxtrifwasfirstuse {% \ifglshassymbol{\glslabel}% {\space\glsxtrparen{\glsaccesssymbol{\glslabel}}}% {}% }% {}% } \newcommand*{\glsxtrpostlinkAddSymbolDescOnFirstUse}{% \glsxtrifwasfirstuse {% \space\glsxtrparen {% \ifglshassymbol{\glslabel}% {\glsaccesssymbol{\glslabel}, }% {}% \glsaccessdesc{\glslabel}% }% }% {}% } \newcommand*{\glsxtrdiscardperiod}[3]{% \glsxtrifwasfirstuse {% \glsifattribute{#1}{retainfirstuseperiod}{true}% {#3}% {% \glsifattribute{#1}{discardperiod}{true}% {% \glsifplural {% \glsifattribute{#1}{pluraldiscardperiod}{true}% {\glsxtrifperiod{#2}{#3}}% {#3}% }% {% \glsxtrifperiod{#2}{#3}% }% }% {#3}% }% }% {% \glsifattribute{#1}{discardperiod}{true}% {% \glsifplural {% \glsifattribute{#1}{pluraldiscardperiod}{true}% {\glsxtrifperiod{#2}{#3}}% {#3}% }% {% \glsxtrifperiod{#2}{#3}% }% }% {#3}% }% } \newcommand*{\glsxtrifperiod}[1]{\new@ifnextchar.{\@firstoftwo{#1}}} \newcommand*{\glsxtr@punclist}{.,:;?!} \newcommand*{\glsxtraddpunctuationmark}[1]{\appto\glsxtr@punclist{#1}} \newcommand*{\glsxtrsetpunctuationmarks}[1]{\def\glsxtr@punclist{#1}} \newcommand*{\glsxtrifnextpunc}[2]{% \def\reserved@a{#1}% \def\reserved@b{#2}% \futurelet\@glspunc@token\glsxtr@ifnextpunc } \newcommand*{\glsxtr@ifnextpunc}{% \glsxtr@ifpunctoken{\@glspunc@token}{\let\reserved@b\reserved@a}{}% \reserved@b } \newcommand*{\glsxtr@ifpunctoken}[1]{% \expandafter\@glsxtr@ifpunctoken\expandafter#1\glsxtr@punclist\@nnil } \def\@glsxtr@ifpunctoken#1#2{% \let\reserved@d=#2% \ifx\reserved@d\@nnil \let\glsxtr@next\@glsxtr@notfoundinlist \else \ifx#1\reserved@d \let\glsxtr@next\@glsxtr@foundinlist \else \let\glsxtr@next\@glsxtr@ifpunctoken \fi \fi \glsxtr@next#1% } \def\@glsxtr@foundinlist#1\@nnil{\@firstoftwo} \def\@glsxtr@notfoundinlist#1{\@secondoftwo} \newcommand{\glsxtrdopostpunc}[1]{% \glsxtrifnextpunc{\@glsxtr@swaptwo{#1}}{#1}% } \newcommand{\@glsxtr@swaptwo}[2]{#2#1} \define@key{glsxtrabbrv}{category}{% \protected@edef\glscategorylabel{#1}% } \define@key{glsxtrabbrv}{shortplural}{% \def\@gls@shortpl{#1}% } \define@key{glsxtrabbrv}{longplural}{% \def\@gls@longpl{#1}% } \newtoks\glsshortpltok \newtoks\glslongpltok \newcommand*{\@glsxtr@insertdots}[2]{% \def#1{}% \@glsxtr@insert@dots#1#2\@nnil } \newcommand*{\@glsxtr@insert@dots}[2]{% \ifx\@nnil#2\relax \let\@glsxtr@insert@dots@next\@gobble \else \ifx\relax#2\relax \else \appto#1{#2.}% \fi \let\@glsxtr@insert@dots@next\@glsxtr@insert@dots \fi \@glsxtr@insert@dots@next#1% } \newcommand*{\glsxtrwordsep}{\space} \newcommand*{\glsxtrword}[1]{#1} \newcommand*{\@glsxtr@markwordseps}[2]{% \def#1{}% \@glsxtr@mark@wordseps#1#2 \@nnil } \def\@glsxtr@mark@wordseps#1#2 #3{% \ifdefempty{#1}% {\def#1{\protect\glsxtrword{#2}}}% {\appto#1{\protect\glsxtrwordsep\protect\glsxtrword{#2}}}% \ifx\@nnil#3\relax \let\@glsxtr@mark@wordseps@next\relax \else \def\@glsxtr@mark@wordseps@next{% \@glsxtr@mark@wordseps#1#3}% \fi \@glsxtr@mark@wordseps@next } \newcommand*{\newabbreviation}[4][]{% \glsxtr@newabbreviation{#1}{#2}{#3}{#4}% } \newcommand*{\glsxtr@newabbreviation}[4]{% \glskeylisttok{#1}% \glslabeltok{#2}% \glsshorttok{#3}% \glslongtok{#4}% \def\glsxtrorgshort{#3}% \def\glsxtrorglong{#4}% \def\ExtraCustomAbbreviationFields{}% \@gls@initaccesskeys \def\glscategorylabel{abbreviation}% \setkeys*{glsxtrabbrv}[shortplural,longplural]{#1}% \ifcsdef{@glsabbrv@current@\glscategorylabel}% {% \let\@glsxtr@orgwarndep\GlsXtrWarnDeprecatedAbbrStyle \let\GlsXtrWarnDeprecatedAbbrStyle\@gobbletwo \glsxtr@applyabbrvstyle{\csname @glsabbrv@current@\glscategorylabel\endcsname}% \let\GlsXtrWarnDeprecatedAbbrStyle\@glsxtr@orgwarndep }% {% \glsxtr@applyabbrvstyle{\@glsabbrv@current@abbreviation}% }% \def\@gls@longpl{#4\glspluralsuffix}% \let\@gls@default@longpl\@gls@longpl \glsifcategoryattribute{\glscategorylabel}{markwords}{true}% {% \@glsxtr@markwordseps\@gls@long{#4}% \expandafter\def\expandafter\@gls@longpl\expandafter {\@gls@long\glspluralsuffix}% \let\@gls@default@longpl\@gls@longpl \expandafter\glslongtok\expandafter{\@gls@long}% }% {}% \glsifcategoryattribute{\glscategorylabel}{markshortwords}{true}% {% \@glsxtr@markwordseps\@gls@short{#3}% }% {% \glsifcategoryattribute{\glscategorylabel}{insertdots}{true}% {% \@glsxtr@insertdots\@gls@short{#3}% \appto\@gls@short{\@}% }% {\def\@gls@short{#3}}% }% \glsifcategoryattribute{\glscategorylabel}{aposplural}{true}% {% \expandafter\def\expandafter\@gls@shortpl\expandafter{\@gls@short '\abbrvpluralsuffix}% }% {% \glsifcategoryattribute{\glscategorylabel}{noshortplural}{true}% {% \let\@gls@shortpl\@gls@short }% {% \expandafter\def\expandafter\@gls@shortpl\expandafter{\@gls@short \abbrvpluralsuffix}% }% }% \expandafter\glsshorttok\expandafter{\@gls@short}% \glsxtrnewabbrevpresetkeyhook{#1}{#2}{#3}% \setkeys*{glsxtrabbrv}[category]{#1}% \let\@gls@org@longpl\@gls@longpl \let\@gls@org@shortpl\@gls@shortpl \ifx\@gls@default@longpl\@gls@longpl \else \glsifcategoryattribute{\glscategorylabel}{markwords}{true}% {% \expandafter\@glsxtr@markwordseps\expandafter\@gls@longpl\expandafter {\@gls@longpl}% }% {}% \fi \expandafter\glsshortpltok\expandafter{\@gls@shortpl}% \expandafter\glslongpltok\expandafter{\@gls@longpl}% \@gls@setup@default@access \newabbreviationhook \protected@edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% {% type=\glsxtrabbrvtype,% category=abbreviation,% short={\the\glsshorttok},% shortplural={\the\glsshortpltok},% long={\the\glslongtok},% longplural={\the\glslongpltok},% name={\the\glsshorttok},% \CustomAbbreviationFields,% \ExtraCustomAbbreviationFields \the\glskeylisttok }% }% \@do@newglossaryentry \@glsxtr@addabbreviationlist{\glsentrytype{\the\glslabeltok}}% \GlsXtrPostNewAbbreviation } \newcommand*{\glsxtrnewabbrevpresetkeyhook}[3]{} \newcommand*{\GlsXtrPostNewAbbreviation}{} \newcommand*{\newabbreviationhook}{} \newcommand*{\CustomAbbreviationFields}{} \newcommand*{\glsxtrparen}[1]{(#1)} \newcommand*{\glsxtrfullformat}[2]{% \glsfirstlongfont{\glsaccesslong{#1}}#2\glsxtrfullsep{#1}% \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}% } \newcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongfont{\Glsaccesslong{#1}}#2\glsxtrfullsep{#1}% \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}% } \newcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongfont{\glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}% \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}% } \newcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongfont{\Glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}% \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}% } \newcommand*{\glsxtrfullsep}[1]{\space} \newcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat} \newcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat} \newcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat} \newcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat} \renewcommand*{\glsentryfull}[1]{\glsxtrinlinefullformat{#1}{}} \renewcommand*{\Glsentryfull}[1]{\Glsxtrinlinefullformat{#1}{}} \renewcommand*{\glsentryfullpl}[1]{\glsxtrinlinefullplformat{#1}{}} \renewcommand*{\Glsentryfullpl}[1]{\Glsxtrinlinefullplformat{#1}{}} \newcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{#1}} \newcommand*{\glsfirstabbrvdefaultfont}[1]{\glsabbrvdefaultfont{#1}} \newcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{#1}} \newcommand*{\glsabbrvdefaultfont}[1]{#1} \newcommand*{\glslongfont}[1]{\glslongdefaultfont{#1}} \newcommand*{\glslongdefaultfont}[1]{#1} \newcommand*{\glsfirstlongfont}[1]{\glslongfont{#1}} \newcommand*{\glsfirstlongdefaultfont}[1]{\glslongdefaultfont{#1}} \newcommand*{\glsxtrabbrvpluralsuffix}{\glspluralsuffix} \newcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix} \newrobustcmd*{\glsxtrfull}{\@gls@hyp@opt\ns@glsxtrfull} \newcommand*\ns@glsxtrfull[2][]{% \new@ifnextchar[{\@glsxtr@full{#1}{#2}}% {\@glsxtr@full{#1}{#2}[]}% } \def\@glsxtr@full#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{\glsxtrinlinefullformat{#2}{#3}}% \glsxtrsetupfulldefs \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newcommand*{\glsxtrsetupfulldefs}{% \let\glsxtrifwasfirstuse\@firstoftwo } \newrobustcmd*{\Glsxtrfull}{\@gls@hyp@opt\ns@Glsxtrfull} \newcommand*\ns@Glsxtrfull[2][]{% \new@ifnextchar[{\@Glsxtr@full{#1}{#2}}% {\@Glsxtr@full{#1}{#2}[]}% } \def\@Glsxtr@full#1#2[#3]{% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{\Glsxtrinlinefullformat{#2}{#3}}% \glsxtrsetupfulldefs \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\GLSxtrfull}{\@gls@hyp@opt\ns@GLSxtrfull} \newcommand*\ns@GLSxtrfull[2][]{% \new@ifnextchar[{\@GLSxtr@full{#1}{#2}}% {\@GLSxtr@full{#1}{#2}[]}% } \def\@GLSxtr@full#1#2[#3]{% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsifplural\@secondoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{\mfirstucMakeUppercase{\glsxtrinlinefullformat{#2}{#3}}}% \glsxtrsetupfulldefs \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\glsxtrfullpl}{\@gls@hyp@opt\ns@glsxtrfullpl} \newcommand*\ns@glsxtrfullpl[2][]{% \new@ifnextchar[{\@glsxtr@fullpl{#1}{#2}}% {\@glsxtr@fullpl{#1}{#2}[]}% } \def\@glsxtr@fullpl#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{\glsxtrinlinefullplformat{#2}{#3}}% \glsxtrsetupfulldefs \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\Glsxtrfullpl}{\@gls@hyp@opt\ns@Glsxtrfullpl} \newcommand*\ns@Glsxtrfullpl[2][]{% \new@ifnextchar[{\@Glsxtr@fullpl{#1}{#2}}% {\@Glsxtr@fullpl{#1}{#2}[]}% } \def\@Glsxtr@fullpl#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{\Glsxtrinlinefullplformat{#2}{#3}}% \glsxtrsetupfulldefs \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\GLSxtrfullpl}{\@gls@hyp@opt\ns@GLSxtrfullpl} \newcommand*\ns@GLSxtrfullpl[2][]{% \new@ifnextchar[{\@GLSxtr@fullpl{#1}{#2}}% {\@GLSxtr@fullpl{#1}{#2}[]}% } \def\@GLSxtr@fullpl#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \mfirstucMakeUppercase{\glsxtrinlinefullplformat{#2}{#3}}}% \glsxtrsetupfulldefs \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\glsxtrshort}{\@gls@hyp@opt\ns@glsxtrshort} \newcommand*{\ns@glsxtrshort}[2][]{% \new@ifnextchar[{\@glsxtrshort{#1}{#2}}{\@glsxtrshort{#1}{#2}[]}% } \def\@glsxtrshort#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{% \glsabbrvfont{\glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}% \ifglsxtrinsertinside\else#3\fi }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\Glsxtrshort}{\@gls@hyp@opt\ns@Glsxtrshort} \newcommand*{\ns@Glsxtrshort}[2][]{% \new@ifnextchar[{\@Glsxtrshort{#1}{#2}}{\@Glsxtrshort{#1}{#2}[]}% } \def\@Glsxtrshort#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{% \glsabbrvfont{\Glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}% \ifglsxtrinsertinside\else#3\fi }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\GLSxtrshort}{\@gls@hyp@opt\ns@GLSxtrshort} \newcommand*{\ns@GLSxtrshort}[2][]{% \new@ifnextchar[{\@GLSxtrshort{#1}{#2}}{\@GLSxtrshort{#1}{#2}[]}% } \def\@GLSxtrshort#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \mfirstucMakeUppercase {\glsabbrvfont{\glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}% \ifglsxtrinsertinside\else#3\fi }% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\glsxtrlong}{\@gls@hyp@opt\ns@glsxtrlong} \newcommand*{\ns@glsxtrlong}[2][]{% \new@ifnextchar[{\@glsxtrlong{#1}{#2}}{\@glsxtrlong{#1}{#2}[]}% } \def\@glsxtrlong#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{% \glslongfont{\glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}% \ifglsxtrinsertinside\else#3\fi }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\Glsxtrlong}{\@gls@hyp@opt\ns@Glsxtrlong} \newcommand*{\ns@Glsxtrlong}[2][]{% \new@ifnextchar[{\@Glsxtrlong{#1}{#2}}{\@Glsxtrlong{#1}{#2}[]}% } \def\@Glsxtrlong#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{% \glslongfont{\Glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}% \ifglsxtrinsertinside\else#3\fi }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\GLSxtrlong}{\@gls@hyp@opt\ns@GLSxtrlong} \newcommand*{\ns@GLSxtrlong}[2][]{% \new@ifnextchar[{\@GLSxtrlong{#1}{#2}}{\@GLSxtrlong{#1}{#2}[]}% } \def\@GLSxtrlong#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \mfirstucMakeUppercase {\glslongfont{\glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}% \ifglsxtrinsertinside\else#3\fi }% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\glsxtrshortpl}{\@gls@hyp@opt\ns@glsxtrshortpl} \newcommand*{\ns@glsxtrshortpl}[2][]{% \new@ifnextchar[{\@glsxtrshortpl{#1}{#2}}{\@glsxtrshortpl{#1}{#2}[]}% } \def\@glsxtrshortpl#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{% \glsabbrvfont{\glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}% \ifglsxtrinsertinside\else#3\fi }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\Glsxtrshortpl}{\@gls@hyp@opt\ns@Glsxtrshortpl} \newcommand*{\ns@Glsxtrshortpl}[2][]{% \new@ifnextchar[{\@Glsxtrshortpl{#1}{#2}}{\@Glsxtrshortpl{#1}{#2}[]}% } \def\@Glsxtrshortpl#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{% \glsabbrvfont{\Glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}% \ifglsxtrinsertinside\else#3\fi }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\GLSxtrshortpl}{\@gls@hyp@opt\ns@GLSxtrshortpl} \newcommand*{\ns@GLSxtrshortpl}[2][]{% \new@ifnextchar[{\@GLSxtrshortpl{#1}{#2}}{\@GLSxtrshortpl{#1}{#2}[]}% } \def\@GLSxtrshortpl#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \mfirstucMakeUppercase {\glsabbrvfont{\glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}% \ifglsxtrinsertinside\else#3\fi }% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\glsxtrlongpl}{\@gls@hyp@opt\ns@glsxtrlongpl} \newcommand*{\ns@glsxtrlongpl}[2][]{% \new@ifnextchar[{\@glsxtrlongpl{#1}{#2}}{\@glsxtrlongpl{#1}{#2}[]}% } \def\@glsxtrlongpl#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree \let\glsinsert\@empty \def\glscustomtext{% \glslongfont{\glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}% \ifglsxtrinsertinside\else#3\fi }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\Glsxtrlongpl}{\@gls@hyp@opt\ns@Glsxtrlongpl} \newcommand*{\ns@Glsxtrlongpl}[2][]{% \new@ifnextchar[{\@Glsxtrlongpl{#1}{#2}}{\@Glsxtrlongpl{#1}{#2}[]}% } \def\@Glsxtrlongpl#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree \let\glsinsert\@empty \def\glscustomtext{% \glslongfont{\Glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}% \ifglsxtrinsertinside\else#3\fi }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newrobustcmd*{\GLSxtrlongpl}{\@gls@hyp@opt\ns@GLSxtrlongpl} \newcommand*{\ns@GLSxtrlongpl}[2][]{% \new@ifnextchar[{\@GLSxtrlongpl{#1}{#2}}{\@GLSxtrlongpl{#1}{#2}[]}% } \def\@GLSxtrlongpl#1#2[#3]{% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% \mfirstucMakeUppercase {\glslongfont{\glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}% \ifglsxtrinsertinside\else#3\fi }% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } \newcommand*{\glssetabbrvfmt}[1]{% \ifcsdef{@glsabbrv@current@#1}% {\glsxtr@applyabbrvfmt{\csname @glsabbrv@current@#1\endcsname}}% {\glsxtr@applyabbrvfmt{\@glsabbrv@current@abbreviation}}% } \newrobustcmd*{\glsuseabbrvfont}[2]{{\glssetabbrvfmt{#2}\glsabbrvfont{#1}}} \newrobustcmd*{\glsuselongfont}[2]{{\glssetabbrvfmt{#2}\glslongfont{#1}}} \newcommand*{\glsxtrgenabbrvfmt}{% \ifdefempty\glscustomtext {% \ifglsused\glslabel {% \glsifplural {% \glscapscase {% \glsxtrsubsequentplfmt{\glslabel}{\glsinsert}% }% {% \Glsxtrsubsequentplfmt{\glslabel}{\glsinsert}% }% {% \mfirstucMakeUppercase {\glsxtrsubsequentplfmt{\glslabel}{\glsinsert}}% }% }% {% \glscapscase {% \glsxtrsubsequentfmt{\glslabel}{\glsinsert}% }% {% \Glsxtrsubsequentfmt{\glslabel}{\glsinsert}% }% {% \mfirstucMakeUppercase {\glsxtrsubsequentfmt{\glslabel}{\glsinsert}}% }% }% }% {% \glsifplural {% \glscapscase {% \glsxtrfullplformat{\glslabel}{\glsinsert}% }% {% \Glsxtrfullplformat{\glslabel}{\glsinsert}% }% {% \mfirstucMakeUppercase {\glsxtrfullplformat{\glslabel}{\glsinsert}}% }% }% {% \glscapscase {% \glsxtrfullformat{\glslabel}{\glsinsert}% }% {% \Glsxtrfullformat{\glslabel}{\glsinsert}% }% {% \mfirstucMakeUppercase {\glsxtrfullformat{\glslabel}{\glsinsert}}% }% }% }% }% {% \glscustomtext }% } \newcommand*{\glsxtrsubsequentfmt}[2]{% \glsabbrvfont{\glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}% \ifglsxtrinsertinside \else#2\fi } \let\glsxtrdefaultsubsequentfmt\glsxtrsubsequentfmt \newcommand*{\glsxtrsubsequentplfmt}[2]{% \glsabbrvfont{\glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}% \ifglsxtrinsertinside \else#2\fi } \let\glsxtrdefaultsubsequentplfmt\glsxtrsubsequentplfmt \newcommand*{\Glsxtrsubsequentfmt}[2]{% \glsabbrvfont{\Glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}% \ifglsxtrinsertinside \else#2\fi } \let\Glsxtrdefaultsubsequentfmt\Glsxtrsubsequentfmt \newcommand*{\Glsxtrsubsequentplfmt}[2]{% \glsabbrvfont{\Glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}% \ifglsxtrinsertinside \else#2\fi } \let\Glsxtrdefaultsubsequentplfmt\Glsxtrsubsequentplfmt \newcommand*{\setabbreviationstyle}[2][abbreviation]{% \ifcsundef{@glsabbrv@dispstyle@setup@#2} {% \PackageError{glossaries-extra}{Undefined abbreviation style `#2'}{}% }% {% \ifcsstring{@glsabbrv@current@#1}{#2}% {% }% {% \def\@glsxtr@dostylewarn{}% \glsforeachincategory{#1}{\@gls@type}{\@gls@label}% {% \def\@glsxtr@dostylewarn{\GlossariesWarning{Abbreviation style has been switched \MessageBreak for category `#1', \MessageBreak but there have already been entries \MessageBreak defined for this category. Unwanted \MessageBreak side-effects may result}}% \@endfortrue }% \@glsxtr@dostylewarn \csdef{@glsabbrv@current@#1}{#2}% \protected@edef\glscategorylabel{#1}% \glsxtr@applyabbrvstyle{#2}% }% }% } \newcommand*{\glsxtr@applyabbrvstyle}[1]{% \csuse{@glsabbrv@dispstyle@setup@#1}% \csuse{@glsabbrv@dispstyle@fmts@#1}% } \newcommand*{\glsxtr@applyabbrvfmt}[1]{% \csuse{@glsabbrv@dispstyle@fmts@#1}% } \newcommand*{\newabbreviationstyle}[3]{% \ifcsdef{@glsabbrv@dispstyle@setup@#1} {% \PackageError{glossaries-extra}{Abbreviation style `#1' already defined}{}% }% {% \csdef{@glsabbrv@dispstyle@setup@#1}{% \renewcommand*{\GlsXtrPostNewAbbreviation}{}% #2}% \csdef{@glsabbrv@dispstyle@fmts@#1}{% \renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}% \renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}% \renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}% \renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}% \let\glsxtrsubsequentfmt\glsxtrdefaultsubsequentfmt \let\glsxtrsubsequentplfmt\glsxtrdefaultsubsequentplfmt \let\Glsxtrsubsequentfmt\Glsxtrdefaultsubsequentfmt \let\Glsxtrsubsequentplfmt\Glsxtrdefaultsubsequentplfmt #3}% }% } \newcommand*{\renewabbreviationstyle}[3]{% \ifcsundef{@glsabbrv@dispstyle@setup@#1} {% \PackageError{glossaries-extra}{Abbreviation style `#1' not defined}{}% }% {% \csdef{@glsabbrv@dispstyle@setup@#1}{% \renewcommand*{\GlsXtrPostNewAbbreviation}{}% #2}% \csdef{@glsabbrv@dispstyle@fmts@#1}{% \renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}% \renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}% \renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}% \renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}% #3}% }% } \newcommand*{\letabbreviationstyle}[2]{% \csletcs{@glsabbrv@dispstyle@setup@#1}{@glsabbrv@dispstyle@setup@#2}% \csletcs{@glsabbrv@dispstyle@fmts@#1}{@glsabbrv@dispstyle@fmts@#2}% } \newcommand*{\@glsxtr@deprecated@abbrstyle}[2]{% \csdef{@glsabbrv@dispstyle@setup@#1}{% \GlsXtrWarnDeprecatedAbbrStyle{#1}{#2}% \csuse{@glsabbrv@dispstyle@setup@#2}% }% \csletcs{@glsabbrv@dispstyle@fmts@#1}{@glsabbrv@dispstyle@fmts@#2}% } \newcommand*{\GlsXtrWarnDeprecatedAbbrStyle}[2]{% \GlossariesExtraWarning{Deprecated abbreviation style name `#1', use `#2' instead}% } \newcommand*{\GlsXtrUseAbbrStyleSetup}[1]{% \ifcsundef{@glsabbrv@dispstyle@setup@#1}% {% \PackageError{glossaries-extra}% {Unknown abbreviation style definitions `#1'}{}% }% {% \csname @glsabbrv@dispstyle@setup@#1\endcsname }% } \newcommand*{\GlsXtrUseAbbrStyleFmts}[1]{% \ifcsundef{@glsabbrv@dispstyle@fmts@#1}% {% \PackageError{glossaries-extra}% {Unknown abbreviation style formats `#1'}{}% }% {% \csname @glsabbrv@dispstyle@fmts@#1\endcsname }% } \newif\ifglsxtrinsertinside \glsxtrinsertinsidefalse \newcommand*{\glsxtrlongshortname}{% \protect\glsabbrvfont{\the\glsshorttok}% } \newabbreviationstyle{long-short}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlongfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}},% text={\protect\glsabbrvfont{\the\glsshorttok}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% }% } \setabbreviationstyle{long-short} \newcommand*{\glsxtrlongshortdescsort}{% \expandonce\glsxtrorglong\space (\expandonce\glsxtrorgshort)% } \newcommand*{\glsxtrlongshortdescname}{% \protect\glslongfont{\the\glslongtok} \glsxtrparen{\protect\glsabbrvfont{\the\glsshorttok}}% } \newabbreviationstyle{long-short-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% first={\protect\glsfirstlongfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlongfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},% text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-short}% } \newcommand*{\glsxtrshortlongname}{% \protect\glsabbrvfont{\the\glsshorttok}% } \newabbreviationstyle{short-long}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},% text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% }% } \newcommand*{\glsxtrshortlongdescsort}{\the\glsshorttok} \newcommand*{\glsxtrshortlongdescname}{% \protect\glsabbrvfont{\the\glsshorttok} \glsxtrparen{\protect\glslongfont{\the\glslongtok}}% } \newabbreviationstyle{short-long-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, first={\protect\glsfirstabbrvfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},% text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-long}% } \newcommand*{\glsfirstlongfootnotefont}[1]{\glslongfootnotefont{#1}}% \newcommand*{\glslongfootnotefont}[1]{\glslongdefaultfont{#1}}% \newcommand*{\glsxtrabbrvfootnote}[2]{\footnote{#2}} \newcommand*{\glsxtrfootnotename}{% \protect\glsabbrvfont{\the\glsshorttok}% } \newabbreviationstyle{footnote}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvfont{\the\glsshorttok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% } \letabbreviationstyle{short-footnote}{footnote} \newcommand*{\glsxtrfootnotedescname}{% \protect\glsabbrvfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}% } \newcommand*{\glsxtrfootnotedescsort}{\the\glsshorttok} \newabbreviationstyle{short-footnote-desc}% {% \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, first={\protect\glsfirstabbrvfont{\the\glsshorttok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{footnote}% } \letabbreviationstyle{footnote-desc}{short-footnote-desc} \newabbreviationstyle{postfootnote}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},% text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% \renewcommand*{\glsxtrsetupfulldefs}{% \let\glsxtrifwasfirstuse\@secondoftwo }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% } \letabbreviationstyle{short-postfootnote}{postfootnote} \newabbreviationstyle{short-postfootnote-desc}% {% \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, first={\protect\glsfirstabbrvfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},% text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% \renewcommand*{\glsxtrsetupfulldefs}{% \let\glsxtrifwasfirstuse\@secondoftwo }% }% {% \GlsXtrUseAbbrStyleFmts{postfootnote}% } \letabbreviationstyle{postfootnote-desc}{short-postfootnote-desc} \newcommand*{\glsxtrshortnolongname}{% \protect\glsabbrvfont{\the\glsshorttok}% } \newabbreviationstyle{short}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortnolongname}, sort={\the\glsshorttok}, first={\protect\glsfirstabbrvfont{\the\glsshorttok}}, firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}}, text={\protect\glsabbrvfont{\the\glsshorttok}}, plural={\protect\glsabbrvfont{\the\glsshortpltok}}, description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrinlinefullformat}[2]{% \protect\glsfirstabbrvfont{\glsaccessshort{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \protect\glsfirstabbrvfont{\glsaccessshort{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfont{\Glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfont{\Glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \setabbreviationstyle[acronym]{short} \letabbreviationstyle{short-nolong}{short} \newabbreviationstyle{short-nolong-noreg}% {% \GlsXtrUseAbbrStyleSetup{short-nolong}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-nolong}% } \newcommand*{\glsxtrshortdescname}{% \protect\glsabbrvfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}% } \newabbreviationstyle{short-desc}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortdescname}, sort={\the\glsshorttok}, first={\protect\glsfirstabbrvfont{\the\glsshorttok}}, firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}}, text={\protect\glsabbrvfont{\the\glsshorttok}}, plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \letabbreviationstyle{short-nolong-desc}{short-desc} \newabbreviationstyle{short-nolong-desc-noreg}% {% \GlsXtrUseAbbrStyleSetup{short-nolong-desc}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-nolong-desc}% } \newabbreviationstyle{nolong-short}% {% \GlsXtrUseAbbrStyleSetup{short-nolong}% }% {% \GlsXtrUseAbbrStyleFmts{short-nolong}% \renewcommand*{\glsxtrinlinefullformat}[2]{% \protect\glsfirstlongfont{\glsaccesslong{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \protect\glsfirstlongfont{\glsaccesslongpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \protect\glsfirstlongfont{\glsaccesslong{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvfont{\Glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \protect\glsfirstlongfont{\glsaccesslongpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvfont{\Glsaccessshortpl{##1}}}% }% } \newabbreviationstyle{nolong-short-noreg}% {% \GlsXtrUseAbbrStyleSetup{nolong-short}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{nolong-short}% } \newcommand*{\glsxtrlongnoshortdescname}{% \protect\glslongfont{\the\glslongtok}% } \newabbreviationstyle{long-desc}% {% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortdescname}, sort={\the\glslongtok}, first={\protect\glsfirstlongfont{\the\glslongtok}}, firstplural={\protect\glsfirstlongfont{\the\glslongpltok}}, text={\glslongfont{\the\glslongtok}}, plural={\glslongfont{\the\glslongpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% \glslongfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% \glslongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% \glslongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% \glslongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \letabbreviationstyle{long-noshort-desc}{long-desc} \newabbreviationstyle{long-noshort-desc-noreg}% {% \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-noshort-desc}% } \newcommand*{\glsxtrlongnoshortname}{% \protect\glsabbrvfont{\the\glsshorttok}% } \newabbreviationstyle{long}% {% \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongfont{\the\glslongtok}}, firstplural={\protect\glsfirstlongfont{\the\glslongpltok}}, text={\glslongfont{\the\glslongtok}}, plural={\glslongfont{\the\glslongpltok}},% description={\the\glslongtok}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \GlsXtrUseAbbrStyleFmts{long-desc}% } \letabbreviationstyle{long-noshort}{long} \newabbreviationstyle{long-noshort-noreg}% {% \GlsXtrUseAbbrStyleSetup{long-noshort}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-noshort}% } \newcommand*{\glsxtrscfont}[1]{\textsc{#1}} \newcommand*{\glsabbrvscfont}{\glsxtrscfont} \newcommand*{\glsxtrfirstscfont}[1]{\glsabbrvscfont{#1}} \newcommand*{\glsfirstabbrvscfont}{\glsxtrfirstscfont} \newcommand*{\glsxtrscsuffix}{\protect\glstextup{\glsxtrabbrvpluralsuffix}} \newabbreviationstyle{long-short-sc}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},% text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% }% } \newabbreviationstyle{long-short-sc-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},% text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-short-sc}% } \newabbreviationstyle{short-sc-long}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% } \newabbreviationstyle{short-sc-long-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-sc-long}% } \newabbreviationstyle{short-sc}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortnolongname}, sort={\the\glsshorttok}, first={\protect\glsfirstabbrvscfont{\the\glsshorttok}}, firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}}, text={\protect\glsabbrvscfont{\the\glsshorttok}}, plural={\protect\glsabbrvscfont{\the\glsshortpltok}}, description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrinlinefullformat}[2]{% \protect\glsfirstabbrvscfont{\glsaccessshort{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \protect\glsfirstabbrvscfont{\Glsaccessshort{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \protect\glsfirstabbrvscfont{\Glsaccessshortpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \letabbreviationstyle{short-sc-nolong}{short-sc} \newabbreviationstyle{short-sc-desc}% {% \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortdescname}, sort={\the\glsshorttok}, first={\protect\glsfirstabbrvscfont{\the\glsshorttok}}, firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}}, text={\protect\glsabbrvscfont{\the\glsshorttok}}, plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \letabbreviationstyle{short-sc-nolong-desc}{short-sc-desc} \newabbreviationstyle{nolong-short-sc}% {% \GlsXtrUseAbbrStyleSetup{short-sc-nolong}% }% {% \GlsXtrUseAbbrStyleFmts{short-sc-nolong}% \renewcommand*{\glsxtrinlinefullformat}[2]{% \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% }% } \newabbreviationstyle{long-noshort-sc}% {% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongdefaultfont{\the\glslongtok}}, firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}}, text={\protect\glslongdefaultfont{\the\glslongtok}}, plural={\protect\glslongdefaultfont{\the\glslongpltok}},% description={\the\glslongtok}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \@glsxtr@deprecated@abbrstyle{long-sc}{long-noshort-sc} \newabbreviationstyle{long-noshort-sc-desc}% {% \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \@glsxtr@deprecated@abbrstyle{long-desc-sc}{long-noshort-sc-desc} \newabbreviationstyle{short-sc-footnote}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% } \@glsxtr@deprecated@abbrstyle{footnote-sc}{short-sc-footnote} \newabbreviationstyle{short-sc-footnote-desc}% {% \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-sc-footnote}% } \newabbreviationstyle{short-sc-postfootnote}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},% text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% \renewcommand*{\glsxtrsetupfulldefs}{% \let\glsxtrifwasfirstuse\@secondoftwo }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% } \@glsxtr@deprecated@abbrstyle{postfootnote-sc}{short-sc-postfootnote} \newabbreviationstyle{short-sc-postfootnote-desc}% {% \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},% text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% \renewcommand*{\glsxtrsetupfulldefs}{% \let\glsxtrifwasfirstuse\@secondoftwo }% }% {% \GlsXtrUseAbbrStyleFmts{short-sc-postfootnote}% } \newcommand*{\glsxtrsmfont}[1]{\textsmaller{#1}} \newcommand*{\glsabbrvsmfont}{\glsxtrsmfont} \newcommand*{\glsxtrfirstsmfont}[1]{\glsabbrvsmfont{#1}} \newcommand*{\glsfirstabbrvsmfont}{\glsxtrfirstsmfont} \newcommand*{\glsxtrsmsuffix}{\glsxtrabbrvpluralsuffix} \newabbreviationstyle{long-short-sm}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},% text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% }% } \newabbreviationstyle{long-short-sm-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},% text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-short-sm}% } \newabbreviationstyle{short-sm-long}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% } \newabbreviationstyle{short-sm-long-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-sm-long}% } \newabbreviationstyle{short-sm}% {% \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortnolongname}, sort={\the\glsshorttok}, first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}}, firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}, text={\protect\glsabbrvsmfont{\the\glsshorttok}}, plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}, description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrinlinefullformat}[2]{% \protect\glsfirstabbrvsmfont{\glsaccessshort{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \protect\glsfirstabbrvsmfont{\Glsaccessshort{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \protect\glsfirstabbrvsmfont{\Glsaccessshortpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \letabbreviationstyle{short-sm-nolong}{short-sm} \newabbreviationstyle{short-sm-desc}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortdescname}, sort={\the\glsshorttok}, first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}}, firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}, text={\protect\glsabbrvsmfont{\the\glsshorttok}}, plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \letabbreviationstyle{short-sm-nolong-desc}{short-sm-desc} \newabbreviationstyle{nolong-short-sm}% {% \GlsXtrUseAbbrStyleSetup{short-sm-nolong}% }% {% \GlsXtrUseAbbrStyleFmts{short-sm-nolong}% \renewcommand*{\glsxtrinlinefullformat}[2]{% \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% }% } \newabbreviationstyle{long-noshort-sm}% {% \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongdefaultfont{\the\glslongtok}}, firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}}, text={\protect\glslongdefaultfont{\the\glslongtok}}, plural={\protect\glslongdefaultfont{\the\glslongpltok}},% description={\the\glslongtok}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \@glsxtr@deprecated@abbrstyle{long-sm}{long-noshort-sm} \newabbreviationstyle{long-noshort-sm-desc}% {% \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% }% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \@glsxtr@deprecated@abbrstyle{long-desc-sm}{long-noshort-sm-desc} \newabbreviationstyle{short-sm-footnote}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% } \@glsxtr@deprecated@abbrstyle{footnote-sm}{short-sm-footnote} \newabbreviationstyle{short-sm-footnote-desc}% {% \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-sm-footnote}% } \newabbreviationstyle{short-sm-postfootnote}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},% text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% \renewcommand*{\glsxtrsetupfulldefs}{% \let\glsxtrifwasfirstuse\@secondoftwo }% }% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% } \@glsxtr@deprecated@abbrstyle{postfootnote-sm}{short-sm-postfootnote} \newabbreviationstyle{short-sm-postfootnote-desc}% {% \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},% text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% \renewcommand*{\glsxtrsetupfulldefs}{% \let\glsxtrifwasfirstuse\@secondoftwo }% }% {% \GlsXtrUseAbbrStyleFmts{short-sm-postfootnote}% } \newcommand*{\glsabbrvemfont}[1]{\emph{#1}}% \newcommand*{\glsfirstabbrvemfont}[1]{\glsabbrvemfont{#1}}% \newcommand*{\glsxtremsuffix}{\glsxtrabbrvpluralsuffix} \newcommand*{\glsfirstlongemfont}[1]{\glslongemfont{#1}}% \newcommand*{\glslongemfont}[1]{\emph{#1}}% \newabbreviationstyle{long-short-em}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% } \newabbreviationstyle{long-short-em-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-short-em}% } \newabbreviationstyle{long-em-short-em}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongemfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}},% description={\protect\glslongemfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% } \newabbreviationstyle{long-em-short-em-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% first={\protect\glsfirstlongemfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-em-short-em}% } \newabbreviationstyle{short-em-long}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% } \newabbreviationstyle{short-em-long-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-em-long}% } \newabbreviationstyle{short-em-long-em}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, description={\protect\glslongemfont{\the\glslongtok}},% first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},% text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongemfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongemfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongemfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongemfont{\glsaccesslongpl{##1}}}% }% } \newabbreviationstyle{short-em-long-em-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname},% sort={\glsxtrshortlongdescsort},% first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},% text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-em-long-em}% } \newabbreviationstyle{short-em}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortnolongname}, sort={\the\glsshorttok}, first={\protect\glsfirstabbrvemfont{\the\glsshorttok}}, firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}}, text={\protect\glsabbrvemfont{\the\glsshorttok}}, plural={\protect\glsabbrvemfont{\the\glsshortpltok}}, description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrinlinefullformat}[2]{% \protect\glsfirstabbrvemfont{\glsaccessshort{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \protect\glsfirstabbrvemfont{\Glsaccessshort{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \protect\glsfirstabbrvemfont{\Glsaccessshortpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \letabbreviationstyle{short-em-nolong}{short-em} \newabbreviationstyle{short-em-desc}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortdescname}, sort={\the\glsshorttok}, first={\protect\glsfirstabbrvemfont{\the\glsshorttok}}, firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}}, text={\protect\glsabbrvemfont{\the\glsshorttok}}, plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \letabbreviationstyle{short-em-nolong-desc}{short-em-desc} \newabbreviationstyle{nolong-short-em}% {% \GlsXtrUseAbbrStyleSetup{short-em-nolong}% }% {% \GlsXtrUseAbbrStyleFmts{short-em-nolong}% \renewcommand*{\glsxtrinlinefullformat}[2]{% \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% } \newabbreviationstyle{long-noshort-em}% {% \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongdefaultfont{\the\glslongtok}}, firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}}, text={\protect\glslongdefaultfont{\the\glslongtok}}, plural={\protect\glslongdefaultfont{\the\glslongpltok}},% description={\the\glslongtok}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \@glsxtr@deprecated@abbrstyle{long-em}{long-noshort-em} \newabbreviationstyle{long-em-noshort-em}% {% \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongemfont{\the\glslongtok}}, firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}}, text={\protect\glslongemfont{\the\glslongtok}}, plural={\protect\glslongemfont{\the\glslongpltok}},% description={\protect\glslongemfont{\the\glslongtok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% \glslongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% \glslongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% \glslongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% \glslongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \newabbreviationstyle{long-em-noshort-em-noreg}% {% \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel \GlsXtrUseAbbrStyleSetup{long-em-noshort-em}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-em-noshort-em}% } \newabbreviationstyle{long-noshort-em-desc}% {% \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \@glsxtr@deprecated@abbrstyle{long-desc-em}{long-noshort-em-desc} \newabbreviationstyle{long-em-noshort-em-desc}% {% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortdescname}, sort={\the\glslongtok}, first={\protect\glsfirstlongemfont{\the\glslongtok}}, firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}}, text={\glslongemfont{\the\glslongtok}}, plural={\glslongemfont{\the\glslongpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% \glslongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% \glslongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% \glslongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% \glslongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% \ifglsxtrinsertinside \else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% } \newabbreviationstyle{long-em-noshort-em-desc-noreg}% {% \GlsXtrUseAbbrStyleSetup{long-em-noshort-em-desc}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-em-noshort-em-desc}% } \newabbreviationstyle{short-em-footnote}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \protect\glsxtrabbrvfootnote{##1}% {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% } \@glsxtr@deprecated@abbrstyle{footnote-em}{short-em-footnote} \newabbreviationstyle{short-em-footnote-desc}% {% \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-em-footnote}% } \newabbreviationstyle{short-em-postfootnote}% {% \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},% text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% \renewcommand*{\glsxtrsetupfulldefs}{% \let\glsxtrifwasfirstuse\@secondoftwo }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% }% } \@glsxtr@deprecated@abbrstyle{postfootnote-em}{short-em-postfootnote} \newabbreviationstyle{short-em-postfootnote-desc}% {% \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},% text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% \renewcommand*{\glsxtrsetupfulldefs}{% \let\glsxtrifwasfirstuse\@secondoftwo }% }% {% \GlsXtrUseAbbrStyleFmts{short-em-postfootnote}% } \newcommand*{\glsxtruserfield}{useri} \ifdef\glscurrentfieldvalue { \newcommand*{\glsxtruserparen}[2]{% \glsxtrfullsep{#2}% \glsxtrparen {#1\ifglshasfield{\glsxtruserfield}{#2}{, \glscurrentfieldvalue}{}}% } } { \newcommand*{\glsxtruserparen}[2]{% \glsxtrfullsep{#2}% \glsxtrparen {#1\ifglshasfield{\glsxtruserfield}{#2}{, \@glo@thisvalue}{}}% } } \newcommand*{\glsabbrvuserfont}[1]{\glsabbrvdefaultfont{#1}} \newcommand*{\glsfirstabbrvuserfont}[1]{\glsabbrvuserfont{#1}} \newcommand*{\glslonguserfont}[1]{\glslongdefaultfont{#1}} \newcommand*{\glsfirstlonguserfont}[1]{\glslonguserfont{#1}} \newcommand*{\glsxtrusersuffix}{\glsxtrabbrvpluralsuffix} \newcommand*{\glsuserdescription}[2]{\glslonguserfont{#1}} \newabbreviationstyle{long-short-user}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlonguserfont{\the\glslongtok}% \protect\glsxtruserparen{\protect\glsfirstabbrvuserfont{\the\glsshorttok}}% {\the\glslabeltok}},% firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}% \protect\glsxtruserparen {\protect\glsfirstabbrvuserfont{\the\glsshortpltok}}{\the\glslabeltok}},% text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}% }% } \newabbreviationstyle{long-postshort-user}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlonguserfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtruserparen {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}% {\glslabel}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}% }% } \newcommand*{\glsabbrvscuserfont}{\glsabbrvscfont}% \newcommand*{\glsfirstabbrvscuserfont}{\glsabbrvscuserfont}% \newcommand*{\glsxtrscusersuffix}{\glsxtrscsuffix} \newcommand*{\glsxtrlongshortscusername}{% \protect\glsabbrvscuserfont{\the\glsshorttok}% } \newabbreviationstyle{long-postshort-sc-user}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortscusername}, sort={\the\glsshorttok}, first={\protect\glsfirstlonguserfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% text={\protect\glsabbrvscuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvscuserfont{\the\glsshortpltok}},% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtruserparen {\glsfirstabbrvscuserfont{\glsentryshort{\glslabel}}}% {\glslabel}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrscusersuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvscuserfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvscuserfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshort{##1}}}{##1}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshortpl{##1}}}{##1}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshort{##1}}}{##1}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshortpl{##1}}}{##1}% }% } \newcommand*{\glsxtrlongshortuserdescname}{% \protect\glslonguserfont{\the\glslongtok}% \protect\glsxtruserparen {\protect\glsabbrvuserfont{\the\glsshorttok}}{\the\glslabeltok}% } \newabbreviationstyle{long-postshort-user-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortuserdescname}, sort={\the\glslongtok}, first={\protect\glsfirstlonguserfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtruserparen {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}% {\glslabel}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-postshort-user}% } \newcommand*{\glsxtrlongshortscuserdescname}{% \protect\glslonguserfont{\the\glslongtok}% \protect\glsxtruserparen {\protect\glsabbrvscuserfont{\the\glsshorttok}}{\the\glslabeltok}% } \newabbreviationstyle{long-postshort-sc-user-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortscuserdescname}, sort={\the\glslongtok}, first={\protect\glsfirstlonguserfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% text={\protect\glsabbrvscuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvscuserfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtruserparen {\glsfirstabbrvscuserfont{\glsentryshort{\glslabel}}}% {\glslabel}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-postshort-sc-user}% } \newabbreviationstyle{short-postlong-user}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, first={\protect\glsfirstlonguserfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtruserparen {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}% {\glslabel}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}% }% } \newcommand*{\glsxtrshortlonguserdescname}{% \protect\glsabbrvuserfont{\the\glsshorttok}% \protect\glsxtruserparen {\protect\glslonguserfont{\the\glslongpltok}}% {\the\glslabeltok}% } \newabbreviationstyle{short-postlong-user-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlonguserdescname}, sort={\the\glsshorttok}, first={\protect\glsfirstlonguserfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtruserparen {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}% {\glslabel}% }% {}% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-postlong-user}% } \newabbreviationstyle{long-short-user-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortuserdescname}, sort={\glsxtrlongshortdescsort},% first={\protect\glsfirstlonguserfont{\the\glslongtok}% \protect\glsxtruserparen{\protect\glsfirstabbrvuserfont{\the\glsshorttok}}% {\the\glslabeltok}},% firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}% \protect\glsxtruserparen {\protect\glsfirstabbrvuserfont{\the\glsshortpltok}}{\the\glslabeltok}},% text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-short-user}% } \newabbreviationstyle{short-long-user}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}},% first={\protect\glsfirstabbrvuserfont{\the\glsshorttok}% \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongtok}}% {\the\glslabeltok}},% firstplural={\protect\glsfirstabbrvuserfont{\the\glsshortpltok}% \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongpltok}}% {\the\glslabeltok}},% text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvuserfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}% }% } \newabbreviationstyle{short-long-user-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlonguserdescname}, sort={\glsxtrshortlongdescsort},% first={\protect\glsfirstabbrvuserfont{\the\glsshorttok}% \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongtok}}% {\the\glslabeltok}},% firstplural={\protect\glsfirstabbrvuserfont{\the\glsshortpltok}% \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongpltok}}% {\the\glslabeltok}},% text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-long-user}% } \newrobustcmd*{\glsxtrifhyphenstart}[3]{% \ifx\glsinsert#1\relax \expandafter\@glsxtrifhyphenstart#1\relax\relax \@end@glsxtrifhyphenstart{#2}{#3}% \else \@glsxtrifhyphenstart#1\relax\relax\@end@glsxtrifhyphenstart{#2}{#3}% \fi } \def\@glsxtrifhyphenstart#1#2\@end@glsxtrifhyphenstart#3#4{% \ifx-#1\relax#3\else #4\fi } \newcommand*{\glsxtrlonghyphenshort}[4]{% {% \glsxtrifhyphenstart{#4}{\def\glsxtrwordsep{-}}{}% \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside{#4}\fi}% \ifglsxtrinsertinside\else{#4}\fi \glsxtrfullsep{#1}% \glsxtrparen{\glsfirstabbrvhyphenfont{#3\ifglsxtrinsertinside{#4}\fi}% \ifglsxtrinsertinside\else{#4}\fi}% }% } \newcommand*{\glsabbrvhyphenfont}{\glsabbrvdefaultfont}% \newcommand*{\glsfirstabbrvhyphenfont}{\glsabbrvhyphenfont}% \newcommand*{\glslonghyphenfont}{\glslongdefaultfont}% \newcommand*{\glsfirstlonghyphenfont}{\glslonghyphenfont}% \newcommand*{\glsxtrhyphensuffix}{\glsxtrabbrvpluralsuffix} \newabbreviationstyle{long-hyphen-short-hyphen}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrhyphensuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsxtrlonghyphenshort{##1}{\glsaccesslong{##1}}{\glsaccessshort{##1}}{##2}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsxtrlonghyphenshort{##1}{\glsaccesslongpl{##1}}% {\glsaccessshortpl{##1}}{##2}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsxtrlonghyphenshort{##1}{\Glsaccesslong{##1}}{\glsaccessshort{##1}}{##2}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsxtrlonghyphenshort{##1}{\Glsaccesslongpl{##1}}% {\glsaccessshortpl{##1}}{##2}% }% } \newabbreviationstyle{long-hyphen-short-hyphen-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-hyphen-short-hyphen}% } \newcommand*{\glsxtrlonghyphennoshort}[3]{% {% \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}% \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside{#3}\fi}% \ifglsxtrinsertinside\else{#3}\fi }% } \newabbreviationstyle{long-hyphen-noshort-desc-noreg}% {% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortdescname}, sort={\expandonce\glsxtrorglong}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% text={\protect\glslonghyphenfont{\the\glslongtok}},% plural={\protect\glslonghyphenfont{\the\glslongpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-hyphen-short-hyphen}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}% }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}% \glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}% \glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}% \glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}% \glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}% }% } \newabbreviationstyle{long-hyphen-noshort-noreg}% {% \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% text={\protect\glslonghyphenfont{\the\glslongtok}},% plural={\protect\glslonghyphenfont{\the\glslongpltok}},% description={\the\glslongtok}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-hyphen-noshort-desc-noreg}% } \newcommand*{\glsxtrlonghyphen}[3]{% {% \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}% \glsfirstlonghyphenfont{#1}% }% } \newcommand*{\glsxtrposthyphenshort}[2]{% {% \glsxtrifhyphenstart{#2}{\def\glsxtrwordsep{-}}{}% \ifglsxtrinsertinside{\glsfirstlonghyphenfont{#2}}\else{#2}\fi \glsxtrfullsep{#1}% \glsxtrparen {\glsfirstabbrvhyphenfont{\glsentryshort{#1}\ifglsxtrinsertinside{#2}\fi}% \ifglsxtrinsertinside\else{#2}\fi }% }% } \newcommand*{\glsxtrposthyphensubsequent}[2]{% \glsabbrvfont{\ifglsxtrinsertinside {#2}\fi}% \ifglsxtrinsertinside \else{#2}\fi } \newabbreviationstyle{long-hyphen-postshort-hyphen}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtrposthyphenshort{\glslabel}{\glsinsert}% }% {% \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% }% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% \glsabbrvfont{\glsaccessshort{##1}}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% \glsabbrvfont{\glsaccessshortpl{##1}}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% \glsabbrvfont{\Glsaccessshort{##1}}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% \glsabbrvfont{\Glsaccessshortpl{##1}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsxtrlonghyphen{\glsaccesslong{##1}}{##1}{##2}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsxtrlonghyphen{\glsaccesslongpl{##1}}{##1}{##2}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsxtrlonghyphen{\Glsaccesslong{##1}}{##1}{##2}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsxtrlonghyphen{\Glsaccesslongpl{##1}}{##1}{##2}% }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlonghyphenfont{\glsaccesslong{##1}% \ifglsxtrinsertinside{##2}\fi}% \ifglsxtrinsertinside \else{##2}\fi }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlonghyphenfont{\glsaccesslongpl{##1}% \ifglsxtrinsertinside{##2}\fi}% \ifglsxtrinsertinside \else{##2}\fi }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlonghyphenfont{\Glsaccesslong{##1}% \ifglsxtrinsertinside{##2}\fi}% \ifglsxtrinsertinside \else{##2}\fi }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlonghyphenfont{\Glsaccesslongpl{##1}% \ifglsxtrinsertinside{##2}\fi}% \ifglsxtrinsertinside \else{##2}\fi }% } \newabbreviationstyle{long-hyphen-postshort-hyphen-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtrposthyphenshort{\glslabel}{\glsinsert}% }% {% \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% }% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-hyphen-postshort-hyphen}% } \newcommand*{\glsxtrshorthyphenlong}[4]{% {% \glsxtrifhyphenstart{#4}{\def\glsxtrwordsep{-}}{}% \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside{#4}\fi}% \ifglsxtrinsertinside\else{#4}\fi \glsxtrfullsep{#1}% \glsxtrparen{\glsfirstlonghyphenfont{#3\ifglsxtrinsertinside{#4}\fi}% \ifglsxtrinsertinside\else{#4}\fi}% }% } \newabbreviationstyle{short-hyphen-long-hyphen}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrhyphensuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsxtrshorthyphenlong{##1}{\glsaccessshort{##1}}{\glsaccesslong{##1}}{##2}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsxtrshorthyphenlong{##1}% {\glsaccessshortpl{##1}}{\glsaccesslongpl{##1}}{##2}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsxtrshorthyphenlong{##1}{\glsaccessshort{##1}}{\Glsaccesslong{##1}}{##2}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsxtrshorthyphenlong{##1}% {\glsaccessshortpl{##1}}{\Glsaccesslongpl{##1}}{##2}% }% } \newabbreviationstyle{short-hyphen-long-hyphen-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-hyphen-long-hyphen}% } \newcommand*{\glsxtrshorthyphen}[3]{% {% \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}% \glsfirstabbrvhyphenfont{#1}% }% } \newcommand*{\glsxtrposthyphenlong}[2]{% {% \glsxtrifhyphenstart{#2}{\def\glsxtrwordsep{-}}{}% \ifglsxtrinsertinside{\glsfirstabbrvhyphenfont{#2}}\else{#2}\fi \glsxtrfullsep{#1}% \glsxtrparen {\glsfirstlonghyphenfont{\glsentrylong{#1}\ifglsxtrinsertinside{#2}\fi}% \ifglsxtrinsertinside\else{#2}\fi }% }% } \newabbreviationstyle{short-hyphen-postlong-hyphen}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtrposthyphenlong{\glslabel}{\glsinsert}% }% {% \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% }% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% \glsabbrvfont{\glsaccessshort{##1}}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% \glsabbrvfont{\glsaccessshortpl{##1}}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% \glsabbrvfont{\Glsaccessshort{##1}}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% \glsabbrvfont{\Glsaccessshortpl{##1}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsxtrshorthyphen{\glsaccessshort{##1}}{##1}{##2}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsxtrshorthyphen{\glsaccessshortpl{##1}}{##1}{##2}% }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsxtrshorthyphen{\Glsaccessshort{##1}}{##1}{##2}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsxtrshorthyphen{\Glsaccessshortpl{##1}}{##1}{##2}% }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstabbrvhyphenfont{\glsaccessshort{##1}% \ifglsxtrinsertinside{##2}\fi}% \ifglsxtrinsertinside \else{##2}\fi }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstabbrvhyphenfont{\glsaccessshortpl{##1}% \ifglsxtrinsertinside{##2}\fi}% \ifglsxtrinsertinside \else{##2}\fi }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstabbrvhyphenfont{\Glsaccessshort{##1}% \ifglsxtrinsertinside{##2}\fi}% \ifglsxtrinsertinside \else{##2}\fi }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstabbrvhyphenfont{\Glsaccessshortpl{##1}% \ifglsxtrinsertinside{##2}\fi}% \ifglsxtrinsertinside \else{##2}\fi }% } \newabbreviationstyle{short-hyphen-postlong-hyphen-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort},% first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% \glsxtrposthyphenlong{\glslabel}{\glsinsert}% }% {% \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% }% }% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{short-hyphen-postlong-hyphen}% } \newcommand*{\glsabbrvonlyfont}{\glsabbrvdefaultfont}% \newcommand*{\glsfirstabbrvonlyfont}{\glsabbrvonlyfont}% \newcommand*{\glslongonlyfont}{\glslongdefaultfont}% \newcommand*{\glsfirstlongonlyfont}{\glslongonlyfont}% \newcommand*{\glsxtronlysuffix}{\glsxtrabbrvpluralsuffix} \newcommand*{\glsxtronlyname}{% \protect\glsabbrvonlyfont{\the\glsshorttok}% } \newabbreviationstyle{long-only-short-only}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtronlyname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% text={\protect\glsabbrvonlyfont{\the\glsshorttok}},% plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}},% description={\protect\glslongonlyfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtronlysuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvonlyfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvonlyfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongonlyfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongonlyfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvonlyfont{\Glsaccessshortpl{##1}}}% }% } \newcommand*{\glsxtronlydescsort}{\the\glslongtok} \newcommand*{\glsxtronlydescname}{% \protect\glslongfont{\the\glslongtok}% } \newabbreviationstyle{long-only-short-only-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtronlydescname}, sort={\glsxtronlydescsort},% first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% text={\protect\glsabbrvonlyfont{\the\glsshorttok}},% plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-only-short-only}% } \newcommand*{\glsabbrvsconlyfont}{\glsabbrvscfont}% \newcommand*{\glsfirstabbrvsconlyfont}{\glsabbrvsconlyfont}% \newcommand*{\glsxtrsconlysuffix}{\glsxtrscsuffix} \newcommand*{\glsxtrsconlyname}{% \protect\glsabbrvsconlyfont{\the\glsshorttok}% } \newabbreviationstyle{long-only-short-sc-only}% {% \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrsconlyname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% text={\protect\glsabbrvsconlyfont{\the\glsshorttok}},% plural={\protect\glsabbrvsconlyfont{\the\glsshortpltok}},% description={\protect\glslongonlyfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsconlysuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvsconlyfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvsconlyfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongonlyfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongonlyfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullformat}[2]{% \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi }% \renewcommand*{\glsxtrinlinefullformat}[2]{% \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshort{##1}}}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshortpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi \glsxtrfullsep{##1}% \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\Glsaccessshortpl{##1}}}% }% } \newcommand*{\glsxtrsconlydescsort}{\glsxtronlydescsort} \newcommand*{\glsxtrsconlydescname}{\glsxtronlydescname} \newabbreviationstyle{long-only-short-sc-only-desc}% {% \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrsconlydescname}, sort={\glsxtrsconlydescsort},% first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% text={\protect\glsabbrvsconlyfont{\the\glsshorttok}},% plural={\protect\glsabbrvsconlyfont{\the\glsshortpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% }% {}% }% }% {% \GlsXtrUseAbbrStyleFmts{long-only-short-sc-only}% } \let\@glsxtr@org@markright\markright \renewcommand*{\markright}[1]{% \glsxtrmarkhook \@glsxtr@org@markright{\@glsxtrinmark#1\@glsxtrnotinmark}% \glsxtrrestoremarkhook } \let\@glsxtr@org@markboth\markboth \renewcommand*{\markboth}[2]{% \glsxtrmarkhook \@glsxtr@org@markboth {\@glsxtrinmark#1\@glsxtrnotinmark}% {\@glsxtrinmark#2\@glsxtrnotinmark}% \glsxtrrestoremarkhook } \let\@glsxtr@org@@starttoc\@starttoc \renewcommand*{\@starttoc}[1]{% \glsxtrmarkhook \@glsxtrinmark \@glsxtr@org@@starttoc{#1}% \@glsxtrnotinmark \glsxtrrestoremarkhook } \newcommand*{\glsxtrRevertMarks}{% \let\markright\@glsxtr@org@markright \let\markboth\@glsxtr@org@markboth \let\@starttoc\@glsxtr@org@@starttoc } \newcommand*{\glsxtrRevertTocMarks}{% \let\@starttoc\@glsxtr@org@@starttoc } \newcommand*{\glsxtrifinmark}[2]{#2} \newrobustcmd*{\@glsxtrinmark}{% \let\glsxtrifinmark\@firstoftwo } \newrobustcmd*{\@glsxtrnotinmark}{% \let\glsxtrifinmark\@secondoftwo } \ifdef\texorpdfstring { \newcommand*{\glsxtrtitleorpdforheading}[3]{\texorpdfstring{#1}{#2}} } { \newcommand*{\glsxtrtitleorpdforheading}[3]{#1} } \newcommand*{\glsxtrmarkhook}{% \let\@glsxtr@org@MakeUppercase\MakeUppercase \let\@glsxtr@org@glsxtrtitleorpdforheading\glsxtrtitleorpdforheading \let\@glsxtr@org@glsxtrtitleshort\glsxtrtitleshort \let\@glsxtr@org@glsxtrtitleshortpl\glsxtrtitleshortpl \let\@glsxtr@org@Glsxtrtitleshort\Glsxtrtitleshort \let\@glsxtr@org@Glsxtrtitleshortpl\Glsxtrtitleshortpl \let\@glsxtr@org@glsxtrtitlename\glsxtrtitlename \let\@glsxtr@org@Glsxtrtitlename\Glsxtrtitlename \let\@glsxtr@org@glsxtrtitletext\glsxtrtitletext \let\@glsxtr@org@Glsxtrtitletext\Glsxtrtitletext \let\@glsxtr@org@glsxtrtitleplural\glsxtrtitleplural \let\@glsxtr@org@Glsxtrtitleplural\Glsxtrtitleplural \let\@glsxtr@org@glsxtrtitlefirst\glsxtrtitlefirst \let\@glsxtr@org@Glsxtrtitlefirst\Glsxtrtitlefirst \let\@glsxtr@org@glsxtrtitlefirstplural\glsxtrtitlefirstplural \let\@glsxtr@org@Glsxtrtitlefirstplural\Glsxtrtitlefirstplural \let\@glsxtr@org@glsxtrtitlelong\glsxtrtitlelong \let\@glsxtr@org@glsxtrtitlelongpl\glsxtrtitlelongpl \let\@glsxtr@org@Glsxtrtitlelong\Glsxtrtitlelong \let\@glsxtr@org@Glsxtrtitlelongpl\Glsxtrtitlelongpl \let\@glsxtr@org@glsxtrtitlefull\glsxtrtitlefull \let\@glsxtr@org@glsxtrtitlefullpl\glsxtrtitlefullpl \let\@glsxtr@org@Glsxtrtitlefull\Glsxtrtitlefull \let\@glsxtr@org@Glsxtrtitlefullpl\Glsxtrtitlefullpl \let\glsxtrifinmark\@firstoftwo \let\MakeUppercase\MakeTextUppercase \let\glsxtrtitleorpdforheading\@thirdofthree \let\glsxtrtitleshort\glsxtrheadshort \let\glsxtrtitleshortpl\glsxtrheadshortpl \let\Glsxtrtitleshort\Glsxtrheadshort \let\Glsxtrtitleshortpl\Glsxtrheadshortpl \let\glsxtrtitlename\glsxtrheadname \let\Glsxtrtitlename\Glsxtrheadname \let\glsxtrtitletext\glsxtrheadtext \let\Glsxtrtitletext\Glsxtrheadtext \let\glsxtrtitleplural\glsxtrheadplural \let\Glsxtrtitleplural\Glsxtrheadplural \let\glsxtrtitlefirst\glsxtrheadfirst \let\Glsxtrtitlefirst\Glsxtrheadfirst \let\glsxtrtitlefirstplural\glsxtrheadfirstplural \let\Glsxtrtitlefirstplural\Glsxtrheadfirstplural \let\glsxtrtitlelong\glsxtrheadlong \let\glsxtrtitlelongpl\glsxtrheadlongpl \let\Glsxtrtitlelong\Glsxtrheadlong \let\Glsxtrtitlelongpl\Glsxtrheadlongpl \let\glsxtrtitlefull\glsxtrheadfull \let\glsxtrtitlefullpl\glsxtrheadfullpl \let\Glsxtrtitlefull\Glsxtrheadfull \let\Glsxtrtitlefullpl\Glsxtrheadfullpl } \newcommand*{\glsxtrrestoremarkhook}{% \let\glsxtrifinmark\@secondoftwo \let\MakeUppercase\@glsxtr@org@MakeUppercase \let\glsxtrtitleorpdforheading\@glsxtr@org@glsxtrtitleorpdforheading \let\glsxtrtitleshort\@glsxtr@org@glsxtrtitleshort \let\glsxtrtitleshortpl\@glsxtr@org@glsxtrtitleshortpl \let\Glsxtrtitleshort\@glsxtr@org@Glsxtrtitleshort \let\Glsxtrtitleshortpl\@glsxtr@org@Glsxtrtitleshortpl \let\glsxtrtitlename\@glsxtr@org@glsxtrtitlename \let\Glsxtrtitlename\@glsxtr@org@Glsxtrtitlename \let\glsxtrtitletext\@glsxtr@org@glsxtrtitletext \let\Glsxtrtitletext\@glsxtr@org@Glsxtrtitletext \let\glsxtrtitleplural\@glsxtr@org@glsxtrtitleplural \let\Glsxtrtitleplural\@glsxtr@org@Glsxtrtitleplural \let\glsxtrtitlefirst\@glsxtr@org@glsxtrtitlefirst \let\Glsxtrtitlefirst\@glsxtr@org@Glsxtrtitlefirst \let\glsxtrtitlefirstplural\@glsxtr@org@glsxtrtitlefirstplural \let\Glsxtrtitlefirstplural\@glsxtr@org@Glsxtrtitlefirstplural \let\glsxtrtitlelong\@glsxtr@org@glsxtrtitlelong \let\glsxtrtitlelongpl\@glsxtr@org@glsxtrtitlelongpl \let\Glsxtrtitlelong\@glsxtr@org@Glsxtrtitlelong \let\Glsxtrtitlelongpl\@glsxtr@org@Glsxtrtitlelongpl \let\glsxtrtitlefull\@glsxtr@org@glsxtrtitlefull \let\glsxtrtitlefullpl\@glsxtr@org@glsxtrtitlefullpl \let\Glsxtrtitlefull\@glsxtr@org@Glsxtrtitlefull \let\Glsxtrtitlefullpl\@glsxtr@org@Glsxtrtitlefullpl } \newcommand*{\glsxtrheadshort}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSxtrshort[noindex,hyper=false]{#1}[]% }% {% \glsxtrshort[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\glsxtrtitleshort}[1]{% \glsxtrshort[noindex,hyper=false]{#1}[]% } \newcommand*{\glsxtrheadshortpl}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSxtrshortpl[noindex,hyper=false]{#1}[]% }% {% \glsxtrshortpl[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\glsxtrtitleshortpl}[1]{% \glsxtrshortpl[noindex,hyper=false]{#1}[]% } \newcommand*{\Glsxtrheadshort}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSxtrshort[noindex,hyper=false]{#1}[]% }% {% \Glsxtrshort[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\Glsxtrtitleshort}[1]{% \Glsxtrshort[noindex,hyper=false]{#1}[]% } \newrobustcmd*{\GLSxtrtitleshort}[1]{% \GLSxtrshort[noindex,hyper=false]{#1}[]% } \newcommand*{\Glsxtrheadshortpl}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSxtrshortpl[noindex,hyper=false]{#1}[]% }% {% \Glsxtrshortpl[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\Glsxtrtitleshortpl}[1]{% \Glsxtrshortpl[noindex,hyper=false]{#1}[]% } \newrobustcmd*{\GLSxtrtitleshortpl}[1]{% \GLSxtrshortpl[noindex,hyper=false]{#1}[]% } \newcommand*{\glsxtrheadname}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSname[noindex,hyper=false]{#1}[]% }% {% \glsname[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\glsxtrtitlename}[1]{% \glsname[noindex,hyper=false]{#1}[]% } \newcommand*{\Glsxtrheadname}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSname[noindex,hyper=false]{#1}[]% }% {% \Glsname[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\Glsxtrtitlename}[1]{% \Glsname[noindex,hyper=false]{#1}[]% } \newrobustcmd*{\GLSxtrtitlename}[1]{% \GLSname[noindex,hyper=false]{#1}[]% } \newcommand*{\glsxtrheadtext}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLStext[noindex,hyper=false]{#1}[]% }% {% \glstext[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\glsxtrtitletext}[1]{% \glstext[noindex,hyper=false]{#1}[]% } \newcommand*{\Glsxtrheadtext}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLStext[noindex,hyper=false]{#1}[]% }% {% \Glstext[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\Glsxtrtitletext}[1]{% \Glstext[noindex,hyper=false]{#1}[]% } \newrobustcmd*{\GLSxtrtitletext}[1]{% \GLStext[noindex,hyper=false]{#1}[]% } \newcommand*{\glsxtrheadplural}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSplural[noindex,hyper=false]{#1}[]% }% {% \glsplural[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\glsxtrtitleplural}[1]{% \glsplural[noindex,hyper=false]{#1}[]% } \newcommand*{\Glsxtrheadplural}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSplural[noindex,hyper=false]{#1}[]% }% {% \Glsplural[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\Glsxtrtitleplural}[1]{% \Glsplural[noindex,hyper=false]{#1}[]% } \newrobustcmd*{\GLSxtrtitleplural}[1]{% \GLSplural[noindex,hyper=false]{#1}[]% } \newcommand*{\glsxtrheadfirst}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSfirst[noindex,hyper=false]{#1}[]% }% {% \glsfirst[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\glsxtrtitlefirst}[1]{% \glsfirst[noindex,hyper=false]{#1}[]% } \newcommand*{\Glsxtrheadfirst}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSfirst[noindex,hyper=false]{#1}[]% }% {% \Glsfirst[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\Glsxtrtitlefirst}[1]{% \Glsfirst[noindex,hyper=false]{#1}[]% } \newrobustcmd*{\GLSxtrtitlefirst}[1]{% \GLSfirst[noindex,hyper=false]{#1}[]% } \newcommand*{\glsxtrheadfirstplural}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSfirstplural[noindex,hyper=false]{#1}[]% }% {% \glsfirstplural[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\glsxtrtitlefirstplural}[1]{% \glsfirstplural[noindex,hyper=false]{#1}[]% } \newcommand*{\Glsxtrheadfirstplural}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSfirstplural[noindex,hyper=false]{#1}[]% }% {% \Glsfirstplural[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\Glsxtrtitlefirstplural}[1]{% \Glsfirstplural[noindex,hyper=false]{#1}[]% } \newrobustcmd*{\GLSxtrtitlefirstplural}[1]{% \GLSfirstplural[noindex,hyper=false]{#1}[]% } \newcommand*{\glsxtrheadlong}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSxtrlong[noindex,hyper=false]{#1}[]% }% {% \glsxtrlong[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\glsxtrtitlelong}[1]{% \glsxtrlong[noindex,hyper=false]{#1}[]% } \newcommand*{\glsxtrheadlongpl}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSxtrlongpl[noindex,hyper=false]{#1}[]% }% {% \glsxtrlongpl[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\glsxtrtitlelongpl}[1]{% \glsxtrlongpl[noindex,hyper=false]{#1}[]% } \newcommand*{\Glsxtrheadlong}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSxtrlong[noindex,hyper=false]{#1}[]% }% {% \Glsxtrlong[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\Glsxtrtitlelong}[1]{% \Glsxtrlong[noindex,hyper=false]{#1}[]% } \newrobustcmd*{\GLSxtrtitlelong}[1]{% \GLSxtrlong[noindex,hyper=false]{#1}[]% } \newcommand*{\Glsxtrheadlongpl}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSxtrlongpl[noindex,hyper=false]{#1}[]% }% {% \Glsxtrlongpl[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\Glsxtrtitlelongpl}[1]{% \Glsxtrlongpl[noindex,hyper=false]{#1}[]% } \newrobustcmd*{\GLSxtrtitlelongpl}[1]{% \GLSxtrlongpl[noindex,hyper=false]{#1}[]% } \newcommand*{\glsxtrheadfull}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSxtrfull[noindex,hyper=false]{#1}[]% }% {% \glsxtrfull[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\glsxtrtitlefull}[1]{% \glsxtrfull[noindex,hyper=false]{#1}[]% } \newcommand*{\glsxtrheadfullpl}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSxtrfullpl[noindex,hyper=false]{#1}[]% }% {% \glsxtrfullpl[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\glsxtrtitlefullpl}[1]{% \glsxtrfullpl[noindex,hyper=false]{#1}[]% } \newcommand*{\Glsxtrheadfull}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSxtrfull[noindex,hyper=false]{#1}[]% }% {% \Glsxtrfull[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\Glsxtrtitlefull}[1]{% \Glsxtrfull[noindex,hyper=false]{#1}[]% } \newrobustcmd*{\GLSxtrtitlefull}[1]{% \GLSxtrfull[noindex,hyper=false]{#1}[]% } \newcommand*{\Glsxtrheadfullpl}[1]{% \protect\NoCaseChange {% \glsifattribute{#1}{headuc}{true}% {% \GLSxtrfullpl[noindex,hyper=false]{#1}[]% }% {% \Glsxtrfullpl[noindex,hyper=false]{#1}[]% }% }% } \newrobustcmd*{\Glsxtrtitlefullpl}[1]{% \Glsxtrfullpl[noindex,hyper=false]{#1}[]% } \newrobustcmd*{\GLSxtrtitlefullpl}[1]{% \GLSxtrfullpl[noindex,hyper=false]{#1}[]% } \ifdef\texorpdfstring { \newcommand*{\glsfmtshort}[1]{% \texorpdfstring {\glsxtrtitleshort{#1}}% {\glsentryshort{#1}}% } } { \newcommand*{\glsfmtshort}[1]{% \glsxtrtitleshort{#1}} } \ifdef\texorpdfstring { \newcommand*{\glsfmtshortpl}[1]{% \texorpdfstring {\glsxtrtitleshortpl{#1}}% {\glsentryshortpl{#1}}% } } { \newcommand*{\glsfmtshortpl}[1]{% \glsxtrtitleshortpl{#1}} } \ifdef\texorpdfstring { \newcommand*{\Glsfmtshort}[1]{% \texorpdfstring {\Glsxtrtitleshort{#1}}% {\glsentryshort{#1}}% } } { \newcommand*{\Glsfmtshort}[1]{% \Glsxtrtitleshort{#1}} } \ifdef\texorpdfstring { \newcommand*{\Glsfmtshortpl}[1]{% \texorpdfstring {\Glsxtrtitleshortpl{#1}}% {\glsentryshortpl{#1}}% } } { \newcommand*{\Glsfmtshortpl}[1]{% \Glsxtrtitleshortpl{#1}} } \ifdef\texorpdfstring { \newcommand*{\glsfmtname}[1]{% \texorpdfstring {\glsxtrtitlename{#1}}% {\glsentryname{#1}}% } } { \newcommand*{\glsfmtname}[1]{% \glsxtrtitlename{#1}} } \ifdef\texorpdfstring { \newcommand*{\Glsfmtname}[1]{% \texorpdfstring {\Glsxtrtitlename{#1}}% {\glsentryname{#1}}% } } { \newcommand*{\Glsfmtname}[1]{% \Glsxtrtitlename{#1}} } \ifdef\texorpdfstring { \newcommand*{\GLSfmtname}[1]{% \texorpdfstring {\GLSxtrtitlename{#1}}% {\glsentryname{#1}}% } } { \newcommand*{\GLSfmtname}[1]{% \GLSxtrtitlename{#1}} } \ifdef\texorpdfstring { \newcommand*{\glsfmttext}[1]{% \texorpdfstring {\glsxtrtitletext{#1}}% {\glsentrytext{#1}}% } } { \newcommand*{\glsfmttext}[1]{% \glsxtrtitletext{#1}} } \ifdef\texorpdfstring { \newcommand*{\Glsfmttext}[1]{% \texorpdfstring {\Glsxtrtitletext{#1}}% {\glsentrytext{#1}}% } } { \newcommand*{\Glsfmttext}[1]{% \Glsxtrtitletext{#1}} } \ifdef\texorpdfstring { \newcommand*{\GLSfmttext}[1]{% \texorpdfstring {\GLSxtrtitletext{#1}}% {\glsentrytext{#1}}% } } { \newcommand*{\GLSfmttext}[1]{% \GLSxtrtitletext{#1}} } \ifdef\texorpdfstring { \newcommand*{\glsfmtplural}[1]{% \texorpdfstring {\glsxtrtitleplural{#1}}% {\glsentryplural{#1}}% } } { \newcommand*{\glsfmtplural}[1]{% \glsxtrtitleplural{#1}} } \ifdef\texorpdfstring { \newcommand*{\Glsfmtplural}[1]{% \texorpdfstring {\Glsxtrtitleplural{#1}}% {\glsentryplural{#1}}% } } { \newcommand*{\Glsfmtplural}[1]{% \Glsxtrtitleplural{#1}} } \ifdef\texorpdfstring { \newcommand*{\GLSfmtplural}[1]{% \texorpdfstring {\GLSxtrtitleplural{#1}}% {\glsentryplural{#1}}% } } { \newcommand*{\GLSfmtplural}[1]{% \GLSxtrtitleplural{#1}} } \ifdef\texorpdfstring { \newcommand*{\glsfmtfirst}[1]{% \texorpdfstring {\glsxtrtitlefirst{#1}}% {\glsentryfirst{#1}}% } } { \newcommand*{\glsfmtfirst}[1]{% \glsxtrtitlefirst{#1}} } \ifdef\texorpdfstring { \newcommand*{\Glsfmtfirst}[1]{% \texorpdfstring {\Glsxtrtitlefirst{#1}}% {\glsentryfirst{#1}}% } } { \newcommand*{\Glsfmtfirst}[1]{% \Glsxtrtitlefirst{#1}} } \ifdef\texorpdfstring { \newcommand*{\GLSfmtfirst}[1]{% \texorpdfstring {\GLSxtrtitlefirst{#1}}% {\glsentryfirst{#1}}% } } { \newcommand*{\GLSfmtfirst}[1]{% \Glsxtrtitlefirst{#1}} } \ifdef\texorpdfstring { \newcommand*{\glsfmtfirstpl}[1]{% \texorpdfstring {\glsxtrtitlefirstplural{#1}}% {\glsentryfirstplural{#1}}% } } { \newcommand*{\glsfmtfirstpl}[1]{% \glsxtrtitlefirstplural{#1}} } \ifdef\texorpdfstring { \newcommand*{\Glsfmtfirstpl}[1]{% \texorpdfstring {\Glsxtrtitlefirstplural{#1}}% {\glsentryfirstplural{#1}}% } } { \newcommand*{\Glsfmtfirstpl}[1]{% \Glsxtrtitlefirstplural{#1}} } \ifdef\texorpdfstring { \newcommand*{\GLSfmtfirstpl}[1]{% \texorpdfstring {\GLSxtrtitlefirstplural{#1}}% {\glsentryfirstplural{#1}}% } } { \newcommand*{\GLSfmtfirstpl}[1]{% \GLSxtrtitlefirstplural{#1}} } \ifdef\texorpdfstring { \newcommand*{\glsfmtlong}[1]{% \texorpdfstring {\glsxtrtitlelong{#1}}% {\glsentrylong{#1}}% } } { \newcommand*{\glsfmtlong}[1]{% \glsxtrtitlelong{#1}} } \ifdef\texorpdfstring { \newcommand*{\Glsfmtlong}[1]{% \texorpdfstring {\Glsxtrtitlelong{#1}}% {\glsentrylong{#1}}% } } { \newcommand*{\Glsfmtlong}[1]{% \Glsxtrtitlelong{#1}} } \ifdef\texorpdfstring { \newcommand*{\GLSfmtlong}[1]{% \texorpdfstring {\GLSxtrtitlelong{#1}}% {\glsentrylong{#1}}% } } { \newcommand*{\GLSfmtlong}[1]{% \GLSxtrtitlelong{#1}} } \ifdef\texorpdfstring { \newcommand*{\glsfmtlongpl}[1]{% \texorpdfstring {\glsxtrtitlelongpl{#1}}% {\glsentrylongpl{#1}}% } } { \newcommand*{\glsfmtlongpl}[1]{% \glsxtrtitlelongpl{#1}} } \ifdef\texorpdfstring { \newcommand*{\Glsfmtlongpl}[1]{% \texorpdfstring {\Glsxtrtitlelongpl{#1}}% {\glsentrylongpl{#1}}% } } { \newcommand*{\Glsfmtlongpl}[1]{% \Glsxtrtitlelongpl{#1}} } \ifdef\texorpdfstring { \newcommand*{\GLSfmtlongpl}[1]{% \texorpdfstring {\GLSxtrtitlelongpl{#1}}% {\glsentrylongpl{#1}}% } } { \newcommand*{\GLSfmtlongpl}[1]{% \GLSxtrtitlelongpl{#1}} } \newcommand*{\glspdffmtfull}[1]{\glsentrylong{#1} (\glsentryshort{#1})}% \newcommand*{\glspdffmtfullpl}[1]{\glsentrylongpl{#1} (\glsentryshortpl{#1})}% \ifdef\texorpdfstring { \newcommand*{\glsfmtfull}[1]{% \texorpdfstring {\glsxtrtitlefull{#1}}% {\glspdffmtfull{#1}}% } } { \newcommand*{\glsfmtfull}[1]{% \glsxtrtitlefull{#1}} } \ifdef\texorpdfstring { \newcommand*{\Glsfmtfull}[1]{% \texorpdfstring {\Glsxtrtitlefull{#1}}% {\glspdffmtfull{#1}{}}% } } { \newcommand*{\Glsfmtfull}[1]{% \Glsxtrtitlefull{#1}} } \ifdef\texorpdfstring { \newcommand*{\GLSfmtfull}[1]{% \texorpdfstring {\GLSxtrtitlefull{#1}}% {\glspdffmtfull{#1}}% } } { \newcommand*{\GLSfmtfull}[1]{% \GLSxtrtitlefull{#1}} } \ifdef\texorpdfstring { \newcommand*{\glsfmtfullpl}[1]{% \texorpdfstring {\glsxtrtitlefullpl{#1}}% {\glspdffmtfullpl{#1}}% } } { \newcommand*{\glsfmtfullpl}[1]{% \glsxtrtitlefullpl{#1}} } \ifdef\texorpdfstring { \newcommand*{\Glsfmtfullpl}[1]{% \texorpdfstring {\Glsxtrtitlefullpl{#1}}% {\glspdffmtfullpl{#1}{}}% } } { \newcommand*{\Glsfmtfullpl}[1]{% \Glsxtrtitlefullpl{#1}} } \ifdef\texorpdfstring { \newcommand*{\GLSfmtfullpl}[1]{% \texorpdfstring {\GLSxtrtitlefullpl{#1}}% {\glspdffmtfullpl{#1}{}}% } } { \newcommand*{\GLSfmtfullpl}[1]{% \GLSxtrtitlefullpl{#1}} } \newcommand*{\multiglossaryentrysetup}[1]{\setkeys{glsxtrcombined}{#1}} \newcommand*{\@gls@combined@indexmain}{1} \define@choicekey{glsxtrcombined}{indexmain}% [\@gls@combined@indexmain@val\@gls@combined@indexmain] {false,true,first}[true]{} \newcommand*{\@gls@combined@indexothers}{2} \define@choicekey{glsxtrcombined}{indexothers}% [\@gls@combined@indexothers@val\@gls@combined@indexothers] {false,true,first}[true]{} \newcommand*{\@gls@combined@hyper}{3} \define@choicekey{glsxtrcombined}{hyper}% [\@gls@combined@hyper@val\@gls@combined@hyper] {none,allmain,mainonly,individual,otheronly,notmainfirst,nototherfirst,notfirst}{} \newcommand*{\@gls@combined@encapmain}{glsnumberformat} \define@key{glsxtrcombined}{encapmain}{% \renewcommand*{\@gls@combined@encapmain}{#1}% } \newcommand*{\@gls@combined@encapothers}{glsnumberformat} \define@key{glsxtrcombined}{encapothers}{% \renewcommand*{\@gls@combined@encapothers}{#1}% } \newcommand*{\@gls@combined@textformat}{@firstofone} \define@key{glsxtrcombined}{textformat}{% \renewcommand*{\@gls@combined@textformat}{#1}% } \newcommand*{\@gls@combined@category}{} \define@key{glsxtrcombined}{category}{% \renewcommand*{\@gls@combined@category}{#1}% } \define@key{glsxtrcombinedpreopts}{category}{% \renewcommand*{\@gls@combined@category}{#1}% } \newcommand*{\@gls@combined@mglsopts}{} \define@key{glsxtrcombined}{mglsopts}{% \renewcommand*{\@gls@combined@mglsopts}{#1}% } \define@key{glsxtrcombinedpreopts}{mglsopts}{% \@gls@combined@mglsopts@do {% \renewcommand*{\@gls@combined@mglsopts}{#1}% }% } \newcommand*{\@gls@combined@mglsopts@do}[1]{#1} \newcommand*{\mgls@disable@mglsopts}{% \let\@gls@combined@mglsopts@do\@gls@combined@mglsopts@do@not } \newcommand*{\mgls@enable@mglsopts}{% \let\@gls@combined@mglsopts@do\@firstofone } \newcommand*{\@gls@combined@mglsopts@do@not}[1]{% \PackageError{glossaries-extra}{`mglsopts' key not permitted inside `setup' value}{}% } \newcommand*{\@gls@combined@firstprefix}{} \define@key{glsxtrcombined}{firstprefix}{% \renewcommand*{\@gls@combined@firstprefix}{#1}% } \newcommand*{\@gls@combined@usedprefix}{} \define@key{glsxtrcombined}{usedprefix}{% \renewcommand*{\@gls@combined@usedprefix}{#1}% } \newcommand*{\@gls@combined@firstsuffix}{} \define@key{glsxtrcombined}{firstsuffix}{% \renewcommand*{\@gls@combined@firstsuffix}{#1}% } \newcommand*{\@gls@combined@usedsuffix}{} \define@key{glsxtrcombined}{usedsuffix}{% \renewcommand*{\@gls@combined@usedsuffix}{#1}% } \define@boolkey{glsxtrcombined}{firstskipmain}[true]{} \KV@glsxtrcombined@firstskipmainfalse \define@boolkey{glsxtrcombined}{firstskipothers}[true]{} \KV@glsxtrcombined@firstskipothersfalse \define@boolkey{glsxtrcombined}{usedskipmain}[true]{} \KV@glsxtrcombined@usedskipmainfalse \define@boolkey{glsxtrcombined}{usedskipothers}[true]{} \KV@glsxtrcombined@usedskipothersfalse \newcommand*{\@gls@combined@postlinks@nr}{0} \define@choicekey{glsxtrcombined}{postlinks}% [\@gls@combined@postlinks@val\@gls@combined@postlinks@nr] {none,all,notlast,mainnotlast,mainonly,othernotlast,otheronly}{} \newcommand*{\@gls@combined@mpostlink@nr}{1} \define@choicekey{glsxtrcombined}{mpostlink}% [\@gls@combined@mpostlink@val\@gls@combined@mpostlink@nr] {false,true,firstonly,usedonly}[true]{} \newcommand*{\@gls@combined@mpostlinkelement@nr}{0} \define@choicekey{glsxtrcombined}{mpostlinkelement}% [\@gls@combined@mpostlinkelement@val\@gls@combined@mpostlinkelement@nr] {last,main,custom}{} \newcommand*{\glsxtrifmulti}[3]{\ifcsdef{@gls@combined@#1@main}{#2}{#3}} \newcommand*{\glsxtrmultimain}[1]{\csuse{@gls@combined@#1@main}} \newcommand*{\glsxtrmultilist}[1]{\csuse{@gls@combined@#1@list}} \newcommand*{\glsxtrmultitotalelements}[1]{\csuse{@gls@combined@#1@total}} \newcommand*{\glsxtrmultimainindex}[1]{\csuse{@gls@combined@#1@mainindex}} \newcommand*{\glsxtrmultilastotherindex}[1]{\csuse{@gls@combined@#1@lastotherindex}} \newif\ifmultiglossaryentryglobal \multiglossaryentryglobalfalse \newcount\mglselementindex \newrobustcmd{\multiglossaryentry}[1][]{% \def\@gls@combined@current@opts{#1}% \ifnum\@glsxtr@docdefval=1\relax \let\@multi@glossentry@donext\@defmultiglossaryentry \else \let\@multi@glossentry@donext\@multiglossaryentry \fi \@multi@glossentry@donext } \newcommand*{\@multiglossaryentry}[1]{% \def\@gls@combined@current@label{#1}% \@multi@glossaryentry } \newcommand*{\@multi@glossaryentry}[2][]{% \ifcsdef{@gls@combined@\@gls@combined@current@label @main}% {\PackageError{glossaries-extra}% {Multi-entry label `\@gls@combined@current@label' already defined}% {}% }% {% \@multi@glossary@entry{#1}{#2}% }% } \newcommand*{\@defmultiglossaryentry}[1]{% \def\@gls@combined@current@label{#1}% \@def@multi@glossaryentry } \newcommand*{\@def@multi@glossaryentry}[2][]{% \let\@def@multi@glossaryentry@do\@multi@glossary@entry \ifundef\@glsxtr@docdefs@multilist {% \gdef\@glsxtr@docdefs@multilist{}% \listxadd {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}% }% {% \xifinlist{\@gls@combined@current@label}{\@glsxtr@docdefs@multilist}% {% \PackageError{glossaries-extra}% {Multi-entry label `\@gls@combined@current@label' already defined}% {}% \let\@def@multi@glossaryentry@do\@gobbletwo }% {% \listxadd {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}% }% }% \@def@multi@glossaryentry@do{#1}{#2}% } \newcommand*{\@multi@glossary@doifexists}{\glsdoifexists} \newrobustcmd{\providemultiglossaryentry}[2][]{% \def\@gls@combined@current@opts{#1}% \def\@gls@combined@current@label{#2}% \ifcsdef{@gls@combined@\@gls@combined@current@label @main}% {\def\@multi@glossentry@donext{\@provide@multi@glossaryentry@noop}}% {% \ifnum\@glsxtr@docdefval=1\relax \def\@multi@glossentry@donext{\@def@multi@glossaryentry}% \else \def\@multi@glossentry@donext{\@multi@glossaryentry}% \fi }% \@multi@glossentry@donext } \newcommand*{\@provide@multi@glossaryentry@noop}[2][]{} \newcommand*{\@multi@glossaryentry@list}{} \newcommand*{\@multi@glossary@entry}[2]{% \protected@edef\@gls@combined@current@main{#1}% \protected@edef\@gls@combined@currentlist{#2}% \mglselementindex=0\relax \@for\@gls@tmp:=\@gls@combined@currentlist\do{% \advance\mglselementindex by 1\relax \@multi@glossary@doifexists{\@gls@tmp}{}% \let\@gls@combined@finalitem\@gls@tmp \ifdefvoid\@gls@combined@current@main {}% {% \ifx\@gls@combined@current@main\@gls@tmp \ifmultiglossaryentryglobal \global\cslet{@gls@combined@\@gls@combined@current@label @main}% \@gls@combined@current@main \csxdef{@gls@combined@\@gls@combined@current@label @mainindex}% {\the\mglselementindex}% \else \cslet{@gls@combined@\@gls@combined@current@label @main}% \@gls@combined@current@main \csedef{@gls@combined@\@gls@combined@current@label @mainindex}% {\the\mglselementindex}% \fi \else \ifmultiglossaryentryglobal \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}% {\the\mglselementindex}% \else \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}% {\the\mglselementindex}% \fi \fi }% }% \ifmultiglossaryentryglobal \csxdef{@gls@combined@\@gls@combined@current@label @total}% {\the\mglselementindex}% \else \csedef{@gls@combined@\@gls@combined@current@label @total}% {\the\mglselementindex}% \fi \ifnum\mglselementindex<2\relax \PackageError{glossaries-extra}{At least 2 labels required in multi-entry element list (\number\mglselementindex\space found)}{}% \else \ifdefvoid\@gls@combined@current@main {}% {% \ifcsundef{@gls@combined@\@gls@combined@current@label @main}% {\PackageError{glossaries-extra}% {Main element `\@gls@combined@current@main' not found in list}% {The final element `\@gls@combined@finalitem' will be used instead} \let\@gls@combined@current@main\@empty }% {}% }% \ifdefvoid\@gls@combined@current@main {% \ifmultiglossaryentryglobal \global\cslet{@gls@combined@\@gls@combined@current@label @main}% \@gls@combined@finalitem \global\csletcs{@gls@combined@\@gls@combined@current@label @mainindex}% {@gls@combined@\@gls@combined@current@label @total}% \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}% {\the\numexpr\mglselementindex-1 }% \else \cslet{@gls@combined@\@gls@combined@current@label @main}% \@gls@combined@finalitem \csletcs{@gls@combined@\@gls@combined@current@label @mainindex}% {@gls@combined@\@gls@combined@current@label @total}% \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}% {\the\numexpr\mglselementindex-1 }% \fi }% {}% \ifmultiglossaryentryglobal \global\cslet{@gls@combined@\@gls@combined@current@label @list}% \@gls@combined@currentlist \protected@csxdef{@gls@combined@\@gls@combined@current@label @options}% {\@gls@combined@current@opts}% \expandafter\@ifdefinable \csname if@gls@combined@\@gls@combined@current@label @flag\endcsname {\expandafter\global\expandafter \newif\csname if@gls@combined@\@gls@combined@current@label @flag\endcsname}% \expandafter\global \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname \else \cslet{@gls@combined@\@gls@combined@current@label @list}% \@gls@combined@currentlist \protected@csedef{@gls@combined@\@gls@combined@current@label @options}% {\@gls@combined@current@opts}% \newboolean{@gls@combined@\@gls@combined@current@label @flag}% \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname \fi \fi \writemultiglossentry {\@gls@combined@current@opts}{\@gls@combined@current@label}% {\csuse{@gls@combined@\@gls@combined@current@label @main}}{#2}% \ifmultiglossaryentryglobal \ifdefempty\@multi@glossaryentry@list {\let\@multi@glossaryentry@list\@gls@combined@current@label}% {% \eappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}% }% \else \ifdefempty\@multi@glossaryentry@list {\global\let\@multi@glossaryentry@list\@gls@combined@current@label}% {% \xappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}% }% \fi } \newcommand*{\@glsxtr@multientry}[4]{% \ifnum\@glsxtr@docdefval=1\relax \bgroup \def\@gls@combined@current@opts{#1}% \def\@gls@combined@current@label{#2}% \let\@multi@glossary@doifexists\@secondoftwo \let\writemultiglossentry\@gobblefour \multiglossaryentryglobaltrue \@multi@glossary@entry{#3}{#4}% \egroup \fi } \newcommand*{\writemultiglossentry}[4]{% \protected@write\@auxout{}{\string\@glsxtr@multientry{#1}{#2}{#3}{#4}}% } \newcommand*{\ifmglsused}[3]{% \ifbool{@gls@combined@#1@flag}{#2}{#3}% } \newcommand*{\mglsunset}[1]{% \gls@ifnotmeasuring {% \glsxtrifmulti{#1}{\@mglsunset{#1}}% {% \glsxtrundefaction{Multi entry `#1' hasn't been defined}% {You need to define `#1' with \string\multiglossaryentry}% }% }% } \newcommand*{\@mglsunset}[1]{% \expandafter\global\csname @gls@combined@#1@flagtrue\endcsname } \newcommand*{\mglsreset}[1]{% \gls@ifnotmeasuring {% \glsxtrifmulti{#1}{\@mglsreset{#1}}% {% \glsxtrundefaction{Multi entry `#1' hasn't been defined}% {You need to define `#1' with \string\multiglossaryentry}% }% }% } \newcommand*{\@mglsreset}[1]{% \expandafter\global\csname @gls@combined@#1@flagfalse\endcsname } \newcommand*{\mglslocalunset}[1]{% \gls@ifnotmeasuring {% \glsxtrifmulti{#1}{\@mglslocalunset{#1}}% {% \glsxtrundefaction{Multi entry `#1' hasn't been defined}% {You need to define `#1' with \string\multiglossaryentry}% }% }% } \newcommand*{\@mglslocalunset}[1]{% \csname @gls@combined@#1@flagtrue\endcsname } \newcommand*{\mglslocalreset}[1]{% \gls@ifnotmeasuring {% \glsxtrifmulti{#1}{\@mglslocalreset{#1}}% {% \glsxtrundefaction{Multi entry `#1' hasn't been defined}% {You need to define `#1' with \string\multiglossaryentry}% }% }% } \newcommand*{\@mglslocalreset}[1]{% \csname @gls@combined@#1@flagfalse\endcsname } \newcommand*{\mglsunsetall}{% \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsunset\@mgls@thislabel}% }% \newcommand*{\mglsresetall}{% \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsreset\@mgls@thislabel}% }% \newrobustcmd{\mglsSetMain}[2]{% \ifcsundef{@gls@combined@#1@main}% {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}% {% \protected@edef\@gls@combined@current@main{#2}% \letcs\@gls@combined@currentlist{@gls@combined@#1@list}% \mglselementindex=0\relax \count@=0\relax \@for\@gls@tmp:=\@gls@combined@currentlist\do{% \advance\mglselementindex by 1\relax \ifx\@gls@combined@current@main\@gls@tmp \count@=\mglselementindex\relax \let\@gls@combined@finalitem\@gls@tmp \ifmultiglossaryentryglobal \global\cslet{@gls@combined@#1@main}\@gls@combined@current@main \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}% \else \cslet{@gls@combined@#1@main}\@gls@combined@current@main \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}% \fi \else \ifmultiglossaryentryglobal \csxdef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}% \else \csedef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}% \fi \fi }% \ifnum\count@=0\relax \PackageError{glossaries-extra}{Label `#2' is not in `#1' set (\@gls@combined@currentlist)}{}% \ifmultiglossaryentryglobal \global\cslet{@gls@combined@#1@main}\@gls@combined@finalitem \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}% \csxdef{@gls@combined@#1@lastotherindex}{% \number\numexpr\mglselementindex-1 }% \else \cslet{@gls@combined@#1@main}\@gls@combined@finalitem \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}% \csedef{@gls@combined@#1@lastotherindex}{% \number\numexpr\mglselementindex-1 }% \fi \fi }% } \newrobustcmd{\mglsSetOptions}[2]{% \ifcsundef{@gls@combined@#1@main}% {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}% {% \csdef{@gls@combined@#1@options}{#2}% }% } \newrobustcmd{\mglsAddOptions}[2]{% \ifcsundef{@gls@combined@#1@main}% {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}% {% \ifcsempty{@gls@combined@#1@options}% {\csdef{@gls@combined@#1@options}{#2}}% {\csappto{@gls@combined@#1@options}{,#2}}% }% } \newcommand*{\@mgls@all}{} \define@key{mgls}{all}{\renewcommand*{\@mgls@all}{#1}} \newcommand*{\@mgls@main}{} \define@key{mgls}{main}{\renewcommand*{\@mgls@main}{#1}} \newcommand*{\@mgls@others}{} \define@key{mgls}{others}{\renewcommand*{\@mgls@others}{#1}} \newcommand*{\@mgls@setup}{} \define@key{mgls}{setup}{% \@mgls@setup@do{\renewcommand*{\@mgls@setup}{#1}}% } \newcommand*{\@mgls@setup@do}[1]{#1} \newcommand*{\@mgls@setup@do@not}[1]{% \PackageError{glossaries-extra}{`setup' key not permitted inside `mglsopts' value}{}% } \newcommand*{\mgls@disable@setup}{% \let\@mgls@setup@do\@mgls@setup@do@not } \newcommand*{\mgls@enable@setup}{% \let\@mgls@setup@do\@firstofone } \newcommand\@mgls@unsetaction{0} \define@choicekey{mgls}{multiunset}[\@mgls@unsetaction@val\@mgls@unsetaction]% {global,local,none}{} \define@boolkey{mgls}{presetlocal}[true]{} \KV@mgls@presetlocalfalse \newcommand*{\@mgls@hyper}{} \define@choicekey{mgls}{hyper}[\@mgls@hyper@val\@mgls@hyper@nr]{true,false}[true]% {% \renewcommand*{\@mgls@hyper}{hyper=#1}% \ifnum\@mgls@hyper@nr=1\relax \let\@mgls@hyperlink\@secondoftwo \else \let\@mgls@hyperlink\@@mgls@hyperlink \fi } \newcommand*{\@@mgls@hyperlink}[2]{% \ifx\@glslink\glsdonohyperlink #2% \else \glsxtr@org@dohyperlink{\glolinkprefix#1}{#2}% \fi } \let\@mgls@hyperlink\@@mgls@hyperlink \newcommand*{\mglsforelements}[3]{% \expandafter\@for\expandafter#2\expandafter:\expandafter =\csname @gls@combined@#1@list\endcsname\do{#3}% } \newcommand*{\mglsforotherelements}[3]{% \expandafter\@for\expandafter#2\expandafter:\expandafter =\csname @gls@combined@#1@list\endcsname\do {\expandafter\ifdefequal\csname @gls@combined@#1@main\endcsname{#2}{}{#3}}% } \newcommand*{\mglsunsetothers}[1]{% \mglsforotherelements{#1}{\@gls@tmp}{\glsunset{\@gls@tmp}}% } \newcommand*{\mglslocalunsetothers}[1]{% \mglsforotherelements{#1}{\@gls@tmp}{\glslocalunset{\@gls@tmp}}% } \newcommand*{\mglselementreset}[1]{% \ifKV@mgls@presetlocal \glslocalreset{#1}% \else \glsreset{#1}% \fi } \newcommand*{\mglselementunset}[1]{% \ifKV@mgls@presetlocal \glslocalunset{#1}% \else \glsunset{#1}% \fi } \newcommand*{\@mgls@resetall}{} \define@choicekey{mgls}{resetall}% [\@mgls@resetall@val\@mgls@resetall@nr]{false,true}[true]% {% \ifcase\@mgls@resetall@nr\relax \renewcommand*{\@mgls@resetall}{}% \or \renewcommand*{\@mgls@resetall}{% \@for\@gls@resetlabel:=\mglscurrentlist\do{\mglselementreset\@gls@resetlabel}}% \renewcommand*{\@mgls@unsetall}{}% \fi } \newcommand*{\@mgls@resetmain}{} \define@choicekey{mgls}{resetmain} [\@mgls@resetmain@val\@mgls@resetmain@nr]{false,true}[true]% {% \ifcase\@mgls@resetmain@nr\relax \renewcommand*{\@mgls@resetmain}{}% \or \renewcommand*{\@mgls@resetmain}{\mglselementreset\mglscurrentmainlabel}% \renewcommand*{\@mgls@unsetmain}{}% \fi } \newcommand*{\@mgls@resetothers}{} \define@choicekey{mgls}{resetothers} [\@mgls@resetothers@val\@mgls@resetothers@nr]{false,true}[true]% {% \ifcase\@mgls@resetothers@nr\relax \renewcommand*{\@mgls@resetothers}{}% \or \renewcommand*{\@mgls@resetothers}{% \@for\@gls@resetlabel:=\mglscurrentlist\do{% \ifx\@gls@resetlabel\mglscurrentmainlabel \else \mglselementreset\@gls@resetlabel \fi }% }% \renewcommand*{\@mgls@unsetothers}{}% \fi } \newcommand*{\@mgls@unsetall}{} \define@choicekey{mgls}{unsetall}% [\@mgls@unsetall@val\@mgls@unsetall@nr]{false,true}[true]% {% \ifcase\@mgls@unsetall@nr\relax \renewcommand*{\@mgls@unsetall}{}% \or \renewcommand*{\@mgls@unsetall}{% \@for\@gls@unsetlabel:=\mglscurrentlist\do{\mglselementunset\@gls@unsetlabel}}% \renewcommand*{\@mgls@resetall}{}% \fi } \newcommand*{\@mgls@unsetmain}{} \define@choicekey{mgls}{unsetmain} [\@mgls@unsetmain@val\@mgls@unsetmain@nr]{false,true}[true]% {% \ifcase\@mgls@unsetmain@nr\relax \renewcommand*{\@mgls@unsetmain}{}% \or \renewcommand*{\@mgls@unsetmain}{\mglselementunset\mglscurrentmainlabel}% \renewcommand*{\@mgls@resetmain}{}% \fi } \newcommand*{\@mgls@unsetothers}{} \define@choicekey{mgls}{unsetothers} [\@mgls@unsetothers@val\@mgls@unsetothers@nr]{false,true}[true]% {% \ifcase\@mgls@unsetothers@nr\relax \renewcommand*{\@mgls@unsetothers}{}% \or \renewcommand*{\@mgls@unsetothers}{% \@for\@gls@unsetlabel:=\mglscurrentlist\do{% \ifx\@gls@unsetlabel\mglscurrentmainlabel \else \mglselementunset\@gls@unsetlabel \fi }% }% \renewcommand*{\@mgls@resetothers}{}% \fi } \newcommand{\glsxtr@setup@docurrent}{% \ifx\mglscurrentlabel\mglscurrentmainlabel \mglsisfirstuse {% \ifKV@glsxtrcombined@firstskipmain \let\@mgls@do@current@element\@gobble \else \let\@mgls@do@current@element\@firstofone \fi }% {% \ifKV@glsxtrcombined@usedskipmain \let\@mgls@do@current@element\@gobble \else \let\@mgls@do@current@element\@firstofone \fi }% \else \mglsisfirstuse {% \ifKV@glsxtrcombined@firstskipothers \let\@mgls@do@current@element\@gobble \else \let\@mgls@do@current@element\@firstofone \fi }% {% \ifKV@glsxtrcombined@usedskipothers \let\@mgls@do@current@element\@gobble \else \let\@mgls@do@current@element\@firstofone \fi }% \fi } \newcommand*{\glsxtr@mgls@checklastelement}[2]{% \ifbool{KV@glsxtrcombined@#1skipmain}% {% \ifbool{KV@glsxtrcombined@#1skipothers}% {% }% {% \ifnum\mglselementindex=\glsxtrmultilastotherindex{#2}\relax \let\mglsiflast\@firstoftwo \else \let\mglsiflast\@secondoftwo \fi }% }% {% \ifbool{KV@glsxtrcombined@#1skipothers}% {% \ifnum\mglselementindex=\glsxtrmultimainindex{#2}\relax \let\mglsiflast\@firstoftwo \else \let\mglsiflast\@secondoftwo \fi }% {% \let\mglsiflast\@secondoftwo }% }% } \newcommand{\glsxtrmglsWarnAllSkipped}[3]{% \GlossariesExtraWarning{#1}% #3{#2}% } \newcommand*{\glsxtr@mgls@applyopts}[1]{% \edef\@mgls@dooptions{\noexpand\setkeys*{mgls}{\expandonce#1}}% \@mgls@dooptions \ifdefvoid\XKV@rm{}{\eappto\@mgls@all{,\expandonce\XKV@rm}}% \ifdefvoid\@mgls@setup {}% {% \edef\@mgls@dooptions{% \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@setup}}% \mgls@disable@mglsopts \@mgls@dooptions \mgls@enable@mglsopts \ifx\@mgls@setupoptions\@empty \let\@mgls@setupoptions\XKV@rm \else \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}% \fi }% \@mgls@resetall \@mgls@unsetall \@mgls@resetmain \@mgls@unsetmain \@mgls@resetothers \@mgls@unsetothers \let\@mgls@resetall\@empty \let\@mgls@resetmain\@empty \let\@mgls@resetothers\@empty \let\@mgls@unsetall\@empty \let\@mgls@unsetmain\@empty \let\@mgls@unsetothers\@empty \ifmglsused\mglscurrentmultilabel {\let\mglsisfirstuse\@secondoftwo}% {\let\mglsisfirstuse\@firstoftwo}% } \providecommand{\@firstofthree}[3]{#1} \providecommand{\@secondofthree}[3]{#2} \providecommand{\@thirdofthree}[3]{#3} \newcommand*{\glsxtr@mgls@inner}[7]{% \let\mglslastmainlabel\@empty \let\mglsiflastmainwasfirstuse\@firstoftwo \let\mglsiflastmainwasplural\@secondoftwo \let\mglsiflastmaincapscase\@firstofthree \let\mglsiflastmainskipped\@firstoftwo \bgroup \ifcsundef{@gls@combined@#2@main}% {% \glsxtrundefaction{Multi entry `#2' hasn't been defined}% {You need to define `#2' with \string\multiglossaryentry}% \gdef\@mgls@post@hookdefs{% \protected@edef\mglslastmultilabel{#2}% \let\mglswasfirstuse\@firstoftwo \let\mglslastcategory\@empty \let\mglsiflastelementskipped\@firstoftwo \let\mglsiflastelementwasfirstuse\@firstoftwo \let\mglsiflastelementwasplural\@secondoftwo \let\mglsiflastelementcapscase\@firstofthree \let\mglslastelementlabel\@empty \let\mgls@do@postlinkhook\relax }% }% {% \protected@edef\mglscurrentmultilabel{#2}% \letcs\mglscurrentmainlabel{@gls@combined@#2@main}% \letcs\mglscurrentlist{@gls@combined@#2@list}% \letcs\mglscurrentoptions{@gls@combined@#2@options}% \ifmglsused\mglscurrentmultilabel {\let\mglsisfirstuse\@secondoftwo}% {\let\mglsisfirstuse\@firstoftwo}% \edef\@mgls@dooptions{% \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\mglscurrentoptions}}% \@mgls@dooptions \let\@mgls@setupoptions\XKV@rm \mgls@disable@setup \ifdefvoid\@gls@combined@mglsopts {}% {\glsxtr@mgls@applyopts\@gls@combined@mglsopts}% \mgls@enable@setup \ifstrempty{#1}{}{\def\@mgls@options{#1}\glsxtr@mgls@applyopts\@mgls@options}% \ifx\@gls@combined@category\empty \else \glshascategoryattribute{\@gls@combined@category}{multioptions}% {% \letcs\@mgls@attroptions{@glsxtr@categoryattr@@\@gls@combined@category @multioptions}% \let\@gls@combined@mglsopts\@empty \edef\@mgls@dooptions{% \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@attroptions}}% \@mgls@dooptions \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}% \ifx\@gls@combined@mglsopts\@empty \else \let\@mgls@setup\@empty \mgls@disable@setup \glsxtr@mgls@applyopts\@gls@combined@mglsopts \mgls@enable@setup \fi }% {}% \fi \edef\@mgls@dooptions{% \noexpand\setkeys{glsxtrcombined}{\expandonce\@mgls@setupoptions}}% \@mgls@dooptions \let\mglscurrentcategory\@gls@combined@category \ifnum\@gls@combined@hyper=1\relax \def\@mgls@combinedlink{\@mgls@hyperlink{\mglscurrentmainlabel}}% \else \def\@mgls@combinedlink{\@firstofone}% \fi \def\@gls@combined@encapsulator##1{% \@mgls@combinedlink{\csuse{\@gls@combined@textformat}{##1}}}% \let\@mgls@do@current@element\@firstofone \mglsisfirstuse {% \ifKV@glsxtrcombined@firstskipmain \ifKV@glsxtrcombined@firstskipothers \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator \def\@gls@combined@encapsulator##1{% \glsxtrmglsWarnAllSkipped{All elements skipped for first use of multi-entry `#2'}{#3}% {\@gls@org@combined@encapsulator}% }% \let\@mgls@do@current@element\@gobble \fi \fi }% {% \ifKV@glsxtrcombined@usedskipmain \ifKV@glsxtrcombined@usedskipothers \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator \def\@gls@combined@encapsulator##1{% \glsxtrmglsWarnAllSkipped{All elements skipped for subsequent use of multi-entry `#2'}{#3}% {\@gls@org@combined@encapsulator}% }% \let\@mgls@do@current@element\@gobble \fi \fi }% \mglsisfirstuse {% \let\mglscurrentprefix\@gls@combined@firstprefix \let\mglscurrentsuffix\@gls@combined@firstsuffix }% {% \let\mglscurrentprefix\@gls@combined@usedprefix \let\mglscurrentsuffix\@gls@combined@usedsuffix }% \xdef\@mgls@post@hookdefs{% \noexpand\def\noexpand\mglslastmultilabel{\expandonce\mglscurrentmultilabel}% \noexpand\def\noexpand\mglslastcategory{\mglscurrentcategory}% }% \ifx\@mgls@do@current@element\@gobble \gappto\@mgls@post@hookdefs{% \let\mglsiflastelementskipped\@firstoftwo \let\mglslastelementlabel\@empty \let\mglsiflastelementwasfirstuse\@firstoftwo \let\mglsiflastelementwasplural\@secondoftwo \let\mglsiflastelementcapscase\@firstofthree }% \fi \mglsisfirstuse {% \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@firstoftwo}% \ifcase\@gls@combined@mpostlink@nr\relax \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% \or \ifcase\@gls@combined@mpostlinkelement@nr\relax \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% \or \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% \or \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% \fi \or \ifcase\@gls@combined@mpostlinkelement@nr\relax \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% \or \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% \or \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% \fi \or \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% \fi }% {% \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@secondoftwo}% \ifcase\@gls@combined@mpostlink@nr\relax \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% \or \ifcase\@gls@combined@mpostlinkelement@nr\relax \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% \or \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% \or \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% \fi \or \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% \or \ifcase\@gls@combined@mpostlinkelement@nr\relax \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% \or \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% \or \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% \fi \fi }% \let\mgls@org@postlinkhook\glspostlinkhook \mglsprefix \let\mglslastelementlabel\@empty \@gls@combined@encapsulator {% \def\@mgls@previouslabel{}% \mglselementindex=0\relax \@for\mglscurrentlabel:=\mglscurrentlist\do{% \advance\mglselementindex by 1\relax \glsxtr@setup@docurrent \ifx\@xfor@nextelement\@nnil \let\mglsiflast\@firstoftwo \else \let\mglsiflast\@secondoftwo \mglsisfirstuse {% \glsxtr@mgls@checklastelement{first}{#2}% }% {% \glsxtr@mgls@checklastelement{used}{#2}% }% \fi \ifcase\@gls@combined@postlinks@nr\relax \let\glspostlinkhook\relax \or \let\glspostlinkhook\mgls@org@postlinkhook \or \mglsiflast {% \let\glspostlinkhook\relax }% {% \let\glspostlinkhook\mgls@org@postlinkhook }% \or \ifx\mglscurrentlabel\mglscurrentmainlabel \mglsiflast {% \let\glspostlinkhook\relax }% {% \let\glspostlinkhook\mgls@org@postlinkhook }% \else \let\glspostlinkhook\relax \fi \or \ifx\mglscurrentlabel\mglscurrentmainlabel \let\glspostlinkhook\mgls@org@postlinkhook \else \let\glspostlinkhook\relax \fi \or \ifx\mglscurrentlabel\mglscurrentmainlabel \let\glspostlinkhook\relax \else \mglsiflast {% \let\glspostlinkhook\relax }% {% \let\glspostlinkhook\mgls@org@postlinkhook }% \fi \or \ifx\mglscurrentlabel\mglscurrentmainlabel \let\glspostlinkhook\relax \else \let\glspostlinkhook\mgls@org@postlinkhook \fi \fi \mglsiflast {% \xappto\@mgls@post@hookdefs{% \noexpand\def\noexpand\mglslastelementlabel {\expandonce\mglscurrentlabel}}% }% {}% \@mgls@do@current@element {% \mglselementprehook \GlsXtrIfUnusedOrUndefined{\mglscurrentlabel}% {\let\@mgls@current@iffirstuse\@firstoftwo}% {\let\@mgls@current@iffirstuse\@secondoftwo}% \ifx\mglscurrentlabel\mglscurrentmainlabel \edef\@mgls@current@options{format=\@gls@combined@encapmain}% \ifcase\@gls@combined@indexmain \appto\@mgls@current@options{,noindex}% \or \appto\@mgls@current@options{,noindex=false}% \or \@mgls@current@iffirstuse {\appto\@mgls@current@options{,noindex=false}}% {\appto\@mgls@current@options{,noindex}}% \fi \ifcase\@gls@combined@hyper\relax \appto\@mgls@current@options{,hyper=false}% none \or \appto\@mgls@current@options{,hyper=false}% allmain \or \eappto\@mgls@current@options{,\@mgls@hyper}% mainonly \or \eappto\@mgls@current@options{,\@mgls@hyper}% individual \or \appto\@mgls@current@options{,hyper=false}% otheronly \or \mglsisfirstuse {% \appto\@mgls@current@options{,hyper=false}% notmainfirst }% {% \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst }% \or \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst \or \mglsisfirstuse {% \appto\@mgls@current@options{,hyper=false}% notfirst }% {% \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst }% \fi \eappto\@mgls@current@options{,\@mgls@all,\@mgls@main}% \else \edef\@mgls@current@options{format=\@gls@combined@encapothers}% \ifcase\@gls@combined@indexothers\relax \appto\@mgls@current@options{,noindex}% \or \appto\@mgls@current@options{,noindex=false}% \or \@mgls@current@iffirstuse {\appto\@mgls@current@options{,noindex=false}}% {\appto\@mgls@current@options{,noindex}}% \fi \ifcase\@gls@combined@hyper\relax \appto\@mgls@current@options{,hyper=false}% none \or \appto\@mgls@current@options{,hyper=false}% allmain \or \appto\@mgls@current@options{,hyper=false}% mainonly \or \eappto\@mgls@current@options{,\@mgls@hyper}% individual \or \eappto\@mgls@current@options{,\@mgls@hyper}% otheronly \or \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst \or \mglsisfirstuse {% \appto\@mgls@current@options{,hyper=false}% nototherfirst }% {% \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst }% \or \mglsisfirstuse {% \appto\@mgls@current@options{,hyper=false}% notfirst }% {% \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst }% \fi \eappto\@mgls@current@options{,\@mgls@all,\@mgls@others}% \fi \ifx\@mgls@previouslabel\empty \ifx\mglscurrentlabel\mglscurrentmainlabel \let\@mgls@cs#6\relax \else \let\@mgls@cs#4\relax \fi \else \@mgls@previous@iffirstuse {% \@mgls@current@iffirstuse {\glscombinedfirstsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}% {\glscombinedfirstsep{\@mgls@previouslabel}{\mglscurrentlabel}}% }% {% \@mgls@current@iffirstuse {\glscombinedsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}% {\glscombinedsep{\@mgls@previouslabel}{\mglscurrentlabel}}% }% \ifx\mglscurrentlabel\mglscurrentmainlabel \let\@mgls@cs#7\relax \else \let\@mgls@cs#5\relax \fi \fi \mglsiflast {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[#3]}% {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[]}% \ifx\mglscurrentlabel\mglscurrentmainlabel \xappto\@mgls@post@hookdefs{% \noexpand\def\noexpand\mglslastmainlabel {\expandonce\mglscurrentmainlabel}% }% \glsxtrifwasfirstuse {% \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@firstoftwo}% }% {% \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@secondoftwo}% }% \glsifplural {% \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@firstoftwo}% }% {% \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@secondoftwo}% }% \glscapscase {% \gappto\@mgls@post@hookdefs{% \let\mglsiflastmaincapscase\@firstofthree }% }% {% \gappto\@mgls@post@hookdefs{% \let\mglsiflastmaincapscase\@secondofthree }% }% {% \gappto\@mgls@post@hookdefs{% \let\mglsiflastmaincapscase\@thirdofthree }% }% \fi \let\@mgls@previouslabel\mglscurrentlabel \let\@mgls@previous@iffirstuse\@mgls@current@iffirstuse }% \mglselementposthook }% \ifx\mglslastmainlabel\@empty \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@firstoftwo}% \else \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@secondoftwo}% \fi \ifx\@mgls@do@current@element\@gobble \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@firstoftwo}% \else \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@secondoftwo}% \fi \glsxtrifwasfirstuse {% \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@firstoftwo}% }% {% \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@secondoftwo}% }% \glsifplural {% \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@firstoftwo}% }% {% \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@secondoftwo}% }% \glscapscase {% \gappto\@mgls@post@hookdefs{% \let\mglsiflastelementcapscase\@firstofthree }% }% {% \gappto\@mgls@post@hookdefs{% \let\mglsiflastelementcapscase\@secondofthree }% }% {% \gappto\@mgls@post@hookdefs{% \let\mglsiflastelementcapscase\@thirdofthree }% }% }% \@mgls@post@hookdefs \mglssuffix \ifcase\@mgls@unsetaction\relax \xappto\@mgls@post@hookdefs{% \noexpand\mglsunset{\expandonce\mglscurrentmultilabel}}% \or \xappto\@mgls@post@hookdefs{% \noexpand\mglslocalunset{\expandonce\mglscurrentmultilabel}}% \fi }% \glsxtrmglswrite{#2}% \egroup \@mgls@post@hookdefs \mgls@do@postlinkhook } \newcommand*{\mglscustompostlinkhook}{} \newcommand*{\mglslastelementpostlinkhook}{% \let\glsxtrifwasfirstuse\mglsiflastelementwasfirstuse \let\glsifplural\mglsiflastelementwasplural \let\glscapscase\mglsiflastelementcapscase \let\glslabel\mglslastelementlabel \glspostlinkhook } \newcommand*{\mglslastmainpostlinkhook}{% \let\glsxtrifwasfirstuse\mglsiflastmainwasfirstuse \let\glsifplural\mglsiflastmainwasplural \let\glscapscase\mglsiflastmaincapscase \let\glslabel\mglslastmainlabel \glspostlinkhook } \newcommand*{\mglsdefcategoryprefix}[2]{% \csdef{mglsprefix@#1}{#2}% } \newcommand*{\mglshascategoryprefix}[3]{% \ifcsdef{mglsprefix@#1}{#2}{#3}% } \newcommand*{\mglsusecategoryprefix}[1]{% \csuse{mglsprefix@#1}% } \newcommand*{\mglsprefix}{% \ifdefempty\mglscurrentcategory {\mglscurrentprefix}% {% \mglshascategoryprefix{\mglscurrentcategory}% {\mglsusecategoryprefix{\mglscurrentcategory}}% {\mglscurrentprefix}% }% } \newcommand*{\mglsdefcategorysuffix}[2]{% \csdef{mglssuffix@#1}{#2}% } \newcommand*{\mglshascategorysuffix}[3]{% \ifcsdef{mglssuffix@#1}{#2}{#3}% } \newcommand*{\mglsusecategorysuffix}[1]{% \csuse{mglssuffix@#1}% } \newcommand*{\mglssuffix}{% \ifdefempty\mglscurrentcategory {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}% {% \mglshascategorysuffix{\mglscurrentcategory}% {\mglsusecategorysuffix{\mglscurrentcategory}}% {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}% }% } \newcommand*{\mglselementprehook}{} \newcommand*{\mglselementposthook}{} \newcommand*{\glscombinedsep}[2]{% \glshasattribute{#1}{combinedsep}% {\glsgetattribute{#1}{combinedsep}}% { }% } \newcommand*{\glscombinedfirstsepfirst}[2]{% \glshasattribute{#1}{combinedfirstsepfirst}% {\glsgetattribute{#1}{combinedfirstsepfirst}}% {\glscombinedsep{#1}{#2}}% } \newcommand*{\glscombinedfirstsep}[2]{% \glshasattribute{#1}{combinedfirstsep}% {\glsgetattribute{#1}{combinedfirstsep}}% {\glscombinedsep{#1}{#2}}% } \newcommand*{\glscombinedsepfirst}[2]{% \glshasattribute{#1}{combinedsepfirst}% {\glsgetattribute{#1}{combinedsepfirst}}% {\glscombinedsep{#1}{#2}}% } \newcommand*{\glssetcombinedsepabbrvnbsp}{% \renewcommand*{\glscombinedsep}[2]{% \glshasattribute{##1}{combinedsep}% {\glsgetattribute{##1}{combinedsep}}% {\ifhasshort{##1}{~}{ }}% }% \renewcommand*{\glscombinedsepfirst}[2]{% \glshasattribute{##1}{combinedsepfirst}% {\glsgetattribute{##1}{combinedsepfirst}}% {\ifhasshort{##1}{~}{ }}% }% \renewcommand*{\glscombinedfirstsep}[2]{% \glshasattribute{##1}{combinedfirstsep}% {\glsgetattribute{##1}{combinedfirstsep}}% { }% }% \renewcommand*{\glscombinedfirstsepfirst}[2]{% \glshasattribute{##1}{combinedfirstsepfirst}% {\glsgetattribute{##1}{combinedfirstsepfirst}}% { }% }% } \newcommand*{\glssetcombinedsepabbrvnone}{% \renewcommand*{\glscombinedsep}[2]{% \glshasattribute{##1}{combinedsep}% {\glsgetattribute{##1}{combinedsep}}% {\ifhasshort{##1}{}{\ifhasshort{##2}{}{ }}}% }% \renewcommand*{\glscombinedsepfirst}[2]{% \glshasattribute{##1}{combinedsepfirst}% {\glsgetattribute{##1}{combinedsepfirst}}% {\ifhasshort{##1}{}{ }}% }% \renewcommand*{\glscombinedfirstsep}[2]{% \glshasattribute{##1}{combinedfirstsep}% {\glsgetattribute{##1}{combinedfirstsep}}% {\ifhasshort{##2}{}{ }}% }% \renewcommand*{\glscombinedfirstsepfirst}[2]{% \glshasattribute{##1}{combinedfirstsepfirst}% {\glsgetattribute{##1}{combinedfirstsepfirst}}% { }% }% } \newcommand*{\glssetcombinedsepnarrow}[2]{% \renewcommand*{\glscombinedsep}[2]{% \glshasattribute{##1}{combinedsep}% {\glsgetattribute{##1}{combinedsep}}% {% \ifhasshort{##1}% {\settowidth{\dimen@}{\glsentryshort{##1}}}% {\settowidth{\dimen@}{\glsentrytext{##1}}}% \ifdim\dimen@<#1\relax #2% \else \ifhasshort{##2}% {\settowidth{\dimen@}{\glsentryshort{##2}}}% {\settowidth{\dimen@}{\glsentrytext{##2}}}% \ifdim\dimen@<#1\relax #2% \else \space \fi \fi }% }% \renewcommand*{\glscombinedsepfirst}[2]{% \glshasattribute{##1}{combinedsepfirst}% {\glsgetattribute{##1}{combinedsepfirst}}% {% \ifhasshort{##1}% {\settowidth{\dimen@}{\glsentryshort{##1}}}% {\settowidth{\dimen@}{\glsentrytext{##1}}}% \ifdim\dimen@<#1\relax #2% \else \ifhaslong{##2}% {\settowidth{\dimen@}{\glsentrylong{##2}}}% {\settowidth{\dimen@}{\glsentryfirst{##2}}}% \ifdim\dimen@<#1\relax #2% \else \space \fi \fi }% }% \renewcommand*{\glscombinedfirstsep}[2]{% \glshasattribute{##1}{combinedfirstsep}% {\glsgetattribute{##1}{combinedfirstsep}}% {% \ifhaslong{##1}% {\settowidth{\dimen@}{\glsentrylong{##1}}}% {\settowidth{\dimen@}{\glsentryfirst{##1}}}% \ifdim\dimen@<#1\relax #2% \else \ifhasshort{##2}% {\settowidth{\dimen@}{\glsentryshort{##2}}}% {\settowidth{\dimen@}{\glsentrytext{##2}}}% \ifdim\dimen@<#1\relax #2% \else \space \fi \fi }% }% \renewcommand*{\glscombinedfirstsepfirst}[2]{% \glshasattribute{##1}{combinedfirstsepfirst}% {\glsgetattribute{##1}{combinedfirstsepfirst}}% {% \ifhaslong{##1}% {\settowidth{\dimen@}{\glsentrylong{##1}}}% {\settowidth{\dimen@}{\glsentryfirst{##1}}}% \ifdim\dimen@<#1\relax #2% \else \ifhaslong{##2}% {\settowidth{\dimen@}{\glsentrylong{##2}}}% {\settowidth{\dimen@}{\glsentryfirst{##2}}}% \ifdim\dimen@<#1\relax #2% \else \space \fi \fi }% }% } \newcommand{\glsxtrmglswrite}[1]{% \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off \else \protected@edef\@glsxtr@mglslabel{#1}% \ifdef\@glsxtr@mglsreflist {% \expandafter\DTLifinlist\expandafter{\@glsxtr@mglslabel}% {\@glsxtr@mglsreflist}{}% {% \xappto\@glsxtr@mglsreflist{,\expandonce\@glsxtr@mglslabel}% \if@mgls@writeseparaterefs \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}% \fi }% }% {% \global\let\@glsxtr@mglsreflist\@glsxtr@mglslabel \if@mgls@writeseparaterefs \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}% \else \AtEndDocument{\immediate\protected@write\@auxout{}% {\string\@glsxtr@mglsrefs{\@glsxtr@mglsreflist}}}% \fi \@mgls@disable@writeseparateref@cond }% \fi } \newcommand{\@glsxtr@mglsrefs}[1]{} \newif\if@mgls@writeseparaterefs \@mgls@writeseparaterefsfalse \newcommand{\mglsWriteSeparateRefsTrue}{\global\@mgls@writeseparaterefstrue} \newcommand{\mglsWriteSeparateRefsFalse}{\global\@mgls@writeseparaterefsfalse} \newcommand*{\@mgls@disable@writeseparateref@cond}{% \gdef\mglsWriteSeparateRefsTrue{\PackageError{glossaries-extra}% {Too late to use \string\mglsWriteSeparateRefsTrue}% {\string\mglsWriteSeparateRefsTrue\space can only be used before the first instance of any \string\mgls-like command}}% \gdef\mglsWriteSeparateRefsFalse{\PackageError{glossaries-extra}% {Too late to use \string\mglsWriteSeparateRefsFalse}% {\string\mglsWriteSeparateRefsFalse\space can only be used before the first instance of any \string\mgls-like command}}% } \newcommand{\glsxtr@newmgls}[5]{% \edef\@glsxr@newmgls@do{% \noexpand\newrobustcmd*{\expandonce{\csname #1\endcsname}}% {\noexpand\@gls@hyp@opt\expandonce{\csname ns@glsxtr@#1\endcsname}}% \noexpand\newcommand*{\expandonce{\csname ns@glsxtr@#1\endcsname}}[2][]{% \noexpand\new@ifnextchar[% {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}}% {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}[]}% }% \noexpand\def\expandonce{\csname glsxtr@#1\endcsname}####1####2[####3]{% \noexpand\def\noexpand\glsxtrcurrentmglscsname{#1}% \noexpand\glsxtr@mgls@inner{####1}{####2}{####3}% {\noexpand#2}{\noexpand#3}{\noexpand#4}{\noexpand#5}% }% }% \@glsxr@newmgls@do \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off \else \ifdef\@glsxtr@mglslikelist {\xappto\@glsxtr@mglslikelist{,#1}}% {% \gdef\@glsxtr@mglslikelist{#1}% \AtEndDocument{\immediate\protected@write\@auxout{}% {\string\@glsxtr@mglslike{\@glsxtr@mglslikelist}}}% }% \fi } \newcommand*{\@glsxtr@mglslike}[1]{} \newcommand*{\GlsXtrMglsOrGls}[2]{% \def\@glsxtr@mgls@or@gls@mcs{#1}% \def\@glsxtr@mgls@or@gls@gcs{#2}% \@ifstar{\s@GlsXtrMglsOrGls}% {% \@ifnextchar+{\PLUS\@firstoftwo{\p@GlsXtrMglsOrGls}}% {% \ifdefempty\@gls@alt@hyp@opt@char\@GlsXtrMglsOrGls\alt@GlsXtrMglsOrGls }% }% } \newcommand*{\alt@GlsXtrMglsOrGls}{ \expandafter\@ifnextchar\@gls@alt@hyp@opt@char {\@firstoftwo{\@alt@GlsXtrMglsOrGls}}{\@GlsXtrMglsOrGls}% } \newcommand*{\@GlsXtrMglsOrGls}[2][]{% \glsxtrifmulti{#2}% {\@glsxtr@mgls@or@gls@mcs[#1]{#2}}% {\@glsxtr@mgls@or@gls@gcs[#1]{#2}}% } \newcommand*{\s@GlsXtrMglsOrGls}[2][]{% \glsxtrifmulti{#2}% {\@glsxtr@mgls@or@gls@mcs*[#1]{#2}}% {\@glsxtr@mgls@or@gls@gcs*[#1]{#2}}% } \newcommand*{\p@GlsXtrMglsOrGls}[2][]{% \glsxtrifmulti{#2}% {\@glsxtr@mgls@or@gls@mcs+[#1]{#2}}% {\@glsxtr@mgls@or@gls@gcs+[#1]{#2}}% } \newcommand*{\@alt@GlsXtrMglsOrGls}[2][]{% \glsxtrifmulti{#2}% {\expandafter\@glsxtr@mgls@or@gls@mcs\@gls@alt@hyp@opt@char[#1]{#2}}% {\expandafter\@glsxtr@mgls@or@gls@gcs\@gls@alt@hyp@opt@char[#1]{#2}}% } \glsxtr@newmgls{mgls}{\@gls@}{\@gls@}{\@gls@}{\@gls@}% \glsxtr@newmgls{mglspl}{\@glspl@}{\@glspl@}{\@glspl@}{\@glspl@}% \glsxtr@newmgls{mglsmainpl}{\@gls@}{\@gls@}{\@glspl@}{\@glspl@}% \glsxtr@newmgls{Mgls}{\@Gls@}{\@gls@}{\@Gls@}{\@gls@}% \glsxtr@newmgls{Mglspl}{\@Glspl@}{\@glspl@}{\@Glspl@}{\@glspl@}% \glsxtr@newmgls{Mglsmainpl}{\@Gls@}{\@gls@}{\@Glspl@}{\@glspl@}% \glsxtr@newmgls{MGls}{\@Gls@}{\@Gls@}{\@Gls@}{\@Gls@}% \glsxtr@newmgls{MGlspl}{\@Glspl@}{\@Glspl@}{\@Glspl@}{\@Glspl@}% \glsxtr@newmgls{MGlsmainpl}{\@Gls@}{\@Gls@}{\@Glspl@}{\@Glspl@}% \glsxtr@newmgls{MGLS}{\@GLS@}{\@GLS@}{\@GLS@}{\@GLS@}% \glsxtr@newmgls{MGLSpl}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}% \glsxtr@newmgls{MGLSmainpl}{\@GLS@}{\@GLS@}{\@GLSpl@}{\@GLSpl@}% \def\@glslongortext#1#2[#3]{% \ifglshaslong{#2}{\@glsxtrlong{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}% } \def\@glsshortortext#1#2[#3]{% \ifglshasshort{#2}{\@glsxtrshort{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}% } \def\@glsfullorfirst#1#2[#3]{% \ifglshasshort{#2}{\@glsxtr@full{#1}{#2}[#3]}{\@glsfirst@{#1}{#2}[#3]}% } \def\@Glslongortext#1#2[#3]{% \ifglshaslong{#2}{\@Glsxtrlong{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}% } \def\@Glsshortortext#1#2[#3]{% \ifglshasshort{#2}{\@Glsxtrshort{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}% } \def\@Glsfullorfirst#1#2[#3]{% \ifglshasshort{#2}{\@Glsxtr@full{#1}{#2}[#3]}{\@Glsfirst@{#1}{#2}[#3]}% } \glsxtr@newmgls{mglsshort}% {\@glsshortortext}{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}% \glsxtr@newmgls{mglslong}% {\@glslongortext}{\@glslongortext}{\@glslongortext}{\@glslongortext}% \glsxtr@newmgls{mglsfull}% {\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}% \glsxtr@newmgls{Mglsshort}% {\@Glsshortortext}{\@glsshortortext}{\@Glsshortortext}{\@glsshortortext}% \glsxtr@newmgls{Mglslong}% {\@Glslongortext}{\@glslongortext}{\@Glslongortext}{\@glslongortext}% \glsxtr@newmgls{Mglsfull}% {\@Glsfullorfirst}{\@glsfullorfirst}{\@Glsfullorfirst}{\@glsfullorfirst}% \glsxtr@newmgls{mglsname}% {\@glsname@}{\@glsname@}{\@glsname@}{\@glsname@}% \glsxtr@newmgls{Mglsname}% {\@Glsname@}{\@glsname@}{\@Glsname@}{\@glsname@}% \glsxtr@newmgls{MGlsname}% {\@Glsname@}{\@Glsname@}{\@Glsname@}{\@Glsname@}% \def\@glssymbolorgls#1#2[#3]{% \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@gls@{#1}{#2}[#3]}% } \def\@glssymbolorGls#1#2[#3]{% \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@Gls@{#1}{#2}[#3]}% } \glsxtr@newmgls{mglssymbol}% {\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}% \glsxtr@newmgls{Mglssymbol}% {\@glssymbolorGls}{\@glssymbolorgls}{\@glssymbolorGls}{\@glssymbolorgls}% \glsxtr@newmgls{MGlssymbol}% {\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}% \newcommand{\mglsfield}{useri} \def\@glsfieldorgls#1#2[#3]{% \glsxtrifhasfield{\mglsfield}{#2}% {\@glsdisp[#1]{#2}{\glscurrentfieldvalue#3}}% {\@gls@{#1}{#2}[#3]}% } \def\@Glsfieldorgls#1#2[#3]{% \glsxtrifhasfield{\mglsfield}{#2}% {\@glsdisp[#1]{#2}{\xmakefirstuc\glscurrentfieldvalue#3}}% {\@Gls@{#1}{#2}[#3]}% } \glsxtr@newmgls{mglsusefield}% {\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}% \glsxtr@newmgls{Mglsusefield}% {\@Glsfieldorgls}{\@glsfieldorgls}{\@Glsfieldorgls}{\@glsfieldorgls}% \glsxtr@newmgls{MGlsusefield}% {\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}% \newcommand*{\mpglsWarning}{% \GlossariesExtraWarning{glossaries-prefix.sty is required for \string\mpgls\space family of commands (either load after glossaries-extra.sty or use the `prefix' package option)}% } \def\@pglsorgls#1#2[#3]{% \ifdef\@pgls@{\@pgls@{#1}{#2}[#3]}{\mpglsWarning\@gls@{#1}{#2}[#3]}% } \def\@pglsorglspl#1#2[#3]{% \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}% } \def\@Pglsorgls#1#2[#3]{% \ifdef\@Pgls@{\@Pgls@{#1}{#2}[#3]}{\mpglsWarning\@Gls@{#1}{#2}[#3]}% } \def\@pglsorglspl#1#2[#3]{% \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}% } \def\@Pglsorglspl#1#2[#3]{% \ifdef\@Pglspl@{\@Pglspl@{#1}{#2}[#3]}{\mpglsWarning\@Glspl@{#1}{#2}[#3]}% } \def\@PGLSorgls#1#2[#3]{% \ifdef\@PGLS@{\@PGLS@{#1}{#2}[#3]}{\mpglsWarning\@GLS@{#1}{#2}[#3]}% } \def\@PGLSorglspl#1#2[#3]{% \ifdef\@PGLSpl@{\@PGLSpl@{#1}{#2}[#3]}{\mpglsWarning\@GLSpl@{#1}{#2}[#3]}% } \glsxtr@newmgls{mpgls}{\@pglsorgls@}{\@gls@}{\@pglsorgls@}{\@gls@}% \glsxtr@newmgls{mpglspl}{\@pglsorglspl@}{\@glspl@}{\@pglsorglspl@}{\@glspl@}% \glsxtr@newmgls{mpglsmainpl}{\@pglsorgls@}{\@gls@}{\@pglsorglspl@}{\@glspl@}% \glsxtr@newmgls{Mpgls}{\@Pglsorgls@}{\@gls@}{\@Pglsorgls@}{\@gls@}% \glsxtr@newmgls{Mpglspl}{\@Pglsorglspl@}{\@glspl@}{\@Pglsorglspl@}{\@glspl@}% \glsxtr@newmgls{Mpglsmainpl}{\@Pglsorgls@}{\@gls@}{\@Pglsorglspl@}{\@glspl@}% \glsxtr@newmgls{MPGls}{\@Pglsorgls@}{\@Gls@}{\@Pglsorgls@}{\@Gls@}% \glsxtr@newmgls{MPGlspl}{\@Pglsorglspl@}{\@Glspl@}{\@Pglsorglspl@}{\@Glspl@}% \glsxtr@newmgls{MPGlsmainpl}{\@Pglsorgls@}{\@Gls@}{\@Pglsorglspl@}{\@Glspl@}% \glsxtr@newmgls{MPGLS}{\@PGLSorgls@}{\@GLS@}{\@PGLSorgls@}{\@GLS@}% \glsxtr@newmgls{MPGLSpl}{\@PGLSorglspl@}{\@GLSpl@}{\@PGLSorglspl@}{\@GLSpl@}% \glsxtr@newmgls{MPGLSmainpl}{\@PGLSorgls@}{\@GLS@}{\@PGLSorglspl@}{\@GLSpl@}% \newcommand*{\RequireGlossariesExtraLang}[1]{% \@ifundefined{ver@glossariesxtr-#1.ldf}{\input{glossariesxtr-#1.ldf}}{}% } \newcommand*{\ProvidesGlossariesExtraLang}[1]{% \ProvidesFile{glossariesxtr-#1.ldf}% } \newcommand{\glsxtr@loaddialect}{% \IfTrackedLanguageFileExists{\this@dialect}% {glossariesxtr-}% prefix {.ldf}% {% \RequireGlossariesExtraLang{\CurrentTrackedTag}% }% {}% not found \@glsxtrdialecthook } \@ifpackageloaded{tracklang} {% \AnyTrackedLanguages {% \ForEachTrackedDialect{\this@dialect}{\glsxtr@loaddialect}% }% {}% } {} \@glsxtr@redefstyles \@glsxtr@do@style \endinput %% %% End of file `glossaries-extra-2021-11-22.sty'.