Beamer如何设置alert文本字体 实现普通文本与数学模式均加粗
问题原因
\boldmath属于数学模式专属的字体切换命令,无法直接传入\setbeamerfont的series参数——该参数仅支持文本模式的字体序列声明(如\bfseries),直接写入\boldmath不会对数学环境内的alert内容生效。
实现方案
分两步即可实现普通文本、数学模式下alert内容的统一加粗效果:
- 正常配置alert的文本模式字体,不要在
\setbeamerfont中混入\boldmath - 给
\alert命令加前置判断,在数学模式下自动触发粗体数学字体切换
完整配置代码
把以下配置放在Beamer导言区即可全局生效:
% 引入依赖包 \usepackage{etoolbox} % 配置alert的颜色、文本模式字体 \setbeamercolor{alerted text}{fg=vertf} \setbeamerfont{alerted text}{family=\sffamily, series=\bfseries} % 给alert命令补数学模式加粗逻辑 \pretocmd{\alert}{\ifmmode\boldmath\fi}{}{}
如果不想引入etoolbox依赖,也可以直接重定义\alert命令实现相同效果:
% 导言区替换上面的补丁代码即可 \let\originalalert\alert \renewcommand<>\alert[1]{% \originalalert#2{\ifmmode\boldmath\fi #1}% }
测试帧代码
配置完成后,原测试帧不需要额外修改就能正常生效:
\begin{frame}{Test} \setbeamercovered{invisible} $$\alert<2>{x} + \alert<3>{y} + \alert<4>{z}$$ \begin{itemize} \item <2-| alert@2>x \item <3-| alert@3>y \item <4-| alert@4>z \end{itemize} \end{frame}
补充说明
- 如果需要更精细的数学粗体效果,可以引入
bm宏包,把补丁里的\boldmath替换为\bm即可,效果比默认的\boldmath更自然。 - 所有字体配置建议放在导言区全局生效,放在帧内部可能因为Beamer的覆盖机制出现样式不生效的问题。
内容的提问来源于stack exchange,提问作者armandfavrot
相关产品推荐
相关产品推荐

