我需要为演讲创建一个汇总表。想法是让单元格具有不同的颜色。但是,我无法让颜色填充一个单元格。这是我的问题的一个小例子。
代码
\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
问题在于您使用了嵌套表格,但实际上您并不需要它们。
删除嵌套可以让你摆脱幻影文本。如果你不真的想要预期输出细胞间颜色发生了这种奇怪的变化:
下面应该可以解决问题(使用makecell
和multirow
包):
\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 节点)。