初次使用colortbl
,遇到一些小问题...
colortbl
宏包实现对multicol
以及multirow
添加颜色而不导致遮挡现象What is the best practice?
Here below is the mwe..
\documentclass[12pt]{ctexart}
\usepackage{lipsum}
\usepackage{amsmath}
\usepackage{multirow}
\usepackage{colortbl}
\usepackage{xcolor}
\usepackage{tabularray}
\begin{document}
\begin{tabular}{|c|*{3}{>{\columncolor[gray]{.9}}c|}}
\hline
\rowcolor{cyan}
$\beta$ & $50$ & $100$ & $150$ \\
\hiderowcolors
\hline
\cellcolor{orange!60}
\multirow{2}{*}{静态工作点} & AAA & BBB & CCC \\
\arrayrulecolor{red}
\cline{2-4}
\arrayrulecolor{black}
\cellcolor{orange!60}% difficulty with multirow...
& DDD & EEE & FFF \\
\hline
\multirow{2}{*}{动态工作点} & AAA & BBB & CCC \\
\arrayrulecolor{cyan}
\cline{2-4}
\arrayrulecolor{black}
& DDD & EEE & FFF \\
\hline
\multirow{2}{*}{等离子态工作点} & AAA & BBB & CCC \\
\arrayrulecolor{violet}
\cline{2-4}
\arrayrulecolor{black}
& DDD & EEE & FFF \\
\hline
\end{tabular}
\end{document}
其实非常简单,只要把合并单元格挪到下面一格就行了,multirow支持反向合并,而tabularray完全都是另一种思路了,针灸无脑推...
\documentclass[12pt]{ctexart}
\usepackage{lipsum}
\usepackage{amsmath}
\usepackage{multirow}
\usepackage{colortbl}
\usepackage{xcolor}
\usepackage{tabularray}
\begin{document}
\begin{tabular}{|c|*{3}{>{\columncolor[gray]{.9}}c|}}
\hline
\rowcolor{cyan}
$\beta$ & $50$ & $100$ & $150$ \\
\hiderowcolors
\hline
\cellcolor{orange!60}
& AAA & BBB & CCC \\
\arrayrulecolor{red}
\cline{2-4}
\arrayrulecolor{black}
\cellcolor{orange!60}% difficulty with multirow...
\multirow{-2}{*}{静态工作点} & DDD & EEE & FFF \\
\hline
\multirow{2}{*}{动态工作点} & AAA & BBB & CCC \\
\arrayrulecolor{cyan}
\cline{2-4}
\arrayrulecolor{black}
& DDD & EEE & FFF \\
\hline
\multirow{2}{*}{等离子态工作点} & AAA & BBB & CCC \\
\arrayrulecolor{violet}
\cline{2-4}
\arrayrulecolor{black}
& DDD & EEE & FFF \\
\hline
\end{tabular}
\end{document}
我来自己提供一个tabularray
的方法....
%\usepackage{xcolor}
%\usepackage{tabularray}
\begin{tblr}{
hlines,
vlines,
colspec = {cQ[c,cyan7]Q[c,azure7]Q[c,blue7]},
row{1} = {bg=cyan},
hline{3} = {2-4}{red},
hline{5} = {2-4}{cyan},
hline{7} = {2-4}{violet},
cell{2}{1} = {r=2,c=1}{c,orange!60},
cell{4}{1} = {r=2,c=1}{c,orange!60},
cell{6}{1} = {r=2,c=1}{c,orange!60},
}
$\beta$ & $50$ & $100$ & $150$ \\
静态工作点& AAA & BBB & CCC \\
& DDD & EEE & FFF \\
动态工作点& AAA & BBB & CCC \\
& DDD & EEE & FFF \\
等离子态工作点& AAA & BBB & CCC \\
& DDD & EEE & FFF \\
\end{tblr}
谢谢您,原来
\mulitcol
和\mulitrow
还有“反向合并”这种操作,那么对于第二个问题有没有什么好的办法解决呢?我试了一下你的代码的结果....
colortbl
中间横线的颜色还是会被灰色区域遮挡(应该是因为他是一整列覆盖上去的...)@u70550 灰色应该不是遮挡,而是“透明的色彩”沿着横线把合并单元格挖了个空隙出来,不信可以更改页面背景色查看效果...
···
documentclass[border=2pt]{standalone}
usepackage{amsmath}usepackage{xeCJK}setCJKmainfont{SimSun}usepackage{multirow}usepackage{colortbl}usepackage{xcolor}pagecolor{orange!60}
begin{document}
end{document}
···
@u70550 灰色应该不是遮挡,而是“透明的色彩”沿着横线把合并单元格挖了个空隙出来,不信可以更改页面色彩查看效果
@u70550 如果你理解为“一整咧覆盖上去的”,那么我只能说arrayrulecolor和color一样,都是声明式的
@u101077 我不是很懂声明式的含义,能否就有关颜色宏包的这种行为差异给一点例子,或者指个路应该看什么文档有相关的介绍,谢谢您!