Ich will für die itemize-Umgebung für die erste Ebene einen Kreis und für die zweite Ebene ein Quadrat verwenden, jeweils mittig zu einem großen Buchstaben ist. Das vordefinierte circle bzw. square ist zu klein bzw. zu groß:

alt text

Für square hab ich einen Ersatz gefunden, der optisch gut passt. Ich weiß aber nicht, ob das eine saubere Lösung ist. Für den circle find ich nichts entsprechendes.

Open in writeLaTeX
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{fontenc}
\usepackage[ngerman]{babel}
\usepackage{libertine}

\setbeamerfont{itemize/enumerate subbody}{size=\normalsize}
\setbeamertemplate{itemize item}[circle]
\setbeamertemplate{itemize subitem}{\rule[0.5ex]{0.5ex}{0.5ex}}

\begin{document}
\begin{frame}
  \begin{itemize}
    \item ABCggg
      \begin{itemize}
        \item ABCggg
        \item ggglll
      \end{itemize}
  \end{itemize}
\end{frame}
\end{document}

Ich hatte noch die Alternative

\setbeamertemplate{itemize item}{\textbullet}

probiert, aber da war der Kreis nicht groß genug. Was mir noch eingefallen wäre ist, das \textbullet mit einer \scalebox zu vergrößern und einer \raisebox zu verschieben.

Gibt es vielleicht eine einfache Möglichkeit?

gefragt 22 Jan '15, 23:24

tom75's gravatar image

tom75
2.2k277984
Akzeptiert-Rate: 57%

bearbeitet 23 Jan '15, 11:41

Henri's gravatar image

Henri
15.7k133943


Hier ist eine Lösung mit TikZ, bei der Du im Aufruf von \setbeamertemplate selbt die Größe der Elemente bestimmen kannst.

Open in writeLaTeX
\documentclass[20pt]{beamer}
\usepackage{tikz,libertine}

% \makebox requires width, which we don't want
\newcommand\centerbox[1]{$\vcenter{\hbox{#1}}$}

\defbeamertemplate*{itemize item}{custom circle}[1][.5ex]{%
  \centerbox{\tikz\fill (0,0) circle (#1);}}
\defbeamertemplate*{itemize subitem}{custom circle}[1][.4ex]{%
  \centerbox{\tikz\fill (0,0) circle (#1);}}
\defbeamertemplate*{itemize subsubitem}{custom circle}[1][.3ex]{%
  \centerbox{\tikz\fill (0,0) circle (#1);}}

\defbeamertemplate*{itemize item}{custom square}[1][.5ex]{%
  \centerbox{\tikz\fill (-#1,-#1) rectangle (#1,#1);}}
\defbeamertemplate*{itemize subitem}{custom square}[1][.4ex]{%
  \centerbox{\tikz\fill (-#1,-#1) rectangle (#1,#1);}}
\defbeamertemplate*{itemize subsubitem}{custom square}[1][.3ex]{%
  \centerbox{\tikz\fill (-#1,-#1) rectangle (#1,#1);}}

\setbeamertemplate{itemize item}[custom circle]
\setbeamertemplate{itemize subitem}[custom square]

\begin{document}
\begin{frame}
  \begin{itemize}
    \item ABCggg
      \begin{itemize}
        \item ABCggg
        \item ggglll
      \end{itemize}
  \end{itemize}

  \setbeamertemplate{itemize item}[custom circle][1pt]
  \setbeamertemplate{itemize subitem}[custom square][1ex]
  \begin{itemize}
    \item ABCggg
      \begin{itemize}
        \item ABCggg
        \item ggglll
      \end{itemize}
  \end{itemize}
\end{frame}
\end{document}

alt text

Permanenter link

beantwortet 23 Jan '15, 09:30

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 23 Jan '15, 10:56

@Henri Danke, das gefällt mir schon sehr gut. Es gibt noch ein Problem. Wenn ich z.B. die Schriftgröße auf 20pt ändere, sind die Items nicht mehr mittig. Ich kann das dann manuell bei raisebox anpassen. Kann man das irgendwie automatisieren, dass ein Item immer genau mittig zur Schrift ist?

(23 Jan '15, 10:33) tom75
1

@tom75 Kein Problem. Eigentlich sollte man für so etwas das LaTeX Makro \makebox verwenden, welches allerdings eine Breite als Argument haben will. Das ist auch kein Problem, aber dann müsste ich jedes Mal die Breite ausrechnen bevor ich das Symbol platziere. Deshalb gehe ich den (undokumentierten) Umweg über plainTeX und benutzt eine \hbox in \vcenter.

(23 Jan '15, 10:58) Henri

@Henri Danke!

(23 Jan '15, 13:49) tom75

Noch eine Nachfrage: Warum wurde die *-Variante von \defbeamertemplate verwendet?

In der Anleitung steht:

"The starred version of the command installs the predefined template option, but then immediately calls \setbeamertemplate for this option. This is useful for the default templates. If there are any arguments necessary, these are set to \relax."

Ich vermute, es geht um den letzten Punkt. Kann mir das jemand bitte erklären? Ich hab den * mal weggelassen und es gab das selbe Ergebnis.

(23 Jan '15, 17:13) 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:

×141
×16

gestellte Frage: 22 Jan '15, 23:24

Frage wurde gesehen: 11,512 Mal

zuletzt geändert: 23 Jan '15, 17:13