У меня есть следующий код, который работает без ошибок:
\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->
, он снова скомпилировался, но без эффекта наложений. Так что, похоже, 3-й 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>
не видит его вовремя; добавьте новую строку с отрицательным интервалом в начале строки, как показано в моем примере.