如何在Beamer中添加右侧边框?现有代码效果不符求助
解决Beamer中用TikZ添加右侧边框位置错误的问题
你的代码中,TikZ绘制的边框位置不符合预期,核心原因是没有启用overlay, remember picture选项,导致TikZ无法关联页面的绝对坐标系统,绘制的矩形会被放置在文本流的位置而非页面右侧。
方案1:在单个frame中修正TikZ代码
直接给tikzpicture添加overlay, remember picture选项,并用current page节点定位,确保边框在页面右侧:
\documentclass[aspectratio=169]{beamer} \usepackage{tikz} \definecolor{MyBackground}{RGB}{236, 223, 212} \definecolor{border}{RGB}{230, 204, 177} \setbeamercolor{background canvas}{bg=MyBackground} \setbeamertemplate{navigation symbols}{} \begin{document} \begin{frame}[plain] \begin{tikzpicture}[overlay, remember picture] % 从页面右侧向左偏移20pt绘制竖条边框 \fill[border] ([xshift=-20pt]current page.east) rectangle (current page.east |- current page.north); \end{tikzpicture} % \myTitlebis{titre}{sous titre} \end{frame} \end{document}
方案2:整合到Beamer背景模板(推荐)
如果希望所有页面都自动应用这个边框,更优雅的方式是重新定义background canvas模板,将背景色和边框一起绘制:
\documentclass[aspectratio=169]{beamer} \usepackage{tikz} \definecolor{MyBackground}{RGB}{236, 223, 212} \definecolor{border}{RGB}{230, 204, 177} % 自定义背景画布:同时绘制页面背景和右侧边框 \setbeamertemplate{background canvas}{ \begin{tikzpicture}[overlay, remember picture] % 填充整个页面的背景色 \fill[MyBackground] (current page.south west) rectangle (current page.north east); % 绘制右侧20pt宽的边框 \fill[border] ([xshift=-20pt]current page.east) rectangle (current page.east |- current page.north); \end{tikzpicture} } \setbeamertemplate{navigation symbols}{} \begin{document} \begin{frame}[plain] % \myTitlebis{titre}{sous titre} \end{frame} \begin{frame} 测试页面:边框会自动应用到所有页面 \end{frame} \end{document}
关键说明
overlay, remember picture:这两个选项让TikZ能够访问页面的绝对坐标节点(如current page.east),确保绘制元素定位在页面的正确位置,而非文本流内。current page节点:使用页面节点比直接计算\paperwidth更可靠,适配不同的幻灯片纵横比和尺寸。- 模板化实现:方案2将边框整合到背景模板中,避免重复代码,符合Beamer的设计逻辑。
内容的提问来源于stack exchange,提问作者Lexa
相关产品推荐
相关产品推荐

