diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:56:26 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:56:26 +0000 |
commit | 2d9f37d2aa1e4710a1deda96410f36e1a9b8a8b5 (patch) | |
tree | 7fe36d68b110e836b3881ed3cd5490cdffc913cf | |
parent | 20bd76007ff3d36984fa9c32d23a79df17e16323 (diff) |
gloss
git-svn-id: svn://tug.org/texlive/trunk@955 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/tex/latex/gloss/gloss.sty | 347 |
1 files changed, 347 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/gloss/gloss.sty b/Master/texmf-dist/tex/latex/gloss/gloss.sty new file mode 100644 index 00000000000..b9687767c02 --- /dev/null +++ b/Master/texmf-dist/tex/latex/gloss/gloss.sty @@ -0,0 +1,347 @@ +% +--------------------------------------------------+ +% | 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 |