我希望能够fill
在 Beamer 列内(或者,在小页面内)使用粘性长度,以便最终分配的长度在列内外保持一致。
MWE:
\documentclass[xcolor=dvipsnames,compress,9pt]{beamer}
\setlength{\parskip}{0pt plus 1fill}
\begin{document}
\maketitle
\begin{frame}{Propagating \textsc{fill} values to columns}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\par
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\vspace*{\parskip}
\begin{columns}[t]
\begin{column}{\textwidth}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\par
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\end{column}
\end{columns}
\end{frame}
\end{document}
观察第 3 段和第 4 段之间的 \parskip 值以及其他段落之间的值名义上是相同的,但结果却截然不同。
我猜这是因为 Beamer 列被实现为小页面,然后在构建小页面时,fill
会计算其自身的值。
有什么解决方法吗?
答案1
\vfill
不会在 beamer 列中提供可伸缩空间,原因与为什么 \vfill 在 minipage 中不起作用?
两种解决方法:
minipage
指定高度:
\documentclass[xcolor=dvipsnames,compress,9pt]{beamer}
\setlength{\parskip}{0pt plus 1fill}
\makeatletter
\newcommand{\@minipagerestore}{\setlength{\parskip}{0pt plus 1fill}}
\makeatother
\begin{document}
\begin{frame}{Propagating \textsc{fill} values to columns}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\par
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\begin{minipage}[t][.2\textheight][t]{\textwidth}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\par
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\end{minipage}
\end{frame}
\end{document}
固定的\parskip
:
\documentclass[xcolor=dvipsnames,compress,9pt]{beamer}
\setlength{\parskip}{1cm}
\makeatletter
\newcommand{\@minipagerestore}{\setlength{\parskip}{1cm}}
\makeatother
\begin{document}
\begin{frame}{Propagating \textsc{fill} values to columns}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\par
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\vspace*{\parskip}
\begin{columns}[t]
\begin{column}{\textwidth}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\par
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\end{column}
\end{columns}
\end{frame}
\end{document}