%% %% This is file `typedref.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% typedref.dtx (with options: `package') %% %% Package `typedref' for use with LaTeX2e %% Copyright (C) 2001 Gregory Seidman (email `gseidman@acm.org'). %% All rights reserved. You may not alter the contents of this file unless %% you also change its name. Please make a bona fide attempt to submit %% patches to me before changing the name of this file. %% %% Modified from package `saferef' %% Copyright (C) 1997 James Ashton (email `James.Ashton@anu.edu.au'). %% All rights reserved. You may not alter the contents of this file unless %% you also change its name. %% %% Modifications include proper handling of appendices which are not %% chapters (i.e. in a document class other than book) and compatibility %% with hyperref. %% \def\fileversion{1.0} \def\filedate{2001/9/10} \def\docdate{2001/9/10} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{typedref}[\filedate\space\fileversion\space A Safer Cross-referencing package] \typeout{Package `typedref' \fileversion\space<\filedate>} \AtBeginDocument{% \let\sr@eqnarray=\eqnarray% \def\eqnarray{\def\sr@name{\sr@eq}\sr@eqnarray}% \let\sr@label=\label% \def\label#1{\sr@label{\sr@name:#1}}% \let\ltx@label=\label% \let\sr@ref=\ref% \def\ref{\@latex@error{\string\ref\space disallowed with the saferefa package.}}% } \@ifpackageloaded{hyperref}{% \let\sr@refstepcounter=\H@refstepcounter% \def\H@refstepcounter#1{% \csname sr@nm@#1\endcsname% \sr@refstepcounter{#1}}% }{% \let\sr@refstepcounter=\refstepcounter% \def\refstepcounter#1{% \csname sr@nm@#1\endcsname% \sr@refstepcounter{#1}}% } \def\sr@refs<#1,#2>#3#4#5{% \ifx\relax#2\relax #4~\sr@ref{#3:#1}% \else% #5 \sr@ref{#3:#1}% \sr@rest<#2>{#3}% \fi% } \def\sr@rest<#1,#2>#3{% \ifx\relax#2\relax \ and~\sr@ref{#3:#1}% \else% , \sr@ref{#3:#1}% \sr@rest<#2>{#3}% \fi% } \ifx\eqref\@undefined \def\eqref#1{\textup{\hbox{\m@th\normalfont(\ignorespaces\ref{#1}\unskip\@@italiccorr)}}} \fi \let\sr@eqref=\eqref \def\eqref#1{{\let\ref=\sr@ref\sr@eqref{equation:#1}}} \def\refname#1#2#3{% \expandafter\def\csname#1ref\endcsname##1{\sr@refs<##1,>{#1}{#2}{#3}}} \def\sr@refname#1#2#3{% \expandafter\def\csname sr@nm@#1\endcsname{\xdef\sr@name{#1}}% \refname{#1}{#2}{#3}} \sr@refname{appendix}{Appendix}{Appendices} \sr@refname{chapter}{Chapter}{Chapters} \sr@refname{figure}{Figure}{Figures} \sr@refname{footnote}{Footnote}{Footnotes} \sr@refname{item}{Item}{Items} \sr@refname{paragraph}{Paragraph}{Paragraphs} \sr@refname{part}{Part}{Parts} \sr@refname{section}{Section}{Sections} \sr@refname{table}{Table}{Tables} \sr@refname{equation}{Equation}{Equations} \def\sr@nm@subsection{\xdef\sr@name{section}} \def\sr@nm@subsubsection{\xdef\sr@name{section}} \def\sr@nm@subparagraph{\xdef\sr@name{paragraph}} \def\sr@nm@mpfootnote{\xdef\sr@name{footnote}} \let\sr@appendix=\appendix \@ifundefined{chapter}{ \def\appendix{\sr@appendix\def\sr@nm@section{\xdef\sr@name{appendix}}} }{ \def\appendix{\sr@appendix\def\sr@nm@chapter{\xdef\sr@name{appendix}}} } \def\sr@nm@enumi{\xdef\sr@name{\sr@item}} \def\sr@nm@enumii{\xdef\sr@name{\sr@item}} \def\sr@nm@enumiii{\xdef\sr@name{\sr@item}} \def\sr@nm@enumiv{\xdef\sr@name{\sr@item}} \def\itemname#1{\def\sr@item{#1}} \itemname{item} \def\eqname#1{\def\sr@eq{#1}} \eqname{equation} \let\sr@newtheorem=\newtheorem \def\newtheorem{\@ifstar{\sr@xnthm*}{\sr@xnthm\relax}} \def\sr@oparg#1[#2]{\@ifnextchar[{#1}{#1[#2]}} \def\sr@unthm#1#2{\sr@newtheorem*{#1}{#2}} \def\sr@xnthm#1#2{% \let\sr@t\relax \ifx *#1% Handle the amsthm starred form of \newtheorem \def\sr@t{\sr@unthm{#2}}% \else \def\sr@t{\sr@oparg{\sr@ynthm{#2}}[]}% \fi \sr@t } \def\sr@ynthm#1[#2]#3#4{% \ifx\relax#2\relax \def\sr@t{\sr@oparg{\sr@xthm{#1}{#3}{#4}}[]}% \expandafter\def\csname sr@nm@#1\endcsname{\xdef\sr@name{#1}} \else \let\sr@t=\relax \sr@newtheorem{#1}[#2]{#3} \refname{#1}{#3}{#4} \expandafter\let\expandafter\sr@th\csname #1\endcsname \expandafter\let\csname sr@th@#1\endcsname\sr@th \let\sr@th\relax \expandafter\def\csname #1\endcsname{ \expandafter\def\csname sr@nm@#2\endcsname{\xdef\sr@name{#1}} \csname sr@th@#1\endcsname } \fi \sr@t } \def\sr@xthm#1#2#3[#4]{ \ifx\relax#4\relax \sr@newtheorem{#1}{#2} \refname{#1}{#2}{#3} \else \sr@newtheorem{#1}{#2}[#4] \refname{#1}{#2}{#3} \fi } \endinput %% %% End of file `typedref.sty'.