Hallo,

ich versuche, ausgehend von der Lösung dieser Frage mehrere Knoten ineinander zu verschachteln. Ohne Hintergrundfüllung funktioniert das hier ganz gut:

Open in Online-Editor
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{positioning,fit}
\begin{document}
\begin{tikzpicture}
  \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
  \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
  \node [circle, minimum size=2cm, draw, fit={(Punkt) (Text)}](Kreis) {};
  \node [left=0.2cm of Kreis, circle, minimum size=3cm, draw, fit={(Kreis)},label={[font=\Large]above:$E$}] {};
\end{tikzpicture}
\end{document}

Wenn ich nun den inneren Kreis im Hintergrund rot füllen will, kappt das noch wie folgt:

Open in Online-Editor
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,backgrounds}
\begin{document}
\begin{tikzpicture}
  \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
  \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
  \begin{scope}[on background layer]
    \node [circle, minimum size=2cm, draw, fill=red, fit={(Punkt) (Text)}](Kreis) {};
  \end{scope}
  \node [left=0.2cm of Kreis, circle, minimum size=3cm, draw, fit={(Kreis)},label={[font=\Large]above:$E$}] {};
\end{tikzpicture}
\end{document}

Wenn ich nun aber auch noch den äußeren Kreis im Hintergrund blau füllen will, dann klappt es nicht. Ich hab folgenden Weg versucht:

Open in Online-Editor
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,backgrounds}
\begin{document}
    \begin{tikzpicture}
      \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
      \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
      \begin{scope}[on background layer]
        \node [circle, minimum size=2cm, draw, fill=red, fit={(Punkt) (Text)}](Kreis) {};
        \begin{scope}[on background layer]
          \node [left=0.2cm of Kreis, circle, minimum size=3cm, draw, fill=blue, fit={(Kreis)},label={[font=\Large]above:$E$}] {};
        \end{scope}
      \end{scope}
    \end{tikzpicture}
\end{document}

Und folgenden:

Open in Online-Editor
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,backgrounds}
\begin{document}
    \begin{tikzpicture}
      \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
      \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
      \begin{scope}[on background layer]
        \node [circle, minimum size=2cm, draw, fill=red, fit={(Punkt) (Text)}](Kreis) {};
      \end{scope}
      \begin{scope}[on background layer]
        \node [left=0.2cm of Kreis, circle, minimum size=3cm, draw, fill=blue, fit={(Kreis)},label={[font=\Large]above:$E$}] {};
      \end{scope}
    \end{tikzpicture}
\end{document}

Beides hat nicht zum gewünschten Ergebnis geführt. Hat jemand eine Idee?

Viele Grüße Tom

gefragt 31 Dez '14, 13:51

tom75's gravatar image

tom75
1.9k1445
Akzeptiert: 83%

bearbeitet 09 Jan, 08:49

Clemens's gravatar image

Clemens
19.0k112960


Wie schon von @Stefan erwähnt, kannst Du Dir auch eigene Layer definieren:

Open in writeLaTeX
\pgfdeclarelayer{background1}
\pgfdeclarelayer{background2}

Dann musst Du natürlich noch die Reihenfolge der Layer vorgeben:

Open in writeLaTeX
\pgfsetlayers{background2,background1,main}

Um etwas in einen Layer einzufügen, gibt es die pgfonlayer Umgebung, die den Namen des entsprechenden Layers als Argument erwartet. Alles, was außerhalb dieser Umgebungen steht, wird in den Standardlayer main eingefügt.

Open in writeLaTeX
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,fit}
  \pgfdeclarelayer{background1}
  \pgfdeclarelayer{background2}
  \pgfsetlayers{background2,background1,main}
\begin{document}
\begin{tikzpicture}
  \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
  \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
  \begin{pgfonlayer}{background1}
    \node [circle, minimum size=2cm, draw, fill=red, fit={(Punkt) (Text)}](Kreis) {};
  \end{pgfonlayer}
  \begin{pgfonlayer}{background2}
    \node [left=0.2cm of Kreis, circle, minimum size=3cm, draw, fill=blue, fit={(Kreis)},label={[font=\Large]above:$E$}] {};
  \end{pgfonlayer}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 01 Jan '15, 05:07

esdd's gravatar image

esdd
14.2k53251

Vielen Dank! Die Lösung gefällt mir sehr.

(02 Jan '15, 01:30) tom75

Herzlich willkommen auf der TeXwelt, Tom!

Eigentlich bräuchtest Du hier 3 Layer. Ginge auch. Ich finde das einfachste, die beiden überzeichneten Nodes einfach nochmal zu zeichnen, auf die Schnelle. Und den nur großen gefüllten Kreis in den Hintergrund schicken.

Open in writeLaTeX
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,backgrounds}
\begin{document}
\begin{tikzpicture}
  \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
  \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
   \node [circle, minimum size=2cm, draw, fill=red, fit={(Punkt) (Text)}]
     (Kreis) {};
  \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
  \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
  \begin{scope}[on background layer]
    \node [left=0.2cm of Kreis, circle, minimum size=3cm, draw, fill=blue,
          fit={(Kreis)},label={[font=\Large]above:$E$}] {};
  \end{scope}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 31 Dez '14, 19:00

stefan's gravatar image

stefan ♦♦
5.8k12134

bearbeitet 31 Dez '14, 19:01

Danke für diese Lösung, Stefan! Gibt es irgendwo eine Anleitung, wie man das mit verschiedenen Layern löst, z.B. auch wenn es nicht nur 3 sondern viel mehr Ebenen sind?

(31 Dez '14, 19:26) tom75

Sorry Stefan, hab das mit der Punktevergabe hier noch nicht kapiert. Wollte euch beiden Punkte geben aber das hat nicht funktioniert.

(02 Jan '15, 01:34) tom75
3

@tom75 Einfach auf den "Daumen hoch" klicken gibt 10 Punkte für die Antwort, ohne dass Dir selbst Punkte verloren gehen. Das geht für beliebig viele Antworten und kann jeder, weil es lediglich bedeutet, dass die Antwort gefällt. Wenn Du eine Antwort als die Lösung auf Deine Frage markieren willst, die Du bevorzugst, dann den Haken setzen. Das generiert noch einmal 15 Punkte. Das kann auch nur der Fragesteller für genau eine Antwort zur Frage. Es sagt übrigens nicht, dass es objektiv die beste Antwort ist. Die Punkte sind für die TOP-Helfer auch eher ein Nebeneffekt der Abstimmung.

(02 Jan '15, 05:52) saputello

@saputello Ach so. Das hab ich zwar auch gemacht, aber dann dachte ich, ich muss die Punkte noch über den Link "Vergib Punkte" verteilen. Das hat bei @esdd auch funktioniert, mir war nicht klar, dass die dann von mir abgezogen werden :-)

(02 Jan '15, 06:04) 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:

×492
×33
×3
×3
×1

Frage gestellt: 31 Dez '14, 13:51

Frage wurde angeschaut: 3,087 Mal

Zuletzt aktualisiert: 09 Jan, 08:49