我在用着ctable
并且我希望表格周围有一个与文档主色相匹配的框架。问题是ctable
framefg
具有接受颜色的 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}