如何保持儲存格邊框與列背景顏色?

如何保持儲存格邊框與列背景顏色?

我用我的記分板有一段時間了,但似乎很難知道我需要寫在哪一欄。

所以我的想法是給所有其他列著色,這樣我就知道我需要使用哪一列。

這是我到目前為止得到的:

\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。請注意,彩色單元格中非常細的白線似乎來自觀察者。

對程式碼的一些解釋:

An\hhline由一系列符號(每列一個)描述:或~(相應列中沒有規則),或者-(單一規則)或=(雙規則)這些符號可以透過描述水平規則和垂直規則如何的符號分隔相交 ( |,||:) 。此外,如果座右銘重複多次,則 array可以使用類似於重複列類型的套件語法的簡短語法。在這裡,我使用了*{5}{...},這意味著相同的座右銘重複了 4 次(並且使用​​了 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 檢視器效果,但您永遠不知道數位印刷機會產生什麼效果。

原始輸出 原來的

修改後的程式碼 沒有白線!

相關內容