我有一个包含大量表格的文档,我想对所有表格应用相同的标题行格式,而不必对每个表格进行手动修改。
我现在使用\AtBeginEnvironment
和\rowcolors
来自etoolbox
基于的包Bernard 的解决方案用于设置序言中的背景颜色,但没有找到任何类似的字体类型和文本颜色。
我当前的代码如下:
\documentclass{article}
\usepackage[table, svgnames]{xcolor} %\usepackage{array}
\usepackage{cellspace}
\usepackage{etoolbox}
\colorlet{headercolour}{DarkSeaGreen}
\colorlet{textcolour}{white}
\AtBeginEnvironment{tabular}{\rowcolors{1}{\ifnumless{\rownum}{2}{headercolour}{white}}{}}
\begin{document}
\begin{table}
\centering
\begin{tabular}{|*{4}{Sc}|}
\hline
\textbf{\color{white}Column1} & \textbf{\color{white}Column2} & \textbf{\color{white}Column3} & \textbf{\color{white}Column4} \\%%set formatting manually for each table
\hline
A & B & D & E \\
\hline
& & & F \\
\hline
& & & \\
\hline
\end{tabular}
\caption{Table 1}
\end{table}
\begin{table}
\centering
\begin{tabular}{|c|c|c|}
\hline
Header1 & Header2 & Header3\\
cell1 & cell2 & cell3\\
\hline
\end{tabular}
\caption{Table2}
\end{table}
\end{document}
第一个表格按需要格式化。这就是我想为每个表格自动设置的样式。
有什么想法可以做到这一点吗?谢谢!
答案1
这是 ConTeXt 真正出彩的地方。观察实际的表格内容如何不包含任何视觉标记
\setupTABLE
[row][first]
[background=color,
backgroundcolor=darkgreen,
color=white,
style=bold,
framecolor=black]
\starttext
\startplacetable[title={Table 1}]
\startTABLE
\NC Column1 \NC Column2 \NC Column3 \NC Column4 \NC\NR
\NC A \NC B \NC D \NC E \NC\NR
\NC \NC \NC \NC F \NC\NR
\stopTABLE
\stopplacetable
\startplacetable[title={Table 2}]
\startTABLE
\NC Header1 \NC Header2 \NC Header3 \NC\NR
\NC cell1 \NC cell2 \NC cell3 \NC\NR
\stopTABLE
\stopplacetable
\stoptext
答案2
我建议定义新的列类型,,,,L
仅当我们在第一行C
时才R
包含字体和文本颜色变化,因为选项[table]
定义xcolor
了一个\rownum
计数器:
\documentclass{article}
\usepackage[table, svgnames]{xcolor}
\usepackage{cellspace}
\usepackage{etoolbox}
\colorlet{headercolour}{DarkSeaGreen}
\colorlet{textcolour}{yellow}
\AtBeginEnvironment{tabular}{\rowcolors{1}{\ifnumequal{\rownum}{1}{headercolour}{white}}{}}%
\newcolumntype{L}{>{\ifnumequal{\rownum}{1}{\sffamily\bfseries\color{textcolour}}}Sl}
\newcolumntype{C}{>{\ifnumequal{\rownum}{1}{\sffamily\bfseries\color{textcolour}}}Sc}
\newcolumntype{R}{>{\ifnumequal{\rownum}{1}{\sffamily\bfseries\color{textcolour}}}Sr}
\setlength{\cellspacetoplimit}{5pt}
\setlength{\cellspacebottomlimit}{5pt}
\begin{document}
\begin{table}[!htb]
\centering
\begin{tabular}{|*{4}{C}|}%
\hline
Column1 & Column2 & Column3 & Column4 \\%%set formatting manually for each table
\hline
A & B & D & E \\
\hline
& & & F \\
\hline
& & & \\
\hline
\end{tabular}
\caption{Table 1}
\end{table}
\begin{table}[!htb]
\centering
\begin{tabular}{| CCC|}%
\hline
Header1 & Header2 & Header3 \\
cell1 & cell2 & cell3\\
\hline
\end{tabular}
\caption{Table2}
\end{table}
\end{document}