假设我有一个 beamer 模板,我想显示两个徽标,一个在左上角,另一个在右上角。我\pgfdeclareimage
在 sty 文件中使用它来声明图像:
footlinecolor{} % Default: no footline
\pgfdeclareimage[width=0.13\paperwidth]{blacklogo}{images/lille.png}
\pgfdeclareimage[width=0.13\paperwidth]{redlogo}{images/circular_rgb.png}
\pgfdeclareimage[width=0.09\paperwidth]{whitelogo}{images/circular_white.png}
\pgfdeclareimage[width=0.09\paperwidth]{nologo}{images/placeholder.png}
\newcommand{\@UIClogo}{redlogo}
\newcommand{\@UIClogob}{blacklogo}
然后,我将徽标放在正确的位置:
\setbeamertemplate{headline}{\vspace{0.03\textwidth}\hspace{0.04\textwidth}\pgfuseimage{\@UIClogo}}
\setbeamertemplate{headline}{\vspace{0.03\textwidth}\hspace{0.85\textwidth}\pgfuseimage{\@UIClogob}}
但是,第一个徽标没有出现在我的幻灯片中,只有第二个徽标(右上)出现,如下图所示:
WHich 只显示了blacklogo
出现,而redlogo
应该出现在左侧的没有出现。有办法解决这个问题吗?
谢谢,
答案1
该宏\setbeamertemplate{headline}{...}
将用 替换所有先前的内容...
。因此,在第二次调用中,您将用第二张图片替换第一张图片。
如果您想要两张图片,请同时添加它们:
\documentclass{beamer}
\makeatletter
\pgfdeclareimage[width=0.13\paperwidth]{blacklogo}{example-image-duck}
\pgfdeclareimage[width=0.13\paperwidth]{redlogo}{example-image}
\newcommand{\@UIClogo}{redlogo}
\newcommand{\@UIClogob}{blacklogo}
\setbeamertemplate{headline}{\vspace{0.03\textwidth}\hspace{0.04\textwidth}\pgfuseimage{\@UIClogo}\hfill\pgfuseimage{\@UIClogob}\hspace{0.04\textwidth}\mbox{}}
\makeatother
\begin{document}
\begin{frame}
abc
\end{frame}
\end{document}
或者,您可以使用\addtobeamertemplate{headline}{<before>}{<after>}
将内容添加到现有模板而不覆盖它:
\documentclass{beamer}
\makeatletter
\pgfdeclareimage[width=0.13\paperwidth]{blacklogo}{example-image-duck}
\pgfdeclareimage[width=0.13\paperwidth]{redlogo}{example-image}
\newcommand{\@UIClogo}{redlogo}
\newcommand{\@UIClogob}{blacklogo}
\setbeamertemplate{headline}{\vspace{0.03\textwidth}\hspace{0.04\textwidth}\pgfuseimage{\@UIClogo}}
\addtobeamertemplate{headline}{}{\hfill\pgfuseimage{\@UIClogob}\hspace{0.04\textwidth}\mbox{}}
\makeatother
\begin{document}
\begin{frame}
abc
\end{frame}
\end{document}