这个文件
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\SI{10}{\square\meter}
$\SI{10}{\square\meter}$
\end{document}
在 padlatex 中构建良好,但在使用 mathml 时在 tex4ht 生成的 HTML 中失败。HTML 页面显示解析 mathml 消息的错误。问题出在数学模式下使用平方米时。在非数学模式下它可以工作。
下面是使用的命令、使用的htlatex配置文件以及错误消息和生成的HTML。
这是配置问题,还是mathml
tex4ht 生成的代码中的错误?我花了很多时间更改我的所有代码以使用 \usepackage{siunitx}
,现在有很多这样的代码已经更改,现在才注意到这个问题。
使用的命令
htlatex foo.tex "my,htm,pic-align,charset=utf-8,notoc*" " -cunihtf -utf8"
其中 my.cfg 是配置文件。请参见下文。它必须位于同一文件夹中(或 $HOME 中)
这是错误
以下是生成的 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"
但是我必须使用 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>