使用 \Configure{$}{\PicMath}{\EndPicMath}{} 时,tex4ht 会产生损坏的输出

使用 \Configure{$}{\PicMath}{\EndPicMath}{} 时,tex4ht 会产生损坏的输出

在 tex4ht 配置文件中,我有以下两行:

    \Configure{$}{\PicMath}{\EndPicMath}{}
    \Configure{PicMath}{}{}{}{class="math";align="absmiddle"}

这些已经是 .cfg 5 年或更长时间了。没问题。这些用于告诉 tex4ht 将内联数学转换为图像,否则不会。所以这两行非常基本,必须一直存在。

我刚刚发现,不知为何,当我使用时adjustbox,HTML 页面上的输出全部损坏。原来,从 .cfg 文件中删除上述两行后,输出就恢复正常了。

我不知道为什么这两行会影响adjustbox或导致 tex4ht 这样做。

这是 MWE

\documentclass[12pt]{book}% 
\usepackage{listings}
\usepackage{adjustbox}
\begin{document}
\begin{adjustbox}{max width=0.8\textwidth,fbox=0.1pt,margin=2pt}
\begin{lstlisting}[basicstyle=\ttfamily,columns=fullflexible,keepspaces=true]
  This is just some text
     which is verbatim using listing
\end{lstlisting} 
\end{adjustbox}

\end{document}

这是 MWE nma.cfg文件,它应该与 .tex 文件位于同一文件夹中

\Preamble{ext=htm,charset="utf-8",p-width,pic-align}
\Configure{DOCTYPE}{\HCode{<!DOCTYPE html>\Hnewline}}
\Configure{HTML}{\HCode{<html>\Hnewline}}{\HCode{\Hnewline</html>}}
\Configure{@HEAD}{}
\Configure{@HEAD}{\HCode{<meta charset="utf-8"/>\Hnewline}}
\Configure{@HEAD}{\HCode{<link rel="stylesheet" type="text/css" 
   href="\expandafter\csname aa:CssFile\endcsname" />\Hnewline}}

\begin{document}
\Configure{$}{\PicMath}{\EndPicMath}{}
\Configure{PicMath}{}{}{}{class="math";align="absmiddle"} 
\EndPreamble

使用以下方式编译htlatex foo7_1.tex "nma.cfg,htm"

HTML 页面是

Mathematica 图形

删除 .cfg 文件并使用htlatex foo7_1.tex "htm"输出进行编译时

Mathematica 图形

出于某种原因,tex4ht 认为adjustbox内容是数学,并试图将其变成图像?删除adjustbox并保留 .cfg 也可以解决问题:

\documentclass[12pt]{book}% 
\usepackage{listings}

\begin{document}
\begin{lstlisting}[basicstyle=\ttfamily,columns=fullflexible,keepspaces=true]
  This is just some text
     which is verbatim using listing
\end{lstlisting} 
\end{document}

使用编译htlatex foo7_1.tex "nma.cfg,htm"给出

Mathematica 图形

所以问题是:可以保留 .cfg 原样并adjustbox与 tex4ht 一起使用吗?

该问题发生在 TL 2015 和 TL 2016 上。

答案1

tex4ht不认为adjustbox使用数学模式。adjustbox在内部使用数学模式,至少在您的选项中。没有用于adjustbox的配置tex4ht。一些基本配置,只是重置adjustbox环境并打印一些可以使用CSS设置样式的基本HTML结构,可能看起来像这样:

% adjustbox.4ht
\renewenvironment{adjustbox}[1]{}{}
\ConfigureEnv{adjustbox}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="adjustbox">}}{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}}{}{}
\endinput

生成的 HTML:

  <div class="adjustbox"> <!--l. 6-->
   <div class="lstlisting" id="listing-1"><span class="label"><a 
 id="x1-2r1"></a></span><span 
class="cmtt-12"> </span><span 
class="cmtt-12"> </span><span 
class="cmtt-12">This</span><span 
class="cmtt-12"> </span><span 
class="cmtt-12">is</span><span 
class="cmtt-12"> </span><span 
class="cmtt-12">just</span><span 
class="cmtt-12"> </span><span 
class="cmtt-12">some</span><span 
class="cmtt-12"> </span><span 
class="cmtt-12">text</span><span 
class="cmtt-12"> </span><br /><span class="label"><a 
 id="x1-3r2"></a></span><span 
class="cmtt-12"> </span><span 
class="cmtt-12"> </span><span 
class="cmtt-12"> </span><span 
class="cmtt-12"> </span><span 
class="cmtt-12"> </span><span 
class="cmtt-12">which</span><span 
class="cmtt-12"> </span><span 
class="cmtt-12">is</span><span 
class="cmtt-12"> </span><span 
class="cmtt-12">verbatim</span><span 
class="cmtt-12"> </span><span 
class="cmtt-12">using</span><span 
class="cmtt-12"> </span><span 
class="cmtt-12">listing</span>
   </div>
   </div>

在此处输入图片描述

相关内容