我有一张看起来像这样的表格:
Group 1 1 2
Sub point 1 3
Subpoint 2 3
Group 2 3 4
Sub point 4 5
Pie! 3 1
Group 3 4 7
Cake? 6 8
Imma bored 4 7
该表是用 R 脚本生成的,但行以迭代方式输出。 (我尝试使用 xtable,但解析和字符串连接比这里显示的要多得多。)
我想在组行和前一行之间添加一个小的垂直间距,因此我得到以下格式:
Group 1 1 2
Sub point 1 3
Subpoint 2 3
Group 2 3 4
Sub point 4 5
Pie! 3 1
Group 3 4 7
Cake? 6 8
Imma bored 4 7
通常,添加垂直间距可以使用\vspace
,但这会增加间距后行。由于我的脚本(以及我不想实现前瞻的懒惰),我正在寻找一个命令来增加行间距以前的行。例如
...
& Subpoint & 2 & 3 \\
\multicolumn{2}{l}{\addVspaceAbove{1em} Group 2 } & 3 & 4 \\
& Sub point & 4 & 5 \\
...
提前致谢!
解决方案
感谢 Qrrbrbirlbel,提供了一个前后一致的解决方案:
\begin{tabular}[ht]{llcc}
\multicolumn{2}{l}{Group} & Value 1 & Value 2 \\
\hline
\multicolumn{2}{l}{Group 1 } & 1 & 2 \\
& Sub point & 1 & 3 \\
& Subpoint & 2 & 3 \\
\multicolumn{2}{l}{Group 2 } & 3 & 4 \\
& Sub point & 4 & 5 \\
& Pie! & 3 & 1 \\
\multicolumn{2}{l}{\rule{0pt}{\dimexpr.7em+0.5em}Group 3 } & 4 & 7 \\
& Cake? & 6 & 8 \\
& Imma bored & 4 & 7 \\
\end{tabular}
答案1
您可以使用以下方法在行之间添加垂直空间
\\
中的可选参数\\[.5em]
,宏
\addVspacebefore{.5em}
定义为\newcommand*{\addVspaceabove}[1]{\rule{0pt}{\dimexpr.7em+#1}\ignorespaces}
构建一个可以延伸通常的支柱
\strut
,或者\noalign{\vspace{.5em}}
这与 非常相似\\[.5em]
。
在下面的例子中,我还使用\midrule
了booktabs
提供良好水平规则的包。
代码
\documentclass{standalone}
\usepackage{booktabs}
\newcommand*{\addVspaceabove}[1]{\rule{0pt}{\dimexpr.7em+#1}\ignorespaces}
\begin{document}
\begin{tabular}{llcc}
\multicolumn{2}{l}{Group} & Value 1 & Value 2 \\ \midrule
\multicolumn{2}{l}{Group 1} & 1 & 2 \\
& Sub point & 1 & 3 \\
& Subpoint & 2 & 3 \\[.5em]
\multicolumn{2}{l}{Group 2} & 3 & 4 \\
& Sub point & 4 & 5 \\
& Pie! & 3 & 1 \\
\multicolumn{2}{l}{\addVspaceabove{.5em} Group 3} & 4 & 7 \\
& Cake? & 6 & 8 \\
& Imma bored & 4 & 7 \\\noalign{\vspace{.5em}}
\multicolumn{2}{l}{Group 4} & 3 & 1 \\
& \TeX & 4 & 1 \\
& \LaTeX & 5 & 9
\end{tabular}
\end{document}