diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:56:27 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:56:27 +0000 |
commit | d7be44f05b01b25f76495386e6206249886b6496 (patch) | |
tree | 80ab44e0d40739def22ecf32fcb0fdc750711f81 /Master | |
parent | 2d9f37d2aa1e4710a1deda96410f36e1a9b8a8b5 (diff) |
glossary
git-svn-id: svn://tug.org/texlive/trunk@956 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/tex/latex/glossary/glossary.sty | 761 |
1 files changed, 761 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/glossary/glossary.sty b/Master/texmf-dist/tex/latex/glossary/glossary.sty new file mode 100644 index 00000000000..b1fa2e9fd8b --- /dev/null +++ b/Master/texmf-dist/tex/latex/glossary/glossary.sty @@ -0,0 +1,761 @@ +%% +%% This is file `glossary.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% glossary.dtx (with options: `glossary.sty,package') +%% Copyright (C) 2005 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}[2005/09/27 2.24 (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@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' canonly 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\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} +\newcommand{\gls@noxspace}[1]{{\let\glsxspace\relax#1}} +\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 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}{\gdef\@glo@n@me{#1}} +\define@key{wrgloss}{description}{\def\@descr{#1}} +\define@key{wrgloss}{sort}{\gdef\@s@rt{#1}} +\define@key{wrgloss}{format}{\def\@f@rm@t{#1}} +\newcommand{\@@wrglossary}{} +\newcommand{\@glo@l@bel}{} + +\renewcommand{\@wrglossary}[1]{\relax +\gdef\@glo@n@me{}\def\@descr{}\def\@s@rt{}\def\@f@rm@t{}\relax + \setkeys{wrgloss}{#1}\relax +\ifthenelse{\equal{\@s@rt}{}}{\gdef\@s@rt{\@glo@n@me}}{}% +\ifthenelse{\equal{\@glo@l@bel}{}}{\gdef\@glo@l@bel{GGG:\@s@rt}}{}% +\ifthenelse{\equal{\@f@rm@t}{}} + {\protected@write\@glossaryfile{}% + {\string\glossaryentry{\@s@rt @{% + \string\glosslabel{\@glo@l@bel}{\@glo@n@me}}\@descr + \string\relax|glsnumformat}{\theglossarynum}}} + {\protected@write\@glossaryfile{}% + {\string\glossaryentry{\@s@rt @{% + \string\glosslabel{\@glo@l@bel}{\@glo@n@me}}\@descr + \string\relax|\@f@rm@t}{\theglossarynum}}}\relax + \endgroup\@esphack +\@@wrglossary +} +\newcommand{\@gls@getn@me}[1]{\@bsphack\begingroup\@sanitize +\gdef\@glo@n@me{}\setkeys{wrgloss}{#1}\relax +\endgroup\@esphack} +\newcommand{\xglossary}{\renewcommand{\@@wrglossary}[1]{% +\glossref{\@glo@l@bel}{##1}\renewcommand{\@@wrglossary}{}}% +\glossary} +\newcommand*{\storeglosentry}[3][glossary]{% +\@ifundefined{glo@#2@entry}{% +\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]{% +\@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}% +\ifx#1\relax +\protected@edef\@glo@cmd{\expandafter\noexpand\csname \@glostype\endcsname{\csname glo@#2@entry\endcsname}}% +\else +\protected@edef\@glo@cmd{\expandafter\noexpand\csname \@glostype{\csname glo@#2@entry\endcsname,#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}% +\ifx#1\relax +\protected@edef\@glo@cmd{\expandafter\noexpand\csname \@glostype\endcsname{\csname glo@#2@entry\endcsname}}% +\else +\protected@edef\@glo@cmd{\expandafter\noexpand\csname \@glostype\endcsname{\csname glo@#2@entry\endcsname,#1}}% +\fi +\@glo@cmd{#3}% +}} + +\newcommand{\gls}[2][\relax]{\useGlosentry[#1]{#2}{\csname glo@#2@name\endcsname}} +\providecommand{\saveglosentry}[3][glossary]{% +\expandafter\def\csname glo@#2@type\endcsname{#1}% +\expandafter\def\csname glo@#2@entry\endcsname{name={#2},description={#3}} +} + +\ifthenelse{\equal{\gls@number}{page}}{ + \newcommand{\theglossarynum}{\thepage} + \newcommand{\pagecompositor}{-} + \newcommand{\@glossary@delimN}{, } + \newcommand{\@glossary@delimR}{--} + \ifglshyper + \newcommand{\glsXglossaryXnumformat}[1]{\hyperrm{#1}}% + \else + \newcommand{\glsXglossaryXnumformat}[1]{#1}\fi} + {\ifthenelse{\equal{\gls@number}{section}} + {\newcommand{\theglossarynum}{\thesection} + \newcommand{\pagecompositor}{.} + \newcommand{\@glossary@delimN}{, } + \newcommand{\@glossary@delimR}{--} + \ifglshyper + \newcommand{\glsXglossaryXnumformat}[1]{\hyperrm{#1}}% + \else + \newcommand{\glsXglossaryXnumformat}[1]{#1}% + \fi} + {\newcommand{\theglossarynum}{\thepage} + \newcommand{\pagecompositor}{-} + \newcommand{\@glossary@delimN}{} + \newcommand{\@glossary@delimR}{} + \newcommand{\glsXglossaryXnumformat}[1]{}}} + +\newcommand{\glsnumformat}[2][glossary]{% +\@ifundefined{glsX#1Xnumformat}{% +\PackageError{glossary}{Glossary type '#1' undefined}{}}{% +\csname glsX#1Xnumformat\endcsname{#2}}} + +\def\@glostype{glossary} +\newcommand{\delimN}{\csname @\@glostype @delimN\endcsname} +\newcommand{\delimR}{\csname @\@glostype @delimR\endcsname} +\newcommand{\glodelim}{\csname @\@glostype @glodelim\endcsname} + +\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}{glodelim}{\def\@glodelim{#1}} + +\providecommand{\ignore}[1]{} +\newcommand{\setglossary}[1]{% +\def\@glsnumformat{}% +\def\@glsnumtype{glossary}% +\def\@delimN{@dontchange@}% +\def\@delimR{@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{\@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}}% +\@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} +\providecommand{\glossarytitle}{% +\@ifundefined{chapter} +{\section*{\@glossaryname}\relax + \ifgls@toc\@glosaddtoc{section}\fi} +{\ifthenelse{\boolean{gls@section}} + {\section*{\@glossaryname}\relax + \ifgls@toc\@glosaddtoc{section}\fi} + {\ifgls@hypertoc\@ifundefined{if@twoside}{\clearpage}{% + \if@twoside\@ifundefined{cleardoublepage}{\cleardoublepage}{\clearpage}\else + \clearpage\fi}\phantomsection\@glosaddtoc{chapter}\fi\chapter*{\@glossaryname}\relax + \ifgls@toc\@glosaddtoc{chapter}\fi}} +\markboth{\@shortglossaryname}{\@shortglossaryname}% +} +\@ifundefined{theglossary}{ +\newenvironment{theglossary} +{\glossarytitle + \glossarypreamble\@bef@reglos} + {\@ftergl@s\glossarypostamble} +}{% +\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} + +\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{\@glossary@glodelim}{, }} + {\newcommand{\gloitem}[1]{\item[#1]\mbox{}\par} + \newcommand{\@glossary@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{\@glossary@glodelim}{, } +\else +\newcommand{\gloskip}{\ifgloitemfirst\global\gloitemfirstfalse \else\\ \fi & &} +\newcommand{\@glossary@glodelim}{& } +\fi +\newcommand{\gloitem}[1]{\ifgloitemfirst\global\gloitemfirstfalse #1 \else \\#1 \fi &} +} + +\ifthenelse{\equal{\gls@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}{ +\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 +\renewcommand{\glossary}[1][]{\gdef\@glo@l@bel{##1}% +\@bsphack \begingroup \@sanitize \@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]{} +\newcommand{\newglossarytype}[4][glg]{ +\@ifundefined{#2}{% +\protected@write\@auxout{}{\@newglossarytype[#1]{#2}{#3}{#4}}% +\def\@glstype{#2}\def\@glsout{#3}\def\@glsin{#4}% +\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 @\@glstype @glodelim\endcsname{\@glossary@glodelim}% +\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}} +\expandafter\edef\csname print\@glstype\endcsname{% +\noexpand\def\noexpand\@glostype{\@glstype}% +\noexpand\@ifundefined{\@glstype name}{% +\noexpand\def\noexpand\@glossaryname{\noexpand\glossaryname}% +}{% +\noexpand\def\noexpand\@glossaryname{% +\noexpand\csname\@glstype name\noexpand\endcsname}}% +\noexpand\@ifundefined{short\@glstype name}{% +\noexpand\def\noexpand\@shortglossaryname{\noexpand\@glossaryname}% +}{% +\noexpand\edef\noexpand\@shortglossaryname{% +\noexpand\csname short\@glstype name\noexpand\endcsname}}% +\noexpand\@prntgl@ss@ry{\@glsin}} +}{\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}} +} +\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 +\gdef\@glo@n@me{}\def\@descr{}\def\@s@rt{}\def\@f@rm@t{}\relax +\xdef\@pr@fix{\csname @gls@#1@type\endcsname}% +\ifthenelse{\equal{\@s@rt}{}}{\gdef\@s@rt{\@glo@n@me}}{}% +\ifthenelse{\equal{\@glo@l@bel}{}}{\gdef\@glo@l@bel{\@pr@fix:\@s@rt}}{}% +\setkeys{wrgloss}{#2}\relax + \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[#1]}{\csname the#1num\endcsname}}} + {\expandafter\protected@write\csname @#1file\endcsname{}{% +\string\glossaryentry{\@s@rt @{% +\string\glosslabel{\@glo@l@bel}{\@glo@n@me}}% +\@descr\string\relax|\@f@rm@t}{\csname the#1num\endcsname}}}\relax +\endgroup\@esphack +\@@wrgl@ss@ry +} + +\newcommand{\@@wrgl@ss@ry}{} +\newcommand\@gl@ss@ary[2][]{\@ifundefined{@#2file}{% +\@bsphack\begingroup \@sanitize \@index}{% +\gdef\@glo@l@bel{#1}% +\@bsphack \begingroup \@sanitize \@wrgl@ss@ry{#2}}} +\newcommand{\@Gl@ss@ary}{% +\renewcommand{\@@wrgl@ss@ry}[1]{% +\glossref{\@glo@l@bel}{##1}\renewcommand{\@@wrgl@ss@ry}{}}% +\@gl@ss@ary} +\newcommand\@prntgl@ss@ry[1]{\@input@{\jobname.#1}} +\@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{\glsprimaryfmt}[1]{\textbf{\glsnumformat{#1}}} +\newcommand{\@acronymnamefmt}{\glolong\ (\gloshort)} +\newcommand{\setacronymnamefmt}[1]{\def\@acronymnamefmt{#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 long\endcsname{#3\protect\glsxspace} +\def\@acrn@entry{#4} +{ +\def\glolong{#3}% +\def\gloshort{\noexpand\acronymfont{#2}}% +\expandafter\protected@xdef\expandafter\@acrnamefmt{\@acronymnamefmt} +} +\@acr@addtolist{\@acrnmcmd} +\protected@edef\@acr@glsentry{name=\@acrnamefmt,format=glsnumformat,sort=\@acrnmcmd,\@acrn@entry} +\newboolean{\@acrnmcmd first}\setboolean{\@acrnmcmd first}{true} +\expandafter\protected@edef\csname \@acrnmcmd\endcsname{\noexpand\@ifstar{\csname @s@\@acrnmcmd\endcsname}{\csname @\@acrnmcmd\endcsname}} +\ifglshyperacronym +\expandafter\protected@edef\csname @\@acrnmcmd\endcsname{% +\noexpand\ifthenelse{\noexpand\boolean{\@acrnmcmd first}}{% +\noexpand\gls@noxspace{\csname\@acrnmcmd long\endcsname\noexpand\@acrnmins\ +(\noexpand\xacronym{\@acr@glsentry}{% +\noexpand\acronymfont{\csname\@acrnmcmd short\endcsname}% +})}\noexpand\setboolean{\@acrnmcmd first}{false}% +}{\noexpand\xacronym{\@acr@glsentry}{% +\noexpand\acronymfont{\csname\@acrnmcmd short\endcsname}\noexpand\@acrnmins}}\noexpand\glsxspace} +\expandafter\protected@edef\csname @s@\@acrnmcmd\endcsname{% +\noexpand\ifthenelse{\noexpand\boolean{\@acrnmcmd first}}{% +\noexpand\gls@noxspace{\noexpand\expandafter\noexpand\MakeUppercase +\csname\@acrnmcmd long\endcsname\noexpand\@acrnmins\ +(\noexpand\xacronym{\@acr@glsentry}{% +\noexpand\acronymfont{\csname\@acrnmcmd short\endcsname}% +})}% +\noexpand\setboolean{\@acrnmcmd first}{false}}{% +\noexpand\xacronym{\@acr@glsentry}{% +\noexpand\acronymfont{\noexpand\expandafter\noexpand\MakeUppercase +\csname\@acrnmcmd short\endcsname}% +\noexpand\@acrnmins}}\noexpand\glsxspace} +\else +\expandafter\protected@edef\csname @\@acrnmcmd\endcsname{% +\noexpand\ifthenelse{\noexpand\boolean{\@acrnmcmd first}}{% +\noexpand\gls@noxspace{\csname\@acrnmcmd long\endcsname\ +(\noexpand\acronym{\@acr@glsentry}{% +\noexpand\acronymfont{\csname\@acrnmcmd short\endcsname}% +})}\noexpand\setboolean{\@acrnmcmd first}{false}% +}{\noexpand\acronym{\@acr@glsentry}{% +\noexpand\acronymfont{\csname\@acrnmcmd short\endcsname}}}% +\noexpand\glsxspace} +\expandafter\protected@edef\csname @s@\@acrnmcmd\endcsname{% +\noexpand\ifthenelse{\noexpand\boolean{\@acrnmcmd first}}{% +\noexpand\gls@noxspace{\noexpand\expandafter +\noexpand\MakeUppercase +\csname\@acrnmcmd long\endcsname\noexpand\@acrnmins\ +(\noexpand\acronym{\@acr@glsentry}{% +\noexpand\acronymfont{\csname\@acrnmcmd short\endcsname}% +})}% +\noexpand\setboolean{\@acrnmcmd first}{false}}{% +\noexpand\acronym{\@acr@glsentry}{% +\noexpand\acronymfont{\noexpand\expandafter\noexpand\MakeUppercase +\csname\@acrnmcmd 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}{}}{% +\gls@noxspace{\csname#1long\endcsname}}} + +\newcommand{\@sacrln}[1]{\@ifundefined{#1long}{% +\PackageError{glossary}{Acronym '#1' has not been defined}{}}{% +\gls@noxspace{\expandafter\expandafter\expandafter +\MakeUppercase\csname#1long\endcsname}}} + +\newcommand{\acrsh}{\@ifstar\@sacrsh\@acrsh} + +\newcommand{\@acrsh}[1]{\@ifundefined{#1short}{% +\PackageError{glossary}{Acronym '#1' has not been defined}{}}{\acronymfont{\gls@noxspace{\csname#1short\endcsname}}}} + +\newcommand{\@sacrsh}[1]{\@ifundefined{#1short}{% +\PackageError{glossary}{Acronym '#1' has not been defined}{}}{% +\acronymfont{\gls@noxspace{\expandafter\expandafter\expandafter\MakeUppercase\csname#1short\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}{}}{% +\setboolean{#1first}{true}}} + +\newcommand{\resetallacronyms}{% +\@for\@acr:=\@acr@list\do{\resetacronym{\@acr}}} +\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 +\ifglsacronym +\newglossarytype[alg]{acronym}{acr}{acn} +\newcommand{\acronymname}{List of Acronyms} +\else +\let\acronym=\glossary +\let\xacronym=\xglossary +\fi +\endinput +%% +%% End of file `glossary.sty'. |