我正在尝试使用 beamer 微调幻灯片模板。我遇到的问题是,当标题需要两行时,会出现不一致的行为。添加第二行会将标题和徽标的位置向上移动(在下面的示例中使用规则进行模拟)。
我怎样才能改变模板以获得与标题中只有 1 或 2 行相同的一致行为?
\documentclass{beamer}
\setbeamertemplate{frametitle}{}
\providecommand\insertframetitle*{}
\setbeamertemplate{headline}{
\begin{beamercolorbox}[sep=0.3cm,ht=1.5cm,wd=\paperwidth]{headline}
\parbox[b]{.8\paperwidth}{\bf\strut\Large\insertframetitle\strut}\hfill \rule{1.5cm}{.7cm}
\end{beamercolorbox}
}
\begin{document}
\begin{frame}{A very very long title that does not fit in one line alone}
\end{frame}
\begin{frame}{A shorter title}
\end{frame}
\end{document}
答案1
使用的解决方案adjustbox
\documentclass{beamer}
\usepackage{adjustbox}
\setbeamertemplate{frametitle}{}
\providecommand\insertframetitle*{}
\setbeamertemplate{headline}{
\begin{beamercolorbox}[sep=0.3cm,ht=1.5cm,wd=\paperwidth]{headline}
\adjustbox{minipage=[r][0.25cm][t]{0.8\paperwidth}}{\bfseries{\Large\insertframetitle}} \hfill \adjustbox{valign=t}{\rule{1.5cm}{.7cm}}
\end{beamercolorbox}
}
\begin{document}
\begin{frame}{A very very long title that does not fit in one line alone}
\end{frame}
\begin{frame}{A shorter title}
\end{frame}
\end{document}
您可以使用 来决定valign=
将图像放置在标题边界框的中间 (m)、顶部 (t) 还是底部 (b)。如果在 中更改[t]
为 ,您还可以指定将短标题设置在顶部还是底部。[b]
minipage
通过export
该包的选项,您可以直接与adjustbox环境一起adjustbox
使用。\includegraphics[valign=m]{}
平均能量损失
\documentclass{beamer}
\usepackage[export]{adjustbox}
\usepackage{graphicx}
\setbeamertemplate{frametitle}{}
\providecommand\insertframetitle*{}
\setbeamertemplate{headline}{
\begin{beamercolorbox}[sep=0.3cm,ht=1.5cm,wd=\paperwidth]{headline}
\adjustbox{minipage=[r][0.2cm][t]{0.8\paperwidth}}{\bfseries{\Large\insertframetitle}} \hfill \includegraphics[width=1.5cm, valign=t]{example-image-a}
\end{beamercolorbox}
}
\begin{document}
\begin{frame}{A very very long title that does not fit in one line alone}
\end{frame}
\begin{frame}{A shorter title}
\end{frame}
\end{document}
结果
答案2
您可以添加[b]
到\parbox
。我\strut
从解决方案中删除了 。此外,最好使用\textbf
而不是\bf
。
使用以下代码,您将能够将徽标放在每张幻灯片的同一位置,而且标题不会太靠近(或超出)边距。
\documentclass{beamer}
\setbeamertemplate{frametitle}{}
\providecommand\insertframetitle*{}
\setbeamertemplate{headline}{
\begin{beamercolorbox}[sep=0.3cm,ht=1.5cm,wd=\paperwidth]{headline}
\parbox[b]{.8\paperwidth}{\Large\textbf{\insertframetitle}}\hfill \rule{1.5cm}{.7cm}
\end{beamercolorbox}
}
\begin{document}
\begin{frame}{A very very long title that does not fit in one line alone}
\end{frame}
\begin{frame}{A shorter title}
\end{frame}
\end{document}