表格环境中的角度单元格和背景颜色

表格环境中的角度单元格和背景颜色

我正在尝试制作一个表格,其中顶行倾斜 45 度并具有背景填充;我发现有几种不同的方法可以在单元格中制作有角度的文本,但有一件事我无法弄清楚,那就是如何让背景颜色与文本一起跟随角度。我从这里得到了代码:表格中的列标题旋转这会创建我想要的角度,但它会覆盖列颜色。我可以使用该rotating包来保留颜色,但这不会改变单元格本身的角度,只会改变其中的文本的角度。

\documentclass{article}

\usepackage{adjustbox}
\usepackage{array}
\usepackage{xcolor,colortbl}
\usepackage{multirow}

\newcolumntype{R}[2]{%
    >{\adjustbox{angle=#1, lap=\width-(#2)}\bgroup}%
    l%
    <{\egroup}%
}
\newcommand*\rot{\multicolumn{1}{R{45}{1em}}}
\newcolumntype{a}{>{\columncolor{blue!15}}l}

\begin{document}

\begin{tabular}{lla}
    & \rot{Column 1}    & \rot{Column 2} \\
\hline
Information & X         & \\
More information    &           & X \\
\end{tabular}


\end{document}

我假设我需要插入一个列颜色,\newcolumntype但我不确定它与其他代码的位置。

答案1

我不确定您到底想要什么,但这里有一个关于环境{NiceTabular}的建议nicematrix

\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}

\NewDocumentCommand{\rot}{m}{\rlap{\hspace*{2mm}\rotatebox{45}{#1}}}


\NewDocumentCommand{\ColumnColor}{mm} % #1 : number of column ; #2 ; color
  {
    \begin{tikzpicture} [fill = #2]
    \fill let \p1 = (1) , \p2 = (2) , \n1 = { \y1 - \y2 }
          in (2-|#1) -- ($(2-|#1)+(\n1,\n1)$) 
                     -- ($(2-|\inteval{#1+1})+(\n1,\n1)$) 
                     -- (2-|\inteval{#1+1}) 
                     -- cycle ;
    \fill (2-|#1) rectangle (last-|\inteval{#1+1}) ; 
    \end{tikzpicture}
  }


\begin{NiceTabular}{lll}
\CodeBefore
  \ColumnColor{2}{red!15}
  \ColumnColor{3}{blue!15}
\Body
                    & \rot{Column 1} & \rot{Column 2} \\
  \Hline
  Information      & X              &                \\
  More information &                & X              \\
\end{NiceTabular}

\end{document}

您需要多次编译(因为使用了 PGF/Tikz 节点nicematrix)。

上述代码的输出


如果您想为第一行添加颜色(“有角度的单元格”除外),则由于技术原因,您无法\rowcolor在中使用\CodeBefore:命令\rowcolor、、\cellcolor\columncolor不会按照它们在中出现的顺序执行,\CodeBefore因为它们是按颜色分组的(为了避免在某些 PDF 查看器中相同颜色的面板之间出现细的白线)。

也许我应该将密钥添加到包中nicematrix,以便在这种情况下禁用该功能。

使用 的当前版本nicematrix,您必须定义自己的命令\RowColor,该命令将通过使用 Tikz 来填充由 提供的 PGF/Tikz 分隔的矩形来完成工作nicematrix

\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}

\NewDocumentCommand{\rot}{m}{\rlap{\hspace*{2mm}\rotatebox{45}{#1}}}


\NewDocumentCommand{\ColumnColor}{mm} % #1 : number of column ; #2 : color
  {
    \begin{tikzpicture} [fill = #2]
    \fill let \p1 = (1) , \p2 = (2) , \n1 = { \y1 - \y2 }
          in (2-|#1) -- ($(2-|#1)+(\n1,\n1)$) 
                     -- ($(2-|\inteval{#1+1})+(\n1,\n1)$) 
                     -- (2-|\inteval{#1+1}) 
                     -- cycle ;
    \fill (2-|#1) rectangle (last-|\inteval{#1+1}) ; 
    \end{tikzpicture}
  }

\NewDocumentCommand{\RowColor}{mm} % #1 number of row ; #2 : color
  {
    \begin{tikzpicture} [fill = #2]
    \fill (#1-|1) rectangle (\inteval{#1+1}-|last) ;
    \end{tikzpicture}
  }


\begin{NiceTabular}{lll}
\CodeBefore
  \RowColor{1}{gray!10}
  \ColumnColor{2}{red!15}
  \ColumnColor{3}{blue!15}
\Body
                    & \rot{Column 1} & \rot{Column 2} \\
  \Hline
  Information      & X              &                \\
  More information &                & X              \\
\end{NiceTabular}

\end{document}

第二段代码的输出

相关内容