我想在环境中逐行显示表格NiceTabular
(由nicematrix
包)。我的表格有交替的行颜色,我想用覆盖来覆盖/显示行颜色和其内容。我还想坚持nicematrix
使用包,而不是使用传统的tabular
/array
环境。
我尝试了几种在 和 类似环境中有效的方法tabular
,但在 中无效NiceTabular
。这些方法包括:
平均能量损失
\documentclass{beamer}
\usepackage{nicematrix,booktabs}
\begin{document}
\begin{frame}
\centering
\begin{NiceTabular}{m{.4\textwidth}m{.4\textwidth}}
\CodeBefore
\rowcolor{gray!50}{1} % heading
\rowcolors{2}{gray!25}{} % body
\Body
\toprule
\onslide<2->{Head 1 & Head 2} \\
\midrule
Row 1 Col 1 & Row 1 Col 2 \pause\\
Row 2 Col 1 & Row 2 Col 2 Row 2 Col 2 Row 2 Col 2 Row 2 Col 2 \\
\bottomrule
\end{NiceTabular}
Overlay in conventional \texttt{tabular} for comparison:
\begin{tabular}{m{.4\textwidth}m{.4\textwidth}}
\toprule
\onslide<2->{Head 1 & Head 2} \\
\midrule
Row 1 Col 1 & Row 1 Col 2 \pause\\
Row 2 Col 1 & Row 2 Col 2 Row 2 Col 2 Row 2 Col 2 Row 2 Col 2 \\
\bottomrule
\end{tabular}
\end{frame}
\end{document}
答案1
以下是我要做的。
\documentclass{beamer}
\usepackage{nicematrix,booktabs}
\begin{document}
\begin{frame}[t]
\centering
\begin{NiceTabular}{m{.4\textwidth}m{.4\textwidth}}
\CodeBefore
\rowcolor{gray!50}{1}
\rowcolors{2}{gray!25}{}
\Body
\toprule
Head 1 & Head 2 \\
\midrule
\only<2->
{ Row 1 Col 1 & text text text text text text text text text text }
\only<3->
{ \\ Row 2 Col 1 & text text text text text }
\only<4->
{ \\ Row 3 Col 1 & text text text text text text text text text }
\only<5->
{
\\ Row 4 Col 1 & text text \\
\bottomrule
}
\end{NiceTabular}
\end{frame}
\end{document}
与往常一样nicematrix
,您需要进行多次编译。
如果您接受用白色书写必须隐藏的文本,那么您也可以使用以下解决方案(表格位于垂直居中位置)。
\documentclass{beamer}
\usepackage{nicematrix,booktabs}
\begin{document}
\begin{frame}
\centering
\color{white}
\begin{NiceTabular}{m{.4\textwidth}m{.4\textwidth}}[rules/color=black]
\CodeBefore
\rowcolor{gray!50}{1}
\Body
\toprule
\RowStyle[color=black]{}
Head 1 & Head 2 \\
\midrule
\only<2->{\RowStyle[color=black,rowcolor=gray!25]{}}
Row 1 Col 1 & text text text text text text text text text text \\
\only<3->{\RowStyle[color=black]{}}
Row 2 Col 1 & text text text text text \\
\only<4->{\RowStyle[color=black,rowcolor=gray!25]{}}
Row 3 Col 1 & text text text text text text text text text \\
\only<5->{\RowStyle[color=black]{}}
Row 4 Col 1 & text text \\
\bottomrule
\end{NiceTabular}
\end{frame}
\end{document}
答案2
如果在每个单元格内使用,这似乎是可行的\onslide
。不过,根据表格的复杂程度,这可能需要大量代码。
我尝试了以下操作:
\documentclass{beamer}
\usepackage{nicematrix,booktabs}
\begin{document}
\begin{frame}
\centering
\begin{NiceTabular}{m{.4\textwidth}m{.4\textwidth}}
\CodeBefore
\rowcolor{gray!50}{1} % heading
\onslide<3->{\rowcolors{2}{gray!25}{}} % body
\Body
\toprule
Head 1 & Head 2 \\
\midrule
\onslide<2->{Row 1 Col 1} & \onslide<2->{Row 1 Col 2} \\
\onslide<3->{Row 2 Col 1} & \onslide<3->{Row 2 Col 2} \\
\bottomrule
\end{NiceTabular}
\end{frame}
\end{document}
...得到以下输出: