使用彩色行将表格单元格拆分为左右对齐

使用彩色行将表格单元格拆分为左右对齐

我正在尝试制作一个本质上是特征矩阵的表格。条目被分组,每组都是一个句子的一组补全。由于空间限制,我试图将句子的开头和第一个补全保持在同一行,如下所示:

没有行颜色的工作

但是,我想添加行颜色以更好地区分组。我通过\hskip在两部分之间添加 s 实现了将每个组标题中的文本推到侧面的效果...但是,正如评论中所述colortbl,颜色无法到达单元格的末尾:

不使用彩色行

有没有办法实现这种效果组合,而又不出现难看的色彩差距,无论是通过调整与 colortbl 相关的代码,还是通过使用不同的机制来拆分组标题?(或者可能是完全不同的设计解决方案......)

梅威瑟:

\documentclass[12pt]{report}

\usepackage{colortbl,booktabs}
\usepackage{pifont}

\newcommand{\rowgrpheader}[2]{\textbf{#1\ldots} \hskip 5pt plus 1filll \ldots #2}
\newcommand{\xmark}{\ding{55}}
\newcommand{\cmark}{\ding{51}}

\begin{document}
\begin{tabular}{rcc}
  \toprule
  & \textbf{Broke a chain} & \textbf{Freed a human soul} \\ \midrule
  \rowcolor[gray]{.85} \rowgrpheader{Loyalty to}{a petrified opinion} & \xmark & \xmark \\
  \rowcolor[gray]{.85} \ldots principled open-mindedness & \cmark & \cmark \\
  \rowgrpheader{Telling other people to}{shut up} & \xmark & \xmark \\
  \ldots be their best selves & \cmark & \cmark \\
  \bottomrule
\end{tabular}
\end{document}

答案1

tabularx以下是使用(和makecell,以便更好地观察)的方法:

\documentclass[12pt]{report}
\usepackage[showframe]{geometry}
\usepackage[table, svgnames]{xcolor}
\usepackage{booktabs, tabularx, makecell, bigstrut}
\usepackage{pifont}

\renewcommand{\theadfont}{\normalsize\bfseries}

\newcommand{\rowgrpheader}[2]{\textbf{#1\ldots} \hskip 5pt plus 1filll \ldots #2}
\newcommand{\xmark}{\ding{55}}
\newcommand{\cmark}{\ding{51}}

\begin{document}

\noindent\begin{tabularx}{\linewidth}{ >{\raggedleft}Xcc}
  \toprule
  & \thead{Broke a chain} & \thead{Freed a\\ human soul} \\
  \specialrule{\lightrulewidth}{0pt}{0pt}
  \rowcolor{Gainsboro!70} \rowgrpheader{Loyalty to}{a petrified opinion} & \xmark & \xmark\bigstrut[t] \\
  \rowcolor{Gainsboro!70} \ldots principled open-mindedness & \cmark & \cmark \\
  \rowgrpheader{Telling other people to}{shut up} & \xmark & \xmark \\
  \ldots be their best selves & \cmark & \cmark \\
  \bottomrule
\end{tabularx}

\end{document} 

在此处输入图片描述

答案2

您只需对第一列使用固定宽度的列类型(如p或 )即可消除白色间隙。m

由于表格超出了文本宽度,我已添加tabularx并调整了第二列和第三列的宽度。

\documentclass[12pt]{report}

\usepackage{colortbl,booktabs}
\usepackage{pifont}
\usepackage{tabularx}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\newcommand{\xmark}{\ding{55}}
\newcommand{\cmark}{\ding{51}}

\begin{document}

\begin{tabularx}{\textwidth}{XC{2cm}C{2.5cm}}
  \toprule
  & \textbf{Broke a chain} & \textbf{Freed a human soul} \\ \midrule
 \rowcolor[gray]{.85} \textbf{Loyalty to \ldots} \hfill  \ldots a petrified solution & \xmark & \xmark \\
 \rowcolor[gray]{.85}  \raggedleft \ldots principled open-mindedness & \cmark & \cmark \\
 \textbf{Telling other people to \ldots} \hfill \ldots shut up  & \xmark & \xmark \\
 \raggedleft \ldots be their best selves & \cmark & \cmark \\
  \bottomrule
\end{tabularx}

\end{document}

在此处输入图片描述

答案3

这是一个{NiceTabular}使用 的解决方案nicematrix

  • 我已经加载nicematrix(并卸载colortbl)。
  • 我已{tabular}{NiceTabular}密钥替换colortbl-like替换了。

输出直接是预期的输出(因为在中nicematrix,颜色指令用 PGF/Tikz 处理)。

\documentclass[12pt]{report}

\usepackage{booktabs}
\usepackage{pifont}

\newcommand{\rowgrpheader}[2]{\textbf{#1\ldots} \hskip 5pt plus 1filll \ldots #2}
\newcommand{\xmark}{\ding{55}}
\newcommand{\cmark}{\ding{51}}

\usepackage{nicematrix}

\begin{document}
\begin{NiceTabular}{rcc}[colortbl-like]
  \toprule
  & \textbf{Broke a chain} & \textbf{Freed a human soul} \\ \midrule
  \rowcolor[gray]{.85} \rowgrpheader{Loyalty to}{a petrified opinion} & \xmark & \xmark \\
  \rowcolor[gray]{.85} \ldots principled open-mindedness & \cmark & \cmark \\
  \rowgrpheader{Telling other people to}{shut up} & \xmark & \xmark \\
  \ldots be their best selves & \cmark & \cmark \\
  \bottomrule
\end{NiceTabular}
\end{document}

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

上述代码的输出

相关内容