带有命名颜色的 ctable 框架颜色

带有命名颜色的 ctable 框架颜色

我在用着ctable并且我希望表格周围有一个与文档主色相匹配的框架。问题是ctableframefg具有接受颜色的 RGB 值的属性,如下所示

\ctable[framefg = 1 0 0]{...

虽然这很好,但不允许我简单地举例framefg = red。以下是我希望能够做的事情:

\documentclass{article}

\usepackage{ctable}
\usepackage{xcolor}
\definecolor{maincolor}{RGB}{243,102,25}

\begin{document}
\ctable[%
  caption = Testing the frame color,
  framerule = 1pt,
  framefg = maincolor,
  framesep = 10pt
]{cc}{}{%
  \FL
  \multicolumn{2}{c}{Header}\ML
  a & b\NN 
  c & d\LL
}
\end{document}

在生成的 PDF 中,表格下方出现

maincolor=“relax0¿0 1“XKV@tempa@toks0¿0 1–XKV@prefix0¿0 1,XKV@fams0¿01 0pt

而给出的错误是

Undefined control sequence. \XKV@resa ->\@nil
Undefined control sequence. \XKV@for@n ...ndafter \XKV@f@r \fi #2{#3}#1,\@nil
Extra \else. ...ter \expandafter \XKV@wh@list \else 
                                                  \def \XKV@tfam {}\expandaf...

还有一些。

然后我去读了ctable在第 12 页找到

34\def\@CTfgcolor#1 #2 #3={%
35\definecolor{@CTframefg}{rgb}{#1,#2,#3}
36\def\@CTfgactual{@CTframefg}}

基本上回答了我的问题,为什么它不起作用。然后我尝试(很天真,因为我真的不知道它是否会起作用)重新定义@CTframefg为我的颜色,就像序言中那样

\makeatletter
\colorlet{@CTframefg}{maincolor}
\def\@CTfgactual{@CTframefg}
\makeatother

并在之前的调用中注释掉该framefg选项\ctable。文档编译成功,但框架颜色是默认的黑色,不是我期望的颜色。

有没有什么解决方法?我真的很想使用命名颜色,因为我正在尝试为许多文档创建一个模板,我只需要更改一个定义maincolor并让整个文档遵循它。

答案1

您可以添加这样的键。

\documentclass{article}
\usepackage{ctable}
\makeatletter
\define@key{suCT}{framefgcol}{\@dfltCTfgcolorcol#1=}
\def\@dfltCTfgcolorcol#1={\colorlet{@dfltCTframefg}{#1}}%
\def\@CTfgcolorcol#1={%
  \colorlet{@CTframefg}{#1}%
  \def\@CTfgactual{@CTframefg}}
\define@key{CT}{framefgcol}{\@CTfgcolorcol#1=}  
\makeatother

\definecolor{maincolor}{RGB}{243,102,25}

\setupctable{framefgcol=maincolor}
\begin{document}
\ctable[%
  caption = Testing the frame color,
  framerule = 1pt,
%  framefgcol = maincolor,
  framesep = 10pt
]{cc}{}{%
  \FL
  \multicolumn{2}{c}{Header}\ML
  a & b\NN 
  c & d\LL
}
\end{document}

在此处输入图片描述

相关内容