由于彩色投影块而产生的多余空间

由于彩色投影块而产生的多余空间

下面的代码重新定义了 beamer 的默认块环境,以允许自定义样式。不幸的是,它以某种方式改变了最后一列的水平间距(第三列的规则应该填充剩余空间以匹配顶部规则的右边框)。如果跳过调用,\RenewDocumentEnvironment一切都会正常。这个空间的原因是什么,如何正确地重新定义块?(部分源代码和这样重新定义它的想法可能来自 SE,但我找不到原始代码)。

\documentclass[english]{beamer}

\usepackage{xparse}

% Save old block environment commands (with LetLtxMacro to support arguments)
\LetLtxMacro\origblock\block
\LetLtxMacro\endorigblock\endblock

% Introduce a new block whose title and body format can be customized
\newenvironment{formattedblock}[3]%
{%
  % Force expansion of the second setbeamercolor argument by using edef
  \edef\settitleformat{\noexpand\setbeamercolor{block title}{#2}}%
  \settitleformat%
  \edef\setbodyformat{\noexpand\setbeamercolor{block body}{#3}}%
  \setbodyformat%
  \begin{origblock}{#1}%
}{%
  \end{origblock}%
}

% Reformat ordinary blocks by using this formattedblock config
\RenewDocumentEnvironment{block}{ g }%
{%
  \begin{formattedblock}{#1}{bg=blue,fg=white}{bg=gray,fg=black}%
}{%
  \end{formattedblock}%
}


\begin{document}

  \begin{frame}[t]{}
    \rule{\linewidth}{1ex}
    \begin{columns}[onlytextwidth,t]

      \begin{column}{0.25\linewidth}
        \rule{\linewidth}{1ex}
        \begin{block}{foo}
          bar
        \end{block}
      \end{column}

      \begin{column}{0.25\linewidth}
        \rule{\linewidth}{1ex}
        \begin{block}{foo}
          bar
        \end{block}
      \end{column}

      \begin{column}{0.25\linewidth}
        \rule{\linewidth}{1ex}
        \begin{block}{foo}
          \begin{itemize}
            \setbeamertemplate{itemize item}[circle]
            \item bar
          \end{itemize}
        \end{block}
      \end{column}

    \end{columns}
  \end{frame}
\end{document}

以下屏幕截图\RenewDocumentEnvironment分别显示了一次带有错误的输出(如果启用)和一次不带有空格(和格式)的输出。

失败 好的

编辑#2:

有趣的是,只需使用传统的 beamer 命令对块进行样式设置,就可以产生相同的效果:

\setbeamercolor{block title}{bg=blue,fg=white}
\setbeamercolor{block body}{bg=gray,fg=black}

所以这和环境重新定义完全无关。问题仍然存在:为什么会发生这种情况?

编辑 #3:显然,如果您定义任何背景颜色,beamer 就会这样做。呃。截至 Beamer 3.40,据我所知,手册中没有提到或解释这一点。

答案1

投影仪块周围出现额外空间的最可能原因是它使用了beamercolorboxwithcolsep*=0.75ex并且设置了一些背景颜色。colsep手册中的beamercolorbox选项部分解释了该选项:

colsep*=⟨dimension⟩ 在文本周围设置一个额外的颜色分隔空间,该空间水平方向位于框的外部。这意味着如果框有背景,则该背景将向文本的左侧和右侧突出 ⟨dimension⟩,但 TEX 不会将这个突出的背景考虑在内以进行排版。

因此,如果您不需要背景颜色,只需取消设置bg值,否则您将必须完全重新定义块环境,如所述这里

相关内容