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

Связанный контент