以下是 MWE:
\documentclass{book}
\usepackage{listings}
\begin{document}
\begin{lstlisting}
var x = 10;
// Some code
if(x == 10) return null;
\end{lstlisting}
\end{document}
当像这样处理时htlatex
:htlatex MyFile.tex
它会给我这个列表的 HTML:
<div class="lstlisting">
<!--l. 5-->
<pre class="listings"> <br><span class="label"><a id="x1-2r1"></a></span>var x = 10; <br><span class="label"><a id="x1-3r2"></a></span> <br><span class="label"><a id="x1-4r3"></a></span>// Some code <br><span class="label"><a id="x1-5r4"></a></span>if(x == 10) return null;
<br><span class="label"><a id="x1-6r5"></a></span></pre>
<!--l. 10-->
<p class="noindent"></p>
</div>
正如你所看到的,它被放在一个与环境相对应的 div 中,但随后它又添加了一个<pre>
,我可以配置htlatex
为不是添加那个?
我尝试添加cfg
这个:
\Preamble{html}
\begin{document}
\ConfigureEnv{listings}{\HCode{<div class="listing">}}{\HCode{</div>}}{}{}
\ConfigureEnv{lstlisting}{\HCode{<div class="lstlisting">}}{\HCode{</div>}}{}{}
\EndPreamble
但它没有帮助。
答案1
有特别的配置文件对于列表,它有点神秘,但有一行NewConfigure{listings}{4}
,它似乎为列表提供了配置钩子,不是作为环境,而是作为命令。所以尝试这个配置:
\Preamble{xhtml}
\begin{document}
\Css{.listings{white-space:pre;}}
\Configure{listings}{\HCode{<div class="listing">}}{\HCode{</div>}}{}{}
\EndPreamble