我有一个宏,例如\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}