下表有两行标题,顶行使用 组织类别,第二行使用\multirow
。目标是在第一组(第 1-2 列)和第二组(第 3-4 列)之间添加空白,但不在任何其他列之间添加空白。
在我尝试任何可能的解决方案之前,最小工作示例(可能添加了一个或两个额外的包 - 如果是这样,请原谅),与我的实际示例具有相同的对齐方式:
\documentclass[hidelinks,12pt,fullpage]{article}
\usepackage[margin=0.8in]{geometry}
\usepackage{amsmath}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{clcl}
\toprule
\multicolumn{2}{c}{GG} & \multicolumn{2}{c}{GS} \\\cmidrule(lr){1-2}\cmidrule(lr){3-4}
ID & \multicolumn{1}{c}{$P$} & ID & \multicolumn{1}{c}{$P$} \\
\midrule
1 & 1 & 33 & 2.5 \\
2 & 0.9 & 34 & 2.25 \\
\bottomrule
\end{tabular}
\end{document}
输出:
我尝试了多种解决方案,但都无济于事。它们基本上都存在相同的问题。考虑一下这个尝试,然后看看下面的输出。
\documentclass[hidelinks,12pt,fullpage]{article}
\usepackage[margin=0.8in]{geometry}
\usepackage{amsmath}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{cl@{\hspace{2em}}cl}
\toprule
\multicolumn{2}{c}{GG} & \multicolumn{2}{c}{GS} \\\cmidrule(lr){1-2}\cmidrule(lr){3-4}
ID & \multicolumn{1}{c}{$P$} & ID & \multicolumn{1}{c}{$P$} \\
\midrule
1 & 1 & 33 & 2.5 \\
2 & 0.9 & 34 & 2.25 \\
\bottomrule
\end{tabular}
\end{document}
输出:
请注意,第二列现在比以前更宽了。\cmidrule
左侧的现在向右延伸得太远,第二行第二列的“P”也向右延伸得太远。这似乎实际上是在延伸第二列,而不是在其后添加空间。
我还尝试过在部分之前/之后添加空格@{\hspace{2em}}
、使用\hrule
Instead、使用\qquad
Instead 以及可能还有其他一些方法。另外,我的表格非常非常高,因此在第 2 列和第 3 列之间添加另一个“不可见”列会非常麻烦。我真的更希望避免使用这种解决方案。还有其他建议吗?
谢谢,
马特
编辑:从以下答案来看,不添加额外列的最佳解决方案如下。
\documentclass[hidelinks,12pt,fullpage]{article}
\usepackage[margin=0.8in]{geometry}
\usepackage{amsmath}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{cl<{\hspace{2cm}}cl}
\toprule
\multicolumn{2}{c<{\hspace{2cm}}}{GG}
& \multicolumn{2}{c}{GS}
\\
\cmidrule(lr{2cm}){1-2}\cmidrule(lr){3-4}
ID & \multicolumn{1}{c<{\hspace{2cm}}}{$P$}
& ID & \multicolumn{1}{c}{$P$} \\
\midrule
1 & 1 & 33 & 2.5 \\
2 & 0.9 & 34 & 2.25 \\
\bottomrule
\end{tabular}
\end{document}
答案1
一种方法是在第二列的右侧添加额外的空间,并记得将其包含在相关的\multicolumn
格式规范和相应的修剪中cmidrule
:
\documentclass[hidelinks,12pt,fullpage]{article}
\usepackage[margin=0.8in]{geometry}
\usepackage{amsmath}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{cl<{\hspace{2cm}}cl}
\toprule
\multicolumn{2}{c<{\hspace{2cm}}}{GG}
& \multicolumn{2}{c}{GS}
\\
\cmidrule(lr{2cm}){1-2}\cmidrule(lr){3-4}
ID & \multicolumn{1}{c<{\hspace{2cm}}}{$P$}
& ID & \multicolumn{1}{c}{$P$} \\
\midrule
1 & 1 & 33 & 2.5 \\
2 & 0.9 & 34 & 2.25 \\
\bottomrule
\end{tabular}
\end{document}
我使用包<
中的规范array
(您已经通过加载tabularx
)而不是@
表达式来添加额外的列之间的空间,而不是取代标准的分隔。
答案2
为了在第二组和第三组之间留出更多空间,我将插入空列,然后使其cmidrule
稍微宽一些,并设置数字,使用包S
中的列类型siunitx
:
\documentclass[12pt,fullpage]{article}
\usepackage[margin=0.8in]{geometry}
\usepackage{amsmath}
\usepackage{booktabs, tabularx}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{*{2}{S[table-format=2.2,
table-column-width=5ex]}
c
*{2}{S[table-format=2.2,
table-column-width=5ex]}
}
\toprule
\multicolumn{2}{c}{GG} && \multicolumn{2}{c}{GS} \\
\cmidrule(l{2pt}r{2pt}){1-2}
\cmidrule(l{2pt}r{2pt}){4-5}
{ID} & {$P$} && {ID} & {$P$} \\
\midrule
1 & 1 && 33 & 2.5 \\
2 & 0.9 && 34 & 2.25 \\
\bottomrule
\end{tabular}
\end{document}
结果:
如果您希望 GG 组和 GS 组之间有更多空间,您可以添加 @{\hspace{2e}}
例如c
:
\begin{tabular}{*{2}{S[table-format=2.2,
table-column-width=5ex]}
c@{\hspace{2em}}
*{2}{S[table-format=2.2,
table-column-width=5ex]}
}
列并得到:
答案3
一个简单的解决方案是在第 2 列和第 3 列之间添加一个额外的列。添加一个\phantom
条目以添加您想要的任意宽度。
\documentclass[hidelinks,12pt,fullpage]{article}
\usepackage[margin=0.8in]{geometry}
\usepackage{amsmath}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{clccl}
\toprule
\multicolumn{2}{c}{GG} &\phantom{mm}& \multicolumn{2}{c}{GS} \\\cmidrule(lr){1-2}\cmidrule(lr){4-5}
ID & \multicolumn{1}{c}{$P$} && ID & \multicolumn{1}{c}{$P$} \\
\midrule
1 & 1 && 33 & 2.5 \\
2 & 0.9 && 34 & 2.25 \\
\bottomrule
\end{tabular}
\end{document}