定制的 Beamer Block 间距为什么很奇怪?

定制的 Beamer Block 间距为什么很奇怪?

我有一个自定义块定义如下!这来自进度条主题http://recherche.noiraudes.net/fr/LaTeX.php

\newdimen\lengthone
\newcommand{\defblock}[1][]{
  \defbeamertemplate*{block \ifx#1\@empty\else#1\space\fi begin}{progressbar theme}
  {     
        %\rule{\textwidth}{2pt}
    \lengthone=\textwidth
    \advance\lengthone by -4mm
    \setbox\progressbar@blockbox=\hbox to 1\textwidth\bgroup\vbox\bgroup
        \vskip-0.25\baselineskip
        \raggedright
        \hspace{-2.4mm}
    \begin{minipage}{\lengthone} 
        \ifx\insertblocktitle\@empty
        \else
        {\usebeamerfont{block title}\usebeamercolor[fg]{block title\ifx#1\@empty\else\space#1\fi}\insertblocktitle}\\[-0.3cm]% Just to be "babel-safe" 
        \tikz\draw[fg!20!bg] (0, 0) -- (\lengthone, 0);\par
        %\vspace{-2mm}
        \fi
        \par
        \usebeamerfont{block body\ifx#1\@empty\else\space#1\fi}
        \ifx\insertblocktitle\@empty\else\global\let\itemize=\progressbar@itemize\fi  
        %\vphantom{y}
        }

  \defbeamertemplate*{block \ifx#1\@empty\else#1\space\fi end}{progressbar theme}
  {
    \vphantom{y}
    \global\let\itemize=\progressbar@tempitemize
    \end{minipage}
    \vskip-0.25\baselineskip\egroup\egroup
    \progressbar@boxwidth=\wd\progressbar@blockbox
    %\advance\progressbar@boxwidth by 0.5\baselineskip
    %\advance\progressbar@boxwidth by 5mm
    \progressbar@boxheight=\ht\progressbar@blockbox
    \advance\progressbar@boxheight by \dp\progressbar@blockbox
    {
     \parbox[t]{0cm}{
      \usebeamercolor{block body\ifx#1\@empty\else\space#1\fi}
      \tikz[baseline=(current bounding box.north)]{\draw[draw=fg!20!bg,fill=bg, rounded corners=2pt] (0, 0) rectangle (\progressbar@boxwidth, \progressbar@boxheight);} 
    }
    }
  {
    \parbox[t]{0cm}{
      \vskip0.5\baselineskip
      \hfill{\box\progressbar@blockbox}\hfill
    }
   }
  }
}

\defblock

当我在投影机中用 Minipage 中的三个相同块制作一个框架时,就会出现以下情况,即第一个框看起来完全错误,而接下来的框看起来正确且间距正确...有人看到是什么导致了这种奇怪的效果吗?

\begin{frame}[t,fragile]
\frametitle{Ball on Curve}
\begin{flushright}
\begin{minipage}[t]{0.7\textwidth}
    \begin{block}{Frage und Ziel}
    \begin{itemize}
        \item<2-> Scheibe als \emph{ungebundenes} System formulieren.
        \item<2-> Scheibe als \emph{ungebundenes} System formulieren.
    \end{itemize}
    \end{block}
\end{minipage}
\end{flushright}
\vspace{-\baselineskip}
\begin{flushright}
\begin{minipage}[t]{0.7\textwidth}
    \begin{block}{Frage und Ziel}
    \begin{itemize}
        \item<2-> Scheibe als \emph{ungebundenes} System formulieren.
        \item<2-> Scheibe als \emph{ungebundenes} System formulieren.
    \end{itemize}
    \end{block}
\end{minipage}
\end{flushright}
\vspace{-\baselineskip}
\begin{flushright}
\begin{minipage}[t]{0.7\textwidth}
    \begin{block}{Frage und Ziel}
    \begin{itemize}
        \item<2-> Scheibe als \emph{ungebundenes} System formulieren.
        \item<2-> Scheibe als \emph{ungebundenes} System formulieren.
    \end{itemize}
    \end{block}
\end{minipage}
\end{flushright}
\end{frame}

在此处输入图片描述

答案1

无需所有额外的定义即可重现该问题,因此它不依赖于特定的主题:

\documentclass{beamer}

\begin{document}

\begin{frame}[t,fragile]
\frametitle{Ball on Curve}

\begin{flushright}
\begin{minipage}[t]{\textwidth}
    \begin{block}{Frage und Ziel}
    \begin{itemize}
        \item Scheibe als \emph{ungebundenes} System formulieren.
    \end{itemize}
    \end{block}
\end{minipage}
\end{flushright}
\vspace{-\baselineskip}
\begin{flushright}
\begin{minipage}[t]{\textwidth}
    \begin{block}{Frage und Ziel}
    \begin{itemize}
        \item Scheibe als \emph{ungebundenes} System formulieren.
    \end{itemize}
    \end{block}
\end{minipage}
\end{flushright}
\vspace{-\baselineskip}
\begin{flushright}
\begin{minipage}[t]{\textwidth}
    \begin{block}{Frage und Ziel}
    \begin{itemize}
        \item Scheibe als \emph{ungebundenes} System formulieren.
    \end{itemize}
    \end{block}
\end{minipage}
\end{flushright}
\end{frame}

\end{document}

在此处输入图片描述

可以看出,第一个块中的块标题和块主体之间的垂直间距小于其他两个块中的相应间距。\leavevmode在第一个flushright环境之前添加(或抑制t框架的选项)可解决问题:

\documentclass{beamer}

\begin{document}

\begin{frame}[t,fragile]
\frametitle{Ball on Curve}
\leavevmode
\begin{flushright}
\begin{minipage}[t]{\textwidth}
    \begin{block}{Frage und Ziel}
    \begin{itemize}
        \item Scheibe als \emph{ungebundenes} System formulieren.
    \end{itemize}
    \end{block}
\end{minipage}
\end{flushright}
\vspace{-\baselineskip}
\begin{flushright}
\begin{minipage}[t]{\textwidth}
    \begin{block}{Frage und Ziel}
    \begin{itemize}
        \item Scheibe als \emph{ungebundenes} System formulieren.
    \end{itemize}
    \end{block}
\end{minipage}
\end{flushright}
\vspace{-\baselineskip}
\begin{flushright}
\begin{minipage}[t]{\textwidth}
    \begin{block}{Frage und Ziel}
    \begin{itemize}
        \item Scheibe als \emph{ungebundenes} System formulieren.
    \end{itemize}
    \end{block}
\end{minipage}
\end{flushright}
\end{frame}

\end{document}

在此处输入图片描述

相关内容