使用 htlatex+mathml 和 \uparrow 与 amsmath 包中的对齐方式时出现错误的 mathchar (79119)

使用 htlatex+mathml 和 \uparrow 与 amsmath 包中的对齐方式时出现错误的 mathchar (79119)

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 代码,它生成了alignLatex 代码。所以我不得不编辑代码并将所有内容更改aligneqnarray作为临时修复以生成 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)。

相关内容