这看起来像是一个新的严重问题。
我有一个文档,以前用 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} & =\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}
</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 中。