![表格中的 \toprule 和 p{}](https://linux22.com/image/327573/%E8%A1%A8%E6%A0%BC%E4%B8%AD%E7%9A%84%20%5Ctoprule%20%E5%92%8C%20p%7B%7D.png)
在我的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
(因为你无论如何都在使用它):
如果你始终记住两个简单的指导原则,就不会犯大错:
- 永远不要使用垂直规则。
- 切勿使用双重规则。
\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}