![Beamer:将标题中的徽标与框架标题重叠](https://linux22.com/image/370745/Beamer%EF%BC%9A%E5%B0%86%E6%A0%87%E9%A2%98%E4%B8%AD%E7%9A%84%E5%BE%BD%E6%A0%87%E4%B8%8E%E6%A1%86%E6%9E%B6%E6%A0%87%E9%A2%98%E9%87%8D%E5%8F%A0.png)
目标
我正在尝试创建一个beamer
主题,其中顶部有以下布局:
________________________________________
| | |
| Author & Insitute | L O G O |
|_______________________|_ _____|
| \_______/ |
| Frame Title |
|_______________________________________|
| |
| C O N T E N T H E R E . . . |
IE。 一个重叠徽标。
方法
我有三种方法,但都没有奏效:
- 放在框架标题进入头条新闻然后尝试使用
beamercolorbox
--但我不仅没有实现布局,而且似乎你也不能把框架标题进入头条新闻。 - 有头条新闻仅包含作者信息和标识,但让后者以某种方式“重叠”到下面的东西,而不是推动框架标题向下。
- 使头条新闻垂直方向更大,也包含重叠区域,这意味着背景(如果存在)头条新闻需要用两种颜色来着色,因为它实际上只占用了一部分框架标题就区域而言。
我在这里尝试说明的三种方法:
MWE/代码
到目前为止,我在代码方面所做的工作是:
main.tex
:
\documentclass{beamer}
\usetheme{mytheme}
\title{The Title}
\author{S.~Author}
\institute{The Institute}
\usepackage{graphicx}
\pgfdeclareimage[height=0.5cm]{logo}{example-image}
\logo{\pgfuseimage{logo}}
\begin{document}
\begin{frame}[plain]
\titlepage
\end{frame}
\begin{frame}{Outline}
\tableofcontents
\end{frame}
\end{document}
在我的本地TEXMF
:tex/latex/beamertheme-mytheme/
beamerthememytheme.sty
:
\mode<presentation>
\useinnertheme{mytheme}
\useoutertheme{mytheme}
\usecolortheme{mytheme}
\mode<all>
beamerouterthememytheme.sty
:
\mode<presentation>
% background: transparent
\setbeamercolor{background}{bg=}
% Grid overlay, to test alignment, 0.028 is given magic value
\setbeamertemplate{background}[grid][step=0.028\pagewidth]
\defbeamertemplate*{headline}{mytheme}
{%
% either make headline contain
% 1. both logo and frame title (not possible?)
% 2. only logo, and let it somehow "grow" or "overlap" into the frame title
% 3. only logo + some vertical space to make it seem like it's overlapping, but this would create more problems, probably.
}
\mode
<all>
您能给我一些建议吗?其中哪一个可能是最好的方法(如果没有,那哪个更好)?我尝试搜索,可能确实有解决方案,但我认为我现在缺乏找到有用的东西的术语。
答案1
有点老套,但基本思路是将徽标和彩色区域放在背景中。对于以下示例,我使用了https://i.stack.imgur.com/XXQjl.png如图所示。
警告:没有 frametitle 的框架仍然会有灰线
\documentclass{beamer}
\setbeamerfont{headline}{size=\normalfont}
\setbeamercolor{headline}{bg=white}
\setbeamertemplate{headline}{%
\begin{beamercolorbox}[sep=0.3cm,left,wd=.67\paperwidth]{headline}
\usebeamerfont{headline}%
\insertshortauthor~\&~\insertshortinstitute
\end{beamercolorbox}%
}
\setbeamercolor{frametitle}{bg=}
\setbeamercolor{framesubtitle}{bg=gray!55!white}
\makeatletter
\setbeamertemplate{frametitle}{%
\vspace*{-0.1cm}
\ifbeamercolorempty[bg]{frametitle}{}{\nointerlineskip}%
\@tempdima=\textwidth%
\advance\@tempdima by\beamer@leftmargin%
\advance\@tempdima by\beamer@rightmargin%
\begin{beamercolorbox}[sep=0.3cm,left,wd=\the\@tempdima]{frametitle}
\usebeamerfont{frametitle}%
\vbox{}\vskip-1ex%
\if@tempswa\else\csname beamer@fteleft\endcsname\fi%
\strut\insertframetitle\strut\par%
\end{beamercolorbox}
% {%
\ifx\insertframesubtitle\@empty%
\else%
\vskip-0.3cm%
\begin{beamercolorbox}[sep=0.1cm,left,wd=\the\@tempdima]{framesubtitle}
{\hspace{0.2cm}\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle\strut\par}%
\end{beamercolorbox}
\fi
% }%
\vskip-1ex%
\if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here...
% \end{beamercolorbox}%
}
\makeatother
\setbeamercolor{background}{bg=}
\setbeamertemplate{background}{\includegraphics[width=\paperwidth,height=.17\paperheight]{XXQjl}}
\logo{\includegraphics[width=.2\paperwidth]{example-image}}
\title{The Title}
\author{S.~Author}
\institute{The Institute}
\begin{document}
{
\setbeamertemplate{background}{}
\begin{frame}[plain]
\titlepage
\end{frame}
}
\begin{frame}{Outline}
\tableofcontents
\end{frame}
\begin{frame}
\frametitle{title}
\framesubtitle{subtitle}
\end{frame}
\end{document}