投影仪块与整个页面一样宽

投影仪块与整个页面一样宽

在下面的例子中,我怎样才能拥有全纸宽的投影仪block?然后我怎样才能控制它在幻灯片上的垂直位置?

\documentclass{beamer}
\usetheme{metropolis}
\begin{document}
\begin{frame}{Frame}
\centering
\vfill

\metroset{block=fill}
\begin{block}{\vspace*{-3ex}}
\centering
A wide block
\end{block}
\end{frame}
\end{document}

答案1

看看大都市主题的来源(这里),您会看到block环境由多个环境组成beamercolorbox。这些环境采用wd={width}可选参数来调整其大小以达到所需的宽度。因此,只需在宏中wd=\paperwidth的每个出现处添加即可。beamercolorbox\metropolis@block

下面的例子说明了两件事:

  • 首先,我重新定义为每个\metropolis@block都有一个wd=\metropolis@blockwdas 参数beamercolorbox。长度\metropolis@blockwd设置为\paperwidth,但您可以选择任何其他您喜欢的值。
  • block其次,对于幻灯片上环境的放置:您可能需要考虑使用框架上的选项。启用它后,幻灯片上的元素不会垂直居中,而是从幻灯片顶部开始放置。我觉得使用(使用您喜欢的任何值)t这样更容易达到正确的放置位置。block\vpsace*{2cm}

代码如下:

\documentclass{beamer}
\usetheme{metropolis}

\makeatletter
\newlength{\metropolis@blockwd}
\setlength{\metropolis@blockwd}{\paperwidth}
\renewcommand{\metropolis@block}[1]{
  \par\vskip\medskipamount%
  \setlength{\parskip}{0pt}
  \ifbeamercolorempty[bg]{block title#1}{%
    \begin{beamercolorbox}[rightskip=0pt plus 4em,wd=\metropolis@blockwd]{block title#1}}{%
  \ifbeamercolorempty[bg]{block title}{%
    \begin{beamercolorbox}[rightskip=0pt plus 4em,wd=\metropolis@blockwd]{block title#1}%
  }%
  {%
    \begin{beamercolorbox}[
      sep=\dimexpr\metropolis@blocksep-\metropolis@blockadjust\relax,
      leftskip=\metropolis@blockadjust,
      rightskip=\dimexpr\metropolis@blockadjust plus 4em\relax,
      wd=\metropolis@blockwd
    ]{block title#1}%
  }}%
      \usebeamerfont*{block title#1}%
      \metropolis@strut%
      \insertblocktitle%
      \metropolis@strut%
  \end{beamercolorbox}%
  \nointerlineskip%
  \ifbeamercolorempty[bg]{block body#1}{%
    \begin{beamercolorbox}[vmode,wd=\paperwidth]{block body#1}}{
  \ifbeamercolorempty[bg]{block body}{%
    \begin{beamercolorbox}[vmode,wd=\paperwidth]{block body#1}%
  }{%
    \begin{beamercolorbox}[sep=\metropolis@blocksep, vmode,wd=\metropolis@blockwd]{block body#1}%
    \vspace{-\metropolis@parskip}
  }}%
      \usebeamerfont{block body#1}%
      \setlength{\parskip}{\metropolis@parskip}%
}
\makeatother

\begin{document}

\begin{frame}[t]{Frame}
\centering
\vspace*{2cm}
\metroset{block=fill}
\begin{block}{\vspace*{-3ex}}
\centering
A wide block
\end{block}
\end{frame}

\end{document}

在此处输入图片描述

答案2

也许不是最好的解决方案,但\linewidth使用minipage宽度为的\paperwidth确实有效。 就是\makebox[\linwidth][c]给所有东西一个宽度\linewidth,然后居中对齐。

对于垂直放置,您可以更改给定的参数\vspace*

\documentclass{beamer}
\usetheme{metropolis}          
\begin{document}
\begin{frame}{Frame}
\centering
\vspace*{5cm}
\metroset{block=fill}
\makebox[\linewidth]{%
  \begin{minipage}{\paperwidth}
    \begin{block}{\vspace*{-3ex}}
    \centering
    A wide block 
    \end{block}
  \end{minipage}
}
 \end{frame}
\end{document}

在此处输入图片描述

答案3

您可以使用一列横跨整个。对于垂直对齐,与其他答案一样,使用框架顶部对齐的\paperwidth选项,然后向下推,例如。[t]\vspace*{}

\documentclass{beamer}
\usetheme{metropolis}
\begin{document}

\begin{frame}[t]{Frame}
  \begin{columns}
    \begin{column}{\paperwidth}
      \vspace*{3\baselineskip}
      \metroset{block=fill}
      \begin{block}{\vspace*{-3ex}}
        \centering
        A wide block
      \end{block}
    \end{column}
  \end{columns}
\end{frame}

\end{document}

在此处输入图片描述

相关内容