我想在 Rochester 标题的两侧放置 2 个徽标,标题位于中间。我重新定义\frametitle
如下:
\let\oldframetitle\frametitle
\renewcommand{\frametitle}[1]{
\oldframetitle{\centering\raisebox{3mm}{
\begin{minipage}[c]{.15\textwidth}
\includegraphics[width=\textwidth]{logo/logo1.png}
\end{minipage}
\hfill\parbox[c][][c]{.82\textwidth}{\centering#1}\hfill
\begin{minipage}[c]{.15\textwidth}
\includegraphics[width=\textwidth]{logo/logo2.png}
\end{minipage}
}
}}
我想知道为什么我没有得到过满的水平盒子,因为 0.15+0.82+0.15 > 1 ?然后如果 #1 是空的,就像\begin{frame}{}
,标志会粘在左角。最后,这可能不是最好的解决方案。
感谢帮助。
答案1
一旦您想要享受 beamer 提供的所有可能性(例如\frametitle<2>{...}
或使用\framesubtitle
等),您的方法将不可避免地失败。在我看来,更好的方法是将必要的更改添加到主题使用的headline
和frametitle
模板中Rochester
(代码可以在中找到beamerouterthemesidebar.sty
)。
\documentclass{beamer}
\usetheme{Rochester}
\makeatletter
\setbeamertemplate{frametitle}{%
\nointerlineskip%
\vskip-\beamer@headheight%
\vbox to \beamer@headheight{%
%\vfil
\leftskip=-\beamer@leftmargin%
\advance\leftskip by2.1cm%
\rightskip=-\beamer@rightmargin%
\advance\rightskip by2.1cm plus1fil%
\begin{minipage}[t][\beamer@headheight][c]{\dimexpr\paperwidth-4.2cm\relax}
\usebeamercolor[fg]{frametitle}\usebeamerfont{frametitle}\centering\insertframetitle\par
\usebeamercolor[fg]{framesubtitle}\usebeamerfont{framesubtitle}\insertframesubtitle\par
\end{minipage}
\vbox{}%
\vskip-1em%
\vfil
}%
}
\setbeamertemplate{headline}{%
\begin{beamercolorbox}[wd=\paperwidth]{frametitle}
\ifx\beamer@sidebarside\beamer@lefttext%
\else%
\hfill%
\fi%
\ifdim\beamer@sidebarwidth>0pt%
\usebeamercolor[bg]{logo}%
\vrule width\beamer@sidebarwidth height \beamer@headheight%
\hskip-\beamer@sidebarwidth%
\hbox to \beamer@sidebarwidth{\hss\vbox to
\beamer@headheight{\vss\hbox{\color{fg}\insertlogo}\vss}\hss}%
\else%
\raisebox{.1\beamer@headheight}{\hspace*{0.1cm}\includegraphics[height=.8\beamer@headheight]{example-image}}
\vrule width0pt height \beamer@headheight%
\hfill
\raisebox{.1\beamer@headheight}{\includegraphics[height=.8\beamer@headheight]{example-image}}\hspace*{0.1cm}
\fi%
\end{beamercolorbox}
}
\makeatother
\begin{document}
\begin{frame}
\frametitle{frametitle}
abc
\end{frame}
\begin{frame}
\frametitle{frame title frame title frame title frame title frame title frame title frame title}
abc
\end{frame}
\begin{frame}
abc
\end{frame}
\end{document}