跨多页的表格分隔符

跨多页的表格分隔符

我遇到了一个问题,一个表格跨越多页,并且跨越了多行的列。我的代码如下所示。问题是在第 1 页上,第 1 行显示 foo1、bar1 和 yikes1,没有任何问题。第 2 行和 foo2 也显示在第 1 页上,然后页面中断,bar2 和 yikes2 最终出现在第 2 页。我希望它中断,以便第 2 行的所有内容都出现在第二页上。表格会增大和缩小,所以我希望有一个动态解决方案。

    \begin {supertabular}{|p{1.0in}|p{3.0in}|m{1.10in}|m{1.25in}|}
\hline
col 1
& col 2
& col 3
& col 4
\\\hline
\multirow{4}{*} 
row 1
& foo1
& bar1
& yikes1
\\\cline{2-4}
& foo1
& bar1
& yikes1
\\\cline{2-4}
& foo1
& bar1
& yikes1
\\\cline{2-4}
& foo1
& bar1
& yikes1
\\\cline{2-4}
\\\hline
\multirow{4}{*} 
row 2
& foo2
& bar2
& yikes2
\\\cline{2-4}
& foo2
& bar2
& yikes2
\\\cline{2-4}
& foo2
& bar2
& yikes2
\\\cline{2-4}
& foo2
& bar2
& yikes2
\\\cline{2-4}
\\\hline
\end {supertabular}

答案1

这与问题非常相似使用 cline 和 nopagebreak 的 longtable 多行问题。您还可以在那里查看如何制作正确的 MWE ;-)

与此相比,您的代码缺少以下内容:

  1. 你的语法好像有\multirow误:\multirow{4}{*}{row 1}这里看起来更好。
  2. 您需要保护您的线路以免在 的范围内断裂\multirow。使用\\*是第一步。
  3. 仍然有可能在 处断线\cline。David 给出了一个补丁来解决这个问题。

考虑到这些事情,我做出了以下 MWE:

\documentclass{article}

\usepackage{array,supertabular,multirow}

\makeatletter
\def\@cline#1-#2\@nil{%
  \omit
  \@multicnt#1%
  \advance\@multispan\m@ne
  \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
  \@multicnt#2%
  \advance\@multicnt-#1%
  \advance\@multispan\@ne
  \leaders\hrule\@height\arrayrulewidth\hfill
  \cr
  \noalign{\nobreak\vskip-\arrayrulewidth}}
\makeatother


\begin{document}

\vspace*{15cm}

\begin {supertabular}{|p{1.0in}|p{1.0in}|m{1.10in}|m{1.25in}|}
\hline
col 1
& col 2
& col 3
& col 4
\\\hline
\multirow{4}{*}{row 1}
& foo1
& bar1
& yikes1
\\*\cline{2-4}
& foo1
& bar1
& yikes1
\\\cline{2-4}
& foo1
& bar1
& yikes1
\\*\cline{2-4}
& foo1
& bar1
& yikes1
\\*\cline{2-4}
\\\hline
\multirow{4}{*}{row 2}
& foo2
& bar2
& yikes2
\\*\cline{2-4}
& foo2
& bar2
& yikes2
\\*\cline{2-4}
& foo2
& bar2
& yikes2
\\*\cline{2-4}
& foo2
& bar2
& yikes2
\\*\cline{2-4}
\\\hline
\end {supertabular}

\end{document}

但我仍然得到分页符 :-(

这似乎是一个supertabular问题。乍一看supertabular代码,我找不到明显的原因。

supertabular在到处替换之后longtable,它就可以工作了;-)

相关内容