%% %% This is file `sref.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% sref.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{sref}[2016/04/07 v1.2 Semantic Cross-References] \newif\ifextrefs\extrefsfalse \DeclareOption{extrefs}{\extrefstrue} \ProcessOptions \RequirePackage{metakeys} \RequirePackage{xspace} \RequirePackage{etoolbox} \addmetakey{sref}{linktext} \addmetakey{sref}{fallback} \addmetakey{sref}{pre} \addmetakey{sref}{post} \newcommand\sref[2][]{% \metasetkeys{sref}{#1}% \ifcsundef{sref@part}{% \sref@hlink[\sref@linktext]{#2}{\sref@fallback}{\sref@pre}{\sref@post}% }{% \sref@hlink[\sref@linktext]{\sref@part @#2}{\sref@fallback}{\sref@pre}{\sref@post}% }% \xspace% }% \newcommand\srefs[3][]{% \def\@test{#1}% \ifx\@test\@empty% \sref{#2} and \sref{#3}% \else% #1% \fi% }% \newcommand\srefl[3][]{% \def\@test{#1}% \ifx\@test\@empty% \sref{#2} to \sref{#3}% \else% #1% \fi% }% \newcommand\spageref[1]{% \ifcsundef{sref@part}{% \sref@pageref{#1}% }{% \sref@pageref{\sref@part @#1}% }% }% \newif\ifhref\hreffalse% \AtBeginDocument{% \@ifpackageloaded{hyperref}{% \hreftrue% }{% \hreffalse% }% }% \newcommand\sref@href@ifh[2]{% \ifhref% \href{#1}{#2}% \else% #2% \fi% }% \newcommand\sref@hlink@ifh[2]{% \ifhref% \hyperlink{#1}{#2}% \else% #2% \fi% }% \newcommand\sref@target@ifh[2]{% \ifhref% \hypertarget{#1}{#2}% \else% #2% \fi% }% \def\sref@target{% \ifx\sref@id\@empty% \relax% \else% \edef\@target{sref@\ifcsundef{sref@part}{}{\sref@part @}\sref@id @target}% \sref@target@ifh\@target{}% \fi% }% \newcommand\@sref@def[3]{\csgdef{sref@#1@#2}{#3}} \ifextrefs% \newwrite\refs@file% \else% \def\refs@file{\@auxout}% \fi% \newcommand\sref@def[3]{% %\@sref@def{#1}{#2}{#3}% \protected@write\refs@file{}{\string\@sref@def{#1}{#2}{#3}}% }% \addmetakey{srefaddidkey}{prefix} \newcommand\srefaddidkey[2][]{% \metasetkeys{srefaddidkey}{#1}% \@metakeys@ext@clear@keys{#2}{sref@id}{}% id cannot have a default \metakeys@ext@clear@keys{#2}{id}{}% \metakeys@ext@showkeys{#2}{id}% \define@key{#2}{id}{% \edef\sref@id{\srefaddidkey@prefix ##1}% %\expandafter\edef\csname #2@id\endcsname{\srefaddidkey@prefix ##1}% \csedef{#2@id}{\srefaddidkey@prefix ##1}% }% }% \newcommand\makeextrefs[1]{% \gdef\sref@part{#1}% \makeatletter% \IfFileExists{\jobname.refs}{\input{\jobname.refs}}{}% \immediate\openout\refs@file=\jobname.refs \makeatother% }% \newcommand\sref@label[2]{% \sref@def{\ifcsundef{sref@part}{}{\sref@part @}#2}{page}{\thepage}% \sref@def{\ifcsundef{sref@part}{}{\sref@part @}#2}{label}{#1}% }% \newcommand\sreflabel[2]{\sref@label{#1 \@currentlabel}{#2}} \newcommand\sref@label@id[1]{% \ifx\sref@id\@empty% \relax% \else% \sref@label{#1}{\sref@id}% \fi% }% \newcommand\sref@label@id@arg[2]{% \def\@@id{#2} \ifx\@@id\@empty% \relax% \else% \sref@label{#1}{\@@id}% \fi% }% \newcommand\sref@hlink[5][]{% \edef\@linktext{#1}% \edef\@fallback{#3}% \ifcsundef{sref@#2@label}{% \ifx\@fallback\@empty% warn about undefined links and show a substitute \protect\G@refundefinedtrue\@latex@warning{reference #2 undefined}% \ifx\@linktext\@empty% ?#2?% \else% \@linktext% \fi% \else% \protect\G@refundefinedtrue\@latex@warning{using fallback for undefined reference #2}% \@fallback% \fi }{% \edef\@link{#4\@nameuse{sref@#2@label}#5}% retrieve the reference label and prepost it \ifx\@linktext\@empty% \sref@hlink@ifh{sref@#2@target}{\@link}% \else% \sref@hlink@ifh{sref@#2@target}{\@linktext}% \fi% }% }% \newcommand\sref@page@label[1]{p.~{#1}} \newcommand\sref@pageref[1]{% \ifcsundef{sref@#1@page}{% \protect\G@refundefinedtrue\@latex@warning{reference #1 undefined}\sref@page@label{??}% }{% \sref@hlink@ifh{sref@#1@target}{\sref@page@label{\@nameuse{sref@#1@page}}}% }% }% \newcommand\sref@href[3][]{% \edef\@linktext{#1}% \ifcsundef{sref@#2@label}{% \protect\G@refundefinedtrue\@latex@warning{reference #2 undefined}??% }{% \ifcsundef{sref@#3@URI}{% \protect\G@refundefinedtrue\@latex@warning{external refs of type #3 undefined}??% }{% \edef\@uri{\@nameuse{sref@#3@URI}.pdf\#sref@#2@target}% \edef\@label{\ifx\@linktext\@empty\@nameuse{sref@#2@label}\else\@linktext\fi}% \sref@href@ifh\@uri\@label% }% }% }% \ifextrefs% \newcommand\extref[3][]{% \def\theextref{\sref@href[#1]{#2@#3}{#2}}% \csname doextref@#2\endcsname% }% \else% \newcommand\extref[3][]{\sref[#1]{#3}}% \fi% \ifextrefs% \newcommand\extpageref[3][]{% \def\theextref{\sref@pageref{#2@#3}}% \csname doextpageref@#2\endcsname% }% \else% \newcommand\extpageref[3][]{\spageref{#3}}% \fi% \newcommand\extrefstyle[2]{\csgdef{doextref@#1}{#2}}% \newcommand\extpagerefstyle[2]{\csgdef{doextpageref@#1}{#2}}% \newcommand\inputrefs[2]{% %\@namedef{sref@#1@URI}{#2}% \csdef{sref@#1@URI}{#2}% \extrefstyle{#1}{\theextref}\extpagerefstyle{#1}{\theextref}% \makeatletter% \IfFileExists{#2.refs}{% \message{Reading external references: #2.refs}\input{#2.refs}% }{% \PackageError{sref}{Reference file #2.refs does not exist}% {Maybe you have to run LaTeX on #2.tex first}}% \makeatother% }% \srefaddidkey{sequation}% \def\sref@sequation@heading{equation}% \newenvironment{sequation}[1][]{% \metasetkeys{sequation}{#1}% \ifx\sref@id\@empty% \begin{displaymath}% \else% no id, using equation* \begin{equation}% \sref@target\sref@label@id{\sref@sequation@heading~(\theequation)}% \fi% }{% \ifx\sref@id\@empty% \end{displaymath}% \else% \end{equation}% \fi% }% \newenvironment{seqnarray}[1][]{% \metasetkeys{sequation}{#1}% \begin{eqnarray*}% \sref@target% \sref@label@id{\sref@sequation@heading~(\theequation)}% }{% \end{eqnarray*}% }% \newcommand\withcite[2]{#2~\cite{#1}}% \newenvironment{withcitation}[1]{\def\citeit{\cite{#1}}}{}% \endinput %% %% End of file `sref.sty'.