如何保持单元格边框与列背景颜色一致?

如何保持单元格边框与列背景颜色一致?

我用了我的记分牌已经有一段时间了,但似乎很难知道我需要在哪一栏写。

所以我的想法是给每一列都涂上颜色,这样我就知道我需要使用哪一列。

以下是我目前得到的信息:

\documentclass{letter}

\usepackage[a4paper, landscape, margin=0.5cm]{geometry}
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{graphicx}
\usepackage{color, colortbl}

\setlength{\extrarowheight}{14pt}

\definecolor{Gray}{gray}{0.85}

\newcolumntype{g}{>{\columncolor{Gray}}c}
\newcolumntype{G}{>{\columncolor{Gray}}X}

\newcommand\customTable{
    \begin{tabularx}{\textwidth}{cc|c|X|g|G|c|X|g|G|c|X|g|G|c|X|g|G|c|X|g|G|c|c|}
        \cline{3-22}

        & & \multicolumn{20}{ c| }{\LARGE Joueurs} \\ \cline{3-22}

        & & \multicolumn{4}{ c| }{} & \multicolumn{4}{ c| }{} & \multicolumn{4}{ c| }{} & \multicolumn{4}{ c| }{} & \multicolumn{4}{ c| }{} \\ \cline{1-24}

        \customRow{10}{\multirow{20}{*}{\rotatebox[origin=c]{90}{\LARGE Cartes}}}\cline{2-24}
        \customRow{9}{}\cline{2-24}
        \customRow{8}{}\cline{2-24}
        \customRow{7}{}\cline{2-24}
        \customRow{6}{}\cline{2-24}
        \customRow{5}{}\cline{2-24}
        \customRow{4}{}\cline{2-24}
        \customRow{3}{}\cline{2-24}
        \customRow{2}{}\cline{2-24}
        \customRow{1}{}\cline{1-22}
    \end{tabularx}
}

\newcommand\customHeader[2]{
    \multicolumn{1}{|c}{#2} &
    \multicolumn{1}{|c|}{\multirow{2}{*}{\LARGE #1}}
}

\newcommand\emptyCells{
    & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & ~~~ \\
}

\newcommand\customBorder{
    \cline{3-3} \cline{5-5} \cline{7-7} \cline{9-9} \cline{11-11} \cline{13-13} \cline{15-15} \cline{17-17} \cline{19-19} \cline{21-21} \cline{23-24}
}

\newcommand\emptyDoubleCells{
    \multicolumn{1}{|c}{} & \multicolumn{1}{|c|}{} & \multicolumn{2}{c|}{} & \multicolumn{2}{g|}{} & \multicolumn{2}{c|}{} & \multicolumn{2}{g|}{} & \multicolumn{2}{c|}{} & \multicolumn{2}{g|}{} & \multicolumn{2}{c|}{} & \multicolumn{2}{g|}{} & \multicolumn{2}{c|}{} & \multicolumn{2}{g|}{} \\
}

\newcommand\customRow[2]{
    \customHeader{#1}{#2}\emptyCells\customBorder\emptyDoubleCells
}

\begin{document}
    \pagenumbering{gobble}
    \customTable
    \customTable
\end{document}

现在,每隔一列都有了背景,但我已经失去了它们的边框。

我看过了这里这里寻求灵感,但我找不到我的错误在哪里。

那么我该如何同时给背景上色并保留边框呢?

答案1

如果彩色表格中的线条出现问题,诀窍在于使用hhline,因此我重新定义了\customBorder。请注意,彩色单元格中非常细的白线似乎来自查看器。

关于代码的一些解释

\hhline由一系列符号(每列一个)描述:(~相应列中没有规则) ,或-(单规则) ,或(双规则) 这些符号可以用描述水平规则和垂直规则如何相交的符号( ,和)=分隔。此外,如果重复多次标语, 可以使用类似于重复列类型的包语法的简短语法。在这里,我使用了,这意味着相同的标语重复了 4 次(使用了 5 次!)。该语法还允许在以下段之前插入代码(例如,从下一个段更改规则颜色)。|||:array*{5}{...}>{...}

为了删除彩色单元格中的白色规则,我将~ 单元格无色时使用的白色规则段替换为与单元格颜色相同的规则段,如下所示|>{\arrayrulecolor{Gray}->{\arrayrulecolor{black}|- ...

\documentclass{letter}

\usepackage[a4paper, landscape, margin=0.5cm]{geometry}
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{graphicx}
\usepackage[table]{xcolor}
\usepackage{hhline, booktabs}
\newcommand\mycline{\hhline{|~*{23}{|-}}}

\setlength{\extrarowheight}{14pt}

\definecolor{Gray}{gray}{0.85}

\newcolumntype{g}{>{\columncolor{Gray}}c}
\newcolumntype{G}{>{\columncolor{Gray}}X}

\newcommand\customTable{
    \begin{tabularx}{\textwidth}{cc|*{5}{c|X|g|G|}c|c|}
        \cline{3-22}

        & & \multicolumn{20}{ c| }{\LARGE Joueurs} \\ \cline{3-22}

        & & \multicolumn{4}{ c| }{} & \multicolumn{4}{ c| }{} & \multicolumn{4}{ c| }{} & \multicolumn{4}{ c| }{} & \multicolumn{4}{ c| }{} \\ %\cline{1-24}
\hhline{*{24}{-}}

        \customRow{10}{\multirow{20}{*}{\rotatebox[origin=c]{90}{\LARGE Cartes}}}%\cline{2-24}
\mycline
        \customRow{9}{}\mycline
        \customRow{8}{}\mycline
        \customRow{7}{}\mycline
        \customRow{6}{}\mycline
        \customRow{5}{}\mycline
        \customRow{4}{}\mycline
        \customRow{3}{}\mycline
        \customRow{2}{}\mycline
        \customRow{1}{}\cline{1-22}
    \end{tabularx}
}

\newcommand\customHeader[2]{
    \multicolumn{1}{|c|}{#2} &
\multicolumn{1}{c|}{\multirow{2}{*}{\LARGE #1}}
}

\newcommand\emptyCells{
    & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & ~~~ \\
}

\newcommand\customBorder{%
\hhline{|~|~|*{5}{>{\arrayrulecolor{black}}-~|->{\arrayrulecolor{Gray}}->{\arrayrulecolor{black}}|}--}
}%

\newcommand\emptyDoubleCells{
    \multicolumn{1}{|c|}{} & \multicolumn{1}{c|}{} & \multicolumn{2}{c|}{} & \multicolumn{2}{g|}{} & \multicolumn{2}{c|}{} & \multicolumn{2}{g|}{} & \multicolumn{2}{c|}{} & \multicolumn{2}{g|}{} & \multicolumn{2}{c|}{} & \multicolumn{2}{g|}{} & \multicolumn{2}{c|}{} & \multicolumn{2}{g|}{} \\
}

\newcommand\customRow[2]{
    \customHeader{#1}{#2}\emptyCells\customBorder\emptyDoubleCells
}

\begin{document}

    \pagenumbering{gobble}
    \customTable
    \customTable

\end{document} 

在此处输入图片描述

答案2

我学会了如何使用 Ulrike Fischer 在评论中解释的技术来处理彩色单元格中白线的恼人影响 重新审视 hhline 和单元格颜色问题

只需将线稍微抬高一点即可。

在上面的代码中,替换

\newcommand\emptyCells{
    & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & ~~~ \\
}

    \newcommand\emptyCells{
    & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & & ~~~ & ~~~ \\[-0.5pt] % small shift up <<<<<<<<
}

它可能只是一个 PDF 查看器效果,但您永远不知道数字印刷机会产生什么。

原始输出 原来的

使用修改后的代码 没有白线!

相关内容