tex4ht 不再处理某些数学运算。原因是什么?

tex4ht 不再处理某些数学运算。原因是什么?

这看起来像是一个新的严重问题。

我有一个文档,以前用 tex4ht 编译成功。我有一段时间没构建它了。今天当我将其构建为 HTML 时(两种情况下均使用 mathjax 模式),现在无法将一些数学运算转换为 HTML。

这仅在使用 mathjax 模式时发生。数学都是有效的amsmath数学包,因此人们希望 mathjax 能够直接处理它。

这是 MWE

\documentclass[12pt]{book}
\usepackage{amsmath}
\begin{document}
\begin{align}%
\begin{Bmatrix}
c_{1}\\
c_{2}\\
c_{3}\\
c_{4}%
\end{Bmatrix}
&  =%
\begin{pmatrix}
1 & -a & -b & ab\\
1 & a & -b & -ab\\
1 & a & b & ab\\
1 & -a & b & ab
\end{pmatrix}
^{-1}\tag{2}%
\end{align}
\end{document}

现在make4ht -ulm default -a debug foo2.tex "mathjax,htm" 给出 HTML

在此处输入图片描述

删除选项后,tex4ht 可以编译成功mathjax,这表明 mathjax 无法正确处理这个问题,或者 tex4ht 生成了错误的 HTML?但之前它是如何正常工作的?

以下是原始 HTML

<!DOCTYPE html> 
<html lang='en-US' xml:lang='en-US'> 
<head><title></title> 
<meta charset='utf-8' /> 
<meta content='TeX4ht (https://tug.org/tex4ht/)' name='generator' /> 
<meta content='width=device-width,initial-scale=1' name='viewport' /> 
<link href='foo2.css' rel='stylesheet' type='text/css' /> 
<meta content='foo2.tex' name='src' /> 
<script>window.MathJax = { tex: { tags: "ams", }, }; </script> 
 <script async='async' id='MathJax-script' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js' type='text/javascript'></script>  
</head><body>
<!-- l. 33 --><p class='noindent'>\begin {align} \csname @begin:Bmatrix\endcsname \choose:begin {\let \choose:begin \@firstoftwo \ifx \EndPicture \:Undef \PushStack \envn:list \n:list \SaveEverypar \fi \let \chk:pic \EndPicture \ifx \EndPicture \:UnDef \list:save \let \after:end \empty \csname before:beginBmatrix\endcsname \fi \UseHook {env/Bmatrix/before}\@ifundefined {Bmatrix}{\def \reserved@a {\@latex@error {Environment Bmatrix undefined}\@eha }}{\def \reserved@a {\def \@currenvir {Bmatrix}\edef \@currenvline {\on@line }\ifx \EndPicture \:UnDef \ifx \this:listConfigure \empty \null:listConfigure \csname onBmatrix:list\endcsname \fi \fi \@execute@begin@hook {Bmatrix}\csname Bmatrix\endcsname }}\global \@ignorefalse \begingroup \@endpefalse \reserved@a }{\o:begin: {Bmatrix}} c_{1}\\ c_{2}\\ c_{3}\\ c_{4}\end {Bmatrix} &amp; =\begin {pmatrix} 1 &amp; -a &amp; -b &amp; ab\\ 1 &amp; a &amp; -b &amp; -ab\\ 1 &amp; a &amp; b &amp; ab\\ 1 &amp; -a &amp; b &amp; ab \end {pmatrix} ^{-1}\tag {2} \end {align}
</p>   
 
</body> 
</html>

发生了什么变化导致这个数学运算在当前 tex4ht 的 mathjax 模式下不再起作用?

使用 TL 2021,大约 2 周前完全更新。在 Linux ubuntu 上。

这是第二个更简单的例子,显示了这个问题

\documentclass[12pt]{book}
\usepackage{amsmath}
\begin{document}
\begin{align}%
\begin{pmatrix}
c_{1}\\
c_{2}\\
c_{3}%
\end{pmatrix}
&  =%
B
\end{align}
\end{document}

给予

在此处输入图片描述

代替

在此处输入图片描述

参考:在 tex4ht 中

答案1

自去年 11 月以来,我们使用 LaTeX 3 命令来修补数学环境。在这种情况下,环境内容似乎会扩大。我们可以重新定义修补环境的命令\detokenize以防止扩大:

\Preamble{xhtml}

\ExplSyntaxOn
\renewcommand\VerbMath[1]{%
  \cs_if_exist:cTF{#1}{
    \RenewDocumentEnvironment{#1}{+!b}{%
      \NoFonts\expandafter\VerbMathToks\expandafter{\detokenize{##1}}{#1}\EndNoFonts%
    }{}
  }{}%
}


\ExplSyntaxOff
\begin{document}
\EndPreamble

结果如下:

在此处输入图片描述

我将更新 TeX4ht 源,但修复将包含在 TL 2022 中。

相关内容