mirror of
https://github.com/GaloisInc/cryptol.git
synced 2024-09-11 22:17:18 +03:00
980 lines
35 KiB
TeX
980 lines
35 KiB
TeX
%%
|
|
%% 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'.
|