summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/hyperref/nameref.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/hyperref/nameref.dtx')
-rw-r--r--Master/texmf-dist/source/latex/hyperref/nameref.dtx155
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}
%