使用 htlatex 和 MathJax/mathML 方法的转换问题

使用 htlatex 和 MathJax/mathML 方法的转换问题

我正在使用下面这个答案中显示的方法将我的 LaTeX 文件转换为 HTML,以便 MathJax 通过 MATHML 处理生成的 LaTeX 文件:

将 Latex 转换为 MathJax-HTML

  "... mathml which can be then displayed with mathjax...."

一切都运行良好,使用上述方法,数学看起来比标准方法好得多htlatex。除了$\dot{x}$现在显示得非常奇怪并且渲染效果不佳之类的事情。我在 IE、Firefox 和 Chrome 上尝试过这种方法,都遇到了同样的问题。

我将显示小型 tex 文件,然后显示htlatex我使用的命令,然后显示htlatex .cfg文件(与上面答案中显示的文件完全相同.cfg),然后显示 HTML 输出。

LaTeX 文件:

\documentclass[12pt]{article}%
\begin{document}    
$\dot{\alpha}$
$x \dot{x}$
\end{document}

用于生成 HTML 的命令(也是上面答案中给出的相同命令):

 htlatex t.tex "t.cfg,charset=utf-8" " -cunihtf -utf8"

上面使用的文件t.cfg与上面答案中显示的文件相同,因此不会再在这里显示。

生成的 HTML 的屏幕截图(请注意,x带点的文字看起来不正确):

在此处输入图片描述

将其与 PDF 输出进行比较:

在此处输入图片描述

这是 HTML 文件本身。我认为问题是 MATHML 不正确?这是一个htlatex错误吗?还是 MATHML?还是 MathJax?如何纠正它?

<!DOCTYPE html> 
<html> 
<head> <title></title> 
<meta charset="UTF-8" /> 
<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> 
<link rel="stylesheet" type="text/css" href="t.css" /> 
<script type="text/javascript" 
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" 
></script> 
<style type="text/css"> 
.MathJax_MathML {text-indent: 0;} 
</style> 
</head><body 
>
<!--l. 4--><p class="noindent" ><!--l. 4--><math 
 xmlns="http://www.w3.org/1998/Math/MathML"  
display="inline" ><mover 
accent="true"><mrow 
><mi 
>α</mi></mrow><mo 
class="MathClass-op">̇</mo></mover></math>
<!--l. 5--><math 
 xmlns="http://www.w3.org/1998/Math/MathML"  
display="inline" ><mi 
>x</mi><mi 
>ẋ</mi></math>
</p>

</body> 
</html>

虽然总体来说,在这种新方法(mathml/mathjax,我不知道它是如何工作的)下,数学看起来更好,但还是有一些地方数学在 HTML 中呈现得不好。这是另一个例子

\documentclass[12pt]{article}%
\begin{document}    
$\dot{x}_{1}^{2}$    
\end{document}

在此处输入图片描述

答案1

主要问题是 tex4ht 已配置为使用预组合的重音 x,\dot{x}这是错误的翻译,并产生不正确的输出,如您所见。生成的 MathML 应使用<mover>与点 x 相同的形式。

(1)是你的原件

 <!DOCTYPE html> 
<html> 
<head> <title></title> 
<meta charset="UTF-8" /> 
<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> 
<script type="text/javascript" 
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" 
></script> 
<style type="text/css"> 
.MathJax_MathML {text-indent: 0;} 
</style> 
</head><body 
>
<!--l. 4--><p class="noindent" ><!--l. 4--><math 
 xmlns="http://www.w3.org/1998/Math/MathML"  
display="inline" ><mover 
accent="true"><mrow 
><mi 
>α</mi></mrow><mo 
class="MathClass-op">̇</mo></mover></math>
<!--l. 5--><math 
 xmlns="http://www.w3.org/1998/Math/MathML"  
display="inline" ><mi 
>x</mi><mi 
>ẋ</mi></math>
</p>

</body> 
</html>

(2)这是否固定使用实数 x,请注意,您会得到预期的数学斜体 x。

 <!DOCTYPE html> 
<html> 
<head> <title></title> 
<meta charset="UTF-8" /> 
<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> 
<script type="text/javascript" 
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" 
></script> 
<style type="text/css"> 
.MathJax_MathML {text-indent: 0;} 
</style> 
</head><body 
>
<!--l. 4--><p class="noindent" ><!--l. 4--><math 
 xmlns="http://www.w3.org/1998/Math/MathML"  
display="inline" ><mover 
accent="true"><mrow 
><mi 
>α</mi></mrow><mo 
class="MathClass-op">̇</mo></mover></math>
<!--l. 5--><math 
 xmlns="http://www.w3.org/1998/Math/MathML"  
display="inline" ><mi 
>x</mi><mover 
accent="true"><mrow 
><mi 
>x</mi></mrow><mo 
class="MathClass-op">̇</mo></mover></math>
</p>

</body> 
</html>

但是,既然你正在使用 MathJax,那么你可以直接给它 TeX 片段并让它翻译它们 (3)

 <!DOCTYPE html> 
<html> 
<head> <title></title> 
<meta charset="UTF-8" /> 
<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> 
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});
</script>
<script type="text/javascript" 
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" 
></script> 
<style type="text/css"> 
.MathJax_MathML {text-indent: 0;} 
</style> 
</head><body 
>
<!--l. 4--><p class="noindent" >
$\dot{\alpha}$
$x \dot{x}$
</p>

</body> 
</html>

在此处输入图片描述

答案2

在 matml 的配置中,数学重音的处理方式很复杂tex4ht。我不太理解这种方式,所以我无法提供干净的解决方案。

\begin{document}简单的解决方法是在文件后面添加此行cfg

\def\dot#1{\Tg<mover accent="true">#1\HCode{<mo>&sdot;</mo></mover>}}

但这在以下情况下仍然失败

$\dot{x}_{1}^{2}$  

其他方法是配置tex4ht为不转换数学,这两个答案中描述了这一点:

tex4ht 保持方程不变

tex4ht 保持方程不变 - 包括 \[...\] 和 \(...\)

相关内容