%20%ED%96%89%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EA%B8%B4%20%ED%85%8C%EC%9D%B4%EB%B8%94%EC%9D%84%20%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
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}
답변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/belowrulesep
0pt
\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}