使用 htlatex 将 LaTeX 转换为 HTML - 背景问题

使用 htlatex 将 LaTeX 转换为 HTML - 背景问题

我一直在尝试突出显示 Python 代码并将其转换为 HTML。为了突出显示,我使用了该minted包,因为它提供了一些我正在寻找的样式,我用它htlatex来进行 HTML 转换。不幸的是,背景没有按预期设置。

使用时htlatex,我收到以下警告:

"Missing \Configure{\HColor}{DarkGrey}{...} (in Latex: gray 0.1)"

这是 TeX 文件:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{minted}
\usepackage{xcolor}
\definecolor{DarkGray}{gray}{0.1}
\usemintedstyle{monokai}
\begin{document}
\begin{minted}
[
frame=lines,
framesep=2mm,
baselinestretch=1.2,
bgcolor=DarkGray
]
{python}

[random python code here...]

\end{minted}    
\end{document}

htlatex调用方式如下:

htlatex test.tex "" "" "" -shell-escape

我对乳胶完全是新手,可能忽略了一些显而易见的东西。任何帮助都非常感谢!

答案1

看起来minted用于\colorbox彩色背景,这是支持的tex4ht,我们只需要配置它以支持DarkGray颜色。

创建文件hello.cfg

\Preamble{xhtml}
\Configure{HColor}{DarkGray}{\#1A1A1A}
\begin{document}
\EndPreamble

并编译

htlatex test.tex "hello" "" "" -shell-escape

\#1A1A1A是深灰色的十六进制值。不幸的是,这并不是需要做的全部。minted包没有自己的配置文件,但使用受支持的包,因此它或多或少可以工作。但是您的示例存在问题。生成的代码列表没有灰色背景。为什么?从生成的代码tex4ht中可以明显看出:html

<p class="noindent" >
<span 
class="colorbox" id="colorbox8"></p><div class="minipage"><div class="fancyvrb" id="fancyvrb1"><a 

<span class="colorbox">也就是说我们的 colorbox 被</p>标签立即关闭了!为了解决这个问题,我们需要配置minted环境来关闭上一段。这是一个常见问题,请参阅控制<p>tex4ht 添加的标签

修改配置文件:

\Preamble{xhtml}
\Configure{HColor}{DarkGray}{\#1A1A1A}
\ConfigureEnv{minted}{\ifvmode\IgnorePar\fi\EndP}{}{}{}
\begin{document}
\EndPreamble

这将关闭环境前的段落minted,但不会创建一个段落,因为在您的示例中没有段落:

<span 
class="colorbox" id="colorbox8"><div class="minipage"><div class="fancyvrb" id="fancyvrb1"><a 
 id="x1-4r1"></a><span 

当然,它仍然不起作用,可能是因为某些 html 或 css 规则。幸运的是,解决方案很简单,我们只需要声明span.colorbox具有display:blockcss 属性:

\Preamble{xhtml}
\Configure{HColor}{DarkGray}{\#1A1A1A}
\ConfigureEnv{minted}{\ifvmode\IgnorePar\fi\EndP}{}{}{}
\Css{span.colorbox{display:block;}}
\begin{document}
\EndPreamble

结果:

在此处输入图片描述

相关内容