Ужасный разрыв страниц при использовании очень длинных многоколоночных элементов

Ужасный разрыв страниц при использовании очень длинных многоколоночных элементов

Я использую ltablexс \multicolumns. Моя проблема в том, что мне нужно ввести много текста внутри отдельных \multicolumnэлементов, а затем, когда он автоматически разбивает таблицу на две разные страницы, в конце первой страницы остается много пустого пространства. Я хотел бы найти подсказку для автоматического разбиения элемента \multicolumnпри достижении нижнего поля, вместо того, чтобы разбивать построчно. Вот пример:

\begin{tabularx}{\linewidth}{| l | X | X | X | X | X | X | X |}
blabla & more blabla & \multicolumn{3}{c|}{merging cells} & \multicolumn{3}{c|}{more merging} \\
\multicolumn{8}{|p{\textwidth-2\tabcolsep-2\fboxrule}|}{a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, } \\
\hline
\multicolumn{8}{|p{\textwidth-2\tabcolsep-2\fboxrule}|}{a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, } \\
\hline
\multicolumn{8}{|p{\textwidth-2\tabcolsep-2\fboxrule}|}{a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, } \\
\hline
\multicolumn{8}{|p{\textwidth-2\tabcolsep-2\fboxrule}|}{a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, } \\
\hline
...
\multicolumn{8}{|p{\textwidth-2\tabcolsep-2\fboxrule}|}{a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, } \\
\hline
\end{tabularx}

решение1

Нет никакой необходимости иметь longtable/ltablexздесь (и использовать tabularx X columns.) Если вы используете tabularxtex, то потребуется много усилий для переустановки таблицы и определения оптимальной ширины столбцов, но вы заранее знаете, что охватывающие ячейки имеют полную ширину, а отдельные ячейки составляют восьмую часть от этого (или, по крайней мере, седьмую часть ширины строки за вычетом наибольшей записи в первом столбце). Так что вы можете сообщить это TeX и избавить его от необходимости разбираться с этим. После исправления ширины ячеек им больше не нужно находиться в одной таблице, поскольку они в любом случае выстроятся в линию, поэтому вы можете заменить охватывающие записи обычным текстом. Если вам действительно нужны вертикальные линии, вы можете использовать их mdframedдля создания разрываемой рамки.

примечание

\textwidth-2\tabcolsep-2\fboxrule

это неправильный расчет, так как ширина линейки \arrayrulewidthневерна \fboxrule(конечно, они могут иметь одинаковое значение).

Итак, что-то вроде:

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

\documentclass{article}

\addtolength\textheight{-30\baselineskip}
\addtolength\paperheight{-30\baselineskip}
\pdfpageheight\paperheight
\newenvironment{trow}
{\par
\begin{tabular}{|*8{p{\dimexpr(((\textwidth-\arrayrulewidth)/8)-2\tabcolsep-\arrayrulewidth)\relax}|}}
\hline}
{\\\hline\end{tabular}%
\par}
\begin{document}
\setlength\parindent{0pt}

\def\x{a very long text, a very long text, a very long text, a very long
text, a very long text, a very long text, a very long text, a very
long text, a very long text, a very long text, a very long text, a
very long text, a very long text, a very long text, a very long text,
a very long text, a very long text, a very long text, a very long
text, a very long text, a very long text, }

\x
\begin{trow}
red&yellow&blue&green&red&yellow&blue&green
\end{trow}
\begin{trow}
1&2&3&4&5&6&7&8
\end{trow}

\x
\begin{trow}
red&yellow&blue&green&red&yellow&blue&green
\end{trow}
\begin{trow}
1&2&3&4&5&6&7&8
\end{trow}

\x
\begin{trow}
red&yellow&blue&green&red&yellow&blue&green
\end{trow}
\begin{trow}
1&2&3&4&5&6&7&8
\end{trow}


\end{document}

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