diff --git a/glossary.sty b/glossary.sty new file mode 100644 index 0000000..2f6c12a --- /dev/null +++ b/glossary.sty @@ -0,0 +1,979 @@ +%% +%% This is file `glossary.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% glossary.dtx (with options: `glossary.sty,package') +%% Copyright (C) 2006 Nicola Talbot, all rights reserved. +%% If you modify this file, you must change its name first. +%% You are NOT ALLOWED to distribute this file alone. You are NOT +%% ALLOWED to take money for the distribution or use of either this +%% file or a changed version, except for a nominal charge for copying +%% etc. +%% \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{glossary}[2006/07/20 2.4 (NLCT)] +\RequirePackage{ifthen} +\RequirePackage{keyval} +\define@key{gloss} +{style} +{\ifthenelse{\equal{#1}{list} \or \equal{#1}{altlist} +\or \equal{#1}{super} \or \equal{#1}{long}} +{\def\gls@style{#1}} +{\PackageError{glossary} +{Unknown glossary style '#1'} +{Available styles are: list, altlist, super and long}}} +\define@key{gloss} +{header}[plain]{\ifthenelse{\equal{#1}{none} \or \equal{#1}{plain}} +{\def\gls@header{#1}} +{\PackageError{glossary} +{Unknown glossary style '#1'} +{Available styles are: none and plain}}} +\define@key{gloss} +{border}[plain]{\ifthenelse{\equal{#1}{none} \or \equal{#1}{plain}} +{\def\gls@border{#1}} +{\PackageError{glossary} +{Unknown glossary border '#1'} +{Available styles are: none and plain}}} +\newcount\gls@cols +\define@key{gloss}{cols}{\gls@cols=#1\relax +\ifthenelse{\gls@cols<2 \or \gls@cols>3} +{\PackageError{glossary} +{invalid number of columns} +{The cols option can only be 2 or 3}} +{}} +\define@key{gloss} +{number} +{\ifthenelse{\equal{#1}{none}} +{\def\gls@glossary@number{#1}} +{\@ifundefined{c@#1}{ +\PackageError{glossary} +{Unknown glossary number style '#1'} +{You may either specify "none" or the name of a counter, +e.g. "section"}\def\gls@glossary@number{page}}{\def\gls@glossary@number{#1}}}} +\newif\ifgls@toc +\define@key{gloss}{toc}[true]{\ifthenelse{\equal{#1}{true} +\or \equal{#1}{false}} +{\csname gls@toc#1\endcsname} +{\PackageError{glossary}{Glossary option 'toc' is boolean} +{The value of 'toc' can only be set to 'true' or 'false'}}} +\newif\ifgls@hypertoc +\define@key{gloss}{hypertoc}[true]{% +\ifthenelse{\equal{#1}{true} \or \equal{#1}{false}} +{\csname gls@hypertoc#1\endcsname} +{\PackageError{glossary}{Glossary option 'hypertoc' is boolean} +{The value of 'hypertoc' can only be set to 'true' or 'false'}}} +\newif\ifgls@section +\define@key{gloss}{section}[true]{% +\ifthenelse{\equal{#1}{true} \or \equal{#1}{false}} +{\csname gls@section#1\endcsname} +{\PackageError{glossary}{Glossary option 'section' is boolean} +{The value of 'section' can only be set to 'true' or 'false'}}} +\gls@sectionfalse +\newif\ifglshyper +\newif\ifglshyperacronym +\define@key{gloss}{hyper}[true]{% +\ifthenelse{\equal{#1}{true} \or \equal{#1}{false}} +{\csname glshyper#1\endcsname\glshyperacronymtrue} +{\PackageError{glossary}{Glossary option 'hyper' is boolean} +{The value of 'hyper' can only be set to 'true' or 'false'}}} +\define@key{gloss}{hyperacronym}[true]{% +\ifthenelse{\equal{#1}{true} \or \equal{#1}{false}} +{\csname glshyperacronym#1\endcsname} +{\PackageError{glossary}{Glossary option 'hyperacronym' is boolean} +{The value of 'hyperacronym' can only be set to 'true' or 'false'}}} +\newif\ifglsacronym +\define@key{gloss}{acronym}[true]{% +\ifthenelse{\equal{#1}{true} \or \equal{#1}{false}} +{\setboolean{glsacronym}{#1}}{% +\PackageError{glossary}{Glossary option 'acronym' is boolean}{The +value of 'acronym' can only be set to 'true' or 'false'}}} +\newif\ifglsglobal +\define@key{gloss}{global}[true]{\ifthenelse{\equal{#1}{true}\or +\equal{#1}{false}}{\setboolean{glsglobal}{#1}}{% +\PackageError{glossary}{Glossary option 'global' is boolean}{The +value of 'global' can only be set to 'true' or 'false'}}} +\def\gls@style{long} +\def\gls@header{none} +\def\gls@border{none} +\def\gls@glossary@number{page} +\gls@cols=2\relax +\gls@tocfalse +\@ifundefined{hyperpage}{\glshyperfalse\glshyperacronymfalse}{% +\glshypertrue\glshyperacronymtrue} +\@ifundefined{hypertarget}{ +\newcommand{\glosslabel}[2]{#2}% +\newcommand{\glossref}[2]{#2}% +}{% +\newcommand{\glosslabel}[2]{\hypertarget{#1}{#2}}% +\newcommand{\glossref}[2]{\hyperlink{#1}{#2}} +} +\@ifundefined{xspace}{% +\let\glsxspace\relax}{% +\let\glsxspace\xspace} +\let\glossaryalignment\relax +\newcommand{\glossarypackageoptions}[1]{\setkeys{gloss}{#1}} +\InputIfFileExists{glossary.cfg}{% +\typeout{Glossary configuration file loaded}}{% +\typeout{No configuration file glossary.cfg found}} +\renewcommand{\glossarypackageoptions}[1]{% +\PackageError{glossary}{Command \string\glossarypackageoptions +^^Jcan only be used in configuration file}{}} +\DeclareOption*{\edef\@pkg@ptions{\noexpand +\setkeys{gloss}{\CurrentOption}} +\ifthenelse{\equal{\CurrentOption}{}}{}{\@pkg@ptions}} +\ProcessOptions +\ifthenelse{\(\equal{\gls@style}{list} \or +\equal{\gls@style}{altlist}\) \and +\(\not\equal{\gls@header}{none} \or \not\equal{\gls@border}{none} +\or \gls@cols=3\)} +{\PackageError{glossary}{You can't have option 'style=list' or +'style=altlist' in combination with any of the other style +options}{The 'list' and 'altlist' options don't have a header, +border or number of columns option.}} +{} +\ifthenelse{\boolean{gls@hypertoc} \and \boolean{gls@toc}}{% +\PackageWarning{glossary}{Can't have both 'toc' and +'hypertoc', ignoring 'toc' option} +\ifgls@hypertoc\gls@tocfalse\fi}{} +\define@key{wrgloss}{name}{% +\def\@glo@n@me{#1}% +\@onelevel@sanitize\@glo@n@me% +\global\let\@glo@n@me\@glo@n@me} +\define@key{wrgloss}{description}{% +\def\@descr{#1}% +\@onelevel@sanitize\@descr} +\define@key{wrgloss}{sort}{% +\def\@s@rt{#1}% +\@onelevel@sanitize\@s@rt +\global\let\@s@rt\@s@rt} +\define@key{wrgloss}{format}{\def\@f@rm@t{#1}} +\define@key{wrgloss}{number}{\def\@glo@num{#1}} +\newcommand{\@@wrglossary}{} +\newcommand{\@glo@l@bel}{} +\newcommand{\@gls@glossary@type}{glo} +\renewcommand{\@wrglossary}[2][glossary]{\relax +\gdef\@glo@n@me{}\def\@descr{}\def\@s@rt{}\def\@f@rm@t{}% +\edef\@glo@num{\csname gls@#1@number\endcsname}\relax +\xdef\@pr@fix{\csname @gls@#1@type\endcsname}% + \setkeys{wrgloss}{#2}\relax +\ifthenelse{\equal{\@glo@num}{none}}{\def\@@glo@num{\thepage}}{% +\@ifundefined{c@\@glo@num}{\PackageError{glossary}{% +Not such counter '\@glo@num'}{The value of the 'number' key +must be the name of a counter or the word "none"}% +\def\@@glo@num{\thepage}}{% +\edef\@@glo@num{\csname the\@glo@num\endcsname}}}% +\ifthenelse{\equal{\@s@rt}{}}{\gdef\@s@rt{\@glo@n@me}}{}% +\ifthenelse{\equal{\@glo@l@bel}{}}{% +\gdef\@glo@l@bel{\@pr@fix:\@s@rt}}{}% +\ifthenelse{\equal{\@f@rm@t}{}} +{\expandafter\protected@write\csname @#1file\endcsname{}% +{\string\glossaryentry{\@s@rt @{% +\string\glosslabel{\@glo@l@bel}{\@glo@n@me}}\@descr +\string\relax|glsnumformat}{\@@glo@num}}} +{\ifthenelse{\equal{\@f@rm@t}{hyperrm} \or +\equal{\@f@rm@t}{hypersf} \or \equal{\@f@rm@t}{hypertt} +\or \equal{\@f@rm@t}{hypermd} \or \equal{\@f@rm@t}{hyperbf} +\or \equal{\@f@rm@t}{hyperit} \or \equal{\@f@rm@t}{hyperem} +\or \equal{\@f@rm@t}{hypersl} \or \equal{\@f@rm@t}{hyperup} +\or \equal{\@f@rm@t}{hypersc}} +{\expandafter\protected@write\csname @#1file\endcsname{}% + {\string\glossaryentry{\@s@rt @{% + \string\glosslabel{\@glo@l@bel}{\@glo@n@me}}\@descr + \string\relax|\@f@rm@t[\@glo@num]}{\@@glo@num}}} +{\expandafter\protected@write\csname @#1file\endcsname{}% + {\string\glossaryentry{\@s@rt @{% + \string\glosslabel{\@glo@l@bel}{\@glo@n@me}}\@descr + \string\relax|\@f@rm@t}{\@@glo@num}}}}\relax + \endgroup\@esphack +\@@wrglossary +} +\define@key{wrnsgloss}{name}{\def\@glo@n@me{#1}} +\define@key{wrnsgloss}{description}{\def\@descr{#1}} +\define@key{wrnsgloss}{sort}{\def\@s@rt{#1}} +\define@key{wrnsgloss}{format}{\def\@f@rm@t{#1}} +\define@key{wrnsgloss}{number}{\def\@glo@num{#1}} +\newcommand{\@gls@getn@me}[1]{% +\def\@glo@n@me{}\setkeys{wrnsgloss}{#1}% +} +\newcommand{\@gls@getdescr}[1]{% +\@bsphack\begingroup +\def\@descr{}% +\setkeys{wrgloss}{#1}% +\global\let\@glo@desc\@descr +\endgroup\@esphack +} +\newcommand{\xglossary}{\renewcommand{\@@wrglossary}[1]{% +\glossref{\@glo@l@bel}{##1}\renewcommand{\@@wrglossary}{}}% +\glossary} +\newcommand*{\@glo@label@list}{} +\toksdef\gls@ta=0 \toksdef\gls@tb=2 +\newcommand{\@glo@label@addtolist}[1]{% +\gls@ta={{#1}}\gls@tb=\expandafter{\@glo@label@list}% +\xdef\@glo@label@list{\the\gls@ta,\the\gls@tb}} +\newcommand*{\storeglosentry}[3][glossary]{% +\ifthenelse{\equal{#2}{*}}{% +\PackageError{glossary}{Glossary label '*' invalid}{You can't have +a glossary entry with a * as the label}}{% +\@ifundefined{glo@#2@entry}{% +\@glo@label@addtolist{#2}% +\expandafter\def\csname glo@#2@type\endcsname{#1}% +\expandafter\def\csname glo@#2@entry\endcsname{#3}% +\@gls@getn@me{#3}% +\expandafter\protected@edef\csname glo@#2@name\endcsname{\@glo@n@me}% +}{% +\PackageError{glossary}{Glossary entry '#2' already +defined}{There already exists a glossary entry with the label '#2'}}}% +} +\providecommand{\useglosentry}[2][\relax]{% +\ifthenelse{\equal{#2}{*}}{\@for\@glolab:=\@glo@label@list\do{% +\ifthenelse{\equal{\@glolab}{}}{}{\useglosentry[#1]{\@glolab}}}}{% +\@ifundefined{glo@#2@type}{% +\PackageError{glossary}{Glossary entry '#2' undefined}{You need +to define the entry using \string\storeglosentry\space before +using it.}}{{% +\edef\@glostype{\csname glo@#2@type\endcsname}% +\@glo@tb=\expandafter\expandafter\expandafter +{\csname glo@#2@entry\endcsname}% +\ifx#1\relax +\edef\@glo@cmd{\expandafter\noexpand +\csname\@glostype\endcsname{\the\@glo@tb}}% +\else +\edef\@glo@cmd{\expandafter\noexpand +\csname\@glostype\endcsname{\the\@glo@tb,#1}}% +\fi +\@glo@cmd +}}}} +\providecommand{\useGlosentry}[3][\relax]{% +\@ifundefined{glo@#2@type}{% +\PackageError{glossary}{Glossary entry '#2' undefined}{You need +to define the entry using \string\storeglosentry\space before +using it.}}{{% +\edef\@glostype{x\csname glo@#2@type\endcsname}% +\@glo@tb=\expandafter\expandafter\expandafter +{\csname glo@#2@entry\endcsname}% +\ifx#1\relax +\edef\@glo@cmd{\expandafter\noexpand +\csname\@glostype\endcsname{\the\@glo@tb}}% +\else +\edef\@glo@cmd{\expandafter\noexpand +\csname\@glostype\endcsname{\the\@glo@tb,#1}}% +\fi +\@glo@cmd{#3}% +}}} +\newcommand{\gls}[2][\relax]{% +\useGlosentry[#1]{#2}{% +\csname glo@#2@name\endcsname}} +\providecommand{\saveglosentry}[3][glossary]{% +\PackageWarning{glossary}{\string\saveglosentry\space is obsolete, +please use \string\storeglosentry\space instead}% +\expandafter\def\csname glo@#2@type\endcsname{#1}% +\expandafter\def\csname glo@#2@entry\endcsname{% +name={#2},description={#3}}} +\newcommand*{\@gls@setnumbering}[2][glossary]{% +\ifthenelse{\equal{#2}{none}}{% +\def\pagecompositor{-} +\expandafter\def\csname @#1@delimN\endcsname{} +\expandafter\def\csname @#1@delimR\endcsname{} +\expandafter\def\csname glsX#1Xnumformat\endcsname##1{}}{% +\ifthenelse{\equal{#2}{page}}{% +\def\pagecompositor{-}}{% +\def\pagecompositor{.}} +\expandafter\def\csname @#1@delimN\endcsname{, } +\expandafter\def\csname @#1@delimR\endcsname{--} +\ifglshyper +\expandafter\def\csname glsX#1Xnumformat\endcsname##1{% +\hyperrm[#2]{##1}}% +\else +\expandafter\def\csname glsX#1Xnumformat\endcsname##1{##1}\fi +} +} +\@gls@setnumbering{\gls@glossary@number} +\newcommand{\glsnumformat}[1]{% +\@ifundefined{\@glostype}{\def\@glostype{glossary}}{}% +\@ifundefined{glsX\@glostype Xnumformat}{% +\PackageError{glossary}{Glossary type '\@glostype' undefined}{}}{% +\csname glsX\@glostype Xnumformat\endcsname{#1}}} +\def\@glostype{glossary} +\newcommand{\delimN}{\csname @\@glostype @delimN\endcsname} +\newcommand{\delimR}{\csname @\@glostype @delimR\endcsname} +\newcommand{\gloitem}{\csname @\@glostype @gloitem\endcsname} +\newcommand{\gloskip}{\csname @\@glostype @gloskip\endcsname} +\newcommand{\delimT}{\glsafternum +\csname @\@glostype @delimT\endcsname} +\newcommand{\glodelim}{\csname @\@glostype @glodelim\endcsname +\glsbeforenum} +\newcommand{\glogroupSymbols}{} +\newcommand{\glogroupNumbers}{} +\newcommand{\glogroupA}{} +\newcommand{\glogroupB}{} +\newcommand{\glogroupC}{} +\newcommand{\glogroupD}{} +\newcommand{\glogroupE}{} +\newcommand{\glogroupF}{} +\newcommand{\glogroupG}{} +\newcommand{\glogroupH}{} +\newcommand{\glogroupI}{} +\newcommand{\glogroupJ}{} +\newcommand{\glogroupK}{} +\newcommand{\glogroupL}{} +\newcommand{\glogroupM}{} +\newcommand{\glogroupN}{} +\newcommand{\glogroupO}{} +\newcommand{\glogroupP}{} +\newcommand{\glogroupQ}{} +\newcommand{\glogroupR}{} +\newcommand{\glogroupS}{} +\newcommand{\glogroupT}{} +\newcommand{\glogroupU}{} +\newcommand{\glogroupV}{} +\newcommand{\glogroupW}{} +\newcommand{\glogroupX}{} +\newcommand{\glogroupY}{} +\newcommand{\glogroupZ}{} +\define@key{glossnum}{glsnumformat}{\def\@glsnumformat{#1}} +\define@key{glossnum}{type}{\def\@glsnumtype{#1}} +\define@key{glossnum}{delimN}{\def\@delimN{#1}} +\define@key{glossnum}{delimR}{\def\@delimR{#1}} +\define@key{glossnum}{delimT}{\def\@delimT{#1}} +\define@key{glossnum}{gloskip}{\def\@gloskip{#1}} +\define@key{glossnum}{glodelim}{\def\@glodelim{#1}} +\providecommand{\ignore}[1]{} +\newcommand{\setglossary}[1]{% +\def\@glsnumformat{}% +\def\@glsnumtype{glossary}% +\def\@delimN{@dontchange@}% +\def\@delimR{@dontchange@}% +\def\@delimT{@dontchange@}% +\def\@gloskip{@dontchange@}% +\def\@glodelim{@dontchange@}% +\setkeys{glossnum}{#1}\relax +\@ifundefined{print\@glsnumtype}{% +\PackageError{glossary}{Invalid glossary type '\@glsnumtype'}{% +Glossary type '\@glsnumtype' has not been defined} +}{% +\ifthenelse{\equal{\@glsnumformat}{}}{}{% +\expandafter\xdef\csname glsX\@glsnumtype Xnumformat\endcsname{% +\noexpand\csname\@glsnumformat\noexpand\endcsname}% +\ifthenelse{\equal{\@glsnumformat}{ignore}}{% +\expandafter\xdef\csname @\@glsnumtype @delimN\endcsname{}% +\expandafter\xdef\csname @\@glsnumtype @delimR\endcsname{}% +}{}% +}% +\ifthenelse{\equal{\@delimN}{@dontchange@}}{}{% +\expandafter\xdef\csname @\@glsnumtype @delimN\endcsname{% +\@delimN}}% +\ifthenelse{\equal{\@delimR}{@dontchange@}}{}{% +\expandafter\xdef\csname @\@glsnumtype @delimR\endcsname{% +\@delimR}}% +\ifthenelse{\equal{\@delimT}{@dontchange@}}{}{% +\expandafter\xdef\csname @\@glsnumtype @delimT\endcsname{% +\@delimT}}% +\ifthenelse{\equal{\@gloskip}{@dontchange@}}{}{% +\expandafter\xdef\csname @\@glsnumtype @gloskip\endcsname{% +\@gloskip}}% +\ifthenelse{\equal{\@glodelim}{@dontchange@}}{}{% +\expandafter\xdef\csname @\@glsnumtype @glodelim\endcsname{% +\@glodelim}% +}% +}} +\newcommand{\@gls@glossary@inext}{gls} +\newcommand\printglossary[1][glossary]{% +\def\@glostype{#1}% +\@ifundefined{#1name}{% +\renewcommand{\@glossaryname}{\glossaryname}}{% +\renewcommand{\@glossaryname}{\csname #1name\endcsname}}% +\@ifundefined{short#1name}{% +\renewcommand{\@shortglossaryname}{\@glossaryname}}{% +\renewcommand{\@shortglossaryname}{\csname short#1name\endcsname}}% +\expandafter\let\expandafter\gls@number\csname gls@#1@number\endcsname +\@input@{\jobname.\csname @gls@#1@inext\endcsname}} +\providecommand{\glossaryname}{Glossary} +\newcommand{\shortglossaryname}{\glossaryname} +\newcommand{\entryname}{Notation} +\newcommand{\descriptionname}{Description} +\newcommand{\istfilename}{\jobname.ist} +\def\@glossaryname{\glossaryname} +\def\@shortglossaryname{\shortglossaryname} +\newcommand{\@istfilename}[1]{} +\providecommand{\glossarytitle}{% +\@ifundefined{chapter}% +{% +\ifgls@hypertoc +\phantomsection +\@glosaddtoc{section}% +\section*{\@glossaryname}\relax +\else +\section*{\@glossaryname}\relax +\ifgls@toc\@glosaddtoc{section}\fi +\fi}% +{% +\ifthenelse{\boolean{gls@section}}% +{% +\ifgls@hypertoc +\phantomsection +\@glosaddtoc{section}% +\section*{\@glossaryname}\relax +\else +\section*{\@glossaryname}\relax +\ifgls@toc\@glosaddtoc{section}\fi +\fi}% +{% +\ifgls@hypertoc +\@ifundefined{if@twoside}{% +\clearpage}{% +\if@twoside +\@ifundefined{cleardoublepage}{\clearpage}{\cleardoublepage}% +\else +\clearpage +\fi}% +\phantomsection +\@glosaddtoc{chapter}% +\fi +\chapter*{\@glossaryname}\relax +\ifgls@toc\@glosaddtoc{chapter}\fi}} +\markboth{\@shortglossaryname}{\@shortglossaryname}% +} +\@ifundefined{theglossary}{% +\newenvironment{theglossary}{}{}}{% +\PackageWarning{glossary}{Redefining 'theglossary' environment}} +\renewenvironment{theglossary}{% +\glossarytitle +\glossarypreamble\@bef@reglos}{\@ftergl@s\glossarypostamble} +\newcommand{\glossarypreamble}{} +\newcommand{\glossarypostamble}{} +\newcommand{\@glosaddtoc}[1]{% +\addcontentsline{toc}{#1}{\@shortglossaryname} +} +\newif\ifgloitemfirst +\newcommand{\@bef@reglos}{\global\gloitemfirsttrue\beforeglossary} +\newcommand{\@ftergl@s}{\afterglossary\global\gloitemfirstfalse} +\newcommand{\glossaryalignment}{\relax} +\newcommand{\@gls@align@glossary}{} +\newcommand{\glosstail}{% +\@ifundefined{@gls@tail@\@glostype}{% +\PackageError{glossary}{No glossary tail defined for glossary +type '\@glostype'}{}}{% +\csname @gls@tail@\@glostype\endcsname}} +\newcommand{\@gls@tail@glossary}{} +\newcommand{\afterglossary}{% +\@ifundefined{@gls@afterglos@\@glostype}{% +\PackageError{glossary}{No after glossary defined for glossary +type '\@glostype'}{}}{% +\csname @gls@afterglos@\@glostype\endcsname}} +\newcommand{\beforeglossary}{% +\@ifundefined{@gls@beforeglos@\@glostype}{% +\PackageError{glossary}{No before glossary defined for glossary +type '\@glostype'}{}}{% +\csname @gls@beforeglos@\@glostype\endcsname}} +\newcommand{\@gls@beforeglos@glossary}{} +\newcommand{\@gls@afterglos@glossary}{} +\newcommand{\@glossary@glodelim}{} +\newcommand{\@glossary@delimT}{} +\newcommand{\glsafternum}{} +\newcommand{\glsbeforenum}{} +\newcommand{\@glossary@gloskip}{} +\newcommand{\@glossary@gloitem}[1]{#1} +\newcommand{\gls@setlist}[1][glossary]{% +\expandafter\def\csname @gls@beforeglos@#1\endcsname{% +\begin{description}}% +\expandafter\def\csname @gls@afterglos@#1\endcsname{% +\end{description}}% +\expandafter\def\csname @#1@gloskip\endcsname{\indexspace}% +\ifthenelse{\equal{\csname gls@#1@number\endcsname}{none}}{% +\expandafter\def\csname @#1@glodelim\endcsname{}}{% +\expandafter\def\csname @#1@glodelim\endcsname{, }}% +\expandafter\def\csname @#1@gloitem\endcsname##1{\item[##1]}% +\expandafter\def\csname @#1@delimT\endcsname{} +} +\newcommand{\gls@setaltlist}[1][glossary]{% +\expandafter\def\csname @gls@beforeglos@#1\endcsname{% +\begin{description}}% +\expandafter\def\csname @gls@afterglos@#1\endcsname{% +\end{description}}% +\expandafter\def\csname @#1@gloskip\endcsname{\indexspace}% +\expandafter\def\csname @#1@gloitem\endcsname##1{% +\item[##1]\mbox{}\nopagebreak\par\nopagebreak}% +\expandafter\def\csname @#1@glodelim\endcsname{ }% +\expandafter\def\csname @#1@delimT\endcsname{} +} +\ifthenelse{\equal{\gls@style}{super}}{ +\IfFileExists{supertab.sty}{\RequirePackage{supertab}} +{\IfFileExists{supertabular.sty}{\RequirePackage{supertabular}} +{\PackageError{glossary}{Option "super" chosen, but can't find +"supertab" package}{If you want the "super" option, you have to have +the "supertab" package installed.}}}} +{\RequirePackage{longtable}} +\newlength{\descriptionwidth} +\setlength{\descriptionwidth}{0.6\linewidth} +\newcommand{\@glossaryheader}{% +\@ifundefined{glossaryheader}{\csname @\@glostype @header\endcsname} +{\glossaryheader}% +\@ifundefined{glossarysubheader}{}{\glossarysubheader}% +} +\newcommand{\gls@setheader}[1][glossary]{% +\ifthenelse{\equal{\gls@header}{none}}% +{% +\ifthenelse{\equal{\gls@border}{none}} +{\expandafter\def\csname @#1@header\endcsname{}% +}{\expandafter\def\csname @#1@header\endcsname{\hline}}% +}{% +\ifnum\gls@cols=2\relax +\ifthenelse{\equal{\gls@border}{none}} +{% +\expandafter\def\csname @#1@header\endcsname{% +\bfseries\entryname & \bfseries \descriptionname\\}}% +{% +\expandafter\def\csname @#1@header\endcsname{% +\hline\bfseries\entryname & \bfseries\descriptionname +\\\hline\hline}}% +\else +\ifthenelse{\equal{\gls@border}{none}} +{% +\expandafter\def\csname @#1@header\endcsname{% +\bfseries\entryname & \bfseries \descriptionname & +\bfseries \glspageheader \\}}% +{% +\expandafter\def\csname @#1@header\endcsname{% +\hline\bfseries\entryname &\bfseries\descriptionname & +\bfseries \glspageheader \\\hline\hline}}% +\fi +}} +\newcommand*{\glspageheader}{} +\newcommand{\gls@setalignment}[1][glossary]{% +\ifthenelse{\equal{\gls@border}{none}} +{ +\ifnum\gls@cols=2\relax +\expandafter\def\csname @gls@align@#1\endcsname{% +@{\hspace{\tabcolsep}\bfseries}lp{\descriptionwidth}} +\else +\expandafter\def\csname @gls@align@#1\endcsname{% +@{\hspace{\tabcolsep}\bfseries}lp{\descriptionwidth}l} +\fi +\expandafter\def\csname @gls@tail@#1\endcsname{}% +}{% +\ifnum\gls@cols=2\relax +\expandafter\def\csname @gls@align@#1\endcsname{% +|@{\hspace{\tabcolsep}\bfseries +}lp{\descriptionwidth}|} +\else +\expandafter\def\csname @gls@align@#1\endcsname{% +|@{\hspace{\tabcolsep}\bfseries +}lp{\descriptionwidth}l|} +\fi +\expandafter\def\csname @gls@tail@#1\endcsname{\hline}% +}% +\expandafter\def\csname @#1@delimT\endcsname{\\} +\ifnum\gls@cols=2\relax +\expandafter\def\csname @#1@gloskip\endcsname{& \\}% +\ifthenelse{\equal{\csname gls@#1@number\endcsname}{none}}{% +\expandafter\def\csname @#1@glodelim\endcsname{}}{% +\expandafter\def\csname @#1@glodelim\endcsname{, }}% +\else +\expandafter\def\csname @#1@gloskip\endcsname{& & \\}% +\expandafter\def\csname @#1@glodelim\endcsname{& }% +\fi +\expandafter\def\csname @#1@gloitem\endcsname##1{##1 &}% +} +\newcommand{\@st@rtglostable}[2]{% +\gls@ta={\begin{#1}}\gls@tb=\expandafter{#2}% +\edef\@st@rtglost@ble{\the\gls@ta{\the\gls@tb}} +\@st@rtglost@ble} +\newcommand{\gls@setsuper}[1][glossary]{% +\gls@setalignment[#1]% +\gls@setheader[#1]% +\expandafter\def\csname @gls@beforeglos@#1\endcsname{% +\tablehead{\@glossaryheader}\tabletail{\glosstail}% +\if\glossaryalignment\relax +\expandafter\let\expandafter\@glossaryalignment +\csname @gls@align@#1\endcsname +\else +\let\@glossaryalignment\glossaryalignment +\fi +\@st@rtglostable{supertabular}\@glossaryalignment} +\expandafter\def\csname @gls@afterglos@#1\endcsname{% +\end{supertabular}}% +} +\newcommand{\gls@setlong}[1][glossary]{% +\gls@setalignment[#1]% +\gls@setheader[#1]% +\expandafter\def\csname @gls@beforeglos@#1\endcsname{% +\if\relax\glossaryalignment +\expandafter\let\expandafter\@glossaryalignment +\csname @gls@align@#1\endcsname +\else +\let\@glossaryalignment\glossaryalignment +\fi +\@st@rtglostable{longtable}{\@glossaryalignment} +\@glossaryheader\endhead\glosstail\endfoot} +\expandafter\def\csname @gls@afterglos@#1\endcsname{% +\end{longtable}}% +} +\newcommand{\@setglossarystyle}[1][glossary]{% +\@ifundefined{gls@set\gls@style}{% +\PackageError{glossary}{Glossary style '\gls@style' undefined}{}}{% +\ifthenelse{\equal{\gls@number}{}}{}{% +\expandafter\edef\csname gls@#1@number\endcsname{\gls@number}% +\@gls@setnumbering[#1]{\gls@number}% +}% +\csname gls@set\gls@style\endcsname[#1]}} +\let\gls@number\gls@glossary@number +\@setglossarystyle +\define@key{glosstyle} +{style} +{\ifthenelse{\equal{#1}{list} \or \equal{#1}{altlist} +\or \equal{#1}{super} \or \equal{#1}{long}} +{\def\gls@style{#1}} +{\PackageError{glossary} +{Unknown glossary style '#1'} +{Available styles are: list, altlist, super and long}}} +\define@key{glosstyle} +{header}[plain]{\ifthenelse{\equal{#1}{none} \or \equal{#1}{plain}} +{\def\gls@header{#1}} +{\PackageError{glossary} +{Unknown glossary style '#1'} +{Available styles are: none and plain}}} +\define@key{glosstyle} +{border}[plain]{\ifthenelse{\equal{#1}{none} \or \equal{#1}{plain}} +{\def\gls@border{#1}} +{\PackageError{glossary} +{Unknown glossary border '#1'} +{Available styles are: none and plain}}} +\define@key{glosstyle}{cols}{\gls@cols=#1\relax +\ifthenelse{\gls@cols<2 \or \gls@cols>3} +{\PackageError{glossary} +{invalid number of columns} +{The cols option can only be 2 or 3}} +{}} +\define@key{glosstyle} +{number} +{\ifthenelse{\equal{#1}{none}} +{\def\gls@number{#1}} +{\@ifundefined{c@#1}{ +\PackageError{glossary} +{Unknown glossary number style '#1'} +{You may either specify "none" or the name of a counter, +e.g. "section"}\def\gls@number{page}}{\def\gls@number{#1}}}} +\newcommand{\setglossarystyle}[2][glossary]{% +\def\gls@number{}% +\setkeys{glosstyle}{#2}% +\@setglossarystyle[#1]% +} +\ifthenelse{\equal{\gls@glossary@number}{none} \and \gls@cols<3}{% +\renewcommand{\@glossary@glodelim}{}}{} +\newif\ifist +\let\noist=\istfalse +\if@filesw\isttrue\else\istfalse\fi +\newwrite\istfile +\catcode`\%11\relax +\newcommand{\writeist}{ +\protected@write\@auxout{}{\protect\@istfilename{\istfilename}} +\openout\istfile=\istfilename +\write\istfile{% makeindex style file created by LaTeX for document "\jobname" on \the\year-\the\month-\the\day} +\write\istfile{keyword "\string\\glossaryentry"} +\write\istfile{preamble "\string\\begin{theglossary}"} +\write\istfile{postamble "\string\n\string\\end{theglossary}\string\n"} +\write\istfile{group_skip "\string\\gloskip "} +\write\istfile{item_0 "\string\n\string\n\string\\gloitem "} +\write\istfile{delim_0 "\string\n\string\\glodelim "} +\write\istfile{page_compositor "\pagecompositor"} +\write\istfile{delim_n "\string\\delimN "} +\write\istfile{delim_r "\string\\delimR "} +\write\istfile{delim_t "\string\\delimT "} +\write\istfile{headings_flag 1} +\write\istfile{heading_prefix "\string\\glogroup"} +\write\istfile{symhead_positive "Symbols"} +\write\istfile{numhead_positive "Numbers"} +\closeout\istfile +} +\catcode`\%14\relax +\renewcommand{\makeglossary}{ +\newwrite\@glossaryfile +\immediate\openout\@glossaryfile=\jobname.glo +\renewcommand{\glossary}[1][]{\gdef\@glo@l@bel{##1}% +\@bsphack \begingroup \@wrglossary } +\typeout {Writing glossary file \jobname .glo } +\let \makeglossary \@empty +\ifist\writeist\fi +\noist} +\renewcommand{\glossary}[1][]{% +\@bsphack\begingroup\@sanitize\@index} +\newcommand{\newglossarytype}[4][glg]{ +\@ifundefined{#2}{% +\protected@write\@auxout{}{\@newglossarytype[#1]{#2}{#3}{#4}}% +\def\@glstype{#2}\def\@glsout{#3}\def\@glsin{#4}% +\expandafter\edef\csname gls@\@glstype @number\endcsname{% +\gls@glossary@number}% +\expandafter\gdef\csname glsX\@glstype Xnumformat\endcsname{% +\glsXglossaryXnumformat}% +\expandafter\gdef\csname @\@glstype @delimN\endcsname{% +\@glossary@delimN}% +\expandafter\gdef\csname @\@glstype @delimR\endcsname{% +\@glossary@delimR}% +\expandafter\gdef\csname @gls@\@glstype @inext\endcsname{#4}% +\expandafter\def\csname @gls@#2@type\endcsname{#4}% +\expandafter\edef\csname make\@glstype\endcsname{% +\noexpand\@m@kegl@ss{\@glstype}{\@glsout}} +\expandafter\edef\csname \@glstype\endcsname{% +\noexpand\@gl@ss@ary{\@glstype}} +\expandafter\edef\csname x\@glstype\endcsname{% +\noexpand\@Gl@ss@ary{\@glstype}} +\@namedef{print\@glstype}{% +\printglossary[#2]}% +}{\PackageError{glossary}{Command +\expandafter\string\csname #2\endcsname \space already defined}{% +You can't call your new glossary type '#2' because there already +exists a command with this name}}% +\@@n@wglostype} +\newcommand{\@@n@wglostype}[1][]{% +\setglossarystyle[\@glstype]{#1}} +\newcommand{\@newglossarytype}[4][glg]{} +\newcommand\@m@kegl@ss[2]{% +\expandafter\newwrite\csname @#1file\endcsname +\expandafter\immediate\expandafter +\openout\csname @#1file\endcsname=\jobname.#2 +\typeout {Writing #1 file \jobname .#2 } +\expandafter\let \csname make#1\endcsname \@empty +\ifist\writeist\fi +\expandafter\def\csname the#1num\endcsname{\thepage} +\noist +} +\newcommand\@gl@ss@ary[2][]{\@ifundefined{@#2file}{% +\@bsphack\begingroup\@sanitize \@index}{% +\gdef\@glo@l@bel{#1}% +\@bsphack \begingroup \@wrglossary[#2]}} +\newcommand{\@Gl@ss@ary}{% +\renewcommand{\@@wrglossary}[1]{% +\glossref{\@glo@l@bel}{##1}\renewcommand{\@@wrglossary}{}}% +\@gl@ss@ary} +\@onlypreamble{\newglossarytype} +\newcommand\@acrnmsh{} +\newcommand\@sacrnmsh{} +\newcommand\@acrnmln{} +\newcommand\@acrnmcmd{} +\newcommand\@acrnmgls{} +\newcommand\@acrnmins{} +\toksdef\@glo@tb=2 +\newcommand{\@acr@list}{} +\newcommand{\@acr@addtolist}[1]{\edef\@glo@ta{#1}% +\ifthenelse{\equal{\@acr@list}{}}{% +\edef\@acr@list{\@glo@ta}}{% +\@glo@tb=\expandafter{\@acr@list}% +\edef\@acr@list{\the\@glo@tb,\@glo@ta}}} +\newcommand{\@acronymnamefmt}{\glolong\ (\gloshort)} +\newcommand{\setacronymnamefmt}[1]{\def\@acronymnamefmt{#1}} +\newcommand{\@acronymdescfmt}{\glodesc} +\newcommand{\setacronymdescfmt}[1]{\def\@acronymdescfmt{#1}} +\newcommand{\acronymfont}[1]{#1} +\newcommand{\newacronym}[4][]{% +\ifthenelse{\equal{#1}{}}{\renewcommand\@acrnmcmd{#2}}{% +\renewcommand\@acrnmcmd{#1}} +\@ifundefined{\@acrnmcmd}{% +\expandafter\newcommand\csname\@acrnmcmd short\endcsname{% +#2\protect\glsxspace} +\expandafter\newcommand\csname\@acrnmcmd @nx@short\endcsname{#2} +\expandafter\newcommand\csname\@acrnmcmd long\endcsname{% +#3\protect\glsxspace} +\expandafter\newcommand\csname\@acrnmcmd @nx@long\endcsname{#3} +\def\@acrn@entry{#4}% +{% +\expandafter\@gls@getdescr\expandafter{\@acrn@entry}% +\let\glodesc\@glo@desc% +\def\glolong{#3}% +\@onelevel@sanitize\glolong +\def\gloshort{\noexpand\acronymfont{#2}}% +\@onelevel@sanitize\gloshort +\expandafter\protected@xdef\expandafter\@acrnamefmt{\@acronymnamefmt} +\expandafter\protected@xdef\expandafter\@acrdesc{\@acronymdescfmt} +}% +\@acr@addtolist{\@acrnmcmd} +\@glo@tb=\expandafter{\@acrn@entry}% +\protected@edef\@acr@glsentry{name={\@acrnamefmt},% +format=glsnumformat,sort={\@acrnmcmd},\the\@glo@tb,% +description={\@acrdesc}}% +\@glo@tb=\expandafter{\@acr@glsentry}% +\newboolean{\@acrnmcmd first}\setboolean{\@acrnmcmd first}{true} +\expandafter\protected@edef\csname \@acrnmcmd\endcsname{% +\noexpand\@ifstar{\csname @s@\@acrnmcmd\endcsname}{% +\csname @\@acrnmcmd\endcsname}} +\ifglshyperacronym % hyperlinks +\expandafter\protected@edef\csname @\@acrnmcmd\endcsname{% +\noexpand\ifthenelse{\noexpand\boolean{\@acrnmcmd first}}{% +\csname\@acrnmcmd @nx@long\endcsname\noexpand\@acrnmins\ +(\noexpand\xacronym{\the\@glo@tb}{% +\noexpand\acronymfont{\csname\@acrnmcmd @nx@short\endcsname}% +})\noexpand\unsetacronym{\@acrnmcmd}% +}{\noexpand\xacronym{\the\@glo@tb}{% +\noexpand\acronymfont{\csname\@acrnmcmd @nx@short\endcsname}% +\noexpand\@acrnmins}}\noexpand\glsxspace} +\expandafter\protected@edef\csname @s@\@acrnmcmd\endcsname{% +\noexpand\ifthenelse{\noexpand\boolean{\@acrnmcmd first}}{% +\noexpand\expandafter\noexpand\MakeUppercase +\csname\@acrnmcmd @nx@long\endcsname\noexpand\@acrnmins\ +(\noexpand\xacronym{\the\@glo@tb}{% +\noexpand\acronymfont{\csname\@acrnmcmd @nx@short\endcsname}% +})% +\noexpand\unsetacronym{\@acrnmcmd}}{% +\noexpand\xacronym{\the\@glo@tb}{% +\noexpand\acronymfont{\noexpand\expandafter\noexpand\MakeUppercase +\csname\@acrnmcmd @nx@short\endcsname}% +\noexpand\@acrnmins}}\noexpand\glsxspace} +\else % no hyperlinks +\expandafter\protected@edef\csname @\@acrnmcmd\endcsname{% +\noexpand\ifthenelse{\noexpand\boolean{\@acrnmcmd first}}{% +\csname\@acrnmcmd @nx@long\endcsname\noexpand\@acrnmins\ +(\noexpand\acronym{\the\@glo@tb}{% +\noexpand\acronymfont{\csname\@acrnmcmd @nx@short\endcsname}% +})\noexpand\unsetacronym{\@acrnmcmd}% +}{\noexpand\acronym{\the\@glo@tb}{% +\noexpand\acronymfont{\csname\@acrnmcmd @nx@short\endcsname}% +\noexpand\@acrnmins}}% +\noexpand\glsxspace} +\expandafter\protected@edef\csname @s@\@acrnmcmd\endcsname{% +\noexpand\ifthenelse{\noexpand\boolean{\@acrnmcmd first}}{% +\noexpand\expandafter +\noexpand\MakeUppercase +\csname\@acrnmcmd @nx@long\endcsname\noexpand\@acrnmins\ +(\noexpand\acronym{\the\@glo@tb}{% +\noexpand\acronymfont{\csname\@acrnmcmd @nx@short\endcsname}% +})% +\noexpand\unsetacronym{\@acrnmcmd}}{% +\noexpand\acronym{\the\@glo@tb}{% +\noexpand\acronymfont{\noexpand\expandafter\noexpand\MakeUppercase +\csname\@acrnmcmd @nx@short\endcsname}% +\noexpand\@acrnmins}}\noexpand\glsxspace} +\fi +}{% +\PackageError{glossary}{Command '\expandafter\string +\csname\@acrnmcmd\endcsname' already defined}{% +The command name specified by \string\newacronym already exists.}}} +\newcommand{\useacronym}{\@ifstar\@suseacronym\@useacronym} +\newcommand{\@suseacronym}[2][]{{\let\glsxspace\relax +\def\@acrnmins{#1}\csname @s@#2\endcsname}% +\setboolean{#2first}{false}} +\newcommand{\@useacronym}[2][]{{\let\glsxspace\relax +\def\@acrnmins{#1}\csname @#2\endcsname}% +\setboolean{#2first}{false}} +\newcommand{\acrln}{\@ifstar\@sacrln\@acrln} +\newcommand{\@acrln}[1]{\@ifundefined{#1long}{% +\PackageError{glossary}{Acronym '#1' has not been defined}{}}{% +\csname#1@nx@long\endcsname}} +\newcommand{\@sacrln}[1]{\@ifundefined{#1long}{% +\PackageError{glossary}{Acronym '#1' has not been defined}{}}{% +\expandafter\expandafter\expandafter +\MakeUppercase\csname#1@nx@long\endcsname}} +\newcommand{\acrsh}{\@ifstar\@sacrsh\@acrsh} +\newcommand{\@acrsh}[1]{\@ifundefined{#1short}{% +\PackageError{glossary}{Acronym '#1' has not been defined}{}}{% +\acronymfont{\csname#1@nx@short\endcsname}}} +\newcommand{\@sacrsh}[1]{\@ifundefined{#1short}{% +\PackageError{glossary}{Acronym '#1' has not been defined}{}}{% +\acronymfont{\expandafter\expandafter\expandafter +\MakeUppercase\csname#1@nx@short\endcsname}}} +\newcommand{\ifacronymfirstuse}[3]{% +\@ifundefined{if#1first}{% +\PackageError{glossary}{Acronym '#1' not defined}{}}{% +\ifthenelse{\boolean{#1first}}{#2}{#3}}} +\newcommand{\resetacronym}[1]{% +\@ifundefined{if#1first}{% +\PackageError{glossary}{Acronym '#1' not defined}{}}{% +\ifglsglobal +\expandafter\global\csname #1firsttrue\endcsname +\else +\setboolean{#1first}{true}% +\fi}} +\newcommand{\unsetacronym}[1]{% +\@ifundefined{if#1first}{% +\PackageError{glossary}{Acronym '#1' not defined}{}}{% +\ifglsglobal +\expandafter\global\csname #1firstfalse\endcsname +\else +\setboolean{#1first}{false}% +\fi}} +\newcommand{\resetallacronyms}{% +\@for\@acr:=\@acr@list\do{\resetacronym{\@acr}}} +\newcommand{\unsetallacronyms}{% +\@for\@acr:=\@acr@list\do{\unsetacronym{\@acr}}} +\ifglsacronym +\newglossarytype[alg]{acronym}{acr}{acn} +\providecommand{\acronymname}{List of Acronyms} +\else +\let\acronym=\glossary +\let\xacronym=\xglossary +\fi +\ifglshyper +\def\glshyper#1#2{\@glshyper{#1}#2\delimR \delimR \\} +\def\@glshyper#1#2\delimR #3\delimR #4\\{% +\ifx\\#3\\% +\@delimNhyper{#1}{#2}% +\else +\@ifundefined{hyperlink}{#2\delimR #3}{% +\hyperlink{#1.#2}{#2}\delimR \hyperlink{#1.#3}{#3}}% +\fi +} +\def\@delimNhyper#1#2{\@@delimNhyper{#1}#2\delimN \delimN\\} +\def\@@delimNhyper#1#2\delimN #3\delimN #4\\{% + \ifx\\#3\\% + \@ifundefined{hyperlink}{#2}{\hyperlink{#1.#2}{#2}}% + \else + \@ifundefined{hyperlink}{#2\delimN #3}{% +\hyperlink{#1.#2}{#2}\delimN \hyperlink{#1.#3}{#3}}% + \fi +} +\newcommand\glshyperpage[1]{\glshyper{page}{#1}} +\newcommand\glshypersection[1]{\glshyper{section}{#1}} +\@ifundefined{chapter} +{} +{\let\@gls@old@chapter\@chapter +\def\@chapter[#1]#2{\@gls@old@chapter[{#1}]{#2}% +\@ifundefined{hyperdef}{}{\hyperdef{section}{\thesection}{}}}} +\providecommand\hyperrm[2][\gls@number]{% +\textrm{\glshyper{#1}{#2}}} +\providecommand\hypersf[2][\gls@number]{% +\textsf{\glshyper{#1}{#2}}} +\providecommand\hypertt[2][\gls@number]{% +\texttt{\glshyper{#1}{#2}}} +\providecommand\hyperbf[2][\gls@number]{% +\textbf{\glshyper{#1}{#2}}} +\providecommand\hyperit[2][\gls@number]{% +\textit{\glshyper{#1}{#2}}} +\providecommand\hyperem[2][\gls@number]{% +\emph{\glshyper{#1}{#2}}} +\providecommand\hyperup[2][\gls@number]{% +\textup{\glshyper{#1}{#2}}} +\providecommand\hypersl[2][\gls@number]{% +\textsl{\glshyper{#1}{#2}}} +\providecommand\hypersc[2][\gls@number]{% +\textsc{\glshyper{#1}{#2}}} +\providecommand\hypermd[2][\gls@number]{% +\textmd{\glshyper{#1}{#2}}} +\else +\providecommand\hyperrm[2][]{\textrm{#2}} +\providecommand\hypersf[2][]{\textsf{#2}} +\providecommand\hypertt[2][]{\texttt{#2}} +\providecommand\hypermd[2][]{\textmd{#2}} +\providecommand\hyperbf[2][]{\textbf{#2}} +\providecommand\hyperit[2][]{\textit{#2}} +\providecommand\hypersl[2][]{\textsl{#2}} +\providecommand\hyperup[2][]{\textup{#2}} +\providecommand\hypersc[2][]{\textsc{#2}} +\providecommand\hyperem[2][]{\emph{#2}} +\fi +\endinput +%% +%% End of file `glossary.sty'.