在 Latex 中的长表中分页符时对表行进行分组

在 Latex 中的长表中分页符时对表行进行分组

我有一张长表格,横跨几页,由多组行组成。我使用了 longtable、booktabs、multirow 和 multicol 软件包,并阅读了它们的文档,但找不到问题的答案。有关 mwe,请参见下文。

我有两个(相关的)问题,均与分页符有关:

  1. 分页符不应该发生在一组行内,就像现在第 1 页和第 2 页上的情况一样。我有一个解决方法,就是在每一行后面放置 \nopagebreak,但我希望有一个更智能的解决方案。
  2. 我使用 \midrule 分隔组或行,但是如果这些组已经由分页符分隔,则我不再需要 \midrule,它会产生一条难看的额外行,请参见第 4 页的顶部。

有没有办法以乳胶可以理解的方式“分组”我的行,以便分页符不会落在多行的中间,并且分隔这些多行的中间规则不会在分页符周围使用?

\documentclass[a5paper,12pt]{article}% smaller paper size to show the problem
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{multicol}
\begin{document}
This is a test.
\begin{longtable}{lll}
\caption{Table to show problem}\\
\toprule
Year & Category & Used\\
\midrule
\endfirsthead
\multicolumn{3}{c}%
{\tablename\ \thetable\ -- \textit{Continuation of previous page}} \\
\toprule
Year & Category & Used \\
\midrule
\endhead
\hline \multicolumn{3}{r}{\textit{Table is continued on next page}} \\
\endfoot
\bottomrule
\endlastfoot
1933--1939 & 1 & Yes\\
\midrule
\multirow{2}{*}{1947--1948}
  & 1 & Yes\\
  & 2 & Some\\
\midrule
\multirow{3}{*}{1949--1961}
  & 1 & Yes\\
  & 2 & No\\
  & 3 & No\\
\midrule
\multirow{4}{*}{1962--1970}
  & 1 & Yes\\
  & 2 & Some\\
  & 3 & Some\\
  & 4 & Yes\\
\midrule
\multirow{4}{*}{1971--1974}
  & 1 & No\\
  & 2 & Some\\
  & 3 & No\\
  & 4 & Yes\\
\midrule
\multirow{5}{*}{1975--1979}
  & HC & No\\
  & 1 & No\\
  & 2 & Yes\\
  & 3 & Some\\
  & 4 & Yes\\
\midrule
\multirow{5}{*}{1980--1982}
  & HC & Yes\\
  & 1 & Yes\\
  & 2 & Some\\
  & 3 & Yes\\
  & 4 & Yes\\
\midrule
\multirow{5}{*}{1983--1984}
  & HC & Yes\\
  & 1 & No\\
  & 2 & Some\\
  & 3 & Yes\\
  & 4 & Yes\\
\midrule
\multirow{5}{*}{1985--1986}
  & HC & Some\\
  & 1 & Yes\\
  & 2 & Yes\\
  & 3 & Yes\\
  & 4 & Yes\\
\midrule
\multirow{5}{*}{1987--1989}
  & HC & Yes\\
  & 1 & Some\\
  & 2 & Yes\\
  & 3 & Yes\\
  & 4 & Yes\\
\midrule
\multirow{5}{*}{1990--2003}
  & HC & Yes\\
  & 1 & Some\\
  & 2 & Yes\\
  & 3 & Yes\\
  & 4 & Yes\\
\midrule
\multirow{5}{*}{2004--2010}
  & HC & Yes\\
  & 1 & Some\\
  & 2 & Yes\\
  & 3 & Yes\\
  & 4 & Yes\\
\midrule
\multirow{5}{*}{2011}
  & HC & Yes\\
  & 1 & Yes\\
  & 2 & Some\\
  & 3 & Yes\\
  & 4 & Yes\\
\midrule
\multirow{5}{*}{2012--2016}
  & HC & Yes\\
  & 1 & Yes\\
  & 2 & Yes\\
  & 3 & Yes\\
  & 4 & Some\\
\midrule
\multirow{5}{*}{2017--2018}
  & HC & Yes\\
  & 1 & Yes\\
  & 2 & Some\\
  & 3 & Some\\
  & 4 & Yes\\
\end{longtable}
\end{document}

答案1

我的第一个问题通过在表格中的每一行后面添加文字来解决\\*,正如评论中所建议的那样。我的第二个问题是,每个“表格在下一页继续”上面都有两行,通过删除上面的文字可以轻松解决这个\hline问题。

这给出了下面的代码,它完全满足我的要求:

\documentclass[a5paper,12pt]{article}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{multicol}
\begin{document}
This is a test.
\begin{longtable}{lll}
\caption{Table to show solution}\\
\toprule
Year & Category & Used\\
\midrule
\endfirsthead
\multicolumn{3}{c}%
{\tablename\ \thetable\ -- \textit{Continuation of previous page}} \\
\toprule
Year & Category & Used \\
\midrule
\endhead
\multicolumn{3}{r}{\textit{Table is continued on next page}} \\
\endfoot
\bottomrule
\endlastfoot
1933--1939 & 1 & Yes\\*
\midrule
\multirow{2}{*}{1947--1948}
  & 1 & Yes\\*
  & 2 & Some\\*
\midrule
\multirow{3}{*}{1949--1961}
  & 1 & Yes\\*
  & 2 & No\\*
  & 3 & No\\*
\midrule
\multirow{4}{*}{1962--1970}
  & 1 & Yes\\*
  & 2 & Some\\*
  & 3 & Some\\*
  & 4 & Yes\\*
\midrule
\multirow{4}{*}{1971--1974}
  & 1 & No\\*
  & 2 & Some\\*
  & 3 & No\\*
  & 4 & Yes\\*
\midrule
\multirow{5}{*}{1975--1979}
  & HC & No\\*
  & 1 & No\\*
  & 2 & Yes\\*
  & 3 & Some\\*
  & 4 & Yes\\*
\midrule
\multirow{5}{*}{1980--1982}
  & HC & Yes\\*
  & 1 & Yes\\*
  & 2 & Some\\*
  & 3 & Yes\\*
  & 4 & Yes\\*
\midrule
\multirow{5}{*}{1983--1984}
  & HC & Yes\\*
  & 1 & No\\*
  & 2 & Some\\*
  & 3 & Yes\\*
  & 4 & Yes\\*
\midrule
\multirow{5}{*}{1985--1986}
  & HC & Some\\*
  & 1 & Yes\\*
  & 2 & Yes\\*
  & 3 & Yes\\*
  & 4 & Yes\\*
\midrule
\multirow{5}{*}{1987--1989}
  & HC & Yes\\*
  & 1 & Some\\*
  & 2 & Yes\\*
  & 3 & Yes\\*
  & 4 & Yes\\*
\midrule
\multirow{5}{*}{1990--2003}
  & HC & Yes\\*
  & 1 & Some\\*
  & 2 & Yes\\*
  & 3 & Yes\\*
  & 4 & Yes\\*
\midrule
\multirow{5}{*}{2004--2010}
  & HC & Yes\\*
  & 1 & Some\\*
  & 2 & Yes\\*
  & 3 & Yes\\*
  & 4 & Yes\\*
\midrule
\multirow{5}{*}{2011}
  & HC & Yes\\*
  & 1 & Yes\\*
  & 2 & Some\\*
  & 3 & Yes\\*
  & 4 & Yes\\*
\midrule
\multirow{5}{*}{2012--2016}
  & HC & Yes\\*
  & 1 & Yes\\*
  & 2 & Yes\\*
  & 3 & Yes\\*
  & 4 & Some\\*
\midrule
\multirow{5}{*}{2017--2018}
  & HC & Yes\\*
  & 1 & Yes\\*
  & 2 & Some\\*
  & 3 & Some\\*
  & 4 & Yes\\*
\end{longtable}
\end{document}

相关内容