我的 MWE 是:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
\boxed{A} \boxed{B}
\]
\end{document}
当我使用 pdflatex 进行编译时,我得到了并排的两个框,但是当使用类似的东西进行编译时,make4ht test.tex "mathml, mathjax"
只有第一个框被正确呈现。这仅在使用 mathml 时发生,如果我使用进行编译,则make4ht test.tex "mathjax"
一切都正确。
答案1
从编译过程中的这个警告信息可以看出出现了问题:
[WARNING] domfilter: /home/mint/texmf/scripts/lua/LuaXML/luaxml-mod-xml.lua:175: Unbalanced Tag (/mrow) [char=847]
这意味着生成的 HTML 代码包含一些严重错误,并且可能看起来不正确。
生成的 HTML + MathML 代码如下:
<table class="equation-star"><tr><td>
<!--l. 5--><math
xmlns="http://www.w3.org/1998/Math/MathML"
display="block" class="equation">
<menclose notation="box"><mrow> <mi
>A</mi> </mrow></menclose><menclose notation="box"><mrow><!--l. 6--><p class="indent" > <mi
>B</mi> </mrow></menclose>
</math></p></td></tr></table>
问题在于这个标签插入到了 MathML 中:<p class="indent" >
。它不应该在那里。幸运的是,我们可以通过以下配置轻松阻止它boxed
:
\序言{xhtml}
\catcode`\:=11
\Configure{boxed}
{\ifmathml \Tg<\a:mathml menclose \a:mathml notation="box">\Tg<\a:mathml mrow>%
\else \HCode{<span class="boxed">}\fi\IgnorePar}
{\ifmathml \Tg</\a:mathml mrow>\Tg</\a:mathml menclose>%
\else \HCode{</span>}\fi}
\catcode`\:=12
\begin{document}
\EndPreamble
它重用了原始的 TeX4ht 代码。唯一的变化是我们\IgnorePar
在第二个参数中使用了命令。它应该可以防止插入虚假<p>
标签。
经过这样的改变,结果是正确的:
<table class='equation-star'><tr><td>
<!-- l. 5 --><math class='equation' display='block' xmlns='http://www.w3.org/1998/Math/MathML'><mrow>
<menclose notation='box'><mrow> <mi>A</mi> </mrow></menclose><menclose notation='box'><mrow> <mi>B</mi> </mrow></menclose>
</mrow></math></td></tr></table>