我想要两个并排出现的项目,它们彼此相邻并且也具有相同的警报。
因此,第一张幻灯片只是框架标题,第二张幻灯片item1
来自两个带有警报颜色的列表,第三张幻灯片item1
来自item2
两个带有-s 的列表,item2
带有警报颜色等。
目前图片是最后一面,不幸的是,整个右侧列表与item3
左侧列表一起出现。我可以手动叠加,但这可以自动完成吗?
\documentclass{beamer}
\begin{document}
\frame{
\frametitle{title}
\begin{columns}
\begin{column}{0.45\paperwidth} %%<--- here
\begin{itemize}[<+(1)-| alert@+(1)>]
\item item1
\item item2
\item item3
\end{itemize}
\end{column}
\begin{column}{0.45\paperwidth} %%<--- here
\begin{itemize}[<.(1)-| alert@.(1)>]
\item item1
\item item2
\item item3
\end{itemize}
\end{column}
\end{columns}
}
\end{document}
答案1
这可能不是最简单的方法(也可能不是最好的方法):
(将计数器插入itemize
取自这里。
\documentclass{beamer}
\usepackage{xpatch}
\newcounter{itemcntr}
\AtBeginEnvironment{itemize}{%
\setcounter{itemcntr}{0}%
\xapptocmd{\item}{\stepcounter{itemcntr}}{}{}%
}
\newcounter{itemscount}
\newcommand{\setitemscount}{%
\setcounter{itemscount}{\arabic{itemcntr}}%
\addtocounter{itemscount}{-1}%
}
\begin{document}
\frame{
\frametitle{title}
\begin{columns}
\begin{column}{0.45\paperwidth} %%<--- here
\begin{itemize}[<+(1)-| alert@+(1)>]
\item item1
\item item2
\item item3
\item item4
\end{itemize}
\end{column}
\setitemscount
\begin{column}{0.45\paperwidth} %%<--- here
\begin{itemize}[<+(-\theitemscount)-| alert@+(-\theitemscount)>]
\item item1
\item item2
\item item3
\item item4
\end{itemize}
\end{column}
\end{columns}
}
\end{document}
这段代码起什么作用?
首先,我加载xpatch
包,因为我想为每个itemize
环境添加一个计数器,默认情况下,该包不附带这样的计数器。使用\AtBeginEnvironment
,我将先前定义的计数器设置itemcntr
为 0,然后在环境\item
中的每个宏中附加itemize
一个\stepcounter
宏以将此计数器增加 1。这意味着计数器itemcntr
包含最后一个环境的项目数itemize
。
然后,我定义另一个计数器itemscount
和一个新的宏\setitemscount
,它本质上只将新计数器设置为计数器的值itemcntr
。
现在,当您调用 时\setitemscount
,计数器itemscount
将设置为上一个环境的项目数。然后,您可以在下一个环境的参数中itemize
使用此计数器的值(可通过 访问)来将更改与 同步。这意味着此环境中的项目比当前步骤早 x 次被选择,其中 x 是前一个环境的项目数。这样,两个列表都是同步的。\theitemscount
itemize
[<+(-\theitemscount)-| alert@+(-\theitemscount)>]