\cline 类宏中的 \color 在最后一行之后导致出现额外的行

\cline 类宏中的 \color 在最后一行之后导致出现额外的行

我有一个宏,例如\clineThicknessColor{2-3}{1.5pt}{blue},基本上是\cline加上厚度和颜色(感谢Hood Chatham 对我之前问题的回答)。

一切正常,除了当宏作为 的最后一行输入时tabular,在这种情况下,它会导致 (A) 出现一条额外的线tabular和 (B) 在该添加行的第一列和第二列之间出现一条额外的垂直线。(参见下面的 MWE 和输出中的紫色椭圆。)

第一列和第二列之间的额外垂直线的位置与跨越的列无关\cline

如果我注释掉\color{#4}宏的这一行,问题就消失了(所需的颜色变化也是如此)。

常规库存不会发生此问题\cline

这是什么原因造成的?我该如何修复它(实现没有多余的行和垂直线的颜色变化)?

(让我先声明一下,我知道格式良好的表格首先不应该有垂直线。)

\documentclass{article}
\usepackage{xcolor}

\makeatletter
\def\clineThicknessColor#1#2#3{\@ClineThicknessColor#1\@nil{#2}{#3}}
%   Example usage: \clineThicknessColor{2-3}{1.5pt}{blue}
\def\@ClineThicknessColor#1-#2\@nil#3#4{%
    \omit
    \@multicnt#1%
    \advance\@multispan\m@ne
    \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
    \@multicnt#2%
    \advance\@multicnt-#1%
    \advance\@multispan\@ne
    \color{#4}
    \leaders\hrule\@height#3\hfill
    \cr}
\makeatother

\begin{document}
\begin{tabular}{c | c | c | c}
\hline
A & B & C & D\\
\clineThicknessColor{2-3}{1.5pt}{blue}
E & F & G & H\\
\clineThicknessColor{3-4}{1pt}{red}
\end{tabular}
\end{document}

在此处输入图片描述

答案1

您需要在同一个单元格中恢复颜色,因此:

在此处输入图片描述

\documentclass{article}
\usepackage{xcolor}

\makeatletter
\def\clineThicknessColor#1#2#3{\@ClineThicknessColor#1\@nil{#2}{#3}}
%   Example usage: \clineThicknessColor{2-3}{1.5pt}{blue}
\def\@ClineThicknessColor#1-#2\@nil#3#4{%
    \omit
    \@multicnt#1%
    \advance\@multispan\m@ne
    \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
    \@multicnt#2%
    \advance\@multicnt-#1%
    \advance\@multispan\@ne
    {\color{#4}%
    \leaders\hrule\@height#3\hfill}%
    \cr}
\makeatother

\begin{document}
\begin{tabular}{c | c | c | c}
\hline
A & B & C & D\\
\clineThicknessColor{2-3}{1.5pt}{blue}
E & F & G & H\\
\clineThicknessColor{3-4}{1pt}{red}
\end{tabular}
\end{document}

相关内容