![多列与 onslide 配合不好](https://linux22.com/image/254205/%E5%A4%9A%E5%88%97%E4%B8%8E%20onslide%20%E9%85%8D%E5%90%88%E4%B8%8D%E5%A5%BD.png)
我有以下代码,可以无错误地运行:
\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>
没有及时看到它;在行首添加一个带有负间距的新行,如我的示例所示。