Html TeX4ht

<..html TeX4ht lists..>
 \def\List#1{\begingroup  {\hfil\break\IgnorePar}%
    \HAssign\ListCounter=0
    <.set html list type.>%
    <.lbls for items.>%
 }
 -_-_-

<..set html list type..>
 \let\:temp=\empty \def\:tempA{#1}%
                                               \def\:tempB{ord}%
 \ifx\:tempA\:tempB \else \let\:temp=\:tempA  \def\:tempB{1}\fi
 \ifx\:tempA\:tempB \else                      \def\:tempB{a}\fi
 \ifx\:tempA\:tempB \else                      \def\:tempB{A}\fi
 \ifx\:tempA\:tempB \else                      \def\:tempB{i}\fi
 \ifx\:tempA\:tempB \else                      \def\:tempB{I}\fi
 \let\item=\:LIitem
 \ifx       \:tempA\:tempB <.enumerated list.>%
                           \let\a:List=\c:OList
 \else                                        \def\:tempB{}%
    \ifx    \:tempA\:tempB <.def list.>%
    \else                                     \def\:tempB{button}%
       \ifx \:tempA\:tempB <.button list.>%
       \else               <.marked list.>%
                           \let\a:List=\c:UList
 \fi\fi\fi
 -_-_-

<..enumerated list..>
 {\a:OList}%
 \def\EndList{\b:OList\endgroup }%
 -_-_-

The ‘hbox’ is for preserving vr mode. The grouping is for preserving ‘ignorepar’.

<..marked list..>
 \a:UList \def\EndList{\b:UList\endgroup }%
 -_-_-

<..html TeX4ht lists..>+
 \NewConfigure{OList}{3}
 \NewConfigure{UList}{3}
 \NewConfigure{DList}{4}
 -_-_-

<..html TeX4ht lists..>+
 \let\:UL:=\empty
 \def\:LIitem{%
    {\parindent=0pt\leavevmode}\:noparfalse    \ht:everypar{\Li:Par}%
     \Advance:\ListCounter by 1  \a:List
 }
 -_-_-

<..def list..>
 \a:DList \let\item=\:DLitem \let\End:dd=\empty
 \def\EndList{\b:DList\endgroup }%
 -_-_-

Lynx doesn’t like ‘\leavemode’ alone because vertical mode produces ‘<DD><DT>’ and the empty body of ‘<DD>’ is not handled nicely there. Hence, the ‘{\ht:everypar{\HCode{<P>}}\leavevmode}’.

<..html TeX4ht lists..>+
 \def\:DLitem#1{%
    \Advance:\ListCounter by  1
    \c:DList #1\d:DList    \ht:everypar{\Li:Par}%
 }
 -_-_-

<..set html list type..>+
 \let\Li:Par=\:ListParSkip
 \ht:everypar{\if:nopar \else \HtmlPar\fi}%
 -_-_-