texlive 2012 debian 软件包:
\documentclass[]{article}%
\usepackage{amsmath}
\begin{document}
\begin{align}
& \uparrow\sum F
\end{align}
\end{document}
编译
htlatex report.tex "htm,mathml" " -cunihtf"
给出
/usr/share/texmf/tex/generic/tex4ht/html-mml.4ht)
(/usr/share/texmf/tex/generic/tex4ht/html4-uni.4ht))
(./report.aux)
! Bad mathchar (79119). <argument> & \uparrow \sum F
l.8 \end{align}
?
但当编译为
htlatex report.tex "htm,xhtml" " -cunihtf"
或者
htlatex report.tex "htm" " -cunihtf"
没有错误。
\uparrow
我该怎么办?这是 htlatex 中的错误吗?有什么解决方法吗?使用mathml 和使用 时会出现问题align
。没有则align
不会出现错误。
\documentclass[]{article}%
\usepackage{amsmath}
\begin{document}
$\uparrow\sum F$
\end{document}
现在
htlatex report.tex "htm,mathml" " -cunihtf"
没有错误。
更新
仅供参考,如果您使用 htlatex 并mathml
注意align
。我现在找到的解决方法是使用eqnarray
。现在错误消失了。我正在尝试编译为由 Scientific Word 生成的 HTML 代码,它生成了align
Latex 代码。所以我不得不编辑代码并将所有内容更改align
为eqnarray
作为临时修复以生成 HTML。
答案1
时间过去很久了,但我觉得应该找到问题所在了。有几个地方末尾没有空格mathltx.4ht
。\mathchar"<number>
具体来说,问题似乎出在第 1142 行:
1141 \def\:tempd#1#2{%
1142 \expandafter\def\csname #1\endcsname{\mathchar"13#2}%
1143 \MathSymbol\mathop{#1}%
1144 \expandafter\def\csname #1:limits\endcsname{\expandafter
1145 \:same \math:sym\mathop{#1}\limits}%
1146 \expandafter\def\csname #1:nolimits\endcsname{\expandafter
1147 \:same \math:sym\mathop{#1}\nolimits}%
1148 \expandafter\edef\csname n:#1:\endcsname{\noexpand\ifDisplayMath
1149 \noexpand\expandafter \expandafter\noexpand
1150 \csname #1:limits\endcsname
1151 \noexpand\else \noexpand\expandafter
1152 \expandafter\noexpand
1153 \csname #1:nolimits\endcsname\noexpand\fi}%
1154 \expandafter\pend:def\csname n:#1:\endcsname{\ifDisplayMath
1155 \mathop:prefix{mathsize="big"}\fi}%
1156 }
所发生的是,它\sum
被重新定义,并最终\o:sum:
扩展为
\mathchar"1350
现在,F
它让 TeX 将其添加到数字中,因为F
是一个正确的十六进制数字。并且0x1350F
恰好表示数字 79119。
解决方案:让维护人员知道这个错误;该行应该是
1142 \expandafter\def\csname #1\endcsname{\mathchar"13#2\relax}%
在此期间,你可以将以下内容添加到你的序言中:
\documentclass[]{article}%
\usepackage{amsmath}
\makeatletter
\AtBeginDocument{%
\ifcsname o:sum:\endcsname
\expandafter\g@addto@macro\csname o:sum:\endcsname{\relax}
\fi
}
\makeatother
\begin{document}
\begin{align}
& \uparrow \sum F
\end{align}
\end{document}
但其他运算符也可能存在此问题,例如\bigcup
:仅当后面跟着十六进制数字时(它们是0123456789ABCDEF
)。