我发现这个命令很有用,\addlinespace[3pt]
可以在行周围创建额外的白色边框。见示例:
\documentclass[a4paper]{report}
\usepackage{multirow,booktabs}
\usepackage[table]{xcolor}
\begin{document}
\begin{table}
\rowcolors{1}{gray!15}{gray!15}
\begin{tabular}{rrrrr}
\rowcolor{gray!50}
Header & 1 & 2 & 3 & 4 \\ \addlinespace[3pt]
Row1 & a & b & c & d \\
\multicolumn{1}{c}{} & a1 & b1 & c1 & d1 \\ \addlinespace[3pt]
\multicolumn{1}{c}{\multirow{-2}[0]{*}{Multirow1}} & a2 & b2 & c2 & d2 \\
Row2 & aa & ab & ac & ad \\
\end{tabular}
\end{table}
\end{document}
我还发现了如下命令:
\setlength\extrarowheight{7pt}
\renewcommand\arraystretch{1.2}
但这两个命令似乎只是扩展了整行,而不是扩展了白色边框。不过,你还是调用它 ;)
由于我有很多包含大量行的表格,我的问题是如何\addlinespace[3pt]
全局创建该命令,以便我不必在所有表格的每一行末尾添加它。
答案1
我不太确定你是否想在全部行,特别是涉及 a 的行\multirow
。
但是,\global\everycr{\addlinespace[3pt]}
在第一个单元格中声明即可;记得\everycr
在最后恢复为空的通常值。
\documentclass[a4paper]{report}
\usepackage{multirow,booktabs}
\usepackage[table]{xcolor}
\begin{document}
\begin{table}
\rowcolors{1}{gray!15}{gray!15}
\begin{tabular}{rrrrr}
\rowcolor{gray!50}
\global\everycr{\addlinespace[3pt]}%
Header & 1 & 2 & 3 & 4 \\
Row1 & a & b & c & d \\
\multicolumn{1}{c}{} & a1 & b1 & c1 & d1 \\\addlinespace[-3pt]
\multicolumn{1}{c}{\multirow{-2}[0]{*}{Multirow1}} & a2 & b2 & c2 & d2 \\
Row2 & aa & ab & ac & ad \\
\end{tabular}
\global\everycr{}
\end{table}
\end{document}
\addlinespace
请注意,我在两行共享其标签之间放置了相反命令。
答案2
你真正想要的是全局rowsep
设置。因此,你可以尝试使用tblr
新的 LaTeX3 包中的环境tabularray
:
\documentclass[a4paper]{report}
\usepackage{xcolor}
\usepackage{tabularray}
\SetTblrInner{rowsep=2pt}
\begin{document}
\begin{table}
\centering
\begin{tblr}{
colspec = {r|[1pt,white]rrrr},
cell{3}{1} = {r=2}{m}, % multirow
rows = {gray9},
hlines = {1pt,white},
}
Header & 1 & 2 & 3 & 4 \\
Row1 & a & b & c & d \\
Multirow1 & a1 & b1 & c1 & d1 \\
& a2 & b2 & c2 & d2 \\
Row2 & aa & ab & ac & ad \\
\end{tblr}
\end{table}
\end{document}