考虑以下非常简单的 LaTeX 文件:
\documentclass{article}
\begin{document}
\( z=e^{x^{2}+y^{2}} \)
\end{document}
使用命令make4ht -c config.cfg
where config.cfg
is 配置文件通过 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