%% gatech-thesis-gloss.sty - support code for creating glossaries
%%   depends on gloss.sty, so it is not included by default in the
%%   main gatech-thesis.cls (this cuts down on ``extra'' dependencies
%%
%% To use this package, all you need do is include
%%   \usepackage{gatech-thesis-gloss}
%%   \glossfiles{<glosary file, sans .bib suffix>}
%% in your preamble, and the glossary will be automatically generated
%% and included in the frontmatter.  Of course, you need actual
%% *entries* in the glossary file -- which must end in .bib -- and you
%% need actual citations to those entries within your bodytext, like this:
%%   \gloss{key}.
%% Note that \gloss{<key>} typesets the <word> from the <key> entry of 
%% the glossfile within the text, so there''s no need to do this:
%%   (BAD) word\gloss{keyforword}
%% Read the gloss.sty documentation for more info, but basically 
%% gatech-thesis-gloss.sty makes it simple:
%%    1. insert the two commands above into your preamble
%%    2. create a glossfile with your glossary definitions
%%    3. sprinkle \gloss{} citations in your text
%%    4. run ``bibtex'' on the <rootfile>.gls.aux file created
%%       after the first ``latex'' run.  (But don''t include the
%%       .aux extension.  So say ``bibtex <rootfile>.gls''  You
%%       can do this at the same time you run ``bibtex'' for your
%%       references.
%%    5. run ``latex'' twice more
%%
\NeedsTeXFormat{LaTeX2e}[1995/06/01] \ProvidesPackage{gatech-thesis-gloss}
          [2002/08/08  Glossary support for gatech-thesis.cls]
\@ifclassloaded{gatech-thesis}{}{
  PackageError{This style can only be used with the gatech-thesis class}
}
\RequirePackage[refpages]{gloss}

\newif\ifglossarypage
\glossarypagetrue% why use this package if you're not going to USE it?

\makegloss

\newcommand{\glossfiles}[1]%
  {\ifx\empty#1\empty\else\gdef\@glossfiles{#1}\fi}
\def\@glossfiles{}

\newcommand{\gtglossname}{}
\newcommand{\glscontentlinestring}{}
\newcommand{\glspdfbookmarkstring}{}

\newcommand{\setglossstring}[1]{%
  \renewcommand{\gtglossname}{#1}
  \renewcommand{\glossname}{\Makeuppercase{#1}}
  \renewcommand{\glscontentlinestring}{%
    \texorpdfstring{\Makeuppercase{#1}}{#1}
  }
  \renewcommand{\glspdfbookmarkstring}{#1}
}
% \setglossstring{List of Nomenclature}% ???
\setglossstring{Glossary}

\renewcommand{\glossheading}[1]{} % don't print subsection headings ("A", "B", ...)
\renewenvironment{glosslist}
  {\begin{singlespaced}\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}\end{singlespaced}}

\renewcommand\gls@section{%
  \if@twocolumn
    \@restonecoltrue\onecolumn
  \else
    \@restonecolfalse
  \fi
  \chapter*{\glossname}%
  \@mkboth{\scshape\MakeUppercase\glossname}%
          {\scshape\MakeUppercase\glossname}%
}
\renewenvironment{thegloss}
  {\gls@section
   \def\+##1+{}%
   \@beginparpenalty\@M}%  
  {\if@restonecol\twocolumn\fi%
  \stopglosslist}
  
\renewcommand{\do@glossarypage}{%
  \ifglossarypage
    \if@openright\cleardoublepage\else\clearpage\fi 
    % must clear page here, so that phantomsection\addcontentsline is on the correct page
    \settoheight{\gt@tmpa}{A}
    \set@gttocskip{\gt@tmpa}
    {\newlinestretch{1}
     \addvspace{\gt@tocentryskip@value}
     \phantomsection%
     \addcontentsline{toc}{chapter}{\glscontentlinestring}
     \printgloss{\@glossfiles}
    }%
    \newpage
  \fi
}
