longtabu с несколькими столбцами и несколькими строками

longtabu с несколькими столбцами и несколькими строками

Я использовал предложенный @Zarko код. Пока что он работает, за исключением многострочных, которые, кажется, выпадают из рамки страницы, как показано на скриншоте. Есть у кого-нибудь идеи?

\documentclass[12pt]{article}
\usepackage[onehalfspacing]{setspace}
\usepackage[american]{babel}
\usepackage{booktabs, multirow, longtable, tabu}
\usepackage{siunitx}

\usepackage{color}
\definecolor{gray}{rgb}{0.8,0.8,0.8}
\usepackage{colortbl}    


\begin{document}

\begin{longtabu} to \textwidth { X[1, l] X[1, l] 
                           *{6}{S[table-format=2.3]}
                            }
\toprule
\toprule
& & \multicolumn{3}{c}{\textbf{def1}} & \multicolumn{3}{c}{\textbf{def2}} \\
\cmidrule(lr){3-5}\cmidrule(lr){6-8}
& & {contrast} & {t} & {p} & {contrast} & {t} & {p} \\ 
\endfirsthead
\toprule
& & \multicolumn{3}{c}{\textbf{def1}} & \multicolumn{3}{c}{\textbf{def2}} \\
& & contrast & t & p & contrast & t & p \\
\toprule
\endhead
\bottomrule
\multicolumn{8}{r}{continued on the next page} \\
\endfoot
\bottomrule
\bottomrule
\endlastfoot

\toprule
\multicolumn{8}{c}{\textbf{group1}} \\
\toprule
\multirow{6}{*}{\textbf{design1}}  
& pos1 & 15.05 & 1.06 & 0.145 & -3.41 & -0.28 & 0.610 \\
& pos2 & 9.20 & 0.65 & 0.258 & -4.02 & -0.32 & 0.627 \\
& pos3 & 32.92 & 2.30 & \cellcolor{gray}0.011 & 4.87 & 0.40 & 0.344 \\
& pos4 & 6.46 & 0.69 & 0.247 & 3.94 & 0.45 & 0.327 \\
& pos5 & 10.99 & 0.87 & 0.191 & 0.41 & 0.03 & 0.486 \\
& pos6 & 36.70 & 2.20 & \cellcolor{gray}0.014 & 30.20 & 1.94 & \cellcolor{gray}0.026 \\
\midrule
\multirow{6}{*}{\textbf{design2}}
& pos1 & 6.51 & 0.87 & 0.192 & -2.79 & -0.41 & 0.661 \\
& pos2 & 1.91 & 0.29 & 0.385 & -3.21 & -0.54 & 0.706 \\
& pos3 & 16.49 & 2.52 & \cellcolor{gray}0.006 & 4.21 & 0.73 & 0.233 \\
& pos4 & 4.42 & 0.96 & 0.168 & 1.15 & 0.28 & 0.391 \\
& pos5 & 0.13 & 0.02 & 0.491 & -0.26 & -0.05 & 0.521 \\
& pos6 & 11.73 & 1.63 & \cellcolor{gray}0.052 & 12.18 & 1.88 & \cellcolor{gray}0.031 \\
\midrule
\multirow{6}{*}{\textbf{design3}}
& pos1 & 17.02 & 1.18 & 0.119 & -5.75 & -0.46 & 0.678 \\
& pos2 & 11.08 & 0.77 & 0.220 & -3.85 & -0.30 & 0.618 \\
& pos3 & 35.82 & 2.41 & \cellcolor{gray}0.008 & 6.00 & 0.48 & 0.316 \\
& pos4 & 9.59 & 0.96 & 0.170 & 1.78 & 0.19 & 0.423 \\
& pos5 & 9.25 & 0.70 & 0.243 & 0.86 & 0.07 & 0.472 \\
& pos6 & 34.91 & 1.99 & \cellcolor{gray}0.024 & 32.28 & 2.04 & \cellcolor{gray}0.021 \\
\toprule
\multicolumn{8}{c}{\textbf{group2}} \\
\toprule
\multirow{6}{*}{\textbf{design1}}
& pos1 & 16.98 & 1.07 & 0.142 & -10.16 & -0.70 & 0.759 \\
& pos2 & 18.47 & 1.10 & 0.136 & 2.77 & 0.18 & 0.429 \\
& pos3 & 15.28 & 1.23 & 0.110 & 16.18 & 1.41 & 0.079 \\
& pos4 & 21.38 & 1.92 & \cellcolor{gray}0.027 & -0.18 & -0.02 & 0.507 \\
& pos5 & 30.56 & 2.54 & \cellcolor{gray}0.006 & 16.49 & 1.50 & 0.067 \\
& pos6 & 29.32 & 3.40 & \cellcolor{gray}0.000 & -7.31 & -0.98 & 0.836 \\
\midrule
\multirow{6}{*}{\textbf{design2}}
& pos1 & 5.45 & 0.71 & 0.239 & -3.97 & -0.56 & 0.712 \\
& pos2 & 9.89 & 1.48 & 0.070 & -0.84 & -0.14 & 0.554 \\
& pos3 & 7.32 & 1.38 & 0.084 & 4.53 & 0.93 & 0.176 \\
& pos4 & 10.15 & 2.04 & \cellcolor{gray}0.021 & -0.86 & -0.19 & 0.575 \\
& pos5 & 11.09 & 2.20 & \cellcolor{gray}0.014 & 3.13 & 0.67 & 0.250 \\
& pos6 & 9.31 & 1.88 & \cellcolor{gray}0.030 & -3.42 & -0.75 & 0.774 \\
\midrule
\multirow{6}{*}{\textbf{design3}}
& pos1 & 16.54 & 1.06 & 0.145 & -7.81 & -0.55 & 0.709 \\
& pos2 & 11.86 & 0.72 & 0.236 & -6.58 & -0.43 & 0.667 \\
& pos3 & 15.75 & 1.29 & 0.099 & 14.89 & 1.32 & 0.093 \\
& pos4 & 25.87 & 2.36 & \cellcolor{gray}0.009 & -1.19 & -0.12 & 0.548 \\
& pos5 & 30.73 & 2.59 & \cellcolor{gray}0.005 & 14.17 & 1.31 & 0.096 \\
& pos6 & 31.61 & 3.66 & \cellcolor{gray}0.000 & -6.28 & -0.85 & 0.802 \\
\end{longtabu}

\end{document}

введите описание изображения здесь

решение1

с использованием siunitxпакета:

введите описание изображения здесь

\documentclass[12pt]{article}
\usepackage[american]{babel}
\usepackage{siunitx} % <-- added
\usepackage{booktabs, multirow, longtable, tabu}
\usepackage[onehalfspacing]{setspace}


%\usepackage{showframe}
\begin{document}

\begin{longtabu} to \textwidth { X[1.5, l] X[1, l] 
                               *{6}{S[table-format=2.3]} % <-- changed
                                }
\toprule
    & & \multicolumn{3}{c}{\textbf{def1}}   & \multicolumn{3}{c}{\textbf{def2}} \\
    \cmidrule(lr){3-5}\cmidrule(lr){6-8}
    & & {contrast} & {t} & {p}              & {contrast} & {t} & {p}            \\ 
\midrule
\endfirsthead
\toprule
    & & \multicolumn{3}{c}{\textbf{def1}}   & \multicolumn{3}{c}{\textbf{def2}} \\
    \cmidrule(lr){3-5}\cmidrule(lr){6-8}
    & & contrast & t & p                    & contrast & t & p \\
\midrule
\endhead
    \bottomrule
\multicolumn{8}{r}{continued on the next page} \\
\endfoot
\bottomrule
\endlastfoot
% end of tabu preamble
\multicolumn{8}{c}{\textbf{group 1}} \\
\midrule
\multirow{6}{*}{\textbf{design1}}  
    & pos1  & 15.05 & 1.06 & 0.145 & -3.41 & -0.28 & 0.610 \\
    & pos2  & 9.20  & 0.65 & 0.258 & -4.02 & -0.32 & 0.627 \\
    & pos3  & 32.92 & 2.30 & 0.011 &  4.87 &  0.40 & 0.344 \\
    & pos4  & 6.46  & 0.69 & 0.247 &  3.94 &  0.45 & 0.327 \\
    & pos5  & 10.99 & 0.87 & 0.191 &  0.41 &  0.03 & 0.486 \\
    & pos6  & 36.70 & 2.20 & 0.014 & 30.20 &  1.94 & 0.026 \\
%\midrule
\end{longtabu}

\end{document}

Я также изменил longtabu"premble" -- удалил дублирующиеся правила. Показанный результат получен после второго запуска компиляции MWE.

Редактировать: С моим MWE, теперь уже заполненным всей таблицей, я получаю желаемый и ожидаемый результат:

введите описание изображения здесь

Пожалуйста, обратите внимание на различия между предлагаемым ниже MWE и вашим кодом! В моем MWE я приложил значительные усилия, необходимые для очистки вашего кода. В нем удалено все ненужное \multicolumns, переработаны определения для заголовков и нижних колонтитулов, изменения могут неправильно использовать правила и т. д.:

\documentclass[12pt]{article}
\usepackage[american]{babel}
\usepackage{siunitx}
\usepackage{booktabs, multirow, longtable, tabu}
\usepackage[onehalfspacing]{setspace}

%---------------------------------------------------------------%
\usepackage{showframe}% to show page layout
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}

\begin{longtabu} to \textwidth { X[1.5, l] X[1, l]
                               *{6}{S[table-format=2.3]}
                                }
\toprule
    & & \multicolumn{3}{c}{\textbf{def1}}   & \multicolumn{3}{c}{\textbf{def2}} \\
    \cmidrule(lr){3-5}\cmidrule(lr){6-8}
    & & {contrast} & {t} & {p}              & {contrast} & {t} & {p}            \\
\midrule
\endfirsthead
\toprule
    & & \multicolumn{3}{c}{\textbf{def1}}   & \multicolumn{3}{c}{\textbf{def2}} \\
    \cmidrule(lr){3-5}\cmidrule(lr){6-8}
    & & contrast & t & p                    & contrast & t & p \\
\midrule
\endhead
    \bottomrule
\multicolumn{8}{r}{continued on the next page} \\
\endfoot
\bottomrule
\endlastfoot
% end of tabu preamble
\multicolumn{8}{c}{\textbf{group 1}} \\
\midrule
\multirow{6}{*}{\textbf{design1}}
    & pos1  & 15.05 & 1.06 & 0.145 & -3.41 & -0.28 & 0.610 \\
    & pos2  & 9.20  & 0.65 & 0.258 & -4.02 & -0.32 & 0.627 \\
    & pos3  & 32.92 & 2.30 & 0.011 &  4.87 &  0.40 & 0.344 \\
    & pos4  & 6.46  & 0.69 & 0.247 &  3.94 &  0.45 & 0.327 \\
    & pos5  & 10.99 & 0.87 & 0.191 &  0.41 &  0.03 & 0.486 \\
    & pos6  & 36.70 & 2.20 & 0.014 & 30.20 &  1.94 & 0.026 \\
\midrule
\multirow{6}{*}{\textbf{design2}}  
    & pos1  & 6.51  & 0.87 & 0.192 & -2.79 & -0.41 & 0.661 \\
    & pos2  & 1.91  & 0.29 & 0.385 & -3.21 & -0.54 & 0.706 \\
    & pos3  & 16.49 & 2.52 & 0.006 & 4.21  &  0.73 & 0.233 \\
    & pos4  & 4.42  & 0.96 & 0.168 & 1.15  &  0.28 & 0.391 \\
    & pos5  & 0.13  & 0.02 & 0.491 & -0.26 & -0.05 & 0.521 \\
    & pos6  & 11.73 & 1.63 & 0.052 & 12.18 &  1.88 & 0.031 \\
\midrule
\multirow{6}{*}{\textbf{design3}}  
    & pos1  & 17.02 & 1.18 & 0.119 & -5.75 & -0.46 & 0.678 \\
    & pos2  & 11.08 & 0.77 & 0.220 & -3.85 & -0.30 & 0.618 \\
    & pos3  & 35.82 & 2.41 & 0.008 &  6.00 &  0.48 & 0.316 \\
    & pos4  & 9.59  & 0.96 & 0.170 &  1.78 &  0.19 & 0.423 \\
    & pos5  & 9.25  & 0.70 & 0.243 &  0.86 &  0.07 & 0.472 \\
    & pos6  & 34.91 & 1.99 & 0.024 & 32.28 &  2.04 & 0.021 \\
\midrule
\multicolumn{8}{c}{\textbf{group2}} \\
\midrule
\multirow{6}{*}{\textbf{design1}}  
    & pos1  & 16.98 & 1.07 & 0.142 & -10.16 & -0.70 & 0.759 \\
    & pos2  & 18.47 & 1.10 & 0.136 &  2.77  &  0.18 & 0.429 \\
    & pos3  & 15.28 & 1.23 & 0.110 & 16.18  &  1.41 & 0.079 \\
    & pos4  & 21.38 & 1.92 & 0.027 & -0.18  & -0.02 & 0.507 \\
    & pos5  & 30.56 & 2.54 & 0.006 & 16.49  &  1.50 & 0.067 \\
    & pos6  & 29.32 & 3.40 & 0.000 & -7.31  & -0.98 & 0.836 \\
\midrule
\multirow{6}{*}{\textbf{design2}}  
    & pos1  & 5.45  & 0.71 & 0.239 & -3.97 & -0.56 & 0.712 \\
    & pos2  & 9.89  & 1.48 & 0.070 & -0.84 & -0.14 & 0.554 \\
    & pos3  & 7.32  & 1.38 & 0.084 &  4.53 &  0.93 & 0.176 \\
    & pos4  & 10.15 & 2.04 & 0.021 & -0.86 & -0.19 & 0.575 \\
    & pos5  & 11.09 & 2.20 & 0.014 &  3.13 &  0.67 & 0.250 \\
    & pos6  & 9.31  & 1.88 & 0.030 & -3.42 & -0.75 & 0.774 \\
\midrule
\multirow{6}{*}{\textbf{design3}}  
    & pos1  & 16.54 & 1.06 & 0.145 & -7.81 & -0.55 & 0.709 \\
    & pos2  & 11.86 & 0.72 & 0.236 & -6.58 & -0.43 & 0.667 \\
    & pos3  & 15.75 & 1.29 & 0.099 & 14.89 &  1.32 & 0.093 \\
    & pos4  & 25.87 & 2.36 & 0.009 & -1.19 & -0.12 & 0.548 \\
    & pos5  & 30.73 & 2.59 & 0.005 & 14.17 &  1.31 & 0.096 \\
    &¸pos6  & 31.61 & 3.66 & 0.000 & -6.28 & -0.85 & 0.802 \\
\end{longtabu}

\end{document}

Примечание: longtable(также longtabu) попробуйте разбить таблицу между страницами в начале новых строк. В случае использования multirowячеек, longtableсчитайте их одной строкой, поэтому она не может быть разбита между страницами (без какого-либо автора пакета "черная магия", см.вопрос: возможно ли разделить многострочную ячейку на несколько страниц при использовании longtable).

Поскольку в моих тестах вашего MWE не было воспроизведено сообщенной проблемы, я могу только сделать вывод, что в вашем компьютере есть какая-то "черная магия". Отчаянная попытка - обновить вашу установку LeTeX или протестировать MWE на каком-то другом компьютере или с каким-то другим именем.

решение2

Имея, например, \lipsum[3]перед таблицей, вашу проблему можно было бы воспроизвести.

Вы можете избежать разрывов страниц после табличных строк, используя \\*. В следующем примере разрывы страниц разрешены только в правилах.

(Относительно комментария в вашемКросспост на golatex.de: Заключите \cellcolor{gray}в фигурные скобки, чтобы выровнять числа и в этих ячейках.)

\documentclass[12pt]{article}
\usepackage[onehalfspacing]{setspace}
\usepackage[american]{babel}
\usepackage{booktabs, multirow, longtable, tabu}
\usepackage{siunitx}
\usepackage[table]{xcolor}
\definecolor{gray}{rgb}{0.8,0.8,0.8}
\usepackage{lipsum}% dummy text
\begin{document}
\lipsum[3]

\begin{longtabu} to \textwidth {X[1.5, l] X[1, l] *{6}{S[table-format=2.3]}}
\toprule
& & \multicolumn{3}{c}{\textbf{def1}} & \multicolumn{3}{c}{\textbf{def2}} \\
\cmidrule(lr){3-5}\cmidrule(lr){6-8}
& & {contrast} & {t} & {p} & {contrast} & {t} & {p} \\ 
\endfirsthead
\toprule
& & \multicolumn{3}{c}{\textbf{def1}} & \multicolumn{3}{c}{\textbf{def2}} \\
& & contrast & t & p & contrast & t & p \\
\midrule[\heavyrulewidth]
\endhead
\multicolumn{8}{r}{continued on the next page} \\
\endfoot
\bottomrule
\endlastfoot

\midrule[\heavyrulewidth]
\multicolumn{8}{c}{\textbf{group1}} \\*
\midrule
\multirow{6}{*}{\textbf{design1}}
& pos1 & 15.05 & 1.06 & 0.145 & -3.41 & -0.28 & 0.610 \\*
& pos2 & 9.20 & 0.65 & 0.258 & -4.02 & -0.32 & 0.627 \\*
& pos3 & 32.92 & 2.30 & {\cellcolor{gray}}0.011 & 4.87 & 0.40 & 0.344 \\*
& pos4 & 6.46 & 0.69 & 0.247 & 3.94 & 0.45 & 0.327 \\*
& pos5 & 10.99 & 0.87 & 0.191 & 0.41 & 0.03 & 0.486 \\*
& pos6 & 36.70 & 2.20 & {\cellcolor{gray}}0.014 & 30.20 & 1.94 & {\cellcolor{gray}}0.026 \\*
\midrule
\multirow{6}{*}{\textbf{design2}}
& pos1 & 6.51 & 0.87 & 0.192 & -2.79 & -0.41 & 0.661 \\*
& pos2 & 1.91 & 0.29 & 0.385 & -3.21 & -0.54 & 0.706 \\*
& pos3 & 16.49 & 2.52 & {\cellcolor{gray}}0.006 & 4.21 & 0.73 & 0.233 \\*
& pos4 & 4.42 & 0.96 & 0.168 & 1.15 & 0.28 & 0.391 \\*
& pos5 & 0.13 & 0.02 & 0.491 & -0.26 & -0.05 & 0.521 \\*
& pos6 & 11.73 & 1.63 & {\cellcolor{gray}}0.052 & 12.18 & 1.88 & {\cellcolor{gray}}0.031 \\*
\midrule
\multirow{6}{*}{\textbf{design3}}
& pos1 & 17.02 & 1.18 & 0.119 & -5.75 & -0.46 & 0.678 \\*
& pos2 & 11.08 & 0.77 & 0.220 & -3.85 & -0.30 & 0.618 \\*% <- remove this * to reproduce the problem
& pos3 & 35.82 & 2.41 & {\cellcolor{gray}}0.008 & 6.00 & 0.48 & 0.316 \\*
& pos4 & 9.59 & 0.96 & 0.170 & 1.78 & 0.19 & 0.423 \\*
& pos5 & 9.25 & 0.70 & 0.243 & 0.86 & 0.07 & 0.472 \\*
& pos6 & 34.91 & 1.99 & {\cellcolor{gray}}0.024 & 32.28 & 2.04 & {\cellcolor{gray}}0.021 \\*
\midrule[\heavyrulewidth]
\multicolumn{8}{c}{\textbf{group2}} \\*
\midrule[\heavyrulewidth]
\multirow{6}{*}{\textbf{design1}}
& pos1 & 16.98 & 1.07 & 0.142 & -10.16 & -0.70 & 0.759 \\*
& pos2 & 18.47 & 1.10 & 0.136 & 2.77 & 0.18 & 0.429 \\*
& pos3 & 15.28 & 1.23 & 0.110 & 16.18 & 1.41 & 0.079 \\*
& pos4 & 21.38 & 1.92 & {\cellcolor{gray}}0.027 & -0.18 & -0.02 & 0.507 \\*
& pos5 & 30.56 & 2.54 & {\cellcolor{gray}}0.006 & 16.49 & 1.50 & 0.067 \\*
& pos6 & 29.32 & 3.40 & {\cellcolor{gray}}0.000 & -7.31 & -0.98 & 0.836 \\*
\midrule
\multirow{6}{*}{\textbf{design2}}
& pos1 & 5.45 & 0.71 & 0.239 & -3.97 & -0.56 & 0.712 \\*
& pos2 & 9.89 & 1.48 & 0.070 & -0.84 & -0.14 & 0.554 \\*
& pos3 & 7.32 & 1.38 & 0.084 & 4.53 & 0.93 & 0.176 \\*
& pos4 & 10.15 & 2.04 & {\cellcolor{gray}}0.021 & -0.86 & -0.19 & 0.575 \\*
& pos5 & 11.09 & 2.20 & {\cellcolor{gray}}0.014 & 3.13 & 0.67 & 0.250 \\*
& pos6 & 9.31 & 1.88 & {\cellcolor{gray}}0.030 & -3.42 & -0.75 & 0.774 \\*
\midrule
\multirow{6}{*}{\textbf{design3}}
& pos1 & 16.54 & 1.06 & 0.145 & -7.81 & -0.55 & 0.709 \\*
& pos2 & 11.86 & 0.72 & 0.236 & -6.58 & -0.43 & 0.667 \\*
& pos3 & 15.75 & 1.29 & 0.099 & 14.89 & 1.32 & 0.093 \\*
& pos4 & 25.87 & 2.36 & {\cellcolor{gray}}0.009 & -1.19 & -0.12 & 0.548 \\*
& pos5 & 30.73 & 2.59 & {\cellcolor{gray}}0.005 & 14.17 & 1.31 & 0.096 \\*
& pos6 & 31.61 & 3.66 & {\cellcolor{gray}}0.000 & -6.28 & -0.85 & 0.802 \\*
\end{longtabu}
\end{document}

введите описание изображения здесь

Обратите внимание, что после правила ниже строки «group» может быть разрыв страницы, как на следующем рисунке:

введите описание изображения здесь

В этом случае вам придется добавить разрыв страницы вручную:

\midrule[\heavyrulewidth]\pagebreak
\multicolumn{8}{c}{\textbf{group2}} \\*
\midrule[\heavyrulewidth]

Связанный контент