htlatex ignoruje wartość w nawiasach w zestawieniu pozycji podczas korzystania z itemize

Dec 14 2020

W Latex mam następujące stwierdzenia:

\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 generuje następujące poprawne dane wyjściowe:

htlatex (wyjście HTML) generuje punktory zamiast zdefiniowanych wartości w nawiasach w instrukcji item:

Czy ktoś ma pomysł, jak mogę uzyskać takie same dane wyjściowe w html, jak pokazano w PDF?

Odpowiedzi

1 michal.h21 Dec 14 2020 at 20:35

TeX4ht domyślnie usuwa etykiety elementów dla enumeratei itemize, ponieważ HTML nie obsługuje etykiet niestandardowych w elementach, które są używane do wyświetlania list domyślnie.

To jest domyślna konfiguracja dla itemiześrodowiska:

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

Jest trochę gęsty, ale ważne jest to:

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

\DeleteMarkPolecenie usuwa etykietę, dzięki czemu możemy usunąć go, jeśli chcemy zachować etykietę. Musimy również produkować inne elementy niż <ul>i <li>, ponieważ nie obsługują one niestandardowych etykiet. Zamiast tego możemy użyć zwykłych <div>elementów i trochę CSS do poprawnego renderowania.

Ten plik konfiguracyjny mycfg.cfgzawiera zmodyfikowaną wersję tego polecenia z różnymi tagami HTML i odpowiadającym im 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

Skompiluj za pomocą

make4ht -c myconfig.cfg filename.tex

Oto renderowany dokument HTML: