在下面的例子中,我怎样才能拥有全纸宽的投影仪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@blockwd
as 参数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}