Ich möchte eine block-Umgebung auf Höhe eines Items darstellen:

Open in Online-Editor
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usetheme{AnnArbor}
\usecolortheme{crane}
\useinnertheme{circles}

\newenvironment<>{definitionblock}[2][\textwidth]{%
  \begin{center}
    \begin{minipage}{#1}
      \setlength{\textwidth}{#1}
      \begin{actionenv}#3%
        \def\insertblocktitle{#2}%
        \par%
        \setbeamercolor{block body}{bg=blue!30}
        \usebeamertemplate{block begin}%
        \par%
        \begin{center}}
       {\end{center}%
        \par%
        \usebeamertemplate{block end}%
      \end{actionenv}
    \end{minipage}
  \end{center}}

\begin{document}
\begin{frame}
\begin{itemize}
\item Text 1
\begin{definitionblock}[6cm]{}
Inhalt 1\\weiterer Inhalt
\end{definitionblock}
\end{itemize}
\end{frame}
\end{document}

Die erste Zeile der blau hinterlegten Boxen sollen auf gleicher Höhe zum Text 1 sein.

Ich hab versucht, das mit einer \raisebox zu machen, das ist mir nicht gelungen:

Open in Online-Editor
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usetheme{AnnArbor}
\usecolortheme{crane}
\useinnertheme{circles}

\newenvironment<>{definitionblock}[2][\textwidth]{%
  \begin{center}
    \begin{minipage}{#1}
      \setlength{\textwidth}{#1}
      \begin{actionenv}#3%
        \def\insertblocktitle{#2}%
        \par%
        \setbeamercolor{block body}{bg=blue!30}
        \usebeamertemplate{block begin}%
        \par%
        \begin{center}}
       {\end{center}%
        \par%
        \usebeamertemplate{block end}%
      \end{actionenv}
    \end{minipage}
  \end{center}}

\begin{document}
\begin{frame}
\begin{itemize}
\item Text 1\raisebox{\dimexpr-\height+\ht\strutbox\relax}{%
\begin{definitionblock}[6cm]{}
Inhalt 1
\end{definitionblock}}
\end{itemize}
\end{frame}
\end{document}

Der Versuch ergibt die Fehlermeldung

Something's wrong--perhaps a missing item. end{frame}

Update:

Ich hab mir eine Alternative überlegt: Statt eine block-Umgebung zu verwenden, was ja nicht klappt, will ich die Optik der block-Umgebung nachbauen (genau gesagt den block-body). Das gefällt mir zwar nicht so gut, aber vielleicht bringt es das selbe Ergebnis.

Ich hab dazu folgendes gemacht:

Open in Online-Editor
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\useinnertheme{circles}
\usetikzlibrary{shadows}

\begin{document}
\begin{frame}
\begin{itemize}
\item Text 1 \raisebox{\dimexpr\ht\strutbox+0.3333em\relax}{\begin{tikzpicture}[baseline=(current bounding box.north)]
\node [draw=blue!50,fill=blue!50,rectangle,rounded corners,drop shadow] {\parbox{4cm}{\strut erste Zeile\\zweite Zeile}}; % erste Zeile auf Höhe des davor stehenden Textes

\end{tikzpicture}}
\item Text 2 \raisebox{\dimexpr0.5\ht\strutbox-0.5ex\relax}{\begin{tikzpicture}[baseline=(current bounding box.center)]
\node [draw=blue!50,fill=blue!50,rectangle,rounded corners,drop shadow] {\parbox{4cm}{erste Zeile\\zweite Zeile}}; % zentriert zur Mitte der blauen Box (ohne Schatten)

\end{tikzpicture}}
\end{itemize}
\end{frame}
\end{document}

Dies führt zu diesem Ergebnis:

alt text

Nun hab ich noch Fragen zur Höhe der so konstruierten blauen Boxen. Ich hab zwei Varianten:

  1. Die Höhe der ersten Zeile soll auf den Höhe des Textes sein.

  2. Die blaue Box (ohne Schatten) soll zentriert zum Text davor sein.

Ich hab beides nach einigem Testen mit der \raisebox so hingewurschtelt, dass es optisch zu passen scheint. Gibts da noch einen einfacherern/saubereren Weg?

Das größere Problem ist, den Schatten der originalen beamer-block-Umgebung nachzubauen. Ich hab dazu mit pgf-blur experimentiert, was nicht zufriedenstellend war (z.B. wurde die runde Ecke nicht richtig im Schatten abgebildet und es gab in einem PDF-Viewer seltsame "Streifen"). Ich glaube, dass der Schatten der des beamer-blocks in beamerbaseboxes.sty definiert wird. Allerdings versteh ich den Code dort nicht. Und einfach rauskopieren wird es nicht tun. Hat dazu jemand eine Idee?

gefragt 30 Jan '15, 22:25

tom75's gravatar image

tom75
2.2k187884
Akzeptiert-Rate: 57%

bearbeitet 06 Feb '15, 17:57


Bei Verzicht auf die center-Umgebung entspricht das gewünschte doch eigentlich dem Standard:

Open in Online-Editor
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usetheme{AnnArbor}
\usecolortheme{crane}
\useinnertheme{circles}

\newenvironment<>{definitionblock}[2][\textwidth]{%
    \quad\begin{minipage}{#1}
      \begin{actionenv}#3%
        \def\insertblocktitle{#2}%
        \par%
        \setbeamercolor{block body}{bg=blue!30}
        \usebeamertemplate{block begin}%
        \par%
        \begin{center}}
       {\end{center}%
        \par%
        \usebeamertemplate{block end}%
      \end{actionenv}%
    \end{minipage}%
}

\begin{document}
\begin{frame}
\begin{itemize}
\item Text 1
\begin{definitionblock}[6cm]{}
Inhalt 1\\weiterer Inhalt
\end{definitionblock}
\end{itemize}
\end{frame}
\end{document}

Mit der Zentrierung geht es tatsächlich nur mit viel Getrickse:

Open in Online-Editor
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usetheme{AnnArbor}
\usecolortheme{crane}
\useinnertheme{circles}

\newenvironment<>{definitionblock}[2][\textwidth]{%
  \vskip-\baselineskip\vskip-1.333ex% Wert ist geraten
  \begin{minipage}{\textwidth}
    \centering
    \begin{minipage}[t]{#1}
      \begin{actionenv}#3%
        \def\insertblocktitle{#2}%
        \par%
        \setbeamercolor{block body}{bg=blue!30}
        \usebeamertemplate{block begin}%
        \par%
        \centering}
       {\par%
        \usebeamertemplate{block end}%
      \end{actionenv}%
    \end{minipage}%
  \end{minipage}
}

\begin{document}
\begin{frame}
\begin{itemize}
\item Text 1
\begin{definitionblock}[6cm]{}
Inhalt 1\\weiterer Inhalt
\end{definitionblock}
\end{itemize}
\end{frame}
\end{document}

Dabei gibt es dann natürlich keinen Schutz, dass der Block nicht den Text und den Item-Punkt überdeckt.

Permanenter link

beantwortet 06 Feb '15, 20:18

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 06 Feb '15, 20:28

Vielen Dank!!!

(06 Feb '15, 21:27) tom75
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×138
×16
×3

gestellte Frage: 30 Jan '15, 22:25

Frage wurde gesehen: 9,605 Mal

zuletzt geändert: 06 Feb '15, 21:27