投影仪演示文稿中、列内和覆盖层上的透明项目(不可见!)

投影仪演示文稿中、列内和覆盖层上的透明项目(不可见!)

我的目的是制作一个有两列的框架:左侧是一系列项目,右侧是数字(只有一个例外)。项目应该一次显示一个,右列有不同的数字(或文本),它们与项目上的文本相关。

那个例外(下面示例中的幻灯片 3)就是让我感到困扰的地方(参见下面的 gif 动画)。右边的第 3 张幻灯片应该有一个分项。列表实际上就在那里,但是是透明的。

仅当我将列表放在中间幻灯片时才会发生这种情况。如果我更改顺序,使列表出现在最后,则一切正常。

如果我消除alertblockitemize环境(即:使其成为普通文本),则问题消失。单独使用任何这些环境(即:仅使用alertblock或仅使用itemize)似乎都会再次引发问题。

下图解释了(我希望)问题是什么: 示例 gif

这是一个玩具示例源代码:

\documentclass{beamer}
\mode<presentation>
{
  \usecolortheme{default}
  \setbeamercovered{transparent}
}

\usepackage{lmodern}

\begin{document}

\begin{frame}[t]{some title}
  \begin{columns}[T]
    \column{.5\textwidth}
      \begin{itemize}
        \item<1-| alert@1>
          item 1
        \item<2-| alert@2>
          item 2
        \item<3-| alert@3>
          item 3 %%% THE PROBLEM APPEARS IN THIS SLIDE
        \item<4-| alert@4>
          item 4
        \item<5-| alert@5->
          item 5
      \end{itemize}
      \onslide<6->
      \footnotesize final words...
    \column{.5\textwidth}
      \only<1>{ figure 1 }
      \only<2>{ figure 2 }

      %% AND NOW, THE PROBLEMATIC PART:
      \only<3>{
        \begin{alertblock}
          \small % if I comment this line it doesn't compile. 
          \begin{itemize}
            \item
              more items 1
            \item
              more items 2
          \end{itemize}
        \end{alertblock}
      }
      %% END OF TROUBLEMAKER

      \only<4>{ figure 3 }
      \only<5->{ figure 4 (last) }
  \end{columns}
\end{frame}

\end{document}

还有另一个奇怪的行为:如果我注释掉该\small命令,文档甚至无法编译,并给我这个错误消息:

! TeX capacity exceeded, sorry [input stack size=5000].
\end #1->\csname end#1
                      \endcsname \@checkend {#1}\expandafter \endgroup \if@e...
l.50 \end{frame}

!  ==> Fatal error occurred, no output PDF file produced!

任何帮助深表感谢!

答案1

您的代码有两个问题:

  1. 的语法\onslide取决于它是否在overprint环境中使用(onslide<...> ...)或不在环境中使用( )。您需要在此处用括号onslide<...>{...}将覆盖元素( )括起来。请参阅\footnotesize final words...使用 onslide 和 overprint 以及 setbeamercovered{invisible} 时,表格标题透明了解更多详情。不按要求使用括号会对框架的其余部分造成严重破坏;这就是覆盖问题的根源。
  2. 环境alertblock需要一个参数(即块的标题)。alertblock如果注释掉下一行,则不会向环境传递任何参数。如果您不想要标题,只需将其{}作为强制参数传递即可。

见下文:

\documentclass{beamer}
\mode<presentation>
{
  \usecolortheme{default}
  \setbeamercovered{transparent}
}

\usepackage{lmodern}

\begin{document}

\begin{frame}[t]{some title}
  \begin{columns}[T]
    \column{.5\textwidth}
      \begin{itemize}
        \item<1-| alert@1>
          item 1
        \item<2-| alert@2>
          item 2
        \item<3-| alert@3>
          item 3 %%% THE PROBLEM APPEARS IN THIS SLIDE
        \item<4-| alert@4>
          item 4
        \item<5-| alert@5->
          item 5
      \end{itemize}
      \onslide<6->  % <- outside of an overprint environment,
                                % the syntax of is \onslide<...>{},
                                % not \onslide<...> ...
      {%
        \footnotesize final words...%
      }
    \column{.5\textwidth}
      \only<1>{ figure 1 }
      \only<2>{ figure 2 }

      %% AND NOW, THE PROBLEMATIC PART:
      \only<3>{
        \begin{alertblock}{} % alertblock has a mandatory argument
          %\small % if I comment this line it doesn't compile. 
          \begin{itemize}
            \item
              more items 1
            \item
              more items 2
          \end{itemize}
        \end{alertblock}
      }
      %% END OF TROUBLEMAKER

      \only<4>{ figure 3 }
      \only<5->{ figure 4 (last) }
  \end{columns}
\end{frame}

\end{document}

相关内容