在 中Beamer
,我希望使用longtable
包自动将表格拆分到多个框架中。我知道包xtab
,它工作良好Beamer
,但我更喜欢它,longtable
因为它是强大软件包内部使用的工具tabu
。
longtable
在 中可以很好地拆分表格Beamer
,但无法包含页眉和页脚(第一个页眉除外)。这是Beamer
?,中的错误吗longtable
?有人有解决方法吗?
以下是一个演示此问题的简短文件:
\documentclass{beamer}
\usepackage{verbatim,longtable}
\begin{document}
\begin{frame}[t,fragile] \small %
In Beamer, the \texttt{longtable} package
successfully breaks up tables, but fails to
include headers and footers (except for the
first header). Here's the source of this file,
go to next frame to see how \texttt{longtable}
fails: \tiny
\verbatiminput{\jobname.tex}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[t,allowframebreaks] \large %
\begin{longtable}{cc} %
FirstHeadA & FirstHeadB \endfirsthead %
HeadA & HeadB \endhead %
LastFootA & LastFootB \endlastfoot %
FootA & FootB \endfoot %
01A&01B\\02A&02B\\03A&03B\\04A&04B\\05A&05B\\ %
06A&06B\\07A&07B\\08A&08B\\09A&09B\\10A&10B\\ %
11A&11B\\12A&12B\\13A&13B\\14A&14B\\15A&15B\\ %
16A&16B\\17A&17B\\18A&18B\\19A&19B\\20A&20B\\ %
21A&21B\\22A&22B\\23A&23B\\24A&24B\\25A&25B %
\end{longtable} %
\end{frame} %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}
编辑:该xtab
包是该包的扩展supertabular
,它在中也能正常工作Beamer
。
答案1
如果两个在不同世纪编写的软件包不能很好地协同工作,那其实不是一个错误:这就是现状。longtable
依赖于或多或少标准的输出例程来拆分页面并插入页眉和页脚。分页beamer
远非标准,用于实现覆盖的所有隐藏内部页面<>
。
可以让它自动工作,但由于演示文稿不太可能包含数百页的表格,因此手动拆分页面更简单。只需使用两个框架,或者如果您希望 longtable 确保列宽在分页符之间保持不变,请使用可拆分框架,但只需“手动”添加页眉和页脚行。
\documentclass{beamer}
\usepackage{verbatim,longtable}
\begin{document}
\begin{frame}[t,fragile] \small %
In Beamer, the \texttt{longtable} package
successfully breaks up tables, but fails to
include headers and footers (except for the
first header). Here's the source of this file,
go to next frame to see how \texttt{longtable}
fails:
\tiny
\verbatiminput{\jobname.tex}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[t,allowframebreaks] %
\begin{longtable}{cc} %
FirstHeadA & FirstHeadB\\% \endfirsthead %
01A&01B\\02A&02B\\03A&03B\\04A&04B\\05A&05B\\
%
06A&06B\\07A&07B\\08A&08B\\09A&09B\\10A&10B\\ %
11A&11B\\12A&12B\\13A&13B\\14A&14B\\15A&15B\\ %
FootA & FootB\\%
\newpage
HeadA & HeadB\\% \endhead %
16A&16B\\17A&17B\\18A&18B\\19A&19B\\20A&20B\\ %
21A&21B\\22A&22B\\23A&23B\\24A&24B\\25A&25B\\
LastFootA & LastFootB
\end{longtable} %
\end{frame} %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}
答案2
包longtable
通过与输出例程和类交互来工作,beamer
与“普通”文档类和输出例程有很大不同。
supertabular
可以使用以下解决方法包:
\documentclass{beamer}
\usepackage{supertabular}
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[t,allowframebreaks] \large
\tablefirsthead{FirstHeadA & FirstHeadB\\}
\tablehead{HeadA & HeadB\\}
\tabletail{FootA & FootB\\}
\tablelasttail{LastFootA & LastFootB\\}
\begin{supertabular}{cc}
01A&01B\\02A&02B\\03A&03B\\04A&04B\\05A&05B\\
06A&06B\\07A&07B\\08A&08B\\09A&09B\\10A&10B\\
11A&11B\\12A&12B\\13A&13B\\14A&14B\\15A&15B\\
16A&16B\\17A&17B\\18A&18B\\19A&19B\\20A&20B\\
21A&21B\\22A&22B\\23A&23B\\24A&24B\\25A&25B\\
\end{supertabular}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}
评论:
- 与包相反,
longtable
包supertabular
对每一页使用单独的表格。因此,列宽不会在各个页面之间保留。 - 还
supertabular
使用启发式方法来确定哪些行适合一页。这比longtable
填满页面要差得多。
答案3
如果您不介意自己设置断点,您可以使用该tabularray
包:
\documentclass{beamer}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}
\begin{document}
\begin{frame}[allowframebreaks]
\frametitle{Frametitle}
\begin{longtblr}[
caption={Some caption}
]{
colspec = {@{}XXXXX@{}},
width = 0.85\linewidth,
rowhead = 1,
cells={halign=c},
row{1}={font=\bfseries}
}
\toprule
Head & Head & Head & Head & Head \\
\midrule
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\\pagebreak
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
\bottomrule
\end{longtblr}
\end{frame}
\end{document}