htlatex ignoriert den Wert in Klammern in der item-Anweisung, wenn itemize verwendet wird

Dec 14 2020

In Latex habe ich folgende Aussagen:

\begin{itemize}
\item[P)] Lorem ipsum dolor sit amet
\item[E)] Pellentesque interdum eros in erat
\item[Q)] Vestibulum ante ipsum primis
\end{itemize}

pdflatex erzeugt die folgende korrekte Ausgabe:

htlatex (HTML-Ausgabe) generiert Aufzählungszeichen anstelle der definierten Werte in den Klammern der item-Anweisung:

Hat jemand eine Idee, wie ich die gleiche Ausgabe in HTML wie in PDF erhalten kann?

Antworten

1 michal.h21 Dec 14 2020 at 20:35

TeX4ht entfernt Elementbeschriftungen für enumerateund itemizestandardmäßig, da HTML keine benutzerdefinierten Beschriftungen in Elementen unterstützt, die standardmäßig zum Anzeigen von Listen verwendet werden.

Dies ist die Standardkonfiguration für die itemizeUmgebung:

\ConfigureList{itemize}%
   {\EndP\HCode{<ul \a:LRdir
          class="\getClass{itemize}itemize\expandafter\the
          \csname @itemdepth\endcsname">}%
       \afterGetClass{itemize}%
       \PushMacro\end:itm
\global\let\end:itm=\empty}
   {\PopMacro\end:itm \global\let\end:itm \end:itm
\ifvmode \IgnorePar\fi
    \EndP\HCode{</li></ul>}\ShowPar}
   {\end:itm \global\def\end:itm{\EndP\Tg</li>}\DeleteMark}
   {\HCode{<li class="\getClass{li}itemize">}\afterGetClass{li}}

Es ist ein bisschen dicht, aber der wichtige Teil ist folgender:

   {\end:itm \global\def\end:itm{\EndP\Tg</li>}\DeleteMark}

Der \DeleteMarkBefehl entfernt das Etikett, sodass wir es entfernen können, wenn wir das Etikett behalten möchten. Wir müssen auch andere Elemente als <ul>und produzieren <li>, da sie keine benutzerdefinierten Beschriftungen unterstützen. Stattdessen können wir nur einfache <div>Elemente und etwas CSS für das korrekte Rendern verwenden.

Diese Konfigurationsdatei mycfg.cfgenthält eine geänderte Version dieses Befehls mit verschiedenen HTML-Tags und entsprechendem CSS:

\Preamble{xhtml}
\catcode`\:=11
\ConfigureList{itemize}%
   {\EndP\HCode{<div \a:LRdir
          class="custom-itemize"><div class="item-head">}%
       \PushMacro\end:itm \global\let\end:itm=\empty}
   {\PopMacro\end:itm \global\let\end:itm \end:itm
\ifvmode \IgnorePar\fi
    \EndP\HCode{</div></div>}\ShowPar}
   {\end:itm \global\def\end:itm{\EndP\Tg</div>\Tg<div class="item-head">}}
   {\HCode{</div><div class="item-content">}}
\Css{.item-head{float:left;width:2em;clear:left;}}
\Css{.item-content{margin-left:2em;}}
\catcode`\:=12
\begin{document}
\EndPreamble

Kompilieren mit

make4ht -c myconfig.cfg filename.tex

Dies ist das gerenderte HTML-Dokument: