表格:带有行颜色、多列和多行的白色间距

表格:带有行颜色、多列和多行的白色间距

我有下表:

有问题的表

它使用了\rowcolor\multicolumn\multirow但在各个框之间也有较宽的白色间距。

我需要将标题“Cobertura del transporte en el municipio de Monterrey”正确居中,并考虑 2 个框的宽度、填充以及左侧、右侧和其下方框之间的空间。

我还需要将两个绿色案例合并起来,这两个案例由红色椭圆包围,并且包含“91.4%”的值。然后,这两个案例将变成一个\multirow绿色案例(参见下面的尝试),该案例横跨两行,并且符合高度和填充要求。

我一直在尝试让我的桌子此方法,但由于白色间距,它似乎并不适用于我的特定示例。

该表的代码如下:

\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{color}
\usepackage{amsmath, amsfonts, amssymb}
\usepackage{mdframed}
\usepackage{multirow}
\usepackage{tikz,pgfplots}
\usepackage{colortbl}
\usetikzlibrary{shapes}

%------Column types--------------
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

%------Space between cases-------
\makeatletter
\newcommand{\thickhline}{%
    \noalign {\ifnum 0=`}\fi \hrule height 2pt
    \futurelet \reserved@a \@xhline
}
\newcolumntype{+}{@{\hskip\tabcolsep\vrule width 2pt\hskip\tabcolsep}}
\makeatother

%-------Colors--------------------
\definecolor{table1}{RGB}{255,129,54}
\definecolor{table2}{RGB}{41,148,178}
\definecolor{table3}{RGB}{255,129,54}
\definecolor{table4}{RGB}{220,220,77}
\definecolor{table5}{RGB}{58,58,58}

\begin{document}

\begin{table}[!ht]
\centering
\color{white}\sffamily
\begin{tabular}{L{3cm}+C{3cm}+C{3cm}+C{3cm}}

    \rowcolor{table5}
    Otra cosa & \multicolumn{2}{c}{Cobertura del transporte en el municipio de Monterrey} & Otra cosa\\

    \thickhline
    \rowcolor{table4}
    - & \cellcolor{table3}\textcolor{table5}{Primer Cuadro} & \multirow{2}{*}{\textcolor{table5}{91.4\%}} & -\\

    \thickhline
    \rowcolor{table4}
    - & \cellcolor{table3}\textcolor{table5}{Centro (Poniente)} &  & -\\

    \thickhline
    \rowcolor{table4}
    - & \cellcolor{table3}\textcolor{table5}{Oeste} & \textcolor{table5}{90.1\%} & -\\
    \hline

\end{tabular}
\end{table}

\end{document}

注意:我显然尝试更换该行

\multicolumn{2}{c}{Cobertura del transporte en el municipio de Monterrey}

通过这个:

\multicolumn{2}{C{6cm}}{Cobertura del transporte en el municipio de Monterrey}

但它没有提供任何好处:

在此处输入图片描述

有人对这个问题有适当的解决方案吗?

答案1

我简化了您的代码:粗 \hlines 已由包定义makecell。它还定义了粗 \clines,不幸的是,出于某种原因,它在此上下文中不起作用,因此我不得不使用解决方法\hhline。第二个标题是命令的一个参数\makecell,允许在单元格内换行。

使多行内容出现的技巧是将其写入second行中,并将行数设为负值 (-2)。我使用了\multirowcellmakecell 包中的,因为它的语法比 稍微简单一些\multirow

我擅自将列标题设为粗体,因为我认为彩色背景上的白色字符不太好读。这可以通过使用命令\thead并在序言中设置\theadfont为 来轻松实现。此外,我将第一个列限定符设置为而不是 ,因为我不知道为什么它应该与最后一列不同(但当然,您可能有理由坚持使用 L 作为真实表格)。\bfseriesCL

最后我删除了表中不必要的包。

以下是代码:

 \documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{amsmath, amsfonts, amssymb}
\usepackage{multirow}
\usepackage{colortbl}

%------Column types--------------
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

%------Space between cases-------
\newcommand\thickhline{\Xhline{2pt}}
%-------Colors--------------------
\definecolor{table1}{RGB}{255,129,54}
\definecolor{table2}{RGB}{41,148,178}
\definecolor{table3}{RGB}{255,129,54}
\definecolor{table4}{RGB}{220,220,77}
\definecolor{table5}{RGB}{58,58,58}

\newcommand*\thickvrule[1][2pt]{\vrule width 2pt}
\usepackage{makecell}
\renewcommand\theadfont{\bfseries}

\usepackage{cellspace}
\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}
\addparagraphcolumntypes{m}
\usepackage{hhline}
\setlength\doublerulesep{1.2pt}

\begin{document}

\begin{table}[!ht]
\centering
\color{white}\sffamily
\begin{tabular}{C{3cm}!{\thickvrule} S{C{3cm}}!{\thickvrule}C{3cm}!{\thickvrule}C{3cm}}
    \rowcolor{table5}
    \thead{Otra cosa} & \multicolumn{2}{Sc!{\thickvrule}}{ \thead{Cobertura del transporte en\\el municipio de Monterrey}} & \thead{Otra cosa} \\
    \thickhline
  \rowcolor{table4}
    -- & \cellcolor{table3}\textcolor{table5}{Primer Cuadro} && -- \\
 \hhline{>{\arrayrulecolor{white}}=|=|~|=}
    \rowcolor{table4}
    -- & \cellcolor{table3}\textcolor{table5}{Centro (Poniente)} & \multirowcell{-2}{\makebox[3cm]{\textcolor{table5}{91.4\%}}} & -- \\
    \thickhline
    \rowcolor{table4}
   -- & \cellcolor{table3}\textcolor{table5}{Oeste} & \textcolor{table5}{90.1\%} & -- \\
    \hline
\end{tabular}
\end{table}

\end{document} 

在此处输入图片描述

答案2

楼主\tabcolsep在相关命令中忘记了左右宽度\multicolumn,可以0pt@{}语句简化,内部两个\tabcolsep宽度要加到6cm的宽度上。

\multicolumn{2}{@{}C{6cm+2\tabcolsep+2pt}@{}}{Cobertura del transporte en el municipio de Monterrey}

但是,还有一个附加\vrule命令,带有2pt,必须将其添加到。

我建议引入一个\newlength{\myvrulewidth}具有值的东西2pt,以简化代码的维护。


\documentclass[11pt]{article}
\usepackage{calc}
\usepackage[utf8]{inputenc}
\usepackage{color}
\usepackage{amsmath, amsfonts, amssymb}
\usepackage{mdframed}
\usepackage{multirow}
\usepackage{tikz,pgfplots}
\usepackage{colortbl}
\usetikzlibrary{shapes}

%------Column types--------------
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

%------Space between cases-------
\makeatletter
\newcommand{\thickhline}{%
    \noalign {\ifnum 0=`}\fi \hrule height 2pt
    \futurelet \reserved@a \@xhline
}
\newcolumntype{+}{@{\hskip\tabcolsep\vrule width 2pt\hskip\tabcolsep}}
\makeatother

%-------Colors--------------------
\definecolor{table1}{RGB}{255,129,54}
\definecolor{table2}{RGB}{41,148,178}
\definecolor{table3}{RGB}{255,129,54}
\definecolor{table4}{RGB}{220,220,77}
\definecolor{table5}{RGB}{58,58,58}

\begin{document}

\begin{table}[!ht]
\centering
\color{white}\sffamily
\begin{tabular}{L{3cm}+C{3cm}+C{3cm}+C{3cm}}

    \rowcolor{table5}
    Otra cosa & \multicolumn{2}{@{}C{6cm+2\tabcolsep+2pt}@{}}{Cobertura del transporte en el municipio de Monterrey} & Otra cosa\\

    \thickhline
    \rowcolor{table4}
    - & \cellcolor{table3}\textcolor{table5}{Primer Cuadro} & \multirow{-1}{*}{\textcolor{table5}{91.4\%}} & -\\

    \thickhline
    \rowcolor{table4}
    - & \cellcolor{table3}\textcolor{table5}{Centro (Poniente)} &  & -\\

    \thickhline
    \rowcolor{table4}
    - & \cellcolor{table3}\textcolor{table5}{Oeste} & \textcolor{table5}{90.1\%} & -\\
    \hline

\end{tabular}
\end{table}


\end{document}

问题/解决方案与以下方面有某种联系当单元格包含多行时,表格列中会出现不需要的填充

编辑感谢 Harish Kumar 的评论,第三行移位的线可以得到纠正

在此处输入图片描述

答案3

您可以使用 (≥ 5.18 of 2021-07-15) 轻松制作该{NiceTabular}nicematrix

\documentclass[11pt]{article}
\usepackage{xcolor}
\usepackage{nicematrix}

\begin{document}

\begin{table}
\centering
\sffamily
\begin{NiceTabular}
   [
     rules={color=white,width=2pt},
     hvlines-except-borders,
     columns-width=3cm,
     cell-space-limits=5pt
   ]
   {cccc}
\CodeBefore
  \rowcolor[RGB]{220,220,77}{2-4}
  \columncolor[RGB]{255,129,54}{2}
  \rowcolor[RGB]{58,58,58}{1}
\Body
\RowStyle{\bfseries\color{white}}
Otra cosa & \Block[C]{1-2}{Cobertura del transporte en\\el municipio de Monterrey} &&Otra cosa \\ 
-- & Primer Cuadro     & \Block{2-1}{91.4\%} & -- \\ 
-- & Centro (Poniente) &                     & -- \\ 
-- & Oeste             & 90.1\%              & -- \\ 
\end{NiceTabular}
\end{table}

\end{document} 

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

上述代码的输出

相关内容