htlatex 对 \columncolor 给出错误,但对 \rowcolor 没有错误

htlatex 对 \columncolor 给出错误,但对 \rowcolor 没有错误

我有以下文件

\documentclass{article}
\usepackage[table]{xcolor}
\begin{document}


\begin{tabular}{ >{\columncolor[rgb]{0,.6,1}} cc}
  Blue&White\\
  Blue&White
\end{tabular}
\bigskip

\begin{tabular}{cc}
  \rowcolor[rgb]{0,.6,1} Blue&Blue\\
  White&White
\end{tabular}

\end{document}

它可以用 pdflatex 编译,但是当我在其上运行 htlatex 时,出现错误

(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4.4ht)
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4-math.4ht))     (./try.aux)
! Argument of \:temp has an extra }.
<inserted text> 
                \par 
l.9   B
       lue&White\\
 ?

我猜测,小于号导致了这个问题,但我该如何解决它呢?

我补充说,Michal 的答案确实解决了问题,\columncolor但如果我将其替换为,我会得到同样的错误\color。所以如果我有

\documentclass{article}
\usepackage[table]{xcolor}
\begin{document}


\begin{tabular}{ >{\color[rgb]{0,.6,1}} cc}
  Blue&White\\
 Blue&White
\end{tabular}

\end{document}

然后我得到错误(我复制了加载新代码前一行的错误colortbl.4ht

(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4-math.4ht))
(./colortbl.4ht (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty
(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg))
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4.4ht)
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4-math.4ht))
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/article.4ht
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4.4ht)
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4-math.4ht))
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/dvips.4ht
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4.4ht)
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4-math.4ht))
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/dvipsnam.4ht
(/usr/share/texlive/texmf-dist/tex/latex/graphics/dvipsnam.def)
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4.4ht)
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4-math.4ht))
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4.4ht)
(/usr/share/texlive/texmf-dist/tex/generic/tex4ht/html4-math.4ht)) (./try.aux)
! Argument of \HColor:rgb has an extra }.
<inserted text> 
                \par 
l.7   Blue&
           White\\
? 

我补充说,tex4ht 似乎忽略了颜色定义(没有给出错误消息)。也许这是一个单独的错误?这是一个最小的例子

\documentclass{article}
\usepackage{color}
\definecolor{Blue}{rgb}{0,.6,1}
\begin{document}
\color{Blue} Blue---I don't think so.
\end{document}

答案1

这是 colortbl 支持中的一个错误tex4ht,它要求\columncolor规范参数用空格而不是逗号分隔。我们将很快修复该问题,同时,您可以尝试将以下文件另存为colortbl.4ht

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% colortbl.4ht                          2016-12-13-20:09 %
% Copyright (C) 1997-2009       Eitan M. Gurari         %
% Copyright 2009-2016 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
% is the TeX4ht Project <http://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.

   \RequirePackage{xcolor}
\CT@everycr{\o:noalign:{\global\let\CT@row@color\relax}\the\everycr}
\def\columncolor#1{{\def\current@color{#1}%
                    \csname a:cell-colortbl\endcsname}}
\Odef\columncolor[#1]#2{{\if :#1:\def\current@color{#2}%
                         \else
                           \gHAdvance\tblcol:N by 1
                           \convertcolorspec{#1}{#2}{HTML}\tmp:tblcolor
                           \Configure{HColor}{tblcol-\tblcol:N}{\#\tmp:tblcolor}%
                           \def\current@color{tblcol-\tblcol:N}%
                         \fi
                    \csname a:cell-colortbl\endcsname}%
   \futurelet\:temp\left:colcol}
\def\left:colcol{%
   \ifx [\:temp \expandafter\left::colcol \fi
}
\def\left::colcol[#1]{
   \futurelet\:temp\right:colcol
}
\def\right:colcol{%
   \ifx [\:temp \expandafter\right::colcol \fi
}
\def\right::colcol[#1]{}
\HAssign\tblcol:N = 0
\NewConfigure{@classz}{4}
\pend:def\@classz{\pic:gobble\a:@classz}
\append:def\@classz{\pic:gobble\b:@classz}
\pend:def\insert@column{\pic:gobble\c:@classz}
\append:def\insert@column{\pic:gobble\d:@classz}
\def\:temp{\global\let\CT@do@color\relax}
\HLet\CT@@do@color\:temp
\let\::maketitle\o:maketitle:
\def\o:maketitle:{%
   \ifx \EndPicture\:UnDef
      \NewConfigure{@classz}{4}%
      \Configure{@classz}{}{}{}{}%
   \fi
   \::maketitle }
\def\rowcolor{%
  \o:noalign:{\ifnum0=`}\fi
  \global\let\CT@do@color\CT@@do@color
  \relax
\ifx\LT@head\Un:Def\else
   \ifnum \HRow=0\relax
      \expandafter\ifx\csname lt:sv\endcsname\relax
        \HAssign\HRow = 1\relax
        \ifvoid\LT@head
           \ifvoid\LT@firsthead \else \HAdvance\HRow by 1\relax\fi
        \else \HAdvance\HRow by 1\relax\fi
      \else
        \HAssign\HRow = \lt:sv \relax
        \HAdvance\HRow by 1\relax
      \fi
\fi\fi
%
  \@ifnextchar[\CT@rowa\CT@rowb}
\def\CT@rowa[#1]#2{%
  \pic:gobbleII\a:rowcolor{#1 #2}%
  \gdef\CT@row@color{\CT@color[#1]{#2}}%
  \CT@rowc}
\def\CT@rowb#1{%
  \pic:gobbleII\a:rowcolor{#1}%
  \gdef\CT@row@color{\CT@color{#1}}%
  \CT@rowc}
\NewConfigure{rowcolor}{1}
\def\convert:colorspec#1 #2 #3 #4{%
  \edef\current:color{%
  \ifx\relax#1\relax\else%
    #1\ifx\relax#2\relax\else%
    , #2\ifx\relax#3\relax\else%
      , #3\ifx\relax#4\relax\else%
        , #4%
          \fi%
        \fi%
      \fi%
  \fi%
  }%
}
\def\extract:color#1 #2//{%
  \convert:colorspec#2 {} {} {} {}
  \convertcolorspec{#1}{\current:color}{HTML}\tmp:col
  \def\current@color{#2}
  \Configure{HColor}{\current@color}{\tmp:col}
}
\def\begin:current@color{\let\sv:curcolor\current@color}
\def\end:current@color{%
   \typeout{current color: \current@color a \sv:curcolor}
   \ifx \current@color\sv:curcolor
   \else 
     \expandafter\extract:color\current@color//
     \csname a:text-colortbl\endcsname 
    \fi
}
\NewConfigure{text-colortbl}{1}
\def\GET@column@color{}
\def\color:ii[#1]#2#3!*?: {\def\:temp{#1 #2}}
\def\color:i#1#2!*?: {\def\:temp{#1}}
\let\ctbl:mcol\multicolumn
\def\multicolumn#1#2#3{%
   \ctbl:mcol{#1}{#2}{#3}%
   \expand:after{\expandafter\MUL:LMN\meaning\@preamble}\MUL:PA//%
   \ignorespaces}
{
  \def\MUL:PA{\gdef\MUL:PA}
  \def\MUL:LMN{%
  \catcode`\C=12
  \catcode`\T=12
  \catcode`\@=12
  \catcode`\c=12
  \catcode`\o=12
  \catcode`\l=12
  \catcode`\r=12
  \catcode`\t=12
  \catcode`\e=12
  \catcode`\m=12
  \catcode`\p=12
  \catcode`\d=12
  \catcode`\i=12
  \catcode`\b=12
  \gdef\MUL:LMN}
  \MUL:LMN#1CT@color #2@tempdimb#3//{\::KOLOR{#2}}
  \MUL:PA{CT@color @tempdimb}
}
\def\::KOLOR#1{\if :#1:\else \:KOLOR#1//%
\fi}
\def\:KOLOR{\@ifnextchar[\mc:clr{\mc:clr[]}}
{
  \catcode`\{=12
  \catcode`\}=12
  \catcode`\(=1
  \catcode`\)=2
  \gdef\mc:clr[#1]{#2}((%
       \def\current@color(\if :#1:\else #1 \fi #2)%
       \csname a:cell-colortbl\endcsname
     )\def\:temp##1//()\:temp)
)
\NewConfigure{cell-colortbl}{1}
% 
%    
\Hinput{colortbl}
\endinput

通过稍微扩展的示例,还可以测试其他颜色空间:

\documentclass{article}
% \usepackage[table]{xcolor}
\usepackage{colortbl}
\begin{document}


\begin{tabular}{ >{\columncolor[rgb]{0,.6,1}} cc}
  Blue&White\\
  Blue&White
\end{tabular}
\begin{tabular}{ >{\columncolor[cmyk]{0,.6,1,.4}} cc}
  Blue&White\\
  Blue&White
\end{tabular}
\begin{tabular}{ >{\columncolor[gray]{.6}} cc}
  Blue&White\\
  Blue&White
\end{tabular}
\bigskip

\begin{tabular}{cc}
  \rowcolor[rgb]{0,.6,1} Blue&Blue\\
  White&White
\end{tabular}

\end{document}

您将得到以下结果:

在此处输入图片描述

第二个示例产生以下输出:

在此处输入图片描述

相关内容