htlatex ignora el valor entre corchetes en la declaración del elemento cuando se usa itemize

Dec 14 2020

En Latex tengo las siguientes declaraciones:

\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 produce la siguiente salida correcta:

htlatex (salida HTML) genera viñetas en lugar de los valores definidos en los corchetes de la declaración del elemento:

¿Alguien tiene una idea de cómo puedo obtener el mismo resultado en html que se muestra en PDF?

Respuestas

1 michal.h21 Dec 14 2020 at 20:35

TeX4ht elimina etiquetas de elementos para enumeratey itemizepor defecto porque HTML no admite etiquetas personalizadas en los elementos que se utilizan para las listas de visualización por defecto.

Esta es la configuración predeterminada para el itemizeentorno:

\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 un poco denso, pero la parte importante es esta:

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

El \DeleteMarkcomando elimina la etiqueta, por lo que podemos eliminarla si queremos mantener la etiqueta. También necesitamos producir elementos diferentes a <ul>y <li>, ya que no admiten etiquetas personalizadas. En su lugar, podemos usar solo <div>elementos simples y algo de CSS para una representación correcta.

Este archivo de configuración mycfg.cfgcontiene una versión modificada de este comando con diferentes etiquetas HTML y CSS correspondiente:

\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

Compilar usando

make4ht -c myconfig.cfg filename.tex

Este es el documento HTML renderizado: