Search code examples
latexbeamer

Change \itemize bullet point after certain slide in nestled \itemize environment


I want to change the bullet point symbol of certain items in my list after a certain slide.

A solution to a similar problem, but without nestled \itemize environments, was posted here: https://tex.stackexchange.com/questions/424011/change-beamer-itemize-symbol-and-overlay

The list looks like this:

\documentclass[9pt,aspectratio=169]{beamer}

\newenvironment{redenv}{\only{\setbeamercolor{local structure}{fg=red}}}{}

\begin{itemize}
    \item<1-|red@3-> Item 1
    \item Item 2
    \begin{itemize}
        \item<2-|red@3-> Item 3
    \end{itemize}
    \item Item 4
\end{itemize}

\end{document}

I want to change the symbol for Item 1 and Item 3 after a certain pause. This solution works only for Item 1, but not Item 3.

Edit:

Turns out I copied the example wrongly here, but not in my actual document. Instead I found the real culprit: My document uses a beamercolor.sty sheet that defines the color of the bullet points:

\setbeamercolor{item}{parent=local structure}
\setbeamercolor{subitem}{parent=item, fg=gray}
\setbeamercolor{subsubitem}{parent=subitem}

So, when I delete the fg=gray, it works as indended. But I want the gray color as default and only change the color in places I choose. How can reconcile both coloring methods?


Solution

  • You are missing the fg= in your colour definition:

    \documentclass[9pt,aspectratio=169]{beamer}
    
    \newenvironment{redenv}{\only{\setbeamercolor{local structure}{fg=red}}}{}
    
    \begin{document}
    \begin{frame}
    
    \begin{itemize}
        \item<1-|red@3-> Item 1
        \item Item 2
        \begin{itemize}
            \item<2-|red@3-> Item 3
        \end{itemize}
        \item Item 4
    \end{itemize}
    
    \end{frame}
    \end{document}
    

    enter image description here

    Or if you don't mind that the text also changes colour, you could use alert:

    \documentclass[9pt,aspectratio=169]{beamer}
    
    \begin{document}
    \begin{frame}
    
    \begin{itemize}
        \item<1-|alert@3-> Item 1
        \item Item 2
        \begin{itemize}
            \item<2-|alert@3-> Item 3
        \end{itemize}
        \item Item 4
    \end{itemize}
    
    \end{frame}
    \end{document}