代码

代码

在 beamer 中,我想在嵌套列表中使用警报,以便每行逐行逐步变为红色(即默认警报颜色)。此代码生成我想要的输出:

\documentclass[pdf]{beamer}
\begin{document}
\begin{frame}
\begin{itemize}
    \item\alert<+>{Parent 1}
    \item\alert<+>{Parent 2}
    \begin{itemize}
        \item\alert<+>{child 1}
        \item\alert<+>{child 2}
    \end{itemize}
    \item\alert<+>{Parent 3}
\end{itemize}
\end{frame}
\end{document}

但是,上面的代码需要使用\alert<+>{...}和 每一个\item。我想使用 来生成此输出,并使用 来规范整个列表\begin{itemize}。如果没有嵌套列表,则以下内容有效:

\documentclass[pdf]{beamer}
\begin{document}
\begin{frame}
\begin{itemize}[<alert@+>]
    \item Parent 1
    \item Parent 2
    \begin{itemize}[<alert@+>]
        \item child 1
        \item child 2
    \end{itemize}
    \item Parent 3
\end{itemize}
\end{frame}
\end{document}

这就产生了 5 张幻灯片,就像我的第一个示例一样。第一张幻灯片是相同的,其中“父母 1”用红色显示。但是,第二张幻灯片中有“父母 2”以及“孩子 1”和“孩子 2”,全部用红色显示。这是我希望表现不同的部分。我希望第二张幻灯片只有红色的“父母 2”,而不是“孩子 1”或“孩子 2”。然后幻灯片 3、4 和 5 将分别用红色显示“孩子 1”、“孩子 2”和“父母 3”,就像两个示例中的情况一样。

我看过类似的问题(例如,这不会突出显示所有子项,但仍会突出显示带有父项的第一个子项,并且需要手动指定幻灯片编号,我想避免这种情况)。我尝试将和 以及和的各种组合[<alert@+>]放在 中,等等。似乎必须有一种方法可以使用 的默认警报规范一次将每行变为红色,但我尝试过的方法都没有奏效。我可以定义一个新的列表环境(例如“nestedStepwiseAlert”环境),但也没有成功让它工作。\begin{itemize}\begin{itemize}.,+\begin{itemize}

答案1

我的解决方案是定义一个新命令\alertitem来替换\item。这不是理想的解决方案,因为它需要添加{}来包含每个项目的内容。但这就是解决方案。

\newcommand\alertitem[1]{\alert<+>{\item {#1}}}

代码

\documentclass{beamer}
\begin{document}

\newcommand\alertitem[1]{\alert<+>{\item {#1}}}

\begin{frame}
\begin{itemize}
    \alertitem {Parent 1}
    \alertitem {Parent 2}
    \begin{itemize}
        \alertitem {child 1}
        \alertitem {child 2}
    \end{itemize}
    \alertitem {Parent 3}
\end{itemize}
\end{frame}
\end{document}

输出

在此处输入图片描述

答案2

投影仪操作alert@比宏功能更多\alert{...}(更改项目符号的颜色等)。如果您想要复制\alert{...}项目的行为,可以创建一个更改颜色的新操作,如下所示:

\documentclass{beamer}

\newenvironment{fooenv}{\alt{\color{alerted text.fg}}{\color{normal text.fg}}}{}

\begin{document}
\begin{frame}
\begin{itemize}[<foo@+>]
    \item Parent 1
    \item Parent 2
    
    \begin{itemize}
        \item child 1
        \item child 2
    \end{itemize}
    
    \item Parent 3
\end{itemize}
\end{frame}
\end{document}

在此处输入图片描述

答案3

另一个解决方案是在句[<+-| alert@+>]后添加\begin{itemize}

一个例子是这样的:

\documentclass{beamer}

\begin{document}

\section{Introduction}

\begin{frame}{Title}
    \begin{itemize}[<+-| alert@+>] % stepwise alerts
        \item Parent 1
        \item Parent 2
        \begin{itemize}
            \item Child 1
            \item Child 2
        \end{itemize}
        \item Parent 3
    \end{itemize}
\end{frame}

\end{document}

编辑:在嵌套列表中发出警报,每行逐行呈红色

在此处输入图片描述

相关内容