如何在长表中的标题周围添加彩色框架?

如何在长表中的标题周围添加彩色框架?

我想tcolorbox在长桌的标题周围放置一个彩色填充框(例如带有包装的框),我将其放入其中\endlastfoot。我使用了以下问题的答案:带框的标题和图片,带彩色标题对于我的其他图形/表格,但无法使其在长表环境中工作。我已使用这个问题的答案给长桌涂上颜色尝试为多行标题着色,但无法使其看起来美观且有框架。

\documentclass[a4paper, 12pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english,ngerman]{babel}
\usepackage[margin=2cm]{geometry}
\setlength{\parindent}{5mm}

%Tabels:
\usepackage{xcolor}
\usepackage{colortbl}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{longtable}
\usepackage{caption}

%Adjusted Command to color the caption from https://tex.stackexchange.com/questions/345589/color-a-longtable/345602#345602
\definecolor{lightGray}{gray}{0.95}
\def\ColorTabelHeader{lightGray}

\newcommand*{\BeginHeadcolor}{%
  \arrayrulecolor{gray}\toprule[0.7pt]
  \rowcolor{\ColorTabelHeader}%
  \noalign{%
    \kern-\belowrulesep
    \begingroup
      \color{\ColorTabelHeader}\hrule height\belowrulesep
    \endgroup
  }%
}
\newcommand*{\EndHeadcolor}{%
  \noalign{%
    \begingroup
      \color{\ColorTabelHeader}%
      \hrule height\aboverulesep
    \endgroup
    \kern-\aboverulesep
  }%
  \toprule[0.7pt] \arrayrulecolor{black}
}
\makeatletter
\newcommand*{\LTBeginHeadcolor}{%
  \arrayrulecolor{gray}\toprule[0.7pt]
    \vadjust pre{\kern-\belowrulesep}%
    \begingroup
      \color{\ColorTabelHeader}%
      \leaders\hrule height\belowrulesep\hfill
    \endgroup
  \cr
  \rowcolor{\ColorTabelHeader}%
}
\newcommand*{\LTEndHeadcolor}{%
  \multispan\LT@cols
    \begingroup
      \color{\ColorTabelHeader}%
      \leaders\hrule height\aboverulesep\hfill
    \endgroup
  \cr
  \noalign{%
    \kern-\aboverulesep
  }%
 \toprule[0.7pt] \arrayrulecolor{black}
}
\makeatother


% Settings for Longtable
\setlength\LTleft{0pt} 
\setlength\LTright{0pt}
\setlength{\LTcapwidth}{\columnwidth}
% To make it load faster
\setcounter{LTchunksize}{50}

\begin{document}

\renewcommand\arraystretch{0.8}
\begin{longtable}{c|c >{\columncolor[gray]{.9}}c c >{\columncolor[gray]{.9}}c c}
\LTBeginHeadcolor
\caption[]{\textbf{Caption:}
some information describing the content}\\
\LTEndHeadcolor \endfoot
\LTBeginHeadcolor
\caption[]{\textbf{Caption:}
this is a very long caption with some additional information regarding the parameters.\label{tab:Sample}}\\*
\rowcolor{\ColorTabelHeader}
\multicolumn{6}{c}{\parbox{\LTcapwidth}{{\footnotesize This Information is so long, that I had to put it in an extra paragraph with a smaller font}}}\\
\LTEndHeadcolor
\endlastfoot 
    \toprule
   \multirow{2}[2]{*}[2mm]{\textbf{Parameter}} &      & \textbf{BLH} & \textbf{0h} & \textbf{4h} & \textbf{8h} \\
          &       & Median (SD) & Median (SD) & Median (SD) & Median (SD) \\
    \midrule  \endfirsthead
     \toprule    
   \multirow{2}[2]{*}[2mm]{\textbf{Parameter}} &      & \textbf{BLH} & \textbf{0h} & \textbf{4h} & \textbf{8h} \\
          &       & Median (SD) & Median (SD) & Median (SD) & Median (SD) \\
    \midrule     \endhead
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \\[0,3cm]    
    \bottomrule
\end{longtable}%%


\end{document}

答案1

感谢 Axel,我找到了一个可能的解决方案。由于我对 Latex 还比较陌生,而且不太习惯使用宏,请告诉我我犯的任何错误,或者直接编辑我的答案:

彩色填充框架LTcaptionbox的代码:

\usepackage[many]{tcolorbox}

    \makeatletter
    \newtcolorbox{LTcaptionbox}[7][]{enhanced, colframe=gray, colback=gray!30, arc=0pt, outer arc=0pt, boxrule=0.7pt, before={}, #1}
    \DeclareCaptionOption{stuffforbox}{\def\caption@stuffforbox{#1}}

    \DeclareCaptionBox{myLTbox}{%
      \begin{LTcaptionbox}[code={\pgfkeysalsofrom{\caption@stuffforbox}}]
        #2%
      \end{LTcaptionbox}%
    }
    \makeatother
    \captionsetup[longtable]{stuffforbox={}, box={myLTbox}, slc=off}

还有我编辑的表格(我添加了'tabu'包来填充整个页面,并调整'\bottomrule'和LTCaptionbox到相同的宽度)

\documentclass[a4paper, 12pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english,ngerman]{babel}
\usepackage[margin=2cm]{geometry}
\setlength{\parindent}{5mm}

%Tabels:
\usepackage{xcolor}
\usepackage{colortbl}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{longtable}
\usepackage{caption}
\usepackage{tabu}


\usepackage[many]{tcolorbox}

\makeatletter
\newtcolorbox{LTcaptionbox}[7][]{enhanced, colframe=gray, colback=gray!30, arc=0pt, outer arc=0pt, boxrule=0.7pt, before={}, #1}
\DeclareCaptionOption{stuffforbox}{\def\caption@stuffforbox{#1}}

\DeclareCaptionBox{myLTbox}{%
  \begin{LTcaptionbox}[code={\pgfkeysalsofrom{\caption@stuffforbox}}]
    #2%
  \end{LTcaptionbox}%
}
\makeatother
\captionsetup[longtable]{stuffforbox={}, box={myLTbox}, slc=off}

% Settings for Longtable
\setlength\LTleft{0pt} 
\setlength\LTright{0pt}
\setlength{\LTcapwidth}{\glueexpr(\textwidth-10mm-1,4pt)\relax} % minus Distance text- to outer edge of the bounding-box on both sides
% To make it load faster
\setcounter{LTchunksize}{50}

\begin{document}



\begin{longtabu}{X|X X X X X}
\caption[]{\textbf{Caption:} some information describing the content}\endfoot
\caption[CaptionLOT]{\textbf{Caption:} this is a very long caption with some additional information regarding the parameters.\label{tab:Sample}\\*
{\footnotesize This Information is so long, that I had to put it in an extra paragraph with a smaller font}}
\endlastfoot 
    \toprule
   \multirow{2}[2]{*}[2mm]{\textbf{Parameter}} &      & \textbf{BLH} & \textbf{0h} & \textbf{4h} & \textbf{8h} \\
          &       & Median (SD) & Median (SD) & Median (SD) & Median (SD) \\
    \midrule  \endfirsthead
     \toprule    
   \multirow{2}[2]{*}[2mm]{\textbf{Parameter}} &      & \textbf{BLH} & \textbf{0h} & \textbf{4h} & \textbf{8h} \\
          &       & Median (SD) & Median (SD) & Median (SD) & Median (SD) \\
    \midrule     \endhead
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\
    Parameter & Group1 & 1 & 2 & 3 & 4 \\*
    {[unit]} & Group2 & 1 & 2 & 3 & 4 \vspace{0,3cm}\\    
    \bottomrule \addlinespace[1pt]
\end{longtabu}%%


\end{document}

PS:我无法将“\columncolor”与“Longtabu”的 X 列一起使用。有人知道这个问题的可能解决方案吗?
如果您想保留“Longtable”环境,您只需使用:

\newlength\q
\setlength\q{\dimexpr 0.166\textwidth -2\tabcolsep\relax}

\begin{longtable}{p{\q}|p{\q} >{\columncolor[gray]{.95}\centering\arraybackslash}p{\q} >{\centering\arraybackslash}p{\q} >{\columncolor[gray]{.95}\centering\arraybackslash}p{\q} >{\centering\arraybackslash}p{\q}}

相关内容