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, 16:25

tom75's gravatar image

tom75
1.9k1445
Akzeptiert: 83%

bearbeitet 06 Feb '15, 11: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, 14:18

saputello's gravatar image

saputello
18.4k22352

bearbeitet 06 Feb '15, 14:28

Vielen Dank!!!

(06 Feb '15, 15:27) tom75
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×94
×15
×3

Frage gestellt: 30 Jan '15, 16:25

Frage wurde angeschaut: 2,362 Mal

Zuletzt aktualisiert: 06 Feb '15, 15:27