diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/hyperref/nameref.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/hyperref/nameref.dtx | 155 |
1 files changed, 134 insertions, 21 deletions
diff --git a/Master/texmf-dist/source/latex/hyperref/nameref.dtx b/Master/texmf-dist/source/latex/hyperref/nameref.dtx index df0f7049fc6..7aa3251e3c5 100644 --- a/Master/texmf-dist/source/latex/hyperref/nameref.dtx +++ b/Master/texmf-dist/source/latex/hyperref/nameref.dtx @@ -2,7 +2,7 @@ %% File: nameref.dtx %% Copyright (C) 1995-1999 Sebastian Rahtz %% 2000 Sebastian Rahtz, Heiko Oberdiek -%% 2001-2010 Heiko Oberdiek +%% 2001-2012 Heiko Oberdiek %% %% This file is part of the `Hyperref Bundle'. %% ------------------------------------------- @@ -30,9 +30,9 @@ %<driver>\ProvidesFile{nameref.drv} % \fi % \ProvidesFile{nameref.dtx} - [2010/04/30 v2.40 Cross-referencing by name of section]% + [2012/07/28 v2.41 Cross-referencing by name of section]% % -% \CheckSum{698} +% \CheckSum{696} % % \iffalse %<*driver> @@ -122,8 +122,20 @@ % we zap it. To allow for the hyperref package, also write % fourth and fifth fields (empty by default; % used for cross-ref name, and file). +% \begin{macro}{\NR@strip@period} % \begin{macrocode} -\def\strip@period#1.\relax#2\@@@{#1} +\def\NR@strip@period#1.\ltx@empty#2\@nil{#1} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\def\NR@sanitize@labelname{% + \@onelevel@sanitize\@currentlabelname + \edef\@currentlabelname{% + \expandafter\NR@strip@period\@currentlabelname + \ltx@empty.\ltx@empty\@nil + }% +} % \end{macrocode} % % \subsection{\cs{label} stuff} @@ -132,6 +144,7 @@ % But if option final is used, the macros of showkeys % are not defined, so we have to check an additional % test. +% \begin{macro}{\ifNR@showkeys} % \begin{macrocode} \newif\ifNR@showkeys \NR@showkeysfalse @@ -144,14 +157,22 @@ \endgroup }{} % \end{macrocode} +% \end{macro} +% \begin{macro}{\label@hook} +% \begin{macrocode} +\providecommand*{\label@hook}{} +\ltx@GlobalAppendToMacro{\label@hook}{% + \NR@sanitize@labelname +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\label} % \begin{macrocode} \def\label#1{% \@bsphack \begingroup - \@onelevel@sanitize\@currentlabelname - \edef\@currentlabelname{% - \expandafter\strip@period\@currentlabelname\relax.\relax\@@@% - }% + \def\label@name{#1}% + \label@hook \protected@write\@auxout{}{% \string\newlabel{#1}{% {\@currentlabel}% @@ -168,10 +189,8 @@ \@bsphack \SK@\SK@@label{#1}% \begingroup - \@onelevel@sanitize\@currentlabelname - \edef\@currentlabelname{% - \expandafter\strip@period\@currentlabelname\relax.\relax\@@@% - }% + \def\label@name{#1}% + \label@hook \protected@write\@auxout{}{% \string\newlabel{#1}{% {\@currentlabel}% @@ -185,20 +204,22 @@ }% \fi % \end{macrocode} +% \end{macro} +% \begin{macro}{\ltx@label} % \begin{macrocode} \let\ltx@label\label % \end{macrocode} +% \end{macro} % Needed for the \emph{subeqnarray} package. +% \begin{macro}{\slabel} % \begin{macrocode} \@ifundefined{slabel}{}{% \def\slabel#1{% \@bsphack \if@filesw - {% - \@onelevel@sanitize\@currentlabelname - \edef\@currentlabelname{% - \expandafter\strip@period\@currentlabelname\relax.\relax\@@@% - }% + \begingroup + \def\label@name{#1}% + \label@hook \let\thepage\relax \def\protect{\noexpand\noexpand\noexpand}% \edef\@tempa{% @@ -211,8 +232,7 @@ }% }% }% - \expandafter - }% + \expandafter\endgroup \@tempa \if@nobreak\ifvmode\nobreak\fi\fi \fi @@ -220,7 +240,9 @@ }% } % \end{macrocode} +% \end{macro} % Overload an AMS \LaTeX\ command, which uses |\newlabel|. Sigh! +% \begin{macro}{\@writetocindents@} % \begin{macrocode} \def\@writetocindents@{% \begingroup @@ -234,6 +256,7 @@ \endgroup } % \end{macrocode} +% \end{macro} % % \subsection{Changes of section macros} % @@ -243,32 +266,48 @@ % If a section heading or the like has a |\label| in it, % we need to extract it, or subsequent processing breaks. % +% \begin{macro}{\NR@gettitle} % \begin{macrocode} \def\NR@gettitle#1{% \GetTitleString{#1}% \let\@currentlabelname\GetTitleStringResult } % \end{macrocode} +% \end{macro} % % First the numbered sections. While we are about it, put in % a useful section formatting macro. +% \begin{macro}{\NR@sect} % \begin{macrocode} \let\NR@sect\@sect +% \end{macrocode} +% \end{macro} +% \begin{macrocode} \newcounter{section@level} +% \end{macrocode} +% \begin{macro}{\@sect} +% \begin{macrocode} \def\@sect#1#2#3#4#5#6[#7]#8{% \setcounter{section@level}{#2}% \NR@gettitle{#7}% \NR@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{\Sectionformat{#8}{#2}}% } % \end{macrocode} +% \end{macro} % and now the unnumbered ones +% \begin{macro}{\NR@ssect} % \begin{macrocode} \let\NR@ssect\@ssect +% \end{macrocode} +% \end{macro} +% \begin{macro}{\NR@ssect} +% \begin{macrocode} \def\@ssect#1#2#3#4#5{% \NR@gettitle{#5}% \NR@ssect{#1}{#2}{#3}{#4}{\Sectionformat{#5}{#1}}% } % \end{macrocode} +% \end{macro} % % Support for class memoir. % @@ -462,22 +501,49 @@ % Since the second part of the preserved reference now has five parts % (number, page, name, hypertext reference and file), we need extra utility % macros: +% \begin{macro}{\@firstoffive} % \begin{macrocode} \long\def\@firstoffive#1#2#3#4#5{#1} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@secondoffive} +% \begin{macrocode} \long\def\@secondoffive#1#2#3#4#5{#2} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@thirdoffive} +% \begin{macrocode} \long\def\@thirdoffive#1#2#3#4#5{#3} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@fourthoffive} +% \begin{macrocode} \long\def\@fourthoffive#1#2#3#4#5{#4} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@offive} +% \begin{macrocode} \long\def\@fifthoffive#1#2#3#4#5{#5} % \end{macrocode} +% \end{macro} % We have to redefine |\ref| and |\pageref| to know about extra % reference elements. Make them robust, and compatible with Babel. % The Babel switch is mimicked if not already defined. % Some support for package |showkeys| is implemented. If % option |notref| of that package is set, |\SK@ref| has the % meaning of |\@empty|. +% \begin{macro}{\@safe@activestrue} % \begin{macrocode} \providecommand*\@safe@activestrue{}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@safe@activesfalse} +% \begin{macrocode} \providecommand*\@safe@activesfalse{}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\NR@setref} +% \begin{macrocode} \def\NR@setref#1{% \begingroup \@safe@activestrue @@ -485,33 +551,58 @@ \endgroup \expandafter\NR@@setref\csname r@#1\endcsname } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\NR@@setref} +% \begin{macrocode} \def\NR@@setref#1{% \ifx\@undefined#1% \let#1\relax \fi \@setref#1% } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\T@ref} +% \begin{macrocode} \def\T@ref#1{% \NR@setref{#1}\@firstoffive{#1}% }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\T@pageref} +% \begin{macrocode} \def\T@pageref#1{% \NR@setref{#1}\@secondoffive{#1}% }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} \ifNR@showkeys \ifx\SK@ref\@empty \else +% \end{macrocode} +% \begin{macro}{\T@ref} +% \begin{macrocode} \def\T@ref#1{% \@safe@activestrue \SK@\SK@@ref{#1}% \@safe@activesfalse \NR@setref{#1}\@firstoffive{#1}% }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\T@pageref} +% \begin{macrocode} \def\T@pageref#1{% \@safe@activestrue \SK@\SK@@ref{#1}% \@safe@activesfalse \NR@setref{#1}\@secondoffive{#1}% }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} \fi \fi % \end{macrocode} @@ -523,13 +614,24 @@ % \begin{macrocode} \@ifpackageloaded{hyperref}{% }{% +% \end{macrocode} +% \begin{macro}{\ref} +% \begin{macrocode} \DeclareRobustCommand{\ref}{\T@ref}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pageref} +% \begin{macrocode} \DeclareRobustCommand{\pageref}{\T@pageref}% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} } % \end{macrocode} % % \subsection{Usage and frontend} % Access the (third) name part with |\nameref|; +% \begin{macro}{\T@nameref} % \begin{macrocode} \def\T@nameref#1{% \begingroup @@ -551,6 +653,9 @@ }% \fi \fi +% \end{macrocode} +% \end{macro} +% \begin{macrocode} %\@ifclassloaded{memoir}{% % \ltx@IfUndefined{@mem@titlerefnolink}\ltx@secondoftwo{% % \ltx@IfUndefined{@mem@titleref}\ltx@secondoftwo\ltx@firstoftwo @@ -561,20 +666,28 @@ % \@ifstar\@mem@titlerefnolink\@mem@titleref % }% %}{% +% \end{macrocode} +% \begin{macro}{\nameref} +% \begin{macrocode} \DeclareRobustCommand*{\nameref}{% \@ifstar\T@nameref\T@nameref }% %} % \end{macrocode} -% An extended form which gives title and page number. +% \end{macro} +% \begin{macro}{\Nameref} +% An extended form which gives title and page number. % \begin{macrocode} \def\Nameref#1{`\nameref{#1}' on page~\pageref{#1}} % \end{macrocode} +% \end{macro} % -% The default for |\Sectionformat| +% \begin{macro}{\Sectionformat} +% The default for |\Sectionformat| % \begin{macrocode} \providecommand\Sectionformat[2]{#1} % \end{macrocode} +% \end{macro} % % \subsection{Package ifthen support} % |