%% %% This is file `glossaries.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% glossaries.dtx (with options: `glossaries.sty,package') %% %% glossaries.dtx %% Copyright 2011 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 of (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX %% version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. %% %% The Current Maintainer of this work is Nicola Talbot. %% %% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, mfirstuc.sty, glossary-hypernav.sty, glossary-list.sty, glossary-long.sty, glossary-longragged.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-compatible-207.sty, glossaries-accsupp.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-dictionary-Brazilian.dict, glossaries-dictionary-Danish.dict, glossaries-dictionary-Dutch.dict, glossaries-dictionary-English.dict, glossaries-dictionary-French.dict, glossaries-dictionary-German.dict, glossaries-dictionary-Irish.dict, glossaries-dictionary-Italian.dict, glossaries-dictionary-Magyar.dict, glossaries-dictionary-Polish.dict, glossaries-dictionary-Serbian.dict, glossaries-dictionary-Spanish.dict, minimalgls.tex, sample-crossref.tex, sample-custom-acronym.tex, sample-dual.tex, sample.tex, sample4col.tex, sampleaccsupp.tex, sampleAcr.tex, sampleAcrDesc.tex, sampleacronyms.tex, sampleDB.tex, sampleDesc.tex, sampleEq.tex, sampleEqPg.tex, sampleNtn.tex, sampleSec.tex, sampletree.tex, sampleutf8.tex, samplexdy-compatible207.tex, samplexdy.tex, samplexdy2.tex, samplexdy-mc.xdy, samplexdy-mc207.xdy, database1.tex, database2.tex, glossaries.perl. %% %% \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}[2011/04/12 v3.01 (NLCT)] \RequirePackage{ifthen} \RequirePackage{xkeyval}[2006/11/18] \RequirePackage{mfirstuc} \RequirePackage{xfor} \RequirePackage{amsgen} \RequirePackage{etoolbox} \define@boolkey{glossaries.sty}[gls]{toc}[true]{} \define@boolkey{glossaries.sty}[gls]{numberline}[true]{} \ifcsundef{chapter}% {\newcommand*{\@@glossarysec}{section}}% {\newcommand*{\@@glossarysec}{chapter}} \define@choicekey{glossaries.sty}{section}{part,chapter,section,% subsection,subsubsection,paragraph,subparagraph}[section]{% \renewcommand*{\@@glossarysec}{#1}} \newcommand*{\@@glossarysecstar}{*} \newcommand*{\@@glossaryseclabel}{} \newcommand*{\glsautoprefix}{} \define@choicekey{glossaries.sty}{numberedsection}[\val\nr]{% false,nolabel,autolabel}[nolabel]{% \ifcase\nr\relax \renewcommand*{\@@glossarysecstar}{*}% \renewcommand*{\@@glossaryseclabel}{}% \or \renewcommand*{\@@glossarysecstar}{}% \renewcommand*{\@@glossaryseclabel}{}% \or \renewcommand*{\@@glossarysecstar}{}% \renewcommand*{\@@glossaryseclabel}{% \label{\glsautoprefix\@glo@type}}% \fi } \newcommand*{\@glossary@default@style}{list} \define@key{glossaries.sty}{style}{% \renewcommand*{\@glossary@default@style}{#1}} \newcommand*{\glossaryentrynumbers}[1]{#1} \DeclareOptionX{nonumberlist}{% \renewcommand*{\glossaryentrynumbers}[1]{}} \newcommand*\@glo@seeautonumberlist{} \DeclareOptionX{seeautonumberlist}{% \renewcommand*{\@glo@seeautonumberlist}{% \def\@glo@prefix{\glsnextpages}% }% } \newcommand*{\@gls@loadlong}{\RequirePackage{glossary-long}} \DeclareOptionX{nolong}{\renewcommand*{\@gls@loadlong}{}} \IfFileExists{supertabular.sty}{% \newcommand*{\@gls@loadsuper}{\RequirePackage{glossary-super}}}{% \newcommand*{\@gls@loadsuper}{}} \DeclareOptionX{nosuper}{\renewcommand*{\@gls@loadsuper}{}} \newcommand*{\@gls@loadlist}{\RequirePackage{glossary-list}} \DeclareOptionX{nolist}{\renewcommand*{\@gls@loadlist}{}} \newcommand*{\@gls@loadtree}{\RequirePackage{glossary-tree}} \DeclareOptionX{notree}{\renewcommand*{\@gls@loadtree}{}} \DeclareOptionX{nostyles}{% \renewcommand*{\@gls@loadlong}{}% \renewcommand*{\@gls@loadsuper}{}% \renewcommand*{\@gls@loadlist}{}% \renewcommand*{\@gls@loadtree}{}% \let\@glossary@default@style\relax } \define@boolkey{glossaries.sty}[gls]{entrycounter}[true]{} \glsentrycounterfalse \define@key{glossaries.sty}{counterwithin}{% \renewcommand*{\@gls@counterwithin}{#1}% \glsentrycountertrue } \newcommand*{\@gls@counterwithin}{} \define@boolkey{glossaries.sty}[gls]{subentrycounter}[true]{} \glssubentrycounterfalse \define@choicekey{glossaries.sty}{sort}{standard,def,use}{% \csname @gls@setupsort@#1\endcsname } \newcommand*{\@gls@setupsort@standard}{% \def\do@glo@storeentry{\@glo@storeentry}% \def\@gls@defsortcount##1{}% \def\@gls@defsort##1##2{% \ifx\@glo@sort\@glsdefaultsort \let\@glo@sort\@glo@name \fi \@onelevel@sanitize\@glo@sort \expandafter\protected@xdef\csname glo@##2@sort\endcsname{\@glo@sort}% }% \def\@gls@setsort##1{}% } \@gls@setupsort@standard \newcommand*\glssortnumberfmt[1]{% \ifnum#1<100000 0\fi \ifnum#1<10000 0\fi \ifnum#1<1000 0\fi \ifnum#1<100 0\fi \ifnum#1<10 0\fi \number#1% } \newcommand*{\@gls@setupsort@def}{% \def\do@glo@storeentry{\@glo@storeentry}% \def\@gls@defsortcount##1{% \expandafter\global \expandafter\newcount\csname glossary@##1@sortcount\endcsname }% \def\@gls@defsort##1##2{% \expandafter\global\expandafter \advance\csname glossary@##1@sortcount\endcsname by 1\relax \expandafter\protected@xdef\csname glo@##2@sort\endcsname{% \expandafter\glssortnumberfmt {\csname glossary@##1@sortcount\endcsname}}% }% \def\@gls@setsort##1{}% } \newcommand*{\@gls@setupsort@use}{% \let\do@glo@storeentry\@gobble \def\@gls@defsortcount##1{% \expandafter\global \expandafter\newcount\csname glossary@##1@sortcount\endcsname }% \def\@gls@defsort##1##2{% \expandafter\gdef\csname glo@##2@sort\endcsname{}% }% \def\@gls@setsort##1{% \edef\@glo@parent{\csname glo@##1@parent\endcsname}% \ifx\@glo@parent\@empty \else \expandafter\@gls@setsort\expandafter{\@glo@parent}% \fi \edef\@glo@type{\csname glo@##1@type\endcsname}% \edef\@gls@tmp{\csname glo@##1@sort\endcsname}% \ifx\@gls@tmp\@empty \expandafter\global\expandafter \advance\csname glossary@\@glo@type @sortcount\endcsname by 1\relax \expandafter\protected@xdef\csname glo@##1@sort\endcsname{% \expandafter\glssortnumberfmt {\csname glossary@\@glo@type @sortcount\endcsname}}% \@glo@storeentry{##1}% \fi }% } \newcommand*{\glsdefmain}{% \newglossary{main}{gls}{glo}{\glossaryname}% } \newcommand*{\glsdefaulttype}{main} \newcommand*{\acronymtype}{\glsdefaulttype} \DeclareOptionX{nomain}{% \let\glsdefaulttype\relax \renewcommand*{\glsdefmain}{}% } \define@boolkey{glossaries.sty}[gls]{acronym}[true]{% \DeclareAcronymList{acronym}% } \newcommand*{\@glsacronymlists}{} \newcommand*{\@addtoacronymlists}[1]{% \ifx\@glsacronymlists\@empty \protected@xdef\@glsacronymlists{#1}% \else \protected@xdef\@glsacronymlists{\@glsacronymlists,#1}% \fi } \newcommand*{\DeclareAcronymList}[1]{% \glsIfListOfAcronyms{#1}{}{\@addtoacronymlists{#1}}% } \newcommand{\glsIfListOfAcronyms}[1]{% \edef\@do@gls@islistofacronyms{% \noexpand\@gls@islistofacronyms{#1}{\@glsacronymlists}}% \@do@gls@islistofacronyms } \newcommand{\@gls@islistofacronyms}[4]{% \def\gls@islistofacronyms##1,#1,##2\end@gls@islistofacronyms{% \def\@before{##1}\def\@after{##2}}% \gls@islistofacronyms,#2,#1,\@nil\end@gls@islistofacronyms \ifx\@after\@nnil #4% \else #3% \fi } \newif\if@glsisacronymlist \newcommand*{\gls@checkisacronymlist}[1]{% \glsIfListOfAcronyms{#1}% {\@glsisacronymlisttrue}{\@glsisacronymlistfalse}% } \newcommand*{\SetAcronymLists}[1]{% \renewcommand*{\@glsacronymlists}{#1}% } \define@key{glossaries.sty}{acronymlists}{% \@addtoacronymlists{#1}% } \newcommand{\glscounter}{page} \define@key{glossaries.sty}{counter}{% \renewcommand*{\glscounter}{#1}% } \newcommand*{\@gls@sanitizedesc}{\@onelevel@sanitize\@glo@desc} \newcommand*{\@gls@sanitizename}{\@onelevel@sanitize\@glo@name} \newcommand*{\@gls@sanitizesymbol}{\@onelevel@sanitize\@glo@symbol} \define@boolkey[gls]{sanitize}{description}[true]{% \ifgls@sanitize@description \renewcommand*{\@gls@sanitizedesc}{\@onelevel@sanitize\@glo@desc}% \else \renewcommand*{\@gls@sanitizedesc}{}% \fi } \define@boolkey[gls]{sanitize}{name}[true]{% \ifgls@sanitize@name \renewcommand*{\@gls@sanitizename}{\@onelevel@sanitize\@glo@name}% \else \renewcommand*{\@gls@sanitizename}{}% \fi} \define@boolkey[gls]{sanitize}{symbol}[true]{% \ifgls@sanitize@symbol \renewcommand*{\@gls@sanitizesymbol}{% \@onelevel@sanitize\@glo@symbol}% \else \renewcommand*{\@gls@sanitizesymbol}{}% \fi} \define@key{glossaries.sty}{sanitize}[description=true,symbol=true, name=true]{% \ifthenelse{\equal{#1}{none}}{% \renewcommand*{\@gls@sanitizedesc}{}% \renewcommand*{\@gls@sanitizename}{}% \renewcommand*{\@gls@sanitizesymbol}{}% }{\setkeys[gls]{sanitize}{#1}}% } \define@boolkey{glossaries.sty}[gls]{translate}[true]{} \glstranslatefalse \@ifpackageloaded{translator}{\glstranslatetrue}{% \@ifpackageloaded{babel}{\glstranslatetrue}{% \@ifpackageloaded{polyglossia}{\glstranslatetrue}{}}} \define@boolkey{glossaries.sty}[gls]{hyperfirst}[true]{} \glshyperfirsttrue \define@boolkey{glossaries.sty}[glsacr]{footnote}[true]{% \ifthenelse{\boolean{glsacrdescription}}{}% {\renewcommand*{\@gls@sanitizedesc}{}}% } \define@boolkey{glossaries.sty}[glsacr]{description}[true]{% \renewcommand*{\@gls@sanitizesymbol}{}% } \define@boolkey{glossaries.sty}[glsacr]{smallcaps}[true]{% \renewcommand*{\@gls@sanitizesymbol}{}% } \define@boolkey{glossaries.sty}[glsacr]{smaller}[true]{% \renewcommand*{\@gls@sanitizesymbol}{}% } \define@boolkey{glossaries.sty}[glsacr]{dua}[true]{% \renewcommand*{\@gls@sanitizesymbol}{}% } \define@boolkey{glossaries.sty}[glsacr]{shortcuts}[true]{} \newcommand*{\glsorder}{word} \newcommand*{\@glsorder}[1]{} \define@choicekey{glossaries.sty}{order}{word,letter}{% \def\glsorder{#1}} \newif\ifglsxindy \glsxindyfalse \DeclareOptionX{makeindex}{\glsxindyfalse} \define@boolkey[gls]{xindy}{glsnumbers}[true]{} \gls@xindy@glsnumberstrue \def\@xdy@main@language{\rootlanguagename}% \define@key[gls]{xindy}{language}{\def\@xdy@main@language{#1}} \ifcsundef{inputencodingname}{% \def\gls@codepage{}}{% \def\gls@codepage{\inputencodingname} } \define@key[gls]{xindy}{codepage}{\def\gls@codepage{#1}} \define@key{glossaries.sty}{xindy}[]{% \glsxindytrue \setkeys[gls]{xindy}{#1}% } \define@boolkey{glossaries.sty}[gls]{savewrites}[true]{} \glssavewritesfalse \newcommand*{\GlossariesWarning}[1]{% \PackageWarning{glossaries}{#1}% } \newcommand*{\GlossariesWarningNoLine}[1]{% \PackageWarningNoLine{glossaries}{#1}% } \DeclareOptionX{nowarn}{% \renewcommand*{\GlossariesWarning}[1]{}% \renewcommand*{\GlossariesWarningNoLine}[1]{}% } \define@boolkey{glossaries.sty}[gls]{compatible-2.07}[true]{} \csname glscompatible-2.07false\endcsname \ProcessOptionsX \ifglstranslate \@ifpackageloaded{babel}{\IfFileExists{translator.sty}{% \RequirePackage{translator}}{}}{} \fi \ifthenelse{\equal{\glscounter}{section}}% {% \ifcsundef{chapter}{}% {% \let\@gls@old@chapter\@chapter \def\@chapter[#1]#2{\@gls@old@chapter[{#1}]{#2}% \ifcsundef{hyperdef}{}{\hyperdef{section}{\thesection}{}}}% }% }% {} \newcommand*{\@gls@onlypremakeg}{} \newcommand*{\@onlypremakeg}[1]{% \ifx\@gls@onlypremakeg\@empty \def\@gls@onlypremakeg{#1}% \else \expandafter\toks@\expandafter{\@gls@onlypremakeg}% \edef\@gls@onlypremakeg{\the\toks@,\noexpand#1}% \fi} \newcommand*{\@disable@onlypremakeg}{% \@for\@thiscs:=\@gls@onlypremakeg\do{% \expandafter\@disable@premakecs\@thiscs% }} \newcommand*{\@disable@premakecs}[1]{% \def#1{\PackageError{glossaries}{\string#1\space may only be used before \string\makeglossaries}{You can't use \string#1\space after \string\makeglossaries}}% } \providecommand*{\glossaryname}{Glossary} \providecommand*{\acronymname}{Acronyms} \newcommand*{\glssettoctitle}[1]{% \def\glossarytoctitle{\csname @glotype@#1@title\endcsname}} \providecommand*{\entryname}{Notation} \providecommand*{\descriptionname}{Description} \providecommand*{\symbolname}{Symbol} \providecommand*{\pagelistname}{Page List} \providecommand*{\glssymbolsgroupname}{Symbols} \providecommand*{\glsnumbersgroupname}{Numbers} \newcommand*{\glspluralsuffix}{s} \providecommand*{\seename}{see} \providecommand*{\andname}{\&} \newcommand*{\addglossarytocaptions}[1]{% \ifcsundef{captions#1}{}% {% \expandafter\let\expandafter\@gls@tmp\csname captions#1\endcsname \expandafter\toks@\expandafter{\@gls@tmp \renewcommand*{\glossaryname}{\translate{Glossary}}% }% \expandafter\edef\csname captions#1\endcsname{\the\toks@}% }% } \ifglstranslate \@ifpackageloaded{translator}{% \usedictionary{glossaries-dictionary}% \addglossarytocaptions{portuges}% \addglossarytocaptions{portuguese}% \addglossarytocaptions{brazil}% \addglossarytocaptions{brazilian}% \addglossarytocaptions{danish}% \addglossarytocaptions{dutch}% \addglossarytocaptions{afrikaans}% \addglossarytocaptions{english}% \addglossarytocaptions{UKenglish}% \addglossarytocaptions{USenglish}% \addglossarytocaptions{american}% \addglossarytocaptions{australian}% \addglossarytocaptions{british}% \addglossarytocaptions{canadian}% \addglossarytocaptions{newzealand}% \addglossarytocaptions{french}% \addglossarytocaptions{frenchb}% \addglossarytocaptions{francais}% \addglossarytocaptions{acadian}% \addglossarytocaptions{canadien}% \addglossarytocaptions{german}% \addglossarytocaptions{germanb}% \addglossarytocaptions{austrian}% \addglossarytocaptions{naustrian}% \addglossarytocaptions{ngerman}% \addglossarytocaptions{irish}% \addglossarytocaptions{italian}% \addglossarytocaptions{magyar}% \addglossarytocaptions{hungarian}% \addglossarytocaptions{polish}% \addglossarytocaptions{spanish}% \renewcommand*{\glssettoctitle}[1]{% \ifthenelse{\equal{#1}{main}}{% \translatelet{\glossarytoctitle}{Glossary}}{% \ifthenelse{\equal{#1}{acronym}}{% \translatelet{\glossarytoctitle}{Acronyms}}{% \def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}}}% \renewcommand*{\glossaryname}{\translate{Glossary}}% \renewcommand*{\acronymname}{\translate{Acronyms}}% \renewcommand*{\entryname}{\translate{Notation (glossaries)}}% \renewcommand*{\descriptionname}{% \translate{Description (glossaries)}}% \renewcommand*{\symbolname}{\translate{Symbol (glossaries)}}% \renewcommand*{\pagelistname}{% \translate{Page List (glossaries)}}% \renewcommand*{\glssymbolsgroupname}{% \translate{Symbols (glossaries)}}% \renewcommand*{\glsnumbersgroupname}{% \translate{Numbers (glossaries)}}% }{% \@ifpackageloaded{babel}% {\RequirePackage{glossaries-babel}}% {% \@ifpackageloaded{polyglossia}{% \RequirePackage{glossaries-polyglossia}}{}% }} \fi \newcommand*{\glspostdescription}{.} \newcommand*{\nopostdesc}{} \newcommand*{\@nopostdesc}{% \let\org@glspostdescription\glspostdescription \def\glspostdescription{% \let\glspostdescription\org@glspostdescription}% } \newcommand{\glspar}{\par} \ifglsxindy \newcommand{\setStyleFile}[1]{% \renewcommand{\istfilename}{#1.xdy}} \else \newcommand{\setStyleFile}[1]{% \renewcommand{\istfilename}{#1.ist}} \fi \@onlypremakeg\setStyleFile \ifglsxindy \def\istfilename{\jobname.xdy} \else \def\istfilename{\jobname.ist} \fi \newcommand*{\@istfilename}[1]{} \newcommand*{\glscompositor}{.} \newcommand*{\glsSetCompositor}[1]{% \renewcommand*{\glscompositor}{#1}} \@onlypremakeg\glsSetCompositor \newcommand*{\@glsAlphacompositor}{\glscompositor} \ifglsxindy \newcommand*\glsSetAlphaCompositor[1]{% \renewcommand*\@glsAlphacompositor{#1}} \else \newcommand*\glsSetAlphaCompositor[1]{% \glsnoxindywarning\glsSetAlphaCompositor} \fi \@onlypremakeg\glsSetAlphaCompositor \newcommand*{\gls@suffixF}{} \newcommand*{\glsSetSuffixF}[1]{% \renewcommand*{\gls@suffixF}{#1}} \@onlypremakeg\glsSetSuffixF \newcommand*{\gls@suffixFF}{} \newcommand*{\glsSetSuffixFF}[1]{% \renewcommand*{\gls@suffixFF}{#1}% } \ifcsundef{hyperlink}% {% \newcommand*{\glsnumberformat}[1]{#1}% }% {% \newcommand*{\glsnumberformat}[1]{\glshypernumber{#1}}% } \newcommand{\delimN}{, } \newcommand{\delimR}{--} \newcommand*{\glossarypreamble}{} \newcommand*{\glossarypostamble}{} \newcommand*{\glossarysection}[2][\@gls@title]{% \def\@gls@title{#2}% \ifcsundef{phantomsection}% {% \@glossarysection{#1}{#2}% }% {% \@p@glossarysection{#1}{#2}% }% \glossarymark{\glossarytoctitle}% } \ifcsundef{glossarymark}% {% \newcommand{\glossarymark}[1]{\@mkboth{#1}{#1}} }% {% \GlossariesWarning{overriding \string\glossarymark}% \@ifclassloaded{memoir}% { \renewcommand{\glossarymark}[1]{% \markboth{\memUChead{#1}}{\memUChead{#1}}% } } { \renewcommand{\glossarymark}[1]{\@mkboth{#1}{#1}} } } \newcommand*{\setglossarysection}[1]{% \setkeys{glossaries.sty}{section=#1}} \newcommand*{\@glossarysection}[2]{% \ifx\@@glossarysecstar\@empty \csname\@@glossarysec\endcsname{#2}% \else \csname\@@glossarysec\endcsname*{#2}% \@gls@toc{#1}{\@@glossarysec}% \fi \@@glossaryseclabel} \newcommand*{\@p@glossarysection}[2]{% \glsclearpage \phantomsection \ifx\@@glossarysecstar\@empty \csname\@@glossarysec\endcsname{#2}% \else \@gls@toc{#1}{\@@glossarysec}% \csname\@@glossarysec\endcsname*{#2}% \fi \@@glossaryseclabel} \newcommand*{\gls@doclearpage}{% \ifthenelse{\equal{\@@glossarysec}{chapter}}% {% \ifcsundef{cleardoublepage}{\clearpage}{\cleardoublepage}% }% {}% } \newcommand*{\glsclearpage}{\gls@doclearpage} \newcommand*{\@gls@toc}[2]{% \ifglstoc \ifglsnumberline \addcontentsline{toc}{#2}{\numberline{}#1}% \else \addcontentsline{toc}{#2}{#1}% \fi \fi} \newcommand*{\glsnoxindywarning}[1]{% \GlossariesWarning{Not in xindy mode --- ignoring \string#1}% } \ifglsxindy \edef\@xdyattributes{\string"default\string"}% \fi \ifglsxindy \edef\@xdyattributelist{}% \fi \ifglsxindy \def\@xdylocref{} \fi \newcommand*{\@gls@ifinlist}[4]{% \def\@do@ifinlist##1,#1,##2\end@doifinlist{% \def\@gls@listsuffix{##2}% \ifx\@gls@listsuffix\@empty #4% \else #3% \fi }% \@do@ifinlist,#2,#1,\end@doifinlist } \ifglsxindy \newcommand*{\@xdycounters}{\glscounter} \newcommand*\GlsAddXdyCounters[1]{% \@for\@gls@ctr:=#1\do{% \edef\@do@addcounter{% \noexpand\@gls@ifinlist{\@gls@ctr}{\@xdycounters}{}% {% \noexpand\edef\noexpand\@xdycounters{\@xdycounters,% \noexpand\@gls@ctr}% }% }% \@do@addcounter } } \@onlypremakeg\GlsAddXdyCounters \else \newcommand*\GlsAddXdyCounters[1]{% \glsnoxindywarning\GlsAddXdyAttribute } \fi \newcommand*\@disabled@glsaddxdycounters{% \PackageError{glossaries}{\string\GlsAddXdyCounters\space can't be used after \string\GlsAddXdyAttribute}{Move all occurrences of \string\GlsAddXdyCounters\space before the first instance of \string\GlsAddXdyAttribute}% } \ifglsxindy \newcommand*\@glsaddxdyattribute[2]{% \edef\@xdyattributes{\@xdyattributes ^^J \string"#1\string" ^^J \string"#2#1\string"}% \expandafter\toks@\expandafter{\@xdylocref}% \edef\@xdylocref{\the\toks@ ^^J% (markup-locref :open \string"\string~n% \expandafter\string\csname glsX#2X#1\endcsname \string" ^^J :close \string"\string" ^^J :attr \string"#2#1\string")}% \expandafter\gdef\csname glsX#2X#1\endcsname##1##2{% \setentrycounter[##1]{#2}\csname #1\endcsname{##2}% }% } \newcommand*\GlsAddXdyAttribute[1]{% \ifx\@xdyattributelist\@empty \edef\@xdyattributelist{#1}% \else \edef\@xdyattributelist{\@xdyattributelist,#1}% \fi \@for\@this@counter:=\@xdycounters\do{% \protected@edef\gls@do@addxdyattribute{% \noexpand\@glsaddxdyattribute{#1}{\@this@counter}% } \gls@do@addxdyattribute }% \let\GlsAddXdyCounters\@disabled@glsaddxdycounters } \@onlypremakeg\GlsAddXdyAttribute \else \newcommand*\GlsAddXdyAttribute[1]{% \glsnoxindywarning\GlsAddXdyAttribute} \fi \ifglsxindy \newcommand*{\@gls@addpredefinedattributes}{% \GlsAddXdyAttribute{glsnumberformat} \GlsAddXdyAttribute{textrm} \GlsAddXdyAttribute{textsf} \GlsAddXdyAttribute{texttt} \GlsAddXdyAttribute{textbf} \GlsAddXdyAttribute{textmd} \GlsAddXdyAttribute{textit} \GlsAddXdyAttribute{textup} \GlsAddXdyAttribute{textsl} \GlsAddXdyAttribute{textsc} \GlsAddXdyAttribute{emph} \GlsAddXdyAttribute{glshypernumber} \GlsAddXdyAttribute{hyperrm} \GlsAddXdyAttribute{hypersf} \GlsAddXdyAttribute{hypertt} \GlsAddXdyAttribute{hyperbf} \GlsAddXdyAttribute{hypermd} \GlsAddXdyAttribute{hyperit} \GlsAddXdyAttribute{hyperup} \GlsAddXdyAttribute{hypersl} \GlsAddXdyAttribute{hypersc} \GlsAddXdyAttribute{hyperemph} } \else \let\@gls@addpredefinedattributes\relax \fi \def\@xdyuseralphabets{} \ifglsxindy \newcommand*{\GlsAddXdyAlphabet}[2]{% \edef\@xdyuseralphabets{% \@xdyuseralphabets ^^J (define-alphabet "#1" (#2))}} \else \newcommand*{\GlsAddXdyAlphabet}[2]{% \glsnoxindywarning\GlsAddXdyAlphabet} \fi \ifglsxindy \newcommand*{\@gls@xdy@locationlist}{% roman-page-numbers,% Roman-page-numbers,% arabic-page-numbers,% alpha-page-numbers,% Alpha-page-numbers,% Appendix-page-numbers,% arabic-section-numbers% } \protected@edef\@gls@roman{\@roman{0\string" \string"roman-numbers-lowercase\string" :sep \string"}}% \@onelevel@sanitize\@gls@roman \edef\@tmp{\string" \string"roman-numbers-lowercase\string" :sep \string"}% \@onelevel@sanitize\@tmp \ifx\@tmp\@gls@roman \expandafter \edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{% \string"roman-numbers-lowercase\string"% }% \else \expandafter \edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{ :sep \string"\@gls@roman\string"% }% \fi \expandafter\def\csname @gls@xdy@Lclass@Roman-page-numbers\endcsname{% \string"roman-numbers-uppercase\string"% }% \expandafter\def\csname @gls@xdy@Lclass@arabic-page-numbers\endcsname{% \string"arabic-numbers\string"% }% \expandafter\def\csname @gls@xdy@Lclass@alpha-page-numbers\endcsname{% \string"alpha\string"% }% \expandafter\def\csname @gls@xdy@Lclass@Alpha-page-numbers\endcsname{% \string"ALPHA\string"% }% \expandafter\def\csname @gls@xdy@Lclass@Appendix-page-numbers\endcsname{% \string"ALPHA\string" :sep \string"\@glsAlphacompositor\string" \string"arabic-numbers\string"% } \expandafter\def\csname @gls@xdy@Lclass@arabic-section-numbers\endcsname{% \string"arabic-numbers\string" :sep \string"\glscompositor\string" \string"arabic-numbers\string"% }% \def\@xdyuserlocationdefs{} \def\@xdyuserlocationnames{} \fi \ifglsxindy \newcommand*{\GlsAddXdyLocation}[3][]{% \def\@gls@tmp{#1}% \ifx\@gls@tmp\@empty \edef\@xdyuserlocationdefs{% \@xdyuserlocationdefs ^^J% (define-location-class \string"#2\string"^^J\space\space \space(:sep \string"{}\glsopenbrace\string" #3 :sep \string"\glsclosebrace\string")) }% \else \edef\@xdyuserlocationdefs{% \@xdyuserlocationdefs ^^J% (define-location-class \string"#2\string"^^J\space\space \space(:sep "\glsopenbrace" #1 :sep "\glsclosebrace\glsopenbrace" #3 :sep "\glsclosebrace")) }% \fi \edef\@xdyuserlocationnames{% \@xdyuserlocationnames^^J\space\space\space \string"#1\string"}% } \@onlypremakeg\GlsAddXdyLocation \else \newcommand*{\GlsAddXdyLocation}[2]{% \glsnoxindywarning\GlsAddXdyLocation} \fi \ifglsxindy \edef\@xdylocationclassorder{^^J\space\space\space \string"roman-page-numbers\string"^^J\space\space\space \string"arabic-page-numbers\string"^^J\space\space\space \string"arabic-section-numbers\string"^^J\space\space\space \string"alpha-page-numbers\string"^^J\space\space\space \string"Roman-page-numbers\string"^^J\space\space\space \string"Alpha-page-numbers\string"^^J\space\space\space \string"Appendix-page-numbers\string" \@xdyuserlocationnames^^J\space\space\space \string"see\string" } \fi \ifglsxindy \newcommand*\GlsSetXdyLocationClassOrder[1]{% \def\@xdylocationclassorder{#1}} \else \newcommand*\GlsSetXdyLocationClassOrder[1]{% \glsnoxindywarning\GlsSetXdyLocationClassOrder} \fi \ifglsxindy \def\@xdysortrules{} \fi \ifglsxindy \newcommand*\GlsAddSortRule[2]{% \expandafter\toks@\expandafter{\@xdysortrules}% \protected@edef\@xdysortrules{\the\toks@ ^^J (sort-rule \string"#1\string" \string"#2\string")}% } \else \newcommand*\GlsAddSortRule[2]{% \glsnoxindywarning\GlsAddSortRule} \fi \ifglsxindy \def\@xdyrequiredstyles{tex} \fi \ifglsxindy \newcommand*\GlsAddXdyStyle[1]{% \edef\@xdyrequiredstyles{\@xdyrequiredstyles,#1}}% \else \newcommand*\GlsAddXdyStyle[1]{% \glsnoxindywarning\GlsAddXdyStyle} \fi \ifglsxindy \newcommand*\GlsSetXdyStyles[1]{% \edef\@xdyrequiredstyles{#1}} \else \newcommand*\GlsSetXdyStyles[1]{% \glsnoxindywarning\GlsSetXdyStyles} \fi \ifglsxindy \@ifpackageloaded{babel}{% \def\findrootlanguage{\begingroup \escapechar=-1\relax \edef\languagename{% \expandafter\string\csname\languagename\endcsname}% \def\NeedsTeXFormat##1[##2]{}% \def\ProvidesPackage##1[##2]{}% \let\LdfInit\relax \def\languageattribute##1##2{}% \def\DeclareOption##1##2{% \ifx##1*\expandafter\endinput\else \edef\testlanguage{\expandafter\string\csname##1\endcsname}% \ifx\testlanguage\languagename##2\fi \fi} \def\input##1{\stripldf##1}% \def\stripldf##1.ldf{\gdef\rootlanguagename{##1}}% \@@input babel.sty \endgroup}% }{% \@ifpackageloaded{ngerman}{% \def\findrootlanguage{% \def\rootlanguagename{german}}% }{% \def\findrootlanguage{% \def\rootlanguagename{english}}% }% }% \fi \def\rootlanguagename{english} \def\@xdylanguage#1#2{} \ifglsxindy \newcommand*\GlsSetXdyLanguage[2][\glsdefaulttype]{% \ifglossaryexists{#1}{% \expandafter\def\csname @xdy@#1@language\endcsname{#2}% }{% \PackageError{glossaries}{Can't set language type for glossary type `#1' --- no such glossary}{% You have specified a glossary type that doesn't exist}}} \else \newcommand*\GlsSetXdyLanguage[2][]{% \glsnoxindywarning\GlsSetXdyLanguage} \fi \def\@gls@codepage#1#2{} \ifglsxindy \newcommand*{\GlsSetXdyCodePage}[1]{% \renewcommand*{\gls@codepage}{#1}% } \else \newcommand*{\GlsSetXdyCodePage}[1]{% \glsnoxindywarning\GlsSetXdyCodePage} \fi \ifglsxindy \ifgls@xindy@glsnumbers \def\@xdylettergroups{(define-letter-group \string"glsnumbers\string"^^J\space\space\space :prefixes (\string"0\string" \string"1\string" \string"2\string" \string"3\string" \string"4\string" \string"5\string" \string"6\string" \string"7\string" \string"8\string" \string"9\string")^^J\space\space\space :before \string"\@glsfirstletter\string")} \else \def\@xdylettergroups{} \fi \fi \newcommand*\GlsAddLetterGroup[2]{% \expandafter\toks@\expandafter{\@xdylettergroups}% \protected@edef\@xdylettergroups{\the\toks@^^J% (define-letter-group \string"#1\string"^^J\space\space\space#2)}% }% \newcommand*{\forallglossaries}[3][\@glo@types]{% \@for#2:=#1\do{\ifx#2\@empty\else#3\fi}% } \newcommand*{\forglsentries}[3][\glsdefaulttype]{% \edef\@@glo@list{\csname glolist@#1\endcsname}% \@for#2:=\@@glo@list\do{\ifx#2\@empty\else#3\fi}% } \newcommand*{\forallglsentries}[3][\@glo@types]{% \expandafter\forallglossaries\expandafter[#1]{\@@this@glo@}{% \forglsentries[\@@this@glo@]{#2}{#3}}} \newcommand{\ifglossaryexists}[3]{% \ifcsundef{@glotype@#1@out}{#3}{#2}% } \newcommand{\ifglsentryexists}[3]{% \ifcsundef{glo@#1@name}{#3}{#2}% } \newcommand*{\ifglsused}[3]{\ifthenelse{\boolean{glo@#1@flag}}{#2}{#3}} \newcommand{\glsdoifexists}[2]{% \ifglsentryexists{#1}{#2}{% \PackageError{glossaries}{Glossary entry `#1' has not been defined}{You need to define a glossary entry before you can use it.}}% } \newcommand{\glsdoifnoexists}[2]{% \ifglsentryexists{#1}{% \PackageError{glossaries}{Glossary entry `#1' has already been defined}{}}{#2}% } \newcommand*{\@glo@types}{,} \newcommand*{\newglossary}[5][glg]{% \ifglossaryexists{#2}{% \PackageError{glossaries}{Glossary type `#2' already exists}{% You can't define a new glossary called `#2' because it already exists}% }{% \ifx\glsdefaulttype\relax \gdef\glsdefaulttype{#2}% \fi \toks@{#2}\edef\@glo@types{\@glo@types\the\toks@,}% \expandafter\gdef\csname glolist@#2\endcsname{,}% \expandafter\def\csname @glotype@#2@in\endcsname{#3}% \expandafter\def\csname @glotype@#2@out\endcsname{#4}% \expandafter\def\csname @glotype@#2@title\endcsname{#5}% \protected@write\@auxout{}{\string\@newglossary{#2}{#1}{#3}{#4}}% \ifcsundef{gls@#2@display}% {% \expandafter\gdef\csname gls@#2@display\endcsname{\glsdisplay}% }% {}% \ifcsundef{gls@#2@displayfirst}% {% \expandafter\gdef\csname gls@#2@displayfirst\endcsname{% \glsdisplayfirst }% }% {}% \@gls@defsortcount{#2}% \@ifnextchar[{\@gls@setcounter{#2}}% {\@gls@setcounter{#2}[\glscounter]}}% } \newcommand*{\altnewglossary}[3]{% \newglossary[#2-glg]{#1}{#2-gls}{#2-glo}{#3}% } \@onlypreamble{\newglossary} \@onlypremakeg\newglossary \newcommand*{\@newglossary}[4]{} \def\@gls@setcounter#1[#2]{% \expandafter\def\csname @glotype@#1@counter\endcsname{#2}% \ifglsxindy \GlsAddXdyCounters{#2}% \fi } \newcommand*{\@gls@getcounter}[1]{% \csname @glotype@#1@counter\endcsname} \glsdefmain \define@key{glossentry}{name}{% \def\@glo@name{#1}% } \define@key{glossentry}{description}{% \def\@glo@desc{#1}% } \define@key{glossentry}{descriptionplural}{% \def\@glo@descplural{#1}% } \define@key{glossentry}{sort}{% \def\@glo@sort{#1}} \define@key{glossentry}{text}{% \def\@glo@text{#1}% } \define@key{glossentry}{plural}{% \def\@glo@plural{#1}% } \define@key{glossentry}{first}{% \def\@glo@first{#1}% } \define@key{glossentry}{firstplural}{% \def\@glo@firstplural{#1}% } \define@key{glossentry}{symbol}{% \def\@glo@symbol{#1}% } \define@key{glossentry}{symbolplural}{% \def\@glo@symbolplural{#1}% } \define@key{glossentry}{type}{% \def\@glo@type{#1}} \define@key{glossentry}{counter}{% \ifcsundef{c@#1}% {% \PackageError{glossaries}% {There is no counter called `#1'}% {% The counter key should have the name of a valid counter as its value% }% }% {% \def\@glo@counter{#1}% }% } \define@key{glossentry}{see}{% \def\@glo@see{#1}% \@glo@seeautonumberlist } \define@key{glossentry}{parent}{% \def\@glo@parent{#1}} \define@choicekey{glossentry}{nonumberlist}[\val\nr]{true,false}[true]{% \ifcase\nr\relax \def\@glo@prefix{\glsnonextpages}% \else \def\@glo@prefix{\glsnextpages}% \fi } \define@key{glossentry}{user1}{% \def\@glo@useri{#1}% } \define@key{glossentry}{user2}{% \def\@glo@userii{#1}% } \define@key{glossentry}{user3}{% \def\@glo@useriii{#1}% } \define@key{glossentry}{user4}{% \def\@glo@useriv{#1}% } \define@key{glossentry}{user5}{% \def\@glo@userv{#1}% } \define@key{glossentry}{user6}{% \def\@glo@uservi{#1}% } \define@key{glossentry}{short}{% \def\@glo@short{#1}% } \define@key{glossentry}{shortplural}{% \def\@glo@shortpl{#1}% } \define@key{glossentry}{long}{% \def\@glo@long{#1}% } \define@key{glossentry}{longplural}{% \def\@glo@longpl{#1}% } \newcommand*{\@glsnoname}{% \PackageError{glossaries}{name key required in \string\newglossaryentry\space for entry `\@glo@label'}{You haven't specified the entry name}} \newcommand*{\@glsdefaultplural}{\@glo@text\glspluralsuffix} \newcommand*{\@glsdefaultsort}{\@glo@name} \newcount\gls@level \newrobustcmd{\newglossaryentry}[2]{% \glsdoifnoexists{#1}{% \def\@glo@label{#1}% \let\@glo@name\@glsnoname \def\@glo@desc{\PackageError{glossaries}{description key required in \string\newglossaryentry\space for entry `\@glo@label'}{You haven't specified the entry description}}% \def\@glo@descplural{\@glo@desc}% \def\@glo@type{\glsdefaulttype}% \def\@glo@symbol{\relax}% \def\@glo@symbolplural{\@glo@symbol}% \def\@glo@text{\@glo@name}% \let\@glo@plural\@glsdefaultplural \let\@glo@first\relax \let\@glo@firstplural\relax \let\@glo@sort\@glsdefaultsort \def\@glo@counter{\@gls@getcounter{\@glo@type}}% \def\@glo@see{}% \def\@glo@parent{}% \def\@glo@prefix{}% \def\@glo@useri{}% \def\@glo@userii{}% \def\@glo@useriii{}% \def\@glo@useriv{}% \def\@glo@userv{}% \def\@glo@uservi{}% \def\@glo@short{}% \def\@glo@shortpl{}% \def\@glo@long{}% \def\@glo@longpl{}% \@newglossaryentryprehook \setkeys{glossentry}{#2}% \ifcsundef{glolist@\@glo@type}% {% \PackageError{glossaries}% {Glossary type '\@glo@type' has not been defined}% {You need to define a new glossary type, before making entries in it}% }% {% \protected@edef\@glolist@{\csname glolist@\@glo@type\endcsname}% \expandafter\xdef\csname glolist@\@glo@type\endcsname{\@glolist@{#1},}% }% \gls@level=0\relax \ifx\@glo@parent\@empty \expandafter\gdef\csname glo@#1@parent\endcsname{}% \else \ifthenelse{\equal{#1}{\@glo@parent}}{% \PackageError{glossaries}{Entry `#1' can't be its own parent}{}% \def\@glo@parent{}% \expandafter\gdef\csname glo@#1@parent\endcsname{}% }{% \ifglsentryexists{\@glo@parent}{% \expandafter\xdef\csname glo@#1@parent\endcsname{\@glo@parent}% \gls@level=\csname glo@\@glo@parent @level\endcsname\relax \advance\gls@level by 1\relax \ifx\@glo@name\@glsnoname \expandafter\let\expandafter\@glo@name \csname glo@\@glo@parent @name\endcsname \ifx\@glo@plural\@glsdefaultplural \expandafter\let\expandafter\@glo@plural \csname glo@\@glo@parent @plural\endcsname \fi \fi }{% \PackageError{glossaries}{Invalid parent `\@glo@parent' for entry `#1' - parent doesn't exist}{Parent entries must be defined before their children}% \def\@glo@parent{}% \expandafter\gdef\csname glo@#1@parent\endcsname{}% }% }% \fi \expandafter\xdef\csname glo@#1@level\endcsname{\number\gls@level}% \ifx\relax\@glo@firstplural \ifx\relax\@glo@first \def\@glo@firstplural{\@glo@plural}% \def\@glo@first{\@glo@text}% \else \def\@glo@firstplural{\@glo@first\glspluralsuffix}% \fi \else \ifx\relax\@glo@first \def\@glo@first{\@glo@text}% \fi \fi \expandafter \protected@xdef\csname glo@#1@text\endcsname{\@glo@text}% \expandafter \protected@xdef\csname glo@#1@plural\endcsname{\@glo@plural}% \expandafter \protected@xdef\csname glo@#1@first\endcsname{\@glo@first}% \expandafter \protected@xdef\csname glo@#1@firstpl\endcsname{\@glo@firstplural}% \expandafter \protected@xdef\csname glo@#1@type\endcsname{\@glo@type}% \expandafter \protected@xdef\csname glo@#1@counter\endcsname{\@glo@counter}% \expandafter \protected@xdef\csname glo@#1@useri\endcsname{\@glo@useri}% \expandafter \protected@xdef\csname glo@#1@userii\endcsname{\@glo@userii}% \expandafter \protected@xdef\csname glo@#1@useriii\endcsname{\@glo@useriii}% \expandafter \protected@xdef\csname glo@#1@useriv\endcsname{\@glo@useriv}% \expandafter \protected@xdef\csname glo@#1@userv\endcsname{\@glo@userv}% \expandafter \protected@xdef\csname glo@#1@uservi\endcsname{\@glo@uservi}% \expandafter \protected@xdef\csname glo@#1@short\endcsname{\@glo@short}% \expandafter \protected@xdef\csname glo@#1@shortpl\endcsname{\@glo@shortpl}% \expandafter \protected@xdef\csname glo@#1@long\endcsname{\@glo@long}% \expandafter \protected@xdef\csname glo@#1@longpl\endcsname{\@glo@longpl}% \@gls@sanitizename \expandafter\protected@xdef\csname glo@#1@name\endcsname{\@glo@name}% \def\@glo@@desc{\@glo@first}% \ifx\@glo@desc\@glo@@desc \let\@glo@desc\@glo@first \fi \@gls@sanitizedesc \expandafter\protected@xdef\csname glo@#1@desc\endcsname{\@glo@desc}% \expandafter\protected@xdef\csname glo@#1@descplural\endcsname{\@glo@descplural}% \@gls@defsort{\@glo@type}{#1}% \def\@glo@@symbol{\@glo@text}% \ifx\@glo@symbol\@glo@@symbol \let\@glo@symbol\@glo@text \fi \@gls@sanitizesymbol \expandafter\protected@xdef\csname glo@#1@symbol\endcsname{\@glo@symbol}% \expandafter\protected@xdef\csname glo@#1@symbolplural\endcsname{\@glo@symbolplural}% \expandafter\gdef\csname glo@#1@flagfalse\endcsname{% \expandafter\global\expandafter \let\csname ifglo@#1@flag\endcsname\iffalse}% \expandafter\gdef\csname glo@#1@flagtrue\endcsname{% \expandafter\global\expandafter \let\csname ifglo@#1@flag\endcsname\iftrue}% \csname glo@#1@flagfalse\endcsname \ifx\@glo@see\@empty \else \protected@edef\@do@glssee{% \noexpand\@gls@fixbraces\noexpand\@glo@list\@glo@see \noexpand\@nil \noexpand\expandafter\noexpand\@glssee\noexpand\@glo@list{#1}}% \@do@glssee \fi }% \do@glo@storeentry{#1}% \@newglossaryentryposthook } \newcommand*{\@newglossaryentryprehook}{} \newcommand*{\@newglossaryentryposthook}{} \ifglsxindy \newcommand*{\@glossaryentryfield}{\string\\glossaryentryfield} \else \newcommand*{\@glossaryentryfield}{\string\glossaryentryfield} \fi \ifglsxindy \newcommand*{\@glossarysubentryfield}{% \string\\glossarysubentryfield} \else \newcommand*{\@glossarysubentryfield}{% \string\glossarysubentryfield} \fi \newcommand{\@glo@storeentry}[1]{% \protected@edef\@glo@sort{\csname glo@#1@sort\endcsname}% \@gls@checkmkidxchars\@glo@sort \protected@edef\@@glo@name{\csname glo@#1@name\endcsname}% \@gls@checkmkidxchars\@@glo@name \ifglsxindy \protected@edef\@glo@name{\string\\glsnamefont{\@@glo@name}}% \else \protected@edef\@glo@name{\string\glsnamefont{\@@glo@name}}% \fi \protected@edef\@glo@desc{\csname glo@#1@desc\endcsname}% \@gls@checkmkidxchars\@glo@desc \protected@edef\@glo@symbol{\csname glo@#1@symbol\endcsname}% \@gls@checkmkidxchars\@glo@symbol \@gls@checkmkidxchars\@glo@prefix \edef\@glo@parent{\csname glo@#1@parent\endcsname}% \ifglsxindy \ifx\@glo@parent\@empty \expandafter\protected@xdef\csname glo@#1@index\endcsname{% (\string"\@glo@sort\string" % \string"\@glo@prefix\@glossaryentryfield{#1}{\@glo@name }{\@glo@desc}{\@glo@symbol}\string") % }% \else \expandafter\protected@xdef\csname glo@#1@index\endcsname{% \csname glo@\@glo@parent @index\endcsname (\string"\@glo@sort\string" % \string"\@glo@prefix\@glossarysubentryfield% {\csname glo@#1@level\endcsname}{#1}{\@glo@name }{\@glo@desc}{\@glo@symbol}\string") % }% \fi \else \ifx\@glo@parent\@empty \@onelevel@sanitize\@glo@prefix \expandafter\protected@xdef\csname glo@#1@index\endcsname{% \@glo@sort\@gls@actualchar\@glo@prefix \@glossaryentryfield{#1}{\@glo@name}{\@glo@desc }{\@glo@symbol}% }% \else \expandafter\protected@xdef\csname glo@#1@index\endcsname{% \csname glo@\@glo@parent @index\endcsname\@gls@levelchar \@glo@sort\@gls@actualchar\@glo@prefix \@glossarysubentryfield {\csname glo@#1@level\endcsname}{#1}{\@glo@name}{\@glo@desc }{\@glo@symbol}% }% \fi \fi } \newcommand*{\glsreset}[1]{% \glsdoifexists{#1}{% \expandafter\global\csname glo@#1@flagfalse\endcsname}} \newcommand*{\glslocalreset}[1]{% \glsdoifexists{#1}{% \expandafter\let\csname ifglo@#1@flag\endcsname\iffalse}} \newcommand*{\glsunset}[1]{% \glsdoifexists{#1}{% \expandafter\global\csname glo@#1@flagtrue\endcsname}} \newcommand*{\glslocalunset}[1]{% \glsdoifexists{#1}{% \expandafter\let\csname ifglo@#1@flag\endcsname\iftrue}} \newcommand*{\glsresetall}[1][\@glo@types]{% \forallglsentries[#1]{\@glsentry}{% \glsreset{\@glsentry}}} \newcommand*{\glslocalresetall}[1][\@glo@types]{% \forallglsentries[#1]{\@glsentry}{% \glslocalreset{\@glsentry}}} \newcommand*{\glsunsetall}[1][\@glo@types]{% \forallglsentries[#1]{\@glsentry}{% \glsunset{\@glsentry}}} \newcommand*{\glslocalunsetall}[1][\@glo@types]{% \forallglsentries[#1]{\@glsentry}{% \glslocalunset{\@glsentry}}} \newcommand*{\loadglsentries}[2][\@gls@default]{% \let\@gls@default\glsdefaulttype \def\glsdefaulttype{#1}\input{#2}% \let\glsdefaulttype\@gls@default} \@onlypreamble{\loadglsentries} \newcommand*{\glstextformat}[1]{#1} \newcommand*{\glsdisplayfirst}[4]{#1#4} \newcommand*{\glsdisplay}[4]{#1#4} \newcommand*{\defglsdisplay}[2][\glsdefaulttype]{% \expandafter\def\csname gls@#1@display\endcsname##1##2##3##4{#2}} \newcommand*{\defglsdisplayfirst}[2][\glsdefaulttype]{% \expandafter\def\csname gls@#1@displayfirst\endcsname##1##2##3##4{#2}} \define@key{glslink}{counter}{% \ifcsundef{c@#1}% {% \PackageError{glossaries}% {There is no counter called `#1'}% {% The counter key should have the name of a valid counter as its value% }% }% {% \def\@gls@counter{#1}% }% } \define@key{glslink}{format}{% \def\@glsnumberformat{#1}} \define@boolkey{glslink}{hyper}[true]{} \newrobustcmd*{\glslink}{% \@ifstar\@sgls@link\@gls@@link} \newcommand*{\@sgls@link}[1][]{\@gls@@link[hyper=false,#1]} \newcommand*{\@gls@@link}[3][]{% \ifglsentryexists{#2}% {% \@gls@link[#1]{#2}{#3}% }{% \PackageError{glossaries}{Glossary entry `#2' has not been defined}{You need to define a glossary entry before you can use it.}% \glstextformat{#3}% }% } \def\@gls@link[#1]#2#3{% \leavevmode \def\glslabel{#2}% \def\@glsnumberformat{glsnumberformat}% \edef\@gls@counter{\csname glo@#2@counter\endcsname}% \KV@glslink@hypertrue \setkeys{glslink}{#1}% \@gls@saveentrycounter \@gls@setsort{#2}% \@do@wrglossary{#2}% \ifKV@glslink@hyper \@glslink{glo:#2}{\glstextformat{#3}}% \else \glstextformat{#3}\relax \fi } \newcommand*{\@gls@saveentrycounter}{% \def\@gls@Hcounter{}% \ifthenelse{\equal{\@gls@counter}{equation}}% { \ifcsundef{xatlevel@}% {% \edef\theglsentrycounter{\expandafter\noexpand \csname the\@gls@counter\endcsname}% }% {% \ifx\xatlevel@\@empty \edef\theglsentrycounter{\expandafter\noexpand \csname the\@gls@counter\endcsname}% \else \savecounters@ \advance\c@equation by 1\relax \edef\theglsentrycounter{\csname the\@gls@counter\endcsname}% \ifcsundef{theH\@gls@counter}% {% \def\@gls@Hcounter{\theglsentrycounter}% }% {% \def\@gls@Hcounter{\csname theH\@gls@counter\endcsname}% }% \protected@edef\theHglsentrycounter{\@gls@Hcounter}% \restorecounters@ \fi }% }% {% \edef\theglsentrycounter{\expandafter\noexpand \csname the\@gls@counter\endcsname}% }% \ifx\@gls@Hcounter\@empty \ifcsundef{theH\@gls@counter}% {% \def\theHglsentrycounter{\theglsentrycounter}% }% {% \protected@edef\theHglsentrycounter{\expandafter\noexpand \csname theH\@gls@counter\endcsname}% }% \fi } \def\@set@glo@numformat#1#2#3#4{% \expandafter\@glo@check@mkidxrangechar#3\@nil \protected@edef#1{% \@glo@prefix setentrycounter[#4]{#2}% \expandafter\string\csname\@glo@suffix\endcsname }% \@gls@checkmkidxchars#1% } \def\@glo@check@mkidxrangechar#1#2\@nil{% \if#1(\relax \def\@glo@prefix{(}% \if\relax#2\relax \def\@glo@suffix{glsnumberformat}% \else \def\@glo@suffix{#2}% \fi \else \if#1)\relax \def\@glo@prefix{)}% \if\relax#2\relax \def\@glo@suffix{glsnumberformat}% \else \def\@glo@suffix{#2}% \fi \else \def\@glo@prefix{}\def\@glo@suffix{#1#2}% \fi \fi} \newcommand*{\@gls@escbsdq}[1]{% \def\@gls@checkedmkidx{}% \let\gls@xdystring=#1\relax \@onelevel@sanitize\gls@xdystring \edef\do@gls@xdycheckbackslash{% \noexpand\@gls@xdycheckbackslash\gls@xdystring\noexpand\@nil \@backslashchar\@backslashchar\noexpand\null}% \do@gls@xdycheckbackslash \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}% \def\@gls@checkedmkidx{}% \expandafter\@gls@xdycheckquote\gls@xdystring\@nil""\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}% \let#1=\gls@xdystring } \newcommand{\@gls@checkmkidxchars}[1]{% \ifglsxindy \@gls@escbsdq{#1}% \else \def\@gls@checkedmkidx{}% \expandafter\@gls@checkquote#1\@nil""\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checkescquote#1\@nil\"\"\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checkescactual#1\@nil\?\?\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checkactual#1\@nil??\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checkbar#1\@nil||\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checkescbar#1\@nil\|\|\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \def\@gls@checkedmkidx{}% \expandafter\@gls@checklevel#1\@nil!!\null \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% \fi } \def\@gls@updatechecked#1\@nil#2{\def#2{#1}} \newtoks\@gls@tmpb \def\@gls@checkquote#1"#2"#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkquote{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@quotechar\@gls@quotechar\@gls@quotechar}% \def\@@gls@checkquote{\@gls@checkquote#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@quotechar}% \ifx\null#3\null \def\@@gls@checkquote{\@gls@checkquote#2""\null}% \else \def\@@gls@checkquote{\@gls@checkquote#2"#3\null}% \fi \fi \@@gls@checkquote} \def\@gls@checkescquote#1\"#2\"#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkescquote{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@quotechar \@gls@quotechar\string\"\@gls@quotechar}% \def\@@gls@checkescquote{\@gls@checkescquote#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@quotechar}% \ifx\null#3\null \def\@@gls@checkescquote{\@gls@checkescquote#2\"\"\null}% \else \def\@@gls@checkescquote{\@gls@checkescquote#2\"#3\null}% \fi \fi \@@gls@checkescquote} \def\@gls@checkescactual#1\?#2\?#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkescactual{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@actualchar \@gls@quotechar\string\"\@gls@actualchar}% \def\@@gls@checkescactual{\@gls@checkescactual#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@actualchar}% \ifx\null#3\null \def\@@gls@checkescactual{\@gls@checkescactual#2\?\?\null}% \else \def\@@gls@checkescactual{\@gls@checkescactual#2\?#3\null}% \fi \fi \@@gls@checkescactual} \def\@gls@checkescbar#1\|#2\|#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkescbar{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@encapchar \@gls@quotechar\string\"\@gls@encapchar}% \def\@@gls@checkescbar{\@gls@checkescbar#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@encapchar}% \ifx\null#3\null \def\@@gls@checkescbar{\@gls@checkescbar#2\|\|\null}% \else \def\@@gls@checkescbar{\@gls@checkescbar#2\|#3\null}% \fi \fi \@@gls@checkescbar} \def\@gls@checkesclevel#1\!#2\!#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkesclevel{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@levelchar \@gls@quotechar\string\"\@gls@levelchar}% \def\@@gls@checkesclevel{\@gls@checkesclevel#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\string\"\@gls@levelchar}% \ifx\null#3\null \def\@@gls@checkesclevel{\@gls@checkesclevel#2\!\!\null}% \else \def\@@gls@checkesclevel{\@gls@checkesclevel#2\!#3\null}% \fi \fi \@@gls@checkesclevel} \def\@gls@checkbar#1|#2|#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkbar{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@encapchar\@gls@quotechar\@gls@encapchar}% \def\@@gls@checkbar{\@gls@checkbar#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@encapchar}% \ifx\null#3\null \def\@@gls@checkbar{\@gls@checkbar#2||\null}% \else \def\@@gls@checkbar{\@gls@checkbar#2|#3\null}% \fi \fi \@@gls@checkbar} \def\@gls@checklevel#1!#2!#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checklevel{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@levelchar\@gls@quotechar\@gls@levelchar}% \def\@@gls@checklevel{\@gls@checklevel#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@levelchar}% \ifx\null#3\null \def\@@gls@checklevel{\@gls@checklevel#2!!\null}% \else \def\@@gls@checklevel{\@gls@checklevel#2!#3\null}% \fi \fi \@@gls@checklevel} \def\@gls@checkactual#1?#2?#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@checkactual{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@actualchar\@gls@quotechar\@gls@actualchar}% \def\@@gls@checkactual{\@gls@checkactual#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \@gls@quotechar\@gls@actualchar}% \ifx\null#3\null \def\@@gls@checkactual{\@gls@checkactual#2??\null}% \else \def\@@gls@checkactual{\@gls@checkactual#2?#3\null}% \fi \fi \@@gls@checkactual} \def\@gls@xdycheckquote#1"#2"#3\null{% \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% \toks@={#1}% \ifx\null#2\null \ifx\null#3\null \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% \def\@@gls@xdycheckquote{\relax}% \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \string\"\string\"}% \def\@@gls@xdycheckquote{\@gls@xdycheckquote#3\null}% \fi \else \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ \string\"}% \ifx\null#3\null \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2""\null}% \else \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2"#3\null}% \fi \fi \@@gls@xdycheckquote } \edef\def@gls@xdycheckbackslash{% \noexpand\def\noexpand\@gls@xdycheckbackslash##1\@backslashchar ##2\@backslashchar##3\noexpand\null{% \noexpand\@gls@tmpb=\noexpand\expandafter {\noexpand\@gls@checkedmkidx}% \noexpand\toks@={##1}% \noexpand\ifx\noexpand\null##2\noexpand\null \noexpand\ifx\noexpand\null##3\noexpand\null \noexpand\edef\noexpand\@gls@checkedmkidx{% \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}% \noexpand\def\noexpand\@@gls@xdycheckbackslash{\relax}% \noexpand\else \noexpand\edef\noexpand\@gls@checkedmkidx{% \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@ \@backslashchar\@backslashchar\@backslashchar\@backslashchar}% \noexpand\def\noexpand\@@gls@xdycheckbackslash{% \noexpand\@gls@xdycheckbackslash##3\noexpand\null}% \noexpand\fi \noexpand\else \noexpand\edef\noexpand\@gls@checkedmkidx{% \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@ \@backslashchar\@backslashchar}% \noexpand\ifx\noexpand\null##3\noexpand\null \noexpand\def\noexpand\@@gls@xdycheckbackslash{% \noexpand\@gls@xdycheckbackslash##2\@backslashchar \@backslashchar\noexpand\null}% \noexpand\else \noexpand\def\noexpand\@@gls@xdycheckbackslash{% \noexpand\@gls@xdycheckbackslash##2\@backslashchar ##3\noexpand\null}% \noexpand\fi \noexpand\fi \noexpand\@@gls@xdycheckbackslash }% } \def@gls@xdycheckbackslash \ifcsundef{hyperlink}% {% \gdef\@glslink#1#2{#2}% }% {% \gdef\@glslink#1#2{\hyperlink{#1}{#2}}% } \newlength\gls@tmplen \ifcsundef{hypertarget}% {% \gdef\@glstarget#1#2{#2}% }% {% \gdef\@glstarget#1#2{% \settoheight{\gls@tmplen}{#2}% \raisebox{\gls@tmplen}{\hypertarget{#1}{}}#2% }% } \newcommand{\glsdisablehyper}{% \renewcommand*\@glslink[2]{##2}% \renewcommand*\@glstarget[2]{##2}} \newcommand{\glsenablehyper}{% \renewcommand*\@glslink[2]{\hyperlink{##1}{##2}}% \renewcommand*\@glstarget[2]{% \settoheight{\gls@tmplen}{##2}% \raisebox{\gls@tmplen}{\hypertarget{##1}{}}##2}} \newrobustcmd*{\gls}{\@ifstar\@sgls\@gls} \newcommand*{\@sgls}[1][]{\@gls[hyper=false,#1]} \newcommand*{\@gls}[2][]{% \new@ifnextchar[{\@gls@{#1}{#2}}{\@gls@{#1}{#2}[]}} \def\@gls@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \def\@gls@link@opts{#1}% \def\@gls@link@label{#2}% \ifglsused{#2}% {% \def\@glo@text{% \csname gls@\@glo@type @display\endcsname {\glsentrytext{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}% }% {% \def\@glo@text{% \csname gls@\@glo@type @displayfirst\endcsname {\glsentryfirst{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}% }% \ifglsused{#2}{% \@gls@link[#1]{#2}{\@glo@text}% }{% \gls@checkisacronymlist\@glo@type \ifthenelse{\(\boolean{@glsisacronymlist}\AND \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}{% \@gls@link[#1,hyper=false]{#2}{\@glo@text}% }{% \@gls@link[#1]{#2}{\@glo@text}% }% }% \glsunset{#2}}% } \newrobustcmd*{\Gls}{\@ifstar\@sGls\@Gls} \newcommand*{\@sGls}[1][]{\@Gls[hyper=false,#1]} \newcommand*{\@Gls}[2][]{% \new@ifnextchar[{\@Gls@{#1}{#2}}{\@Gls@{#1}{#2}[]}} \def\@Gls@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \def\@gls@link@opts{#1}% \def\@gls@link@label{#2}% \def\glslabel{#2}% \ifglsused{#2}% {% \protected@edef\@glo@text{% \csname gls@\@glo@type @display\endcsname {\glsentrytext{#2}}{\glsentrydesc{#2}}% {\glsentrysymbol{#2}}{#3}}% }% {% \protected@edef\@glo@text{% \csname gls@\@glo@type @displayfirst\endcsname {\glsentryfirst{#2}}{\glsentrydesc{#2}}% {\glsentrysymbol{#2}}{#3}}% }% \ifglsused{#2}{% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}}% }{% \gls@checkisacronymlist\@glo@type \ifthenelse{\(\boolean{@glsisacronymlist}\AND \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}{% \@gls@link[#1,hyper=false]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}}% }{% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}}% }% }% \glsunset{#2}}% } \newrobustcmd*{\GLS}{\@ifstar\@sGLS\@GLS} \newcommand*{\@sGLS}[1][]{\@GLS[hyper=false,#1]} \newcommand*{\@GLS}[2][]{% \new@ifnextchar[{\@GLS@{#1}{#2}}{\@GLS@{#1}{#2}[]}} \def\@GLS@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \def\@gls@link@opts{#1}% \def\@gls@link@label{#2}% \ifglsused{#2}{\def\@glo@text{% \csname gls@\@glo@type @display\endcsname {\glsentrytext{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}}{% \def\@glo@text{% \csname gls@\@glo@type @displayfirst\endcsname {\glsentryfirst{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}}% \ifglsused{#2}{% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text}}% }{% \gls@checkisacronymlist\@glo@type \ifthenelse{\(\boolean{@glsisacronymlist}\AND \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}{% \@gls@link[#1,hyper=false]{#2}{\MakeUppercase{\@glo@text}}% }{% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text}}% }% }% \glsunset{#2}}% } \newrobustcmd*{\glspl}{\@ifstar\@sglspl\@glspl} \newcommand*{\@sglspl}[1][]{\@glspl[hyper=false,#1]} \newcommand*{\@glspl}[2][]{% \new@ifnextchar[{\@glspl@{#1}{#2}}{\@glspl@{#1}{#2}[]}} \def\@glspl@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \def\@gls@link@opts{#1}% \def\@gls@link@label{#2}% \ifglsused{#2}% {% \def\@glo@text{% \csname gls@\@glo@type @display\endcsname {\glsentryplural{#2}}{\glsentrydescplural{#2}}% {\glsentrysymbolplural{#2}}{#3}}% }% {% \def\@glo@text{% \csname gls@\@glo@type @displayfirst\endcsname {\glsentryfirstplural{#2}}{\glsentrydescplural{#2}}% {\glsentrysymbolplural{#2}}{#3}}% }% \ifglsused{#2}{% \@gls@link[#1]{#2}{\@glo@text}% }{% \gls@checkisacronymlist\@glo@type \ifthenelse{\(\boolean{@glsisacronymlist}\AND \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}{% \@gls@link[#1,hyper=false]{#2}{\@glo@text}% }{% \@gls@link[#1]{#2}{\@glo@text}% }% }% \glsunset{#2}}% } \newrobustcmd*{\Glspl}{\@ifstar\@sGlspl\@Glspl} \newcommand*{\@sGlspl}[1][]{\@Glspl[hyper=false,#1]} \newcommand*{\@Glspl}[2][]{% \new@ifnextchar[{\@Glspl@{#1}{#2}}{\@Glspl@{#1}{#2}[]}} \def\@Glspl@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \def\@gls@link@opts{#1}% \def\@gls@link@label{#2}% \def\glslabel{#2}% \ifglsused{#2}% {% \protected@edef\@glo@text{% \csname gls@\@glo@type @display\endcsname {\glsentryplural{#2}}{\glsentrydescplural{#2}}% {\glsentrysymbolplural{#2}}{#3}}% }% {% \protected@edef\@glo@text{% \csname gls@\@glo@type @displayfirst\endcsname {\glsentryfirstplural{#2}}{\glsentrydescplural{#2}}% {\glsentrysymbolplural{#2}}{#3}}% }% \ifglsused{#2}{% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}}% }{% \gls@checkisacronymlist\@glo@type \ifthenelse{\(\boolean{@glsisacronymlist}\AND \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}{% \@gls@link[#1,hyper=false]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}}% }{% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}}% }% }% \glsunset{#2}}% } \newrobustcmd*{\GLSpl}{\@ifstar\@sGLSpl\@GLSpl} \newcommand*{\@sGLSpl}[1][]{\@GLSpl[hyper=false,#1]} \newcommand*{\@GLSpl}[2][]{% \new@ifnextchar[{\@GLSpl@{#1}{#2}}{\@GLSpl@{#1}{#2}[]}} \def\@GLSpl@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \def\@gls@link@opts{#1}% \def\@gls@link@label{#2}% \ifglsused{#2}{\def\@glo@text{% \csname gls@\@glo@type @display\endcsname {\glsentryplural{#2}}{\glsentrydescplural{#2}}{% \glsentrysymbolplural{#2}}{#3}}}{% \def\@glo@text{% \csname gls@\@glo@type @displayfirst\endcsname {\glsentryfirstplural{#2}}{\glsentrydescplural{#2}}{% \glsentrysymbolplural{#2}}{#3}}}% \ifglsused{#2}{% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text}}% }{% \gls@checkisacronymlist\@glo@type \ifthenelse{\(\boolean{@glsisacronymlist}\AND \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}{% \@gls@link[#1,hyper=false]{#2}{\MakeUppercase{\@glo@text}}% }{% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text}}% }% }% \glsunset{#2}}% } \newrobustcmd*{\glsdisp}{\@ifstar\@sglsdisp\@glsdisp} \newcommand*{\@sglsdisp}[1][]{\@glsdisp[hyper=false,#1]} \newcommand*{\@glsdisp}[3][]{% \glsdoifexists{#2}{% \edef\@glo@type{\glsentrytype{#2}}% \def\@gls@link@opts{#1}% \def\@gls@link@label{#2}% \ifglsused{#2}% {% \def\@glo@text{% \csname gls@\@glo@type @display\endcsname {#3}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{}}% }% {% \def\@glo@text{% \csname gls@\@glo@type @displayfirst\endcsname {#3}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{}}% }% \ifglsused{#2}% {% \@gls@link[#1]{#2}{\@glo@text}% }% {% \gls@checkisacronymlist\@glo@type \ifthenelse{\(\boolean{@glsisacronymlist}\AND \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}% {% \@gls@link[#1,hyper=false]{#2}{\@glo@text}% }% {% \@gls@link[#1]{#2}{\@glo@text}% }% }% \glsunset{#2}% }% } \newrobustcmd*{\glstext}{\@ifstar\@sglstext\@glstext} \newcommand*{\@sglstext}[1][]{\@glstext[hyper=false,#1]} \newcommand*{\@glstext}[2][]{% \new@ifnextchar[{\@glstext@{#1}{#2}}{\@glstext@{#1}{#2}[]}} \def\@glstext@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrytext{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\GLStext}{\@ifstar\@sGLStext\@GLStext} \newcommand*{\@sGLStext}[1][]{\@GLStext[hyper=false,#1]} \newcommand*{\@GLStext}[2][]{% \new@ifnextchar[{\@GLStext@{#1}{#2}}{\@GLStext@{#1}{#2}[]}} \def\@GLStext@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrytext{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\Glstext}{\@ifstar\@sGlstext\@Glstext} \newcommand*{\@sGlstext}[1][]{\@Glstext[hyper=false,#1]} \newcommand*{\@Glstext}[2][]{% \new@ifnextchar[{\@Glstext@{#1}{#2}}{\@Glstext@{#1}{#2}[]}} \def\@Glstext@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrytext{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\glsfirst}{\@ifstar\@sglsfirst\@glsfirst} \newcommand*{\@sglsfirst}[1][]{\@glsfirst[hyper=false,#1]} \newcommand*{\@glsfirst}[2][]{% \new@ifnextchar[{\@glsfirst@{#1}{#2}}{\@glsfirst@{#1}{#2}[]}} \def\@glsfirst@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryfirst{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glsfirst}{\@ifstar\@sGlsfirst\@Glsfirst} \newcommand*{\@sGlsfirst}[1][]{\@Glsfirst[hyper=false,#1]} \newcommand*{\@Glsfirst}[2][]{% \new@ifnextchar[{\@Glsfirst@{#1}{#2}}{\@Glsfirst@{#1}{#2}[]}} \def\@Glsfirst@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryfirst{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSfirst}{\@ifstar\@sGLSfirst\@GLSfirst} \newcommand*{\@sGLSfirst}[1][]{\@GLSfirst[hyper=false,#1]} \newcommand*{\@GLSfirst}[2][]{% \new@ifnextchar[{\@GLSfirst@{#1}{#2}}{\@GLSfirst@{#1}{#2}[]}} \def\@GLSfirst@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryfirst{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glsplural}{\@ifstar\@sglsplural\@glsplural} \newcommand*{\@sglsplural}[1][]{\@glsplural[hyper=false,#1]} \newcommand*{\@glsplural}[2][]{% \new@ifnextchar[{\@glsplural@{#1}{#2}}{\@glsplural@{#1}{#2}[]}} \def\@glsplural@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryplural{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glsplural}{\@ifstar\@sGlsplural\@Glsplural} \newcommand*{\@sGlsplural}[1][]{\@Glsplural[hyper=false,#1]} \newcommand*{\@Glsplural}[2][]{% \new@ifnextchar[{\@Glsplural@{#1}{#2}}{\@Glsplural@{#1}{#2}[]}} \def\@Glsplural@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryplural{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSplural}{\@ifstar\@sGLSplural\@GLSplural} \newcommand*{\@sGLSplural}[1][]{\@GLSplural[hyper=false,#1]} \newcommand*{\@GLSplural}[2][]{% \new@ifnextchar[{\@GLSplural@{#1}{#2}}{\@GLSplural@{#1}{#2}[]}} \def\@GLSplural@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryplural{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glsfirstplural}{\@ifstar\@sglsfirstplural\@glsfirstplural} \newcommand*{\@sglsfirstplural}[1][]{\@glsfirstplural[hyper=false,#1]} \newcommand*{\@glsfirstplural}[2][]{% \new@ifnextchar[{\@glsfirstplural@{#1}{#2}}{\@glsfirstplural@{#1}{#2}[]}} \def\@glsfirstplural@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryfirstplural{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glsfirstplural}{\@ifstar\@sGlsfirstplural\@Glsfirstplural} \newcommand*{\@sGlsfirstplural}[1][]{\@Glsfirstplural[hyper=false,#1]} \newcommand*{\@Glsfirstplural}[2][]{% \new@ifnextchar[{\@Glsfirstplural@{#1}{#2}}{\@Glsfirstplural@{#1}{#2}[]}} \def\@Glsfirstplural@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryfirstplural{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSfirstplural}{\@ifstar\@sGLSfirstplural\@GLSfirstplural} \newcommand*{\@sGLSfirstplural}[1][]{\@GLSfirstplural[hyper=false,#1]} \newcommand*{\@GLSfirstplural}[2][]{% \new@ifnextchar[{\@GLSfirstplural@{#1}{#2}}{\@GLSfirstplural@{#1}{#2}[]}} \def\@GLSfirstplural@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryfirstplural{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glsname}{\@ifstar\@sglsname\@glsname} \newcommand*{\@sglsname}[1][]{\@glsname[hyper=false,#1]} \newcommand*{\@glsname}[2][]{% \new@ifnextchar[{\@glsname@{#1}{#2}}{\@glsname@{#1}{#2}[]}} \def\@glsname@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryname{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glsname}{\@ifstar\@sGlsname\@Glsname} \newcommand*{\@sGlsname}[1][]{\@Glsname[hyper=false,#1]} \newcommand*{\@Glsname}[2][]{% \new@ifnextchar[{\@Glsname@{#1}{#2}}{\@Glsname@{#1}{#2}[]}} \def\@Glsname@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryname{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSname}{\@ifstar\@sGLSname\@GLSname} \newcommand*{\@sGLSname}[1][]{\@GLSname[hyper=false,#1]} \newcommand*{\@GLSname}[2][]{% \new@ifnextchar[{\@GLSname@{#1}{#2}}{\@GLSname@{#1}{#2}[]}} \def\@GLSname@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryname{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glsdesc}{\@ifstar\@sglsdesc\@glsdesc} \newcommand*{\@sglsdesc}[1][]{\@glsdesc[hyper=false,#1]} \newcommand*{\@glsdesc}[2][]{% \new@ifnextchar[{\@glsdesc@{#1}{#2}}{\@glsdesc@{#1}{#2}[]}} \def\@glsdesc@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrydesc{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glsdesc}{\@ifstar\@sGlsdesc\@Glsdesc} \newcommand*{\@sGlsdesc}[1][]{\@Glsdesc[hyper=false,#1]} \newcommand*{\@Glsdesc}[2][]{% \new@ifnextchar[{\@Glsdesc@{#1}{#2}}{\@Glsdesc@{#1}{#2}[]}} \def\@Glsdesc@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrydesc{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSdesc}{\@ifstar\@sGLSdesc\@GLSdesc} \newcommand*{\@sGLSdesc}[1][]{\@GLSdesc[hyper=false,#1]} \newcommand*{\@GLSdesc}[2][]{% \new@ifnextchar[{\@GLSdesc@{#1}{#2}}{\@GLSdesc@{#1}{#2}[]}} \def\@GLSdesc@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrydesc{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glsdescplural}{\@ifstar\@sglsdescplural\@glsdescplural} \newcommand*{\@sglsdescplural}[1][]{\@glsdescplural[hyper=false,#1]} \newcommand*{\@glsdescplural}[2][]{% \new@ifnextchar[{\@glsdescplural@{#1}{#2}}{\@glsdescplural@{#1}{#2}[]}} \def\@glsdescplural@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrydescplural{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glsdescplural}{\@ifstar\@sGlsdescplural\@Glsdescplural} \newcommand*{\@sGlsdescplural}[1][]{\@Glsdescplural[hyper=false,#1]} \newcommand*{\@Glsdescplural}[2][]{% \new@ifnextchar[{\@Glsdescplural@{#1}{#2}}{\@Glsdescplural@{#1}{#2}[]}} \def\@Glsdescplural@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrydescplural{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSdescplural}{\@ifstar\@sGLSdescplural\@GLSdescplural} \newcommand*{\@sGLSdescplural}[1][]{\@GLSdescplural[hyper=false,#1]} \newcommand*{\@GLSdescplural}[2][]{% \new@ifnextchar[{\@GLSdescplural@{#1}{#2}}{\@GLSdescplural@{#1}{#2}[]}} \def\@GLSdescplural@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrydescplural{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glssymbol}{\@ifstar\@sglssymbol\@glssymbol} \newcommand*{\@sglssymbol}[1][]{\@glssymbol[hyper=false,#1]} \newcommand*{\@glssymbol}[2][]{% \new@ifnextchar[{\@glssymbol@{#1}{#2}}{\@glssymbol@{#1}{#2}[]}} \def\@glssymbol@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrysymbol{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glssymbol}{\@ifstar\@sGlssymbol\@Glssymbol} \newcommand*{\@sGlssymbol}[1][]{\@Glssymbol[hyper=false,#1]} \newcommand*{\@Glssymbol}[2][]{% \new@ifnextchar[{\@Glssymbol@{#1}{#2}}{\@Glssymbol@{#1}{#2}[]}} \def\@Glssymbol@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrysymbol{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSsymbol}{\@ifstar\@sGLSsymbol\@GLSsymbol} \newcommand*{\@sGLSsymbol}[1][]{\@GLSsymbol[hyper=false,#1]} \newcommand*{\@GLSsymbol}[2][]{% \new@ifnextchar[{\@GLSsymbol@{#1}{#2}}{\@GLSsymbol@{#1}{#2}[]}} \def\@GLSsymbol@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrysymbol{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glssymbolplural}{\@ifstar\@sglssymbolplural\@glssymbolplural} \newcommand*{\@sglssymbolplural}[1][]{\@glssymbolplural[hyper=false,#1]} \newcommand*{\@glssymbolplural}[2][]{% \new@ifnextchar[{\@glssymbolplural@{#1}{#2}}{\@glssymbolplural@{#1}{#2}[]}} \def\@glssymbolplural@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrysymbolplural{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glssymbolplural}{\@ifstar\@sGlssymbolplural\@Glssymbolplural} \newcommand*{\@sGlssymbolplural}[1][]{\@Glssymbolplural[hyper=false,#1]} \newcommand*{\@Glssymbolplural}[2][]{% \new@ifnextchar[{\@Glssymbolplural@{#1}{#2}}{\@Glssymbolplural@{#1}{#2}[]}} \def\@Glssymbolplural@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrysymbolplural{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSsymbolplural}{\@ifstar\@sGLSsymbolplural\@GLSsymbolplural} \newcommand*{\@sGLSsymbolplural}[1][]{\@GLSsymbolplural[hyper=false,#1]} \newcommand*{\@GLSsymbolplural}[2][]{% \new@ifnextchar[{\@GLSsymbolplural@{#1}{#2}}{\@GLSsymbolplural@{#1}{#2}[]}} \def\@GLSsymbolplural@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrysymbolplural{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glsuseri}{\@ifstar\@sglsuseri\@glsuseri} \newcommand*{\@sglsuseri}[1][]{\@glsuseri[hyper=false,#1]} \newcommand*{\@glsuseri}[2][]{% \new@ifnextchar[{\@glsuseri@{#1}{#2}}{\@glsuseri@{#1}{#2}[]}} \def\@glsuseri@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuseri{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glsuseri}{\@ifstar\@sGlsuseri\@Glsuseri} \newcommand*{\@sGlsuseri}[1][]{\@Glsuseri[hyper=false,#1]} \newcommand*{\@Glsuseri}[2][]{% \new@ifnextchar[{\@Glsuseri@{#1}{#2}}{\@Glsuseri@{#1}{#2}[]}} \def\@Glsuseri@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuseri{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSuseri}{\@ifstar\@sGLSuseri\@GLSuseri} \newcommand*{\@sGLSuseri}[1][]{\@GLSuseri[hyper=false,#1]} \newcommand*{\@GLSuseri}[2][]{% \new@ifnextchar[{\@GLSuseri@{#1}{#2}}{\@GLSuseri@{#1}{#2}[]}} \def\@GLSuseri@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuseri{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glsuserii}{\@ifstar\@sglsuserii\@glsuserii} \newcommand*{\@sglsuserii}[1][]{\@glsuserii[hyper=false,#1]} \newcommand*{\@glsuserii}[2][]{% \new@ifnextchar[{\@glsuserii@{#1}{#2}}{\@glsuserii@{#1}{#2}[]}} \def\@glsuserii@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuserii{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glsuserii}{\@ifstar\@sGlsuserii\@Glsuserii} \newcommand*{\@sGlsuserii}[1][]{\@Glsuserii[hyper=false,#1]} \newcommand*{\@Glsuserii}[2][]{% \new@ifnextchar[{\@Glsuserii@{#1}{#2}}{\@Glsuserii@{#1}{#2}[]}} \def\@Glsuserii@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuserii{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSuserii}{\@ifstar\@sGLSuserii\@GLSuserii} \newcommand*{\@sGLSuserii}[1][]{\@GLSuserii[hyper=false,#1]} \newcommand*{\@GLSuserii}[2][]{% \new@ifnextchar[{\@GLSuserii@{#1}{#2}}{\@GLSuserii@{#1}{#2}[]}} \def\@GLSuserii@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuserii{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glsuseriii}{\@ifstar\@sglsuseriii\@glsuseriii} \newcommand*{\@sglsuseriii}[1][]{\@glsuseriii[hyper=false,#1]} \newcommand*{\@glsuseriii}[2][]{% \new@ifnextchar[{\@glsuseriii@{#1}{#2}}{\@glsuseriii@{#1}{#2}[]}} \def\@glsuseriii@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuseriii{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glsuseriii}{\@ifstar\@sGlsuseriii\@Glsuseriii} \newcommand*{\@sGlsuseriii}[1][]{\@Glsuseriii[hyper=false,#1]} \newcommand*{\@Glsuseriii}[2][]{% \new@ifnextchar[{\@Glsuseriii@{#1}{#2}}{\@Glsuseriii@{#1}{#2}[]}} \def\@Glsuseriii@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuseriii{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSuseriii}{\@ifstar\@sGLSuseriii\@GLSuseriii} \newcommand*{\@sGLSuseriii}[1][]{\@GLSuseriii[hyper=false,#1]} \newcommand*{\@GLSuseriii}[2][]{% \new@ifnextchar[{\@GLSuseriii@{#1}{#2}}{\@GLSuseriii@{#1}{#2}[]}} \def\@GLSuseriii@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuseriii{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glsuseriv}{\@ifstar\@sglsuseriv\@glsuseriv} \newcommand*{\@sglsuseriv}[1][]{\@glsuseriv[hyper=false,#1]} \newcommand*{\@glsuseriv}[2][]{% \new@ifnextchar[{\@glsuseriv@{#1}{#2}}{\@glsuseriv@{#1}{#2}[]}} \def\@glsuseriv@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuseriv{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glsuseriv}{\@ifstar\@sGlsuseriv\@Glsuseriv} \newcommand*{\@sGlsuseriv}[1][]{\@Glsuseriv[hyper=false,#1]} \newcommand*{\@Glsuseriv}[2][]{% \new@ifnextchar[{\@Glsuseriv@{#1}{#2}}{\@Glsuseriv@{#1}{#2}[]}} \def\@Glsuseriv@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuseriv{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSuseriv}{\@ifstar\@sGLSuseriv\@GLSuseriv} \newcommand*{\@sGLSuseriv}[1][]{\@GLSuseriv[hyper=false,#1]} \newcommand*{\@GLSuseriv}[2][]{% \new@ifnextchar[{\@GLSuseriv@{#1}{#2}}{\@GLSuseriv@{#1}{#2}[]}} \def\@GLSuseriv@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuseriv{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glsuserv}{\@ifstar\@sglsuserv\@glsuserv} \newcommand*{\@sglsuserv}[1][]{\@glsuserv[hyper=false,#1]} \newcommand*{\@glsuserv}[2][]{% \new@ifnextchar[{\@glsuserv@{#1}{#2}}{\@glsuserv@{#1}{#2}[]}} \def\@glsuserv@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuserv{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glsuserv}{\@ifstar\@sGlsuserv\@Glsuserv} \newcommand*{\@sGlsuserv}[1][]{\@Glsuserv[hyper=false,#1]} \newcommand*{\@Glsuserv}[2][]{% \new@ifnextchar[{\@Glsuserv@{#1}{#2}}{\@Glsuserv@{#1}{#2}[]}} \def\@Glsuserv@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuserv{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSuserv}{\@ifstar\@sGLSuserv\@GLSuserv} \newcommand*{\@sGLSuserv}[1][]{\@GLSuserv[hyper=false,#1]} \newcommand*{\@GLSuserv}[2][]{% \new@ifnextchar[{\@GLSuserv@{#1}{#2}}{\@GLSuserv@{#1}{#2}[]}} \def\@GLSuserv@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuserv{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\glsuservi}{\@ifstar\@sglsuservi\@glsuservi} \newcommand*{\@sglsuservi}[1][]{\@glsuservi[hyper=false,#1]} \newcommand*{\@glsuservi}[2][]{% \new@ifnextchar[{\@glsuservi@{#1}{#2}}{\@glsuservi@{#1}{#2}[]}} \def\@glsuservi@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuservi{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Glsuservi}{\@ifstar\@sGlsuservi\@Glsuservi} \newcommand*{\@sGlsuservi}[1][]{\@Glsuservi[hyper=false,#1]} \newcommand*{\@Glsuservi}[2][]{% \new@ifnextchar[{\@Glsuservi@{#1}{#2}}{\@Glsuservi@{#1}{#2}[]}} \def\@Glsuservi@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuservi{#2}}% \@gls@link[#1]{#2}{% \expandafter\makefirstuc\expandafter{\@glo@text}#3}% }% } \newrobustcmd*{\GLSuservi}{\@ifstar\@sGLSuservi\@GLSuservi} \newcommand*{\@sGLSuservi}[1][]{\@GLSuservi[hyper=false,#1]} \newcommand*{\@GLSuservi}[2][]{% \new@ifnextchar[{\@GLSuservi@{#1}{#2}}{\@GLSuservi@{#1}{#2}[]}} \def\@GLSuservi@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryuservi{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\acrshort}{\@ifstar\s@acrshort\ns@acrshort} \newcommand*{\s@acrshort}[2][]{% \new@ifnextchar[{\@acrshort{hyper=false,#1}{#2}}% {\@acrshort{hyper=false,#1}{#2}[]}% } \newcommand*{\ns@acrshort}[2][]{% \new@ifnextchar[{\@acrshort{#1}{#2}}{\@acrshort{#1}{#2}[]}% } \def\@acrshort#1#2[#3]{% \glsdoifexists{#2}% {% \edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryshort{#2}}% \@gls@link[#1]{#2}{\acronymfont{\@glo@text}#3}% }% } \newrobustcmd*{\Acrshort}{\@ifstar\s@Acrshort\ns@Acrshort} \newcommand*{\s@Acrshort}[2][]{% \new@ifnextchar[{\@Acrshort{hyper=false,#1}{#2}}% {\@Acrshort{hyper=false,#1}{#2}[]}% } \newcommand*{\ns@Acrshort}[2][]{% \new@ifnextchar[{\@Acrshort{#1}{#2}}{\@Acrshort{#1}{#2}[]}% } \def\@Acrshort#1#2[#3]{% \glsdoifexists{#2}% {% \edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryshort{#2}}% \@gls@link[#1]{#2}% {% \acronymfont{\expandafter\makefirstuc\expandafter{\@glo@text}}#3% }% }% } \newrobustcmd*{\ACRshort}{\@ifstar\s@ACRshort\ns@ACRshort} \newcommand*{\s@ACRshort}[2][]{% \new@ifnextchar[{\@ACRshort{hyper=false,#1}{#2}}% {\@ACRshort{hyper=false,#1}{#2}[]}% } \newcommand*{\ns@ACRshort}[2][]{% \new@ifnextchar[{\@ACRshort{#1}{#2}}{\@ACRshort{#1}{#2}[]}% } \def\@ACRshort#1#2[#3]{% \glsdoifexists{#2}% {% \edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryshort{#2}}% \@gls@link[#1]{#2}{\acronymfont{\MakeUppercase{\@glo@text#3}}}% }% } \newrobustcmd*{\acrshortpl}{\@ifstar\s@acrshortpl\ns@acrshortpl} \newcommand*{\s@acrshortpl}[2][]{% \new@ifnextchar[{\@acrshortpl{hyper=false,#1}{#2}}% {\@acrshortpl{hyper=false,#1}{#2}[]}% } \newcommand*{\ns@acrshortpl}[2][]{% \new@ifnextchar[{\@acrshortpl{#1}{#2}}{\@acrshortpl{#1}{#2}[]}% } \def\@acrshortpl#1#2[#3]{% \glsdoifexists{#2}% {% \edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryshortpl{#2}}% \@gls@link[#1]{#2}{\acronymfont{\@glo@text}#3}% }% } \newrobustcmd*{\Acrshortpl}{\@ifstar\s@Acrshortpl\ns@Acrshortpl} \newcommand*{\s@Acrshortpl}[2][]{% \new@ifnextchar[{\@Acrshortpl{hyper=false,#1}{#2}}% {\@Acrshortpl{hyper=false,#1}{#2}[]}% } \newcommand*{\ns@Acrshortpl}[2][]{% \new@ifnextchar[{\@Acrshortpl{#1}{#2}}{\@Acrshortpl{#1}{#2}[]}% } \def\@Acrshortpl#1#2[#3]{% \glsdoifexists{#2}% {% \edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryshortpl{#2}}% \@gls@link[#1]{#2}% {% \acronymfont{\expandafter\makefirstuc\expandafter{\@glo@text}}#3% }% }% } \newrobustcmd*{\ACRshortpl}{\@ifstar\s@ACRshortpl\ns@ACRshortpl} \newcommand*{\s@ACRshortpl}[2][]{% \new@ifnextchar[{\@ACRshortpl{hyper=false,#1}{#2}}% {\@ACRshortpl{hyper=false,#1}{#2}[]}% } \newcommand*{\ns@ACRshortpl}[2][]{% \new@ifnextchar[{\@ACRshortpl{#1}{#2}}{\@ACRshortpl{#1}{#2}[]}% } \def\@ACRshortpl#1#2[#3]{% \glsdoifexists{#2}% {% \edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentryshortpl{#2}}% \@gls@link[#1]{#2}{\acronymfont{\MakeUppercase{\@glo@text#3}}}% }% } \newrobustcmd*{\acrlong}{\@ifstar\s@acrlong\ns@acrlong} \newcommand*{\s@acrlong}[2][]{% \new@ifnextchar[{\@acrlong{hyper=false,#1}{#2}}% {\@acrlong{hyper=false,#1}{#2}[]}% } \newcommand*{\ns@acrlong}[2][]{% \new@ifnextchar[{\@acrlong{#1}{#2}}{\@acrlong{#1}{#2}[]}% } \def\@acrlong#1#2[#3]{% \glsdoifexists{#2}% {% \edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrylong{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Acrlong}{\@ifstar\s@Acrlong\ns@Acrlong} \newcommand*{\s@Acrlong}[2][]{% \new@ifnextchar[{\@Acrlong{hyper=false,#1}{#2}}% {\@Acrlong{hyper=false,#1}{#2}[]}% } \newcommand*{\ns@Acrlong}[2][]{% \new@ifnextchar[{\@Acrlong{#1}{#2}}{\@Acrlong{#1}{#2}[]}% } \def\@Acrlong#1#2[#3]{% \glsdoifexists{#2}% {% \edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrylong{#2}}% \@gls@link[#1]{#2}% {% \expandafter\makefirstuc\expandafter{\@glo@text}#3% }% }% } \newrobustcmd*{\ACRlong}{\@ifstar\s@ACRlong\ns@ACRlong} \newcommand*{\s@ACRlong}[2][]{% \new@ifnextchar[{\@ACRlong{hyper=false,#1}{#2}}% {\@ACRlong{hyper=false,#1}{#2}[]}% } \newcommand*{\ns@ACRlong}[2][]{% \new@ifnextchar[{\@ACRlong{#1}{#2}}{\@ACRlong{#1}{#2}[]}% } \def\@ACRlong#1#2[#3]{% \glsdoifexists{#2}% {% \edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrylong{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newrobustcmd*{\acrlongpl}{\@ifstar\s@acrlongpl\ns@acrlongpl} \newcommand*{\s@acrlongpl}[2][]{% \new@ifnextchar[{\@acrlongpl{hyper=false,#1}{#2}}% {\@acrlongpl{hyper=false,#1}{#2}[]}% } \newcommand*{\ns@acrlongpl}[2][]{% \new@ifnextchar[{\@acrlongpl{#1}{#2}}{\@acrlongpl{#1}{#2}[]}% } \def\@acrlongpl#1#2[#3]{% \glsdoifexists{#2}% {% \edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrylongpl{#2}}% \@gls@link[#1]{#2}{\@glo@text#3}% }% } \newrobustcmd*{\Acrlongpl}{\@ifstar\s@Acrlongpl\ns@Acrlongpl} \newcommand*{\s@Acrlongpl}[2][]{% \new@ifnextchar[{\@Acrlongpl{hyper=false#1}{#2}}% {\@Acrlongpl{hyper=false,#1}{#2}[]}% } \newcommand*{\ns@Acrlongpl}[2][]{% \new@ifnextchar[{\@Acrlongpl{#1}{#2}}{\@Acrlongpl{#1}{#2}[]}% } \def\@Acrlongpl#1#2[#3]{% \glsdoifexists{#2}% {% \edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrylongpl{#2}}% \@gls@link[#1]{#2}% {% \expandafter\makefirstuc\expandafter{\@glo@text}#3% }% }% } \newrobustcmd*{\ACRlongpl}{\@ifstar\s@ACRlongpl\ns@ACRlongpl} \newcommand*{\s@ACRlongpl}[2][]{% \new@ifnextchar[{\@ACRlongpl{hyper=false,#1}{#2}}% {\@ACRlongpl{hyper=false,#1}{#2}[]}% } \newcommand*{\ns@ACRlongpl}[2][]{% \new@ifnextchar[{\@ACRlongpl{#1}{#2}}{\@ACRlongpl{#1}{#2}[]}% } \def\@ACRlongpl#1#2[#3]{% \glsdoifexists{#2}% {% \edef\@glo@type{\glsentrytype{#2}}% \protected@edef\@glo@text{\glsentrylongpl{#2}}% \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}% }% } \newcommand*{\glsentryname}[1]{\csname glo@#1@name\endcsname} \newcommand*{\Glsentryname}[1]{% \protected@edef\@glo@text{\csname glo@#1@name\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentrydesc}[1]{\csname glo@#1@desc\endcsname} \newcommand*{\Glsentrydesc}[1]{% \protected@edef\@glo@text{\csname glo@#1@desc\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentrydescplural}[1]{% \csname glo@#1@descplural\endcsname} \newcommand*{\Glsentrydescplural}[1]{% \protected@edef\@glo@text{\csname glo@#1@descplural\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentrytext}[1]{\csname glo@#1@text\endcsname} \newcommand*{\Glsentrytext}[1]{% \protected@edef\@glo@text{\csname glo@#1@text\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentryplural}[1]{\csname glo@#1@plural\endcsname} \newcommand*{\Glsentryplural}[1]{% \protected@edef\@glo@text{\csname glo@#1@plural\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentrysymbol}[1]{\csname glo@#1@symbol\endcsname} \newcommand*{\Glsentrysymbol}[1]{% \protected@edef\@glo@text{\csname glo@#1@symbol\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentrysymbolplural}[1]{% \csname glo@#1@symbolplural\endcsname} \newcommand*{\Glsentrysymbolplural}[1]{% \protected@edef\@glo@text{\csname glo@#1@symbolplural\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentryfirst}[1]{\csname glo@#1@first\endcsname} \newcommand*{\Glsentryfirst}[1]{% \protected@edef\@glo@text{\csname glo@#1@first\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentryfirstplural}[1]{% \csname glo@#1@firstpl\endcsname} \newcommand*{\Glsentryfirstplural}[1]{% \protected@edef\@glo@text{\csname glo@#1@firstpl\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentrytype}[1]{\csname glo@#1@type\endcsname} \newcommand*{\glsentrysort}[1]{\csname glo@#1@sort\endcsname} \newcommand*{\glsentryuseri}[1]{\csname glo@#1@useri\endcsname} \newcommand*{\Glsentryuseri}[1]{% \protected@edef\@glo@text{\csname glo@#1@useri\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentryuserii}[1]{\csname glo@#1@userii\endcsname} \newcommand*{\Glsentryuserii}[1]{% \protected@edef\@glo@text{\csname glo@#1@userii\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentryuseriii}[1]{\csname glo@#1@useriii\endcsname} \newcommand*{\Glsentryuseriii}[1]{% \protected@edef\@glo@text{\csname glo@#1@useriii\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentryuseriv}[1]{\csname glo@#1@useriv\endcsname} \newcommand*{\Glsentryuseriv}[1]{% \protected@edef\@glo@text{\csname glo@#1@useriv\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentryuserv}[1]{\csname glo@#1@userv\endcsname} \newcommand*{\Glsentryuserv}[1]{% \protected@edef\@glo@text{\csname glo@#1@userv\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentryuservi}[1]{\csname glo@#1@uservi\endcsname} \newcommand*{\Glsentryuservi}[1]{% \protected@edef\@glo@text{\csname glo@#1@uservi\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentryshort}[1]{\csname glo@#1@short\endcsname} \newcommand*{\Glsentryshort}[1]{% \protected@edef\@glo@text{\csname glo@#1@short\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentryshortpl}[1]{\csname glo@#1@shortpl\endcsname} \newcommand*{\Glsentryshortpl}[1]{% \protected@edef\@glo@text{\csname glo@#1@shortpl\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentrylong}[1]{\csname glo@#1@long\endcsname} \newcommand*{\Glsentrylong}[1]{% \protected@edef\@glo@text{\csname glo@#1@long\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentrylongpl}[1]{\csname glo@#1@longpl\endcsname} \newcommand*{\Glsentrylongpl}[1]{% \protected@edef\@glo@text{\csname glo@#1@longpl\endcsname}% \expandafter\makefirstuc\expandafter{\@glo@text}} \newcommand*{\glsentryfull}[1]{% \glsentrylong{#1}\space(\glsentryshort{#1})% } \newcommand*{\Glsentryfull}[1]{% \Glsentrylong{#1}\space(\glsentryshortpl{#1})% } \newcommand*{\glsentryfullpl}[1]{% \glsentrylongpl{#1}\space(\glsentryshort{#1})% } \newcommand*{\Glsentryfullpl}[1]{% \Glsentrylongpl{#1}\space(\glsentryshortpl{#1})% } \newcommand*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{% \def\@glo@label{#2}% \@glslink{glo:#2}{#1}} \define@key{glossadd}{counter}{\def\@gls@counter{#1}} \define@key{glossadd}{format}{\def\@glsnumberformat{#1}} \define@key{glossadd}{types}{\def\@glo@type{#1}} \newrobustcmd*{\glsadd}[2][]{% \glsdoifexists{#2}% {% \def\@glsnumberformat{glsnumberformat}% \edef\@gls@counter{\csname glo@#2@counter\endcsname}% \setkeys{glossadd}{#1}% \@gls@saveentrycounter \@do@wrglossary{#2}% }% } \newrobustcmd*{\glsaddall}[1][]{% \edef\@glo@type{\@glo@types}% \setkeys{glossadd}{#1}% \forallglsentries[\@glo@type]{\@glo@entry}{% \glsadd[#1]{\@glo@entry}}% } \edef\glsopenbrace{\expandafter\@gobble\string\{} \edef\glsclosebrace{\expandafter\@gobble\string\}} \edef\glsquote#1{\string"#1\string"} \ifglsxindy \newcommand*{\@glsfirstletter}{A} \fi \ifglsxindy \newcommand*{\GlsSetXdyFirstLetterAfterDigits}[1]{% \renewcommand*{\@glsfirstletter}{#1}} \else \newcommand*{\GlsSetXdyFirstLetterAfterDigits}[1]{% \glsnoxindywarning\GlsSetXdyFirstLetterAfterDigits} \fi \newcommand*{\@glsminrange}{2} \ifglsxindy \newcommand*{\GlsSetXdyMinRangeLength}[1]{% \renewcommand*{\@glsminrange}{#1}} \else \newcommand*{\GlsSetXdyMinRangeLength}[1]{% \glsnoxindywarning\GlsSetXdyMinRangeLength} \fi \ifglsxindy \def\writeist{% \@gls@addpredefinedattributes \openout\glswrite=\istfilename \write\glswrite{;; xindy style file created by the glossaries package}% \write\glswrite{;; for document '\jobname' on \the\year-\the\month-\the\day}% \write\glswrite{^^J; required styles^^J} \@for\@xdystyle:=\@xdyrequiredstyles\do{% \ifx\@xdystyle\@empty \else \protected@write\glswrite{}{(require \string"\@xdystyle.xdy\string")}% \fi }% \write\glswrite{^^J% ; list of allowed attributes (number formats)^^J}% \write\glswrite{(define-attributes ((\@xdyattributes)))}% \write\glswrite{^^J; user defined alphabets^^J}% \write\glswrite{\@xdyuseralphabets}% \write\glswrite{^^J; location class definitions^^J}% \@for\@gls@classI:=\@gls@xdy@locationlist\do{% \protected@write\glswrite{}{(define-location-class \string"\@gls@classI\string"^^J\space\space\space ( :sep "{}{" \csname @gls@xdy@Lclass@\@gls@classI\endcsname\space :sep "}" ) ^^J\space\space\space :min-range-length \@glsminrange^^J% ) }% {% \@for\@gls@classII:=\@gls@xdy@locationlist\do{% \protected@write\glswrite{}{(define-location-class \string"\@gls@classII-\@gls@classI\string" ^^J\space\space\space ( :sep "{" \csname @gls@xdy@Lclass@\@gls@classII\endcsname\space :sep "}{" \csname @gls@xdy@Lclass@\@gls@classI\endcsname\space :sep "}" ) ^^J\space\space\space :min-range-length \@glsminrange^^J% ) }% }% }% }% \write\glswrite{^^J; user defined location classes}% \write\glswrite{\@xdyuserlocationdefs}% \write\glswrite{^^J; define cross-reference class^^J}% \write\glswrite{(define-crossref-class \string"see\string" :unverified )}% \write\glswrite{(markup-crossref-list :class \string"see\string"^^J\space\space\space :open \string"\string\glsseeformat\string" :close \string"{}\string")}% \write\glswrite{^^J; define the order of the location classes}% \write\glswrite{(define-location-class-order (\@xdylocationclassorder))}% \write\glswrite{^^J; define the glossary markup^^J}% \write\glswrite{(markup-index^^J\space\space\space :open \string"\string \glossarysection[\string\glossarytoctitle]{\string \glossarytitle}\string\glossarypreamble}% \@for\@this@ctr:=\@xdycounters\do{% {% \@for\@this@attr:=\@xdyattributelist\do{% \protected@write\glswrite{}{\string\providecommand*% \expandafter\string \csname glsX\@this@ctr X\@this@attr\endcsname[2]% {% \string\setentrycounter [\expandafter\@gobble\string\#1]{\@this@ctr}% \expandafter\string \csname\@this@attr\endcsname {\expandafter\@gobble\string\#2}% }% }% }% }% }% \write\glswrite{% \string\begin {theglossary}\string\glossaryheader\string~n\string" ^^J\space \space\space:close \string"\expandafter\@gobble \string\%\string~n\string \end{theglossary}\string\glossarypostamble \string~n\string" ^^J\space\space\space :tree)}% \write\glswrite{(markup-letter-group-list :sep \string"\string\glsgroupskip\string~n\string")}% \write\glswrite{(markup-indexentry :open \string"\string\relax \string\glsresetentrylist \string~n\string")}% \write\glswrite{(markup-locclass-list :open \string"\glsopenbrace\string\glossaryentrynumbers \glsopenbrace\string\relax\space \string"^^J\space\space\space :sep \string", \string" :close \string"\glsclosebrace\glsclosebrace\string")}% \write\glswrite{(markup-locref-list :sep \string"\string\delimN\space\string")}% \write\glswrite{(markup-range :sep \string"\string\delimR\space\string")}% \@onelevel@sanitize\gls@suffixF \@onelevel@sanitize\gls@suffixFF \ifx\gls@suffixF\@empty \else \write\glswrite{(markup-range :close "\gls@suffixF" :length 1 :ignore-end)}% \fi \ifx\gls@suffixFF\@empty \else \write\glswrite{(markup-range :close "\gls@suffixFF" :length 2 :ignore-end)}% \fi \write\glswrite{^^J; define format to use for locations^^J}% \write\glswrite{\@xdylocref}% \write\glswrite{^^J; define letter group list format^^J}% \write\glswrite{(markup-letter-group-list :sep \string"\string\glsgroupskip\string~n\string")}% \write\glswrite{^^J; letter group headings^^J}% \write\glswrite{(markup-letter-group :open-head \string"\string\glsgroupheading \glsopenbrace\string"^^J\space\space\space :close-head \string"\glsclosebrace\string")}% \write\glswrite{^^J; additional letter groups^^J}% \write\glswrite{\@xdylettergroups}% \write\glswrite{^^J; additional sort rules^^J} \write\glswrite{\@xdysortrules}% \closeout\glswrite \let\writeist\relax } \else \edef\@gls@actualchar{\string?} \edef\@gls@encapchar{\string|} \edef\@gls@levelchar{\string!} \edef\@gls@quotechar{\string"} \def\writeist{\relax \openout\glswrite=\istfilename \write\glswrite{\expandafter\@gobble\string\% makeindex style file created by the glossaries package} \write\glswrite{\expandafter\@gobble\string\% for document '\jobname' on \the\year-\the\month-\the\day} \write\glswrite{actual '\@gls@actualchar'} \write\glswrite{encap '\@gls@encapchar'} \write\glswrite{level '\@gls@levelchar'} \write\glswrite{quote '\@gls@quotechar'} \write\glswrite{keyword \string"\string\\glossaryentry\string"} \write\glswrite{preamble \string"\string\\glossarysection[\string \\glossarytoctitle]{\string\\glossarytitle}\string \\glossarypreamble\string\n\string\\begin{theglossary}\string \\glossaryheader\string\n\string"} \write\glswrite{postamble \string"\string\%\string\n\string \\end{theglossary}\string\\glossarypostamble\string\n \string"} \write\glswrite{group_skip \string"\string\\glsgroupskip\string\n \string"} \write\glswrite{item_0 \string"\string\%\string\n\string"} \write\glswrite{item_1 \string"\string\%\string\n\string"} \write\glswrite{item_2 \string"\string\%\string\n\string"} \write\glswrite{item_01 \string"\string\%\string\n\string"} \write\glswrite{item_x1 \string"\string\\relax \string\\glsresetentrylist\string\n \string"} \write\glswrite{item_12 \string"\string\%\string\n\string"} \write\glswrite{item_x2 \string"\string\\relax \string\\glsresetentrylist\string\n \string"} \write\glswrite{delim_0 \string"\string\{\string \\glossaryentrynumbers\string\{\string\\relax \string"} \write\glswrite{delim_1 \string"\string\{\string \\glossaryentrynumbers\string\{\string\\relax \string"} \write\glswrite{delim_2 \string"\string\{\string \\glossaryentrynumbers\string\{\string\\relax \string"} \write\glswrite{delim_t \string"\string\}\string\}\string"} \write\glswrite{delim_n \string"\string\\delimN \string"} \write\glswrite{delim_r \string"\string\\delimR \string"} \write\glswrite{headings_flag 1} \write\glswrite{heading_prefix \string"\string\\glsgroupheading\string\{\string"} \write\glswrite{heading_suffix \string"\string\}\string\\relax \string\\glsresetentrylist \string"} \write\glswrite{symhead_positive \string"glssymbols\string"} \write\glswrite{numhead_positive \string"glsnumbers\string"} \write\glswrite{page_compositor \string"\glscompositor\string"} \@gls@escbsdq\gls@suffixF \@gls@escbsdq\gls@suffixFF \ifx\gls@suffixF\@empty \else \write\glswrite{suffix_2p \string"\gls@suffixF\string"} \fi \ifx\gls@suffixFF\@empty \else \write\glswrite{suffix_3p \string"\gls@suffixFF\string"} \fi \closeout\glswrite \let\writeist\relax } \fi \newcommand{\noist}{% \@gls@addpredefinedattributes \let\writeist\relax } \newcommand*{\@makeglossary}[1]{% \ifglossaryexists{#1}% {% \ifglssavewrites \expandafter\newtoks\csname glo@#1@filetok\endcsname \else \expandafter\newwrite\csname glo@#1@file\endcsname \expandafter\@glsopenfile\csname glo@#1@file\endcsname{#1}% \fi \@gls@renewglossary \writeist }% {% \PackageError{glossaries}% {Glossary type `#1' not defined}% {New glossaries must be defined before using \string\makeglossary}% }% } \newcommand*{\@glsopenfile}[2]{% \immediate\openout#1=\jobname.\csname @glotype@#2@out\endcsname \PackageInfo{glossaries}{Writing glossary file \jobname.\csname @glotype@#2@out\endcsname}% } \newcommand*{\warn@nomakeglossaries}{% \GlossariesWarningNoLine{\string\makeglossaries\space hasn't been used,^^Jthe glossaries will not be updated}% } \newcommand*{\makeglossaries}{% \protected@write\@auxout{}{\string\@istfilename{\istfilename}}% \protected@write\@auxout{}{\string\@glsorder{\glsorder}} \@for\@glo@type:=\@glo@types\do{% \ifthenelse{\equal{\@glo@type}{}}{}{% \@makeglossary{\@glo@type}}% }% \renewcommand*\newglossary[4][]{% \PackageError{glossaries}{New glossaries must be created before \string\makeglossaries}{You need to move \string\makeglossaries\space after all your \string\newglossary\space commands}}% \let\@makeglossary\relax \let\makeglossary\relax \let\makeglossaries\relax \@disable@onlypremakeg \let\warn@nomakeglossaries\relax } \let\makeglossary\makeglossaries \AtEndDocument{% \warn@nomakeglossaries \warn@noprintglossary } \newwrite\glswrite \def\istfile{\glswrite} \AtEndDocument{% \glswritefiles } \ifglssavewrites \newcommand*{\glswritefiles}{% \forallglossaries{\@glo@type}{% \edef\gls@tmp{\expandafter\the\csname glo@\@glo@type @filetok\endcsname}% \ifx\gls@tmp\@empty \ifx\@glo@type\glsdefaulttype \GlossariesWarningNoLine{Glossary `\@glo@type' has no entries.^^JRemember to use package option `nomain' if you don't want to^^Juse the main glossary}% \else \GlossariesWarningNoLine{Glossary `\@glo@type' has no entries}% \fi \else \@glsopenfile{\glswrite}{\@glo@type}% \immediate\write\glswrite{% \expandafter\the\csname glo@\@glo@type @filetok\endcsname}% \immediate\closeout\glswrite \fi }% } \else \let\glswritefiles\relax \fi \renewcommand*{\glossary}[1][\glsdefaulttype]{% \@glossary[#1]} \def\@glossary[#1]{\index} \newcommand{\@gls@renewglossary}{% \gdef\@glossary[##1]{\@bsphack\begingroup\@wrglossary{##1}}% \let\@gls@renewglossary\@empty } \renewcommand*{\@wrglossary}[2]{% \ifglssavewrites \protected@edef\@gls@tmp{\the\csname glo@#1@filetok\endcsname#2}% \expandafter\global\expandafter\csname glo@#1@filetok\endcsname \expandafter{\@gls@tmp^^J}% \else \expandafter\protected@write\csname glo@#1@file\endcsname{}{#2}% \fi \endgroup\@esphack } \newcommand{\@do@wrglossary}[1]{% \protected@edef\@glslocref{\theglsentrycounter}% \@gls@checkmkidxchars\@glslocref \expandafter\ifx\theHglsentrycounter\theglsentrycounter \def\@glo@counterprefix{}% \else \protected@edef\@glsHlocref{\theHglsentrycounter}% \@gls@checkmkidxchars\@glsHlocref \edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix {\@glslocref}{\@glsHlocref}% }% \@do@gls@getcounterprefix \fi \ifglsxindy \expandafter\@glo@check@mkidxrangechar\@glsnumberformat\@nil \def\@glo@range{}% \expandafter\if\@glo@prefix(\relax \def\@glo@range{:open-range}% \else \expandafter\if\@glo@prefix)\relax \def\@glo@range{:close-range}% \fi \fi \glossary[\csname glo@#1@type\endcsname]{% (indexentry :tkey (\csname glo@#1@index\endcsname) :locref \string"{\@glo@counterprefix}{\@glslocref}\string" % :attr \string"\@gls@counter\@glo@suffix\string" \@glo@range ) }% \else \@set@glo@numformat{\@glo@numfmt}{\@gls@counter}{\@glsnumberformat}% {\@glo@counterprefix}% \glossary[\csname glo@#1@type\endcsname]{% \string\glossaryentry{\csname glo@#1@index\endcsname \@gls@encapchar\@glo@numfmt}{\theglsentrycounter}}% \fi } \newcommand*\@gls@getcounterprefix[2]{% \edef\@gls@thisloc{#1}\edef\@gls@thisHloc{#2}% \ifx\@gls@thisloc\@gls@thisHloc \def\@glo@counterprefix{}% \else \def\@gls@get@counterprefix##1.#1##2\end@getprefix{% \def\@glo@tmp{##2}% \ifx\@glo@tmp\@empty \def\@glo@counterprefix{}% \else \def\@glo@counterprefix{##1}% \fi }% \@gls@get@counterprefix#2.#1\end@getprefix \fi } \newcommand{\@do@seeglossary}[2]{% \def\@gls@xref{#2}% \@onelevel@sanitize\@gls@xref \@gls@checkmkidxchars\@gls@xref \ifglsxindy \glossary[\csname glo@#1@type\endcsname]{% (indexentry :tkey (\csname glo@#1@index\endcsname) :xref (\string"\@gls@xref\string") :attr \string"see\string" ) }% \else \glossary[\csname glo@#1@type\endcsname]{% \string\glossaryentry{\csname glo@#1@index\endcsname \@gls@encapchar glsseeformat\@gls@xref}{Z}}% \fi } \def\@gls@fixbraces#1#2#3\@nil{% \ifx#2[\relax \def#1{#2#3}% \else \def#1{{#2#3}}% \fi } \newcommand*{\glssee}[3][\seename]{% \@do@seeglossary{#2}{[#1]{#3}}} \newcommand*{\@glssee}[3][\seename]{% \glssee[#1]{#3}{#2}} \newcommand*{\glsseeformat}[3][\seename]{\emph{#1} \glsseelist{#2}} \newcommand*{\glsseelist}[1]{% \let\@gls@dolast\relax \let\@gls@donext\relax \@for\@gls@thislabel:=#1\do{% \ifx\@xfor@nextelement\@nnil \@gls@dolast \else \@gls@donext \fi \glsseeitem{\@gls@thislabel}% \let\@gls@dolast\glsseelastsep \let\@gls@donext\glsseesep }% } \newcommand*{\glsseelastsep}{\space\andname\space} \newcommand*{\glsseesep}{, } \newcommand*{\glsseeitem}[1]{\glshyperlink[\glsseeitemformat{#1}]{#1}} \newcommand*{\glsseeitemformat}[1]{\glsentrytext{#1}} \def\warn@noprintglossary{\GlossariesWarningNoLine{No \string\printglossary\space or \string\printglossaries\space found.^^JThis document will not have a glossary}} \ifcsundef{printglossary}{}% {% \GlossariesWarning{Overriding \string\printglossary}% \undef\printglossary } \newcommand*{\printglossary}[1][type=\glsdefaulttype]{% \ifglsxindy\findrootlanguage\fi \def\@glo@type{\glsdefaulttype}% \def\glossarytitle{\csname @glotype@\@glo@type @title\endcsname}% \let\org@glossarytitle\glossarytitle \def\@glossarystyle{}% \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}% \let\@org@glossaryentrynumbers\glossaryentrynumbers \bgroup \setkeys{printgloss}{#1}% \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 \makeatletter \@input@{\jobname.\csname @glotype@\@glo@type @in\endcsname}% \IfFileExists{\jobname.\csname @glotype@\@glo@type @in\endcsname}{}% {\null}% \ifglsxindy \ifcsundef{@xdy@\@glo@type @language}% {% \protected@write\@auxout{}{% \string\@xdylanguage{\@glo@type}{\@xdy@main@language}}% }% {% \protected@write\@auxout{}{% \string\@xdylanguage{\@glo@type}{\csname @xdy@\@glo@type @language\endcsname}}% }% \protected@write\@auxout{}{% \string\@gls@codepage{\@glo@type}{\gls@codepage}}% \fi \egroup \global\let\glossaryentrynumbers\@org@glossaryentrynumbers \global\let\warn@noprintglossary\relax } \newcommand*{\printglossaries}{% \forallglossaries{\@@glo@type}{\printglossary[type=\@@glo@type]}} \define@key{printgloss}{type}{\def\@glo@type{#1}} \define@key{printgloss}{title}{\def\glossarytitle{#1}} \define@key{printgloss}{toctitle}{\def\glossarytoctitle{#1}% \let\gls@dotoctitle\relax } \define@key{printgloss}{style}{% \ifcsundef{@glsstyle@#1}% {% \PackageError{glossaries}% {Glossary style `#1' undefined}{}% }% {% \def\@glossarystyle{\csname @glsstyle@#1\endcsname}% }% } \define@choicekey{printgloss}{numberedsection}[\val\nr]{% false,nolabel,autolabel}[nolabel]{% \ifcase\nr\relax \renewcommand*{\@@glossarysecstar}{*}% \renewcommand*{\@@glossaryseclabel}{}% \or \renewcommand*{\@@glossarysecstar}{}% \renewcommand*{\@@glossaryseclabel}{}% \or \renewcommand*{\@@glossarysecstar}{}% \renewcommand*{\@@glossaryseclabel}{\label{\glsautoprefix\@glo@type}}% \fi} \define@boolkey{printgloss}[gls]{nonumberlist}[true]{% \ifglsnonumberlist \def\glossaryentrynumbers##1{}% \else \def\glossaryentrynumbers##1{##1}% \fi} \newcommand*{\@glsnonextpages}{% \gdef\glossaryentrynumbers##1{% \glsresetentrylist}} \newcommand*{\@glsnextpages}{% \gdef\glossaryentrynumbers##1{% ##1\glsresetentrylist}} \newcommand*{\glsresetentrylist}{% \global\let\glossaryentrynumbers\org@glossaryentrynumbers} \newcommand*{\glsnonextpages}{} \newcommand*{\glsnextpages}{} \ifglsentrycounter \ifx\@gls@counterwithin\@empty \newcounter{glossaryentry} \else \newcounter{glossaryentry}[\@gls@counterwithin] \fi \def\theHglossaryentry{\currentglossary.\theglossaryentry} \fi \ifglssubentrycounter \ifglsentrycounter \newcounter{glossarysubentry}[glossaryentry] \else \newcounter{glossarysubentry} \fi \def\theHglossarysubentry{\currentglssubentry.\theglossarysubentry} \fi \ifglssubentrycounter \newcommand*{\glsresetsubentrycounter}{% \setcounter{glossarysubentry}{0}% } \else \newcommand*{\glsresetsubentrycounter}{} \fi \ifglsentrycounter \newcommand*{\glsstepentry}[1]{% \refstepcounter{glossaryentry}% \label{glsentry-#1}% } \else \newcommand*{\glsstepentry}[1]{} \fi \ifglssubentrycounter \newcommand*{\glsstepsubentry}[1]{% \def\currentglssubentry{#1}% \refstepcounter{glossarysubentry}% \label{glsentry-#1}% } \else \newcommand*{\glsstepsubentry}[1]{} \fi \ifglsentrycounter \newcommand*{\glsrefentry}[1]{\ref{glsentry-#1}} \else \ifglssubentrycounter \newcommand*{\glsrefentry}[1]{\ref{glsentry-#1}} \else \newcommand*{\glsrefentry}[1]{\gls{#1}} \fi \fi \ifglsentrycounter \newcommand*{\glsentrycounterlabel}{\theglossaryentry.\space} \else \newcommand*{\glsentrycounterlabel}{} \fi \ifglssubentrycounter \newcommand*{\glssubentrycounterlabel}{\theglossarysubentry)\space} \else \newcommand*{\glssubentrycounterlabel}{} \fi \ifglsentrycounter \newcommand*{\glsentryitem}[1]{% \glsstepentry{#1}\glsentrycounterlabel } \else \newcommand*{\glsentryitem}[1]{\glsresetsubentrycounter} \fi \ifglssubentrycounter \newcommand*{\glssubentryitem}[1]{% \glsstepsubentry{#1}\glssubentrycounterlabel } \else \newcommand*{\glssubentryitem}[1]{} \fi \ifcsundef{theglossary}% {% \newenvironment{theglossary}{}{}% }% {% \GlossariesWarning{overriding `theglossary' environment}% \renewenvironment{theglossary}{}{}% } \newcommand*{\glossaryheader}{} \newcommand*{\glstarget}[2]{\@glstarget{glo:#1}{#2}} \newcommand*{\glossaryentryfield}[5]{% \noindent\textbf{\glstarget{#1}{#2}} #4 #3. #5\par} \newcommand*{\glossarysubentryfield}[6]{% \glstarget{#2}{\strut}#4. #6\par} \newcommand*{\glsgroupskip}{} \newcommand*{\glsgroupheading}[1]{} \newcommand*{\glsgetgrouptitle}[1]{% \ifcsundef{#1groupname}{#1}{\csname #1groupname\endcsname}% } \newcommand*{\glsgetgrouplabel}[1]{% \ifthenelse{\equals{#1}{\glssymbolsgroupname}}{glssymbols}{% \ifthenelse{\equals{#1}{\glsnumbersgroupname}}{glsnumbers}{#1}}} \newcommand*{\setentrycounter}[2][]{% \def\@glo@counterprefix{#1}% \ifx\@glo@counterprefix\@empty \def\@glo@counterprefix{.}% \else \def\@glo@counterprefix{.#1.}% \fi \def\glsentrycounter{#2}% } \newcommand*{\glossarystyle}[1]{% \ifcsundef{@glsstyle@#1}% {% \PackageError{glossaries}{Glossary style `#1' undefined}{}% }% {% \csname @glsstyle@#1\endcsname }% } \newcommand{\newglossarystyle}[2]{% \ifcsundef{@glsstyle@#1}% {% \expandafter\def\csname @glsstyle@#1\endcsname{#2}% }% {% \PackageError{glossaries}{Glossary style `#1' is already defined}{}% }% } \newcommand*{\glsnamefont}[1]{#1} \ifcsundef{hyperlink}% {% \def\glshypernumber#1{#1}% }% {% \def\glshypernumber#1{\@glshypernumber#1\nohyperpage{}\@nil} } \def\@glshypernumber#1\nohyperpage#2#3\@nil{% \ifx\\#1\\% \else \@delimR#1\delimR\delimR\\% \fi \ifx\\#2\\% \else #2% \fi \ifx\\#3\\% \else \@glshypernumber#3\@nil \fi } \def\@delimR#1\delimR #2\delimR #3\\{% \ifx\\#2\\% \@delimN{#1}% \else \@gls@numberlink{#1}\delimR\@gls@numberlink{#2}% \fi} \def\@delimN#1{\@@delimN#1\delimN \delimN\\} \def\@@delimN#1\delimN #2\delimN#3\\{% \ifx\\#3\\% \@gls@numberlink{#1}% \else \@gls@numberlink{#1}\delimN\@gls@numberlink{#2}% \fi } \def\@gls@numberlink#1{% \begingroup \toks@={}% \@gls@removespaces#1 \@nil \endgroup} \def\@gls@removespaces#1 #2\@nil{% \toks@=\expandafter{\the\toks@#1}% \ifx\\#2\\% \edef\x{\the\toks@}% \ifx\x\empty \else \hyperlink{\glsentrycounter\@glo@counterprefix\the\toks@}% {\the\toks@}% \fi \else \@gls@ReturnAfterFi{% \@gls@removespaces#2\@nil }% \fi } \long\def\@gls@ReturnAfterFi#1\fi{\fi#1} \newcommand*{\hyperrm}[1]{\textrm{\glshypernumber{#1}}} \newcommand*{\hypersf}[1]{\textsf{\glshypernumber{#1}}} \newcommand*{\hypertt}[1]{\texttt{\glshypernumber{#1}}} \newcommand*{\hyperbf}[1]{\textbf{\glshypernumber{#1}}} \newcommand*{\hypermd}[1]{\textmd{\glshypernumber{#1}}} \newcommand*{\hyperit}[1]{\textit{\glshypernumber{#1}}} \newcommand*{\hypersl}[1]{\textsl{\glshypernumber{#1}}} \newcommand*{\hyperup}[1]{\textup{\glshypernumber{#1}}} \newcommand*{\hypersc}[1]{\textsc{\glshypernumber{#1}}} \newcommand*{\hyperemph}[1]{\emph{\glshypernumber{#1}}} \ifglsacronym \newglossary[alg]{acronym}{acr}{acn}{\acronymname} \renewcommand*{\acronymtype}{acronym} \fi \newcommand{\oldacronym}[4][\gls@label]{% \def\gls@label{#2}% \newacronym[#4]{#1}{#2}{#3}% \ifcsundef{xspace}% {% \expandafter\edef\csname#1\endcsname{% \noexpand\@ifstar{\noexpand\Gls{#1}}{\noexpand\gls{#1}}% }% }% {% \expandafter\edef\csname#1\endcsname{% \noexpand\@ifstar{\noexpand\Gls{#1}\noexpand\xspace}{% \noexpand\gls{#1}\noexpand\xspace}% }% }% } \newcommand{\newacronym}[4][]{} \newcommand*{\acrpluralsuffix}{\glspluralsuffix} \newcommand*{\glsshortkey}{short} \newcommand*{\glsshortpluralkey}{shortplural} \newcommand*{\glslongkey}{long} \newcommand*{\glslongpluralkey}{longplural} \newrobustcmd*{\acrfull}{% \@ifstar\s@acrfull\ns@acrfull } \newcommand*\s@acrfull[2][]{% \new@ifnextchar[{\@acrfull{hyper=false,#1}{#2}}% {\@acrfull{hyper=false,#1}{#2}[]}% } \newcommand*\ns@acrfull[2][]{% \new@ifnextchar[{\@acrfull{#1}{#2}}% {\@acrfull{#1}{#2}[]}% } \def\@acrfull#1#2[#3]{% \acrlinkfullformat{\@acrlong}{\@acrshort}{#1}{#2}{#3}% } \newcommand{\acrlinkfullformat}[5]{% \acrfullformat{#1{#3}{#4}[#5]}{#2{#3}{#4}[]}% } \newcommand{\acrfullformat}[2]{#1\space(#2)} \newrobustcmd*{\Acrfull}{% \@ifstar\s@Acrfull\ns@Acrfull } \newcommand*\s@Acrfull[2][]{% \new@ifnextchar[{\@Acrfull{hyper=false,#1}{#2}}% {\@Acrfull{hyper=false,#1}{#2}[]}% } \newcommand*\ns@Acrfull[2][]{% \new@ifnextchar[{\@Acrfull{#1}{#2}}% {\@Acrfull{#1}{#2}[]}% } \def\@Acrfull#1#2[#3]{% \acrlinkfullformat{\@Acrlong}{\@acrshort}{#1}{#2}{#3}% } \newrobustcmd*{\ACRfull}{% \@ifstar\s@ACRfull\ns@ACRfull } \newcommand*\s@ACRfull[2][]{% \new@ifnextchar[{\@ACRfull{hyper=false,#1}{#2}}% {\@ACRfull{hyper=false,#1}{#2}[]}% } \newcommand*\ns@ACRfull[2][]{% \new@ifnextchar[{\@ACRfull{#1}{#2}}% {\@ACRfull{#1}{#2}[]}% } \def\@ACRfull#1#2[#3]{% \acrlinkfullformat{\@ACRlong}{\@ACRshort}{#1}{#2}{#3}% } \newrobustcmd*{\acrfullpl}{% \@ifstar\s@acrfullpl\ns@acrfullpl } \newcommand*\s@acrfullpl[2][]{% \new@ifnextchar[{\@acrfullpl{hyper=false,#1}{#2}}% {\@acrfullpl{hyper=false,#1}{#2}[]}% } \newcommand*\ns@acrfullpl[2][]{% \new@ifnextchar[{\@acrfullpl{#1}{#2}}% {\@acrfullpl{#1}{#2}[]}% } \def\@acrfullpl#1#2[#3]{% \acrlinkfullformat{\@acrlongpl}{\@acrshortpl}{#1}{#2}{#3}% } \newrobustcmd*{\Acrfullpl}{% \@ifstar\s@Acrfullpl\ns@Acrfullpl } \newcommand*\s@Acrfullpl[2][]{% \new@ifnextchar[{\@Acrfullpl{hyper=false,#1}{#2}}% {\@Acrfullpl{hyper=false,#1}{#2}[]}% } \newcommand*\ns@Acrfullpl[2][]{% \new@ifnextchar[{\@Acrfullpl{#1}{#2}}% {\@Acrfullpl{#1}{#2}[]}% } \def\@Acrfullpl#1#2[#3]{% \acrlinkfullformat{\@Acrlongpl}{\@acrshortpl}{#1}{#2}{#3}% } \newrobustcmd*{\ACRfullpl}{% \@ifstar\s@ACRfullpl\ns@ACRfullpl } \newcommand*\s@ACRfullpl[2][]{% \new@ifnextchar[{\@ACRfullpl{hyper=false,#1}{#2}}% {\@ACRfullpl{hyper=false,#1}{#2}[]}% } \newcommand*\ns@ACRfullpl[2][]{% \new@ifnextchar[{\@ACRfullpl{#1}{#2}}% {\@ACRfullpl{#1}{#2}[]}% } \def\@ACRfullpl#1#2[#3]{% \acrlinkfullformat{\@ACRlongpl}{\@ACRshortpl}{#1}{#2}{#3}% } \newcommand{\acronymfont}[1]{#1} \newcommand{\firstacronymfont}[1]{\acronymfont{#1}} \newcommand*{\acrnameformat}[2]{\acronymfont{#1}} \newtoks\glskeylisttok \newtoks\glslabeltok \newtoks\glsshorttok \newtoks\glslongtok \newcommand*{\newacronymhook}{} \newcommand*{\SetDefaultAcronymDisplayStyle}[1]{% \defglsdisplay[#1]{##1##4}% \defglsdisplayfirst[#1]{##1##4}% } \newcommand*{\DefaultNewAcronymDef}{% \edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% {% type=\acronymtype,% name={\the\glsshorttok},% sort={\the\glsshorttok},% text={\the\glsshorttok},% first={\acrfullformat{\the\glslongtok}{\the\glsshorttok}},% plural={\the\glsshorttok\noexpand\acrpluralsuffix},% firstplural={\acrfullformat{\noexpand\@glo@longpl}% {\noexpand\@glo@shortpl}},% short={\the\glsshorttok},% shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},% long={\the\glslongtok},% longplural={\the\glslongtok\noexpand\acrpluralsuffix},% description={\the\glslongtok},% descriptionplural={\the\glslongtok\noexpand\acrpluralsuffix},% \the\glskeylisttok }% }% \@do@newglossaryentry } \newcommand*{\SetDefaultAcronymStyle}{% \@for\@gls@type:=\@glsacronymlists\do{% \SetDefaultAcronymDisplayStyle{\@gls@type}% }% \renewcommand{\newacronym}[4][]{% \ifx\@glsacronymlists\@empty \def\@glo@type{\acronymtype}% \setkeys{glossentry}{##1}% \DeclareAcronymList{\@glo@type}% \SetDefaultAcronymDisplayStyle{\@glo@type}% \fi \glskeylisttok{##1}% \glslabeltok{##2}% \glsshorttok{##3}% \glslongtok{##4}% \newacronymhook \DefaultNewAcronymDef }% \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}% } \newcommand*{\acrfootnote}[3]{\acrlinkfootnote{#1}{#2}{#3}} \newcommand*{\acrlinkfootnote}[3]{% \footnote{\glslink[#1]{#2}{#3}}% } \newcommand*{\acrnolinkfootnote}[3]{% \footnote{#3}% } \newcommand*{\SetDescriptionFootnoteAcronymDisplayStyle}[1]{% \defglsdisplayfirst[#1]{% \firstacronymfont{##1}##4% \expandafter\protect\expandafter\acrfootnote\expandafter {\@gls@link@opts}{\@gls@link@label}{##3} }% \defglsdisplay[#1]{\acronymfont{##1}##4}% } \newcommand*{\DescriptionFootnoteNewAcronymDef}{% \edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% {% type=\acronymtype,% name={\noexpand\acronymfont{\the\glsshorttok}},% sort={\the\glsshorttok},% text={\the\glsshorttok},% plural={\the\glsshorttok\noexpand\acrpluralsuffix},% short={\the\glsshorttok},% shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},% long={\the\glslongtok},% longplural={\the\glslongtok\noexpand\acrpluralsuffix},% symbol={\the\glslongtok},% symbolplural={\the\glslongtok\noexpand\acrpluralsuffix},% \the\glskeylisttok }% }% \@do@newglossaryentry } \newcommand*{\SetDescriptionFootnoteAcronymStyle}{% \renewcommand{\newacronym}[4][]{% \ifx\@glsacronymlists\@empty \def\@glo@type{\acronymtype}% \setkeys{glossentry}{##1}% \DeclareAcronymList{\@glo@type}% \SetDescriptionFootnoteAcronymDisplayStyle{\@glo@type}% \fi \glskeylisttok{##1}% \glslabeltok{##2}% \glsshorttok{##3}% \glslongtok{##4}% \newacronymhook \DescriptionFootnoteNewAcronymDef }% \@for\@gls@type:=\@glsacronymlists\do{% \SetDescriptionFootnoteAcronymDisplayStyle{\@gls@type}% }% \ifglsacrsmallcaps \renewcommand*{\acronymfont}[1]{\textsc{##1}}% \renewcommand*{\acrpluralsuffix}{% \textup{\glspluralsuffix}}% \else \ifglsacrsmaller \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}% \fi \fi \ifglsacrdua \PackageError{glossaries}{Option clash: `footnote' and `dua' can't both be set}{}% \fi }% \newcommand*{\SetDescriptionDUAAcronymDisplayStyle}[1]{% \defglsdisplay[#1]{##1##4}% \defglsdisplayfirst[#1]{##1##4}% } \newcommand*{\DescriptionDUANewAcronymDef}{% \edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% {% type=\acronymtype,% name={\the\glslongtok},% sort={\the\glslongtok}, text={\the\glslongtok},% plural={\the\glslongtok\noexpand\acrpluralsuffix},% short={\the\glsshorttok},% shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},% long={\the\glslongtok},% longplural={\the\glslongtok\noexpand\acrpluralsuffix},% symbol={\the\glsshorttok},% symbolplural={\the\glsshorttok\noexpand\acrpluralsuffix},% \the\glskeylisttok }% }% \@do@newglossaryentry } \newcommand*{\SetDescriptionDUAAcronymStyle}{% \ifglsacrsmallcaps \PackageError{glossaries}{Option clash: `smallcaps' and `dua' can't both be set}{}% \else \ifglsacrsmaller \PackageError{glossaries}{Option clash: `smaller' and `dua' can't both be set}{}% \fi \fi \renewcommand{\newacronym}[4][]{% \ifx\@glsacronymlists\@empty \def\@glo@type{\acronymtype}% \setkeys{glossentry}{##1}% \DeclareAcronymList{\@glo@type}% \SetDescriptionDUAAcronymDisplayStyle{\@glo@type}% \fi \glskeylisttok{##1}% \glslabeltok{##2}% \glsshorttok{##3}% \glslongtok{##4}% \newacronymhook \DescriptionDUANewAcronymDef }% \@for\@gls@type:=\@glsacronymlists\do{% \SetDescriptionDUAAcronymDisplayStyle{\@gls@type}% }% }% \newcommand*{\SetDescriptionAcronymDisplayStyle}[1]{% \defglsdisplayfirst[#1]{% ##1##4 (\firstacronymfont{##3})}% \defglsdisplay[#1]{\acronymfont{##1}##4}% } \newcommand*{\DescriptionNewAcronymDef}{% \edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% {% type=\acronymtype,% name={\noexpand \acrnameformat{\the\glsshorttok}{\the\glslongtok}},% sort={\the\glsshorttok},% first={\the\glslongtok},% firstplural={\the\glslongtok\noexpand\acrpluralsuffix},% text={\the\glsshorttok},% plural={\the\glsshorttok\noexpand\acrpluralsuffix},% short={\the\glsshorttok},% shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},% long={\the\glslongtok},% longplural={\the\glslongtok\noexpand\acrpluralsuffix},% symbol={\noexpand\@glo@text},% symbolplural={\noexpand\@glo@plural},% \the\glskeylisttok}% }% \@do@newglossaryentry } \newcommand*{\SetDescriptionAcronymStyle}{% \renewcommand{\newacronym}[4][]{% \ifx\@glsacronymlists\@empty \def\@glo@type{\acronymtype}% \setkeys{glossentry}{##1}% \DeclareAcronymList{\@glo@type}% \SetDescriptionAcronymDisplayStyle{\@glo@type}% \fi \glskeylisttok{##1}% \glslabeltok{##2}% \glsshorttok{##3}% \glslongtok{##4}% \newacronymhook \DescriptionNewAcronymDef }% \@for\@gls@type:=\@glsacronymlists\do{% \SetDescriptionAcronymDisplayStyle{\@gls@type}% }% \ifglsacrsmallcaps \renewcommand{\acronymfont}[1]{\textsc{##1}} \renewcommand*{\acrpluralsuffix}{% \textup{\glspluralsuffix}}% \else \ifglsacrsmaller \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}% \fi \fi }% \newcommand*{\SetFootnoteAcronymDisplayStyle}[1]{% \defglsdisplayfirst[#1]{% \firstacronymfont{##1}##4% \expandafter\protect\expandafter\acrfootnote\expandafter {\@gls@link@opts}{\@gls@link@label}{##2}% }% \defglsdisplay[#1]{\acronymfont{##1}##4}% } \newcommand*{\FootnoteNewAcronymDef}{% \edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% {% type=\acronymtype,% name={\noexpand\acronymfont{\the\glsshorttok}},% sort={\the\glsshorttok},% text={\the\glsshorttok},% plural={\the\glsshorttok\noexpand\acrpluralsuffix},% short={\the\glsshorttok},% shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},% long={\the\glslongtok},% longplural={\the\glslongtok\noexpand\acrpluralsuffix},% description={\the\glslongtok},% descriptionplural={\the\glslongtok\noexpand\acrpluralsuffix},% \the\glskeylisttok }% }% \@do@newglossaryentry } \newcommand*{\SetFootnoteAcronymStyle}{% \renewcommand{\newacronym}[4][]{% \ifx\@glsacronymlists\@empty \def\@glo@type{\acronymtype}% \setkeys{glossentry}{##1}% \DeclareAcronymList{\@glo@type}% \SetFootnoteAcronymDisplayStyle{\@glo@type}% \fi \glskeylisttok{##1}% \glslabeltok{##2}% \glsshorttok{##3}% \glslongtok{##4}% \newacronymhook \FootnoteNewAcronymDef }% \@for\@gls@type:=\@glsacronymlists\do{% \SetFootnoteAcronymDisplayStyle{\@gls@type}% }% \ifglsacrsmallcaps \renewcommand*{\acronymfont}[1]{\textsc{##1}}% \renewcommand*{\acrpluralsuffix}{% \textup{\glspluralsuffix}}% \else \ifglsacrsmaller \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}% \fi \fi \ifglsacrdua \PackageError{glossaries}{Option clash: `footnote' and `dua' can't both be set}{}% \fi }% \newcommand*{\SetSmallAcronymDisplayStyle}[1]{% \defglsdisplayfirst[#1]{##1##4 (\firstacronymfont{##3})} \defglsdisplay[#1]{\acronymfont{##1}##4}% } \newcommand*{\SmallNewAcronymDef}{% \edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% {% type=\acronymtype,% name={\noexpand\acronymfont{\the\glsshorttok}},% sort={\the\glsshorttok},% text={\noexpand\@glo@symbol},% plural={\noexpand\@glo@symbolplural},% first={\the\glslongtok},% firstplural={\the\glslongtok\noexpand\acrpluralsuffix},% short={\the\glsshorttok},% shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},% long={\the\glslongtok},% longplural={\the\glslongtok\noexpand\acrpluralsuffix},% description={\noexpand\@glo@first},% descriptionplural={\noexpand\@glo@firstplural},% symbol={\the\glsshorttok},% symbolplural={\the\glsshorttok\noexpand\acrpluralsuffix},% \the\glskeylisttok }% }% \@do@newglossaryentry } \newcommand*{\SetSmallAcronymStyle}{% \renewcommand{\newacronym}[4][]{% \ifx\@glsacronymlists\@empty \def\@glo@type{\acronymtype}% \setkeys{glossentry}{##1}% \DeclareAcronymList{\@glo@type}% \SetSmallAcronymDisplayStyle{\@glo@type}% \fi \glskeylisttok{##1}% \glslabeltok{##2}% \glsshorttok{##3}% \glslongtok{##4}% \newacronymhook \SmallNewAcronymDef }% \@for\@gls@type:=\@glsacronymlists\do{% \SetSmallAcronymDisplayStyle{\@gls@type}% }% \ifglsacrsmallcaps \renewcommand*{\acronymfont}[1]{\textsc{##1}} \renewcommand*{\acrpluralsuffix}{% \textup{\glspluralsuffix}}% \else \renewcommand*{\acronymfont}[1]{\textsmaller{##1}} \fi \ifglsacrdua \ifglsacrsmallcaps \PackageError{glossaries}{Option clash: `smallcaps' and `dua' can't both be set}{}% \else \PackageError{glossaries}{Option clash: `smaller' and `dua' can't both be set}{}% \fi \fi }% \newcommand*{\SetDUADisplayStyle}[1]{% \defglsdisplay[#1]{##1##4}% \defglsdisplayfirst[#1]{##1##4}% } \newcommand*{\DUANewAcronymDef}{% \edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% {% type=\acronymtype,% name={\the\glsshorttok},% text={\the\glslongtok},% plural={\the\glslongtok\noexpand\acrpluralsuffix},% short={\the\glsshorttok},% shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},% long={\the\glslongtok},% longplural={\the\glslongtok\noexpand\acrpluralsuffix},% description={\the\glslongtok},% symbol={\the\glsshorttok},% symbolplural={\the\glsshorttok\noexpand\acrpluralsuffix},% \the\glskeylisttok }% }% \@do@newglossaryentry } \newcommand*{\SetDUAStyle}{% \renewcommand{\newacronym}[4][]{% \ifx\@glsacronymlists\@empty \def\@glo@type{\acronymtype}% \setkeys{glossentry}{##1}% \DeclareAcronymList{\@glo@type}% \SetDUADisplayStyle{\@glo@type}% \fi \glskeylisttok{##1}% \glslabeltok{##2}% \glsshorttok{##3}% \glslongtok{##4}% \newacronymhook \DUANewAcronymDef }% \@for\@gls@type:=\@glsacronymlists\do{% \SetDUADisplayStyle{\@gls@type}% }% } \newcommand*{\SetAcronymStyle}{% \SetDefaultAcronymStyle \ifglsacrdescription \ifglsacrfootnote \SetDescriptionFootnoteAcronymStyle \else \ifglsacrdua \SetDescriptionDUAAcronymStyle \else \SetDescriptionAcronymStyle \fi \fi \else \ifglsacrfootnote \SetFootnoteAcronymStyle \else \ifthenelse{\boolean{glsacrsmallcaps}\OR \boolean{glsacrsmaller}}% {% \SetSmallAcronymStyle }% {% \ifglsacrdua \SetDUAStyle \fi }% \fi \fi } \SetAcronymStyle \newcommand*{\SetCustomDisplayStyle}[1]{% \defglsdisplay[#1]{##1##4}% \defglsdisplayfirst[#1]{##1##4}% } \newcommand*{\CustomAcronymFields}{% name={\the\glsshorttok},% description={\the\glslongtok},% first={\noexpand\acrfullformat{\the\glslongtok}{\the\glsshorttok}},% firstplural={\noexpand\acrfullformat {\the\glslongtok\noexpand\acrpluralsuffix}{\the\glsshorttok}}% text={\the\glsshorttok},% plural={\the\glsshorttok\noexpand\acrpluralsuffix}% } \newcommand*{\CustomNewAcronymDef}{% \protected@edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% {% type=\acronymtype,% short={\the\glsshorttok},% shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},% long={\the\glslongtok},% longplural={\the\glslongtok\noexpand\acrpluralsuffix},% user1={\the\glsshorttok},% user2={\the\glsshorttok\noexpand\acrpluralsuffix},% user3={\the\glslongtok},% user4={\the\glslongtok\noexpand\acrpluralsuffix},% \CustomAcronymFields,% \the\glskeylisttok }% }% \@do@newglossaryentry } \newcommand*{\SetCustomStyle}{% \renewcommand{\newacronym}[4][]{% \ifx\@glsacronymlists\@empty \def\@glo@type{\acronymtype}% \setkeys{glossentry}{##1}% \DeclareAcronymList{\@glo@type}% \SetCustomDisplayStyle{\@glo@type}% \fi \glskeylisttok{##1}% \glslabeltok{##2}% \glsshorttok{##3}% \glslongtok{##4}% \newacronymhook \CustomNewAcronymDef }% \@for\@gls@type:=\@glsacronymlists\do{% \SetCustomDisplayStyle{\@gls@type}% }% } \newcommand*{\DefineAcronymSynonyms}{% \let\acs\acrshort \let\Acs\Acrshort \let\acsp\acrshortpl \let\Acsp\Acrshortpl \let\acl\acrlong \let\aclp\acrlongpl \let\Acl\Acrlong \let\Aclp\Acrlongpl \let\acf\acrfull \let\acfp\acrfullpl \let\Acf\Acrfull \let\Acfp\Acrfullpl \let\ac\gls \let\Ac\Gls \let\acp\glspl \let\Acp\Glspl } \ifglsacrshortcuts \DefineAcronymSynonyms \fi \RequirePackage{glossary-hypernav} \@gls@loadlist \@gls@loadlong \@gls@loadsuper \@gls@loadtree \ifx\@glossary@default@style\relax \else \glossarystyle{\@glossary@default@style} \fi \newcommand*{\showgloparent}[1]{% \expandafter\show\csname glo@#1@parent\endcsname } \newcommand*{\showglolevel}[1]{% \expandafter\show\csname glo@#1@level\endcsname } \newcommand*{\showglotext}[1]{% \expandafter\show\csname glo@#1@text\endcsname } \newcommand*{\showgloplural}[1]{% \expandafter\show\csname glo@#1@plural\endcsname } \newcommand*{\showglofirst}[1]{% \expandafter\show\csname glo@#1@first\endcsname } \newcommand*{\showglofirstpl}[1]{% \expandafter\show\csname glo@#1@firstpl\endcsname } \newcommand*{\showglotype}[1]{% \expandafter\show\csname glo@#1@type\endcsname } \newcommand*{\showglocounter}[1]{% \expandafter\show\csname glo@#1@counter\endcsname } \newcommand*{\showglouseri}[1]{% \expandafter\show\csname glo@#1@useri\endcsname } \newcommand*{\showglouserii}[1]{% \expandafter\show\csname glo@#1@userii\endcsname } \newcommand*{\showglouseriii}[1]{% \expandafter\show\csname glo@#1@useriii\endcsname } \newcommand*{\showglouseriv}[1]{% \expandafter\show\csname glo@#1@useriv\endcsname } \newcommand*{\showglouserv}[1]{% \expandafter\show\csname glo@#1@userv\endcsname } \newcommand*{\showglouservi}[1]{% \expandafter\show\csname glo@#1@uservi\endcsname } \newcommand*{\showgloname}[1]{% \expandafter\show\csname glo@#1@name\endcsname } \newcommand*{\showglodesc}[1]{% \expandafter\show\csname glo@#1@desc\endcsname } \newcommand*{\showglodescplural}[1]{% \expandafter\show\csname glo@#1@descplural\endcsname } \newcommand*{\showglosort}[1]{% \expandafter\show\csname glo@#1@sort\endcsname } \newcommand*{\showglosymbol}[1]{% \expandafter\show\csname glo@#1@symbol\endcsname } \newcommand*{\showglosymbolplural}[1]{% \expandafter\show\csname glo@#1@symbolplural\endcsname } \newcommand*{\showgloindex}[1]{% \expandafter\show\csname glo@#1@index\endcsname } \newcommand*{\showgloflag}[1]{% \expandafter\show\csname ifglo@#1@flag\endcsname } \newcommand*{\showacronymlists}{% \show\@glsacronymlists } \newcommand*{\showglossaries}{% \show\@glo@types } \newcommand*{\showglossaryin}[1]{% \expandafter\show\csname @glotype@#1@in\endcsname } \newcommand*{\showglossaryout}[1]{% \expandafter\show\csname @glotype@#1@out\endcsname } \newcommand*{\showglossarytitle}[1]{% \expandafter\show\csname @glotype@#1@title\endcsname } \newcommand*{\showglossarycounter}[1]{% \expandafter\show\csname @glotype@#1@counter\endcsname } \newcommand*{\showglossaryentries}[1]{% \expandafter\show\csname @glolist@#1\endcsname } \csname ifglscompatible-2.07\endcsname \RequirePackage{glossaries-compatible-207} \fi \endinput %% %% End of file `glossaries.sty'.