当使用不同颜色的 cmidrule 时,如何省略垂直重新调整?

当使用不同颜色的 cmidrule 时,如何省略垂直重新调整?

我的问题与这里的问题类似当使用 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],如第二个示例中所用。

相关内容