<..nameref.4ht..>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% nameref.4ht 2014-07-12-22:36 %
% Copyright (C) 2005--2009 Eitan M. Gurari %
<.TeX4ht copyright.>
<.nameref v.2 configurations.>
\Hinput{nameref}
\endinput
-_-_-
<..nameref configurations..>
\let\ltx@label\label
-_-_-
Bug #130: Optional argument of a sectional unit does not appear as the title when \nameref command is used in a document. The problem was \NR:Title expands to the real heading of the sectional unit. It has been fixed now.
<..nameref v.1 configurations..>
\def\prf:label{{\ifx \NR:Title\:UnDef \else \NR:Title\fi}%
{\ifx \NR:Type\:UnDef \else \NR:Type .1\fi}{}}%
\let\NR:StartSec\:StartSec
\let\NR:no@sect\no@sect
\def\no@sect#1#2#3#4#5#6[#7]#8{\gdef\NR:Title{\a:newlabel{#7}}%
\NR:no@sect{#1}{#2}{#3}{#4}{#5}{#6}[#7]{#8}}
\def\:StartSec#1#2#3{%
\gdef\NR:Title{\a:newlabel{#3}}%
\gdef\NR:Type{#1}%
\gdef\@currentlabelname{#3}%
\NR:StartSec{#1}{#2}{#3}%
}
\pend:defI\begin{\PushMacro\NR:Type \PushMacro\NR:Title}
\pend:defI\end{%
\PopMacro\NR:Type \PopMacro\NR:Title
\global\let\NR:Type\NR:Type
\global\let\NR:Title\NR:Title
}
-_-_-
<..nameref v.1 configurations..>+
\def\:tempc#1#2#3#4#5#6[#7]#8{%
\gdef\NR:Title{\a:newlabel{#7}}%
\gdef\NR:Type{#1}%
\o:NR@sect:{#1}{#2}{#3}{#4}{#5}{#6}[#7]{#8}}
\HLet\NR@sect\:tempc
\def\:tempc#1#2#3#4#5{%
\gdef\NR:Title{\a:newlabel\ssect:ttl}%
\gdef\NR:Type{#1}%
\o:NR@ssect:{#1}{#2}{#3}{#4}{#5}%
\def\@currentlabelname{\ssect:ttl}}
\HLet\NR@ssect\:tempc
\def\:tempc[#1]#2{%
\gdef\NR:Title{\a:newlabel{#1}}%
\o:no@part:[{#1}]{#2}}
\HLet\no@part\:tempc
\def\:tempc#1{%
\gdef\NR:Title{\a:newlabel{#1}}%
\o:no@spart:{#1}}
\HLet\no@spart\:tempc
\def\:tempc[#1]#2{%
\gdef\NR:Title{\a:newlabel{#1}}%
\o:NR@chapter:[#1]{#2}}
\HLet\NR@chapter\:tempc
\def\:tempc#1{%
\gdef\NR:Title{\a:newlabel\sch:ttl}%
\o:NR@schapter:{#1}%
\def\@currentlabelname{\sch:ttl}}
\HLet\NR@schapter\:tempc
% \long\def\:tempc#1[#2]{%
% \gdef\NR:Type{#1}%
% \gdef\NR:Title{\a:newlabel{#2}}%
% \gdef\@currentlabelname{#2}%
% \o:NR@@caption:{#1}[{#2}]%
% }
% \HLet\NR@@caption\:tempc
\let\NR@@caption\@caption
\long\def\@caption#1[#2]{%
\NR@gettitle{#2}%
\NR@@caption{#1}[{#2}]}%
\AtBeginDocument{%
\@ifpackageloaded{listings}{%
\def\:tempc#1{%
\gdef\NR:Title{\a:newlabel{listing}}%
\gdef\NR:Type{lstlisting}%
\o:NROrg@lst@MakeCaption:{#1}%
\gdef\@currentlabelname{listing}}
\HLet\NROrg@lst@MakeCaption\:tempc
}{}%
}
-_-_-
<..star ch title..>
\gdef\sch:ttl{#1}%
-_-_-
<..star sec title..>
\gdef\ssect:ttl{##5}%
-_-_-
<..nameref v.1 configurations..>+
\let\T:ref=\::ref
\def\::ref{\protect\T@ref}
\def\T@ref#1{%
\@safe@activestrue
\let\::ref \T:ref
\expandafter\@setref\csname r@#1\endcsname\@firstoffive{#1}%
\def\::ref{\protect\T@ref}%
\@safe@activesfalse
}
-_-_-
<..nameref v.2 configurations..>
\let\NR:Type\relax
\let\ltx@label\label
\def\prf:label{{\ifx \NR:Title\:UnDef \else \NR:Title\fi}%
{\ifx \NR:Type\:UnDef \else \NR:Type .1\fi}{}}%
\let\NR:StartSec\:StartSec
\let\NR:no@sect\no@sect
\def\no@sect#1#2#3#4#5#6[#7]#8{\gdef\NR:Title{\a:newlabel{#7}}%
\gdef\NR:Type{#1}%
\NR:no@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}}
\def\:StartSec#1#2#3{%
\gdef\NR:Title{\a:newlabel{#3}}%
\gdef\NR:Type{#1}%
\NR:StartSec{#1}{#2}{#3}%
}
\def\:tempc#1#2#3#4#5#6[#7]#8{%
\gdef\NR:Title{\a:newlabel{#7}}%
\gdef\NR:Type{#1}%
\o:NR@sect:{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}}
\HLet\NR@sect\:tempc
\def\:tempc#1#2#3#4#5{%
\gdef\NR:Title{\a:newlabel\ssect:ttl}%
\gdef\NR:Type{#1}%
\o:NR@ssect:{#1}{#2}{#3}{#4}{#5}%
}
\HLet\NR@ssect\:tempc
\def\:tempc[#1]#2{%
\gdef\NR:Title{\a:newlabel{#1}}%
\gdef\NR:Type{part}%
\o:no@part:[{#1}]{#2}}
\HLet\no@part\:tempc
\def\:tempc#1{%
\gdef\NR:Title{\a:newlabel{#1}}%
\gdef\NR:Type{part}%
\o:no@spart:{#1}}
\HLet\no@spart\:tempc
\def\:tempc[#1]#2{%
\gdef\NR:Title{\a:newlabel{#1}}%
\gdef\NR:Type{chapter}%
\o:NR@chapter:[{#1}]{#2}}
\HLet\NR@chapter\:tempc
\def\:tempc#1{%
\gdef\NR:Title{\a:newlabel\sch:ttl}%
\o:NR@schapter:{#1}%
\gdef\NR:Type{chapter}%
}
\HLet\NR@schapter\:tempc
\let\o:NR@@caption\@caption
%
%
% Keith Andrews <[email protected]> reported that \@captype as
% \NR:Type threw an undefined control sequence error. I think
% \@currenvir is safe, there is nothing special about \@captype.
%
\long\def\@caption#1[#2]{%
\gdef\NR:Type{\@currenvir}%
\gdef\NR:Title{\a:newlabel{#2}}%
\o:NR@@caption{#1}[{#2}]%
}
\let\o:NRorg@opargbegintheorem\@opargbegintheorem
\def\@opargbegintheorem#1#2#3{%
\gdef\NR:Title{\a:newlabel{#3}}%
\gdef\NR:Type{\@currenvir}%
\NR@gettitle{#3}%
\defineautorefname{\@currenvir}{#1}%
\o:NRorg@opargbegintheorem{#1}{#2}{#3}%
}%
\let\o:NRorg@begintheorem\@begintheorem
\def\@begintheorem#1#2{%
\gdef\NR:Title{\a:newlabel{#1 #2}}%
\gdef\NR:Type{\@currenvir}%
\defineautorefname{\@currenvir}{#1}%
\NR@gettitle{}%
\o:NRorg@begintheorem{#1}{#2}%
}%
\AtBeginDocument{%
\@ifpackageloaded{listings}{%
\def\:tempc#1{%
\gdef\NR:Title{\a:newlabel{listing}}%
\gdef\NR:Type{lstlisting}%
\o:NROrg@lst@MakeCaption:{#1}%
\gdef\@currentlabelname{listing}}
\HLet\NROrg@lst@MakeCaption\:tempc
}{}%
}
\let\T:ref=\::ref
\def\::ref{\protect\T@ref}
\def\T@ref#1{%
\@safe@activestrue
\let\::ref \T:ref
\expandafter\@setref\csname r@#1\endcsname\@firstoffive{#1}%
\def\::ref{\protect\T@ref}%
\@safe@activesfalse
}
\gdef\defineautorefname#1#2{%
\expandafter\gdef\csname #1autorefname\endcsname{#2}}
\defineautorefname{theorem}{Theorem}
\Configure{newlabel}
{\csname cur:th\endcsname \csname :currentlabel\endcsname}
{\string\csname\space :autoref\string\endcsname
{\NR:Type}#1}
\ifx \@currentlabelname\:UnDef
\let\@currentlabelname\empty
\fi
\pend:defIII\@setref{\edef\RefArg{##3}}
\append:defIII\@setref{\let\:autoref\:gobble}
\let\:autoref\:gobble
-_-_-