siunitx 包与 tex4ht 一起使用并生成无效的单位 mathml

siunitx 包与 tex4ht 一起使用并生成无效的单位 mathml

这个文件

\documentclass{article}
\usepackage{siunitx}
\begin{document}
 \SI{10}{\square\meter}

 $\SI{10}{\square\meter}$
\end{document}

在 padlatex 中构建良好,但在使用 mathml 时在 tex4ht 生成的 HTML 中失败。HTML 页面显示解析 mathml 消息的错误。问题出在数学模式下使用平方米时。在非数学模式下它可以工作。

下面是使用的命令、使用的htlatex配置文件以及错误消息和生成的HTML。

这是配置问题,还是mathmltex4ht 生成的代码中的错误?我花了很多时间更改我的所有代码以使用 \usepackage{siunitx},现在有很多这样的代码已经更改,现在才注意到这个问题。

使用的命令

htlatex foo.tex "my,htm,pic-align,charset=utf-8,notoc*" " -cunihtf -utf8"

其中 my.cfg 是配置文件。请参见下文。它必须位于同一文件夹中(或 $HOME 中)

这是错误

Mathematica 图形

以下是生成的 HTML 代码

<!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="foo.css" /> 
<script type="text/x-mathjax-config"> 
MathJax.Hub.Config({ 
extensions: ["tex2jax.js"], jax: ["input/TeX", "output/HTML-CSS"], tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ], 
displayMath: [ ['$$','$$'], ["\\[","\\]"] ], 
ignoreClass: "fancyvrb|verbatim", 
processEscapes: true }, "HTML-CSS": { availableFonts: ["TeX"] } }); 
</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" >10 m<sup class="textsuperscript"><span 
class="cmr-9">2</span></sup>
<!--l. 6--><p class="indent" >   <!--l. 6--><math 
 xmlns="http://www.w3.org/1998/Math/MathML"  
display="inline" ><mstyle 
class="text"><mtext  >10</mtext></mstyle><mspace width="0em" class="thinspace"/><mstyle 
class="text"><mtext  >m<sup class="textsuperscript">2</sup></mtext></mstyle></math>

</body> 
</html>

这是我在 mathml 模式下使用的 .cfg

\Preamble{mathml}
\Configure{VERSION}{}
  \Configure{DOCTYPE}{\HCode{<!DOCTYPE html>\Hnewline}}
  \Configure{HTML}{\HCode{<html>\Hnewline}}{\HCode{\Hnewline</html>}}
  \Configure{@HEAD}{}
  \Configure{@HEAD}{\HCode{<meta charset="UTF-8" />\Hnewline}}
  \Configure{@HEAD}{\HCode{<meta name="generator" content="TeX4ht
  (http://www.cse.ohio-state.edu/\string~gurari/TeX4ht/)" />\Hnewline}}
  \Configure{@HEAD}{\HCode{<link
           rel="stylesheet" type="text/css"
           href="\expandafter\csname aa:CssFile\endcsname" />\Hnewline}}

  \Configure{@HEAD}{\HCode{%
     <script type="text/x-mathjax-config">\Hnewline
       MathJax.Hub.Config({\Hnewline
         extensions: ["tex2jax.js"],
         jax: ["input/TeX", "output/HTML-CSS"],
         tex2jax: {
           \unexpanded{inlineMath: [ ['$','$'], ["\\(","\\)"] ],}\Hnewline
           \unexpanded{displayMath: [ ['$$','$$'], ["\\[","\\]"] ],}\Hnewline
           ignoreClass: "fancyvrb|verbatim",\Hnewline
           processEscapes: true
         },
         "HTML-CSS": { availableFonts: ["TeX"] }
       });\Hnewline
     </script>
  }}

  \Configure{@HEAD}{\HCode{<script type="text/javascript"\Hnewline
  src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"\Hnewline
  ></script>\Hnewline}}
  \Configure{@HEAD}{\HCode{<style type="text/css">\Hnewline
    .MathJax_MathML {text-indent: 0;}\Hnewline
  </style>\Hnewline}}

\begin{document}
\EndPreamble

当不使用时mathml,错误就会消失(注意,不使用 my.cfg)

htlatex foo.tex "htm,pic-align,charset=utf-8,notoc*" " -cunihtf -utf8"

Mathematica 图形

但是我必须使用 mathml,因为我使用 mathjax 来渲染所有内容,并且我不想再使用 .png 图像进行数学运算。

我在 Linux mint 16 上使用 texlive 2013

答案1

目前该问题似乎已经修复,结果如下:

在此处输入图片描述

MathML 代码看起来也不错:

<!-- l. 4 --><p class='noindent'><!-- l. 4 --><math display='inline' xmlns='http://www.w3.org/1998/Math/MathML'><mrow><mn>10</mn></mrow></math> <!-- l. 4 --><math display='inline' xmlns='http://www.w3.org/1998/Math/MathML'><msup><mrow><mstyle mathvariant='normal'><mi>m</mi></mstyle></mrow><mrow><mn>2</mn></mrow></msup></math>
</p><!-- l. 6 --><p class='indent'>   <!-- l. 6 --><math display='inline' xmlns='http://www.w3.org/1998/Math/MathML'><mrow><mn>10</mn><mspace class='thinspace' width='0.17em'></mspace><msup><mrow><mstyle mathvariant='normal'><mi>m</mi></mstyle></mrow><mrow><mn>2</mn></mrow></msup></mrow></math>
</p>

相关内容