%% %% This is file `glossary.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% glossary.dtx (with options: `package') %% Copyright (C) 2000 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}[2004/11/02 2.12 (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}\or\equal{#1}{page}\or\equal{#1}{section}} {\def\gls@number{#1}} {\PackageError{glossary} {Unknown glossary number style '#1'} {Available styles are: none, page and section}}} \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@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 \define@key{gloss}{hyper}[true]{\ifthenelse{\equal{#1}{true} \or \equal{#1}{false}} {\csname glshyper#1\endcsname} {\PackageError{glossary}{Glossary option 'hyper' is boolean} {The value of 'hyper' can only be set to 'true' or 'false'}}} \def\gls@style{long} \def\gls@header{none} \def\gls@border{none} \def\gls@number{page} \gls@cols=2\relax \gls@tocfalse \@ifundefined{hyperpage}{\glshyperfalse}{\glshypertrue} \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 options} {The 'list' and 'altlist' options don't have a header, border or number of columns option.}} {} \define@key{wrgloss}{name}{\def\@n@me{#1}} \define@key{wrgloss}{description}{\def\@descr{#1}} \define@key{wrgloss}{sort}{\def\@s@rt{#1}} \define@key{wrgloss}{format}{\def\@f@rm@t{#1}} \renewcommand{\@wrglossary}[1]{\relax \def\@n@me{}\def\@descr{}\def\@s@rt{}\def\@f@rm@t{}\relax \setkeys{wrgloss}{#1}\relax \ifthenelse{\equal{\@s@rt}{}} {\relax \ifthenelse{\equal{\@f@rm@t}{}} {\protected@write\@glossaryfile{}{\string\glossaryentry{\@n@me @{\@n@me}\@descr\string\relax|glsnumformat}{\theglossarynum}}} {\protected@write\@glossaryfile{}{\string\glossaryentry{\@n@me @{\@n@me}\@descr\string\relax|\@f@rm@t}{\theglossarynum}}}\relax }{\relax \ifthenelse{\equal{\@f@rm@t}{}} {\protected@write\@glossaryfile{}{\string\glossaryentry{\@s@rt @{\@n@me}\@descr\string\relax|glsnumformat}{\theglossarynum}}} {\protected@write\@glossaryfile{}{\string\glossaryentry{\@s@rt @{\@n@me}\@descr\string\relax|\@f@rm@t}{\theglossarynum}}}\relax }\relax \endgroup\@esphack } \ifthenelse{\equal{\gls@number}{page}}{ \newcommand{\theglossarynum}{\thepage} \newcommand{\pagecompositor}{-} \newcommand{\delimN}{, } \newcommand{\delimR}{--} \ifglshyper\newcommand{\glsnumformat}[1]{\hyperrm{#1}}\else\newcommand{\glsnumformat}[1]{#1}\fi} {\ifthenelse{\equal{\gls@number}{section}} {\newcommand{\theglossarynum}{\thesection} \newcommand{\pagecompositor}{.} \newcommand{\delimN}{, } \newcommand{\delimR}{--} \ifglshyper\newcommand{\glsnumformat}[1]{\hyperrm{#1}}\else\newcommand{\glsnumformat}[1]{#1}\fi} {\newcommand{\theglossarynum}{\thepage} \newcommand{\pagecompositor}{-} \newcommand{\delimN}{} \newcommand{\delimR}{} \newcommand{\glsnumformat}[1]{}}} \newcommand\printglossary{\@input@{\jobname.gls}} \newcommand{\glossaryname}{Glossary} \newcommand{\entryname}{Notation} \newcommand{\descriptionname}{Description} \newcommand{\istfilename}{\jobname.ist} \newenvironment{theglossary} {\@ifundefined{chapter} {\section*{\glossaryname}\ifgls@toc\addcontentsline{toc}{section}{\glossaryname}\fi} {\ifthenelse{\boolean{gls@section}}{\section*{\glossaryname}\ifgls@toc\addcontentsline{toc}{section}{\glossaryname}\fi} {\chapter*{\glossaryname}\ifgls@toc\addcontentsline{toc}{chapter}{\glossaryname}\fi}} \glossarypreamble\@bef@reglos} {\@ftergl@s\glossarypostamble} \newcommand{\glossarypreamble}{} \newcommand{\glossarypostamble}{} \newif\ifgloitemfirst \newcommand{\@bef@reglos}{\global\gloitemfirsttrue\beforeglossary} \newcommand{\@ftergl@s}{\afterglossary\global\gloitemfirstfalse} \ifthenelse{\equal{\gls@style}{list} \or \equal{\gls@style}{altlist}} { \newcommand{\beforeglossary}{\begin{description}} \newcommand{\afterglossary}{\end{description}} \newcommand{\gloskip}{\indexspace} \ifthenelse{\equal{\gls@style}{list}} {\newcommand{\gloitem}[1]{\item[#1]} \newcommand{\glodelim}{, }} {\newcommand{\gloitem}[1]{\item[#1]\mbox{}\par} \newcommand{\glodelim}{ }} }{ \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\textwidth} \ifthenelse{\equal{\gls@header}{none}} { \ifthenelse{\equal{\gls@border}{none}} {\newcommand{\glossaryheader}{}} {\newcommand{\glossaryheader}{\hline }} } { \ifnum\gls@cols=2\relax \ifthenelse{\equal{\gls@border}{none}} {\newcommand{\glossaryheader} {\bfseries\entryname & \bfseries \descriptionname\\}} {\newcommand{\glossaryheader} {\hline\bfseries\entryname & \bfseries\descriptionname \\\hline\hline}} \else \ifthenelse{\equal{\gls@border}{none}} {\newcommand{\glossaryheader} {\bfseries\entryname & \bfseries \descriptionname & \\}} {\newcommand{\glossaryheader} {\hline\bfseries\entryname &\bfseries\descriptionname & \\\hline\hline}} \fi } \ifthenelse{\equal{\gls@border}{none}} { \ifnum\gls@cols=2\relax \@ifundefined{newcolumntype}{\newcommand{\glossaryalignment}{@{\hspace{\tabcolsep}\bfseries}lp{\descriptionwidth}}}{ \newcolumntype{G}{@{\hspace{\tabcolsep}\bfseries}lp{\descriptionwidth}}} \else \@ifundefined{newcolumntype}{\newcommand{\glossaryalignment}{@{\hspace{\tabcolsep}\bfseries}lp{\descriptionwidth}l}}{ \newcolumntype{G}{@{\hspace{\tabcolsep}\bfseries}lp{\descriptionwidth}l}} \fi \ifthenelse{\equal{\gls@style}{super}}{ \newcommand{\afterglossary}{ \\\end{supertabular}} } { \newcommand{\afterglossary}{ \\\end{longtable}} } \newcommand{\glosstail}{} } { \ifnum\gls@cols=2\relax \@ifundefined{newcolumntype}{\newcommand{\glossaryalignment}{|@{\hspace{\tabcolsep}\bfseries}lp{\descriptionwidth}|}}{ \newcolumntype{G}{|@{\hspace{\tabcolsep}\bfseries}lp{\descriptionwidth}|}} \else \@ifundefined{newcolumntype}{\newcommand{\glossaryalignment}{|@{\hspace{\tabcolsep}\bfseries}lp{\descriptionwidth}l|}}{ \newcolumntype{G}{|@{\hspace{\tabcolsep}\bfseries}lp{\descriptionwidth}l|}} \fi \ifthenelse{\equal{\gls@style}{super}}{ \newcommand{\afterglossary}{ \\\hline\end{supertabular}} } { \newcommand{\afterglossary}{ \\\hline\end{longtable}} } \newcommand{\glosstail}{\hline} } \ifthenelse{\equal{\gls@style}{super}} { \@ifundefined{newcolumntype}{ \newcommand{\beforeglossary} {\tablehead{\glossaryheader}\tabletail{\glosstail} \begin{supertabular}{\glossaryalignment}}} {\newcommand{\beforeglossary} {\tablehead{\glossaryheader}\tabletail{\glosstail} \begin{supertabular}{G}}} } { \@ifundefined{newcolumntype}{\newcommand{\beforeglossary} {\begin{longtable}{\glossaryalignment} \glossaryheader\endhead\glosstail\endfoot}} {\newcommand{\beforeglossary} {\begin{longtable}{G} \glossaryheader\endhead\glosstail\endfoot}} } \ifnum\gls@cols=2\relax \newcommand{\gloskip}{\ifgloitemfirst\global\gloitemfirstfalse \else\\ \fi &} \newcommand{\glodelim}{, } \else \newcommand{\gloskip}{\ifgloitemfirst\global\gloitemfirstfalse \else\\ \fi & &} \newcommand{\glodelim}{& } \fi \newcommand{\gloitem}[1]{\ifgloitemfirst\global\gloitemfirstfalse #1 \else \\#1 \fi &} } \ifthenelse{\equal{\gls@number}{none} \and \gls@cols<3}{\renewcommand{\glodelim}{}}{} \newif\ifist \let\noist=\istfalse \if@filesw\isttrue\else\istfalse\fi \newwrite\istfile \catcode`\%11\relax \newcommand{\writeist}{ \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\\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 "} \closeout\istfile } \catcode`\%14\relax \renewcommand{\makeglossary}{ \newwrite\@glossaryfile \immediate\openout\@glossaryfile=\jobname.glo \def\glossary{\@bsphack \begingroup \@sanitize \@wrglossary } \typeout {Writing glossary file \jobname .glo } \let \makeglossary \@empty \ifist\writeist\fi \noist} \newcommand{\newglossarytype}[3]{ \@ifundefined{#1}{% \def\@glstype{#1}\def\@glsout{#2}\def\@glsin{#3}% \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 print\@glstype\endcsname{\noexpand\@prntgl@ss@ry{\@glsin}} }{\PackageError{glossary}{Command \expandafter\string\csname #1\endcsname \space already defined}{% You can't call your new glossary type '#1' because there already exists a command with this name}} } \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{\@wrgl@ss@ry}[2]{\relax \def\@n@me{}\def\@descr{}\def\@s@rt{}\def\@f@rm@t{}\relax \setkeys{wrgloss}{#2}\relax \ifthenelse{\equal{\@s@rt}{}} {\relax \ifthenelse{\equal{\@f@rm@t}{}} {\expandafter\protected@write\csname @#1file\endcsname{}{\string\glossaryentry{\@n@me @{\@n@me}\@descr\string\relax|glsnumformat}{\csname the#1num\endcsname}}} {\expandafter\protected@write\csname @#1file\endcsname{}{\string\glossaryentry{\@n@me @{\@n@me}\@descr\string\relax|\@f@rm@t}{\csname the#1num\endcsname}}}\relax }{\relax \ifthenelse{\equal{\@f@rm@t}{}} {\expandafter\protected@write\csname @#1file\endcsname{}{\string\glossaryentry{\@s@rt @{\@n@me}\@descr\string\relax|glsnumformat}{\csname the#1num\endcsname}}} {\expandafter\protected@write\csname @#1file\endcsname{}{\string\glossaryentry{\@s@rt @{\@n@me}\@descr\string\relax|\@f@rm@t}{\csname the#1num\endcsname}}}\relax }\relax \endgroup\@esphack } \newcommand\@gl@ss@ary[1]{\@ifundefined{@#1file}{\@bsphack\begingroup \@sanitize \@index}{\@bsphack \begingroup \@sanitize \@wrgl@ss@ry{#1}}} \newcommand\@prntgl@ss@ry[1]{\@input@{\jobname.#1}} \@onlypreamble{\newglossarytype} \newcommand\@acrnmsh{} \newcommand\@acrnmln{} \newcommand\@acrnmcmd{} \newcommand\@acrnmgls{} \newcommand\@acrnmins{} \newcommand{\glsprimaryfmt}[1]{\textbf{\glsnumformat{#1}}} \newcommand{\newacronym}[4][]{% \ifthenelse{\equal{#1}{}}{\renewcommand\@acrnmcmd{#2}}{\renewcommand\@acrnmcmd{#1}} \@ifundefined{\@acrnmcmd}{% \renewcommand\@acrnmsh{#2} \renewcommand\@acrnmln{#3} \expandafter\gdef\csname @\@acrnmcmd @glsentry\endcsname{{name={#3 (#2)},format=glsnumformat,#4}}% \newboolean{\@acrnmcmd first}\setboolean{\@acrnmcmd first}{true}% \expandafter\edef\csname @\@acrnmcmd\endcsname{\noexpand\ifthenelse{\noexpand\boolean{\@acrnmcmd first}}% {\@acrnmln\noexpand\@acrnmins\ (\@acrnmsh)\noexpand\expandafter\noexpand\glossary\expandafter\noexpand\csname @\@acrnmcmd @glsentry\endcsname% \noexpand\global\noexpand\let\expandafter\noexpand\csname if\@acrnmcmd first\endcsname=\noexpand\iffalse }% {\@acrnmsh\noexpand\@acrnmins\noexpand\expandafter\noexpand\glossary\expandafter\noexpand\csname @\@acrnmcmd @glsentry\endcsname}} \expandafter\edef\csname @s@\@acrnmcmd\endcsname{\noexpand\ifthenelse{\noexpand\boolean{\@acrnmcmd first}}% {\noexpand\MakeUppercase\@acrnmln\noexpand\@acrnmins\ (\@acrnmsh)\noexpand\expandafter\noexpand\glossary\expandafter\noexpand\csname @\@acrnmcmd @glsentry\endcsname% \noexpand\global\noexpand\let\expandafter\noexpand\csname if\@acrnmcmd first\endcsname=\noexpand\iffalse }% {\noexpand\MakeUppercase\@acrnmsh\noexpand\@acrnmins\noexpand\expandafter\noexpand\glossary\expandafter\noexpand\csname @\@acrnmcmd @glsentry\endcsname}} \expandafter\edef\csname\@acrnmcmd\endcsname{\noexpand\@ifstar\expandafter\noexpand\csname @s@\@acrnmcmd\endcsname \expandafter\noexpand\csname @\@acrnmcmd\endcsname}% } {\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][]{{\def\@acrnmins{#1}\csname @s@#2\endcsname}} \newcommand{\@useacronym}[2][]{{\def\@acrnmins{#1}\csname @#2\endcsname}} \ifglshyper \def\glshyperpage#1{\@glshyperpage#1\delimR \delimR \\} \def\@glshyperpage#1\delimR #2\delimR #3\\{% \ifx\\#2\\% \@delimNhyperpage{#1}% \else \@ifundefined{hyperlink}{#1\delimR #2}{\hyperlink{page.#1}{#1}\delimR \hyperlink{page.#2}{#2}}% \fi } \def\@delimNhyperpage#1{\@@delimNhyperpage#1\delimN \delimN\\} \def\@@delimNhyperpage#1\delimN #2\delimN #3\\{% \ifx\\#2\\% \@ifundefined{hyperlink}{#1}{\hyperlink{page.#1}{#1}}% \else \@ifundefined{hyperlink}{#1\delimN #2}{\hyperlink{page.#1}{#1}\delimN \hyperlink{page.#2}{#2}}% \fi } \def\glshypersection#1{\@glshypersection#1\delimR \delimR \\} \def\@glshypersection#1\delimR #2\delimR #3\\{% \ifx\\#2\\% \@delimNhypersection{#1}% \else \@ifundefined{hyperlink}{#1\delimR #2}{\hyperlink{section.#1}{#1}\delimR \hyperlink{section.#2}{#2}}% \fi } \def\@delimNhypersection#1{\@@delimNhypersection#1\delimN \delimN\\} \def\@@delimNhypersection#1\delimN #2\delimN #3\\{% \ifx\\#2\\% \@ifundefined{hyperlink}{#1}{\hyperlink{section.#1}{#1}}% \else \@ifundefined{hyperlink}{#1\delimN #2}{\hyperlink{section.#1}{#1}\delimN \hyperlink{section.#2}{#2}}% \fi } \ifthenelse{\equal{\gls@number}{section}}{ \ifglshyper \@ifundefined{chapter} {} {\let\@gls@old@chapter\@chapter \def\@chapter[#1]#2{\@gls@old@chapter[{#1}]{#2}\@ifundefined{hyperdef}{}{\hyperdef{section}{\thechapter.0}{}}}} \fi \providecommand\hyperrm[1]{\textrm{\glshypersection{#1}}} \providecommand\hypersf[1]{\textsf{\glshypersection{#1}}} \providecommand\hypertt[1]{\texttt{\glshypersection{#1}}} \providecommand\hyperbf[1]{\textbf{\glshypersection{#1}}} \providecommand\hyperit[1]{\textit{\glshypersection{#1}}} } { \providecommand\hyperrm[1]{\textrm{\glshyperpage{#1}}} \providecommand\hypersf[1]{\textsf{\glshyperpage{#1}}} \providecommand\hypertt[1]{\texttt{\glshyperpage{#1}}} \providecommand\hyperbf[1]{\textbf{\glshyperpage{#1}}} \providecommand\hyperit[1]{\textit{\glshyperpage{#1}}} } \else \providecommand\hyperrm[1]{\textsf{#1}} \providecommand\hypersf[1]{\textsf{#1}} \providecommand\hypertt[1]{\texttt{#1}} \providecommand\hyperbf[1]{\textbf{#1}} \providecommand\hyperit[1]{\textit{#1}} \fi \endinput %% %% End of file `glossary.sty'.