这似乎是一个尚未解决的问题(与问题相关311689和73508). 使用colortbl
with 包tex4ht
会导致错误:Misplaced \noalign
。
以下是重现该错误的一个简短示例:
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{colortbl}
\begin{document}
\begin{tabular}{ll}
\arrayrulecolor[gray]{.7}
\hline
test & 1 \\
test & 2 \\
\arrayrulecolor{black}
\hline
\end{tabular}
\end{document}
在.log
我得到的文件中:
! Misplaced \noalign.
\a:hline ->\ifx \ar:cnt \:UnDef \else \o:noalign:
{\append:def \hline:s {\a:...
l.7 \hline
我还尝试定义一个.cfg
文件来使命令\arrayrulecolor
不执行任何操作:
\Preamble{xhtml}
\renewcommand\arrayrulecolor[2][1]{\ignorespaces}
\begin{document}
\EndPreamble
不幸的是它也没有起作用。
答案1
尝试这个.cfg
文件:
\Preamble{xhtml}
\makeatletter
\catcode`\:=11
% default hline color is black
\def\hline:color{fff}
% redefine default table configuration and put the color rule
\def\a:HBorder{<tr class="hline" style="border-top:1px solid \#\hline:color">}
% get the rule color and convert it to a CSS definition stored in \hline:color
\newcommand\tmp:arrayrulecolor[2][named]{\noalign{\convertcolorspec{#1}{#2}{HTML}\:tmp\global\let\hline:color\:tmp}}
% use \HLet to support picture tables
\HLet\arrayrulecolor\tmp:arrayrulecolor
% don't display <hr> elements in this \hline
\Css{tr.hline td hr{display:none}}
\catcode`\:=12
\makeatother
\begin{document}
\EndPreamble
您在重新定义时遇到的问题是需要使用命令\noalign
。在此配置文件中,我们使用它来将颜色定义转换为 CSS 格式并将其保存在\hline:color
宏中。然后可以使用它来将颜色定义插入 HTML 文件中。
我们不直接重新定义\arrayrulecolor
,而是使用临时的宏和\HLet
命令。这种方法将保留原始宏并在命令中调用它。这对于将表格转换为图片的选项\Picture
是必要的。pic-tabular
宏\a:HBorder
插入了水平行代码。我们使用保存的颜色插入了为边框着色的 CSS 代码。
你的灰色\hline
看起来是这样的:
<tr class='hline' style='border-top:1px solid #B2B2B2'>
它的渲染方式如下: