我目前有一个 8 列 5 行的表格,我想添加一个从 C4 到 C6 的子列。例如,这是我的表格下面的代码
\usepackage{adjustbox}
\begin{table}[ht]
\centering
\begin{adjustbox}{width=1\textwidth,center=\textwidth}
\small
\begin{tabular}{rrrrrrrr}
\hline
c1 & c2 & c3 & c4 & c5 & c6 & c7 & c8 \\
\hline
r1 & 8.95e-04 & 7.35e-04 & 4.78e-06 & 10 & 0.52 & 0.67 & 0.30 \\
r2 & 7.08e-21 & 2.09e-02 & 1.70e-26 & 54 & 0.55 & 0.64 & 0.25 \\
r3 & 4.94e-04 & 5.50e-02 & 3.52e-06 & 17 & 0.38 & 0.61 & 0.13 \\
r4 & 1.16e-06 & 6.65e-02 & 5.54e-08 & 10 & 0.52 & 0.62 & 0.28 \\
r5 & 1.27e-05 & 8.61e-02 & 5.20e-07 & 10 & 0.53 & 0.66 & 0.27 \\
\hline
\end{tabular}
\end{adjustbox}
\caption{table example}
\end{table}
但是,我需要做的是在 C4、C5、C6 顶部添加一个标题,并将 C4、C5、C6 向下推。以下是我想要实现的目标:
顶列与其他列对齐,且相应列位于顶列下方
答案1
在这里,使用\multicolumn
:
\documentclass{article}
\usepackage{adjustbox}
\usepackage{booktabs}
\begin{document}
\begin{table}[ht]
\centering
\begin{adjustbox}{width=1\textwidth,center=\textwidth}
\small
\begin{tabular}{rrrrrrrr}
\toprule
c1 & c2 & c3 & c4 & c5 & c6 & c7 & c8 \\
\cmidrule(lr){4-6}
& & & \multicolumn3r{c4--c6} & & \\
\midrule
r1 & 8.95e-04 & 7.35e-04 & 4.78e-06 & 10 & 0.52 & 0.67 & 0.30 \\
r2 & 7.08e-21 & 2.09e-02 & 1.70e-26 & 54 & 0.55 & 0.64 & 0.25 \\
r3 & 4.94e-04 & 5.50e-02 & 3.52e-06 & 17 & 0.38 & 0.61 & 0.13 \\
r4 & 1.16e-06 & 6.65e-02 & 5.54e-08 & 10 & 0.52 & 0.62 & 0.28 \\
r5 & 1.27e-05 & 8.61e-02 & 5.20e-07 & 10 & 0.53 & 0.66 & 0.27 \\
\bottomrule
\end{tabular}
\end{adjustbox}
\caption{table example}
\end{table}
\end{document}
\multicolumn{number of columns}{alignment}{text}
可能不言自明。如果您的参数只有一个标记,则可以省略括号,而我倾向于这样做 --- 因此我在这里写了\multicolumn3r
而不是\multicolumn{3}{r}
。从功能上讲,它们是相同的。
我还使用了包提供的规则booktabs
来改善表格的整体外观。
顺便说一句,对于减号,您可能想要使用$-$
而不是-
;后者您会得到一个破折号,这是不一样的。
答案2
如前所述,\multicolumn
命令可用于共享列标题。以下 MWE 还包含一些可以改进表格的题外建议:对于水平线,我使用了包中的命令booktabs
。为了改善表格列中数字的对齐方式,我使用了包S
中的类型列。由于在表格上siunitx
使用不可避免地会导致整个文档中的字体大小不一致,这是您可能想要避免的,所以我完全删除了环境。表格应该已经足够窄以适合可用的文本宽度。如果您仍然坚持使表格与文本宽度完全一样宽,您可能需要使用:adjustbox
adjustbox
tabular*
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{table}[ht]
\centering
\caption{table example}
\begin{tabular}{r*{3}{S[table-format=1.2e-2]}S[table-format=2]*{3}{S[table-format=1.2]}}
\toprule
c1 & {c2} & {c3} &\multicolumn{3}{c}{common header} & {c7} & {c8} \\ \cmidrule{4-6}
& & & {c4} & {c5}& {c6} & & \\
\midrule
r1 & 8.95e-04 & 7.35e-04 & 4.78e-06 & 10 & 0.52 & 0.67 & 0.30 \\
r2 & 7.08e-21 & 2.09e-02 & 1.70e-26 & 54 & 0.55 & 0.64 & 0.25 \\
r3 & 4.94e-04 & 5.50e-02 & 3.52e-06 & 17 & 0.38 & 0.61 & 0.13 \\
r4 & 1.16e-06 & 6.65e-02 & 5.54e-08 & 10 & 0.52 & 0.62 & 0.28 \\
r5 & 1.27e-05 & 8.61e-02 & 5.20e-07 & 10 & 0.53 & 0.66 & 0.27 \\
\bottomrule
\end{tabular}
\end{table}
\begin{table}[ht]
\sisetup{output-exponent-marker=\ensuremath{\mathrm{E}}}
\centering
\caption{table example}
\begin{tabular}{r*{3}{S[table-format=1.2e-2]}S[table-format=2]*{3}{S[table-format=1.2]}}
\toprule
c1 & {c2} & {c3} &\multicolumn{3}{c}{common header} & {c7} & {c8} \\ \cmidrule{4-6}
& & & {c4} & {c5}& {c6} & & \\
\midrule
r1 & 8.95e-04 & 7.35e-04 & 4.78e-06 & 10 & 0.52 & 0.67 & 0.30 \\
r2 & 7.08e-21 & 2.09e-02 & 1.70e-26 & 54 & 0.55 & 0.64 & 0.25 \\
r3 & 4.94e-04 & 5.50e-02 & 3.52e-06 & 17 & 0.38 & 0.61 & 0.13 \\
r4 & 1.16e-06 & 6.65e-02 & 5.54e-08 & 10 & 0.52 & 0.62 & 0.28 \\
r5 & 1.27e-05 & 8.61e-02 & 5.20e-07 & 10 & 0.53 & 0.66 & 0.27 \\
\bottomrule
\end{tabular}
\end{table}
\begin{table}[ht]
\centering
\caption{table example}
\begin{tabular*}{\linewidth}{r@{\extracolsep{\fill}}*{3}{S[table-format=1.2e-2]}S[table-format=2]*{3}{S[table-format=1.2]}}
\toprule
c1 & {c2} & {c3} &\multicolumn{3}{c}{common header} & {c7} & {c8} \\ \cmidrule{4-6}
& & & {c4} & {c5}& {c6} & & \\
\midrule
r1 & 8.95e-04 & 7.35e-04 & 4.78e-06 & 10 & 0.52 & 0.67 & 0.30 \\
r2 & 7.08e-21 & 2.09e-02 & 1.70e-26 & 54 & 0.55 & 0.64 & 0.25 \\
r3 & 4.94e-04 & 5.50e-02 & 3.52e-06 & 17 & 0.38 & 0.61 & 0.13 \\
r4 & 1.16e-06 & 6.65e-02 & 5.54e-08 & 10 & 0.52 & 0.62 & 0.28 \\
r5 & 1.27e-05 & 8.61e-02 & 5.20e-07 & 10 & 0.53 & 0.66 & 0.27 \\
\bottomrule
\end{tabular*}
\end{table}
\end{document}