我一直在尝试突出显示 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:block
css 属性:
\Preamble{xhtml}
\Configure{HColor}{DarkGray}{\#1A1A1A}
\ConfigureEnv{minted}{\ifvmode\IgnorePar\fi\EndP}{}{}{}
\Css{span.colorbox{display:block;}}
\begin{document}
\EndPreamble
结果: