多列与 onslide 配合不好

多列与 onslide 配合不好

我有以下代码,可以无错误地运行:

\documentclass{beamer}
\usetheme{Boadilla}
\usepackage[frenchb]{babel}

\begin{document}
\begin{frame}
\begin{tabular}{ll|ll}
  \onslide<1->{a & b & c & d}
  \onslide<2->{
    \\ \hline
    \multicolumn{2}{l|}{Line 1}
    \\
    \multicolumn{2}{l|}{Line 2 left}
    & Line 2 right
  }
  \\ \hline
\end{tabular}
\end{frame}
\end{document}

但是,我将其改为Line 2 right\multicolumn{2}{l}{Line 2 right}它不再编译。然后我删除onslide<2->,它再次编译,但没有叠加效果。所以看起来第三个multicoulmn与 配合不好onslide,有人知道如何解决吗?

...
\onslide<2->{
  \\ \hline
  \multicolumn{2}{l|}{Line 1}
  \\
  \multicolumn{2}{l|}{Line 2 left}
  & \multicolumn{2}{l}{Line 2 right} \\\hline
}
\onslide<3->{
  \multicolumn{2}{l|}{Line 1}
  \\ 
  \multicolumn{2}{l|}{Line 2 left}
  & \multicolumn{2}{l}{Line 2 right} \\\hline
}

...

答案1

在 内的行末尾添加\\(和) :\hline\onslide

\documentclass{beamer}
\usetheme{Boadilla}
\usepackage[frenchb]{babel}

\begin{document}
\begin{frame}
\begin{tabular}{ll|ll}
  \onslide<1->{a & b & c & d}
  \onslide<2->{
    \\ \hline
    \multicolumn{2}{l|}{Line 1}
    \\
    \multicolumn{2}{l|}{Line 2 left}
    & \multicolumn{2}{l}{Line 2 right} \\\hline
  }
\end{tabular}
\end{frame}

\end{document}

但是,请阅读第节23.5 按行显示表手册的beamer摘录

当您希望逐行显示表格时,如果表格中有垂直线和水平线,您将遇到各种问题。原因是左端的第一条垂直线是在读取该行之前绘制的(因此,特别是在\onslide读取任何命令之前)。但是,在行尾放置\pause\uncover也无济于事,因为它会抑制最后一行以下的水平线。

(然后有一个例子展示发现表格的可能方法。)

对原始问题进行新的编辑:

\documentclass{beamer}
\usetheme{Boadilla}
\usepackage[frenchb]{babel}

\begin{document}
\begin{frame}
\begin{tabular}{ll|ll}
  \onslide<1->{a & b & c & d}
\onslide<2->{
  \\ \hline
  \multicolumn{2}{l|}{Line 1}
  \\
  \multicolumn{2}{l|}{Line 2 left}
  & \multicolumn{2}{l}{Line 2 right} \\\hline
}
\onslide<3->{\\[-\normalbaselineskip]
  \multicolumn{2}{l|}{Line 1}
   \\ 
  \multicolumn{2}{l|}{Line 2 left}
  & \multicolumn{2}{l}{Line 2 right} \\\hline
}
\end{tabular}
\end{frame}

\end{document}

第二行的末尾在里面\onslide<2>,因此\onslide<3>没有及时看到它;在行首添加一个带有负间距的新行,如我的示例所示。

相关内容