表格 - 单元格颜色未填充单元格

表格 - 单元格颜色未填充单元格

我需要为演讲创建一个汇总表。想法是让单元格具有不同的颜色。但是,我无法让颜色填充一个单元格。这是我的问题的一个小例子。

代码

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor} 
\usepackage{color, colortbl}

%% How to color the cells
\newcommand{\ResultCell}[1]{%
\cellcolor{red!10}\textcolor{red}{#1}%
}

\newcommand{\SetPackingCell}[1]{%
\cellcolor{blue!10}\textcolor{blue}{#1}%
}

\begin{document}

\begin{table}[]
        \begin{tabular}{c|c|c}
        & VTT & VTS \\\hline
          \begin{tabular}[c]{@{}c@{}}
            Approximation\\
            ratio
          \end{tabular} 
        & \begin{tabular}[c]{@{}c@{}}
            \SetPackingCell{$(4/3+\varepsilon)$}\\
            \ResultCell{APX-hard}
          \end{tabular} 
        & \begin{tabular}[c]{@{}c@{}}
            \SetPackingCell{$(4/3+\varepsilon)$}\\
            \ResultCell{APX-hard}\\
            \ResultCell{$(1+\frac{6}{s-1})$}
           \end{tabular} 
        \\\hline
        Kernel 
        & \begin{tabular}[c]{@{}c@{}}
            \SetPackingCell{$O(k^{1.5})$-V}\\
            \ResultCell{$O(f)$}\\
            \ResultCell{no $O(N^{2-\varepsilon})$-bits}
          \end{tabular} 
        & \ResultCell{$O(k)$-V}
        \end{tabular}
\end{table}
\end{document}

结果 结果

您会发现,有一个单元格的颜色填充效果不好。我们的目标是得到类似这样的效果

预期输出 目标

我该如何修复这个问题?我尝试使用多行等方法,但目前没有任何效果。

先感谢您!

编辑-个人(且丑陋)的解决方案

我设法用多行基于以下答案修复了这个问题用户11232,还有一些丑陋的幻影文字……

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor} 
\usepackage{color, colortbl}

\usepackage{multirow} % https://www.ctan.org/pkg/multirow

%% How to color the cells
\newcommand{\ResultCell}[1]{%
\cellcolor{red!10}\textcolor{red}{#1}%
}

\newcommand{\SetPackingCell}[1]{%
\cellcolor{blue!10}\textcolor{blue}{#1}%
}

\begin{document}

\begin{table}[]
    \begin{tabular}{c|c|c}
    & VTT & VTS \\\hline
      \begin{tabular}[c]{@{}c@{}}
        Approximation\\
        ratio
      \end{tabular} 
    & \begin{tabular}[c]{@{}c@{}}
        \SetPackingCell{$(4/3+\varepsilon)$}\\
        \ResultCell{\phantom{iiino $\O(N^{2-\varepsilon})$ bits}}\\%adding some i's to fix the tiny remaining spaces... Better solution ? 
        \multirow{-2}{*}{\ResultCell{APX-hard}}\\
      \end{tabular} 
    & \begin{tabular}[c]{@{}c@{}}
        \SetPackingCell{$(4/3+\varepsilon)$}\\
        \ResultCell{APX-hard}\\
        \ResultCell{$(1+\frac{6}{s-1})$}
       \end{tabular} 
    \\\hline
    Kernel 
    & \begin{tabular}[c]{@{}c@{}}
        \SetPackingCell{$O(k^{1.5})$-V}\\
        \ResultCell{$O(f)$}\\
        \ResultCell{no $O(N^{2-\varepsilon})$-bits}
      \end{tabular} 
    & \ResultCell{$O(k)$-V}
    \end{tabular}
\end{table}
\end{document}

此代码给出以下输出。

解决方案 解决方案

我希望它有用,即使我对我的解决方案非常不满意。我很确定有更好的方法来解决我的问题,但至少它能起到作用……

答案1

问题在于您使用了嵌套表格,但实际上您并不需要它们。

删除嵌套可以让你摆脱幻影文本。如果你不真的想要预期输出细胞间颜色发生了这种奇怪的变化:

开始着色

下面应该可以解决问题(使用makecellmultirow包):

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor} 
\usepackage{color, colortbl}

\usepackage{multirow}
\usepackage{makecell}

%% How to color the cells
\newcommand{\ResultCell}[1]{%
\cellcolor{red!10}\textcolor{red}{#1}%
}

\newcommand{\SetPackingCell}[1]{%
\cellcolor{blue!10}\textcolor{blue}{#1}%
}

\begin{document}
\begin{table}
\begin{tabular}{c|c|c}
& VTT & VTS \\
\hline
\multirow{3}{*}{\makecell{Approximation \\ ratio}} & \SetPackingCell{$(4/3+\varepsilon)$} & \SetPackingCell{$(4/3+\varepsilon)$} \\
 & \ResultCell{} & \ResultCell{APX-hard} \\
 & \multirow{-2}{*}{\ResultCell{APX-hard}} & \ResultCell{$(1+\frac{6}{s-1})$} \\
\hline
\multirow{3}{*}{Kernel} & \SetPackingCell{$O(k^{1.5})$-V} & \ResultCell{} \\
 & \ResultCell{$O(f)$} & \ResultCell{} \\
 & \ResultCell{no $O(N^{2-\varepsilon})$-bits} & \multirow{-3}{*}{\ResultCell{$O(k)$-V}}\\
\hline
\end{tabular}
\end{table}

\end{document}

输出

输出

请注意,该makecell包仅用于将两行文本放入三行“单元格”中。

答案2

{NiceTabular}供参考,这里是的解决方案nicematrix。在该环境下,始终可以使用 Tikz 绘制彩色面板(通过使用 创建的 PGF/Tikz 节点{NiceTabular})。

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

\begin{document}

\newcommand{\blue}{\color{blue}}
\newcommand{\red}{\color{red}}

\renewcommand{\arraystretch}{1.4}
\begin{NiceTabular}{ccc}[hvlines-except-borders,respect-arraystretch]
\CodeBefore
    \begin{tikzpicture}
    \fill [blue!15] (2-|2) rectangle (2.5-|3) ; 
    \fill [red!15] (2.5-|2) rectangle (3-|3) ; 
    % There are nodes 1, 1.5, 2, 2.5, 3, etc. but no node 3.3...
    % That's why we have to use the syntax ($node!0.3!node$)
    \fill [blue!15] (2-|3) rectangle ($(2-|4)!0.3!(3-|4)$) ; 
    \fill [blue!15] (2-|3) rectangle ($(2-|4)!0.3!(3-|4)$) ; 
    \fill [red!15] ($(2-|3)!0.3!(3-|3)$) rectangle (3-|4) ; 
    \fill [blue!15](3-|2) rectangle ($(3-|3)!0.3!(4-|3)$) ; 
    \fill [red!15] ($(3-|2)!0.3!(4-|2)$) rectangle (4-|3); 
    \fill [red!15] (3-|3) rectangle (4-|4) ; 
    \end{tikzpicture}
\Body
      & VTT & VTS \\
    \Block{}{Approximation\\ ratio}
      & \Block{}{\blue $(4/3+\varepsilon)$\\ \red APX-hard}
      & \Block{}{\blue $(4/3+\varepsilon)$\\ \red APX-hard \\ \red $(1+\frac{6}{s-1})$} \\
      Kernel 
      & \Block{}{\blue $O(k^{1.5})$-V \\ \red $O(f)$ \\ \red no $O(N^{2-\varepsilon})$-bits}
      & \red $O(k)$-V
\end{NiceTabular}

\end{document}

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

上述代码的输出

相关内容