4.3 Lists

<..latex lists..>
 \ConfigureList{trivlist}%
    {\EndP\HCode{<glosslist>}\let\end:itm=\empty}
    {\EndP\HCode{</glossdef></glossentry></glosslist>}\ShowPar}
    {\end:itm\def\end:itm{\EndP\HCode{</glossdef></glossentry>}}%
       \HCode{<glossentry><glossterm><remark>}\bgroup \bf}
    {\egroup\HCode{</remark></glossterm><glossdef\Hnewline>}\par\ShowPar}
 \ConfigureList{list}%
    {\EndP\HCode{<glosslist>}\let\end:itm=\empty}
    {\EndP\HCode{</glossdef></glossentry></glosslist>}\ShowPar}
    {\end:itm\def\end:itm{\EndP\HCode{</glossdef></glossentry>}}%
       \HCode{<glossentry><glossterm><remark>}\bgroup \bf}
    {\egroup\HCode{</remark></glossterm><glossdef\Hnewline>}\par\ShowPar}
 \ConfigureList{itemize}%
    {\EndP\HCode{<itemizedlist>}\let\end:itm=\empty}
    {\EndP\HCode{</listitem></itemizedlist>}\ShowPar}
    {\end:itm\def\end:itm{\EndP\Tg</listitem>}\DeleteMark}
    {\HCode{<listitem>}\par\ShowPar}
 \ConfigureList{enumerate}%
    {\EndP\HCode{<orderedlist\Hnewline>}\let\end:itm=\empty}
    {\EndP\HCode{</listitem></orderedlist>}\ShowPar}
    {\end:itm\def\end:itm{\EndP\Tg</listitem>}\DeleteMark}
    {\HCode{<listitem>}\AnchorLabel\par\ShowPar}
 \ConfigureList{description}%
    {\EndP\HCode{<variablelist\Hnewline>}%
       <.save end:itm.>\global\let\end:itm=\empty}
    {<.recall end:itm.>\EndP
     \HCode{</listitem></varlistentry></variablelist>}\ShowPar}
    {\end:itm \global\def\end:itm{\EndP
                           \HCode{</listitem></varlistentry>}}%
     \HCode{<varlistentry><term\Hnewline>}\bgroup \bf}
    {\egroup\EndP\HCode{</term><listitem>}\par\ShowPar}
-_-_-

<..save end:itm..>
 \PushMacro\end:itm
-_-_-

<..recall end:itm..>
 \PopMacro\end:itm \global\let\end:itm \end:itm
-_-_-

<..tex4ht cross-linking..>
 %\LinkCommand\DBLink{ulink, url}
 \LinkCommand\DBLink{link, xlink:href}
 \LinkCommand\Anchor{anchor,, xml:id,,,\empty}
 \Odef\Link[#1]#2#3{%
    \global\let\EndLink=\empty
    \if ]#3]\else \Anchor{}{#3}\EndAnchor
              \gdef\M:EndLink{\HCode{<!--end anchor-->}}\fi
    \if ]#1#2]\else
      \EndLink\DBLink[#1]{#2}{}\global\let\EndLink=\EndDBLink\fi
 }
 <.fix Link for -.>
 \Configure{Link}{anchor}{linkend=}{xml:id=}{}
-_-_-

<..configure docbook-mml tex4ht..>+
 \Odef\M:Link[#1]#2#3{%
    \global\let\M:EndLink=\empty
    \if ]#3]\else \Anchor{}{#3}\EndAnchor
                    \gdef\M:EndLink{\HCode{<!--end anchor-->}}\fi
    \if ]#1#2]\else
      \EndLink\DBLink[#1]{#2}{}\global\let\M:EndLink=\EndDBLink\fi
 }
 <.fix M:Link for -.>
-_-_-

<..fix Link for -..>
 \let\do:Link=\Link
 \def\Link{\Protect\p:Link}
 \def\p:Link{\futurelet\:next\choose:Link}
 \def\choose:Link{\ifx -\:next \expandafter\minus:Link
                  \else\expandafter\do:Link\fi}
 \def\minus:Link#1{\do:Link}
-_-_-

The protection is required for cases like the following one.

\documentclass{article}  
   \begin{document}  
\section{Introduction}  
 
\begin{figure*} \caption{fig  \ref{fig}} \end{figure*}  
 
\label{fig}  
 
\end{document}

<..fix M:Link for -..>
 \let\do:M:Link=\M:Link
 \def\M:Link{\Protect\p:M:Link}
 \def\p:M:Link{\futurelet\:next\choose:M:Link}
 \def\choose:M:Link{\ifx -\:next \expandafter\minus:M:Link
                  \else\expandafter\do:M:Link\fi}
 \def\minus:M:Link#1{\do:M:Link}
-_-_-