我花了很长时间才找到这个问题并能够制作 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 编译没有问题
但是使用 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
上述代码是大型文件中的一小段。知道是什么导致了此错误吗?有解决方法吗?我想使用 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
。现在定义tex4ht
,nasser.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
支持。添加了附加元素以支持使用 进行样式设置。tex4ht
BMAT
<mrow class="fourmatrix">
css
结果: