我的问题与这里的问题类似当使用 arrayrulecolor 和 cmidrule 时,如何消除垂直重新对齐?但无法用建议的答案解决(因为线条被修剪了)。
我想制作一张带有修剪水平线的表格(因为它们可以通过\cmidrule
包生成booktabs
)但颜色会变化。
一个例子:
\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage{booktabs}
\usepackage[table]{xcolor}
\begin{document}
\begin{tabular}{lll}
column 1 & column 2 & column 3 \\ \cmidrule[2pt](lr){1-1}\arrayrulecolor{blue}\cmidrule[2pt](lr){2-2}\arrayrulecolor{black}\cmidrule[2pt](lr){3-3}
text & text & text\\ \cmidrule[0.4pt](lr){1-1}\cmidrule[0.4pt](lr){2-2}\cmidrule[0.4pt](lr){3-3}
text & text & text\\ \cmidrule[0.4pt](lr){1-1}\cmidrule[0.4pt](lr){2-2}\cmidrule[0.4pt](lr){3-3}
\end{tabular}
\end{document}
这几乎满足了我的要求,但是每次颜色变化后,水平线都会垂直重新对齐。我怎样才能省略这种重新对齐?
答案1
您可以使用下面定义的宏来纠正这个垂直重新对齐\corcmidrule[<len>]
:
\documentclass{article}
\usepackage{booktabs}
\usepackage[table]{xcolor}
% Correct for \cmidrule colour adjustment/vertical skip
\newcommand{\corcmidrule}[1][2pt]{% \corcmidrule[<len>]
\\[\dimexpr-\normalbaselineskip-\belowrulesep-\aboverulesep-#1\relax]%
}
\begin{document}
\begin{tabular}{lll}
column 1 & column 2 & column 3 \\
\cmidrule[2pt](lr){1-1}\corcmidrule\arrayrulecolor{blue}%
\cmidrule[2pt](lr){2-2}\corcmidrule\arrayrulecolor{black}%
\cmidrule[2pt](lr){3-3}
text & text & text\\ \cmidrule[0.4pt](lr){1-1}\cmidrule[0.4pt](lr){2-2}\cmidrule[0.4pt](lr){3-3}
text & text & text\\ \cmidrule[0.4pt](lr){1-1}\cmidrule[0.4pt](lr){2-2}\cmidrule[0.4pt](lr){3-3}
\end{tabular}
\begin{tabular}{lll}
column 1 & column 2 & column 3 \\
\cmidrule[5pt](lr){1-1}\corcmidrule[5pt]\arrayrulecolor{blue}%
\cmidrule[3pt](lr){2-2}\corcmidrule[3pt]\arrayrulecolor{orange}%
\cmidrule[7pt](lr){3-3}\arrayrulecolor{black}
text & text & text\\ \cmidrule[0.4pt](lr){1-1}\cmidrule[0.4pt](lr){2-2}\cmidrule[0.4pt](lr){3-3}
text & text & text\\ \cmidrule[0.4pt](lr){1-1}\cmidrule[0.4pt](lr){2-2}\cmidrule[0.4pt](lr){3-3}
\end{tabular}
\end{document}
该宏执行指定长度的传统换行符tabular
。\\[<len>]
长度是考虑到正常基线跳过\normalbaselineskip
、上/下规则跳过而进行的校正,由booktabs
称为\aboverulesep
和\belowrulesep
,以及指定\cmidrule
宽度的参数 - 默认值为2pt
(根据您的 MWE)。或者,如果您有宽度规则(例如)5pt
,则可以使用\corcmidrule[5pt]
,如第二个示例中所用。