
В моем случае 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}