<..non-html TeX4ht lists..>
\def\List#1{%
\def\:tempa##1##2{%
\ifx\:tempA\:tempB \def\:tempb{\L:st{##1}}\fi \def\:tempB{##2}}%
\def\:tempb{\L:st{#1}}\def\:tempA{#1}\def\:tempB{ord}%
\:tempa\:ord1%
\:tempa{\:ord}{a}%
\:tempa{\:alph}{A}%
\:tempa{\:Alph}{i}%
\:tempa{\:roman}{I}%
\:tempa{\:Roman}{disc}%
\:tempa{$\bullet$}{circle}%
\:tempa{$\circle$}{square}%
\:tempa{\vrule depth \z@ height 1ex width 1ex}{}%
\:tempa{\:lbl}{}%
\:tempb }
\def\L:st#1{\par \nobreak
{\advance \medskipamount by -\parskip \:medskip}%
\:noparfalse
\Begin:Block{List}%
<.non-html List items.>%
<.lbls for items.>%
\advance \leftskip by 1.5em
\parindent=0em
<.items of List.>%
}
-_-_-
The interparagraph space that \parskip contributes is introduced when a new paragraph (i.e., horizontal mode) is entered. Within a list we don’t want the first item to introduce such vertical space in addition to the one introduced by the head of the list. Hence, we before the first item, \parskip give 0 cotribution. Also, we want the space around the list (together with parskip) to equal medskip.
‘\par\:bigskip’ instead of just \:bigskip allows a \nobreak before the end of the lis. e.g., \def\LineIndent{\EveryItem={\hskip-0.75em}}
<..non-html TeX4ht lists..>+
\def\EndList{\par
\End:Block{List}%
{\advance\medskipamount by -\parskip \:medskip}}
-_-_-
<..items of List..>
\HAssign\ListCounter=0
\def\item{%
\par \leavevmode \parskip=\:ListParSkip
\Advance:\ListCounter by 1
\the\EveryItem}%
-_-_-
<..TeX4ht lists..>
\expandafter\csname newtoks\endcsname\EveryItem
-_-_-
<..TeX4ht lists..>+
\def\ListParSkip{\def\:ListParSkip}
\ifHtml
\ListParSkip{\HtmlPar}
\fi
-_-_-
<..non-html TeX4ht lists..>+
\expandafter\csname newskip\endcsname\ListParSkip
\def\:ListParSkip{\ListParSkip}
\ListParSkip=4.5pt plus 1.5pt minus 1.5pt
-_-_-
<..items of List..>+
\def\:temp{#1}\def\:tempa{\:lbl}\ifx \:temp\:tempa
\EveryItem={\hskip-1.5em\:ListItem}%
\else \EveryItem={<.Alph.>%
\llap{#1\hskip 0.5em}}\fi
-_-_-
<..lbls for items..>
\lbl:tm
-_-_-
<..TeX4ht lists..>+
\def\lbl:tm{%
\def\:ord{\a:Item\ListCounter\b:Item}%
\def\:roman{\a:Item\romannumeral\ListCounter\b:Item}%
\def\:alph{{\Advance: \ListCounter by 96
\a:Item \char\ListCounter\b:Item}}%
\def\:Roman{\a:Item\uppercase{\romannumeral\ListCounter}\b:Item}%
\def\:Alph{{\Advance: \ListCounter by 64
\a:Item \char\ListCounter\b:Item}}%
}
\def\:lbl#1{\a:Item#1\b:Item}
-_-_-
<..general tex-sty configure utilities..>
\long\def\c:Item:#1#2{\c:def\a:Item{#1}\c:def\b:Item{#2}}
-_-_-
<..non-html TeX4ht lists..>+
\def\:ListItem#1{\:lbl{#1}\hskip 0.5em\ignorespaces}
-_-_-
A global \Configure{Item} is not that good of an idea when nested lists are present.
<..non-html List items..>
\Configure{Item}{}{.}%
-_-_-
In its default setting, ‘\:lbl’ has the meaning of identity+period.
<..general tex-sty configure utilities..>+
\def\Begin:Block#1{\begingroup \def\:EndBlock{#1}}
\def\End:Block#1{%
\expandafter\ifx \csname :EndBlock\endcsname\relax
\:warning{Block #1 is already closed}%
\else
\def\:test{#1}%
\ifx \:test\:EndBlock \endgroup
\else
\:warning{End environment #1 within
environment \:EndBlock?}%
\fi\fi}-_-_-