2

I have a custom block defined as the following! this comes from the progressbar theme from 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

When I make a frame in beamer with three identical Blocks in a Minipage like this the following comes out, that the first box looks completely wrong and the follwing look right with the right spacing... Does anybody see what can cause this strange effect?

\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}

enter image description here

Gabriel
  • 1,574
  • 3
    I've no answer, but I noticed a big error in the first block of macros: the tests \ifx#1\@empty are all wrong. It doesn't influence your setting, as you call \defblock without an optional argument, but \defblock[aachen] would result in \defbeamertemplate*{block chen begin} which is clearly unwanted. However, a MWE is needed. – egreg Jun 17 '12 at 22:33

1 Answers1

5

The problem can be reproduced without all the extra definitions, so it's not dependent on the particular theme:

\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}

enter image description here

As can be seen, the vertical spacing between the block title and the block body in the first block is less than the corresponding space in the other two blocks. Adding \leavevmode before the first flushright environment (or suppressing the t option for the frame) solves the problem:

\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}

enter image description here

Gonzalo Medina
  • 505,128