关于html:Colortbl弄乱了htlatex中的数组

关于html:Colortbl弄乱了htlatex中的数组

使用 htlatex 编译以下示例时:

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{colortbl}
\usepackage{amsmath}

\begin{document}
\[\begin{array}{|l|c|} \hline 1 & 2\\ \end{array}\]
\end{document}

使用以下配置文件:

\Preamble{xhtml,mathml,-css,NoFonts,fn-in}
\Configure{VERSION}{}
\Configure{DOCTYPE}{\HCode{<!DOCTYPE html>\Hnewline}}
\Configure{HTML}{\HCode{<html>\Hnewline}}{\HCode{\Hnewline</html>}}
\begin{document}
\EndPreamble

它生成一个包含以下 MathML 代码的 html 文档array

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block" >
  <mrow>
    <mtable  align="axis" style="border-right:solid 1px black;border-left:solid 1px black;" equalrows="false" columnlines="solid" equalcolumns="false" class="array">
      <tr class="hline">
        <td><hr /></td>
        <td><hr /></td>
      </tr>
      <mtr>
        <mtd class="array"  columnalign="left">
          <mn>1</mn>
          ...

上述 MathML 代码无效,因为trMathML 中不允许。注释掉后\usepackage{colortbl}会生成以下良好输出:

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block" >
  <mrow>
    <mtable  align="axis" style="border-right:solid 1px black;border-left:solid 1px black;" equalrows="false" columnlines="solid" equalcolumns="false" class="array">
      <mtr class="hline">
        <mtd> <mo> ̲ </mo> </mtd>
        <mtd> <mo> ̲ </mo> </mtd>
      </mtr>
      <mtr>
        <mtd class="array"  columnalign="left">
          <mn>1</mn>
          ...

我可以在配置文件中放入一些东西来阻止 colortbl 破坏不使用 colortbl 的数组吗?

此外,在我的乳胶文件中有彩色数组,例如:

\[\begin{array}{|l|c|} \hline \cellcolor[gray]{.8} 1 & 2\\ \end{array}\]

有没有办法让它们使用上述配置生成有效的 html(xhtml,mathml,-css)?

答案1

这个问题似乎是由array包的配置引起的,它重新定义了表格中水平线的配置,但没有考虑到MathML。我会在源代码中修复这个问题tex4ht,所以它应该很快就会出现在 TeXLive 中。与此同时,你可以尝试以下配置文件:

%\Preamble{xhtml,mathml,-css,NoFonts,fn-in}
\Preamble{xhtml,mathml,NoFonts,fn-in}
\Configure{VERSION}{}
\Configure{DOCTYPE}{\HCode{<!DOCTYPE html>\Hnewline}}
\Configure{HTML}{\HCode{<html>\Hnewline}}{\HCode{\Hnewline</html>}}
\catcode`\:=11
   \Configure{putHBorder}{
  \bgroup \ifmathml
\Configure{HBorder}
   {<\:MM tr\Hnewline
       \ifmathml \expandafter\mml:class\else class\fi="hline">}
   {\ifmathml<\a:mathml mtd><mo> \string&\#x0332; </mo></\a:mathml mtd>
\else
            <td><hr\xml:empty></td>\fi}
   {</\:MM tr>}
   {<\:MM tr\Hnewline
       \ifmathml \expandafter\mml:class\else class\fi ="cline">}
   {<\:MM td></\:MM td>}
   {\ifmathml<\a:mathml mtd><mo> \string&\#x0332; </mo></\a:mathml mtd>
\else
            <td><hr\xml:empty></td>\fi}
   {</\:MM tr>}
   {<\:MM tr\Hnewline
         \ifmathml \expandafter\mml:class\else  class\fi="vspace"
         style="font-size:\HBorderspace">}
   {<\:MM td\Hnewline>\ifmathml\else\string&\#x00A0;\fi
      </\:MM td>}
   {</\:MM tr>}
   \fi\HCode{\HBorder}\egroup}
\catcode`\:=12
\begin{document}
\EndPreamble

我添加了addHBorder用于hline处理的配置。它HBorder在 MathML 模式下使用时配置配置。此配置是从tex4ht源复制粘贴的。请注意,如果没有 CSS,它就无法正常工作,而 CSS 在您的配置文件中被禁用。我已启用它以显示预期结果。

对于此示例文件:

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{colortbl}
\usepackage{array}
\usepackage{amsmath}

\usepackage[table]{xcolor}

\definecolor{maroon}{cmyk}{0,0.87,0.68,0.32}

\begin{document}
\[\begin{array}{|l|c|} \hline 1 & 2\\ \end{array}\]


\[
\begin{array}{|l|cr}
  left1 & center1 & right1\\
  \hline
  d & e & f
\end{array} 
\]

\begin{tabular}{l|l}
  l & l\\
  \hline
  l & l\\
\end{tabular}

\noindent\begin{tabular}{|l|c|}
  \rowcolor{maroon}
  one & two \\
  \rowcolor{maroon!50}
  three & four \\
  \rowcolor{maroon!10}
  five & six
\end{tabular}

\end{document}

结果如下:

在此处输入图片描述

相关内容