我正在寻找一种方法来用垂直线分隔特定的列(及其标题)。
到目前为止,我有以下代码和表格输出:
\begin{table}[!htbp] \centering
\caption{}
\label{}
\small
\begin{tabular}{@{\extracolsep{1pt}} ccccccccc}
\\[-1.8ex]\hline
\hline \\[-1.8ex]
& var-A-1 & var-A-2 & var-B-1 & var-B-2 & var-B-3 & var-C-1 & var-C-2 & var-C-2.1 \\
\hline \\[-1.8ex]
1 & $0.2655$ & $0.8984$ & $0.206$ & $0.4977$ & $0.9347$ & $0.3861$ & $0.4821$ & $0.6685$ \\
2 & $0.3721$ & $0.9447$ & $0.1766$ & $0.7176$ & $0.2121$ & $0.0134$ & $0.5996$ & $0.7942$ \\
3 & $0.5729$ & $0.6608$ & $0.687$ & $0.9919$ & $0.6517$ & $0.3824$ & $0.4935$ & $0.1079$ \\
4 & $0.9082$ & $0.6291$ & $0.3841$ & $0.38$ & $0.1256$ & $0.8697$ & $0.1862$ & $0.7237$ \\
5 & $0.2017$ & $0.0618$ & $0.7698$ & $0.7774$ & $0.2672$ & $0.3403$ & $0.8274$ & $0.4113$ \\
\hline \\[-1.8ex]
\end{tabular}
\end{table}
我希望最终得到这样的结果:
答案1
只需将分隔符放在表格列定义中:
cc|ccc|cccc
答案2
使用垂直线为原本组织不善的表格提供视觉结构绝对是一种不令人满意的做法。不要使用垂直线,而是更清晰地组织标题材料。以下示例显示了一种可能的方法;它不使用垂直线,而是使用包的线条绘制宏booktabs
而不是\hline
。(顺便说一句,我假设——实际上希望……——您的实际文档的标题单元格比“var-A”、“var-B”等略显简洁。)
另外,请确保数字数据的小数点对齐。我建议您加载包siunitx
并使用S
列类型来实现此排版目标。
\documentclass{article}
\usepackage{booktabs,siunitx,caption}
\captionsetup{skip=0.5\baselineskip}
\begin{document}
\begin{table}[!htbp]
\caption{}
\label{}
\setlength\tabcolsep{0pt} % make LaTeX figure out width of inter-column spaces
\begin{tabular*}{\textwidth}{l @{\extracolsep{\fill}}
*{8}{S[table-format=1.4]}}
\toprule
& \multicolumn{2}{c}{var-A} & \multicolumn{3}{c}{var-B} & \multicolumn{3}{c}{var-C} \\
\cmidrule{2-3} \cmidrule{4-6} \cmidrule{7-9}
& {1} & {2} & {1} & {2} & {3} & {1} & {2} & {2.1} \\
\midrule
1 & 0.2655 & 0.8984 & 0.206 & 0.4977 & 0.9347 & 0.3861 & 0.4821 & 0.6685 \\
2 & 0.3721 & 0.9447 & 0.1766 & 0.7176 & 0.2121 & 0.0134 & 0.5996 & 0.7942 \\
3 & 0.5729 & 0.6608 & 0.687 & 0.9919 & 0.6517 & 0.3824 & 0.4935 & 0.1079 \\
4 & 0.9082 & 0.6291 & 0.3841 & 0.38 & 0.1256 & 0.8697 & 0.1862 & 0.7237 \\
5 & 0.2017 & 0.0618 & 0.7698 & 0.7774 & 0.2672 & 0.3403 & 0.8274 & 0.4113 \\
\bottomrule
\end{tabular*}
\end{table}
\end{document}