Radhakrishnan CV wrote, on 11-05-2011 08:16:
Attached is a newer version of nameref.4ht. In my tests, this version
seems to fix the problem of not only \autoref, but also \nameref which
was also broken. If this version passes your tests, I shall update the
literate sources and nameref.4ht in the SVN.

Look forward to hearing from you.

The following document when compiled with
        htlatex test-nameref.tex "html,4"
generates wrong targets (but correct displayed text) for the subsection and subsubsection references with the updated nameref.4ht. The targets for the links are correct with
% nameref.4ht                           2010-09-04-21:02 %
% Copyright (C) 2005--2010       Eitan M. Gurari         %
distributed with MikTeX (but the displayed text is wrong).

% test-nameref.tex
\documentclass{book}
\usepackage{hyperref}

\setcounter{secnumdepth}{4}

\begin{document}

\chapter{Chapter}
\label{chap:chapter}

\section{Section}
\label{sec:section}

\subsection{Subsection}
\label{subsec:section}

\subsubsection{Subsubsection}
\label{subsubsec:section}

\begin{equation}
        a\label{eq:a}
\end{equation}

\begin{figure}
\caption{Figure.}
\label{fig:test}
\end{figure}

\chapter{Second Chapter}
\autoref{eq:a}\\
\autoref{fig:test}\\
\autoref{chap:chapter}\\
\autoref{sec:section}\\
\autoref{subsec:section}\\
\autoref{subsubsec:section}\\

Equation~(\ref{eq:a})\\
Figure~\ref{fig:test}\\
Chapter~\ref{chap:chapter}\\
Section~\ref{sec:section}\\
Subsection~\ref{subsec:section}\\
Subsubsection~\ref{subsubsec:section}

\end{document}

I don't know if the fix is easy to make. I have tried to look in the source files, but sadly, I have a hard time following what is going on.

Best regards,
Martin Heller

P.S.: I've sent this message to the tex4ht mailing list too (through the gmane nntp interface). I don't know if this e-mail address redirects to the mailing list too. If so, I apologize for the double posting.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% nameref.4ht                           2011-01-30-16:01 %
% Copyright (C) 2005--2009       Eitan M. Gurari         %
%               2009--2011       TeX Users Group         %
%                                                        %
% This work may be distributed and/or modified under the %
% conditions of the LaTeX Project Public License, either %
% version 1.3c of this license or (at your option) any   %
% later version. The latest version of this license is   %
% in                                                     %
%   http://www.latex-project.org/lppl.txt                %
% and version 1.3c or later is part of all distributions %
% of LaTeX version 2005/12/01 or later.                  %
%                                                        %
% This work has the LPPL maintenance status "maintained".%
%                                                        %
% This Current Maintainer of this work                   %
% is the TeX4ht Project <[email protected]>.                %
%                                                        %
% If you modify this program your changing its signature %
% with a directive of the following form will be         %
% appreciated.                                           %
%            \message{signature}                         %
%                                                        %
%                                        [email protected]  %
%                             http://www.tug.org/tex4ht  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\immediate\write-1{version 2011-01-30-16:01}

   \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}}%
     \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
}
\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
  }{}%
}
\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
}

\def\tht:label#1{%
  \@bsphack
  \begingroup
    \@onelevel@sanitize\@currentlabelname
    \edef\@currentlabelname{%
      \expandafter\strip@period\@currentlabelname.\relax\@@@%
    }%
%   \typeout{::::::::::::[\@currentlabelname]::::::::::::}%
    \protected@write\@auxout{}{%
      \string\newlabel{#1}{%
        {\string\rEfLiNK{\cur:th\:currentlabel}
           {\string\csname\space :autoref\string\endcsname
             {\@@currentlabelname}\@currentlabel}%
        }%    
        {\thepage}%
        {\a:newlabel\@currentlabelname}%
        {\@@currentlabelname.\@currentlabel}{}%
      }%
    }%
  \endgroup
  \@esphack
}%

\HLet\label\tht:label

\Configure{newlabel}
   {\cur:th \:currentlabel}
   {\string\csname\space%\string%\string\space
    :autoref\string\endcsname {\@@currentlabelname}#1}

\ifx \@@currentlabelname\:UnDef
   \let\@@currentlabelname\empty
\fi
\append:defI\refstepcounter{\def\@@currentlabelname{#1}}
\pend:def\eqnarray{\edef\@@currentlabelname{equation}}
\pend:def\equation{\edef\@@currentlabelname{equation}}
\pend:defI\section{\edef\@@currentlabelname{section}}
\pend:defI\subsection{\edef\@@currentlabelname{section}}
\pend:defI\subsubsection{\edef\@@currentlabelname{section}}

\ifx \figure\:UnDef \else
  \pend:def\figure{\edef\@@currentlabelname{figure}}
  \expandafter\pend:def\csname
     figure*\endcsname{\edef\@@currentlabelname{figure}}
\fi
\ifx \table\:UnDef \else
  \pend:def\table{\edef\@@currentlabelname{table}}
  \expandafter\pend:def\csname
     table*\endcsname{\edef\@@currentlabelname{table}}
\fi
\pend:defII\:thm{\edef\@@currentlabelname{##1}}
\pend:defIII\@setref{\edef\RefArg{##3}}
\append:defIII\@setref{\let\:autoref\:gobble}
\let\:autoref\:gobble


\Hinput{nameref}
\endinput 

\documentclass{book}
\usepackage{hyperref}
\setcounter{secnumdepth}{4}

\begin{document}

\chapter{Chapter}
\label{chap:chapter}

\section{Section}
\label{sec:section}

\subsection{Subsection}
\label{subsec:section}

\subsubsection{Subsubsection}
\label{subsubsec:section}

\begin{equation}
        a\label{eq:a}
\end{equation}


\begin{figure}
\caption{Figure.}
\label{fig:test}
\end{figure}

\chapter{Second Chapter}
Equation~\autoref{eq:a}\\
Figure~\autoref{fig:test}\\
Chapter~\autoref{chap:chapter}\\
Section~\autoref{sec:section}\\
Subsection~\autoref{subsec:section}\\
Subsubsection~\autoref{subsubsec:section}\\


\noindent 
Equation~(\ref{eq:a})\\
Figure~\ref{fig:test}\\
Chapter~\ref{chap:chapter}\\
Section~\ref{sec:section}\\
Subsection~\ref{subsec:section}\\
Subsubsection~\ref{subsubsec:section}

\end{document}

Reply via email to