表格中的列宽不一样

表格中的列宽不一样

我有以下表格代码,但我不明白为什么两列更宽:

\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

类似这样的。您定义了一个newcolumntypeC,但在列说明符中使用了小写 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,您可以告诉整数和小数部分的数字位数。

在此处输入图片描述

相关内容