我正在尝试在 beamer 中制作表格动画。我想逐列显示表格。我按照其他示例使用 \onslide,但表格的 \midrules 和 \bottomrules 直到最后一张幻灯片才出现。如果我通过为表格的每个元素而不是整个列指定 \onlide 来制作动画,这不是问题,但对于较大的表格来说,编写它会花费更多时间。有没有更简单的方法让表格结构线出现?
这是我的第一篇帖子(多年来我一直在阅读其他人的问答),所以如果我搞错了什么或表达不清楚,请告诉我。谢谢!
\documentclass[10pt, xcolor=dvipsnames]{beamer}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
%The example that I am struggling with
\begin{frame}
\begin{tabular}{>{\onslide<1->}l >{\onslide<1->}c >{\onslide<2->}c }
\toprule
& Col A & Col B \\
\cmidrule{2-3}
1 & a & b \\
\bottomrule
\end{tabular}
\end{frame}
%This looks like I want it to, but requires specifying which slide each and every element should appear on.
\begin{frame}
\begin{tabular}{lcc }
\toprule
&\onslide<1->{Col A} & \onslide<2->{Col B} \\
\cmidrule{2-3}
\onslide<1->{1} & \onslide<1->{a} & \onslide<2->{b} \\
\bottomrule
\end{tabular}
\end{frame}
\end{document}
答案1
这里有一个选项,它由保存列元素组成,savebox
然后您可以在此框中应用\onslide
,您可以根据需要更改外观顺序
\documentclass[10pt, xcolor=dvipsnames]{beamer}
\usepackage{array}
\usepackage{booktabs}
\newsavebox{\mybox}
\newcolumntype{M}[2]{>{\begin{lrbox}{\mybox}}#1<{\end{lrbox}
\onslide<#2>{\unhbox\mybox}}}
\begin{document}
\begin{frame}
\begin{tabular}{M{l}{1-} M{c}{1-} M{c}{2-}}
\toprule
& Col A & Col B \\
\cmidrule{2-3}
1 & a & b \\
\bottomrule
\end{tabular}
\end{frame}
\end{document}