tex4ht 使用 mathml 开关编译错误,使用 pmatrix 和 easybmat 的多行

tex4ht 使用 mathml 开关编译错误,使用 pmatrix 和 easybmat 的多行

我花了很长时间才找到这个问题并能够制作 MWE。我希望有人知道是什么原因造成的,以及是否有解决方法。这个问题出现在这个小例子中,只有当我在 tex4ht 中使用 mathml 开关时才会出现。这真的很奇怪。在使用 tex4ht 和 mathml 之前我遇到过问题,但这些问题出现在 HTML 文件中,从未出现在实际编译阶段。

我试图使用一种解决方案将虚线添加到矩阵中,如图所示是否可以在 amsmath 的 pmatrix 的行/列之间添加虚线?

\documentclass{article}
\usepackage{amsmath}
\usepackage{easybmat}
\begin{document}

\begin{multline*}
\bgroup
\renewenvironment{pmatrix}{\left(\begin{BMAT}(@){c.c}{c.c}}
{\end{BMAT}\right)}
\begin{pmatrix}
A & B\\
C & D
\end{pmatrix}
\egroup
\end{multline*}    
\end{document}

使用 pdflatex 编译没有问题

Mathematica 图形

但是使用 tex4ht 时会出现此错误

htlatex foo.tex "htm,mathml"

(/usr/local/texlive/2013/texmf-dist/tex/generic/tex4ht/html-mml.4ht)
(/usr/local/texlive/2013/texmf-dist/tex/generic/tex4ht/html4-uni.4ht))
(./foo.aux)
l.16 --- TeX4ht warning --- \halign translated into linear text ---
! Missing # inserted in alignment preamble.
<to be read again> 
                   &
l.16 \end{multline*}                    
? 

但是使用此命令,它现在可以正常编译,并且 HTML 文件可以正常显示矩阵中的虚线。

htlatex foo.tex "htm"  %ok

如果我删除multline*环境,它现在在两种模式下都可以正常工作

\documentclass{article}
\usepackage{amsmath}
\usepackage{easybmat}
\begin{document}    
\[
\bgroup
\renewenvironment{pmatrix}{\left(\begin{BMAT}(@){c.c}{c.c}}
{\end{BMAT}\right)}
\begin{pmatrix}
A & B\\
C & D
\end{pmatrix}
\egroup
\]    
\end{document}

htlatex foo.tex "htm"   %ok
htlatex foo.tex "htm,mathml"  %ok compile, but wrong HTML display on firefox

Mathematica 图形

上述代码是大型文件中的一小段。知道是什么导致了此错误吗?有解决方法吗?我想使用 mathml,因为我使用 mathjax 进行最终显示(在这个小示例中,我没有显示这一点)并且想继续使用 mathml。我还需要使用\usepackage{easybmat}

最后一个事实点:如果我移除该easybmat部件,那么它就可以再次正常工作:

\documentclass{article}
\usepackage{amsmath}
\begin{document}

\begin{multline*}
\begin{pmatrix}
    A & B\\
    C & D
\end{pmatrix}
\end{multline*}    
\end{document}

htlatex foo.tex "htm,mathml"  %ok
htlatex foo.tex "htm"  %ok

但我需要使用easybmat添加虚线,如问题中所述这里

easybmat因此,只有在使用时才会出现问题multline。仅供参考,这里还有一个关于使用多行与 pmatrix 时出错的问题,不确定是否相关表格中的 minipage 内的 multline* 内的 pmatrix 出现错误

texlive 2013,在 Linux Mint 16 上

tex4ht.c (2012-07-25-19:36 kpathsea)

答案1

我没有easybmat支持的解决方案,但根据您的具体情况,您可以简化代码并使用不同的、受支持的tex4ht矩阵环境。可以添加虚线css

一、简化文件:

\documentclass{article}
\usepackage{nasser}
\begin{document}
\begin{multline*}%
\begin{fourmatrix}
A & B\\
C & D
\end{fourmatrix}
\end{multline*}
\end{document}

fourmatrix使用环境代替显式的BMAT, 。它在包pmatrix中定义:nasser.sty

\ProvidesPackage{nasser}
\RequirePackage{amsmath}
\RequirePackage{easybmat}

\newenvironment{fourmatrix}{%
\left(\begin{BMAT}(@){c.c}{c.c}}
{\end{BMAT}\right)}

注意,不需要重新定义pmatrix环境,直接使用即可BMAT。现在定义tex4htnasser.4ht

\renewenvironment{fourmatrix}{\begin{pmatrix}}{\end{pmatrix}}
\ConfigureEnv{fourmatrix}{\HCode{<mrow class="fourmatrix">}}{\HCode{</mrow>}}{}{}

\Css{.fourmatrix mtable{
    border-collapse: collapse;
}}

\Css{.fourmatrix mtd{
    border-right:1px dashed black;
}}

\Css{.fourmatrix mtd:last-child{
    border-right: none;
}}

\Css{.fourmatrix mtr{
    border-bottom: 1px dashed black;
}}

\Css{.fourmatrix mtr:last-child{
    border-bottom:none;
}}

fourmatrix被重新定义为使用,它由代替pmatrix支持。添加了附加元素以支持使用 进行样式设置。tex4htBMAT<mrow class="fourmatrix">css

结果:

在此处输入图片描述

相关内容