使用 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 代码无效,因为tr
MathML 中不允许。注释掉后\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}
结果如下: