表格中的 \toprule 和 p{}

表格中的 \toprule 和 p{}

在我的table,为了让文本在每个单元格中居中,我使用

\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}} 

而不是简单的p{1.5cm},我正在使用

 >{\centering\arraybackslash}p{1.5cm} 

我还在使用\toprule、、\midrule\bottomrule以及\usepackage{booktabs}

我的代码如下:

\documentclass[12pt]{article}



\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{booktabs}


\begin{document}


\begin{table}[h]
\centering
\begin{tabular}{| >{\centering\arraybackslash}p{1.5cm} | >{\centering\arraybackslash}p{1.2cm} | >{\centering\arraybackslash}p{1.2cm} |  >{\centering\arraybackslash}p{1.2cm} | >{\centering\arraybackslash}p{1.2cm} |>{\centering\arraybackslash}p{1.2cm} | >{\centering\arraybackslash}p{1.2cm} | >{\centering\arraybackslash}p{1.2cm} | >{\centering\arraybackslash}p{1.2cm}|}
\toprule
\multirow{2}{*}{} & \multicolumn{4}{c|}{Payoffs} &  \multicolumn{4}{c}{ROR} \\
\cline{2-9}
 & $\theta =1$ & $\theta =2$ & $E(P)$ & $\sigma(P)$ & $\theta =1$ & $\theta =2$ & $E(r)$ & $\sigma(r)$ \\
\midrule
Asset 1 & 110 & 95 &   &   &   &   &   &   \\
Asset 2 & 105 & 90 &   &   &   &   &   &   \\
Asset 3 & 120 & 90 &   &   &   &   &   &   \\
\bottomrule
\end{tabular}
\end{table}



\end{document} 

我的结果看起来很奇怪,如下所示:

在此处输入图片描述

首先,最右边的垂直线很短;第一行在右侧没有闭合。

第二,将所有垂直线剪断。

有什么想法吗?

答案1

右边的垂直线不是短了,而是缺失了,因为你使用了

\multicolumn{4}{c}{ROR}

代替

\multicolumn{4}{c|}{ROR}

但是,不要添加垂直规则,而是遵循指导方针建议来自booktabs(因为你无论如何都在使用它):

如果你始终记住两个简单的指导原则,就不会犯大错:

  1. 永远不要使用垂直规则。
  2. 切勿使用双重规则。

在此处输入图片描述

\documentclass{article}

\usepackage{booktabs,array}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}

\begin{document}

\begin{tabular}{ P{15mm} *{8}{P{12mm}} }
  \toprule
   & \multicolumn{4}{c}{Payoffs} &  \multicolumn{4}{c}{ROR} \\
  \cmidrule(lr){2-5}\cmidrule(lr){6-9}
   & $\theta = 1$ & $\theta = 2$ & $E(P)$ & $\sigma(P)$ & $\theta = 1$ & $\theta = 2$ & $E(r)$ & $\sigma(r)$ \\
  \midrule
  Asset 1 & 110 & 95 &   &   &   &   &   &   \\
  Asset 2 & 105 & 90 &   &   &   &   &   &   \\
  Asset 3 & 120 & 90 &   &   &   &   &   &   \\
  \bottomrule
\end{tabular}

\end{document}

值的列堆叠促进了视觉对齐,使得垂直规则的使用在某种程度上过时的

答案2

您不能将 booktabs规则与垂直规则一起使用,因为 booktabs 在其水平规则周围添加了一些垂直填充。出于同样的原因,尝试在带有 booktabs 的表格单元格中使用颜色时会遇到问题。

您可以booktabs用替换boldlines,这样表格中的规则宽度可变,以便模拟不同类型的书本标签规则。但是,很多人认为,如果只使用水平规则,您的表格会看起来更美观。

我在下面的代码中给出了两种解决方案的示例。请注意,您不需要\multirow对空单元格使用。

\documentclass[12pt]{article}

\usepackage{array, boldline}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\usepackage{booktabs}

\begin{document}

\begin{table}[!h]
  \centering\renewcommand\arraystretch{1.25}
  \begin{tabular}{|P{1.5cm} | *{8}{P{1.2cm} |}}
    \hlineB{2}
    & \multicolumn{4}{c|}{Payoffs} & \multicolumn{4}{c|}{ROR} \\
    \cline{2-9}
            & $\theta =1$ & $\theta =2$ & $E(P)$ & $\sigma(P)$ & $\theta =1$ & $\theta =2$ & $E(r)$ & $\sigma(r)$ \\
    \hlineB{2}
    Asset 1 & 110 & 95 & & & & & & \\
    Asset 2 & 105 & 90 & & & & & & \\
    Asset 3 & 120 & 90 & & & & & & \\
    \hlineB{2}
  \end{tabular}
\end{table}
\vskip1cm
\begin{table}[!h]
  \centering\renewcommand\arraystretch{1.25}
  \begin{tabular}{P{1.5cm}*{8}{P{1.2cm}}}
    & \multicolumn{4}{c}{Payoffs} & \multicolumn{4}{c}{ROR} \\
    \cmidrule[0.6pt](lr){2-5}\cmidrule[0.6pt](lr){6-9}
            & $\theta =1$ & $\theta =2$ & $E(P)$ & $\sigma(P)$ & $\theta =1$ & $\theta =2$ & $E(r)$ & $\sigma(r)$ \\
    \midrule[\heavyrulewidth]
    Asset 1 & 110 & 95 & & & & & & \\
    Asset 2 & 105 & 90 & & & & & & \\
    Asset 3 & 120 & 90 & & & & & & \\
    \bottomrule
  \end{tabular}
\end{table}

\end{document} 

在此处输入图片描述

相关内容