在我回答问题时如何使用 tcolorbox 内的 longtable 在每一页上重复第一个表格行?
我建议(和其他人一样)使用 makecell 包来定义表头,后来我发现第一行的颜色与预期不符。它没有覆盖所有行。然后我尝试使用构造来纠正这个问题,当你使用(上述问题的简化 MWE)cellcolor
时应该可以正确完成:multicolumn
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[table]{xcolor}
\usepackage{longtable}
\usepackage{makecell}
\renewcommand\theadfont{\bfseries}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{longtable}%
\setlength\PreviewBorder{1em}
\begin{document}
\begin{longtable}{|*{9}{b{\dimexpr 0.11\linewidth-2\tabcolsep}|}}
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!30}{\thead{head\\ 1}}}
& \cellcolor{gray!30}{\thead{head\\ 2}} \\ \hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\
\hline\hline
\endfirsthead
\hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\
\hline\hline
\endhead
A & B & C & D & E & F & G & H & I \\
J & K & L & M & N & O & P & Q & R \\
S & T & U & V & W & X & Y & Z & \\
\hline\hline
\end{longtable}
\end{document}
并发现头部multicolumn
没有足够的宽度,因此头部背景颜色不能填满整个单元格。
我查看了makecell
文档,但没有找到有关如何拉伸实际头部以覆盖整个单元格的有用信息。如何实现整个多列单元格背景都着色?
附录:
对于这种特殊情况,可以按照以下方式进行\thead
整体拉伸:而不是\multicolumn
\multicolumn{8}{|c|}{\thead{\hfill head\hfill\\ 1}}
多列单元格应定义为
\multicolumn{8}{|p{\dimexpr 0.88\linewidth-\tabcolsep}|}{\thead{\hfill head\hfill\\ 1}}
其中\dimexpr 0.88\linewidth-\tabcolsep
是多列单元格的宽度。结果为:
不过,下面的答案给出了一般的解决方案。
答案1
如果你把在 中\thead
,它就会起作用(有点多余……):\multicolumn{|c|}
\colorbox
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}%[table]
\usepackage{array, colortbl}
\usepackage{longtable, ltablex}
\usepackage{makecell}
\renewcommand\theadfont{\bfseries}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{longtable}%
\setlength\PreviewBorder{1em}
\begin{document}
\begin{longtable}{|*{9}{b{\dimexpr 0.11\linewidth-2\tabcolsep}|}}%
\hline
\rowcolor{gray!30}\multicolumn{8}{|c|}{{\colorbox{gray!30}{\thead{head\\ 1}}}}
& \thead{head\\ 2} \\ \hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\
\hline\hline
\endfirsthead
\hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\
\hline\hline
\endhead
A & B & C & D & E & F & G & H & I \\
J & K & L & M & N & O & P & Q & R \\
S & T & U & V & W & X & Y & Z & \\
\hline\hline
\end{longtable}
\end{document}
答案2
我不认为这makecell
与 完全兼容colortbl
。但是,您可以轻松模拟\thead
:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[table]{xcolor}
\usepackage{longtable}
\newcommand{\thead}[1]{%
\bfseries
\begin{tabular}{@{}c@{}}
\vrule height 1.2\ht\strutbox width 0pt\ignorespaces
#1
\unskip\vrule depth 1.2\dp\strutbox width 0pt
\end{tabular}%
}
\begin{document}
\begin{longtable}{|*{9}{b{\dimexpr 0.11\linewidth-2\tabcolsep-\arrayrulewidth}|}}
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!30}{\thead{head\\ 1}}}
& \cellcolor{gray!30}{\thead{head\\ 2}} \\
\hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\
\hline
\endfirsthead
\hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\
\hline
\endhead
A & B & C & D & E & F & G & H & I \\
J & K & L & M & N & O & P & Q & R \\
S & T & U & V & W & X & Y & Z & \\
\hline
\end{longtable}
\end{document}
这是一个简单的例子:
\documentclass[12pt]{article}
\usepackage[table]{xcolor}
\usepackage{makecell}
\renewcommand{\theadfont}{\bfseries}
\begin{document}
\begin{tabular}{|c|c|c|}
\hline
\multicolumn{2}{|c|}{\cellcolor{gray!30}\thead{head\\1}} & \thead{head\\2} \\
\hline
111 & 222 & 333 \\
\hline
\end{tabular}
\end{document}
使用\rowcolor
并不能解决问题。