Destaque o item na lista depois de descobri-lo

Destaque o item na lista depois de descobri-lo
\documentclass[xcolor=table ]{beamer}


\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}

\title[Your Short Title]{Your Presentation}
\author{You}
\institute{Where You're From}
\date{Date of Presentation}

\begin{document}


\begin{frame}{Introduction}

\begin{itemize}
  \item <1-> Your introduction goes here!
  \item <2> Use \texttt{itemize} to organize your main points.
\end{itemize}

\end{frame}
\begin{frame} 
\begin{itemize}
  \item Your introduction goes here!
  \item {\colorbox{yellow} {Use \texttt{itemize} to organize your main points.}}
\end{itemize}

\end{frame}

\end{document}

Este MWE mostrou uma lista detalhada. Depois que dois itens sequenciais forem exibidos, espero que o segundo item seja destacadonuma terceira etapa. Consegui isso duplicando o quadro. Isso pode ser conseguido por sobreposição sem duplicação manual do quadro?

Responder1

A solução fácil é usar \onlypara tornar a \colorbox{yellow}parte do código condicional:

    \begin{frame}{Introduction}
        \begin{itemize}
            \item <1-> Your introduction goes here!
            \item <2-> \only<3>{\colorbox{yellow}}{Use \texttt{itemize} to organize your main points.}
        \end{itemize}
    \end{frame}

No entanto, há um problema com isso: como \colorboxpreenche alguma área ao redor do texto, altera o espaçamento, o que leva a saltos visíveis (experimente para ver).

Pode-se corrigir isso sempre usando um \colorbox, mas preenchendo-o com a cor de fundo quando não deveria estar destacado. Como isso é um pouco confuso, eu definiria um novo comando para essa finalidade:

\documentclass[xcolor=table]{beamer}
\usepackage[english]{babel}

\title[Your Short Title]{Your Presentation}
\author{You}
\institute{Where You're From}
\date{Date of Presentation}

\newcommand<>{\mycolorbox}[3][white]{{%
    % #1 = default color when overlay specification is not fulfilled (default: white)
    % #2 = color when overlay specification is fulfilled
    % #3 = text to be displayed
    % #4 = the actual overlay specification
    \def\mycolor{#1}%
    \only#4{\def\mycolor{#2}}%
    \colorbox{\mycolor}{#3}%
}}

\begin{document}
    \begin{frame}{Introduction}
        \begin{itemize}
            \item <1-> Your introduction goes here!
            \item <2-> \mycolorbox<3>{yellow}{Use \texttt{itemize} to organize your main points.}
        \end{itemize}
    \end{frame}
\end{document}

A sintaxe para \newcommand<>é explicada no beamerguia do usuário, seção9.6.1 Tornando a sobreposição de comandos e ambientes ciente das especificações. O primeiro argumento é o nome da macro a ser definida ( \mycolorboxneste caso), depois segue o número de argumentos excluindo a especificação de sobreposição e, finalmente, há o valor padrão para o primeiro argumento. Dentro do comando, os argumentos podem ser referenciados usando o #caractere seguido de seu número ( #1, #2e assim por diante, veja os comentários).

O par duplo de chaves {{e }}existe para criar um grupo TeX, o que significa que quaisquer (re)definições de macro serão esquecidas no final. O par externo delimita o conteúdo do comando, enquanto o par interno é o grupo TeX.

Eu então uso \def(eu também poderia ter usado \newcommand) para definir uma nova macro, \mycolorque é inicialmente a cor padrão. Usando \only, eu o redefini condicionalmente para a cor desejada (amarelo neste exemplo). Finalmente, eu chamo o \colorboxcomando.

A propósito, também é possível escrever apenas \colorbox<3>{yellow}{text}, mas por algum motivo isso usa um fundo preto...

informação relacionada