From ddfe3a4eaf95167482e923d4da3de2917a7dbfbb Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 7 Apr 2016 20:49:10 +0000 Subject: stex (7apr16) git-svn-id: svn://tug.org/texlive/trunk@40320 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/stex/sref/sref.sty | 306 +++++++++++++++------ .../texmf-dist/tex/latex/stex/sref/sref.sty.ltxml | 56 ---- 2 files changed, 219 insertions(+), 143 deletions(-) delete mode 100644 Master/texmf-dist/tex/latex/stex/sref/sref.sty.ltxml (limited to 'Master/texmf-dist/tex/latex/stex/sref') diff --git a/Master/texmf-dist/tex/latex/stex/sref/sref.sty b/Master/texmf-dist/tex/latex/stex/sref/sref.sty index 1cc4034f812..ca35ac7dd99 100644 --- a/Master/texmf-dist/tex/latex/stex/sref/sref.sty +++ b/Master/texmf-dist/tex/latex/stex/sref/sref.sty @@ -7,99 +7,231 @@ %% sref.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{sref}[2012/01/28 v1.0 Semantic Cross-References] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} +\ProvidesPackage{sref}[2016/04/06 v1.2 Semantic Cross-References] \newif\ifextrefs\extrefsfalse \DeclareOption{extrefs}{\extrefstrue} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{metakeys}} \ProcessOptions \RequirePackage{metakeys} -\newcommand{\sref}[2][]{% -\@ifundefined{sref@part}{\sref@hlink[#1]{#2}}{\sref@hlink[#1]{\sref@part @#2}}} -\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]{% -\@ifundefined{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\else% -\edef\@target{sref@\@ifundefined{sref@part}{}{\sref@part @}\sref@id @target} -\sref@target@ifh\@target{}\fi} -\newcommand\@sref@def[3]{\expandafter\gdef\csname sref@#1@#2\endcsname{#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}}} +\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}}} -\newcommand\makeextrefs[1]{\gdef\sref@part{#1}% -\makeatletter -\IfFileExists{\jobname.refs}{\input{\jobname.refs}}{}% -\immediate\openout\refs@file=\jobname.refs -\makeatother} +\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{\@ifundefined{sref@part}{}{\sref@part @}#2}{page}{\thepage}% -\sref@def{\@ifundefined{sref@part}{}{\sref@part @}#2}{label}{#1}} -\newcommand\sreflabel[2]{\message{sreflabel: #1, #2}\sref@label{#1 \@currentlabel}{#2}} -\newcommand\sref@label@id[1]{\ifx\sref@id\@empty\else\sref@label{#1}{\sref@id}\fi} -\newcommand{\sref@hlink}[2][]{\def\@test{#1}% -\@ifundefined{sref@#2@label}% -{\protect\G@refundefinedtrue\@latex@warning{reference #2 undefined}??}% -{\sref@hlink@ifh{sref@#2@target}{\ifx\@test\@empty\@nameuse{sref@#2@label}\else #1\fi}}} -\newcommand{\sref@page@label}[1]{p.~{#1}} -\newcommand{\sref@pageref}[1]{\@ifundefined{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][]{\def\@test{#1}% -\@ifundefined{sref@#2@label}% -{\protect\G@refundefinedtrue\@latex@warning{reference #2 undefined}??}% -{\@ifundefined{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\@test\@empty\@nameuse{sref@#2@label}\else #1\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[#1]{#2@#3}{#2}}% -\csname doextpageref@#2\endcsname} -\else -\newcommand{\extpageref}[3][]{\spageref[#1]{#3}} -\fi -\newcommand\extrefstyle[2]{\expandafter\gdef\csname doextref@#1\endcsname{#2}} -\newcommand\extpagerefstyle[2]{\expandafter\gdef\csname doextpageref@#1\endcsname{#2}} -\newcommand{\inputrefs}[2]{% -\@namedef{sref@#1@URI}{#2} -\makeatletter% -\IfFileExists{#2.refs}{\input{#2.refs}} - {\PackageError{sref}{Reference file #1.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}}}{} + \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@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'. diff --git a/Master/texmf-dist/tex/latex/stex/sref/sref.sty.ltxml b/Master/texmf-dist/tex/latex/stex/sref/sref.sty.ltxml deleted file mode 100644 index 5d888c6715a..00000000000 --- a/Master/texmf-dist/tex/latex/stex/sref/sref.sty.ltxml +++ /dev/null @@ -1,56 +0,0 @@ -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -DeclareOption('extrefs',''); -RequirePackage('metakeys'); -sub withhash {'#';} -DefConstructor('\sref[]{}', - ""); -DefConstructor('\srefs[]{}', - ""); -DefConstructor('\srefl[]{}', - ""); -DefConstructor('\spageref{}', - ""); -DefConstructor('\makeextrefs{}',''); -DefConstructor('\extref[]{}{}', - ""); -DefConstructor('\theextref',''); -DefConstructor('\extpageref[]{}{}', - ""); -DefConstructor('\theextref',''); -DefConstructor('\extrefstyle{}{}',""); -DefConstructor('\extrefstyle{}{}',""); -DefConstructor('\inputrefs{}{}',''); -DefEnvironment('{sequation} OptionalKeyVals', - "" - . "" - . "#body" - . "" - . "", - mode=>'display_math', - properties=> sub { RefStepCounter('equation') }, - locked=>1); -DefMacro('\seqnarray OptionalKeyVals','\begin{eqnarray*}'); -DefMacro('\endseqnarray','\end{eqnarray*}'); -DefMacro('\withcite{}{}','\begin{withcitation}{#1}#2\citeit\end{withcitation}'); -DefConstructor('\citeit'," ", -afterConstruct => sub { - my ($document,$whatsit) = @_; - # LibXML acrobatics, since we can't talk about the xml:id prior to construction's end - # (and please do correct me if this is inaccurate) - my $node = $document->getNode; - my ($citenode) = $document->findnodes('preceding-sibling::omdoc:citation',$node); - my ($phrase_parent) = $document->findnodes('ancestor::ltx:text[@xml:id]',$node); - return unless (defined $phrase_parent) && (defined $citenode); - my $id = $phrase_parent->getAttribute('xml:id'); - my $refs = $phrase_parent->getAttribute('citeit-refs'); - $phrase_parent->removeAttribute('citeit-refs'); - $citenode->setAttribute('for',$id); - $citenode->setAttribute('refs',$refs); -});#$ -DefEnvironment('{withcitation}{}', - "#body"); -1; -- cgit v1.2.3