此问题仅针对 tex4ht。我想将所有代码格式从现在使用的 Javascript 包中移除,而改用列表。
众所周知,listings 包可以与 PDF 一起使用。但是它的许多选项不适用于 tex4ht,例如背景颜色和添加边框。
我查看了一些相关问题(下面的一些链接),但许多问题都很老套,每个问题都给出了不同的方法,我不知道现在该怎么办。
目前 tex4ht 中的最佳做法是什么,至少支持使用 text4ht 显示背景颜色和框架?我认为我需要特殊的 .css。我应该制作 .4ht 吗?如何做到这一切是我需要的帮助。
这是 MWE
\documentclass[12pt]{article}
\usepackage{parskip}
\usepackage{listings,xcolor}
\definecolor{bg}{RGB}{255,255,226}
\lstset{
basicstyle=\small,
breaklines=true,
backgroundcolor=\color{bg},
language=,
frame = single,
frameround=tttt,
rulecolor=\color{gray}
}
\begin{document}
This is my listing
\begin{minipage}{\textwidth}
\begin{lstlisting}
Methods for first order ODEs:
--- Trying classification methods ---
trying a quadrature
<- quadrature successful
\end{lstlisting}
\end{minipage}
\end{document}
使用 lualatex 编译后得到
编译后make4ht -ulm default foo.tex "mathjax,htm"
得到这个网页
以下是相关问题。我只是不知道如何使用目前给出的解决方案来解决上述问题(如果可能的话)。
参考
具有背景颜色的 Verbatim 环境(PDFLaTeX 和 tex4ht)
在 Linux 上使用 TL 2021
更新时间:2022 年 3 月 24 日
使用更新的答案使其工作,但我在每一行末尾都\lstinputlisting
得到了很多额外的信息。这是一个 MWEnbsp
\documentclass[12pt]{book}
\usepackage{parskip}
\usepackage{listings,xcolor}
\definecolor{bg}{RGB}{255,255,226}
\lstset{
basicstyle=\ttfamily\small,
breaklines=true,
backgroundcolor=\color{bg},
language=,
frame = single,
frameround=tttt,
rulecolor=\color{gray}
}
\begin{document}
This is my file:
\lstinputlisting{foo2.tex}
\end{document}
使用编译
make4ht -ulm default -c ./my.cfg foo2.tex "mathjax,htm"
答案中更新的 .cfg 在哪里my.cfg
。这给出了 HTML
答案1
尝试这个配置文件:
\Preamble{xhtml}
\makeatletter
\lst@AddToHook{Init}{%
\bgroup%
% handle backround color and border in listings
\ifx\lst@fillcolor\@empty\else%
\lst@fillcolor%
\extractcolorspec{.}\html@fillcolor%
\expandafter\convertcolorspec\html@fillcolor{HTML}\html@fillcolor%
\Css{\#listing-\listingN{background-color:\#\html@fillcolor;}}%
\fi%
\ifx\lst@rulecolor\@empty\else%
\lst@rulecolor%
\extractcolorspec{.}\html@rulecolor%
\expandafter\convertcolorspec\html@rulecolor{HTML}\html@rulecolor%
\Css{\#listing-\listingN{border: 1px solid \#\html@rulecolor;}}%
\fi%
\egroup%
}
\Configure{lstinputlisting}
{\ifvmode \IgnorePar\fi \EndP
\HCode{<!--l. \the\inputlineno-->}%
\gHAdvance\listingN by 1%
\HCode{<pre class="lstinputlisting" id="listing-\listingN">}%
\bgroup\ttfamily%\special{t4ht@(}%
\Configure{listings}%
{{\everypar{}\leavevmode}}%
{{\everypar{}\leavevmode}}%
{\HCode{\Hnewline<span class="label">}}%
{\HCode{</span>}}%
}
{%\special{t4ht@)}
\egroup%
\ifvmode \IgnorePar\fi \EndP \HCode{</pre>}\par}%
\makeatother
\begin{document}
\EndPreamble
它使用 Listings 在每个环境开始时执行的钩子,并提取当前背景和边框的颜色(如果已设置)。然后它使用 CSS 将这些颜色分配给当前 listings 环境。
结果如下: