将宽表或长表拆分为两个块

将宽表或长表拆分为两个块

我有一张非常宽的表格(代码如下)。我想在“第一组”和“第二组”下的数据之间留出一个小间隙 - 这两个是主要的多列列标题。我尝试在指定 longtable 的这两列之间插入双竖线 (||)。它可以分割表格,但在多列行中表现非常奇怪。我怎样才能使表格从上到下干净地分割,希望不必费力地在数英里的代码中寻找 &s?感谢您的时间!

我的表格的代码如下:

\documentclass[6pt]{article}
\usepackage[portrait, total={5.45in, 8.5in}, top=1.25in, bottom=1.25in, right=1.25in, left=1.5in, centering]{geometry}
\usepackage{longtable}
\usepackage{bm}
\usepackage[table]{xcolor}
\usepackage[none]{hyphenat}
\usepackage[T1]{fontenc}
\usepackage[default]{cantarell}
\usepackage{booktabs}
\definecolor{tableShade2}{HTML}{F1F5FA}
\definecolor{tableShade}{HTML}{FAFAFD}
\definecolor{tableShade3}{HTML}{dddddd}
\definecolor{tableShade4}{HTML}{C2A5CF}
\definecolor{tableShade5}{HTML}{E7D4E8}
\definecolor{tableShade6}{HTML}{A1D99B}
\definecolor{tableShade7}{HTML}{D9F0D3}
\definecolor{tableShade1}{HTML}{FFEDA0}

\pagestyle{empty}
\renewcommand{\familydefault}{\sfdefault}
\renewcommand{\arraystretch}{1.25}
\usepackage{arydshln}
\newcolumntype{x}[1]{>{\raggedright}p{#1}}
\arrayrulecolor{tableShade3}
\setlength{\tabcolsep}{4pt}
\begin{document}

\begin{center}
\scriptsize{\textbf{A very wide table with two groups}}\end{center}
\setlength\LTleft{0in}
\setlength\LTright{1.25in}
\setlength\LTpre{-0.3cm}
\setlength\LTpost{0in}
\rowcolors{1}{tableShade2}{white}\scriptsize
\newcommand{\CTPanel}[1]{%
\multicolumn{1}{>{\columncolor{white}}r|}{#1}}
\centering
\begin{longtable}{lp{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}||p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}}

\hiderowcolors
&\multicolumn{9}{c}{First Group}&\multicolumn{9}{c}{Second Group}\\\cmidrule(lr){2-10}\cmidrule(lr){11-19}
something&\multicolumn{2}{c}{AB} & \multicolumn{3}{c}{ABCD} & \multicolumn{4}{c||}{ABCD EFGH}&\multicolumn{2}{c}{AB} & \multicolumn{3}{c}{ABCD} & \multicolumn{4}{c}{ABCD EFGH}\\\cmidrule(lr){2-3}\cmidrule(lr){4-6}\cmidrule(lr){7-10}\cmidrule(lr){11-12}\cmidrule(lr){13-15}\cmidrule(lr){16-19}
Characteristics & + & - & I & II & III & $L^{A}$ & $L^{B}$ & $H^{+}$ & TN & + & - & I & II & III & $L^{A}$ & $L^{B}$ & $H^{+}$ & TN\\
\specialrule{0.02em}{0.1em}{0em}
\endhead
\specialrule{0.02em}{0em}{0em}
\endfoot
\hline
\multicolumn{10}{l}{\textbf{The first subheading}}\\\hline
\showrowcolors
some variable &+&+&-&+&+&-&-&-&-&-&+&+&-&-&+&+&-&-\\\hline
some other variable &+&+&-&+&+&-&-&-&-&-&+&+&-&-&+&+&-&-\\\hline
\end{longtable}
\end{document}

结果表(根据 D. Carlisle 的建议进行编辑): 按照答案 1 中的建议,表格带有管道和多列。

答案1

每当你使用以任何或右侧边缘\multicolumn有材料的列结尾的元素时,你需要重新插入它,因此如果你有|@{...}

|ll||ll|

那么通常你需要

\multicolumn{2}{|c||}{heading for 1st 2 columns}&
\multicolumn{2}{c|}{heading for 2nd 2 columns}\\

这适用于所有 LaTeX 表格环境。

答案2

根据 David Carlisle 的回答和评论,此 hack 更好地展现了将长表拆分为两个不同块的印象。它使用宽垂直白色线来拆分表的各个部分。因此,如果所有表行(或只是交替行)都使用白色以外的其他颜色,看起来会更好。

\begin{longtable}{lp{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}!{\color{white}\vrule width 5pt}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}p{0.3cm}}

导致: 带有 5pt 宽白色垂直线的表格,模拟长桌上的休息

通过这个问题我了解到的另一个有趣的事实是,可以使用该vrule选项使垂直规则与多列以及棘手的 booktabs 包很好地配合。

例如,此代码

\begin{longtable}{lp{0.3cm}!{\color{tableShade3}\vrule}
               p{0.3cm}!{\color{tableShade3}\vrule}
               p{0.3cm}!{\color{tableShade3}\vrule}
               p{0.3cm}!{\color{tableShade3}\vrule}
               p{0.3cm}!{\color{tableShade3}\vrule}
               p{0.3cm}!{\color{tableShade3}\vrule}
               p{0.3cm}!{\color{tableShade3}\vrule}
               p{0.3cm}!{\color{tableShade3}\vrule}
               p{0.3cm}!{\color{white}\vrule width 4pt}
               p{0.3cm}!{\color{white}\vrule}
               p{0.3cm}!{\color{white}\vrule}
               p{0.3cm}!{\color{white}\vrule}
               p{0.3cm}!{\color{white}\vrule}
               p{0.3cm}!{\color{white}\vrule}
               p{0.3cm}!{\color{white}\vrule}
               p{0.3cm}!{\color{white}\vrule}
               p{0.3cm}!{\color{white}\vrule}
               p{0.3cm}!{\color{white}\vrule}}

导致:

带有垂直规则和书签的表格播放效果良好

虽然不完美,但是功能齐全,并且比 | 或 || 解决方案稍微好看一些。

相关内容