tex4ht 和 colortbl 会产生放错位置的 \noalign 错误

tex4ht 和 colortbl 会产生放错位置的 \noalign 错误

这似乎是一个尚未解决的问题(与问题相关31168973508). 使用colortblwith 包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'>

它的渲染方式如下:

在此处输入图片描述

相关内容