%%
%% This is file `showlabels.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% showlabels.dtx  (with options: `package')
%% Showlabels: Style to display labels in the margin
%% This is the showlabels package
%%
%% This software is copyright, 1999, 2001, 2002, Norman Gray.
%%
%% This program is free software; you can redistribute it and/or
%% modify it under the terms of the GNU General Public License
%% as published by the Free Software Foundation; either version 2
%% of the License, or (at your option) any later version.
%%
%% This program is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%% GNU General Public License for more details.
%%
%% You should have received a copy of the GNU General Public License
%% along with this program; if not, write to the Free Software
%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
%%
%% Author: Norman Gray, norman@astro.gla.ac.uk.
%% Department of Physics and Astronomy, University of Glasgow, UK
%%
%% See the file LICENCE for a copy of the GPL.
%% You can also find an online copy at http://www.gnu.org/copyleft/gpl.html .
%%
%% $Id: showlabels.dtx,v 1.16 2002/04/21 22:01:05 norman Exp $
%%
\def\ParseRCSDate$#1: #2 #3 ${\def\SL@Date{#2}}
\ParseRCSDate$Date: 2002/04/21 22:01:05 $
\def\filename{showlabels}
\def\fileversion{1.4}  %%VERSION%%
\def\filedate{\SL@Date}
\def\docdate{\SL@Date}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{showlabels}[\filedate\space v\fileversion]
\typeout{Package: `showlabels' v\fileversion\space<\filedate>}
\newif\ifSL@AMS
\expandafter\ifx\csname maketag@@@\endcsname\relax
  \SL@AMSfalse
\else
  \SL@AMStrue
  \typeout{with amsmath equation tags}
\fi
\ifSL@AMS
  \let\SL@maketag@@@=\maketag@@@
  \def\maketag@@@#1{\SL@maketag@@@{#1}%
  \ifx\df@label\@empty
  \else
    \SL@eqnlrtext{\df@label}%
  \fi}
\else
  \let\SL@eqnnum=\@eqnnum
  \def\@eqnnum{\SL@eqnnum
  \expandafter\ifx\SL@labelname\relax
  \else
    \SL@eqnlrtext{\SL@labelname}%
    \global\def\SL@labelname{\relax}%
  \fi}
  \global\def\SL@labelname{\relax}
\fi
\def\showlabelfont{\small\tt}
\def\SL@gobblethree#1#2#3{}
\def\SL@prlabelname#1{%
\expandafter\expandafter\expandafter\SL@gobblethree
    \expandafter\string\csname r@#1\endcsname}
\let\SL@makecaption\@makecaption
\long\def\@makecaption#1#2{{\def\label##1{{\showlabelfont
\{\SL@prlabelname{##1}\}\space}\SL@label{##1}}%
\SL@makecaption{#1}{#2}}}
\def\showlabels#1{%
  \@temptokena=\expandafter{\csname #1\endcsname}
  \expandafter\edef\csname SL@init#1\endcsname{%
    \let\csname SL@orig#1\endcsname\the\@temptokena
    \let\the\@temptokena\csname SL@#1\endcsname}
  \AtBeginDocument{\csname SL@init#1\endcsname}%
  \expandafter\def\csname SL@#1\endcsname{\SL@showlabels{#1}}
}
\def\SL@showlabels#1#2{%
  \@bsphack
  \SL@setlabel{#2}\relax
  \ifhmode \spacefactor\@savsf \ifdim\@savsk>\z@ \hskip1sp \fi\fi
  \csname SL@orig#1\endcsname{#2}%
}
\def\SL@margtext#1{%
  \ifmmode
    \ifSL@AMS\else
      \xdef\SL@labelname{\SL@prlabelname{#1}}%
    \fi
  \else
    \setbox\@tempboxa=\vbox to 0pt{\vss
      \hbox to \hsize{\SL@lrtext{#1}}}%
    \dp\@tempboxa\z@
    \ifvmode
      \@tempdima=\prevdepth
      \nointerlineskip\box\@tempboxa\nobreak
      \prevdepth=\@tempdima
    \else
      \vadjust{\box\@tempboxa\nobreak}%
    \fi
  \fi
}
\def\SL@inlinetext#1{%
\ifmmode
  \ifSL@AMS\else
    \xdef\SL@labelname{\SL@prlabelname{#1}}%
  \fi
\else
  \setbox\@tempboxa=\hbox{\small #1}\dp\@tempboxa\z@
  \ifvmode
    \nointerlineskip\vbox to 0pt{\vss
      \hbox to \columnwidth{\hss \box\@tempboxa}}%
  \else
    \hbox to 0pt{\vbox to 0pt{\vss\box\@tempboxa\vskip 1.5ex}\hss}%
  \fi
\fi
}
\def\SL@margintext#1{{\showlabelfont\{\SL@prlabelname{#1}\}}}
\def\SL@righttext#1{\hfill\rlap{\quad\SL@margintext{#1}}}
\def\SL@lefttext #1{\llap{\SL@margintext{#1}\quad}\hfill}
\def\SL@alternatetext{%
  \if@outerlabels
    \ifodd\c@page
      \let\SL@next\SL@righttext\else
      \let\SL@next\SL@lefttext\fi
  \else
    \ifodd\c@page
      \let\SL@next\SL@lefttext\else
      \let\SL@next\SL@righttext\fi
  \fi
  \SL@next}
\def\SL@twocoltext{%
  \if@firstcolumn
    \let\SL@next\SL@lefttext
  \else
    \let\SL@next\SL@righttext
  \fi
  \SL@next}
\def\SL@eqnrighttext#1{\rlap{\quad\SL@margintext{#1}}}
\def\SL@eqnlefttext #1{\hbox to 0pt{\kern -\columnwidth
\llap{\SL@margintext{#1}\quad}\hss}}
\def\SL@eqnalternatetext{%
  \if@outerlabels
    \ifodd\c@page
      \let\SL@next\SL@eqnrighttext\else
      \let\SL@next\SL@eqnlefttext\fi
  \else
    \ifodd\c@page
      \let\SL@next\SL@eqnlefttext\else
      \let\SL@next\SL@eqnrighttext\fi
  \fi
  \SL@next}
\def\SL@eqntwocoltext{%
  \if@firstcolumn
    \let\SL@next\SL@eqnlefttext
  \else
    \let\SL@next\SL@eqnrighttext
  \fi
  \SL@next}
\newif\if@outerlabels
\@outerlabelstrue
\DeclareOption{outer}{\@outerlabelstrue}
\DeclareOption{inner}{\@outerlabelsfalse}
\newif\if@showlabellabel
\@showlabellabeltrue
\DeclareOption{nolabel}{\@showlabellabelfalse}
\DeclareOption{marginal}{\let\SL@setlabel\SL@margtext}
\DeclareOption{inline}{\let\SL@setlabel\SL@inlinetext}
\let\SL@setlabel\SL@margtext
\ProcessOptions
\if@twocolumn
  \let\SL@lrtext\SL@twocoltext
  \let\SL@eqnlrtext\SL@eqntwocoltext
\else
  \if@outerlabels
    \if@twoside
  \let\SL@lrtext\SL@alternatetext
  \let\SL@eqnlrtext\SL@eqnalternatetext
    \else
      \let\SL@lrtext\SL@righttext
      \let\SL@eqnlrtext\SL@eqnrighttext
    \fi
  \else
    \if@twoside
  \let\SL@lrtext\SL@alternatetext
  \let\SL@eqnlrtext\SL@eqnalternatetext
    \else
      \let\SL@lrtext\SL@lefttext
      \let\SL@eqnlrtext\SL@eqnlefttext
    \fi
  \fi
\fi
\if@showlabellabel
  \showlabels{label}
\fi
\endinput
%%
%% End of file `showlabels.sty'.
