如何修改Beamer itemize项目符号颜色且不影响alert动效默认行为
解决方案
你只需要把之前直接硬设全局item颜色的逻辑,替换为以下导言区配置即可,该方案可以完美适配overlay alert规则,不会出现提前变色的问题:
\documentclass{beamer} % 自定义普通状态下各级item符号的颜色 \setbeamercolor{itemize item}{fg=cyan} \setbeamercolor{itemize subitem}{fg=cyan} \setbeamercolor{itemize subsubitem}{fg=cyan} % 配置alert生效时的item符号颜色,自动对齐alert文字的高亮时机 \addtobeamertemplate{alerted text begin}{% \setbeamercolor{itemize item}{fg=alerted text.fg} \setbeamercolor{itemize subitem}{fg=alerted text.fg} \setbeamercolor{itemize subsubitem}{fg=alerted text.fg} }{} \addtobeamertemplate{alerted text end}{% \setbeamercolor{itemize item}{fg=cyan} \setbeamercolor{itemize subitem}{fg=cyan} \setbeamercolor{itemize subsubitem}{fg=cyan} }{} \begin{document} \begin{frame}{MWE Beamer item color} \begin{columns} \begin{column}{0.5\textwidth} \begin{itemize} \item 普通默认项目 \item<alert@2-> 高亮提醒项目 \end{itemize} \end{column} \begin{column}{0.5\textwidth} \begin{itemize} \item 普通默认项目 \item<alert@2-> 高亮提醒项目 \end{itemize} \end{column} \end{columns} \end{frame} \end{document}
原方案失效原因
之前使用\AtBeginEnvironment{alertenv}失效的核心原因是alertenv环境在整个帧加载时就已经完成初始化,不会和具体的overlay触发时机绑定,所以会出现还没到指定alert层,符号就已经变色的问题。
而alerted text begin和alerted text end是beamer原生提供的模板钩子,仅在alert效果实际生效的对应overlay才会被调用,在这两个钩子中修改item符号颜色,就能和alert文字的高亮时机完全同步,完全符合预期行为。
如果需要同时适配enumerate环境的编号颜色,只需要在上述配置中对应加上enumerate item、enumerate subitem等颜色配置即可。
内容的提问来源于stack exchange,提问作者nh24
相关产品推荐
相关产品推荐

