我的问题与幻灯片itemize item
中的 s有关Beamer
。我想要获取以下幻灯片:
这是由代码生成的:
\documentclass{beamer}
\begin{document}
\begin{frame}{Title}
\begin{itemize}
\setbeamercolor{local structure}{fg=red}
\item \textcolor{red}{Red}, other text
\setbeamercolor{local structure}{fg=green}
\item \textcolor{green}{Green}, other text
\setbeamercolor{local structure}{fg=blue}
\item \textcolor{blue}{Blue}, other text
\end{itemize}
\end{frame}
\end{document}
问题。有没有办法定义一个命令\coloreditem{<color>}
,以便上面的幻灯片可以通过后面的简化代码来定义?
\begin{frame}{Title}
\begin{itemize}
\coloreditem{red} \textcolor{red}{Red}, other text
\coloreditem{green} \textcolor{green}{Green}, other text
\item \textcolor{blue}{Blue}, other text
\end{itemize}
\end{frame}
我的第一个猜测是定义
\newcommand\coloreditem[1]{\setbeamercolor{local structure}{fg=#1}\item}
但当然,本地结构改变的时间太长了。而且添加一对新结构{}
不起作用。
答案1
你可以这样做:
\documentclass{beamer}
\newcommand\coloreditem[1]{\item[\textcolor{#1}{\usebeamertemplate{itemize \beameritemnestingprefix item}}]}
\begin{document}
\begin{frame}{Title}
\begin{itemize}
\coloreditem{red} blabl \textcolor{red}{Red}, other text
\coloreditem{green} blalba \textcolor{green}{Green}, other text
\item bnlabla
\end{itemize}
\end{frame}
\end{document}
答案2
如果可以定义带有两个参数的命令,则可以使用
\newcommand\coloreditem[2]{{\setbeamercolor{itemize item}{fg=#1}\item #2}}
然后改变的颜色就被限制在单个项目上。
\documentclass{beamer}
\newcommand\coloreditem[2]{{\setbeamercolor{itemize item}{fg=#1}\item #2}}
\begin{document}
\begin{frame}{Title}
\begin{itemize}
\item Normal color, other text
\coloreditem{green}{\textcolor{green}{Green}, other text}
\item Normal color, other text
\end{itemize}
\end{frame}
\end{document}