尽管有 mathjax 选项,make4ht 仍会为双美元公式创建图像

尽管有 mathjax 选项,make4ht 仍会为双美元公式创建图像

我想将以下(最小化的)TeX 文件转换为 HTML:

\documentclass{article}
\begin{document}
We have $a = a$, \(a = a\) and also
\[c = c\] and even
\begin{equation*}
  E = mc^2.
\end{equation*}
All seems to work, except for
$$F = ma.$$
\end{document}

我的配置文件是

\RequirePackage{amsmath,amsfonts,amssymb,amsthm,enumitem,booktabs,float,graphicx,hyperref}

\Preamble{xhtml}

\Configure{MathJaxConfig}{{
tex: {
      tags: "ams",
      \detokenize{%
      inlineMath: [ [’$’,’$’], ["\\\(","\\\)"] ],
      displayMath: [ [’$$’,’$$’], ["\\[","\\]"] ],}
      processEscapes: true,
      processEnvironments: true,
      packages: [’base’, ’color’, ’ams’, ’boldsymbol’, ’newcommand’, ’verb’]
  }
}}
\Configure{MathjaxSource}{https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js}


\def\eqref#1{$\mathrm{(\ref{#1})}$}

\begin{document}

\EndPreamble

我运行的命令是

make4ht -c /CONF/sample.cfg markup.tex "mathjax"

不幸的是,这会为每个包含在两个美元符号 $$ 之间的公式生成图像。我该如何解决这个问题?我尝试模仿以下解决方案Michal 的答案是,通过将两个美元符号之间的所有内容去标记化,但没有效果。

另外,我不想使用 MathML,因为它不能像 TeX-to-MathJax 那样很好地解析我的公式。

答案1

它应该与最新的 TeX Live 发行版一起工作,但您也可以使用以下配置文件添加支持:

\Preamble{xhtml}
\catcode`\:=11
\Configure{$$}{\:HandleMathjaxCatcodes}{\:RestoreMathjaxCatcodes}{\expandafter\AltlDisplayDollars}
\long\def\AltlDisplayDollars#1$${\alteqtoks{\[#1\]}$$}
\catcode`\:=12
\begin{document}
\EndPreamble

它会将$$源代码转换为\[输出,因此您甚至不需要向 MathJax 提供任何配置。这是生成的 HTML 代码:

<!-- l. 4 --><p class='noindent'>We have \(a = a\), \(a = a\) and also \[c = c\] and even \begin {equation*}  E = mc^2.  \end {equation*} All seems to work, except for
                                 \[F = ma.\]
</p>

在此处输入图片描述

相关内容