列表的浮动放置会导致 make4ht 中出现警告

列表的浮动放置会导致 make4ht 中出现警告

以下示例可以编译,但是在float使用参数时会产生警告。

\documentclass{article}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[float, language=tex, label=lst-enum, caption={Enumerated list.}]
\begin{enumerate}
\item example 1
\item example 2
\item example 3
\end{enumerate}
\end{lstlisting}
\end{document}

我正在进行编译make4ht并生成以下警告:

[WARNING] domfilter: DOM parsing of article.html failed:
[WARNING] domfilter: .../texlive/texmf-dist/tex/luatex/luaxml/luaxml-mod-xml.lua:175: Unbalanced Tag (/figure) [char=1997]

有什么问题吗?或者有办法避免这些警告吗?在更复杂的示例中,它会导致崩溃吗?

答案1

domfilter错误表示生成的 HTML 文件无效,DOM 处理失败。这是一个严重的问题,make4ht使用它来修复生成的 HTML 文件中的常见错误。

问题在于 TeX4ht 环境配置在错误的位置lstlisting插入 ' tags around it's content, but thefloat ' 标签。option inserts

尝试这个配置文件:

\Preamble{xhtml}
\begin{document}
\makeatletter
\catcode`\:=11
\ConfigureEnv{lstlisting}
   {\ifvmode \IgnorePar\fi \EndP
    \gHAdvance\listingN by 1
    \HCode{<!--l. \the\inputlineno-->}%
    \gdef\start:LstLn{%
       \HCode{<div class="lstlisting" id="listing-\listingN">}%
       \gdef\start:LstLn{\:nbsp%
\HCode{<br />\Hnewline}}}
    \bgroup
\pend:def\lst@DeInit{\ifvmode \IgnorePar\fi \EndP \HCode{</div>}}
       \Configure{listings}
         {{\everypar{}\leavevmode}}
         {{\everypar{}\leavevmode}}
         {\start:LstLn \HCode{<span class="label">}}
         {\HCode{</span>}}%
   }
   {\egroup\par
    }
   {} {}
\catcode`\:=12
\makeatother
\EndPreamble

它是 TeX4ht 源的修改版本,不同之处在于它修补了宏以在before\lst@DeInit插入结束标记,从而生成正确的 HTML 结构。</div></figure>

相关内容