itemizeを使用する場合、htlatexはitemステートメントの括弧内の値を無視します
Dec 14 2020
ラテックスでは、次のステートメントがあります。
\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は次の正しい出力を生成します:

htlatex(HTML出力)は、itemステートメントの括弧内の定義された値の代わりに箇条書きを生成します。

PDFに示されているのと同じ出力をhtmlで取得する方法を誰かが知っていますか?
回答
1 michal.h21 Dec 14 2020 at 20:35
HTMLは、デフォルトでリストを表示するために使用される要素のカスタムラベルをサポートしていないためenumerate
、TeX4htはitemize
デフォルトでアイテムラベルを削除します。
これは、itemize
環境のデフォルト構成です。
\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}}
少し密度が高いですが、重要な部分はこれです:
{\end:itm \global\def\end:itm{\EndP\Tg</li>}\DeleteMark}
この\DeleteMark
コマンドはラベルを削除するので、ラベルを保持したい場合はラベルを削除できます。また、カスタムラベルをサポートしていないため、<ul>
およびと<li>
は異なる要素を生成する必要があります。代わりに、プレーン<div>
要素といくつかのCSSだけを使用して正しいレンダリングを行うことができます。
この構成ファイルにmycfg.cfg
は、さまざまなHTMLタグと対応する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
を使用してコンパイル
make4ht -c myconfig.cfg filename.tex
これはレンダリングされたHTMLドキュメントです。
