Beamer 与 `nicematrix` 叠加

Beamer 与 `nicematrix` 叠加

我想在环境中逐行显示表格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}

...得到以下输出:

在此处输入图片描述

相关内容