Fazendo referência aos números dos slides do beamer, nem todos os slides são mostrados (erro de referência indefinido)

Fazendo referência aos números dos slides do beamer, nem todos os slides são mostrados (erro de referência indefinido)

Eu tenho um slide que é aberto gradativamente. Digamos que normalmente tenha n slides. Mas "agora" decido não começar no slide 1, digamos no slide 2. Embora ainda haja n-1 slides mostrados, o LaTeX ainda decide que não consegue mais encontrar a definição do rótulo! Como faço para resolver esse problema?

Eu forneço um exemplo mínimo abaixo. Observe que dupliquei todos os slides para poder definir o rótulo tanto como um argumento para o slide quanto da 'maneira usual' - apenas para mostrar que isso não muda nada.

Aqui o código:

\documentclass{beamer}

\begin{document}

\begin{frame}<2->{Title of Slide 1}\label{LabelOfSlideOne}
  Slide 1 has three subslides, opened one by one, normally. Here, however, we start at slide number 2!
  \begin{itemize}[<+->]
    \item 1
    \item 2
    \item 3
  \end{itemize}
\end{frame}


\begin{frame}<2->[label=LabelOfSlideTwo]{Title of Slide 2}
  Slide 2 is exactly as slide 1, we simply define the label differently.
  \begin{itemize}[<+->]
    \item 1
    \item 2
    \item 3
  \end{itemize}
\end{frame}


\begin{frame}{Title of Slide 3}\label{LabelOfSlideThree}
  Slide 3 has two subslides, we show them incrementally, as normal.
  \begin{itemize}[<+->]
    \item 1
    \item 2
  \end{itemize}
\end{frame}


\begin{frame}[label=LabelOfSlideFour]{Title of Slide 4}
  Slide 4 is exactly as slide 3, we simply define the label differently.
  \begin{itemize}[<+->]
    \item 1
    \item 2
  \end{itemize}
\end{frame}


\begin{frame}{Slide 5: Test all the references!}
  \begin{itemize}
    \item This should show a 1: \ref{LabelOfSlideOne}
    \item This should show a 2: \ref{LabelOfSlideTwo}
    \item This should show a 3: \ref{LabelOfSlideThree}
    \item This should show a 4: \ref{LabelOfSlideFour}
  \end{itemize}
\end{frame}

\end{document}

Esse é o resultado:

insira a descrição da imagem aqui

Isto mostra que enquantonormalmentedefinir rótulos funciona perfeitamente (os dois últimos slides), não funciona quando não mostramos todos os slides (os dois primeiros slides).

Então... Como resolver esse problema?

Responder1

Existem algumas maneiras pelas quais você pode evitar o problema:

  • você pode especificar o rótulo em uma sobreposição específica, por exemplo\label<2>{LabelOfSlideOne}

  • você pode fazer referência a uma sobreposição específica de um rótulo, por exemplo\ref{LabelOfSlideTwo<2>}


\documentclass{beamer}

\begin{document}

\begin{frame}<2->{Title of Slide 1}\label<2>{LabelOfSlideOne}
  Slide 1 has three subslides, opened one by one, normally. Here, however, we start at slide number 2!
  \begin{itemize}[<+->]
    \item 1
    \item 2
    \item 3
  \end{itemize}
\end{frame}


\begin{frame}<2->[label=LabelOfSlideTwo]{Title of Slide 2}
  Slide 2 is exactly as slide 1, we simply define the label differently.
  \begin{itemize}[<+->]
    \item 1
    \item 2
    \item 3
  \end{itemize}
\end{frame}


\begin{frame}{Title of Slide 3}\label{LabelOfSlideThree}
  Slide 3 has two subslides, we show them incrementally, as normal.
  \begin{itemize}[<+->]
    \item 1
    \item 2
  \end{itemize}
\end{frame}


\begin{frame}[label=LabelOfSlideFour]{Title of Slide 4}
  Slide 4 is exactly as slide 3, we simply define the label differently.
  \begin{itemize}[<+->]
    \item 1
    \item 2
  \end{itemize}
\end{frame}


\begin{frame}{Slide 5: Test all the references!}
  \begin{itemize}
    \item This should show a 1: \ref{LabelOfSlideOne}
    \item This should show a 2: \ref{LabelOfSlideTwo<2>}
    \item This should show a 3: \ref{LabelOfSlideThree}
    \item This should show a 4: \ref{LabelOfSlideFour}
  \end{itemize}
\end{frame}

\end{document}

insira a descrição da imagem aqui

informação relacionada