![Beamer 列比 minipage 留出更多垂直空间](https://linux22.com/image/344398/Beamer%20%E5%88%97%E6%AF%94%20minipage%20%E7%95%99%E5%87%BA%E6%9B%B4%E5%A4%9A%E5%9E%82%E7%9B%B4%E7%A9%BA%E9%97%B4.png)
为什么在相同条件下,beamer 列环境比 minipage 留下更多的垂直空间?
\documentclass{beamer}
\usepackage{lmodern}
\usepackage{mwe}
\newcommand{\SomeText}{Some text {}}
\begin{document}
\begin{frame}
\SomeText \SomeText \SomeText \SomeText \SomeText \SomeText
\setlength\fboxsep{0pt}
%\setlength\fboxrule{0pt}
\begin{figure}
\begin{columns}[onlytextwidth]
\fbox{%
\begin{column}[t]{\dimexpr0.5\textwidth-0.5\columnsep-2\fboxrule\relax}
\hfill{}\includegraphics[width=0.45\textwidth]{example-image-a}
\end{column}}\hspace{\columnsep}%
\fbox{%
\begin{column}[t]{\dimexpr0.5\textwidth-0.5\columnsep-2\fboxrule\relax}
\includegraphics[width=0.45\textwidth]{example-image-b}\hfill{}
\end{column}}
\end{columns}
\caption{\SomeText}
\end{figure}
\SomeText \SomeText \SomeText \SomeText \SomeText \SomeText
\setlength\fboxsep{0pt}
%\setlength\fboxrule{0pt}
\begin{figure}
\fbox{%
\begin{minipage}[t]{\dimexpr0.5\textwidth-0.5\columnsep-2\fboxrule\relax}
\hfill{}\includegraphics[width=0.45\textwidth]{example-image-a}
\end{minipage}}\hspace{\columnsep}%
\fbox{%
\begin{minipage}[t]{\dimexpr0.5\textwidth-0.5\columnsep-2\fboxrule\relax}
\includegraphics[width=0.45\textwidth]{example-image-b}\hfill{}
\end{minipage}}
\caption{\SomeText}
\end{figure}
\SomeText \SomeText \SomeText \SomeText \SomeText \SomeText
\end{frame}
\end{document}
答案1
下面的代码似乎可以解决问题。但我不明白和3.5pt
来自1.86pt
哪里。
\documentclass{beamer}
\let\Tiny\tiny
\usepackage{etoolbox}
\let\oldabovecaptionskip\abovecaptionskip
\let\oldbelowcaptionskip\belowcaptionskip
\BeforeBeginEnvironment{columns}{%
\setlength{\abovecaptionskip}{\dimexpr\oldabovecaptionskip+3.5pt\relax}%
\setlength{\belowcaptionskip}{\dimexpr\oldbelowcaptionskip-1.86pt\relax}%
\begin{minipage}{\linewidth}}
\AfterEndEnvironment{columns}{\end{minipage}}
\begin{document}
\begin{frame}
\rule{\textwidth}{3pt}
\begin{figure}
\rule{.5\textwidth}{1pt}
\caption{Text}
\end{figure}
\rule{\textwidth}{3pt}
\begin{figure}
\begin{columns}
\begin{column}{.5\textwidth}
\rule{\linewidth}{1pt}
\end{column}
\end{columns}
\caption{Text}
\end{figure}
\rule{\textwidth}{3pt}
\begin{figure}
\begin{minipage}{.5\textwidth}
\rule{\linewidth}{1pt}
\end{minipage}
\caption{Text}
\end{figure}
\rule{\textwidth}{3pt}
\end{frame}
\end{document}