ブックタブと色付き(見出し)行を備えたロングテーブルを設定する方法

ブックタブと色付き(見出し)行を備えたロングテーブルを設定する方法

longtable最初の行(先頭行)を灰色にしたを作成したいと思います。

は の下と のbooktabs上に空白を挿入するので、色付きのルールを挿入する必要があります。\toprule\midrule

\newcommand*{\belowrulesepcolor}[1]{%
  \noalign{%
    \kern-\belowrulesep
    \begingroup
      \color{#1}%
      \hrule height\belowrulesep
    \endgroup
  }%
}
\newcommand*{\aboverulesepcolor}[1]{%
  \noalign{%
    \begingroup
      \color{#1}%
      \hrule height\aboverulesep
    \endgroup
    \kern-\aboverulesep
  }%
}

これは環境内ではうまく機能しますtabular。しかし、環境を使用するとlongtable、が\hrule長くなりすぎます。

出力の画像付きの私の MWE は次のとおりです。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}

\usepackage{geometry}                           
\geometry{paperwidth=5cm,paperheight=5cm}       % small page
\pagestyle{empty}

\usepackage{booktabs, longtable}
\usepackage[table]{xcolor}

\newcommand*{\belowrulesepcolor}[1]{%   fills the white space with a colored rule
  \noalign{%
    \kern-\belowrulesep
    \begingroup
      \color{#1}%
      \hrule height\belowrulesep
    \endgroup
  }%
}
\newcommand*{\aboverulesepcolor}[1]{%
  \noalign{%
    \begingroup
      \color{#1}%
      \hrule height\aboverulesep
    \endgroup
    \kern-\aboverulesep
  }%
}

\definecolor{headcolor}{gray}{0.8}


\begin{document}

\centering

\begin{longtable}{lll}

\toprule \belowrulesepcolor {headcolor}                         
\rowcolor{headcolor}
Col1 & Col2 \\ \aboverulesepcolor{headcolor} \midrule \endfirsthead
\toprule \belowrulesepcolor {headcolor}                         
\rowcolor{headcolor}
Col1 & Col2 \\ \aboverulesepcolor{headcolor} \midrule \endhead
\bottomrule
\endfoot
\bottomrule
\endlastfoot


A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\


\end{longtable}

\end{document}

MWEの出力

答え1

他の回答には困惑しています。もっとシンプルなもので何が問題なのでしょうか? 追加のパッケージは必要ありません

\documentclass{article}
\usepackage{geometry}                           
\geometry{paperwidth=5cm,paperheight=5cm}       % small page
\pagestyle{empty}

\usepackage{booktabs, longtable}
\usepackage[table]{xcolor}


\colorlet{tableheadcolor}{gray!35} % Table header colour = 25% gray
\newcommand{\topline}{\arrayrulecolor{black}\specialrule{\heavyrulewidth}{\abovetopsep}{0pt}%
            \arrayrulecolor{tableheadcolor}\specialrule{\belowrulesep}{0pt}{0pt}%
            \arrayrulecolor{black}}
\newcommand{\midline}{\arrayrulecolor{tableheadcolor}\specialrule{\aboverulesep}{0pt}{0pt}%
            \arrayrulecolor{black}\specialrule{\lightrulewidth}{0pt}{0pt}%
            \arrayrulecolor{white}\specialrule{\belowrulesep}{0pt}{0pt}%
            \arrayrulecolor{black}}


\begin{document}

\centering

\begin{longtable}{ll}

\topline
\rowcolor{tableheadcolor}
Col1 & Col2 \\ \midline
\endfirsthead
\topline
\rowcolor{tableheadcolor}
Col1 & Col2 \\ 
\midline
\endhead
\bottomrule
\endfoot
\bottomrule
\endlastfoot


A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\


\end{longtable}

\end{document}

ここに画像の説明を入力してください

答え2

背景を描画するには tikz を使用します。次のようになります (徹底的にテストしていないので、実際のケースでは調整が必要になる可能性があります)。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}

\usepackage{geometry}
\geometry{paperwidth=5cm,paperheight=5cm}       % small page
\pagestyle{empty}

\usepackage{booktabs}
\usepackage{longtable}
\usepackage[table]{xcolor}
\usepackage{tikz}
\usetikzlibrary{tikzmark}


\makeatletter
\newcommand\LastLTentrywidth{1em}
\newlength\longtablewidth
\setlength{\longtablewidth}{1in}
\newcommand\getlongtablewidth{%
 \begingroup
  \ifcsname LT@\roman{LT@tables}\endcsname
  \global\longtablewidth=0pt
  \renewcommand\LT@entry[2]{\global\advance\longtablewidth by ##2\relax\gdef\LastLTentrywidth{##2}}%
  \@nameuse{LT@\roman{LT@tables}}%
  \fi
\endgroup}
\newcommand*{\topheadermark}{%   
  \noalign{\tikzmark{beforeheader\the\c@LT@tables}}}%
\newcommand*{\bottomheadermark}{%
  \noalign{\tikzmark{belowheader\the\c@LT@tables}}}%  
\newcommand\drawheaderbackground{%
 \tikz[overlay,remember picture]
  \fill[headcolor]([xshift=-0.5\longtablewidth,yshift=-\aboverulesep]pic cs:belowheader\the\c@LT@tables)
 rectangle ([yshift=\belowrulesep,xshift=0.5\longtablewidth]pic cs:beforeheader\the\c@LT@tables);}
\makeatother

\definecolor{headcolor}{gray}{0.8}


\begin{document}

\centering

\begin{longtable}{lll}\noalign{\getlongtablewidth}

\toprule \topheadermark
\drawheaderbackground
Col1111 & Col2 \\\bottomheadermark\midrule \endfirsthead
\toprule \topheadermark
\drawheaderbackground
Col1 & Col2 \\\bottomheadermark\midrule  \endhead
\bottomrule
\endfoot
\bottomrule
\endlastfoot


A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\
A&B \\


\end{longtable}

\end{document}

ここに画像の説明を入力してください

答え3

パッケージを使用した解決策は次のとおりです。のmakecell値を に設定し、適切な場所で \above/belowrulesep のデフォルト値を使用する makecell のコマンドに置き換えます。\above/belowrulesep0pt\Gape

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}

\usepackage{geometry}
\geometry{paperwidth=5cm,paperheight=5cm} % small page
\pagestyle{empty}

\usepackage{booktabs, longtable}
\usepackage[table]{xcolor}

\definecolor{headcolor}{gray}{0.8}
\newlength\defaultaboverulesep
\setlength\defaultaboverulesep{\aboverulesep}
\newlength\defaultbelowrulesep
\setlength\defaultbelowrulesep{\belowrulesep}
\setlength\aboverulesep{0pt}
\setlength\belowrulesep{0pt}
\usepackage{makecell}

\begin{document}

\centering

\begin{longtable}{lll}

  \toprule
  \rowcolor{headcolor}
  \Gape[\defaultbelowrulesep][\defaultaboverulesep]{Col1} & Col2 \\
  \midrule
  \addlinespace[\defaultbelowrulesep]
  \endfirsthead
  \toprule
  \rowcolor{headcolor}
  \Gape[\defaultbelowrulesep][\defaultaboverulesep]{Col1} & Col2 \\ %\aboverulesepcolor{headcolor}
  \midrule\addlinespace[\defaultbelowrulesep]
  \endhead
  \addlinespace[\defaultaboverulesep]
  \bottomrule
  \endfoot
  \addlinespace[\defaultaboverulesep]
  \bottomrule
  \endlastfoot

  A & B \\
  A & B \\
  A & B \\
  A & B \\
  A & B \\
  A & B \\
  A & B \\
  A & B \\
  A & B \\
  A & B \\
  A & B \\
  A & B \\


\end{longtable}

\end{document}

ここに画像の説明を入力してください

関連情報