TeX4ht 与 Chrome 的问题

TeX4ht 与 Chrome 的问题

考虑以下非常简单的 LaTeX 文件:

\documentclass{article}
\begin{document}
   \( z=e^{x^{2}+y^{2}} \)
\end{document}

使用命令make4ht -c config.cfgwhere config.cfgis 配置文件通过 TeX4ht 运行它

% We are generating HTML + MathML code
\Preamble{xhtml,mathml}

% Output HTML5 doctype instead of the default for HTML4
\Configure{DOCTYPE}{\HCode{<!doctype html>\Hnewline}}

% Custom page opening
\Configure{HTML}{\HCode{<html lang="en">\Hnewline}}{\HCode{\Hnewline</html>}}

\begin{document}
\EndPreamble

在 Firefox 和 Safari 上,这将产生预期的输出,网页将显示

在此处输入图片描述

不幸的是,在 Chrome 上显示错误,如下所示:

在此处输入图片描述

也就是说,上标(和下标)无法正确显示。我怀疑这是一个数学问题,但我不知道如何解决这个问题。

答案1

您请求mathml转换

 \Preamble{xhtml,mathml}

这通常是一件好事,因为tex4ht否则会使用图像进行数学运算,而且看起来不太好。问题是并非所有浏览器都mathml正确支持(事实上没有一个浏览器支持),或者,就像 Chrome 的情况一样,它们并不支持所有浏览器。幸运的是,我们可以使用MathJax库来解决这些浏览器问题。

另请注意,tex4ht目前已经有了基本支持HTML5,因此您可以简化配置文件,使其如下所示:

\Preamble{xhtml,mathml,html5}
\Configure{HTML}{\HCode{<html lang="en">\Hnewline}}{\HCode{\Hnewline</html>}}

\Configure{@HEAD}{\HCode{\Hnewline<script type="text/javascript"
   src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=MML_CHTML">
   </script>\Hnewline}}
\begin{document}

\EndPreamble

html5支持不支持元素lang中的属性html,所以仍然需要配置HTML钩子。

结果如下:

在此处输入图片描述

答案2

对不起,我很愚蠢:我认为mathml这是问题所在,所以需要做的就是mathml从配置文件中删除:

% We are generating HTML + MathML code
\Preamble{xhtml}

% Output HTML5 doctype instead of the default for HTML4
\Configure{DOCTYPE}{\HCode{<!doctype html>\Hnewline}}

% Custom page opening
\Configure{HTML}{\HCode{<html lang="en">\Hnewline}}{\HCode{\Hnewline</html>}}

\begin{document}
\EndPreamble

相关内容