我正在尝试使用 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 字体处理,我们需要它来防止写入一些额外的标签。
结果如下: