在 wuerzburg 主题的 beamer \frametitle 中使用 \hfill

在 wuerzburg 主题的 beamer \frametitle 中使用 \hfill

我正在使用一组漂亮的 Beamer 模板由 Christian Gogolin 开发,我正在努力使用命令来获得所需的\hfill效果\frametitle{}以便有一个投影仪按钮在框架标题中完全右对齐。

这是使用 Gogolin 自己的 MWE维尔茨堡beamer 外部主题:

\documentclass[xcolor={x11names,svgnames,dvipsnames}]{beamer} 
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\useoutertheme[nofootline]{wuerzburg}
\usecolortheme{shark}
%\setbeamertemplate{frametitle}[default][none] % uncommenting this gives proper placement but overrides the frametitle definition of the outer theme. 
\begin{document}

\begin{frame}
\frametitle{This is the frame title \hfill \beamergotobutton{right}}
Some text
\end{frame}
\end{document}

结果如下:

<code>带有未对齐按钮的示例框架</code>

“右”投影仪按钮没有按预期向右对齐;其绝对位置也会根据标题文本的长度而改变。

我尝试实施给出的建议在 Google 群组中:使用\frametitle{Title \hspace{1 filll} Logo}1 filll1 fill两者都不起作用)。

使用\setbeamertemplate{frametitle}[default][none]可以提供适当的位置但会覆盖外部主题的 frametitle 定义。

我认为修复方法将涉及frametitle模板的定义维尔茨堡主题:

\defbeamertemplate*{frametitle}{wuerzburg theme}[1][left]
{
  \nointerlineskip
  \ifbeamercolorempty[bg]{frametitle}{\vskip0.5ex}{%
    \hbox to\textwidth{\hskip-\Gm@lmargin\pgfuseshading{beamer@frametitletopmshade}\hskip-\Gm@rmargin}
    \nointerlineskip%
  }%
  \@tempdima=\textwidth%
  \advance\@tempdima by\beamer@leftmargin%
  \advance\@tempdima by\beamer@rightmargin%
  \begin{beamercolorbox}[sep=0.3cm,#1,wd=\the\@tempdima]{frametitle}
    \usebeamerfont{frametitle}%
    \vbox{}\vskip-1.7ex%
    \if@tempswa\else\csname beamer@fte#1\endcsname\fi%
    \strut\insertframetitle\strut\par%
    {%
      \ifx\insertframesubtitle\@empty%
      \else%
      {\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle\strut\par}%
      \fi
    }%
    \vskip-1.3ex%
    \if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here...
  \end{beamercolorbox}%
  \nointerlineskip
  \ifbeamercolorempty[bg]{frametitle}{}{%
    \hbox to\textwidth{\hskip-\Gm@lmargin\pgfuseshading{beamer@frametitlebottomshade}\hskip-\Gm@rmargin}%
    \vskip-1.5pt%
  }%
}

但我不知道这里出了什么问题:文本宽度似乎是正确的,而且我不明白\strut\pararound的作用\insertframetitle

任何帮助都将受到赞赏。

答案1

您可以使用\hspace{0pt plus 1 filll}\hfill

\frametitle{This is the frame title \hspace{0pt plus 1 filll}  \beamergotobutton{right}}

环境beamercolorbox具有预定义的左和右边距,它们通过 skip 定义0pt plus 1fill。如果您使用\hfill单词 is centered 来表示右侧部分。要显示该行为,您可以使用以下 mwe:

\documentclass[]{article} 
\parindent0pt
\usepackage{showframe}
\begin{document}

\null Word \hfill word \par


\null Word \hfill word \hfill\null\par

\null\hspace{0pt plus 1fill} Word \hfill word \hspace{0pt plus 1fill}\null\par

\null\hspace{0pt plus 1fill} Word \hspace{0pt plus 1filll} word \hspace{0pt plus 1fill}\null\par
\end{document}

在此处输入图片描述

egreg 针对这个特殊寄存器写了一个答案:“fil” 和 “fill” 有什么区别?

相关内容