与 text4ht 一起使用时如何添加带有列表的框架和背景颜色

与 text4ht 一起使用时如何添加带有列表的框架和背景颜色

此问题仅针对 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"得到这个网页

在此处输入图片描述

以下是相关问题。我只是不知道如何使用目前给出的解决方案来解决上述问题(如果可能的话)。

参考

hlatex 的简单颜色环境

具有背景颜色的 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 环境。

结果如下:

在此处输入图片描述

相关内容