更改右边距会改变标题的位置。错误还是功能?

更改右边距会改变标题的位置。错误还是功能?

我试图理解为什么修改右边距会改变宽度等于纸张宽度的框的位置。

\documentclass{beamer}
%\setbeamersize{text margin right=0cm}
% Modifying the right margin makes the beamercolorbox move to the right althought the box still
% is of width paperwidth.
% The LINEND is moving as expected.

\setbeamercolor{bgcolor}{fg=black,bg=red}
\setbeamertemplate{frametitle}{\begin{beamercolorbox}[wd=\paperwidth]{bgcolor}Box\end{beamercolorbox}}

\begin{document}

\begin{frame}{Title}
LINESTART \hfill LINEEND
\end{frame}
\end{document}

答案1

\setbeamersize{text margin right=0cm}工作正常,但\begin{beamercolorbox}[wd=\paperwidth] ...会自动使其内容居中。例如,当您将...的部分更改为 时,这一点会更清楚\setbeamertemplate{frametitle}{...}

  • \begin{beamercolorbox}[wd=\dimexpr\paperwidth-1cm\relax] ...或者
  • \leavevmode\rule{\dimexpr\paperwidth-1cm\relax}{1pt}

来自beamerv3.59 用户指南,第 12.5 节,关键wd文档beamercolorbox

如果宽度大于正常文本宽度(由 的值指定)\textwidth,则结果框的宽度将重置为宽度\textwidth,但会在框的左端和右端插入智能负跳过。

在您的示例中,\paperwidth = <text margin left> + \textwidth + <text margin right>,其中<text margin left> = 1cm<text margin right>设置为0pt。因此\paperwidth > \textwidth

答案2

我对这个问题有以下解决方案。由于某些我仍然不完全理解的原因,beamercolorbox 的行为与我对手册的理解不同。然而,对几个案例的实验让我修正了位置,这可以在改变投影仪大小后进行。将这些修正放入我自己的 beamerFix 包中是我目前幻灯片生成的解决方案。希望这个想法对来这里的其他人有所帮助——也许会找到更好的解决方案。

\documentclass[aspectratio=169]{beamer}

\makeatletter
\newlength\beamerFix@deltaMargin
\setlength\beamerFix@deltaMargin{\dimexpr 0.5\beamer@leftmargin - 0.5\beamer@rightmargin}

\setbeamersize{text margin left=0.4cm, text margin right=0.4cm}

\addtolength\beamerFix@deltaMargin{\dimexpr 0.5\beamer@rightmargin - 0.5\beamer@leftmargin}
\makeatother

\setbeamercolor{bgcolor}{fg=black,bg=red}

\makeatletter
\setbeamertemplate{frametitle}{%
  \nointerlineskip\ifdim\beamerFix@deltaMargin>0cm{}\else{\hspace*{\beamerFix@deltaMargin}}\fi%
  \begin{beamercolorbox}[wd=\paperwidth]{bgcolor}Box \hfill \insertframetitle \hfill End\end{beamercolorbox}%
}
\makeatother

\begin{document}
\begin{frame}{Title}

Start \hfill End

\end{frame}
\end{document}

相关内容