我使用 Beamer 主题 AnnArbor 和textpos
软件包在普通页面和章节标题页的右上角放置机构徽标。问题是,当我写
\section{Corpus}\frame{\sectionpage}
徽标太宽了,遮住了我部分章节标题,例如这里的章节标题页:
下面是后续的普通页面:
我怎样才能在所有幻灯片上将节标题向左推相同的量,以便整个节标题可见?
(我知道通过写作
\section[Contexte\hbox to 0.7cm{}]{Corpus}\frame{\sectionpage}
我得到了想要的效果
但这不是一个优雅的解决方案,因为我必须不断向\section
命令参数添加代码,如果我想使用具有不同宽度徽标的相同幻灯片,我将不得不更正所有\section
命令,这不是很优雅。如果可能的话,最好在文档的序言中一劳永逸地完成它……)
答案1
您可以重新定义headline
模板以获得以下输出:
主题AnnArbor
加载infolines
外部主题。查看文件beamerouterthemeinfolines.sty
,我们可以找到以下模板headline
定义
\defbeamertemplate*{headline}{infolines theme}
{%
\leavevmode%
\hbox{%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.65ex,dp=1.5ex,right]{section in head/foot}%
\usebeamerfont{section in head/foot}\insertsectionhead\hspace*{2ex}
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.65ex,dp=1.5ex,left]{subsection in head/foot}%
\usebeamerfont{subsection in head/foot}\hspace*{2ex}\insertsubsectionhead
\end{beamercolorbox}}%
\vskip0pt%
}
这样会形成两个宽度相同的框,用于容纳节和小节标题。在下面的 MWE 中,我将宽度参数从 更改为wd=.5\paperwidth
和wd=.25\paperwidth
。wd=.75\paperwidth
您可以根据需要进一步调整这些参数。此标题模板仍将在标题中打印小节标题。如果您也想避免这种情况,请删除行\usebeamerfont{subsection in head/foot}\hspace*{2ex}\insertsubsectionhead
。
\documentclass{beamer}
\usetheme{AnnArbor}
\usecolortheme{beaver}
\defbeamertemplate*{headline}{my infolines theme}
{%
\leavevmode%
\hbox{%
\begin{beamercolorbox}[wd=.25\paperwidth,ht=2.65ex,dp=1.5ex,right]{section in head/foot}%
\usebeamerfont{section in head/foot}\insertsectionhead\hspace*{2ex}
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.75\paperwidth,ht=2.65ex,dp=1.5ex,left]{subsection in head/foot}%
\usebeamerfont{subsection in head/foot}\hspace*{2ex}\insertsubsectionhead
\end{beamercolorbox}}%
\vskip0pt%
}
\begin{document}
\section{section}
\begin{frame}
\frametitle{frame title}
contents
\end{frame}
\end{document}
另一方面,如果您想要保留同样宽度的彩色背景,而只想将部分标题稍微向右移动,请调整第一个\hspace*
命令的值。
就像是
\defbeamertemplate*{headline}{my infolines theme}
{%
\leavevmode%
\hbox{%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.65ex,dp=1.5ex,right]{section in head/foot}%
\usebeamerfont{section in head/foot}\insertsectionhead\hspace*{20ex}
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.65ex,dp=1.5ex,left]{subsection in head/foot}%
\usebeamerfont{subsection in head/foot}\hspace*{2ex}\insertsubsectionhead
\end{beamercolorbox}}%
\vskip0pt%
}
将导致:
如果您希望在框架标题中获得左对齐而不是右对齐的部分标题,请尝试类似
\defbeamertemplate*{headline}{my infolines theme}
{%
\leavevmode%
\hbox{%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.65ex,dp=1.5ex,left]{section in head/foot}%
\hspace*{2ex}\usebeamerfont{section in head/foot}\insertsectionhead
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.65ex,dp=1.5ex,left]{subsection in head/foot}%
\usebeamerfont{subsection in head/foot}\hspace*{2ex}\insertsubsectionhead
\end{beamercolorbox}}%
\vskip0pt%
}
要得到: