TeX4ht:我们可以防止 mathml 或 mathml、mathjax 输出中的斜体大写希腊字母吗

TeX4ht:我们可以防止 mathml 或 mathml、mathjax 输出中的斜体大写希腊字母吗

我正在尝试使用 MathJax 呈现的 MathML 将文档转换为 HTML(原因是纯 mathjax 输出无法正确进行公式编号)。不幸的是,公式中的所有大写希腊字母都变成了斜体,而它们显然应该是直立的(按照普通 TeX 的格式)。

即测试文档

\documentclass{article}
\begin{document}
\[
  \Psi+\psi=P+p
\]
\end{document}

编译为

make4ht -u test 'html,mathml,mathjax'

给出的输出如下

在此处输入图片描述

虽然我更喜欢原始的 LaTeX 格式

在此处输入图片描述

就目前而言,我可以在两种情况下获得正确的公式:

make4ht -u test 'html'

插入公式的 PNG 图像——这根本不是我希望在屏幕上看到的。其他方式

make4ht -u test 'html,mathjax'

这个看起来不错(MathJax 提供了正确的分辨率/独立于浏览器的格式),但在带有方程式编号的文档上失败了。

我非常乐意提供建议!

答案1

你可以尝试这个.cfg文件:

\Preamble{xhtml}
\begin{document}
\def\temp#1#2{\def#1{\PauseMathClass{\HCode{<mi mathvariant="normal">}\special{t4ht@+\string&{35}x#2{59}}x\HCode{</mi>}}\EndPauseMathClass}}
\temp\Psi{03A8}
\temp\Delta{0394}
\temp\Xi{039E}
\temp\Pi{03A0}
\temp\Sigma{03A3}
\temp\Upsilon{03A5}
\temp\Omega{03A9}
\EndPreamble

它重新定义\Psi和其他有问题的程序以输出<mi mathvariant="normal">Ψ</mi>。该mathvariant="normal"属性对于将 Psi 显示为直立文本是必需的。<mi>如果没有此属性,TeX4ht 默认只生成元素。<mi>仅包含单个字母的元素在 MathML 中以斜体显示,因此需要使用 mathvariant 属性。该\special命令使用 TeX4ht DVI 处理指令输出 Psi 的 Unicode 代码点。\PauseMathClass禁用正常的 TeX4ht 字体处理,我们需要它来防止写入一些额外的标签。

结果如下:

在此处输入图片描述

相关内容