% +--------------------------------------------------+ % | Typeset gloss.tex to get the documentation. | % +--------------------------------------------------+ % % (c) 1998 Jose Luis Diaz, 1999-2002 Jose Luis Diaz and Javier Bezos. % All Rights Reserved. % % This file is part of the gloss distribution release 1.5.2 % ----------------------------------------------------------- % % This file can be redistributed and/or modified under the terms % of the LaTeX Project Public License Distributed from CTAN % archives in directory macros/latex/base/lppl.txt; either % version 1 of the License, or any later version. \def\fileversion{1.5.2} \def\filedate{2002/07/26} \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{gloss}[\filedate\space\fileversion\space Gloss package] \edef\gls@a{\catcode`\string:=\the\catcode`:\relax} \catcode`:=12 \providecommand\glossname{Glossary} \newcommand\glosspage[1]{, p.\nobreakspace#1.} \newcommand\xglosspage{\glosspage} \DeclareOption{refpages}{% \def\endglossitem{% \@ifundefined{gls@thispage}% {.}% {\glosspage\gls@thispage}% \par}% \@namedef{endglossitem*}{% \@ifundefined{gls@thispage}% {}% {\xglosspage\gls@thispage}% \par}} % Declaring new glossaries % ~~~~~~~~~~~~~~~~~~~~~~~~ % 1:label 2:ext 3:title 4:bibstyle \newcommand\newgloss[4]{% \if@filesw \expandafter\newwrite\csname glsf@#1\endcsname \immediate\openout\csname glsf@#1\endcsname\jobname#2.aux % \PackageInfo{gloss}{Writing gloss file \jobname#2.aux}% \immediate\write\csname glsf@#1\endcsname{\string\bibstyle{#4}}% \fi \@namedef{glst@#1}{\def\gls@title{#3}}% \@namedef{glso@#1}{\edef\gls@base{\jobname#2}\edef\gls@name{#1}}} \newcommand\makegloss{% \newgloss{default}{.gls}{\glossname}{glsplain}} \def\glso@default{\PackageError{gloss}{Missing default glossary}% {You missed either \string\makegloss or a \string\newgloss with a `default' label}} % Two .aux related commands % ~~~~~~~~~~~~~~~~~~~~~~~~ % In both of them, #1 includes (already expanded) \gls@name :: \def\gls@cite{% \begingroup \catcode`:=12 \gls@cite@i} \def\gls@cite@i#1#2#3#4{% \endgroup \global\@namedef{gls@#1}{{#2}{#3}{#4}}} \def\gls@page{% \begingroup \catcode`:=12 \gls@page@i} \def\gls@page@i#1#2{% \endgroup \global\@namedef{glsp@#1}{#2}} % The \gloss command % ~~~~~~~~~~~~~~~~~~ % The command: \newcommand\gloss{\protect\gls@gloss@i} \def\gls@gloss@i{% \@bsphack \begingroup \catcode`\ =9 \@ifnextchar[{\gls@gloss@ii}{\gls@gloss@ii[]}} \def\gls@gloss@ii[#1]{% \endgroup \gls@gloss@iii{#1}} \def\gls@gloss@iii#1#2{% \begingroup \def\gls@a{\def\gls@a{,\penalty\@m\ }}% \glso@default \glso@word \@for\gls@b:=#1\do{% \@ifundefined{glso@\gls@b}% {\PackageError{gloss}{Unknown option}% {You have used an unknown option in \string\gloss}}% {\csname glso@\gls@b\endcsname}}% \@for\gls@b:=#2\do {\gls@a %%% 2001/08/29 Missing \edef\gls@b{\expandafter\@firstofone\gls@b\@empty}% \ifgls@cite %%% 2001/12/20 a few lines rewritten \@ifundefined{glspp@\gls@name::\gls@b}{\gls@refpagetrue}{}% \fi \ifgls@refpage \protected@write\@auxout{}% {\string\gls@page{\gls@name::\gls@b}{\noexpand\thepage}}% \global\@namedef{glspp@\gls@name::\gls@b}{}% \fi \if@filesw \immediate\write\csname glsf@\gls@name\endcsname {\string\citation{\gls@b}}% \fi \@ifundefined{gls@\gls@name::\gls@b}% {\ifgls@cite {\reset@font\bfseries[\gls@unlabel{#2}??]}% \fi \G@refundefinedtrue \PackageWarning{gloss}% {Term `\gls@b' on page \thepage\space not defined in glossary `\gls@name'}}% {\ifgls@cite {\edef\@pdfborder{\glosslinkborder}% \edef\@linkcolor{\glosslinkcolor}% \edef\@linkbordercolor{\glosslinkbordercolor}% \gls@hyperlink{\gls@name::\gls@b}{% \expandafter\expandafter\expandafter \gls@printtext\csname gls@\gls@name::\gls@b\endcsname}}% \fi}}% \expandafter \endgroup %2002/07/25 wrong tempswa replaced by gls@cite \ifgls@cite\else\expandafter\@esphack\fi} \def\gls@unlabel#1{% \expandafter\expandafter\expandafter \@gobble\expandafter\string\csname #1\endcsname} \AtBeginDocument{% \@ifpackageloaded{hyperref}% {\let\gls@hyperlink\hyperlink \let\gls@raisedlink\Hy@raisedlink}% {\let\gls@hyperlink\@secondoftwo \let\gls@raisedlink\@gobble \let\glosslinkborder\relax \let\glosslinkcolor\relax \let\glosslinkbordercolor\relax}} \def\glosslinkborder{\@pdfborder}% \def\glosslinkcolor{\@linkcolor}% \def\glosslinkbordercolor{\@linkbordercolor} % Options: \newif\ifgls@cite \gls@citetrue \def\glso@nocite{% \gls@citefalse \let\gls@a\@empty} \newif\ifgls@refpage % false by default \def\glso@refpage{\gls@refpagetrue} \newcommand\setglosstext[2]{% \@namedef{gls@prtext@#1}##1##2##3{{\def\gls@short{##3}#2}}% \@namedef{glso@#1}{% \def\gls@printtext{\csname gls@prtext@#1\endcsname}}} \setglosstext{short}{\ifglossshort*{#3}{}} \setglosstext{word}{#1} \setglosstext{Word}{#2} \setglosstext{long}{#1\ifglossshort*{ (#3)}{}} \setglosstext{Long}{#2\ifglossshort*{ (#3)}{}} \def\ifglossshort{% \@ifstar {\ifx\gls@short\@empty \PackageError{gloss}{Empty short}% {You cannot print a short form of a term lacking it}% {\reset@font\bfseries[??]}% \expandafter\@secondoftwo \else \expandafter\@firstoftwo \fi}% {\ifx\gls@short\@empty \expandafter\@secondoftwo \else \expandafter\@firstoftwo \fi}} % \newcommand\maingloss[2][word]{\textit{\gloss[refpage,#1]{#2}}} \newcommand\Gloss[1]{\gloss[Word]{#1}} \newcommand\onlygloss[1]{\gloss[nocite]{#1}} % Printing the gloss % ~~~~~~~~~~~~~~~~~~ % The whole list: \@ifundefined{chapter} {\def\gls@section{% \section*{\gls@title}% \@mkboth{\MakeUppercase\gls@title}{\MakeUppercase\gls@title}% \addcontentsline{toc}{section}{\gls@title}}}% {\def\gls@section{% \chapter*{\gls@title}% \@mkboth{\MakeUppercase\gls@title}{\MakeUppercase\gls@title}% \addcontentsline{toc}{chapter}{\gls@title}}} \newcommand\printgloss[2][default]{% \if@filesw \csname glso@#1\endcsname \immediate\write\csname glsf@\gls@name\endcsname {\string\bibdata{#2}}% \fi \csname glst@#1\endcsname \InputIfFileExists{\gls@base.bbl}% {}% {\typeout{No file \gls@base.bbl}}} \newenvironment{thegloss} {\gls@section \def\+##1+{}% \@beginparpenalty\@M}% {\stopglosslist} % Headings: \newcommand\setglossgroup[1]{\@namedef{gls@group@#1}} \newcommand\glossgroup[1]{% \expandafter\glossheading\csname gls@group@#1\endcsname} \newcommand\glossheading[1]{% \stopglosslist \subsection*{#1}} % The list itself: \newlength{\glosshang} \setlength{\glosshang}{2cm} \newenvironment{glosslist} {\begin{list}{\relax}{% \def\makelabel##1{##1\hfil}% \setlength{\labelsep}{1em}% \setlength{\labelwidth}{\glosshang}% \addtolength{\labelwidth}{-\labelsep}% \setlength{\itemindent}{0em}% \setlength{\leftmargin}{\glosshang}}} {\end{list}} % The gloss items: % 1:key 2:term 3:text 4:shorthand \newcommand\stopglosslist{} \newif\ifgls@list \newenvironment{glossitem}[4]% {\ifgls@list \expandafter\let\expandafter\gls@thispage % relax if undefined \csname glsp@\gls@name::#1\endcsname \item[% \gls@raisedlink{\hyper@anchorstart{\gls@name::#1}\hyper@anchorend}% \gls@label{#2}{#3}{#4}]% \begingroup \let\protect\noexpand \immediate\write\@auxout{% \string\gls@cite{\gls@name::#1}{#2}{#3}{#4}}% \endgroup \else \xdef\gls@a{\noexpand\begin{\@currenvir}}% \endgroup \begin{glosslist}% \gls@listtrue \def\stopglosslist{\end{glosslist}}% \gls@a{#1}{#2}{#3}{#4}% \fi \ignorespaces} {.\@@par} \expandafter\let\csname glossitem*\endcsname\glossitem \expandafter\let\csname endglossitem*\endcsname\@@par \newcommand\setglosslabel[1]{% \def\gls@label##1##2##3{\def\gls@short{##3}#1}} \setglosslabel{\sffamily\bfseries#1\ifglossshort{ (#3)}{}} % Language support \DeclareOption{basque}{% \def\glossname{Glosategi}% \def\glosspage#1{, orri \nobreakspace#1.}}%********* \DeclareOption{brazilian}{% \def\glossname{Gloss\'ario}% \def\glosspage#1{, p\'ag.\nobreakspace#1.}} \DeclareOption{catalan}{% \def\glossname{Glossari}% \def\glosspage#1{, p\`ag.\nobreakspace#1.}} \DeclareOption{danish}{% \def\glossname{Ordliste}% \def\glosspage#1{, s.\nobreakspace#1.}} \DeclareOption{dutch}{% \def\glossname{Verklarende woordenlijst}% \def\glosspage#1{, p.\nobreakspace#1.}} \DeclareOption{french}{% \def\glossname{Glossaire}% \def\glosspage#1{, p.\nobreakspace#1.}} \DeclareOption{german}{% \def\glossname{Glossar}% \def\glosspage#1{, S.\nobreakspace#1.}} \DeclareOption{italian}{% \def\glossname{Glossario}% \def\glosspage#1{, pag.\nobreakspace#1.}} \DeclareOption{polish}{% \def\glossname{S\l owniczek}% \def\glosspage#1{, str.\nobreakspace#1.}}% \DeclareOption{portuguese}{% \def\glossname{Gloss\'ario}% \def\glosspage#1{, p\'ag.\nobreakspace#1.}} \DeclareOption{russian}{% \def\glossname{% {\cyr\CYRG\cyrl\cyro\cyrs\cyrs\cyra\cyrr\cyri\cyrishrt}}% \def\glosspage#1{, {\cyr\cyrs.}\nobreakspace#1.}} \DeclareOption{spanish}{% \def\glossname{Glosario}% \def\glosspage#1{, p\'ag.\nobreakspace#1.}} \DeclareOption{swedish}{% \def\glossname{Ordlista}% \def\glosspage#1{, s.\nobreakspace#1.}}%******* \ProcessOptions* \gls@a % restores the colon catcode \endinput