如何使用 \longtabu、\multirow、colortbl 和 \hhline 控制表格分页

如何使用 \longtabu、\multirow、colortbl 和 \hhline 控制表格分页

我在使用表格时可能遇到一个非常具体的 LaTeX 问题,因为表格需要以下规范(主要是):

  • 我需要支持多页面
  • 我需要很多多列
  • 我需要彩色细胞
  • 我需要能够控制表格中的分页符(这意味着,我有一些行块必须保持在一起[参见 MWE])
  • 我需要部分表格规则并且想看看它们;-)

我首先使用了特定的 cline 版本(包含在 MWE 中),它添加了分页控制,但 \cline 与 colortbl 不兼容(Cellcolor 覆盖部分水平线(\cline))。因此我将其改为 \hhline,但是现在我失去了分页符控制,而这很重要。

所以我的主要问题是: 是否可以使用 \hhline 并同时控制分页符?

我知道这可能与惩罚有关,但我不知道如何添加它,或者是否有可能。

PS:我知道 \hhline 会产生不需要的白线,但有一种方法可以修复它(\hhline 在不需要线条的地方添加白线)。我只是把它从 MWE 中去掉了,以使其更小。


这是我的 MWE:

\documentclass[10pt,a7paper,oneside]{scrartcl}


\usepackage{longtable,tabu}     
\usepackage{multirow}
\usepackage{xcolor,colortbl} 
\usepackage{hhline}


% No-break cline version
\makeatletter
\def\@cline#1-#2\@nil{%
\omit
\@multicnt#1%
\advance\@multispan\m@ne
\ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
\@multicnt#2%
\advance\@multicnt-#1%
\advance\@multispan\@ne
\leaders\hrule\@height\arrayrulewidth\hfill
\cr
\noalign{\nobreak\vskip-\arrayrulewidth}}
\makeatother

% Shortcut
\newcommand{\cc}[1]{\cellcolor{#1}}

\begin{document}
\begin{longtabu} to \textwidth {|X|X|X|}

\hline
\multicolumn{3}{|l|}{\cc{yellow}Main Entry} \\* 
\hhline{|~|-|-|}

% No break control :(
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \hhline{|~|-|-|}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \hhline{|~|-|-|}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \hhline{|~|-|-|}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \hhline{|~|-|-|}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\ \hline


\multicolumn{3}{|l|}{\cc{yellow}Main Entry} \\* 
\cline{2-3}

% Break control, but no rules :(
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\ \hline


\multicolumn{3}{|l|}{\cc{yellow}Main Entry} \\* 
\cline{2-3}

{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\ \hline

& & \kill % Needed for correct table calculation

\end{longtabu}
\end{document}

表格第一页: 表格第一页

两个页面 - 使用 cline,我可以控制分页符: 两个页面 - 使用 cline,我可以控制分页符

相关内容