Beamer帧标题仅文字区域添加背景色的可行方案咨询
可行解决方案
推荐使用 soulpos 宏包实现需求,该宏包既支持处理包含宏的文本内容,也天然支持多行文本高亮,完全适配Beamer帧标题的定制场景。
实现步骤
- 导言区导入依赖包并自定义高亮命令
\usepackage{soulpos} \usepackage{xcolor} % 自定义高亮:蓝色背景、白色文字,可按需调整尺寸参数 \ulposdef{\highlightblue}{% \mbox{% \color{blue}% \rule[-.7ex]{\ulwidth}{2.5ex}% 第一个参数调整背景垂直偏移,第二个参数调整背景高度 }% \llap{\textcolor{white}{\ultext}}% }
- 重定义Beamer帧标题模板
\setbeamertemplate{frametitle}{ \vspace{1em} % 调整标题顶部边距 % 先展开\insertframetitle再传入高亮命令,解决宏内容处理问题 \expandafter\highlightblue\expandafter{\insertframetitle} \vspace{0.5em} % 调整标题底部边距 }
最小可编译示例
\documentclass{beamer} \usepackage{soulpos} \usepackage{xcolor} \ulposdef{\highlightblue}{% \mbox{% \color{blue}% \rule[-.7ex]{\ulwidth}{2.5ex}% }% \llap{\textcolor{white}{\ultext}}% } \setbeamertemplate{frametitle}{ \vspace{1em} \expandafter\highlightblue\expandafter{\insertframetitle} \vspace{0.5em} } \begin{document} \begin{frame} \frametitle{单行帧标题测试} 帧内容测试 \end{frame} \begin{frame} \frametitle{超长多行帧标题测试 超长多行帧标题测试 超长多行帧标题测试} 帧内容测试 \end{frame} \end{document}
方案优势
- 支持多行帧标题,换行后每行文字都会自动添加蓝色背景
- 可正确处理
\insertframetitle这类宏内容,不会出现soul宏包的解析报错 - 样式参数可灵活调整,适配不同企业规范的尺寸、颜色要求
内容的提问来源于stack exchange,提问作者Moritz
相关产品推荐
相关产品推荐

