\displaystyle 和 \limit 命令在渲染为 mathml 时似乎不起作用

\displaystyle 和 \limit 命令在渲染为 mathml 时似乎不起作用

我正在尝试将 latex 文件渲染为 mathml 以便在 Firefox 中查看。但是,当尝试渲染以下示例时:

\documentclass{article}
\begin{document}
\(\displaystyle\sum\limits_i\)
\end{document}

到 mathml,既不能正确渲染,pandoc也不能在 sigma 符号下正确ht4tex渲染i。我尝试了以下命令:

pandoc text.tex --mathml

htlatex test.tex "html,mathml"

但都没有产生期望的输出。

请注意,当我使用编译为 pdf 文件pdflatex或使用带有--mathjax选项的 pandoc 时,文件可以正确呈现,但我试图获取仅产生 mathml 的解决方案。

答案1

一般而言,在 中很难支持诸如 或 之类的切换命令\itshape\large无法知道应该在哪里以可靠的方式关闭受影响的内容。使用 DVI 文件中的字体信息支持字体切换,但 中没有此类信息。\displaystyletex4httex4ht\displaystyle

最好使用明确标记受影响文本的命令,例如\textit。为了便于使用,您需要定义一个自定义命令,然后可以通过该命令进行修补tex4ht以插入正确的 MathML 元素。

我将按照以下方式重新定义您的 TeX 文件,引入以下\displaycontent命令:

% https://tex.stackexchange.com/q/494579/2891
\documentclass{article}
\newcommand\displaycontent[1]{\displaystyle#1}
\begin{document}
\(\displaycontent{\sum\limits_i}\)
\end{document}

tex4ht的配置myconfig.cfg可能如下所示:

\Preamble{xhtml}
\renewcommand\displaycontent[1]{\HCode{<mstyle displaystyle="true">}#1\HCode{</mstyle>}}
\begin{document}
\EndPreamble

它只是重新定义了\displaycontent包含封闭内容<mstyle displaystyle="true">之前和之后的内容。</mstyle>

该文件可以使用以下方式编译

make4ht -c myconfig.cfg test.tex

这是生成的 MathML:

<math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><mrow><mstyle displaystyle='true'><munder class='msub'><mrow><mo class='MathClass-op'>∑</mo>
  </mrow><mrow><mi>i</mi></mrow></munder></mstyle></mrow></math>

以下是 Firefox 的呈现方式:

在此处输入图片描述

相关内容