我有以下表格代码,但我不明白为什么两列更宽:
\newcolumntype{C}{>{\centering\arraybackslash}p{2em}}
\begin{table}[h]
\centering
\caption[]{\footnotesize\textbf{The initial conditions for Honeybee embryos.}}
\label{table: initial target bee}
\resizebox{0.7\textwidth}{!}{%
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
\multirow{2}{*}{Genes} & \multicolumn{4}{c|}{Initial values in Regions} & \multicolumn{4}{c|}{Target values in Regions}\\
\cline{2-9}
& R1 & R2 & R3 & R4 & R1 & R2 & R3 & R4 \\
\hline
\emph{e}& 0.7 & 0.7 & 0.7 & 0.7 & 0 & 0 & 0 & 0 \\
\hline
\end{tabular}
}
\end{table}
请问有什么建议吗?
答案1
类似这样的。您定义了一个newcolumntype
C,但在列说明符中使用了小写 c,这是主要错误。此外,您可能需要考虑arraystretch
通过以下方式稍微扩展一下
\renewcommand*{\arraystretch}{1.5} % 1.5 can be adjusted to sue one's need.
代码
\documentclass{article}
\usepackage{array,graphicx,multirow}
\begin{document}
\newcolumntype{C}{>{\centering\arraybackslash}p{3em}}
\begin{table}[!h]
\centering
\caption[]{\footnotesize\textbf{The initial conditions for Honeybee embryos.}}
\label{table: initial target bee}
\resizebox{0.7\textwidth}{!}{%
\begin{tabular}{*{9}{|C}|}%|C|C|C|C|C|C|C|C|}
\hline
\multirow{2}{*}{Genes} & \multicolumn{4}{c|}{Initial values in Regions} & \multicolumn{4}{c|}{Target values in Regions}\\
\cline{2-9}
& R1 & R2 & R3 & R4 & R1 & R2 & R3 & R4 \\\hline
\emph{e}& 0.7 & 0.7 & 0.7 & 0.7 & 0 & 0 & 0 & 0 \\\hline
\end{tabular}
}
\end{table}
\end{document}
答案2
当跨度\multicolumn
大于跨度列的总宽度时,就会发生这种情况。在这种情况下,最后一列会拉伸以填充更宽的\multicolumn
。解决这个问题的方法是拉伸列以腾出空间(您已经C
为此定义了一个 -column):
\documentclass{article}
\usepackage{array,multirow,booktabs}
\newcolumntype{C}{>{\centering\arraybackslash}p{2em}}
\begin{document}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
\multirow{2}{*}{Genes} & \multicolumn{4}{c|}{Initial values in Regions} & \multicolumn{4}{c|}{Target values in Regions} \\
\cline{2-9}
& R1 & R2 & R3 & R4 & R1 & R2 & R3 & R4 \\
\hline
\emph{e} & 0.7 & 0.7 & 0.7 & 0.7 & 0 & 0 & 0 & 0 \\
\hline
\end{tabular}
\bigskip
\begin{tabular}{c*{8}{C}}
\toprule
\smash{\raisebox{-.55\normalbaselineskip}{Genes}} &
\multicolumn{4}{c}{Initial values in Regions} &
\multicolumn{4}{c}{Target values in Regions} \\
\cmidrule(lr){2-5}\cmidrule(lr){6-9}
& R1 & R2 & R3 & R4 & R1 & R2 & R3 & R4 \\
\midrule
\emph{e} & 0.7 & 0.7 & 0.7 & 0.7 & 0 & 0 & 0 & 0 \\
\bottomrule
\end{tabular}
\end{document}
后一个表格不需要multirow
但它确实需要令人敬畏的booktabs
。另请注意简写列规范(请参阅声明表格中多列对齐的快捷方式)。
答案3
排版好的表格需要一些手工工作。对于数字表,我推荐使用siunitx
,它的S
列提供了很棒的功能。
对于特定问题,增加\tabcolsep
似乎会产生良好的结果。
\documentclass{article}
\usepackage{siunitx,booktabs}
\begin{document}
\begin{table}
\addtolength{\tabcolsep}{6pt}
\begin{tabular}{
@{}
l
*{4}{S[table-format=1.1]}
*{4}{S[table-format=1.0]}
@{}
}
\toprule
Genes &
\multicolumn{4}{c}{Initial values in Regions} &
\multicolumn{4}{c}{Target values in Regions} \\
\cmidrule(lr){2-5}
\cmidrule(l){6-9} % no trimming at the right
& {R1} & {R2} & {R3} & {R4} & {R1} & {R2} & {R3} & {R4} \\
\midrule
\emph{e} & 0.7 & 0.7 & 0.7 & 0.7 & 0 & 0 & 0 & 0 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
对参数的改变不会传播,因为它处于table
环境中。
也无需降低“基因”:它与其他一级标题处于同一级别。第一列应左对齐。
在列的规范中S
,您可以告诉整数和小数部分的数字位数。