在具有列颜色的表中添加无规则的列

在具有列颜色的表中添加无规则的列

我想在具有列颜色但没有规则的表格中添加数字列 - 这意味着,似乎我无法使用\hline
如果我使用\cline{2-4}规则,彩色列就会丢失。

我需要做什么?

暗示:当然,TikZ、nicematrix 等也有解决方案。但我想用尽可能基本的表格工具来实现这一点。

在此处输入图片描述

\documentclass[]{article}
\usepackage{colortbl}
\usepackage{xcolor}
\begin{document}

\definecolor{mygreen}{HTML}{B9D5A5}

\setlength\arrayrulewidth{0.8125pt} % seems to be needed...
\setlength\tabcolsep{1pt}% seems to be needed...

\newcolumntype{P}{>{\centering\arraybackslash}p{3mm}}
\newcolumntype{Q}{>{\columncolor{mygreen}}P}

\def\x{$\scriptstyle\times$}
\newcommand\No[1]{\footnotesize\texttt{#1}}
\newcommand\n[1]{\multicolumn{1}{r|}{\No{#1}}}

\begin{tabular}{r | P | P | Q |}
\multicolumn{1}{c}{}  
     & \multicolumn{1}{c}{\No{1.}}  
         & \multicolumn{1}{c}{\No{2.}}  
              &  \multicolumn{1}{c}{\No{3.}}  \\ \hline
\n{1} &  & & \x \\  \hline % Problem here
\n{2}  &  & &\x  \\ \cline{2-4}
\n{3}  &  & &\x \\ \cline{2-4}
\n{4}  &  & &\x \\ \cline{2-4}
\n{5}  &  & &\x \\ \cline{2-4}
\n{6}  &  & &\x \\ \cline{2-4}
\n{7}  &  & &\x \\ \cline{2-4}
\end{tabular}
\end{document}

答案1

您可以使用\hhline(参见https://tex.stackexchange.com/a/252071/4427)。

\documentclass[]{article}
\usepackage{colortbl,hhline}
\usepackage{xcolor}

\definecolor{mygreen}{HTML}{B9D5A5}

\begin{document}

\begin{center} % will also keep settings local
\setlength\arrayrulewidth{0.8125pt} % seems to be needed...
\setlength\tabcolsep{1pt}% seems to be needed...

\newcolumntype{P}{w{c}{3mm}}% <--- THIS IS GOOD, p{3mm} isn't
\newcolumntype{Q}{>{\columncolor{mygreen}}P}

\newcommand{\x}{$\scriptstyle\times$}
\newcommand\No[1]{\footnotesize\texttt{#1}}

\begin{tabular}{r | P | P | Q |}
\multicolumn{1}{c}{}  
  & \multicolumn{1}{c}{\No{1.}}  
  & \multicolumn{1}{c}{\No{2.}}  
  & \multicolumn{1}{c}{\No{3.}}  \\ \hhline{~|---}
\No{1} & & & \x \\ \hhline{~|---}
\No{2} & & & \x \\ \hhline{~|---}
\No{3} & & & \x \\ \hhline{~|---}
\No{4} & & & \x \\ \hhline{~|---}
\No{5} & & & \x \\ \hhline{~|---}
\No{6} & & & \x \\ \hhline{~|---}
\No{7} & & & \x \\ \hhline{~|---}
\end{tabular}

\end{center}

\end{document}

在此处输入图片描述

  1. hhline是任何发行版中必需的标准 LaTeX 软件包之一
  2. 不要使用\def
  3. w{c}{3mm}>{\centering\arraybackslash}p{3mm}
  4. 我看不出有什么理由\n

如果你将 的定义替换\x

\newcommand{\x}{$\vcenter{\hbox{$\scriptstyle\times$}}$}

在此处输入图片描述

答案2

使用{NiceTabular}nicematrix您可以使用 键first-rowfirst-col,然后 键hvlines要求绘制除所谓的“第一行”和“第一列”之外的所有规则。

\documentclass[]{article}
\usepackage{nicematrix}

\begin{document}

\definecolor{mygreen}{HTML}{B9D5A5}
\newcommand{\x}{$\scriptstyle \times$}
\setlength{\tabcolsep}{2pt}
\NiceMatrixOptions{code-for-first-col = \scriptsize}

\begin{NiceTabular}{cc>{\columncolor{mygreen}}c}[first-col,first-row,hvlines,color-inside]
   & 1. & 2. &  3. \\
1  &    &    &  \x \\ 
2  &    &    &  \x \\ 
3  &    &    &  \x \\ 
4  &    &    &  \x \\ 
5  &    &    &  \x \\ 
6  &    &    &  \x \\ 
7  &    &    &  \x \\ 
\end{NiceTabular}

\end{document}

您需要进行多次编译(因为nicematrix在后台使用了 PGF/TikZ 节点)。

上述代码的输出


事实上,也可以通过输入\arabic{iRow}的值来自动对行进行编号code-for-first-col

\documentclass[]{article}
\usepackage{nicematrix}

\begin{document}

\definecolor{mygreen}{HTML}{B9D5A5}
\newcommand{\x}{$\scriptstyle \times$}
\setlength{\tabcolsep}{2pt}
\NiceMatrixOptions{code-for-first-col = \scriptsize \arabic{iRow}}

\newcommand{\RowNumber}{\arabic{}}

\begin{NiceTabular}{cc>{\columncolor{mygreen}}c}[first-col,first-row,hvlines,color-inside]
& 1. & 2. &  3. \\
&    &    &  \x \\ 
&    &    &  \x \\ 
&    &    &  \x \\ 
&    &    &  \x \\ 
&    &    &  \x \\ 
&    &    &  \x \\ 
&    &    &  \x \\ 
\end{NiceTabular}

\end{document}

输出是一样的。

答案3

tabularray可以自动化单元格内容(参见preto选项):

\documentclass{article}
\usepackage{xcolor}
\definecolor{mygreen}{HTML}{B9D5A5}
\newcommand{\x}{$\scriptstyle\times$}
\usepackage{tabularray}
\UseTblrLibrary{counter}
\newcounter{mycountr}
\newcommand{\myr}{\stepcounter{mycountr}\arabic{mycountr}}
\newcounter{mycountc}
\newcommand{\myc}{\stepcounter{mycountc}\arabic{mycountc}}

\begin{document}
\begin{tblr}{  
  columns={.5cm, colsep=0pt},
  rows={.5cm, rowsep=0pt},
  cells={c,m},stretch=0,
  hline{2-Z}={2-Z}{wd=0.8125pt},
  vline{2-Z}={2-Z}{wd=0.8125pt},
  cell{1}{2-4}={preto={\myr .}, font=\footnotesize\ttfamily},
  cell{2-Z}{1}={preto={\myc}, font=\footnotesize\ttfamily},
  cell{2-Z}{4}={preto={\x}, bg=mygreen},
  }
  &    &    &  \\   
  &    &    &  \\ 
  &    &    &  \\       
  &    &    &  \\ 
  &    &    &  \\ 
  &    &    &  \\ 
  &    &    &  \\ 
  &    &    &  \\ 
\end{tblr}
\end{document}

在此处输入图片描述

相关内容