我正在使用一组漂亮的 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}
结果如下:
“右”投影仪按钮没有按预期向右对齐;其绝对位置也会根据标题文本的长度而改变。
我尝试实施给出的建议在 Google 群组中:使用\frametitle{Title \hspace{1 filll} Logo}
(1 filll
或1 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\par
around的作用\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” 有什么区别?